KR20100109943A - 분산형 멀티모드 애플리케이션을 구현하기 위한 방법 및 장치 - Google Patents
분산형 멀티모드 애플리케이션을 구현하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20100109943A KR20100109943A KR1020107017167A KR20107017167A KR20100109943A KR 20100109943 A KR20100109943 A KR 20100109943A KR 1020107017167 A KR1020107017167 A KR 1020107017167A KR 20107017167 A KR20107017167 A KR 20107017167A KR 20100109943 A KR20100109943 A KR 20100109943A
- Authority
- KR
- South Korea
- Prior art keywords
- voice
- client device
- multimode
- visual
- application server
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 125
- 230000000007 visual effect Effects 0.000 claims abstract description 169
- 230000004044 response Effects 0.000 claims abstract description 95
- 230000008569 process Effects 0.000 claims description 57
- 230000005236 sound signal Effects 0.000 claims description 9
- 238000013479 data entry Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 5
- 230000001413 cellular effect Effects 0.000 claims description 4
- 238000009877 rendering Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 29
- 238000004891 communication Methods 0.000 description 21
- 230000001360 synchronised effect Effects 0.000 description 20
- 230000000977 initiatory effect Effects 0.000 description 16
- 238000013515 script Methods 0.000 description 16
- 230000002452 interceptive effect Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006735 deficit Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 206010003246 arthritis Diseases 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000004397 blinking Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 208000016354 hearing loss disease Diseases 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 208000024335 physical disease Diseases 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/24—Speech recognition using non-acoustical features
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/28—Constructional details of speech recognition systems
- G10L15/30—Distributed recognition, e.g. in client-server systems, for mobile phones or network applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/04—Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/75—Indicating network or usage conditions on the user display
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/487—Arrangements for providing information services, e.g. recorded voice services or time announcements
- H04M3/493—Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals
- H04M3/4938—Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals comprising a voice browser which renders and interprets, e.g. VoiceXML
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M2203/00—Aspects of automatic or semi-automatic exchanges
- H04M2203/25—Aspects of automatic or semi-automatic exchanges related to user interface aspects of the telephonic communication service
- H04M2203/251—Aspects of automatic or semi-automatic exchanges related to user interface aspects of the telephonic communication service where a voice mode or a visual mode can be used interchangeably
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- User Interface Of Digital Computer (AREA)
- Digital Computer Display Output (AREA)
Abstract
실시예들은 분산형 멀티모드 애플리케이션들과 연관된 비주얼 뷰와 보이스 뷰 사이에서 데이터 및 포커스를 동기화하기 위한 방법 및 장치를 포함한다. 일 실시예는 입력 데이터를 비주얼 모달리티 및 보이스 모달리티를 통해 수신할 수 있는 적어도 하나의 멀티모드 디스플레이 요소를 포함하는 비주얼 디스플레이를 묘사하도록 구성된 클라이언트 장치를 포함한다. 클라이언트가 상기 보이스 모달리티를 통한 사용자 발성음을 검출할 때, 상기 클라이언트는 상기 발성음을 나타내는 업링크 오디오 데이터를 음성 인식기에 전송한다. 애플리케이션 서버는 상기 음성 인식기에 의해 발생된 음성 인식 결과를 수신하고, 보이스 이벤트 응답을 상기 클라이언트에 전송한다. 상기 클라이언트에 의해 상기 애플리케이션 서버에 이미 전송된 비동기적 HTTP 보이스 이벤트 요청에 대한 응답으로서 보이스 상기 이벤트 응답이 전송된다. 그 다음 상기 클라이언트는 상기 보이스 이벤트 응답을 수신한 것에 응답하여 또 다른 보이스 이벤트 요청을 상기 애플리케이션 서버에 전송한다.
Description
본 발명의 주제는 일반적으로 분산형 애플리케이션에 관한 것으로, 특히, 클라이언트-서버 시스템 환경에서 구현된 분산형 멀티모드 애플리케이션(distributed multi-modal applications)에 관한 것이다.
사용자 인터페이스 "모달리티(modality)"는 사용자와 전자 장치 간의 상호작용 모드로서 규정될 수 있으며, 이 경우 상호작용은 장치의 사용자 인터페이스를 통해 구현된다. 사용자 인터페이스 모달리티는 사람이 인지할 수 있는 특별한 형태의 정보(예를 들어, 보고, 듣고 또는 터치함으로써 인지가능한 정보) 및/또는 사람에 의해 생성된 특별한 형태의 정보(예를 들어, 말하기 또는 다른 신체적 행위를 통해 생성된 정보)와 연관된 하드웨어 및 소프트웨어를 조합하여 구현될 수 있다. 예를 들어, 사용자 인터페이스 모달리티의 한가지 형태는 "비주얼 모달리티(visual modality)"로서, 이것은 디스플레이 스크린과 이 디스플레이 스크린 상에 비주얼 디스플레이를 발생하기 위한 연관된 하드웨어 및 소프트웨어를 통해 구현될 수 있다. 비주얼 모달리티는 또한 비주얼 디스플레이와의 사용자 상호작용을 촉진하는 다양한 입력 장치들, 이를 테면, 사용자가 (예를 들어, 스크롤링 메커니즘, 터치스크린 또는 화살표 키들을 이용하여) 비주얼 디스플레이에서 묘사된 정보를 선택할 수 있게 해주고, (예를 들어, 키패드를 이용하여) 정보를 비주얼 디스플레이의 필드에 입력할 수 있게 해주며, 및/또는 비주얼 디스플레이의 포커스를 한 필드에서 다른 필드로 변경할 수 있게 해주는 입력 장치들을 이용하여 구현될 수 있다. 사용자 인터페이스 모달리티의 또 다른 형태는 "보이스 모달리티(voice modality)"로서, 이것은 사람의 음성을 수신하고 디지털화하고 및/또는 오디오 정보(예를 들어, 오디오 프롬프트 또는 다른 오디오 정보)를 출력하도록 구성된 마이크로폰, 스피커 및 이와 연관된 하드웨어와 소프트웨어를 이용하여 구현될 수 있다. 다른 형태의 사용자 인터페이스 모달리티는, 예를 들어, 두 가지 정도를 예를 들자면, 제스쳐 모달리티(gestural modality), 및 펜 모달리티(pen modality)를 포함한다.
"단일 모달리티" 장치보다 개선된 사용성을 제공하기 위해, 전자 장치는 둘 이상의 사용자 인터페이스 모달리티를 제공하는 사용자 인터페이스인 "멀티 모달(multi-modal)" 사용자 인터페이스를 포함할 수 있다. 예를 들어, 전자 장치는 비주얼 모달리티와 보이스 모달리티 두 가지 다 제공할 수 있다. 이러한 장치는, 예를 들어, 비주얼 정보(예를 들어, 디스플레이된 정보) 및 이와 연관된 오디오 정보(예를 들어, 오디오 프롬프트)를 동시에 출력할 수 있고, 및/또는 이러한 장치는 사용자가 희망하는 대로 사용자가 음성, 키패드 또는 이들 둘 다를 매개로 정보를 입력할 수 있게 할 수 있다. 일반적으로, 멀티모드 사용자 인터페이스를 갖는 장치는 사용자의 체험을 개선해주는데, 이것은 사용자가 장치와 상호작용할 모달리티를 선택할 수 있기 때문이다. 예를 들어, 사용자가 핸즈 프리 상호작용을 희망하는 상황에서, 이를 테면, 타이핑이 너무 시간을 소요할 때 및/또는 사용자가 (예를 들어, 관절염 또는 다른 어떤 신체적 장애로 인해) 영구적인 또는 상황에 따른 손상이 있을 때(예를 들어, 사용자가 글러브를 끼고 있을 때 및/또는 사용자가 다른 작업으로 두 손을 사용하고 있을 때)에는 보이스 모달리티를 이용하는 상호작용이 바람직할 수 있다. 대조적으로, 예를 들어, 복잡한 정보가 묘사되는 상황에서, 청각적 보안을 원할 때, 소음 규제가 존재할 때, 및/또는 영구적인 청각의 제약이 있을 때(예를 들어, 사용자가 사투리가 심할 때, 언어 장애, 및/또는 청각 장애를 가질 때), 또는 상황에 따라 다를 때(예를 들어, 아주 큰 배경 잡음 또는 소음 규제가 있을 때) 비주얼 모달리티를 이용하는 상호작용이 바람직할 수 있다.
멀티모드 사용자 인터페이스는 네트워크 환경(예를 들어, 클라이언트-서버 시스템 환경)에서 동작하는 애플리케이션과 관련하여 실행될 수 있다. 그러한 경우에, 사용자는 클라이언트 장치(예를 들어, 셀룰러 전화기 또는 컴퓨터)의 멀티 모달 사용자 인터페이스와 상호작용하며, 클라이언트 장치는 네트워크를 통해 하나 이상의 다른 장치들 또는 플랫폼들(예를 들어, 서버)과 통신한다. 그러한 네트워크 환경에서, 멀티모드 사용자 인터페이스를 지원하는 클라이언트-서버 시스템 요소들, 및 특히, 적어도 비주얼 및 보이스 모달리티를 제공하도록 구성된 사용자 인터페이스를 지원하는 시스템 요소들을 설계하기 위해 기본적인 두 가지 기술이 구현되어 왔다. "임베디드(embedded)" 기술을 이용하면, 다수의 모달리티들과 연관된 필수적인 하드웨어 및 소프트웨어의 모두가 클라이언트 장치 자체에 실질적으로 포함된다. 예를 들어, 클라이언트 장치는 오디오 관련 작업, 이를 테면, 무엇보다도 음성 처리, 음성 인식, 및/또는 음성 합성을 수행하도록 구성된 소프트웨어 및 하드웨어를 포함할 수 있다. 일반적으로, 그러한 오디오 관련 작업들은 특수한 프로세서 또는 처리 엔진(예를 들어, 디지털 신호 프로세서) 및 (예를 들어, 오디오 관련 작업과 연관된 테이블 및 소프트웨어를 저장하기 위한) 상당량의 메모리를 필요로 한다. "분산형" 기술("distributed" technique)을 이용하는 경우, 하나 이상의 모달리티들과 연관된 일부의 처리가 원격 서버와 같은 또 다른 처리 요소로 시프트될 수 있다. 예를 들어, 사용자가 말할 때, 오디오 데이터는 클라이언트 장치로부터 원격 서버에 전송될 수 있고, 원격 서버는 오디오 관련 작업들의 일부 또는 모두를 수행하고 데이터, 에러 메시지, 및/또는 처리 결과를 클라이언트 장치에 되돌려 줄 수 있다.
각각의 기술은 장점과 단점을 가지고 있다. 예를 들어, 종래의 일부 분산형 기술들의 장점은 멀티모드 사용자 인터페이스와 연관된 강력한 계산 프로세스들(예를 들어, 오디오 관련 작업들) 중 일부가 바로 앞에서 언급한 바와 같이 클라이언트 장치로부터 또 다른 처리 요소(예를 들어, 원격 서버)로 시프트될 수 있다는 것이다. 따라서, 클라이언트 장치는 특수한 프로세서 또는 처리 엔진(예를 들어, 디지털 신호 프로세서) 및 클라이언트 장치로부터 옮겨진 작업을 실행하기 위한 여분의 메모리를 포함하지 않을 수 있다. 이것은 클라이언트 장치가 임베디드 기술을 구현하는 클라이언트 장치보다 더 비용 효과적인 방식으로 설계될 수 있음(예를 들어, 장치가 신클라이언트("thin" client)로서 설계될 수 있음)을 의미한다.
그러나, 통상의 분산형 기술을 이용하는 경우, 각종 모달리티들의 상태는 클라이언트와 서버 사이에서 동기화될 필요가 있다. 네트워크 전체에서 다수의 모달리티들의 상태들 간의 일관된 동기화는 성취하기 어렵다. 통상의 분산형 기술을 이용한 멀티모드 사용자 인터페이스는 전형적으로 비표준 프로토콜, 변형된 비주얼 및 음성 애플리케이션 마크업 언어, 및 비통상적인 콘텐트 저작 기술을 이용하여 실행된다. 따라서, 그러한 기술들은 애플리케이션 디자이너들에게 쉽게 채택되지 않고 있다.
신클라이언트를 용이하게 디자인할 수 있고 표준 프로토콜 및 통상의 콘텐트 저작 기술을 용이하게 사용할 수 있는 멀티모드 사용자 인터페이스 방법 및 장치가 필요하다. 본 발명의 주제의 다른 특징 및 특성은 첨부 도면 및 본 발명의 배경과 관련하여 설명된 다음의 상세한 설명 및 첨부의 청구범위로부터 자명해질 것이다.
이하 본 발명의 주제는 다음의 도면을 참조하여 설명될 것이며, 유사한 참조부호는 유사한 구성요소를 나타낸다.
도 1은 예시적인 실시예에 따른 분산형 멀티모드 애플리케이션들을 실행하도록 구성된 시스템의 간략도이다.
도 2는 예시적인 실시예에 따른 멀티모드 애플리케이션 세션을 개시하고 수행하기 위한 방법의 흐름도이다.
도 3은 예시적인 실시예에 따른 멀티모드 애플리케이션 세션 동기화를 수행하기 위한 방법의 흐름도이다.
도 4는 예시적인 실시예에 따른 클라이언트 장치에 묘사된 멀티모드 페이지의 일예이다.
도 5는 예시적인 실시예에 따른 보이스 모달리티 입력 이벤트 처리 프로세스를 수행하기 위한 방법의 흐름도이다.
도 6은 예시적인 실시예에 따른 비주얼 모달리티 입력 이벤트 처리 프로세스를 수행하기 위한 방법의 흐름도이다.
도 1은 예시적인 실시예에 따른 분산형 멀티모드 애플리케이션들을 실행하도록 구성된 시스템의 간략도이다.
도 2는 예시적인 실시예에 따른 멀티모드 애플리케이션 세션을 개시하고 수행하기 위한 방법의 흐름도이다.
도 3은 예시적인 실시예에 따른 멀티모드 애플리케이션 세션 동기화를 수행하기 위한 방법의 흐름도이다.
도 4는 예시적인 실시예에 따른 클라이언트 장치에 묘사된 멀티모드 페이지의 일예이다.
도 5는 예시적인 실시예에 따른 보이스 모달리티 입력 이벤트 처리 프로세스를 수행하기 위한 방법의 흐름도이다.
도 6은 예시적인 실시예에 따른 비주얼 모달리티 입력 이벤트 처리 프로세스를 수행하기 위한 방법의 흐름도이다.
실시예들은 분산형 멀티모드 애플리케이션을 실행하기 위한 방법 및 장치를 포함한다. 이들 실시예들은 표준 프로토콜과 통상의 콘텐트 저작 기술의 사용을 용이하게 해줄 수 있다. 또한, 이들 실시예들은 "신클라이언트" 형태의 장치들과 함께 사용될 수 있다.
본 명세서에서 사용된 바와 같이, "멀티모드(multi-modal)"이라는 용어는 다중 사용자 인터페이스 모달리티들을 실행하도록 구성된 것을 의미한다. "분산형 멀티모드 애플리케이션(distributed multi-modal application)", "멀티모드 애플리케이션(multi-modal application)" 및 "분산형 애플리케이션(distributed application)"이라는 용어는 클라이언트 장치(예컨대, 도 1의 클라이언트 장치(102))에서 멀티모드 사용자 인터페이스를 제공하며, 상이한 플랫폼(예컨대, 도 1의 클라이언트 장치(102), 애플리케이션 서버(104), 및/또는 보이스 서버(106))에서 별개의 런타임 환경에서 실행되는 별개의 컴포넌트들을 포함하는 소프트웨어 애플리케이션을 의미하도록 상호교환적으로 사용될 수 있다.
일 실시예에서, 분산형 멀티모드 애플리케이션은 클라이언트-서버 시스템 아키텍쳐(예를 들어, 도 1의 시스템(100))을 갖는 시스템에서 실행되게 구성된다. 본 명세서에서 사용된 "클라이언트" 또는 "클라이언트 장치"라는 용어는 분산형 멀티모드 애플리케이션과 연관된 소프트웨어를 실행하도록 구성된 프로세싱 엔티티, 전자 장치 또는 애플리케이션을 의미하도록 상호교환적으로 사용될 수 있다. 또한, 클라이언트 장치는 네트워크를 통해 분산형 멀티모드 애플리케이션과 연관되고 하나 이상의 원격 서버들에 의해 제공된 하나 이상의 서비스들에 액세스하도록 구성된다.
"서버"라는 용어는 클라이언트에서 발행한 또는 서버에서 발행한 요청에 응답하여 네트워크에 연결된 하나 이상의 클라이언트들 또는 다른 서버들에 필요한 서비스를 수행하는 프로세싱 엔티티, 전자 장치 또는 애플리케이션을 의미한다. "애플리케이션 서버" 및 "AS"라는 용어는 분산형 멀티모드 애플리케이션 세션과 연관된 데이터 및 제어 링크의 설정을 개시하고 애플리케이션 세션과 연관된 각종 "뷰들(views)" 간의 동기화를 제어하도록 구성된 서버를 의미한다. "모달리티 서버"라는 용어는 하나 이상의 사용자 인터페이스 모달리티들과 연관된 브라우저에 적응된 서버를 의미한다. "보이스 서버" 또는 "VS"라는 용어는 보이스 모달리티와 연관된 브라우저를 실행하도록 특정하게 구성된 모달리티 서버를 의미한다. 비록 아래의 설명에서 보이스 모달리티를 지원하는 보이스 서버가 포함된 시스템의 상세한 설명을 포함하고 있을지라도, 부가적으로 또는 대안으로 다른 형태의 사용자 인터페이스 모달리티를 지원하는 다른 형태의 모달리티 서버가 다른 실시예들(예를 들어, 제스쳐 모달리티, 펜 모달리티 등)의 시스템에 포함될 수 있음은 물론이다.
예시적인 실시예들의 용이한 이해를 위하여 상세한 설명 전체에서 분산형 멀티모드 애플리케이션의 특정한 예가 사용될 것이다. 예시적인 실시예는 실시예들의 범주를 그 예로만 제한하는 것으로 사용되지 않음은 물론이다. 예시적인 실시예에서, 분산형 멀티모드 애플리케이션은 비주얼 모달리티 및 보이스 모달리티를 지원하도록 구성된다. 클라이언트 장치는 입력 데이터가 비주얼 모달리티 및 보이스 모달리티를 통해 클라이언트 장치에 의해 수신가능한 적어도 하나의 디스플레이 요소를 포함하는 비주얼 디스플레이를 클라이언트 장치가 묘사하게 해주는 머신 코드를 해석하도록 구성된 "멀티모드 가능(multi-modal enabled)" 브라우저를 포함한다. 일 실시예에서, 머신 코드는 해석될 때 클라이언트 장치가 다중 사용자 상호작용 디스플레이 요소들(예를 들어, 도시, 주, 거리번지, 및 거리명의 데이터 입력 필드들)를 묘사하게 해주는 멀티모드 페이지 내에 포함되며 및/또는 멀티모드 페이지에 의해 조회된다.
본 명세서에서 사용된 바와 같이, "해석(interpret)"이라는 용어는 이러한 용어들이 본 기술 분야에서 숙련자들이 이해하고 있는 것처럼 해석 및/또는 실행하는 것을 의미한다. 본 명세서에서 사용된 "머신 코드"라는 용어는 마크업(예를 들어, 표준 범용 마크업 언어(standard generalized markup language: SGML), 확장성 마크업 언어(extensible markup language: XML), 하이퍼텍스트 마크업 언어(hypertext markup language: HTML), 확장성 HTML(extensible HTML: XHTML), 다이나믹 HTML(dynamic HTML: DHTML), 음성 XML(VoiceXML), 음성 애플리케이션 언어 태그(speech application language tags: SALT), XHTML + 음성(X+ V)(Voice(X+V)), 스케일러블 벡터 그래픽스(scalable vector graphics: SVG), 및/또는 각종 다른 마크업 언어들, 스크립트들(예를 들어, 자바스크립트 코드(JavaScript code)), 컴파일된 코드(compiled code)(예를 들어, 컴파일된 C/C++, 자바(Java), 리스프(Lisp), 포트란(Fortran), 파스칼(Pascal) 등), 및/또는 다른 정보를 의미하며, 이들은 컴퓨터 프로세서(예를 들어, 도 1의 클라이언트 장치(102), 애플리케이션 서버(104), 및/또는 보이스 서버(106))에 의해 용이하게 실행 또는 해석될 수 있다.
다시 본 명세서에서 설명된 예시적인 멀티모드 애플리케이션을 참조하면, 클라이언트 장치의 사용자는 애플리케이션이 현재 "초점을 맞춘(focused)" 디스플레이 요소(예를 들어, 선택된 요소 또는 커서가 깜박이고 있는 요소)에 필요한 정보를 입력할 수 있고, 및/또는 그 포커스를 (예컨대, 디스플레이 요소에 필요한 정보를 입력함으로써 및/또는 또 다른 디스플레이 요소를 선택함으로써) 변경할 수 있다. 일 실시예에서, 사용자는 사용자가 희망하는 대로 비주얼 모달리티 또는 보이스 모달리티를 이용하여 멀티모드 디스플레이 요소에 필요한 정보를 입력할 수 있다. 예를 들어, 사용자가 클라이언트 장치의 키패드를 이용하여 정보를 입력할 때, 이 행위는 비주얼 모달리티를 이용한 데이터의 입력에 해당하며, 이 정보는 비주얼 뷰가 초점을 맞춘 데이터 입력 필드에서 텍스트로서 묘사될 것이다. 이 정보를 (예를 들어, "엔터(enter)"를 누름으로써 또는 커서를 움직임으로써) 입력할 때, 비주얼 디스플레이는 상이한 포커스를 반영하도록 갱신될 수 있다.
대안으로, 사용자는 보이스 모달리티를 이용하여 정보를 입력할 수 있다(예를 들어, 사용자는 도시의 이름을 말로 할 수 있다). 이러한 일이 이루어질 때, 일 실시예에서, 클라이언트 장치는 그 말을 나타내는 오디오 데이터를 보이스 서버에 전송한다. 오디오 데이터는 일 실시예에서 애플리케이션을 통해 간접적으로 전송될 수 있거나, 또는 또 다른 실시예에서 보이스 서버에 직접 전송될 수 있다. 보이스 서버는 음성 인식기와 인터페이스하도록 구성된다. 일 실시예에서, 보이스 서버는 또한 음성 인식기가 주어진 디스플레이 요소에 필요한 오디오 데이터를 수신함에 따라 음성을 인식하려 액세스하여야 하는 어느 음성 인식 자원(예를 들어, 문법, n-gram 시퀀스, 통계적 언어 모델 또는 자원 자원들)을 음성 인식기에 제공하는가를 표시하도록 구성된다. 보이스 서버는 클라이언트 장치에 의해 해석되는 머신 코드(예를 들어, 멀티모드 페이지)에 대응하는 음성 대화(speech dialog)의 보이스 브라우저의 해석에 따라서 음성 인식 자원의 표시를 음성 인식기에 제공한다.
일 실시예에서, 음성 인식기는 음성 인식 결과(또는 에러)를 발생할 수 있고, 이것을 음성 서버는 애플리케이션 서버를 통해 클라이언트 장치에 전달할 수 있다. 그런 다음, 클라이언트 장치는 음성 인식 결과를 텍스트로서 해당하는 데이터 필드에 묘사할 수 있으며, 보이스 뷰 및 비주얼 뷰의 포커스들은 다양한 실시예들에 따라서 갱신 및 동기화될 수 있다. 보이스 뷰 및 비주얼 뷰의 포커스들이 동기화될 때, 보이스 브라우저 의해 해석되는 음성 대화의 부분은 클라이언트 장치에 의해 해석되는 머신 코드의 부분에 대응한다.
아래에서 상세히 설명되는 바와 같이, 실시예들은 다수의 모달리티들을 이용하여 정보를 입력하는 사용자의 능력에 비추어 비주얼 뷰 및 보이스 뷰를 동기화하기 위한 방법을 포함한다. 비록 비주얼 뷰 포커스에 관한 정보는 클라이언트 장치에서 보전되며, 보이스 뷰 포커스에 관한 정보는 보이스 서버에서 보전될지라도, 이 방법은 다양한 실시예들에서 일관성 있게 성취될 수 있다. 비록 새로운 방식으로 동기화가 성취될지라도, 이러한 동기화는 표준 프로토콜 및 통상의 콘텐트 저작 기술을 이용하여 성취될 수 있으며, 그럼으로써 매우 다양한 분산형 멀티모드 애플리케이션의 개발을 용이하게 하고 촉진하게 해준다.
도 1은 예시적인 실시예에 따른, 분산형 멀티모드 애플리케이션을 실행하도록 구성된 시스템(100)의 간략도이다. 시스템(100)은 다수의 시스템 엔티티들을 포함하며, 일 실시예에서 시스템 엔티티들은 적어도 하나의 클라이언트 장치(102), 애플리케이션 서버(AS)(104), 보이스 서버(VS)(106), 및 음성 인식기(SR)(134)를 포함한다. 아래에서 상세히 설명되는 바와 같이, 시스템(100) 내에서 분산형 멀티모드 애플리케이션 세션의 실행을 지원하기 위하여, 시스템 엔티티들은 다양한 동기적 및 비동기적 요청/응답 프로토콜들을 준수한다. 본 명세서에서 사용된 바와 같이, "멀티모드 애플리케이션 세션"이라는 용어는 분산형 멀티모드 애플리케이션의 실례로서 규정될 수 있다. 일 실시예에서, 멀티모드 애플리케이션 세션은 클라이언트 장치(102)에 의한 머신 코드(예를 들어, 하나 이상의 관련된 일군의 멀티모드 페이지들(115)과 연관된 머신 코드)의 해석(예를 들어, 실행 및/또는 해석)과 함께 보이스 서버(106)에 의해 실행된 보이스 서버 브라우저/대화 해석기(132)에 의한 하나 이상의 대응하는 일군의 음성 대화들의 해석을 포함한다.
비록 단지 하나의 클라이언트 장치(102)만이 예시되어 있을지라도, 시스템(100)은 다수의 유사한 또는 상이한 형태의 클라이언트 장치들을 포함할 수 있다. 예를 들어, 클라이언트 장치(102)는, 이것으로 제한하지 않지만, 몇 가지를 열거하자면, 셀룰러 전화기, 무선 장치(radio), 페이저, 개인 휴대용 정보 단말기(PDA), 개인용 네비게이션 장치(personal navigation device: PND), 이동 컴퓨터 시스템(예를 들어, 차량 또는 항공용 컴퓨터 시스템), 컴퓨터(예를 들어, 랩탑, 노트북 또는 데스크탑 컴퓨터), 및 컴퓨터에서 실행된 보이스 오버 인터넷 프로토콜(VoIP) 전화기를 포함하는 일군의 장치들로부터 선택된 일부의 전자 장치를 구성할 수 있다.
클라이언트 장치(102)는 프로세싱 서브시스템 및 데이터 저장 서브시스템을 포함하며, 휴대 또는 고정 전자 장치일 수 있다. 겸용 형태의 장치의 경우, 클라이언트 장치(102)는 클라이언트 장치(102)에 전력을 공급하기 위해 교류 전력(line power)을 사용하지 않는 경우에 에너지를 공급하도록 구성된 배터리 서브시스템을 포함할 수 있다. 클라이언트 장치(102)는 각종 유선 및/또는 무선 통신 기술을 이용하여 하나 이상의 네트워크(108)를 통해 통신하도록 구성될 수 있다. 따라서, 클라이언트 장치(102)는 유선 및 무선 네트워크 인터페이스 중 어느 하나 또는 둘 다를 포함할 수 있다. 클라이언트 장치(102)는 또한 각종 사용자 인터페이스 입력 장치들(예를 들어, 키패드, 키, 다이얼, 터치스크린, 마이크로폰, 포인팅 장치(예컨대, 마우스 또는 터치패드) 및 스타일러스) 및 각종 사용자 인터페이스 출력 장치들(예를 들어, 디스플레이 스크린, 스피커, 오디오 출력 잭, 헤드폰, 이어버드(earbuds), 기계적 진동기)를 포함할 수 있다. 일 실시예에서, 비주얼 모달리티와 연관된 사용자 인터페이스 장치는 비주얼 디스플레이, 터치스크린, 키패드, 키, 다이얼, 포인팅 장치, 및 스타일러스를 포함하는 일군의 장치들로부터 선택된 어떤 하나 이상의 장치를 포함한다. 일 실시예에서, 보이스 모달리티와 연관된 사용자 인터페이스 장치는 마이크로폰, 스피커, 오디오 출력 잭, 헤드폰, 및 이어버드를 포함하는 일군의 장치들로부터 선택된 어떤 하나 이상의 장치를 포함한다.
일 실시예에서, 클라이언트 장치(102)는 클라이언트 브라우저(112) 및/또는 클라이언트 애플리케이션(114)의 하나 이상의 실례를 실행하도록 구성된다. 일 실시예에서, 클라이언트 브라우저(112)는 네트워크(108)를 통해 하나 이상의 서버들(예를 들어, 애플리케이션 서버(104) 및/또는 보이스 서버(106))와 통신하도록 구성된다. 더 상세히 설명하면, 클라이언트 브라우저(112)는 클라이언트 장치(102) 상의 머신 코드(예를 들어, 멀티모드 페이지(115))를 액세스하며, 또한 그 머신 코드를 해석하도록 구성된다. 특정 실시예에서, 클라이언트 브라우저(112)는 적어도 하나의 멀티모드 페이지(115)를 액세스하고, 또한 멀티모드 페이지(115) 내 머신 코드(예를 들어, 마크업, 스크립트, 및 다른 정보)를 해석하도록 구성된다.
본 명세서에서 사용된 바와 같이, "멀티모드 페이지"라는 용어는 클라이언트 장치(102)에 가시적으로 표현될 수 있는, 그리고 사용자가 다수의 모달리티들(예를 들어, 보이스 모달리티 및 비주얼 모달리티) 중 어느 것을 통해 정보를 입력할 수 및/또는 선택을 표시할 수 있는 적어도 하나의 사용자 대화식 디스플레이 요소(user-interactive display element)를 표현하는 정보 집합을 의미한다. 멀티모드 페이지(115)는, 예를 들어, 이것으로 제한되지는 않지만, 웹 페이지, 서류, 파일, 폼, 리스트 또는 또 다른 형태의 정보 집합을 포함할 수 있다. 해석될 때, 멀티모드 페이지(115)는 클라이언트 장치(102)가 하나 이상의 사용자 대화식 디스플레이 요소들을 묘사하게 할 수 있다. 본 명세서에서 사용된 바와 같이, "사용자 대화식 디스플레이 요소"라는 용어는, 예를 들면, 이것으로 제한되지 않지만, 무엇보다도 텍스트 입력 필드(text entry field), 선택가능한 요소(예를 들어, 버튼 또는 체크박스), 및/또는 대화식 텍스트(interactive text)를 포함할 수 있다. 하나 이상의 사용자 대화식 디스플레이 요소들과 함께, 멀티모드 페이지는 그뿐만 아니라, 예를 들어, 본문 정보(textual information), 이미지(예를 들어, 정적(static) 또는 애니메이션 이미지(animated images), 오디오 정보, 비디오, 하이퍼링크, 메타데이터, 및 스크립트와 같은 다른 정보 및/또는 요소를 포함할 수 있다. 본 명세서에서 사용된 바와 같은 "멀티모드 디스플레이 요소"는 둘 이상의 사용자 인터페이스 모달리티를 통해 입력 데이터가 수신될 수 있는 사용자 대화식 디스플레이 요소를 의미한다.
일 실시예에서, 멀티모드 페이지(115)는 클라이언트 브라우저(112) (또는 다른 구문론적 분석 소프트웨어(syntactic analysis software))로 하여금 삽입된 또는 조회된 하나 이상의 스크립트를 실행하도록 할 수 있는 마크업을 포함한다. 스크립트는 멀티모드 페이지(115) 내에 삽입될 수 있고 또는 스크립트는 멀티모드 페이지(115) 내에서 조회될 수 있으며, 클라이언트 브라우저(112)는 외부 소스(예컨대, 서버)로부터 또는 로컬 메모리(예컨대, 클라이언트 장치(102)의 캐시로부터) 스크립트를 액세스할 수 있다.
도 2 내지 도 6과 관련하여 아래에서 상세히 설명되는 바와 같이, 스크립트는 클라이언트 장치(102)가 애플리케이션 서버(104)에게 비동기적 요청을 발행하도록 구성될 수 있으며, 그 비동기적 요청은 보이스 서버(106)가 애플리케이션 서버(104)에게 비주얼 디스플레이 및/또는 비주얼 뷰 포커스로의 갱신을 허가할 수 있는 이벤트(예컨대, 음성 인식 이벤트 또는 보이스 뷰 포커스 변경)가 발생했음을 통지할 때까지 애플리케이션 서버(104) 내에서 보류 중일 수 있다. 이때, 애플리케이션 서버(104)는 그 비동기 요청에 대한 응답을 발행할 것이다. 이러한 프로토콜에 따라서 클라이언트 장치(102) 상의 비주얼 뷰 포커스와 보이스 서버(106) 상의 보이스 뷰 포커스 사이에서 동기화가 용이하게 이루어지며, 이에 대해서는 아래에서 더 상세히 설명될 것이다. 일 실시예에서, 비동기적 요청은 비동기적 하이퍼텍스트 전송 프로토콜(HTTP) 요청으로서 발행되며, 그 응답은 HTTP 응답이다. 뿐만 아니라 스크립트는 클라이언트 장치(102)가 동기적 요청을 발행하도록 구성될 수 있다.
일 실시예에서, 멀티모드 페이지(115)는 AJAX(Asynchronous JavaScript and extensible markup language(XML)) 기술을 이용하여 개발될 수 있으며, 따라서 앞의 패러그랩에서 언급된 비동기적 요청(예컨대, 비동기적 HTTP 요청)을 발행하고, 그 요청에 대한 응답(예를 들어, HTTP 응답)을 처리하도록 구성된 XML 마크업 및 자바스크립트(JavaScript)를 포함할 수 있다. 다른 실시예에서, 멀티모드 페이지(115)는 비동기적 요청을 발행하고 그러한 요청에 대한 응답을 처리하도록 구성된 다른 형태의 프로그래밍, 스크립팅, 및/또는 마크업 언어들을 이용하여 개발될 수 있다.
본 명세서에서 사용된 바와 같이, "마크업 언어"라는 용어는 정보 집합(예를 들어, 멀티모드 페이지(115) 또는 다른 머신 코드) 내에 삽입될 수 있는, 그리고, 무엇보다도, 디스플레이 요소들이 전자 장치에서 묘사될 때 그 요소들(예를 들어, 텍스트 또는 다른 콘텐트)의 구조, 레이아웃, 및/또는 다른 특징을 구문론적 분석 소프트웨어(예를 들어, 클라이언트 브라우저(112))에게 표시하는 정보(예를 들어, 마크업 또는 다른 머신 코드)의 문장론적 규칙들(syntax rules)의 규정된 집합을 의미한다. 예를 들어, 제한하는 것은 아니지만, 마크업 언어와 연관된 마크업은 표현 마크업, 절차적 마크업, 및/또는 설명적 마크업("의미론적(semantic)" 마크업이라고도 지칭함)을 포함할 수 있다. 각종 실시예에서 사용될 수 있는 마크업 언어는 이것으로 제한되는 것은 아니지만, SGML, XML, HTML, XHTML, DHTML, VoiceXML, SALT, X+V, SVG, 및 각종 다른 마크업 언어들을 포함한다.
클라이언트 브라우저(112)는 클라이언트 장치(102)가 머신 코드 내에서 표현된 또는 조회된 텍스트, 이미지, 비디오, 음악, 및/또는 다른 정보를 묘사하게 해줄 수 있는 방식으로 멀티모드 페이지(예를 들어, 멀티모드 페이지(115)) 내에서 머신 코드(예컨대, 마크업)의 의미론적 분석을 수행하도록 구성된 소프트웨어 프로그램을 포함한다. 다양한 실시예에서, 클라이언트 브라우저(112)는, 이것으로 제한하는 것은 아니지만, HTML/XHTML 브라우저, 무선 애플리케이션 프로토콜(WAP) 브라우저, 고객 애플리케이션, 및/또는 상업적으로 이용가능한 브라우저(예를 들어, 몇 가지를 열거하자면, 인터넷 익스플로러(Internet Explorer), 모질라 파이어폭스(Mozilla Firefox), 사파리(Safari), 오페라(Opera), 및 넷스케이프(Netscape))를 포함할 수 있다. 특정 실시예에서, 클라이언트 브라우저(112)는 Ajax 프로그래밍 기술을 지원하는, 그리고 오디오 처리 기능도 갖는 XHTML 브라우저이다. 클라이언트 브라우저(112)는, 일 실시예에서, "멀티모드 가능한("multi-modal enabled") 것으로서, 이것은 클라이언트 브라우저(112)가 멀티모드 페이지(또는 멀티모드 디스플레이 요소들을 묘사하도록 구성된 다른 머신 코드)를 해석하기 위한 자바스크립트 엔진 또는 이것과 기능적으로 등등한 것을 갖추고 있다는 점과, 그리고 클라이언트 브라우저(112)가 비동기적 요청의 발행을 지원하고 또한 HTTP 서버(예컨대, 애플리케이션 서버(104))와 상호작용하도록 구성되어 있음을 의미한다. 또한, 클라이언트 브라우저(112)는 클라이언트 브라우저(112)가 사용자의 발성음(utterance)(예를 들어, 사용자 음성)을 포착하여 그 발성음을 나타내는 오디오 데이터가 전송될 수 있도록 할 수 있는 오디오 컴포넌트에 액세스하도록 구성될 때 멀티모드 가능할 것이라고 간주할 수 있다. 일 실시예에서, 오디오 컴포넌트는 또한 네트워크로부터 클라이언트 브라우저(112)를 통해 수신된 오디오 프롬프트들(audio prompts)을 (오디오 출력 장치를 통해) 수신하고 출력할 수 있다. 오디오 컴포넌트는 어떤 환경에서 클라이언트 브라우저(112)의 스크립팅 환경으로부터 프로그램적으로 액세스할 수 있어서, 멀티모드 페이지를 통해 다운로드된 또는 액세스된 스크립트들은 오디오 데이터 경로를 정확하게 설정되게 해줄 수 있으며, 이에 대해서는 아래에서 더 상세히 설명될 것이다.
클라이언트 애플리케이션(114)은 비 브라우저(non-browser) 컴퓨터 소프트웨어 애플리케이션을 포함한다. 일 실시예에서, 클라이언트 애플리케이션(114)은 브라우저 지원 언어(예를 들어, SGML, XML, HTML, XHTML, DHTML, 플래시(Flash), 자바(Java) 또는 다른 마크업 언어)로 부호화되며, 애플리케이션을 실행가능하게 묘사해주는 클라이언트 브라우저(112)에 의존하고 있다. 다른 실시예에서, 클라이언트 애플리케이션(114)은 애플리케이션을 실행가능하게 묘사해주는 클라이언트 브라우저(112)에 의존하지 않을 수 있으며(예를 들어, 클라이언트 브라우저(112)는 시스템(100)에서 제외될 수 있다), 그리고 클라이언트 애플리케이션(114)은 클라이언트 브라우저(112)의 기능을 자체적으로 구현할 수 있다. 예를 들어, 클라이언트 애플리케이션(114)은 멀티모드 디스플레이 요소들을 묘사하도록 구성된 컴파일된 프로그램일 수 있으며, Ajax 기술을 이용하여 보이스 모달리티를 클라이언트 장치(102)에 추가하도록 프로그램될 수 있으며, 이에 관해서는 아래에서 더 상세히 설명될 것이다. 다시 말해서, 클라이언트 애플리케이션(114)이 클라이언트 브라우저(112)의 기능을 포함하며, 그리고 클라이언트 브라우저(112)가 제외된 실시예에서, 클라이언트 애플리케이션(114)은 멀티모드 가능한 것일 수 있다. 예를 들어, 몇 가지를 열거하자면 맵핑 애플리케이션, 네비게이션 애플리케이션, 및 서치 애플리케이션과 연관된 애플리케이션 컴포넌트들을 포함하는 다수의 상이한 형태의 클라이언트 애플리케이션들(114)이 개발될 수 있다.
클라이언트 장치(102)는 하나 이상의 네트워크(108)를 통해 애플리케이션 서버(104)와 통신할 수 있다. 네트워크(108)는, 예를 들어, 패킷 교환 네트워크 및/또는 회선 교환 네트워크를 포함할 수 있으며, 더 상세히 말하면 각종 시스템 엔티티들 사이에서 정보의 교환을 가능하게 해줄 수 있도록 구성된 인터넷, 개인 영역 네트워크(personal area network: PAN), 근거리 네트워크(Local Area Network: LAN), 광역 네트워크(wide area network: WAN), 광대역 LAN(WLAN), 셀룰러 전화 네트워크(cellular telephone network), 무선 네트워크(radio network), 위성 통신 네트워크(satellite communications network), 공중 교환 전화 네트워크(public switched telephone network: PSTN), 및/또는 다른 형태의 각종 네트워크의 어느 것 중 하나 이상을 포함한다. 네트워크(108)는 각종의 유선 또는 무선 통신 프로토콜의 어느 것을 이용하여 시스템 엔티티들 사이에서 정보를 교환하도록 구성될 수 있다.
애플리케이션 서버(AS)(104)는 클라이언트 장치(102)를 위한 각종 AS 서비스(118)를 수행하도록 구성된다. 예를 들어, AS 서비스(118)는 무엇보다도 클라이언트 장치(102)로부터 멀티모드 페이지 요청을 수신하는 것과 그 요청에 응답하여 멀티모드 페이지를 클라이언트 장치(102)에 제공하는 것을 포함할 수 있다. 일 실시예에서, 멀티모드 제어기(116)는 애플리케이션 서버(104)와 연합되며, 동일한 제2 레벨의 도메인 내에서 애플리케이션 서버(104)로서 제공된다. 멀티모드 제어기(116)는 비주얼 뷰 및 보이스 뷰의 데이터 및 포커스들 사이에서 동기화를 용이하게 하도록 구성되며, 이에 관해서는 아래에서 더 상세히 설명될 것이다. 멀티모드 제어기(116) 및 애플리케이션 서버(104)가 동일한 제2 레벨 도메인에 존재하기 때문에, 통상의 브라우저 보안 모델에 따라서, 멀티모드 제어기(116)는 애플리케이션 서버(104)에 의해 클라이언트 장치(102)에 제공된 멀티모드 페이지(115) 내에 있는 또는 그 멀티모드 페이지에 의해 참조된 머신 코드의 해석에 따라서 클라이언트 브라우저(112)로부터 발행된 어떤 HTTP 요청들의 대상일 수 있다. 멀티모드 제어기(116)를 애플리케이션 서버(106)에 해당하는 박스 내에 포함하는 것은 멀티모드 제어기(116) 및 애플리케이션 서버(106)(또는 AS 서비스(118))가 동일 플랫폼에서 실행된다는 것을 의미하려는 것은 아니다. 기본적으로, 일 실시예에서, 애플리케이션 서버(106)(또는 AS 서비스(118)) 및 멀티모드 제어기(116)는 클라이언트 브라우저(112)에 의해 부여된 보안 모델에 붙어있는 방식으로 물리적이면서 통신적으로 결합되어야 한다.
일 실시예에서, AS 서비스(118)는 멀티모드 페이지 및 음성 대화를 위한 요청을 수신하고, 멀티모드 페이지 및 음성 대화를 패치하며, 이것들을 요청한 엔티티에 전송하는 것을 포함할 수 있다. 대조적으로, 일 실시예에서, 멀티모드 제어기(116)는 멀티모드 세션의 문맥에서 보이스 뷰 및 비주얼 뷰의 포커스들의 동기화를 용이하게 하도록 구성된다. 또한, 멀티모드 제어기(116)는 클라이언트 장치로부터 수신한 오디오 데이터를 보이스 서버에 전달하며, 또한 그 반대로 전달하도록 구성될 수 있다. 대안의 실시예에서, 멀티모드 제어기(116)의 기능 중 일부 또는 모두는 AS 서비스(118)에서 구현될 수 있다.
앞에서 언급한 바와 같이, 클라이언트 장치(102) 상에 묘사된 멀티모드 페이지와 연관된 머신 코드는 요청들(예를 들어, 동기적 및/또는 비동기적 HTTP 요청들)을 애플리케이션 서버(104)에 발행하도록 구성된다. 애플리케이션 서버(102)를 향한 요청들 중 일부는 AS 서비스(118)에 의해 처리될 수 있으며, 특히 멀티모드 제어기(116)를 향한 다른 요청들은 멀티모드 제어기(116)에 의해 처리될 수 있다.
멀티모드 제어기(116)는 클라이언트 장치(102)에서 보존되는 비주얼 뷰 데이터 및 포커스와 보이스 서버(106)에서 보존되는 보이스 뷰 데이터 및 포커스 간의 동기화를 제어하도록 구성된다. 본질적으로, 비주얼 뷰 포커스와 보이스 뷰 포커스의 동기화는 클라이언트 장치(102)와 보이스 서버(106)에 정보를 제공하는 것을 포함하며, 이로써 클라이언트 장치(102) 상의 멀티모드 페이지(115)에 대응하는 머신 코드의 해석을 보이스 서버(106)에서 대응하는 음성 대화(136)의 머신 코드의 해석과 동기화되게 할 수 있다. 또 다른 방식으로, 비주얼 뷰 포커스 및 보이스 뷰 포커스의 동기화는 클라이언트 장치(102)와 보이스 서버(106)에 정보를 제공하는 것을 포함하며, 이로써 클라이언트 장치(102)에서 비주얼 뷰의 실행 상태를 보이스 서버(106)에서 보이스 뷰의 실행 상태와 동기화되게 할 수 있다. 보이스 뷰 데이터 및 비주얼 뷰 데이터의 동기화는 비주얼 모달리티를 통해 이루어진 사용자 입력에 대응하는 데이터를 보이스 서버에 제공하는 것과, 음성 인식 결과에 대응하는 데이터를 클라이언트 장치에 제공하는 것을 포함한다. 이러한 동기화를 수행하는 방법의 실시예는 나중에 더 상세히 설명될 것이다.
보이스 서버(106)는 모달리티 서버로서, 특히 분산형 멀티모드 애플리케이션 세션과 관련하여 음성 처리 관련 작업들을 조정하도록 구성된다. 앞에서 언급한 바와 같이, 다른 실시예에서, 다른 형태의 모달리티 서버가 시스템에 포함될 수 있다. 보이스 서버(106)는 VS 브라우저/대화 해석기(132)(이하 VS 브라우저(132)라고 지칭함)의 하나 이상의 실례들을 실행하며 그리고 음성 인식기(134)와 인터페이스하도록 구성된다.
VS 브라우저(132)는 보이스 서버(106)가 음성 대화(예를 들어, 음성 대화(136))를 액세스 및 해석하고, 음성 대화를 해석하는 것과 관련하여 오디오 데이터를 전송 및 수신하고, 비동기적 요청(예를 들어, HTTP 요청)을 발행하며, 멀티모드 애플리케이션 세션의 문맥에서 응답(예를 들어, HTTP 응답)을 수신 및 처리할 수 있게 하는 소프트웨어 프로그램이다. 다양한 실시예에서, VS 브라우저(106)는 이것으로 제한되는 것은 아니지만 보이스 모달리티(예를 들어, VoiceXML, SALT, X+V, 및/또는 각종 다른 마크업 언어)의 제공과 연관된 마크업을 해석하도록 구성된 맞춤 또는 상업적으로 이용가능한 브라우저 또는 다른 애플리케이션을 포함할 수 있다.
앞에서 언급한 바와 같이, VS 브라우저(132)는 음성 대화(136)를 액세스 및 해석할 수 있다. 본 명세서에서 사용된 바와 같이, "음성 대화"는 오디오 데이터를 처리하는 것과 연관된 정보 집합을 의미하는 것으로 해석될 수 있으며, 이 경우 음성 대화의 부분들은 멀티모드 페이지(115)에서 표현된 사용자 대화식 디스플레이 요소들에 대응한다. 다양한 실시예에 따르면, 음성 대화는 음성 인식기(134)에 의해 수신된 오디오 데이터의 처리에 영향을 주도록 하고 및/또는 적절한 시점에 오디오 데이터(예를 들어, 음성 프롬프트)를 제공하도록 구성된 머신 코드를 포함할 수 있다. 음성 대화는, 예를 들어, 제한하려는 것은 아니지만, 웹 페이지, 서류, 파일, 리스트 또는 또 다른 형태의 정보 집합을 포함할 수 있다. 음성 대화는 또한 다른 정보 및/또는 요소들, 이를 테면, 예를 들어, 텍스트 정보, 메타데이터, 머신 코드, 및 스크립트를 포함할 수 있다. 비록 아래에 기술된 실시예들이 보이스 서버(106)에 의해 액세스된(예컨대, 다운로드된) 음성 대화를 포함할지라도, 다른 실시예에서, 음성 대화는 보이스 서버(106)에 상주하는, 그리고 다운로드 또는 이와 달리 액세스될 필요 없는 머신 코드로서 실현될 수 있다.
일 실시예에서, 음성 대화(136)는 머신 코드를 포함하며, 이 경우 머신 코드는 보이스 브라우저(132)에 의해 용이하게 해석될 수 있는 컴파일된 코드, 마크업, 및/또는 다른 정보를 포함할 수 있다. 특정 실시예에서, 음성 대화(136)는 VS 브라우저(132)가 하나 이상의 삽입된 또는 조회된 스크립트(예컨대, 자바스크립트 코드)를 액세스 및/또는 실행하게 해주는 마크업을 포함할 수 있다. 스크립트는 음성 대화(136) 내에 삽입될 수 있고, 또는 VS 브라우저(132)는 외부 소스(예컨대, 서버)로부터 또는 로컬 메모리로부터(예를 들어, 보이스 서버(106)의 캐시로부터) 스크립트를 액세스할 수 있다. 스크립트는 무엇보다도 VS 브라우저(132)로 하여금 수신된 오디오 데이터에 따라 음성 인식 결과를 결정하고, 오디오 프롬프트를 검색 또는 생성하며, 및/또는 요청(예컨대, 음성 대화의 HTTP 요청 또는 다른 형태의 요청)을 발행하려는 음성 인식기(134)를 호출하게 구성된 스크립트를 포함할 수 있다. 일 실시예에서, 음성 대화(136)는 요청을 발행하도록 구성된 마크업(예를 들어, VoiceXML, X+V, 및/또는 SALT 마크업) 및 자바스크립트를 포함할 수 있다. 다른 실시예에서, 음성 대화(136)는 다른 형태의 프로그래밍 언어, 스크립팅 언어, 및/또는 마크업 언어를 이용하여 개발될 수 있다.
음성 인식기(134)는 VS 브라우저(132)에 의해 호출될 수 있으며, 그리고 (예를 들어, 압축된, 압축되지 않은, 부화화된, 부호화되지 않은 또는 복호화된 포맷의) 오디오 데이터를 수신하고, 오디오 데이터를 이용하여 음성 인식 알고리즘을 실행하여, 음성 인식 결과(예를 들어, 인식된 음성의 표시)를 결정하려 시도하며, 음성 인식 결과를 반환 또는 어떤 결과도 결정되지 않았음을 표시(예를 들어, 에러를 표시)하도록 구성된 소프트웨어 애플리케이션이다. 본 명세서에서 사용된 바와 같이, "오디오 데이터"라는 용어는 음성 또는 다른 들을 수 있는 소리(일반적으로 "오디오")의 디지털 표현을 의미하며, 이 경우 디지털 오디오 표현은 압축된, 압축되지 않은, 부호화된, 부호화되지 않은, 및/또는 복호화된 포맷으로 샘플된 음성 또는 다른 들을 수 있는 소리를 포함할 수 있다. 오디오 데이터는 또한 오디오 데이터를 포함하는 테이블 또는 다른 데이터 구조 내 포인터들을 포함할 수 있으며, 여기서 테이블은 애플리케이션 서버(102), 보이스 서버(106), 및/또는 클라이언트 장치(102)에 액세스할 수 있다. 일 실시예에서, 음성 인식기(134)는 해석되는 음성 대화(136)의 특정 부분(예를 들어, 보이스 뷰의 현재 포커스)에 따라서 액세스될 수 있는 각종 음성 인식 자원들(예를 들어, 문법, n-gram 시퀀스, 통계적 언어 모델, 및/또는 다른 자원)과 관련하여 실행될 수 있다.
일 실시예에서, 보이스 서버(106)는 AS/VS 통신 경로(122)를 통해 애플리케이션 서버(104)와 통신하며, 음성 인식기(134)는 AS/SR 통신 경로(123)를 통해 애플리케이션 서버(104)와 통신한다. 애플리케이션 서버(104)와 보이스 서버(106) 간의 통신은 무엇보다도 보이스 서버(106)로부터 발생하여 클라이언트 장치(102)를 향한 오디오 데이터(예를 들어, 오디오 프롬프트) 및 음성 인식기(134)에 의해 결정된 음성 인식 결과를 포함할 수 있다. 애플리케이션 서버(104)와 음성 인식기(134) 간의 통신은 무엇보다도 클라이언트 장치(102)로부터 애플리케이션 서버(104)를 통해 수신한 오디오 데이터를 포함할 수 있다. 보이스 서버(106)는 또한 MMC/VS 통신 경로를 통해 멀티모드 제어기(116)와 통신한다. 멀티모드 제어기(116)와 보이스 서버(106) 간의 통신은 멀티모드 제어기(116)가 보이스 서버(106)에게 어느 음성 대화를 다운로드할지, 어느 요소를 포커스할 지, 그리고 요소를 갱신하는데 사용되어야 하는 데이터에 관해 지시하게 하는 보이스 브라우저 제어 포로토콜(예를 들어, 표준 프로토콜)을 이용하여 수행될 수 있다. 일 실시예에서, 멀티모드 제어기(116)는 본질적으로 보이스 브라우저 제어 프로토콜을 클라이언트 브라우저(116)에 의해 수신된 비동기적 HTTP 요청에 연결할 수 있으며, 이러한 요청은 나중에 상세히 설명될 것이다.
대안의 실시예에서, 음성 인식기(134) 및 클라이언트 장치(102)는 SR/클라이언트 오디오 데이터 경로(124)를 통해 오디오 데이터를 직접 교환할 수 있다. "SR/클라이언트 오디오 데이터 경로"는 오디오 데이터가 음성 인식기(134)와 연관된 IP 어드레스 및/또는 포트 및 클라이언트 장치(102)와 연관된 IP 어드레스 및/또는 포트 사이에서 교환될 수 있는 네트워크(108)(또는 다른 어떤 통신 매체)를 통한 하나 이상의 어떤 경로들을 의미하는 것으로 규정될 수 있다. 일 실시예에서, 오디오 데이터는 패킷 데이터 통신 프로토콜을 이용하여 SR/클라이언트 오디오 데이터 경로(124)를 통해 스트림될 수 있다. 대안으로, 오디오 데이터는 회선 교환 방법 또는 푸시-투-토크(PTT) 통신 방법을 이용하여 SR/클라이언트 오디오 경로(124)를 통해 교환될 수 있다. 일 실시예에서, 비록 다른 실시예에서 다른 프로토콜들(예를 들어, 전송 제어 프로토콜(TCP) 또는 다른 프로토콜)이 실행될 수 있을지라도, 오디오 데이터는 SR/클라이언트 오디오 데이터 경로(124)를 통해 실시간 전송 프로토콜/실시간 전송 제어 프로토콜(real-time transport protocol/real-time transport control protocol: RTP/RTCP)의 버전을 이용하여 통신된다.
애플리케이션 서버(104) 및 보이스 서버(106)는 애플리케이션 서버(104) 및 보이스 서버(106)가 차별된 프로세스를 수행하고, AS/VS 통신 경로(122)를 통해 이들 프로세스들의 성능에 영향을 미치는 제어 메시지를 교환한다는 점에서 서로 구별된다. 일 실시예에서, 애플리케이션 서버(104) 및 보이스 서버(106)는 같은 장소에 배치될 수 있거나 또는 배치되지 않을 수 있는 물리적으로 구별된 하드웨어에서 실행될 수 있다. 또 다른 실시예에서, 비록 애플리케이션 서버(104) 및 보이스 서버(106) 사이에서 AS/VS 통신 경로(122)를 통해 각종 메시지가 여전히 교환될지라도, 이 두 서버들은 적어도 부분적으로 공유된 하드웨어에서 구현될 수 있으며, 이에 대해서는 아래에서 상세히 설명될 것이다.
앞에서 언급한 바와 같이, 본 발명 주제의 실시예는 분산형 멀티모드 애플리케이션 세션과 연관된 비주얼 뷰 데이터 및 포커스와 보이스 뷰 데이터 및 포커스를 동기화하도록 구성된다. "비주얼 뷰"의 포커스는 멀티모드 페이지(예를 들어, 멀티모드 페이지(115))의 해석과 관련하여 클라이언트 장치(102)에 의해 보존되며, "보이스 뷰"의 포커스는 멀티모드 페이지와 연관된 음성 대화(예를 들어, 음성 대화(136))의 해석과 관련하여 보이스 서버(106)에 의해 보존된다. "비주얼 뷰" 및 "비주얼 뷰 포커스"라는 용어는 브라우저(예를 들어, 클라이언트 브라우저(112))가 현재 해석 중인 또는 해석 대기중인 멀티모드 페이지 내에 포함 또는 액세스된 머신 코드에 대응하는 디스플레이 요소인 것으로 규정될 수 있다. 예를 들어, 현재의 비주얼 뷰 포커스는 커서가 깜박거리는, 또는 포커스의 다른 어떤 표시가 설정된 하이라이트된 단일 디스플레이 요소와 연관된 머신 코드에 대응할 수 있다. "보이스 뷰" 및 "보이스 뷰 포커스"라는 용어는 브라우저(예를 들어, VS 라우저(132))가 현재 실행 중인 또는 실행 대기중인 음성 대화 내에 포함된 또는 액세스된 머신 코드에 대응하는 디스플레이 요소인 것으로 규정될 수 있다. 예를 들어, 현재의 보이스 뷰 포커스는 보이스 브라우저(132)가 오디오 데이터를 클라이언트 장치(102)에서 묘사되고 있는 특정한 디스플레이 요소의 입력으로서 수신하게 해주는 머신 코드에 대응할 수 있다.
멀티모드 애플리케이션 세션을 개시하고 수행하기 위한 방법들의 실시예들은 이제 도 2 내지 도 6과 관련하여 설명될 것이다. 이들 실시예들은 다양한 실시예들의 설명과 이해를 용이하게 하기 위하여, 분산형 멀티모드 애플리케이션의 특정 형태의 예의 문맥으로 설명될 것이다. 예시적인 애플리케이션은 맵핑 애플리케이션으로, 이 애플리케이션은 멀티모드 가능 클라이언트 브라우저에 의한 해석을 통해 멀티모드 페이지 내에서 표현된 요소들이 클라이언트 장치에서 묘사되도록 구성된 클라이언트 애플리케이션을 포함한다. 대안의 실시예에서, 클라이언트 브라우저는 클라이언트 애플리케이션으로부터 개시하지 않고 (예를 들어, 사용자가 직접 클라이언트 브라우저의 실례를 개시하고 그 클라이언트 브라우저가 멀티모드 페이지를 다운로드하고 해석하게 할 때) 멀티모드 페이지를 해석하도록 구성될 수 있다. 또 다른 대안의 실시예에서, 클라이언트 애플리케이션은 클라이언트 브라우저 작업들의 일부 또는 모두를 수행할 수 있고, 및/또는 클라이언트 애플리케이션은 그렇지 않고 멀티모드 페이지 내에 포함되었을 머신 코드의 일부 또는 모두를 포함할 수 있다. 따라서, 다양한 실시예들은 멀티모드 페이지, 클라이언트 애플리케이션 또는 클라이언트 브라우저를 이용하여 또는 이들이 없이도 수행될 수 있다. 비록 이들 실시예들이 본 발명의 주제의 범주 내에 속함이 당연할지라도, 이들 실시예들은 본 명세서에서 상세히 설명되지 않는다.
본 예는 멀티모드 페이지를 데이터 입력 형태의 형태로 디스플레이하는 클라이언트 장치를 포함할 것이며, 여기서 데이터 입력 형태는 다수의 멀티모드 디스플레이 요소들을 포함한다. 각각의 디스플레이 요소는 사용자가 비주얼 모달리티 또는 보이스 모달리티 중 어느 하나 또는 둘 다를 이용하여 타겟 위치에 필요한 어드레스 정보를 그 안에 입력할 수 있는 충진가능(fillable) 데이터 입력 필드(예를 들어, 도시, 주, 거리번지, 거리주소의 데이터 입력 필드들)를 포함한다. 입력된 정보를 제출할 때, 시스템은 클라이언트 장치가 타겟 위치를 포함하는 맵을 디스플레이할 수 있게 해주는 맵핑 정보를 제공할 수 있다. 뿐만 아니라, 실시예들은 다른 형태의 분산형 멀티모드 애플리케이션들(예를 들어, 무엇보다도 서치 및 네비게이션 애플리케이션들)과 관련하여 사용될 수 있음은 물론이다.
주어진 예에서, 다중 모달리티는 비주얼 모달리티 및 보이스 모달리티를 포함한다. 클라이언트 장치에서, 비주얼 모달리티는 디스플레이 스크린 및 비주얼 디스플레이를 발생하는 연관된 하드웨어와 소프트웨어를 이용하여 실행될 수 있다. 비주얼 모달리티는 또한 사용자가 비주얼 디스플레이 및/또는 다른 사용자 인터페이스 입력 장치와의 상호작용을 통해 선택하고, 정보를 입력하고, 및/또는 다른 행위(예컨대, 포커스 변경)를 할 수 있게 하는 키패드 및/또는 하나 이상의 다른 사용자 인터페이스 입력 장치들을 이용하여 클라이언트 장치에서 실행될 수 있다. 음성 모달리티는 마이크로폰, 스피커, 및 사람의 음성을 수신하여 디지털화하고, 및/또는 오디오 정보를 출력하도록 구성된 연관된 하드웨어 및 소프트웨어를 이용하여 클라이언트 장치에서 실행될 수 있다.
주어진 예에서, 사용자는 키패드 또는 다른 입력 장치를 이용하여 비주얼 디스플레이를 보고 정보를 비주얼 디스플레이의 필드에 입력하고, 선택을 표시하고, 또는 비주얼 뷰 포커스를 변경함으로써 사용자 인터페이스(예컨대, 비주얼 디스플레이)의 비주얼 모달리티와 상호작용할 수 있다. 또한, 사용자는 비주얼 뷰의 포커스가 설정된 디스플레이 요소들과 연관된 정보를 제공하기 위하여 오디오 프롬프트를 듣고 및/또는 말함으로써 사용자 인터페이스의 보이스 모랄리티와 상호작용할 수 있다. 대안의 실시예에서, 분산형 멀티모드 애플리케이션은 비주얼 모달리티 및 보이스 모달리티와 상이한 집합의 모달리티들을 가능할 수 있게 구성될 수 있음은 물론이다.
도 2는 일 실시예에 따라서, 아래에서 설명되는 멀티모드 애플리케이션 세션을 개시하고 수행하기 위한 전체 프로세스를 예시한다. 도 2를 예시하는 의도는 본 발명 주제의 범주를 제한하려는 것이 아니고, 도 3, 도 5, 및 도 6과 관련하여 예시되고 설명된 더 상세한 프로세스의 설명을 이해하는데 필요한 전체 문맥을 제공하려는 것이다.
도 2는 예시적인 실시예에 따른 멀티모드 애플리케이션 세션을 개시하고 수행하기 위한 방법의 흐름도이다. 본 방법은 블록(202)에서 클라이언트 장치가 멀티모드 애플리케이션 세션이 개시되어야 한다는 표시를 수신할 때 시작할 수 있다. 다양한 실시예들에서, 멀티모드 애플리케이션 세션은 클라이언트 애플리케이션(예를 들어, 맵핑 애플리케이션의 클라이언트측 부분) 및/또는 클라이언트 브라우저의 실례에 의해 개시될 수 있다. 예를 들어, 클라이언트 장치의 사용자는 비주얼 모달리티 또는 보이스 모달리티를 이용하여 데이터를 입력할 수 있는 적어도 하나의 멀티모드 디스플레이 요소를 포함하는 비주얼 디스플레이를 단독으로 또는 클라이언트 브라우저와 함께 묘사하도록 구성된 클라이언트 애플리케이션의 실례를 개시할 수 있다. 대안으로, 사용자는 클라이언트 브라우저의 실례를 개시할 수 있으며, 사용자는 해석될 때 클라이언트 장치가 비주얼 디스플레이를 묘사하도록 해주는 멀티모드 페이지를 액세스 또는 다운로드하고자한다는 클라이언트 브라우저에 대한 사용자의 희망을 그 브라우저에게 표시할 수 있다. 예를 들어, 사용자는 사용자 입력을 제공하여 멀티모드 페이지를 찾게 할 수 있다.
클라이언트 장치가 멀티모드 애플리케이션 세션이 개시되어야 한다는 표시를 수신하면, 블록(204)에서, 클라이언트 장치는 멀티모드 페이지 요청을 애플리케이션 서버에 전송한다. 일 실시예에서, 멀티모드 페이지 요청은 요청한 페이지의 조회(예를 들어, 인터넷 주소(uniform resource locator) 또는 URL)를 포함하는 동기적 HTTP 요청이다. 블록(206)에서, 애플리케이션 서버는 그 요청을 수신하고, 요청한 멀티모드 페이지를 패치하며, 그 멀티모드 페이지를 멀티모드 페이지 응답(즉, 블록(204)에서 클라이언트 장치에 의해 전송된 멀티모드 페이지 요청에 대한 응답)의 형태로 클라이언트 장치에 전송한다. 일 실시예에서, 멀티모드 페이지 요청은 클라이언트 요청에 응답하여 멀티모드(또는 다른) 페이지를 패치하고 반환하도록 지정된 애플리케이션 서버(예를 들어, 도 1의 AS 서비스(118)) 내 엔티티에 의해 처리된다.
블록(207)에서, 클라이언트 장치는 멀티모드 페이지 응답(예컨대, 멀티모드 페이지)를 수신하고, 멀티모드 페이지 내에 포함된 및/또는 멀티모드 페이지에 의해 조회된 마크업 및 스크립트의 해석을 시작한다. 이 과정은, 블록(208)에서, 클라이언트 브라우저가 멀티모드 가능한지를 결정하는 단계를 포함한다. 예를 들어, 이러한 결정은 클라이언트 장치 및/또는 클라이언트 브라우저에 속한 구성 정보를 평가함으로써 이루어질 수 있다. 앞에서 설명한 바와 같이, 클라이언트 브라우저가 검출된 사용자의 발성음(예컨대, 사용자 음성)을 포착하여 전송할 수 있을 때, 클라이언트 브라우저가 멀티모드 페이지(또는 멀티모드 디스플레이 요소를 묘사하도록 구성된 다른 머신 코드)를 해석하는 자바스크립트 엔진 또는 이와 기능적으로 대등한 것을 갖추고 있을 때, 클라이언트 브라우저가 비동기적 요청의 발행을 지원하도록 구성되어 있을 때, 그리고 클라이언트 브라우저가 HTTP 서버(예를 들어, 도 1의 애플리케이션 서버(104))와 상호작용하도록 구성되어 있을 때, 클라이언트 브라우저는 멀티모드 가능하다고 간주될 수 있다.
클라이언트 브라우저가 멀티모드 가능하지 않다고 결정될 때, 블록(210)에서, 클라이언트 장치는 "비주얼 모달리티 단독" 모드에서 동작한다. 일 실시예에서, 이 과정은, 비록 클라이언트 장치가 비주얼 모달리티(예를 들어, 키패드 입력)를 통해 사용자 입력을 수신하는 것과 연관된 부분들에 대해서만 멀티모드 페이지를 해석하는 것으로 제한할지라도, 클라이언트 장치가 멀티모드 페이지에서 표현된 디스플레이 요소들을 묘사하는 단계를 포함한다. 본질적으로, 보이스 모달리티를 통해 입력을 수신하는 것과 관련하는 멀티모드 페이지의 부분들은 클라이언트 브라우저에 의해 통과된다. 또한, 페이지를 초기에 묘사한 이후 통상의 기술에 따른 처리(예를 들어, 비주얼 모달리티를 통한 사용자 입력의 처리, 비주얼 모달리티 포커스 변경, 다른 페이지로의 항해 등)가 이루어질 수 있다. 또한, 클라이언트 장치는 각종 다른 프로세스들, 이를 테면, 이하에서 블록들(216, 218, 219, 220, 및 24)과 관련하여 기술되는 프로세스들과 유사한 프로세스들을 수행할 수 있으며, 이 경우, 예외로 오디오 포착, 음성 인식, 보이스 뷰와 비주얼 뷰 간의 데이터 및 포커스의 동기화, 및 보이스 모달리티와 관련한 다른 프로세스들과 관련한 단계들을 유사한 프로세스에서 배제한다. "비주얼 모달리티 단독" 모드에서의 동작은 본 애플리케이션의 의도한 점이 아니기 때문에, 그러한 동작은 본 명세서에서 상세히 설명되지 않는다.
클라이언트 브라우저가 멀티모드 가능하지 않다고 결정될 때, 블록(212)에서, 멀티모드 애플리케이션 세션은 클라이언트 장치, 애플리케이션 서버(또는 상세히 말해서, 멀티모드 제어기), 및 보이스 서버/보이스 브라우저 간의 상호작용을 통해 동기화된되며, 이에 대해서는 도 3과 관련하여 더 상세히 설명될 것이다. 기본적으로, 멀티모드 애플리케이션 세션의 동기화는 클라이언트 장치가 애플리케이션 서버로부터 멀티모드 세션 개시를 요청하고, 애플리케이션 서버가 멀티모드 페이지에 대응하는 음성 대화를 보이스 서버에 제공하고, 클라이언트 장치가 멀티모드 페이지에 표현된 하나 이상의 디스플레이 요소를 비주얼 디스플레이 상에 묘사하고, 클라이언트 장치가 비동기적 이벤트 요청을 애플리케이션 서버에 발행하는 단계를 포함한다. 클라이언트 장치와 보이스 서버가 오디오 데이터를 (애플리케이션 서버를 통하기보다는) 직접 교환하는 일 실시예에서, 멀티모드 애플리케이션 세션의 개시는 또한 클라이언트 장치와 음성 인식기 사이에서 오디오 데이터가 멀티모드 애플리케이션 세션 동안 교환되는 오디오 데이터 경로(예를 들어, 도 1의 SR/클라이언트 오디오 데이터 경로(124))를 설정하는 것을 포함할 수 있다. 멀티모드 세션 동기화 프로세스는 도 3의 설명과 관련하여 아래에서 더 상세히 설명될 것이다. 일 실시예에서, 애플리케이션 서버에 의해 수행되는 멀티모드 세션 동기화 프로세스의 부분들은 비주얼 뷰 데이터 및 포커스와 보이스 뷰 데이터 및 포커스 간의 동기화를 지원하도록 지정된 애플리케이션 서버(예를 들어, 도 1의 멀티모드 제어기(116))와 연관된 엔티티에 의해 수행될 수 있다.
도 5 및 도 6과 관련하여 더 상세히 설명되는 바와 같이, 멀티모드 애플리케이션 세션 동안, 오디오 데이터는 클라이언트 장치와 보이스 서버 사이에서 교환될 것이며, 각종 HTTP 요청과 응답은 클라이언트 장치, 애플리케이션 서버 및 보이스 서버 사이에서 교환될 것이다. 무엇보다도 각종 HTTP 요청 및 응답은 비주얼 뷰 데이터 및 포커스와 보이스 뷰 데이터 및 포커스 간의 동기화를 멀티모드 세션 동안 내내 일관되게 유지될 수 있게 해준다.
오디오 데이터 및 제어 정보는 보이스 모달리티 및 비주얼 모달리티와 연관된 데이터 입력 이벤트들에 응답하여 각종 시스템 엔티티들 사이에서 교환되며, 이러한 이벤트들은 각기 "보이스 모달리티 입력 이벤트" 및 "비주얼 모달리티 입력 이벤트"라고 지칭된다. 보이스 모달리티 입력 이벤트 및 비주얼 모달리티 입력 이벤트는 보이스 뷰 데이터 및 포커스 및/또는 비주얼 뷰 데이터 및 포커스에 영향을 미칠 수 있다. 보이스 모달리티 입력 이벤트 및 비주얼 모달리티 입력 이벤트는 멀티모드 애플리케이션 세션이 수행되고 있을 때 여러 시간대에서 발생할 수 있다. 도 5와 관련하여 더 상세히 설명되는 바와 같이, 보이스 모달리티 입력 이벤트가 발생할 때. 보이스 모달리티 입력 이벤트 처리 프로세스가 블록(214)에서 수행된다. 또한, 도 6과 관련하여 더 상세히 설명되는 바와 같이, 비주얼 모달리티 입력 이벤트가 발생할 때, 비주얼 모달리티 입력 이벤트 처리 프로세스가 블록(216)에서 수행된다. 비록 블록들(214 및 216)이 순서대로 발생하는 것으로 예시되어있을지라도, 이들 프로세스들은 또한 병렬로 또는 반대의 순서로 발생할 수 있으며, 멀티모드 애플리케이션 세션이 수행되고 있는 동안 어느 하나의 프로세스 또는 두 프로세스가 수차례 발생할 수 있다. 일 실시예에서, 애플리케이션 서버에 의해 수행되는 보이스 모달리티 입력 처리 프로세스 및 비주얼 모달리티 입력 처리 프로세스의 부분들은 비주얼 뷰 포커스와 보이스 뷰 포커스 사이의 동기화를 지원하도록 지정된 애플리케이션 서버(예를 들어, 도 1의 멀티모드 제어기(116))와 연관된 엔티티에 의해 수행될 수 있다.
블록(218)에서 도시된 바와 같이, 페이지 데이터(예를 들어, 묘사된 페이지의 디스플레이 요소들에 필요한 사용자에 의해 입력된 누적 데이터)가 애플리케이션 서버에 제출될 때까지, 보이스 모달리티 입력 이벤트 및 비주얼 모달리티 입력 이벤트를 처리하는 프로세스들은 도 2에 예시된 바와 같이 계속하여 수행된다. 대안으로, 그렇지 않고 멀티모드 애플리케이션 세션이 (예를 들어, 사용자 행위, 통신 실패, 타임아웃의 만료, 또는 다른 이벤트를 통해) 종료될 때, 보이스 모달리티 입력 이벤트 및 비주얼 모달리티 입력 이벤트를 처리하는 프로세스들은 중단될 수 있다.
블록(218)에서, 예를 들어, 사용자가 그러한 제출을 (예를 들어, 제출 옵션을 선택함으로써 또는 제출 버튼을 누름으로써) 표시했을 때, 사용자가 데이터를 모든 사용자 대화식 디스플레이 요소들에 입력했을 때, 및/또는 사용자가 데이터를 비주얼 디스플레이에 묘사된 요소들의 순서대로 최종 사용자 대화식 디스플레이 요소에 입력하였을 때, 클라이언트 장치는 페이지 데이터가 제출되고 있다고 결정할 수 있다. 그뿐만 아니라, 페이지 데이터는 클라이언트 장치에서 묘사되는 특정 형태의 멀티모드 페이지에 따라서 다른 방식으로도 제출될 수 있다. 예를 들어, 비록 본 명세서에서 채우는(fillable) 형태의 예가 상세히 설명될지라도, 대안으로 멀티모드 페이지는 사용자 발성음(예를 들어, 사용자 발성음은 데이터 제출의 사용자 표시를 포함한다)의 검출에 따라 데이터가 자동으로 제출될 수 있는 하나 이상의 음성 모달리티 가능 데이터 입력 요소들을 포함할 수 있다. 예를 들어, 멀티모드 페이지는 사용자가 비주얼 디스플레이의 양태를 음성 명령어를 매개로 하여 변경되게 할 수 있는 게임 또는 그래픽 차트 디스플레이와 연관될 수 있다.
클라이언트 장치가 페이지 데이터가 제출되고 있다고 결정할 때, 본 실시예의 블록(219)에서, 클라이언트 장치는 제출 요청을 애플리케이션 서버에 전송할 수 있다. 일 실시예에서, 제출 요청은 멀티모드 페이지 해석과 관련하여 묘사된 일부 또는 모든 입력 데이터의 표현을 포함할 수 있다. 만일 현재 해석되고 있는 멀티모드 페이지 내 마크업이 새로운 멀티모드 페이지를 로드하여야 한다고 표시한다면, 일 실시예에서, 제출 요청은 그 새로운 멀티모드 페이지로의 조회(예컨대, URL)를 포함할 수 있다. 대안의 실시예에서, 클라이언트 장치는 멀티모드 페이지 조회를 제출 요청으로 전송하기보다는 별개의 멀티모드 페이지 요청으로 대신 전송할 수 있다. 제출 요청을 수신하면, 애플리케이션 서버는 입력 데이터를 처리(예를 들어, 저장된 값들을 갱신)할 수 있다.
멀티모드 애플리케이션 세션은 단일의 멀티모드 페이지 또는 일련의 다수의 멀티모드 페이지들의 데이터를 입력하고 제출하는 것을 수반할 수 있다. 따라서, 블록(220)에서, 애플리케이션 서버는 (예를 들어, 클라이언트 장치가 제출 요청 시 또는 별개의 요청으로 멀티모드 페이지 조회를 제공하였을 때) 클라이언트 장치가 새로운 멀티모드 페이지를 요청하였는지를 결정할 수 있다. 만일 그렇지않다면, 블록(222)에서, 애플리케이션 서버는 멀티모드 세션를 종료할 수 있으며, 이 프로세스는 종료할 수 있다. 만일 그렇다면, 블록(224)에서, 애플리케이션 서버는 새로운 멀티모드 페이지를 패치하고, 새로운 멀티모드 페이지를 제출 응답의 형태로 클라이언트 장치에 전송한다. 일 실시예에서, 새로운 멀티모드 페이지를 패치하고 제공하는 단계는 클라이언트 요청에 응답하여 멀티모드(또는 다른) 페이지를 패치하고 반환하도록 지정된 애플리케이션 서버(예를 들어, 도 1의 AS 서비스(118)) 내 엔티티에 의해 수행될 수 있다. 새로운 멀티모드 페이지를 클라이언트 장치에 전송한 후, 일 실시예에서, 본 방법은 도 2에 도시된 바와 같이 반복될 수 있다. 상세히 말해서, 블록(208)에서, 클라이언트 장치는 새로운 멀티모드 페이지를 갖는 멀티모드 페이지 응답을 수신할 수 있다(예를 들어, "제출 응답"은 "멀티모드 페이지 응답"이다). 클라이언트 장치는 이미 클라이언트 브라우저가 멀티모드 가능한지를 결정했기 때문에, 블록(214)에서, 그 단계를 통과하고 멀티모드 애플리케이션 세션을 바로 개시하는 단계로 진행할 수 있다. 도 3의 설명으로부터 명백해지는 바와 같이, 세션이 이미 개시되었다면, 세션 동기화 프로세스 중 소정 부분도 또한 통과될 수 있다. 예를 들어, 도 3의 블록(304)과 관련하여 기술되는 바와 같이, 애플리케이션 서버는 보이스 서버와 함께 멀티모드 세션을 개시하는 단계를 통과시킬 수 있다.
도 3은 예시적인 실시예에 따른, 멀티모드 애플리케이션 세션 동기화(예컨대, 도 2의 프로세스(214))를 수행하기 위한 방법의 흐름도이다. 일 실시예에서, 본 방법은 블록(302)에서 클라이언트 장치가 멀티모드 세션 동기화 요청을 애플리케이션 서버에 전송할 때 시작할 수 있다. 멀티모드 애플리케이션 세션 동기화 요청은, 예를 들어, 클라이언트 장치가 멀티모드 가능하다는 것과, 애플리케이션 서버가 멀티모드 세션을 동기화하는 단계를 진행하여야 한다는 것을 애플리케이션 서버에게 표시하는 동기적 HTTP 요청일 수 있다. 일 실시예에서, 멀티모드 애플리케이션 세션 동기화 요청은 또한 클라이언트 장치에서 해석되는 멀티모드 페이지에 대응하는 음성 대화의 조회(예컨대, URL)를 포함할 수 있다. 또한, 특히 음성 대화가 멀티모드 애플리케이션 세션과 연관된 제1의 음성 대화일 때, 멀티모드 애플리케이션 세션 동기화 요청은 클라이언트 장치에 필요한 오디오 통신 정보를 포함할 수 있다. 오디오 통신 정보는 멀티모드 애플리케이션 세션 동안 애플리케이션 서버가 오디오 데이터를 클라이언트 장치에 전송하는데 사용할 수 있는 정보(예를 들어, 클라이언트 장치에 의해 지원된 오디오 포맷(들), 비트전송률(들)(bitrate(s)), 및/또는 오디오 형태(들), 원하는 오디오 코덱(들), 및/또는 오디오 어드레스정보, 이를 테면, 오디오 데이터를 클라이언트 장치에 전송하는데 사용될 클라이언트 장치 IP 어드레스 및 포트 번호)를 포함할 수 있다. 대안의 실시예에서, 오디오 통신 정보는 멀티모드 애플리케이션 세션 개시 요청과 다른 메시지로 제공될 수 있다.
블록(304)에서, 애플리케이션 서버는 멀티모드 세션 개시 요청을 수신하고 현재의 멀티모드 애플리케이션 세션의 문맥에서 이미 시작하지 않은 한 보이스 서버와 함께 멀티모드 세션을 개시한다. 이 과정은, 예를 들어, 애플리케이션 서버가 오디오 통신 정보를 보이스 서버와 교환하는 단계를 포함할 수 있는데, 이 정보(예를 들어, 애플리케이션 서버 및 보이스 서버에 의해 지원되는 오디오 포맷(들), 비트전송률(들), 및/또는 오디오 형태(들), 원하는 오디오 코덱(들), 및/또는 오디오 어드레스 정보, 이를 테면, 오디오 데이터 교환에 사용될 애플리케이션 서버의 IP 어드레스, 보이스 서버의 IP 어드레스, 및 포트 번호)는 멀티모드 애플리케이션 세션 동안 애플리케이션 서버와 보이스 서버 사이에서 오디오 데이터를 전송하는데 사용될 것이다.
대안의 실시예에서, 이미 언급한 바와 같이, 클라이언트 장치와 음성 인식기는 직접 오디오 데이터를 교환할 수 있다. 그러한 실시예에서, 멀티모드 애플리케이션 세션의 동기화는 클라이언트 장치와 음성 인식기 사이의 오디오 데이터 경로(예를 들어, 도 1의 SR/클라이언트 오디오 데이터 경로(124))를 설정하는 단계를 포함할 수 있다. 비록 이 프로세스가 본 명세서에서 상세히 기술되지 않을지라도, 이 프로세스는 클라이언트 장치 및 음성 인식기가 클라이언트 장치 및 음성 인식기에 의해 지원되는 오디오 포맷(들), 비트전송률(들), 및/또는 오디오 형태(들), 원하는 오디오 코덱(들), 및/또는 오디오 어드레스 정보, 이를 테면, 오디오 데이터 교환에 사용될 클라이언트 장치의 IP 어드레스, 음성 인식기의 IP 어드레스, 및 포트 번호를 기술하는 정보를 포함하는 오디오 경로 정보를 애플리케이션 서버를 통해 서로 교환하는 단계를 포함할 수 있다. 나머지 설명은 클라이언트 장치와 음성 인식기가 애플리케이션 서버를 통해 오디오 데이터를 교환하는 실시예들에 속한다. 그러나, 본 발명 주제의 범주가 본 패러그랩에서 기술된 대안의 실시예들을 포함하는 것은 물론이다.
다시 블록(304)을 참조하면, 애플리케이션 서버는 멀티모드 세션 동기화 요청으로부터 클라이언트 장치에서 해석되는 멀티모드 페이지에 대응하는 음성 대화의 조회(예컨대, URL)를 결정할 수 있다. 일 실시예에서, 애플리케이션 서버는 음성 대화를 패치하고 이를 보이스 서버에 전송할 수 있다. 대안의 실시예에서, 애플리케이션 서버는 음성 대화의 조회를 보이스 서버에 전송할 수 있다. 보이스 서버는 음성 대화 자체를 다운로드 또는 액세스할 수 있다.
그 다음, 보이스 브라우저는 음성 대화의 해석을 개시할 수 있다. 일 실시예에서, 이 과정은 클라이언트 장치가 처음에 그의 포커스를 설정할 멀티모드 디스플레이 요소(예를 들어, 클라이언트 장치가 멀티모드 페이지의 묘사를 개시할 때 커서가 위치될 디스플레이 요소)에 대응하는 음성 대화의 일부를 해석하는 단계를 포함할 수 있다. 현재 실행되고 있는 음성 대화의 부분에 대응하는 멀티모드 디스플레이 요소는 보이스 뷰의 현재 포커스를 나타낸다. 보이스 브라우저는 음성 인식기에게 음성 인식기가 보이스 뷰의 현재 포커스에 대응하는 음성을 인식하려 시도하기 위해 사용해야 하는 음성 인식 자원들(예를 들어, 문법, n-gram 시퀀스, 통계적 언어 모델 또는 다른 자원들)에 관해 지시할 수 있다. 또한, 보이스 서버는 애플리케이션 서버에게 음성 대화의 해석이 개시되었음을 알려줄 수 있다. 어떤 경우에 있어서, 오디오 프롬프트는 보이스 뷰의 초기 포커스와 연관될 수 있다. 만일 그렇다면, 보이스 서버는 오디오 프롬프트를 표현하는 오디오 데이터를 애플리케이션 서버에 전송할 수 있다.
블록(306)에서, 애플리케이션 서버는 멀티모드 세션 동기화 응답(블록(302)에서 클라이언트 장치가 애플리케이션 서버에 전송한 멀티모드 세션 동기화 요청에 대한 응답)을 클라이언트 장치에 전송할 수 있다. 멀티모드 세션 동기화 응답은 클라이언트 장치가 멀티모드 페이지의 해석을 진행하여야 하고 그 멀티모드 페이지 내에서 표현된 하나 이상의 멀티모드 디스플레이 요소들을 묘사하여야 함을 클라이언트 장치에게 표시할 수 있다. 또한, 멀티모드 세션 동기화 응답은 멀티모드 애플리케이션 세션 동안 클라이언트 장치가 오디오 데이터를 애플리케이션 서버에 전송하는데 사용할 수 있는 오디오 통신 정보(예를 들어, 애플리케이션 서버에 의해 지원되는 오디오 포맷(들), 비트전송률(들), 및/또는 오디오 형태(들), 원하는 오디오 코덱(들), 및/또는 오디오 어드레스 정보, 이를 테면, 오디오 데이터를 애플리케이션 서버에 전송하는데 사용될 애플리케이션 서버의 IP 어드레스 및 포트 번호를 기술하는 정보)를 포함할 수 있다. 대안의 실시예에서, 오디오 통신 정보는 멀티모드 애플리케이션 세션 동기화 응답과 다른 메시지로 제공될 수 있다. 만일 보이스 브라우저가 오디오 프롬프트에 대응하는 오디오 데이터를 제공하면, 애플리케이션 서버 또한 그 오디오 데이터를 클라이언트 장치에 전달할 수 있다.
블록(308)에서, 클라이언트 장치는 멀티모드 세션 동기화 응답을 수신하고, 클라이언트 장치에서 초기에 하나 이상의 멀티모드 디스플레이 요소들을 디스플레이하는 것과 연관된 멀티모드 페이지 부분을 해석한다. 일 실시예에서, 이 과정은 클라이언트 장치가 멀티모드 디스플레이 요소들을 클라이언트 장치와 연관된 디스플레이 장치에 묘사하는 단계를 포함할 수 있다. 클라이언트 장치 또한 커서 또는 비주얼 뷰의 초기 포커스의 다른 표시를 묘사할 수 있다. 예를 들어, 클라이언트 장치는 커서를 멀티모드 디스플레이 요소와 연관된 데이터 입력 필드 내에 묘사할 수 있다. 만일 애플리케이션 서버가 오디오 데이터(예컨대, 오디오 프롬프트)를 클라이언트 장치에 전송하였다면, 클라이언트 장치 또한 오디오 데이터를 클라이언트 장치와 연관된 스피커 또는 다른 오디오 출력 장치를 통해 출력할 수 있다.
도 4는 예시적인 실시예에 따른, 클라이언트 장치 (400)에 묘사된 멀티모드 페이지의 일예이다. 예시된 예에서, 비주얼 마크업의 일부는 네 개의 멀티모드 디스플레이 요소들(401, 402, 403, 404)의 형태로 묘사되며, 이들 요소들은 각기 텍스트 라벨(예를 들어, "도시(CITY)", "주(STATE)", "거리번지(STREET NUMBER)", 및 "거리명(STREET NAME)") 및 데이터 입력 필드를 포함한다. 대안의 실시예에서, 특정한 멀티모드 디스플레이 요소는 다수의 입력 데이터 아이템들과 연관될 수 있는데, 이 경우 음성 인식기는 다수의 입력 데이터 아이템들의 인식 이벤트(들)을 발생하려 시도할 때 다수의 음성 인식 자원들을 액세스할 수 있다(예를 들어, 멀티모드 디스플레이 요소는 "거리 주소(STREET ADDRESS)"와 연관될 수 있으며, 이에 대응하는 데이터 입력 필드는 거리번지와 거리명으로 채울 수 있다). 비주얼 뷰의 초기 포커스는 커서(405)를 데이터 입력 필드(401) 내에 배치함으로써 표시된다. 만일 오디오 프롬프트와 연관된 오디오 데이터가 클라이언트 장치(400)에 전송되었다면, 클라이언트 장치(400)는 스피커(408)를 통해 오디오 데이터를 출력할 수 있다. 예를 들어, 초기 오디오 프롬프트는 "도시의 이름을 입력 또는 말하세요(Please input or say a city name)"라고 표시할 수 있다.
다시 도 3을 참조하면, 블록(310)에서, 일 실시예에서, 클라이언트 장치는 비동기적 보이스 이벤트 요청(예를 들어, 비동기적 HTTP 요청)을 애플리케이션 서버에(예를 들어, 도 1의 멀티모드 제어기(116)에) 전송한다. 보이스 이벤트 요청은 애플리케이션 서버에 의해 수신되며, 클라이언트 장치와 애플리케이션 서버 사이에 TCP 연결이 설정된다. 일 실시예에서, 보이스 이벤트 요청은 애플리케이션 서버가 보이스 이벤트 응답을 클라이언트 장치에 발행할 수 있는 시점에서 "보이스 이벤트"가 발생할 때까지 애플리케이션 서버에서 보류중인 채로 남아 있는다(예를 들어, TCP 연결은 현재 상태로 유지된다). 다양한 실시예들에서, 보이스 이벤트는 보이스 서버로부터 음성 인식 결과가 발생되었다는 표시 및/또는 보이스 뷰의 포커스가 새로운 포커스로 변경된 다음 비주얼 뷰 포커스가 새로운 포커스로 갱신된다는 표시를 애플리케이션 서버에 의해 수신하는 것을 포함할 수 있다. 예를 들어, 보이스 뷰는 음성 인식 이벤트가 발생할 때 비주얼 뷰에 대한 포커스 변경 이전에 새로운 포커스로 변경될 수 있다. 도 5와 관련하여 더 상세히 설명되는 바와 같이, 보류중인 보이스 이벤트 요청은 보이스 이벤트가 발생할 때 비주얼 뷰 데이터 및 포커스와 보이스 뷰 데이터 및 포커스 간의 동기화를 용이하게 해준다.
아래에서 더 상세히 설명되는 바와 같이, 애플리케이션 서버가 자발적으로 발생할 수 있는 어떤 보이스 이벤트들이라도 확실하게 포착하고 클라이언트 장치에 반환하도록 하기 위해, 클라이언트 장치는 보이스 이벤트 요청이 멀티모드 세션 동안 실질적으로 항상 애플리케이션 서버에서 보류중임을 보장하려 시도한다. 일 실시예에서, 클라이언트 장치는 애플리케이션 서버가 이미 전송한 보이스 이벤트 요청에 대한 보이스 이벤트 응답을 발행했을 때까지는 또 다른 비동기적 보이스 이벤트 요청을 애플리케이션 서버에 전송하지 않을 수 있다. 따라서, 어떤 주어진 시간에 단지 하나의 보이스 이벤트 요청(예를 들어, 하나의 TCP 연결)만이 애플리케이션 서버에서 보류중인 채로 남아 있을 수 있다. 대안의 실시예에서, (예를 들어, 도 5의 블록(310) 및/또는 블록(514)에서), 클라이언트 장치는 각 이벤트마다 응답을 대기하지 않고 다수의(예를 들어, 둘 내지 다섯의) 비동기적 보이스 이벤트들을 서버에 전송할 수 있는데, 이것은 모든 또는 실질적 부분의 멀티모드 애플리케이션 세션 동안, 애플리케이션 서버에서 다수의 보이스 이벤트 요청들이 보류중인 결과를 가져올 수 있다. 또 다른 대안의 실시예에서, TCP 연결이 종료된 다음 애플리케이션 서버가 응답을 발행하는 가능성을 방지하려 시도하기 위해, 클라이언트 장치는 보이스 이벤트 요청을 주기적으로 또는 가끔 재발행할 수 있다. 예를 들어, 보이스 이벤트 요청이 타임아웃 주기를 초과하는 기간 동안 보류중인 채로 남아 있다면, 애플리케이션 서버는 보류중인 보이스 이벤트 요청을 소멸시킬 수 있거나, 또는 다른 여러 이유 때문에 TCP 연결이 종료될 수 있다. 클라이언트 장치가 다수의 보이스 이벤트 요청들을 애플리케이션 서버에서 보류시킬 수 있는 실시예들에서, 애플리케이션 서버에 부과되는 처리 부하를 관리하기 위하여, 애플리케이션 서버는 클라이언트 장치를 대신하여 보류하고 있는 보이스 이벤트 요청들의 개수를 관리할 수 있다.
블록(310)에서, 클라이언트 장치가 비동기적 보이스 이벤트 요청(또는 다수의 요청들)을 애플리케이션 서버에 전송하면, 멀티모드 애플리케이션 세션을 개시하는 방법이 종료될 수 있다. 이때, 비주얼 뷰는 초기 포커스를 갖고 보이스 뷰는 초기 포커스를 갖는다. 비주얼 뷰 및 보이스 뷰의 초기 포커스들은 사용자 입력을 수신하는 것과 특정한 멀티모드 디스플레이 요소의 음성 인식을 수행하는 것과 각기 연관된 멀티모드 페이지와 음성 대화의 부분들에 대응하도록 동기화되어야 한다. 이때, 클라이언트 장치는 비주얼 모달리티 또는 보이스 모달리티를 통한 멀티모드 디스플레이 요소에 필요한 사용자 입력을 대기하고 있다.
도 2의 블록들(216 및 218)과 관련하여 앞에서 설명한 바와 같이, 멀티모드 애플리케이션 세션의 개시 이후, 적어도 두 가지 형태의 이벤트들이 발생할 수 있고, 이 이벤트들은 보이스 뷰 및 비주얼 뷰의 포커스들에 영향을 미칠 수 있다. 이들 이벤트 형태는 보이스 모달리티 입력 이벤트 및 비주얼 모달리티 입력 이벤트를 포함한다. 보이스 모달리티 입력 이벤트는 사용자 입력이 보이스 모달리티를 통해 수신될 때 발생한다. 예를 들어, 각종 보이스 모달리티 입력 이벤트들은 이것으로 제한되지 않지만, 무엇보다도 음성 인식 이벤트 및 보이스 뷰 포커스 변경을 포함할 수 있다. 이와 대조하여, 비주얼 모달리티 입력 이벤트는 사용자 입력이 비주얼 모달리티를 통해 수신될 때 발생한다. 예를 들어, 각종 비주얼 모달리티 입력 이벤트는 이것으로 제한되지 않지만 무엇보다도 키보드, 키패드 또는 터치스크린를 이용한 데이터의 입력, 및 비주얼 뷰 포커스 변경을 포함할 수 있다. 도 5 및 도 6은 보이스 모달리티 입력 이벤트 처리 프로세스 및 비주얼 모달리티 입력 이벤트 처리 프로세스의 실시예들을 각기 예시한다.
도 5는 예시적인 실시예에 따른, 보이스 모달리티 입력 이벤트 처리 프로세스(예를 들어, 도 2의 프로세스(216))를 수행하기 위한 방법의 흐름도이다. 본 방법은 블록(502)에서 클라이언트 장치가 그의 사용자 인터페이스를 통해 사용자 발성음(예컨대, 사용자 음성)을 나타낼 수 있는 오디오 신호를 수신할 때 시작할 수 있다. 사용자 음성은 단일의 디스플레이 요소에 대응할 수 있고(예를 들어, 음성은 도 4의 디스플레이 요소(401)에 해당하는 "시카고"라는 발성음일 수 있다) 또는 둘 이상의 디스플레이 요소에 대응할 수 있다(예를 들어, 음성은 디스플레이 요소들(401 및 402)에 해당하는 "시카고, 일리노이즈"라는 발성음일 수 있다). 사용자 발성음을 검출하면, 클라이언트 장치는 그 오디오 신호를 디지털화하고 처리하여 사용자 발성음을 표현하는 업링크 오디오 데이터(uplink audio data)를 생성할 수 있으며, 그 업링크 오디오 데이터를 애플리케이션 서버에 전송할 수 있다. 본 명세서에서 사용된 "업링크 오디오 데이터"는 (예를 들어, 애플리케이션 서버를 경유하여) 클라이언트 장치로부터 음성 인식기에 전송된 오디오 데이터를 말하며, "다운링크 오디오 데이터"는 (예를 들어, 애플리케이션 서버를 경유하여) 보이스 서버로부터 클라이언트 장치에 전송된 오디오 데이터(예컨대, 보이스 프롬프트)를 말한다.
블록(504)에서, 애플리케이션 서버는 업링크 오디오 데이터를 수신하고, 업링크 오디오 데이터를 음성 인식기에 전송한다. 블록들(502 및 504)과 관련하여 기술된 실시예에서, 업링크 오디오 데이터는 애플리케이션 서버를 경유하여 클라이언트 장치로부터 음성 인식기에 전송된다. 대안의 실시예에서, 앞에서 언급한 바와 같이, 업링크 오디오 데이터는 클라이언트 장치로부터 (예를 들어, 도 1의 SR/클라이언트 오디오 데이터 경로(124)를 통해) 직접 음성 인식기에 전송될 수 있다. 이러한 실시예에서, 블록들(502 및 504)의 프로세스들은 클라이언트 장치가 업링크 오디오 데이터를 음성 인식기에 전송하는 프로세스로 대체될 수 있다.
블록(506)에서, 음성 인식기는 업링크 오디오 데이터를 수신하고 음성 인식 프로세스를 수행한다. 일 실시예에서, 음성 인식 프로세스는 보이스 뷰의 현재 상태에 따라서 (예컨대, 도 3의 블록(304), 또는 도 6의 블록들(610, 620)에서) 음성 인식기가 보이스 브라우저에 의해 사용할 것을 지시받았던 음성 인식 자원들을 이용하여 수행된다. 업링크 오디오 데이터가 인식가능한 음성에 해당한다고 음성 인식기가 결정할 때, 블록(508)에서 음성 인식기는 인식 결과를 발생하고 그 인식 결과를 보이스 브라우저에 전송할 수 있다.
블록(510)에서, 보이스 브라우저는 인식 결과를 수신하여 처리한다. 일 실시예에서, 이 과정은 비주얼 뷰의 포커스를 전환하는 단계를 포함할 수 있다. 다시 말해서, 인식 결과는 비주얼 뷰의 현재 포커스이었던 디스플레이 요소에 대응하는 업링크 오디오 데이터에 대해 발생되었기 때문에, 보이스 브라우저는 지금 또 다른 디스플레이 요소에 대응하는 새로운 비주얼 뷰 포커스로 전환할 수 있다. 따라서, 보이스 브라우저는 현재의 비주얼 뷰 포커스와 연관된 음성 대화 부분의 해석을 중단할 수 있으며, 또한 새로운 비주얼 뷰 포커스와 연관된 음성 대화 부분의 해석을 개시할 수 있다. 일 실시예에서, 보이스 브라우저는 인식 결과(예를 들어, 디스플레이 요소의 데이터) 및 새로운 비주얼 뷰 포커스의 표시를 포함할 수 있는 갱신 정보를 애플리케이션 서버에 전송할 수 있다.
블록(512)에서, 일 실시예에서, 애플리케이션 서버는 결과/포커스 갱신 정보를 수신하고, 보이스 이벤트 응답을 클라이언트 장치에 전송한다. 보이스 이벤트 응답은 클라이언트 장치에 의해 이미 애플리케이션 서버에 전송되었고 현재 애플리케이션 서버에서 보류중인 비동기적 보이스 이벤트 요청에 대한 응답으로서 전송된다. 일 실시예에서, 보이스 이벤트 응답은 인식 결과 및 보이스 뷰의 새로운 포커스의 표시를 포함할 수 있다.
블록(514)에서, 클라이언트 장치는 보이스 이벤트 응답을 수신한다. 그리고 나서 클라이언트 장치는 그 결과를 반영하도록 비주얼 뷰를 갱신할 수 있다. 예를 들어, 클라이언트 장치는 비주얼 뷰의 현재 포커스인 디스플레이 요소를 그 결과를 나타내는 텍스트로 채울 수 있다. 또한, 클라이언트 장치는 보이스 뷰의 새로운 포커스와 동기화되게 비주얼 뷰 포커스를 갱신할 수 있다. 따라서 비주얼 뷰 및 보이스 뷰는 동기화될 것이다.
일 실시예에서, 블록(310)(도 3)과 관련하여 이미 언급한 바와 같이, 클라이언트 장치는 또 다른 비동기적 보이스 이벤트 요청(예컨대, 비동기적 HTTP 요청)을 애플리케이션 서버에 전송한다. 보이스 이벤트 요청은 애플리케이션 서버에 의해 수신된다. 바람직하게, 각종 동기적 및 비동기적 HTTP 요청들은 연결 캐싱(connection caching)을 활용할 것이며, 이로써 매 요청마다 새로운 TCP 연결을 해체하고 재설정할 필요가 줄어들 것이다. 그러나, 또 다른 실시예에서, 클라이언트 장치에 의해 애플리케이션 서버에 전송된 각 HTTP 요청마다 클라이언트 장치와 애플리케이션 서버 사이에 또 다른 TCP 연결이 설정될 수 있다. 일 실시예에서, 보이스 이벤트 요청은 또 다른 보이스 이벤트가 발생할 때까지 애플리케이션 서버에서 보류한 채로 남아 있을 것이다. 그런 다음, 도 5의 방법은 종료할 수 있다.
도 6은 예시적인 실시예에 따른 비주얼 모달리티 입력 이벤트 처리 프로세스(예컨대, 도 2의 프로세스(218))를 수행하기 위한 방법의 흐름도이다. 일 실시예에서, 본 방법은 블록(602)에서 클라이언트 장치가 그의 비주얼 모달리티를 통해 비주얼 뷰의 포커스 변경 및/또는 비주얼 디스플레이의 갱신을 정식 허가할 수 있는 사용자 입력을 수신할 때 시작할 수 있다. 예를 들어, 사용자는 클라이언트 장치의 스크롤링 또는 포인팅 메커니즘을 사용하여 비주얼 뷰가 현재 초점을 맞춘 것과 상이한 디스플레이 요소 및/또는 데이터 입력 필드를 선택할 수 있다. 또 다른 예로서, 사용자는, 예를 들어, 키패드를 이용하여 비주얼 뷰가 현재 초점을 맞춘 데이터 입력 필드에 텍스트를 입력할 수 있으며, 또한 이를 테면 "ENTER" 키(예컨대, 도 4의 "ENTER" 키(406))를 누름으로써 또는 어떤 다른 표시를 제공함으로써 데이터 필드에 정보 삽입의 완료를 표시할 수 있다.
클라이언트 장치가 판단 블록(604)의 좌측 분기에서 표시된 바와 같이 (텍스트의 입력 없이) 비주얼 뷰 포커스 변경을 정식 허가하는 사용자 입력을 수신할 때, 블록(606)에서 클라이언트 장치는 포커스 요청(예컨대, 동기적 HTTP 요청)을 애플리케이션 서버에 전송할 수 있다. 일 실시예에서, 포커스 요청은 비주얼 뷰의 새로운 포커스를 표시할 수 있다. 블록(608)에서, 애플리케이션 서버는 비주얼 뷰의 새로운 포커스의 표시를 보이스 브라우저에 전송한다.
블록(610)에서, 보이스 브라우저는 새로운 비주얼 뷰 포커스의 표시를 수신한다. 이에 응답하여, 보이스 브라우저는 뷰 포커스를 갱신하여 새로운 비주얼 뷰 포커스와 동기화되게 할 수 있다. 일 실시예에서, 이 과정은 보이스 브라우저가 현재의 보이스 뷰 포커스와 연관된 음성 대화 부분의 해석을 중단하고, 비주얼 뷰의 새로운 포커스인 디스플레이 요소와 연관된 음성 대화 부분의 해석을 개시하는 단계를 포함할 수 있다. 따라서, 비주얼 뷰 및 보이스 뷰는 동기화될 것이다. 또한, 보이스 브라우저는 음성 인식기에게 새로운 보이스 뷰 포커스와 연관된 음성 인식 자원을 사용하라고 지시할 수 있다.
블록(612)에서, 애플리케이션 서버는 포커스 응답(예를 들어, 블록(606)에서 클라이언트에 의해 애플리케이션 서버에 전송된 포커스 요청에 대한 응답)을 클라이언트 장치에 전송할 수 있다. 블록(614)에서, 클라이언트 장치는 포커스 응답을 수신하고, 비주얼 뷰 포커스를 갱신한다. 일 실시예에서, 이 과정은 클라이언트 브라우저가 현재의 디스플레이 요소와 연관된 멀티모드 페이지 부분의 해석을 중단하고, 새로운 비주얼 뷰 포커스에 대응하는 디스플레이 요소와 연관된 멀티모드 페이지 부분의 해석을 개시하는 단계를 포함한다. 따라서, 비주얼 뷰 및 보이스 뷰는 동기화될 것이다. 또한, 클라이언트 장치는 새로운 비주얼 뷰 포커스를 반영하도록 비주얼 디스플레이를 갱신할 수 있다. 예를 들어, 클라이언트 장치는 새로운 비주얼 뷰 포커스의 대상인 디스플레이 요소에 대응하는 데이터 입력 블록에 커서를 포함하도록 비주얼 디스플레이를 갱신할 수 있다. 그런 다음 본 방법은 종료될 수 있다.
다시 판단 블록(604)을 참조하면, 판단 블록(604)의 우측 분기에서 표시된 바와 같이, 클라이언트 장치가 텍스트 사용자 입력을 수신할 때, 블록(616)에서 클라이언트 장치는 텍스트 데이터 요청(예컨대, 동기적 HTTP 요청)을 애플리케이션 서버에 전송할 수 있다. 일 실시예에서, 텍스트 데이터 요청은 사용자에 의해 입력된 텍스트의 표현을 포함할 수 있다. 블록(618)에서, 애플리케이션 서버는 텍스트 데이터의 표현을 보이스 서버에 전송한다.
블록(620)에서, 보이스 브라우저는 텍스트 데이터의 표현을 갱신하며(예를 들어, 저장하며), 수신한 텍스트의 견지에서 음성 대화의 해석에 따라 보이스 뷰의 새로운 포커스를 결정한다. 그 다음, 응답으로, 보이스 브라우저는 보이스 뷰를 새로운 보이스 뷰 포커스로 갱신할 수 있다. 일 실시예에서, 이 과정은 보이스 브라우저가 현재의 보이스 뷰 포커스와 연관된 음성 대화 부분의 해석을 중단하고, 보이스 뷰의 새로운 포커스인 디스플레이 요소와 연관된 음성 대화 부분의 해석을 개시하는 단계를 포함할 수 있다. 또한, 보이스 브라우저는 음성 인식기에게 새로운 보이스 뷰 포커스와 연관된 음성 인식 자원들을 사용할 것을 지시할 수 있으며, 또한 그 새로운 보이스 뷰 포커스의 표시를 애플리케이션 서버에 전송할 수 있다.
블록(622)에서, 애플리케이션 서버는 텍스트 데이터 응답(예를 들어, 블록(616)에서, 클라이언트 장치에 의해 애플리케이션 서버에 전송된 텍스트 요청에 대한 응답)을 클라이언트 장치에 전송할 수 있다. 텍스트 데이터 응답은 새로운 보이스 뷰 포커스의 표시를 포함할 수 있다. 블록(624)에서, 클라이언트 장치는 텍스트 데이터 응답을 수신하고, 비주얼 뷰 포커스를 갱신하여 새로운 보이스 뷰 포커스와 동기화되도록 한다. 일 실시예에서, 이 과정은 클라이언트 브라우저가 현재의 디스플레이 요소와 연관된 멀티모드 페이지 부분의 해석을 중단하고, 새로운 보이스 뷰 포커스에 대응하는 디스플레이 요소와 연관된 멀티모드 부분의 해석을 개시하는 단계를 포함할 수 있다. 따라서, 비주얼 뷰와 보이스 뷰는 동기화될 것이다. 또한, 클라이언트 장치는 새로운 비주얼 뷰 포커스를 반영하도록 비주얼 디스플레이를 갱신할 수 있다. 예를 들어, 클라이언트 장치는 새로운 비주얼 뷰 포커스의 대상인 디스플레이 요소에 대응하는 데이터 입력 블록 내에 커서를 포함하도록 비주얼 디스플레이를 갱신할 수 있다. 그런 다음 본 방법은 종료될 수 있다.
지금까지 분산형 멀티모드 애플리케이션을 실행하기 위한 다양한 실시예들의 방법 및 장치가 설명되었다. 전술한 상세 설명은 사실상 예시적일 뿐이며 본 발명의 주제 또는 애플리케이션을 제한하려 의도하지 않으며 또한 본 발명 주제의 사용을 설명된 실시예들로 제한하려 의도하지 않는다. 더욱이, 전술한 배경 설명 또는 상세한 설명에서 제시한 어떤 이론으로 구속할 의도는 없다.
일 실시예는 클라이언트 장치에 의해 수행된 방법을 포함한다. 이 방법은 클라이언트 장치에 의해 입력 데이터를 비주얼 모달리티 및 보이스 모달리티를 통해 수신할 수 있는 적어도 하나의 멀티모드 디스플레이 요소를 포함하는 비주얼 디스플레이를 묘사하는 단계를 포함하며, 여기서 상기 적어도 하나의 멀티모드 디스플레이 요소의 제1 멀티모드 디스플레이 요소에 비주얼 뷰 포커스가 설정된다. 본 방법은 또한 비동기적 HTTP 요청인 제1 보이스 이벤트 요청을 애플리케이션 서버에 전송하는 단계, 보이스 모달리티를 통해 사용자 발성음을 표현할 수 있는 오디오 신호를 수신하는 단계, 상기 오디오 신호를 나타내는 업링크 오디오 데이터를 음성 인식기에 전송하는 단계, 상기 음성 이벤트 요청에 대한 응답으로 상기 애플리케이션 서버로부터 보이스 이벤트 응답을 수신하는 단계, 및 상기 보이스 이벤트 응답의 수신에 대한 응답으로 상기 애플리케이션 서버에게 제2 보이스 이벤트요청을 전송하는 단계를 포함한다.
또 다른 실시예는 애플리케이션 서버에 의해 수행된 방법을 포함한다. 이 방법은 클라이언트 장치에 의해 입력 데이터를 비주얼 모달리티 및 보이스 모달리티를 통해 수신할 수 있는 적어도 하나의 멀티모드 디스플레이 요소를 포함하는 비주얼 디스플레이를 묘사했던 클라이언트 장치로부터 제1 보이스 이벤트 요청을 수신하는 단계를 포함하며, 여기서, 제1 보이스 이벤트 요청은 HTTP 요청이다. 본 방법은 또한 보이스 서버로부터 음성 인식 결과를 수신하는 단계, 여기서 음성 인식 결과는 클라이언트 장치에 의해 전송된 업링크 오디오 데이터에 대해 수행된 음성 인식 프로세스의 결과를 나타내며, 상기 제1 보이스 이벤트 요청에 응답하여 상기 클라이언트 장치에 보이스 이벤트 응답을 전송하는 단계, 및 상기 보이스 이벤트 응답의 전송에 대한 응답으로 상기 클라이언트 장치로부터 제2 보이스 이벤트 응답을 수신하는 단계를 포함한다.
또 다른 실시예는 클라이언트 장치에 의해 입력 데이터를 비주얼 모달리티 및 보이스 모달리티를 통해 수신할 수 있는 적어도 하나의 멀티모드 디스플레이 요소를 포함하는 비주얼 디스플레이를 묘사하도록 구성된 클라이언트 장치를 포함하는 시스템을 포함하며, 여기서 적어도 하나의 멀티모드 디스플레이 요소의 제1 멀티모드 디스플레이 요소에는 비주얼 뷰 포커스가 설정된다. 상기 클라이언트 장치는 또한 비동기적 HTTP 요청인 제1 보이스 이벤트 요청을 애플리케이션 서버에 전송하고, 보이스 모달리티를 통해 사용자 발성음을 나타낼 수 있는 오디오 신호를 수신하고, 상기 오디오 데이터를 나타내는 업링크 오디오 데이터를 음성 인식기에 전송하고, 상기 보이스 이벤트 요청에 대한 응답으로 상기 애플리케이션 서버로부터 보이스 이벤트 응답을 수신하고, 상기 보이스 이벤트 응답을 수신한 것에 응답하여 상기 애플리케이션 서버에 제2 보이스 이벤트 요청을 전송하도록 구성된다. 일 실시예에서, 상기 시스템은 또한 애플리케이션 서버를 포함하며, 상기 애플리케이션 서버는 상기 클라이언트 장치로부터 상기 제1 보이스 이벤트 요청을 수신하고, 상기 클라이언트 장치에 의해 상기 음성 인식기에 전송된 상기 업링크 오디오 데이터에 대해 수행된 음성 인식 프로세스의 결과를 나타내는 음성 인식 결과를 보이스 서버로부터 수신하고, 상기 제1 보이스 이벤트 요청에 대한 응답으로 상기 클라이언트 장치에게 상기 보이스 이벤트 응답을 전송하고, 상기 보이스 이벤트 응답의 전송에 대한 응답으로 상기 클라이언트 장치로부터 상기 제2 보이스 이벤트 요청을 수신하도록 구성된다.
청구항들의 어느 청구항에서도 명세서의 순서는 그 청구항의 언어로 특별하게 규정하지 않는 한 프로세스 단계들이 그러한 순서에 따른 일시적 또는 논리적 순서로 수행되어야 함을 함축하지 않는다. 더 상세히 말하면, 도 2, 도 3, 도 5, 및 도 6의 프로세스 단계들은 어떤 순서로도 상호교환될 수 있고, 및/또는 본 발명 주제의 범주를 벗어나지 않고 병렬로 수행될 수 있다. 또한, 시스템 요소들 사이에서 교환되는 것으로 앞에서 언급한, 각종 상이한 메시지들(예를 들어, 요청들 및 응답들) 내 정보는 합쳐져 단일의 메시지들로 조합될 수 있고, 및/또는 특정한 메시지 내 정보는 다수의 메시지들로 분리될 수 있음은 물론이다. 또한, 메시지들은 시스템 요소들에 의해 전술한 순서와 다른 순서로 전송될 수 있다. 더욱이, 상이한 요소들 간의 관계를 기술하는데 사용된 "연결된" 또는 "에 결합된"과 같은 단어들은 이들 요소들 사이에서 직접적인 물리적 접속이 이루어져야 함을 함축하지 않는다. 예를 들어, 두 요소들은 본 발명 주제의 범주를 벗어나지 않고 하나 이상의 부가적인 구성요소들을 통해 서로 물리적으로, 전기적으로, 논리적으로, 또는 어떤 다른 방식으로도 연결될 수 있다.
본 기술 분야에서 숙련자들은 정보 및 신호들이 어떠한 각종 상이한 기술들과 기법들을 사용하여 표현될 수 있음을 이해하였을 것이다. 예를 들어, 전술한 설명 전체에서 조회될 수 있는 데이터, 명령, 지령, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자기파, 자계 또는 자기 입자, 광학 장(optical fields) 또는 입자, 이들의 모든 조합으로 표현될 수 있다.
숙련자들은 또한 본 명세서에 개시된 실시예들과 관련하여 기술된 예시적인 각종 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수 있음을 인식하였을 것이다. 이렇게 하드웨어와 소프트웨어의 상호교환가능성을 분명히 예시하기 위하여, 각종 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 이들의 기능의 관점에서 기술되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지의 여부는 전체 시스템에 특정 애플리케이션 및 디자인 제약이 부과되어 있는지에 달려 있다. 숙련자들은 기술된 기능을 각 특정 애플리케이션마다 방식을 변경해가면서 구현할 수 있지만, 그러한 구현의 판단은 본 발명 주제의 범주를 벗어나는 것으로 해석되어서는 안 된다.
본 명세서에 개시된 실시예들과 관련하여 기술된 각종의 예시적인 논리적 블록들 및 모듈들은 본 명세서에 기술된 기능들을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 반도체(ASIC), 현장 프로그램가능 게이트 어레이(field programmable gate array: FPGA) 또는 다른 프로그램 가능 로직 디바이스, 이산 게이트(discrete gate) 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트(discrete hardware components), 또는 이들의 어떤 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안으로, 프로세서는 통상의 모든 프로세서, 제어기, 마이크로프로세서, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 이를 테면 DSP 및 마이크로프로세서의 조합, 다수의 마이크로프로세서들의 조합, DSP 코어와 함께한 하나 이상의 마이크로프로세서들의 조합, 또는 다른 모든 그러한 구성으로서 구현될 수 있다.
본 명세서에 개시된 실시예들과 관련하여 기술된 방법 또는 알고리즘의 단계들은 하드웨어, 프로세서에 의해 실행된 하나 이상의 소프트웨어 모듈, 또는 이들 두 가지의 조합으로 직접 구체화될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리, 플래시 메모리, 판독 전용 메모리(ROM), 소거가능 프로그램가능 ROM(EPROM), 전기적 EPROM, 레지스터, 하드디스크, 제거가능 디스크, 콤팩트 디스크 ROM(CD-ROM), 또는 본 기술 분야에서 공지된 어떤 다른 형태의 스토리지 매체에 상주할 수 있다. 예시적인 스토리지 매체는 프로세서에 결합되어 그 프로세서가 스토리지 매체로부터 정보를 읽고, 정보를 스토리지 매체에 기록할 수 있다. 대안으로, 스토리지 매체는 프로세서와 일체화될 수 있다. 프로세서 및 스토리지 매체는 ASIC 내에 존재할 수 있다. ASIC는 사용자 터미널에 존재할 수 있다. 대안으로, 프로세서 및 스토리지 매체는 사용자 터미널 내 개별 컴포넌트들로서 존재할 수 있다.
전술한 상세한 설명에서 적어도 하나의 예시적인 실시예가 제시되었지만, 많은 변형예가 존재한다는 것을 인식하여야 한다. 또한 예시적인 실시예 또는 예시적인 실시예들은 단지 예일 뿐이며, 어떤 방식으로도 본 발명 주제의 범주, 응용 또는 구성을 제한하도록 의도하지 않는다. 그보다는, 전술한 상세한 설명은 본 기술 분야에서 숙련자들에게 본 발명 주제의 예시적인 실시예를 구현하는데 편리한 로드맵을 제공하는 것일 것이고, 첨부의 청구범위에서 설명되고 이들의 법적인 등가물로 설명한 바와 같이 본 발명 주제의 범주를 벗어나지 않고 예시적인 실시예에 기술된 요소들의 기능과 배열에서 다양한 변경이 이루어질 수 있음은 물론이다.
Claims (21)
- 클라이언트 장치에 의해 수행되는 방법으로서,
상기 클라이언트 장치에 의해 입력 데이터를 비주얼 모달리티(visual modality) 및 보이스 모달리티(voice modality)를 통해 수신할 수 있는 적어도 하나의 멀티모드 디스플레이 요소(multi-modal display element)를 포함하는 비주얼 디스플레이를 묘사(rendering)하는 단계 - 상기 적어도 하나의 멀티모드 디스플레이 요소의 제1 멀티모드 디스플레이 요소에 비주얼 뷰 포커스(visual view focus)가 설정됨 -;
비동기적 하이퍼텍스트 전송 프로토콜(asynchronous hypertext transfer protocol; HTTP) 요청인 제1 보이스 이벤트 요청을 애플리케이션 서버에 전송하는 단계;
상기 보이스 모달리티를 통해 사용자 발성음(user utterance)을 표현할 수 있는 오디오 신호를 수신하는 단계;
상기 오디오 신호를 나타내는 업링크 오디오 데이터를 음식 인식기에 전송하는 단계;
상기 음성 이벤트 요청에 응답하여 상기 애플리케이션 서버로부터 보이스 이벤트 응답을 수신하는 단계; 및
상기 보이스 이벤트 응답의 수신에 응답하여 제2 보이스 이벤트 요청을 상기 애플리케이션 서버에 전송하는 단계
를 포함하는, 클라이언트 장치에 의해 수행되는 방법. - 제1항에 있어서, 상기 업링크 오디오 데이터를 상기 음성 인식기에 전송하는 단계는, 상기 업링크 오디오 데이터를 상기 음성 인식기에 전달되도록 상기 애플리케이션 서버에 전송하는 단계를 포함하는, 클라이언트 장치에 의해 수행되는 방법.
- 제1항에 있어서, 상기 업링크 오디오 데이터를 상기 음성 인식기에 전송하는 단계는, 상기 업링크 오디오 데이터를 직접 상기 음성 인식기에 전송하는 단계를 포함하는, 클라이언트 장치에 의해 수행되는 방법.
- 제1항에 있어서,
음성 인식 결과를 수신하는 단계; 및
상기 비주얼 디스플레이를 갱신하여 상기 음성 인식 결과에 대응하는 텍스트를 상기 제1 멀티모드 디스플레이 요소에서 디스플레이하는 단계를 더 포함하는, 클라이언트 장치에 의해 수행되는 방법. - 제1항에 있어서,
새로운 보이스 뷰 포커스의 표시를 수신하는 단계; 및
상기 비주얼 뷰 포커스를 갱신하여 상기 새로운 보이스 뷰 포커스와 동기화되도록 하는 단계를 더 포함하는, 클라이언트 장치에 의해 수행되는 방법. - 제1항에 있어서,
해석될 때, 상기 클라이언트 장치가 상기 비주얼 디스플레이를 묘사할 수 있게 하는 멀티모드 페이지를 상기 애플리케이션 서버로부터 요청하는 단계;
상기 멀티모드 페이지를 상기 애플리케이션 서버로부터 수신하는 단계;
상기 클라이언트 장치가 멀티모드 가능한지를 결정하는 단계; 및
상기 클라이언트 장치가 멀티모드 가능할 때, 상기 비주얼 디스플레이를 묘사하는 단계를 더 포함하는, 클라이언트 장치에 의해 수행되는 방법. - 제1항에 있어서,
오디오 프롬프트(audio prompt)를 포함하는 다운링크 오디오 데이터를 수신하는 단계; 및
상기 오디오 프롬프트를 상기 클라이언트 장치의 오디오 출력 장치를 통해 출력하는 단계를 더 포함하는, 클라이언트 장치에 의해 수행되는 방법. - 제1항에 있어서,
상기 비주얼 뷰 포커스를 상기 적어도 하나의 멀티모드 디스플레이 요소의 제2 멀티모드 디스플레이 요소로 변경하는 사용자 입력을 수신하는 단계;
상기 사용자 입력을 수신함에 따라, 상기 제2 멀티모드 디스플레이 요소에 대응하는 새로운 비주얼 뷰 포커스를 나타내는 포커스 요청을 상기 애플리케이션 서버에 발행(issuing)하는 단계;
상기 애플리케이션 서버로부터 포커스 응답을 수신하는 단계; 및
상기 포커스 응답을 수신한 것에 응답하여, 상기 비주얼 뷰 포커스 및 상기 비주얼 디스플레이를 갱신하여 상기 제2 멀티모드 디스플레이 요소를 상기 비주얼 뷰 포커스로서 표시하는 단계를 더 포함하는, 클라이언트 장치에 의해 수행되는 방법. - 제8항에 있어서, 상기 사용자 입력을 수신하는 단계는,
상기 사용자가 포인팅 또는 스크롤링 사용자 인터페이스 장치를 이용하여 상기 제2 멀티모드 디스플레이 요소를 선택하였다는 표시를 수신하는 단계를 포함하는, 클라이언트 장치에 의해 수행되는 방법. - 제8항에 있어서, 상기 사용자 입력을 수신하는 단계는,
상기 사용자가 상기 제1 멀티모드 디스플레이 요소의 데이터 입력 필드(data entry field)에 텍스트를 입력하였다는 표시를 수신하는 단계를 포함하며, 상기 포커스 요청은 상기 텍스트의 표시를 포함하는, 클라이언트 장치에 의해 수행되는 방법. - 애플리케이션 서버에 의해 수행되는 방법으로서,
클라이언트 장치에 의해 입력 데이터를 비주얼 모달리티(visual modality) 및 보이스 모달리티(voice modality)를 통해 수신할 수 있는 적어도 하나의 멀티모드 디스플레이 요소를 포함하는 비주얼 디스플레이를 묘사한 상기 클라이언트 장치로부터 비동기적 하이퍼텍스트 전송 프로토콜(HTTP) 요청인 제1 보이스 이벤트 요청을 수신하는 단계;
보이스 서버로부터, 상기 클라이언트 장치에 의해 음성 인식기에 전송된 업링크 오디오 데이터에 대해 수행된 음성 인식 프로세스의 결과를 나타내는 음성 인식 결과를 수신하는 단계;
상기 제1 보이스 이벤트 요청에 응답하여 상기 클라이언트 장치에 보이스 이벤트 응답을 전송하는 단계; 및
상기 보이스 이벤트 응답을 전송한 것에 응답하여 상기 클라이언트 장치로부터 제2 보이스 이벤트 요청을 수신하는 단계
를 포함하는, 애플리케이션 서버에 의해 수행되는 방법. - 제11항에 있어서,
상기 클라이언트 장치로부터 상기 업링크 오디오 데이터를 수신하는 단계; 및
상기 업링크 오디오 데이터를 상기 음성 인식기에 전송하는 단계를 더 포함하는, 애플리케이션 서버에 의해 수행되는, 애플리케이션 서버에 의해 수행되는 방법. - 제11항에 있어서, 상기 보이스 이벤트 응답을 상기 클라이언트 장치에 전송하는 단계는,
상기 음성 인식 결과를 상기 보이스 이벤트 응답에 포함시키는 단계를 포함하는, 애플리케이션 서버에 의해 수행되는 방법. - 제11항에 있어서,
상기 보이스 서버로부터 새로운 보이스 뷰 포커스의 표시를 수신하는 단계; 및
상기 새로운 보이스 뷰 포커스의 표시를 상기 보이스 이벤트 응답에 포함시키는 단계를 더 포함하는, 애플리케이션 서버에 의해 수행되는 방법. - 제11항에 있어서,
상기 클라이언트 장치로부터 새로운 비주얼 뷰 포커스의 표시를 수신하는 단계; 및
상기 새로운 비주얼 뷰 포커스의 표시를 상기 보이스 서버에 전송하는 단계를 더 포함하는, 애플리케이션 서버에 의해 수행되는 방법. - 시스템으로서,
클라이언트 장치
를 포함하며,
상기 클라이언트 장치는,
상기 클라이언트 장치에 의해 입력 데이터를 비주얼 모달리티 및 보이스 모달리티를 통해 수신할 수 있는 적어도 하나의 멀티모드 디스플레이 요소를 포함하는 비주얼 디스플레이를 묘사(render)하고 - 상기 적어도 하나의 멀티모드 디스플레이 요소의 제1 멀티모드 디스플레이 요소에 비주얼 뷰 포커스(visual view focus)가 설정됨 -,
비동기적 하이퍼텍스트 전송 프로토콜(HTTP) 요청인 제1 보이스 이벤트 요청을 애플리케이션 서버에 전송하고,
상기 보이스 모달리티를 통해 사용자 발성음을 표현할 수 있는 오디오 신호를 수신하고,
상기 오디오 신호를 나타내는 업링크 오디오 데이터를 음식 인식기에 전송하고,
상기 보이스 이벤트 요청에 응답하여 상기 애플리케이션 서버로부터 보이스 이벤트 응답을 수신하며,
상기 보이스 이벤트 응답을 수신한 것에 응답하여 제2 보이스 이벤트 요청을 상기 애플리케이션 서버에 전송하도록
적응된 시스템. - 제16항에 있어서, 애플리케이션 서버를 더 포함하며,
상기 애플리케이션 서버는,
상기 클라이언트 장치로부터 상기 제1 보이스 이벤트 요청을 수신하고,
보이스 서버로부터, 상기 클라이언트 장치에 의해 상기 음성 인식기에 전송된 상기 업링크 오디오 데이터에 대해 수행된 음성 인식 프로세스의 결과를 나타내는 음성 인식 결과를 수신하고,
상기 제1 보이스 이벤트 요청에 응답하여 상기 클라이언트 장치에게 상기 보이스 이벤트 응답을 전송하며,
상기 보이스 이벤트 응답을 전송한 것에 응답하여 상기 클라이언트 장치로부터 상기 제2 보이스 이벤트 요청을 수신하도록
적응된 시스템. - 제16항에 있어서, 상기 클라이언트 장치는 또한, 상기 업링크 오디오 데이터를 상기 음성 인식기에 전달되도록 상기 애플리케이션 서버에 전송하도록 적응된 시스템.
- 제16항에 있어서, 상기 클라이언트 장치는 또한, 새로운 보이스 뷰 포커스의 표시를 수신하고, 상기 비주얼 뷰 포커스를 갱신하여 상기 새로운 보이스 뷰 포커스와 동기화되도록 적응된 시스템.
- 제16항에 있어서, 상기 클라이언트 장치는 또한,
상기 비주얼 뷰 포커스를, 상기 적어도 하나의 멀티모드 디스플레이 요소의 제2 멀티모드 디스플레이 요소로 변경하는 사용자 입력을 수신하고, 상기 사용자 입력을 수신함에 따라, 상기 제2 멀티모드 디스플레이 요소에 대응하는 새로운 비주얼 뷰 포커스를 표시하는 포커스 요청을 상기 애플리케이션 서버에 발행하고, 상기 애플리케이션 서버로부터 포커스 응답을 수신하며, 상기 포커스 응답을 수신한 것에 응답하여, 상기 비주얼 뷰 포커스 및 상기 비주얼 디스플레이를 갱신하여 상기 제2 멀티모드 디스플레이 요소를 상기 비주얼 뷰 포커스로서 표시하도록 적응된 시스템. - 제16항에 있어서, 상기 클라이언트 장치는, 셀룰러 전화기, 무선 장치(radio), 페이저, 개인 휴대용 정보 단말기, 개인용 네비게이션 장치, 모바일 컴퓨터 시스템, 차량용 컴퓨터 시스템, 항공기용 컴퓨터 시스템, 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 데스크탑 컴퓨터, 및 컴퓨터에서 구현된 보이스 오버 인터넷 프로토콜(VoIP) 전화기를 포함하는 일군의 장치들로부터 선택된 하나의 장치인 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/967,356 | 2007-12-31 | ||
US11/967,356 US8370160B2 (en) | 2007-12-31 | 2007-12-31 | Methods and apparatus for implementing distributed multi-modal applications |
PCT/US2008/086953 WO2009088665A2 (en) | 2007-12-31 | 2008-12-16 | Methods and apparatus for implementing distributed multi-modal applications |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100109943A true KR20100109943A (ko) | 2010-10-11 |
KR101233039B1 KR101233039B1 (ko) | 2013-02-13 |
Family
ID=40799545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107017167A KR101233039B1 (ko) | 2007-12-31 | 2008-12-16 | 분산형 멀티모드 애플리케이션을 구현하기 위한 방법 및 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8370160B2 (ko) |
EP (1) | EP2243095B1 (ko) |
KR (1) | KR101233039B1 (ko) |
CN (1) | CN101911064B (ko) |
RU (1) | RU2494444C2 (ko) |
WO (1) | WO2009088665A2 (ko) |
Families Citing this family (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7895599B2 (en) * | 2007-05-23 | 2011-02-22 | Sap Ag | User interface independent remote interface data loader |
CN102027721B (zh) | 2008-04-02 | 2015-05-13 | 特维里奥公司 | 处理电话会话的系统和方法 |
US8837465B2 (en) | 2008-04-02 | 2014-09-16 | Twilio, Inc. | System and method for processing telephony sessions |
US8296148B1 (en) * | 2008-06-13 | 2012-10-23 | West Corporation | Mobile voice self service device and method thereof |
US8311837B1 (en) * | 2008-06-13 | 2012-11-13 | West Corporation | Mobile voice self service system |
WO2010040010A1 (en) | 2008-10-01 | 2010-04-08 | Twilio Inc | Telephony web event system and method |
US11487347B1 (en) * | 2008-11-10 | 2022-11-01 | Verint Americas Inc. | Enhanced multi-modal communication |
EP2211336B1 (en) * | 2009-01-23 | 2014-10-08 | Harman Becker Automotive Systems GmbH | Improved speech input using navigation information |
CA2789942C (en) | 2009-03-02 | 2017-05-23 | Jeffrey Lawson | Method and system for a multitenancy telephone network |
US8509415B2 (en) | 2009-03-02 | 2013-08-13 | Twilio, Inc. | Method and system for a multitenancy telephony network |
WO2011004000A2 (en) * | 2009-07-10 | 2011-01-13 | Dialogs Unlimited B.V. | Information distributing system with feedback mechanism |
US9210275B2 (en) | 2009-10-07 | 2015-12-08 | Twilio, Inc. | System and method for running a multi-module telephony application |
US8582737B2 (en) | 2009-10-07 | 2013-11-12 | Twilio, Inc. | System and method for running a multi-module telephony application |
CN102804700B (zh) * | 2010-01-19 | 2015-04-15 | 特维里奥公司 | 用于保持通话会话状态的方法和系统 |
US9590849B2 (en) | 2010-06-23 | 2017-03-07 | Twilio, Inc. | System and method for managing a computing cluster |
US9338064B2 (en) | 2010-06-23 | 2016-05-10 | Twilio, Inc. | System and method for managing a computing cluster |
US8416923B2 (en) | 2010-06-23 | 2013-04-09 | Twilio, Inc. | Method for providing clean endpoint addresses |
US20120208495A1 (en) | 2010-06-23 | 2012-08-16 | Twilio, Inc. | System and method for monitoring account usage on a platform |
US9459926B2 (en) | 2010-06-23 | 2016-10-04 | Twilio, Inc. | System and method for managing a computing cluster |
US9459925B2 (en) | 2010-06-23 | 2016-10-04 | Twilio, Inc. | System and method for managing a computing cluster |
US8838707B2 (en) | 2010-06-25 | 2014-09-16 | Twilio, Inc. | System and method for enabling real-time eventing |
US8731939B1 (en) | 2010-08-06 | 2014-05-20 | Google Inc. | Routing queries based on carrier phrase registration |
US8700782B2 (en) * | 2010-08-18 | 2014-04-15 | Microsoft Corporation | Directing modalities over different networks in multimodal communications |
US8682661B1 (en) | 2010-08-31 | 2014-03-25 | Google Inc. | Robust speech recognition |
US8649268B2 (en) | 2011-02-04 | 2014-02-11 | Twilio, Inc. | Method for processing telephony sessions of a network |
US20120280915A1 (en) * | 2011-05-02 | 2012-11-08 | Nokia Corporation | Method and apparatus for facilitating interacting with a multimodal user interface |
US20140044123A1 (en) | 2011-05-23 | 2014-02-13 | Twilio, Inc. | System and method for real time communicating with a client application |
US9398622B2 (en) | 2011-05-23 | 2016-07-19 | Twilio, Inc. | System and method for connecting a communication to a client |
US9648006B2 (en) | 2011-05-23 | 2017-05-09 | Twilio, Inc. | System and method for communicating with a client application |
US8223088B1 (en) * | 2011-06-09 | 2012-07-17 | Google Inc. | Multimode input field for a head-mounted display |
KR101292487B1 (ko) * | 2011-08-25 | 2013-08-01 | 주식회사 팬택 | 컨텐츠 공유 단말기 |
US10182147B2 (en) | 2011-09-21 | 2019-01-15 | Twilio Inc. | System and method for determining and communicating presence information |
US9336500B2 (en) | 2011-09-21 | 2016-05-10 | Twilio, Inc. | System and method for authorizing and connecting application developers and users |
US9495227B2 (en) | 2012-02-10 | 2016-11-15 | Twilio, Inc. | System and method for managing concurrent events |
US9310888B2 (en) | 2012-03-16 | 2016-04-12 | Microsoft Technology Licensing, Llc | Multimodal layout and rendering |
US9037472B2 (en) * | 2012-04-20 | 2015-05-19 | Nuance Communications, Inc. | Method and system for facilitating communications for a user transaction |
US9240941B2 (en) | 2012-05-09 | 2016-01-19 | Twilio, Inc. | System and method for managing media in a distributed communication network |
US9602586B2 (en) | 2012-05-09 | 2017-03-21 | Twilio, Inc. | System and method for managing media in a distributed communication network |
US20130304928A1 (en) | 2012-05-09 | 2013-11-14 | Twilio, Inc. | System and method for managing latency in a distributed telephony network |
US9247062B2 (en) | 2012-06-19 | 2016-01-26 | Twilio, Inc. | System and method for queuing a communication session |
US9536528B2 (en) | 2012-07-03 | 2017-01-03 | Google Inc. | Determining hotword suitability |
US8737962B2 (en) | 2012-07-24 | 2014-05-27 | Twilio, Inc. | Method and system for preventing illicit use of a telephony platform |
US8738051B2 (en) | 2012-07-26 | 2014-05-27 | Twilio, Inc. | Method and system for controlling message routing |
US8948356B2 (en) | 2012-10-15 | 2015-02-03 | Twilio, Inc. | System and method for routing communications |
US8938053B2 (en) | 2012-10-15 | 2015-01-20 | Twilio, Inc. | System and method for triggering on platform usage |
RU2530267C2 (ru) * | 2012-11-28 | 2014-10-10 | Общество с ограниченной ответственностью "Спиктуит" | Способ коммуникации пользователя с информационной диалоговой системой |
US9253254B2 (en) | 2013-01-14 | 2016-02-02 | Twilio, Inc. | System and method for offering a multi-partner delegated platform |
US9282124B2 (en) | 2013-03-14 | 2016-03-08 | Twilio, Inc. | System and method for integrating session initiation protocol communication in a telecommunications platform |
US9001666B2 (en) | 2013-03-15 | 2015-04-07 | Twilio, Inc. | System and method for improving routing in a distributed communication platform |
US9338280B2 (en) | 2013-06-19 | 2016-05-10 | Twilio, Inc. | System and method for managing telephony endpoint inventory |
US9225840B2 (en) | 2013-06-19 | 2015-12-29 | Twilio, Inc. | System and method for providing a communication endpoint information service |
US9160696B2 (en) | 2013-06-19 | 2015-10-13 | Twilio, Inc. | System for transforming media resource into destination device compatible messaging format |
US9483328B2 (en) | 2013-07-19 | 2016-11-01 | Twilio, Inc. | System and method for delivering application content |
US9137127B2 (en) | 2013-09-17 | 2015-09-15 | Twilio, Inc. | System and method for providing communication platform metadata |
US9338018B2 (en) | 2013-09-17 | 2016-05-10 | Twilio, Inc. | System and method for pricing communication of a telecommunication platform |
US9274858B2 (en) | 2013-09-17 | 2016-03-01 | Twilio, Inc. | System and method for tagging and tracking events of an application platform |
US9553799B2 (en) | 2013-11-12 | 2017-01-24 | Twilio, Inc. | System and method for client communication in a distributed telephony network |
US9325624B2 (en) | 2013-11-12 | 2016-04-26 | Twilio, Inc. | System and method for enabling dynamic multi-modal communication |
CN104702576B (zh) * | 2013-12-09 | 2018-02-09 | 腾讯科技(深圳)有限公司 | 语音传输方法、装置和语音服务系统 |
US9344573B2 (en) | 2014-03-14 | 2016-05-17 | Twilio, Inc. | System and method for a work distribution service |
US9226217B2 (en) | 2014-04-17 | 2015-12-29 | Twilio, Inc. | System and method for enabling multi-modal communication |
US9633547B2 (en) | 2014-05-20 | 2017-04-25 | Ooma, Inc. | Security monitoring and control |
US10553098B2 (en) | 2014-05-20 | 2020-02-04 | Ooma, Inc. | Appliance device integration with alarm systems |
US9774687B2 (en) | 2014-07-07 | 2017-09-26 | Twilio, Inc. | System and method for managing media and signaling in a communication platform |
US9516101B2 (en) | 2014-07-07 | 2016-12-06 | Twilio, Inc. | System and method for collecting feedback in a multi-tenant communication platform |
US9246694B1 (en) | 2014-07-07 | 2016-01-26 | Twilio, Inc. | System and method for managing conferencing in a distributed communication network |
US9251371B2 (en) | 2014-07-07 | 2016-02-02 | Twilio, Inc. | Method and system for applying data retention policies in a computing platform |
US11330100B2 (en) * | 2014-07-09 | 2022-05-10 | Ooma, Inc. | Server based intelligent personal assistant services |
WO2016065080A1 (en) | 2014-10-21 | 2016-04-28 | Twilio, Inc. | System and method for providing a miro-services communication platform |
WO2016069991A1 (en) * | 2014-10-31 | 2016-05-06 | Orion Labs | Group communication device management |
US10262660B2 (en) | 2015-01-08 | 2019-04-16 | Hand Held Products, Inc. | Voice mode asset retrieval |
US10402038B2 (en) | 2015-01-08 | 2019-09-03 | Hand Held Products, Inc. | Stack handling using multiple primary user interfaces |
US10061565B2 (en) | 2015-01-08 | 2018-08-28 | Hand Held Products, Inc. | Application development using mutliple primary user interfaces |
US11081087B2 (en) * | 2015-01-08 | 2021-08-03 | Hand Held Products, Inc. | Multiple primary user interfaces |
US9477975B2 (en) | 2015-02-03 | 2016-10-25 | Twilio, Inc. | System and method for a media intelligence platform |
CN104683456B (zh) * | 2015-02-13 | 2017-06-23 | 腾讯科技(深圳)有限公司 | 业务处理方法、服务器及终端 |
US9472196B1 (en) | 2015-04-22 | 2016-10-18 | Google Inc. | Developer voice actions system |
US10009286B2 (en) | 2015-05-08 | 2018-06-26 | Ooma, Inc. | Communications hub |
US9948703B2 (en) | 2015-05-14 | 2018-04-17 | Twilio, Inc. | System and method for signaling through data storage |
US10419891B2 (en) | 2015-05-14 | 2019-09-17 | Twilio, Inc. | System and method for communicating through multiple endpoints |
US10659349B2 (en) | 2016-02-04 | 2020-05-19 | Twilio Inc. | Systems and methods for providing secure network exchanged for a multitenant virtual private cloud |
US9740751B1 (en) | 2016-02-18 | 2017-08-22 | Google Inc. | Application keywords |
US9922648B2 (en) | 2016-03-01 | 2018-03-20 | Google Llc | Developer voice actions system |
US10063713B2 (en) | 2016-05-23 | 2018-08-28 | Twilio Inc. | System and method for programmatic device connectivity |
US10686902B2 (en) | 2016-05-23 | 2020-06-16 | Twilio Inc. | System and method for a multi-channel notification service |
US10339934B2 (en) | 2016-06-27 | 2019-07-02 | Google Llc | Asynchronous processing of user requests |
US9691384B1 (en) | 2016-08-19 | 2017-06-27 | Google Inc. | Voice action biasing system |
CN106970717A (zh) * | 2017-03-24 | 2017-07-21 | 海马云(天津)信息技术有限公司 | 服务器文本信息输入的方法和装置 |
CN107146623B (zh) * | 2017-04-07 | 2021-03-16 | 百度在线网络技术(北京)有限公司 | 基于人工智能的语音识别方法、装置和系统 |
KR102060775B1 (ko) * | 2017-06-27 | 2019-12-30 | 삼성전자주식회사 | 음성 입력에 대응하는 동작을 수행하는 전자 장치 |
US10708268B2 (en) * | 2017-07-31 | 2020-07-07 | Airwatch, Llc | Managing voice applications within a digital workspace |
KR102460491B1 (ko) * | 2017-12-06 | 2022-10-31 | 삼성전자주식회사 | 전자 장치 및 그의 제어 방법 |
US12125486B2 (en) | 2018-05-07 | 2024-10-22 | Google Llc | Multi-modal interaction between users, automated assistants, and other computing services |
US10984786B2 (en) * | 2018-05-07 | 2021-04-20 | Google Llc | Multi-modal interaction between users, automated assistants, and other computing services |
US11436215B2 (en) | 2018-08-20 | 2022-09-06 | Samsung Electronics Co., Ltd. | Server and control method thereof |
CN117971154A (zh) * | 2018-09-04 | 2024-05-03 | 谷歌有限责任公司 | 多模态响应 |
US10949228B1 (en) * | 2018-09-28 | 2021-03-16 | United Services Automobile Association (Usaa) | System and method for controlling the content of a device in response to an audible request |
RU2696221C1 (ru) * | 2018-11-06 | 2019-07-31 | Федеральное государственное казенное военное образовательное учреждение высшего образования Академия Федеральной службы охраны Российской Федерации | Способ передачи многомодальной информации на критически важных объектах |
RU2688248C1 (ru) * | 2019-03-07 | 2019-05-21 | Сергей Иванович Тарасов | Система и способ передачи запросов пользователям |
CN109884907B (zh) * | 2019-03-11 | 2021-07-20 | 广东美的制冷设备有限公司 | 家电设备状态播报方法、装置及设备 |
CN112073777B (zh) * | 2019-06-10 | 2022-06-28 | 海信视像科技股份有限公司 | 一种语音交互方法及显示设备 |
CN112073776B (zh) * | 2019-06-10 | 2022-06-24 | 海信视像科技股份有限公司 | 语音控制方法及显示设备 |
CN111966931A (zh) * | 2020-08-23 | 2020-11-20 | 云知声智能科技股份有限公司 | 控件的渲染方法及装置 |
US11789696B2 (en) * | 2021-03-23 | 2023-10-17 | Microsoft Technology Licensing, Llc | Voice assistant-enabled client application with user view context |
US12050841B2 (en) * | 2021-03-23 | 2024-07-30 | Microsoft Technology Licensing, Llc | Voice assistant-enabled client application with user view context |
US11972095B2 (en) | 2021-03-23 | 2024-04-30 | Microsoft Technology Licensing, Llc | Voice assistant-enabled client application with user view context and multi-modal input support |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269336B1 (en) * | 1998-07-24 | 2001-07-31 | Motorola, Inc. | Voice browser for interactive services and methods thereof |
US6185535B1 (en) * | 1998-10-16 | 2001-02-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Voice control of a user interface to service applications |
US6633846B1 (en) * | 1999-11-12 | 2003-10-14 | Phoenix Solutions, Inc. | Distributed realtime speech recognition system |
US7085719B1 (en) | 2000-07-13 | 2006-08-01 | Rockwell Electronics Commerce Technologies Llc | Voice filter for normalizing an agents response by altering emotional and word content |
US7409349B2 (en) * | 2001-05-04 | 2008-08-05 | Microsoft Corporation | Servers for web enabled speech recognition |
US6785654B2 (en) * | 2001-11-30 | 2004-08-31 | Dictaphone Corporation | Distributed speech recognition system with speech recognition engines offering multiple functionalities |
AU2003225577A1 (en) | 2002-02-18 | 2003-09-09 | Kirusa, Inc. | A technique for synchronizing visual and voice browsers to enable multi-modal browsing |
SE0202058D0 (sv) | 2002-07-02 | 2002-07-02 | Ericsson Telefon Ab L M | Voice browsing architecture based on adaptive keyword spotting |
US20040128136A1 (en) * | 2002-09-20 | 2004-07-01 | Irani Pourang Polad | Internet voice browser |
US7016845B2 (en) * | 2002-11-08 | 2006-03-21 | Oracle International Corporation | Method and apparatus for providing speech recognition resolution on an application server |
US7003464B2 (en) | 2003-01-09 | 2006-02-21 | Motorola, Inc. | Dialog recognition and control in a voice browser |
US7254542B2 (en) * | 2003-03-31 | 2007-08-07 | International Business Machines Corporation | Portal data passing through non-persistent browser cookies |
EP1464920B1 (de) * | 2003-04-03 | 2007-07-25 | Erwin Pristner | Vorrichtung zum Erfassen, Bestimmen und Dokumentieren von Schäden, insbesondere durch plötzliche Ereignisse verursachte Deformationen an lackierten Oberflächen |
US7269562B2 (en) * | 2003-04-29 | 2007-09-11 | Intervoice Limited Partnership | Web service call flow speech components |
US7200559B2 (en) * | 2003-05-29 | 2007-04-03 | Microsoft Corporation | Semantic object synchronous understanding implemented with speech application language tags |
DE602004008887T2 (de) * | 2004-05-18 | 2008-01-17 | Alcatel Lucent | Verfahren und Server zur Bereitstellung eines multi-modalen Dialogs |
US20060036770A1 (en) * | 2004-07-30 | 2006-02-16 | International Business Machines Corporation | System for factoring synchronization strategies from multimodal programming model runtimes |
US7751431B2 (en) | 2004-12-30 | 2010-07-06 | Motorola, Inc. | Method and apparatus for distributed speech applications |
US20060235694A1 (en) | 2005-04-14 | 2006-10-19 | International Business Machines Corporation | Integrating conversational speech into Web browsers |
US8429655B2 (en) * | 2005-04-29 | 2013-04-23 | Microsoft Corporation | System and method for asynchronous processing in page lifecycle |
US7809575B2 (en) * | 2007-02-27 | 2010-10-05 | Nuance Communications, Inc. | Enabling global grammars for a particular multimodal application |
US7945851B2 (en) * | 2007-03-14 | 2011-05-17 | Nuance Communications, Inc. | Enabling dynamic voiceXML in an X+V page of a multimodal application |
-
2007
- 2007-12-31 US US11/967,356 patent/US8370160B2/en active Active
-
2008
- 2008-12-16 EP EP08869336.1A patent/EP2243095B1/en active Active
- 2008-12-16 WO PCT/US2008/086953 patent/WO2009088665A2/en active Application Filing
- 2008-12-16 CN CN200880123608.6A patent/CN101911064B/zh active Active
- 2008-12-16 KR KR1020107017167A patent/KR101233039B1/ko active IP Right Grant
- 2008-12-16 RU RU2010132214/08A patent/RU2494444C2/ru active
Also Published As
Publication number | Publication date |
---|---|
WO2009088665A2 (en) | 2009-07-16 |
CN101911064A (zh) | 2010-12-08 |
CN101911064B (zh) | 2017-04-05 |
US8370160B2 (en) | 2013-02-05 |
US20090171659A1 (en) | 2009-07-02 |
EP2243095A2 (en) | 2010-10-27 |
RU2494444C2 (ru) | 2013-09-27 |
WO2009088665A3 (en) | 2010-04-15 |
RU2010132214A (ru) | 2012-02-10 |
KR101233039B1 (ko) | 2013-02-13 |
EP2243095B1 (en) | 2018-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101233039B1 (ko) | 분산형 멀티모드 애플리케이션을 구현하기 위한 방법 및 장치 | |
KR101237622B1 (ko) | 분산된 멀티모드 애플리케이션을 구현하기 위한 방법 및 장치 | |
US7272564B2 (en) | Method and apparatus for multimodal communication with user control of delivery modality | |
US9946511B2 (en) | Method for user training of information dialogue system | |
CN107112016B (zh) | 多模态状态循环 | |
US11749276B2 (en) | Voice assistant-enabled web application or web page | |
US7680816B2 (en) | Method, system, and computer program product providing for multimodal content management | |
CA2467220C (en) | Semantic object synchronous understanding implemented with speech application language tags | |
RU2355045C2 (ru) | Последовательный мультимодальный ввод | |
US20140358516A1 (en) | Real-time, bi-directional translation | |
EP1482479A1 (en) | Semantic object synchronous understanding for highly interactive interface | |
JP2015011170A (ja) | ローカルな音声認識を行なう音声認識クライアント装置 | |
US20050132023A1 (en) | Voice access through web enabled portlets | |
CN113168336A (zh) | 基于实验参数适配功能电话的客户端应用 | |
US20210043191A1 (en) | Text independent speaker recognition | |
US20190347067A1 (en) | User interface interaction channel | |
Rössler et al. | Multimodal interaction for mobile environments | |
US11722572B2 (en) | Communication platform shifting for voice-enabled device | |
JP2009145435A (ja) | 複数の機器に使用される不特定話者音声認識エンジンをインターネットを介して個別のユーザに提供するシステム及び方法 | |
Hosn et al. | Multi-modal e-Business | |
JP2004246865A (ja) | 音声応答ウェブシステム及びその入出力制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160122 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170126 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180126 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20190124 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20200129 Year of fee payment: 8 |