KR20210013193A - 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링 - Google Patents

로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링 Download PDF

Info

Publication number
KR20210013193A
KR20210013193A KR1020207037198A KR20207037198A KR20210013193A KR 20210013193 A KR20210013193 A KR 20210013193A KR 1020207037198 A KR1020207037198 A KR 1020207037198A KR 20207037198 A KR20207037198 A KR 20207037198A KR 20210013193 A KR20210013193 A KR 20210013193A
Authority
KR
South Korea
Prior art keywords
response
text
client device
audio data
mapping
Prior art date
Application number
KR1020207037198A
Other languages
English (en)
Other versions
KR102517387B1 (ko
Inventor
율리 가오
상수 성
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Priority to KR1020237010851A priority Critical patent/KR102611386B1/ko
Publication of KR20210013193A publication Critical patent/KR20210013193A/ko
Application granted granted Critical
Publication of KR102517387B1 publication Critical patent/KR102517387B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • G06F40/295Named entity recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/28Constructional details of speech recognition systems
    • G10L15/30Distributed recognition, e.g. in client-server systems, for mobile phones or network applications

Abstract

본 명세서에 개시된 구현은 클라이언트 장치에 로컬로 저장되는 텍스트-응답 맵을 클라이언트 장치에 의해 생성 및/또는 이용하는 것과 관련된다. 텍스트-응답 맵은 복수의 맵핑들을 포함할 수 있으며, 여기서 각각의 맵핑은 해당 텍스트와 해당 응답 간의 대응하는 직접적인 관계를 정의한다. 맵핑들 각각은 클라이언트 장치에 의해 캡처한 이전 오디오 데이터에서 이전에 생성된 해당 텍스트에 기초하고 그리고 이전 오디오 데이터 및 해당 텍스트 중 적어도 하나를 원격 시스템으로 송신하는 것에 응답하여 원격 시스템으로부터 이전에 수신된 해당 응답에 기초하여 텍스트-응답 맵에 정의된다.

Description

로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링
본 명세서는 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링에 관한 것이다.
음성 기반 사용자 인터페이스는 컴퓨터 및 기타 전자 장치의 제어에 점점 더 많이 사용되고 있다. 음성 기반 사용자 인터페이스의 특히 유용한 응용 분야 중 하나는 휴대폰, 시계, 태블릿 컴퓨터, 헤드 장착형 장치, 가상 또는 증강 현실 장치 등과 같은 휴대용 전자 장치를 사용하는 것이다. 또 다른 유용한 응용 분야는 내비게이션 및 오디오 기능을 통합하는 자동차 시스템과 같은 차량 전자 시스템이다. 이러한 응용 분야는 일반적으로보다 전통적인 키보드 또는 터치스크린 입력 및/또는 사용자가 운전하거나 걸을 때와 같이 다른 작업에 계속 집중하도록 유도하는 것이 바람직한 상황에서의 사용의 유용성을 제한하는 비전통적인 폼 팩터가 특징이다.
음성 기반 사용자 인터페이스는 간단하고 직접적인 명령만 이해할 수 있는 초기 기초 인터페이스에서 자연어 요청에 응답하고 컨텍스트를 이해하고 사용자와의 대화 또는 대화를 관리할 수 있는보다 정교한 인터페이스로 계속 발전해 왔다. 많은 음성 기반 사용자 인터페이스에는 사람 음성의 오디오 녹음을 텍스트로 변환하는 초기 음성-텍스트 변환과 사용자 요청의 의미를 결정하기 위해 텍스트를 분석하는 의미 분석이 모두 통합되어 있다. 사용자의 녹음된 음성의 결정된 의미에 기반하여 검색을 수행하거나 컴퓨터 또는 기타 전자 장치를 제어하는 것과 같은 작업이 수행될 수 있다.
사용자는 음성 발화를 통해 클라이언트 장치에 질의 및/또는 명령을 제출할 수 있으며, 사용자가 제공되는 데 관심이 있는 정보 및/또는 사용자가 수행되는 데 관심이 있는 동작을 구두로 표시할 수 있다. 일반적으로 음성 발화는 클라이언트 장치의 마이크로폰에 의해 검출되고 오디오 데이터로 캡처된다. 오디오 데이터는 추가 처리를 위해 원격 시스템으로 송신된다. 원격 시스템은 오디오 데이터를 처리하여 적절한 응답을 결정하고 클라이언트 장치가 렌더링하기 위해 응답을 클라이언트 장치로 송신한다.
원격 시스템에 의한 오디오 데이터 처리는 음성-텍스트(STT) 컴포넌트를 사용하여 오디오 데이터를 기반으로 텍스트를 생성하는 것을 포함할 수 있으며, 생성된 텍스트는 오디오 데이터에 의해 캡처된 음성 발화를 반영한다. 처리(프로세싱)는 텍스트의 의미 또는 의도를 결정하기 위한 시도에서 자연어 처리기(NLP) 및/또는 다른 의미론적 처리기를 사용하여 생성된 텍스트를 처리하는 것을 더 포함할 수 있으며 결정된 의미에 기초하여 수행될 동작을 포함할 수 있다. 그 다음 해당 동작을 수행하여 해당 응답을 생성하고 해당 응답을 오디오 데이터가 수신된 클라이언트 장치로 송신할 수 있다.
원격 시스템의 컴포넌트는 오디오 데이터 처리에 상당한 컴퓨팅 리소스를 사용할 수 있으므로 클라이언트 장치 내에서 로컬로 구현할 수 있는 것보다 더 복잡한 음성 인식 및 의미 분석 기능을 구현할 수 있다. 그러나 클라이언트-서버 접근 방식에서는 음성 입력을 처리할 때 클라이언트가 온라인 상태(즉, 원격 시스템과 통신 중)여야한다. 다양한 상황에서 항상 모든 위치에서 지속적인 온라인 연결이 보장되지 않을 수 있으므로 해당 장치가 "오프라인"이되어 온라인 서비스에 연결되지 않을 때마다 클라이언트 장치에서 클라이언트-서버 음성 기반 사용자 인터페이스가 비활성화될 수 있다. 또한 클라이언트-서버 접근 방식은 클라이언트에서 원격 시스템의 컴포넌트로 고 대역폭 오디오 데이터를 송신해야하기 때문에 상당한 대역폭을 소비할 수 있다. 대역폭 소비는 원격 시스템이 많은 클라이언트 장치의 요청을 처리하는 일반적인 상황에서 증폭된다. 또한 클라이언트-서버 접근 방식은 사용자에게 응답을 렌더링할 때 상당한 지연을 나타낼 수 있으며, 이로 인해 음성 기반 사용자-클라이언트 상호 작용이 길어지고 클라이언트 장치의 리소스가 오랜 기간 동안 활용될 수 있다. 클라이언트-서버 접근 방식의 지연은 송신 지연 및/또는 음성-텍스트 처리, 의미론적 처리 및/또는 원격 시스템에 의해 수행되는 응답 생성 지연의 결과일 수 있다. 또한, 클라이언트-서버 접근 방식에서 클라이언트와 서버 간의 메시지 교환은 메시지의 송수신을 위해 상대적으로 상당한 양의 전력 소비를 요구할 수 있다. 이 결과는 특히 상대적으로 제한된 저장 용량을 가진 온 디바이스 배터리에 의해 사용 가능한 전력이 제공되는 클라이언트 장치에서 특히 느낄 수 있다.
본 명세서에 개시된 구현은 클라이언트 장치에 로컬로 저장되는 텍스트-응답 맵을 클라이언트 장치에 의해 생성 및/또는 이용하는 것과 관련된다. 텍스트-응답 맵은 복수의 맵핑들을 포함할 수 있으며, 여기서 맵핑들 각각은 해당 텍스트와 해당 응답 간의 대응하는 직접적인 관계를 정의한다. 맵핑들 각각은 클라이언트 장치에 의해 캡처한 이전 오디오 데이터에서 이전에 생성된 해당 텍스트에 기초하고 그리고 이전 오디오 데이터 및 해당 텍스트 중 적어도 하나를 원격 시스템으로 송신하는 것에 응답하여 원격 시스템으로부터 이전에 수신된 해당 응답에 기초하여 텍스트-응답 맵에 정의된다.
음성 발화가 클라이언트 장치에 의해 검출되면, 클라이언트 장치는 음성 발화에 해당하는 텍스트를 생성하기 위해 로컬 음성-텍스트(voice-to-text)/음성-텍스트(speech-to-text)(STT) 모델을 활용할 수 있다. 클라이언트 장치는 생성된 텍스트가 텍스트-응답 맵의 해당 텍스트와 일치하는지 여부를 결정할 수 있다. 그렇다면, 그리고 선택적으로 하나 이상의 다른 조건이 충족되면(예를 들어, 여기에 설명된 신뢰도 점수에 기반한 조건(들)), 클라이언트 장치는 해당 맵핑에 의해 정의 된대로 해당 텍스트와 직접적인 관계가 있는 응답을 선택하기 위해 텍스트-응답 맵의 해당 맵핑을 사용할 수 있다. 클라이언트 장치는 클라이언트 장치의 하나 이상의 출력 장치(예: 스피커 및/또는 디스플레이)를 통해 로컬 메모리로부터 응답을 즉시 렌더링할 수 있다. 음성 발화에 응답하여 렌더링되고, 응답을 렌더링하는 것은 응답 텍스트, 응답 그래픽, 응답 오디오 데이터(또는 로컬에 저장된 TTS(text-to-speech) 프로세서를 사용하여 응답에서 변환된 오디오 데이터) 및/또는 기타 콘텐츠를 렌더링하는 것을 포함활 수 있다. 응답은 추가적으로 또는 대안적으로 주변 장치(들)를 제어하기 위해 하나 이상의 주변 장치로 송신된(예를 들어, WiFi 및/또는 블루투스를 통해) 명령과 같이 클라이언트 장치에 의해 송신될 명령을 포함할 수 있다. 아래에 설명된대로, 로컬 보이스(음성)-텍스트/음성(스피치)-텍스트(STT)에 의해 생성된 텍스트가 텍스트-응답 맵의 해당 텍스트와 일치한다고 결정한 경우, 응답은 클라이언트 장치가 검출된 음성 발화를 나타내는 데이터를 원격 시스템에 전송할 필요없이 클라이언트 장치에 의해 제공될 수 있다.
이러한 방식과 다른 방식으로, 클라이언트 장치는 텍스트의 의미 또는 의도를 결정하기 위해 텍스트의 의미론적 처리 및 결정된 의미 또는 의도에 기반한 응답 생성을 유도하는 로컬 및/또는 원격 리소스 집약적 및 대기시간의 성능을 필요로하지 않고 및/또는 그 성능을 기다리지 않고 응답을 렌더링할 수 있다. 따라서 생성된 텍스트가 텍스트-응답 맵의 해당 텍스트 중 하나와 일치하면, 텍스트와 직접적인 관계가 있는 응답(텍스트-응답 맵의 해당 맵핑에 의해 정의됨)은 감소된 대기시간 및/또는 감소된 리소스 소비로 렌더링될 수 있다. 더욱이, 다양한 상황에서, 응답은 (음성 발화를 캡처하는) 오디오 데이터 또는 오디오 데이터를 기반으로 생성된 텍스트의 원격 시스템으로 송신하는 대역폭 소모없이 렌더링될 수 있다. 이는 원격 시스템으로/원격 시스템으로부터의 전력 집약적 송신 및 메시지 수신이 감소됨에 따라 클라이언트 장치의 배터리 수명을 더욱 향상시키거나, 그렇지 않으면 클라이언트 장치에서 다른 작업을 위한 전력 리소스를 확보할 수 있다.
일부 구현에서, 클라이언트 장치가 사용자의 음성 발화의 오디오 데이터를 캡처하고 오디오 데이터를 처리하여 텍스트를 생성하는 단계를 포함하는 방법이 제공된다. 이러한 구현에서 STT 처리(프로세싱)는 클라이언트 장치에서 로컬로 수행되며 오디오 데이터를 클라우드에 제출할 필요가 없다. 다음으로 응답에 맵핑된 텍스트를 포함하는 텍스트-응답 맵핑에 액세스한다. 이 맵핑은 오디오 데이터가 이전에 제출되었을 때 원격 시스템에서 수신된 응답에 맵핑된 사용자의 이전 음성 발화의 오디오 데이터에서 생성된 이전 텍스트를 기반으로 구성된다. 그 다음 클라이언트 장치는 텍스트-응답 맵핑에 상기 생성된 텍스트에 대한 텍스트 맵핑이 포함되는지 여부를 결정한다. 텍스트-응답 맵핑에 텍스트와 일치하는 텍스트 맵핑이 포함되어 있다는 결정에 대한 응답으로, 해당 텍스트 맵핑에 대한 맵핑된 응답이 선택되고 클라이언트 장치에 의해 렌더링된다.
텍스트가 맵핑에 포함되지 않은 경우, 오디오 데이터(및/또는 오디오 데이터에 해당하는 클라이언트-장치 생성 텍스트)는 추가 처리를 위해 원격 시스템에 제출된다. STT 및/또는 NLP는 음성 발화에 해당하는 동작(액션)을 결정하기 위해 원격 시스템에 의해 수행되고, 생성된 동작(액션)은 응답을 생성하는 데 사용되며, 응답은 클라이언트 장치에 제공된다. 그 다음 클라이언트 장치는 응답을 렌더링하고 생성된 텍스트를 응답과 함께 저장할 수 있다. 사용자가 이후에 동일한 음성 발화를 제출하면, 클라이언트 장치는 로컬로 오디오 데이터를 처리하여 해당 텍스트를 생성하고, 텍스트가 맵핑에 포함되어 있는지 확인(체크)하고, NLP 처리 요구없이 및 서버에 제출하지 않고도 맵핑된 응답을 렌더링할 수 있다. 따라서 클라이언트 장치의 로컬 맵핑은 계산 시간을 절약할뿐만 아니라 상기 방법은 맵핑에 이미 텍스트가 포함된 경우 오프라인으로 수행될 수 있다.
일부 경우에는 응답이 동적이며 동일한 음성 발화에 대해 다른 응답을 초래할 수 있다. 예를 들어, "지금 몇 시지?"라는 음성 발화는 제출될 때마다 달라지는 동적 쿼리(질의)이다. 동적 쿼리의 다른 예로는 날씨, 사용자 위치와 관련된 쿼리 및 시간에 민감한 기타 쿼리가 있다. 반면에 일부 쿼리는 정적일 수 있으며 드물게 소정의 발화에 대해 다른 응답을 생성한다. 예를 들어, "미국의 수도는 어디입니까?"라는 발화가 제출된 시기에 관계없이 항상 동일한 응답을 제공한다. 일부 경우에는 응답이 소정의 시간 동안 정적이 되었다가 만료될 수 있다. 예를 들어 "오늘 날씨가 어때?"는 하루 동안 정적(고정)인 상태로 유지되고 자정과 같이 지정된 시간에 만료될 가능성이 높다.
일부 구현에서, 클라이언트 장치에 로컬로 저장된 텍스트에 대한 맵핑된 응답을 최신 상태로 유지하는 것을 돕기 위해, 클라이언트 장치는 오디오 데이터 또는 오디오 데이터에 대응하는 클라이언트-장치 생성(클라이언트-장치가 생성한) 텍스트와 같은 음성 발화를 나타내는 다른 데이터를 텍스트가 맵핑에서 식별되는 경우에도 원격 시스템에 제출할 수 있다. 클라이언트 장치는 맵핑된 응답을 제공할 수 있으며, 원격 시스템에서 응답이 수신되면 맵핑된 응답으로 수신된 응답을 확인할 수 있다. 맵핑된 응답이 수신된 응답과 일치하면 클라이언트 장치는 응답이 정적임을 반영하도록 맵핑을 업데이트할 수 있다. 예를 들어, 각 텍스트 맵핑과 관련된 신뢰도 점수는 맵핑에 저장된 것과 동일한 응답이 수신되었음을 반영하도록 업데이트될 수 있다. 다른 응답이 수신된 경우, 저장된 응답과 수신된 응답이 일치하지 않음을 반영하기 위해 신뢰도 점수가 업데이트될 수 있다. 예를 들어, 일부 경우에서, 응답이 일치하지 않으면, 텍스트 맵핑을 제거하여 이후에 사용자에게 스테일 응답(stale response)이 제공되지 않도록 할 수 있다. 경우에 따라 텍스트 맵핑을 제거하지 않고 맵핑이 스테일(stale)인 것으로 플래그(flag)될 수 있다. 일부 경우에, 맵핑과 관련된 신뢰도 점수가 임계값을 만족하는 경우에만 맵핑된 응답이 제공될 수 있다. 예를 들어, 서버 응답은 맵핑된 응답에 대한 신뢰도 점수가 오디오 데이터 또는 음성 발화를 나타내는 다른 데이터를 원격 시스템에 제공하는 대신 맵핑된 응답이 제공되는 레벨에 도달하기 전에 필요한 횟수(각 서버 응답이 동일함)만큼 제공될 수 있다. 선택적으로, 신뢰도 점수가 임계값을 만족할 때 클라이언트 장치는 오디오 데이터 또는 음성 발화를 나타내는 다른 데이터를 원격 시스템에 자동으로 송신하지 않을 수 있다. 대안적으로, 클라이언트 장치가 오디오 데이터 또는 음성 발화를 나타내는 다른 데이터를 원격 시스템으로 송신하는 구현에서, 클라이언트 장치는 원격 시스템으로부터 응답을 수신하기 전에 로컬 메모리에서 맵핑된 응답을 제공할 수 있다.
일부 구현에서, 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법이 제공되고, 방법은 클라이언트 장치의 적어도 하나의 마이크로폰을 통해 사용자의 음성 발화를 캡처하는 오디오 데이터를 캡처하는 단계를 포함한다. 방법은 음성 발화에 대응하는 현재 텍스트를 생성하기 위해 오디오 데이터를 처리하는 단계를 더 포함한다. 현재 텍스트를 생성하기 위해 오디오 데이터를 처리하는 것은 클라이언트 장치에 로컬로 저장된 음성-텍스트(voice-to-text) 모델을 사용한다. 방법은 클라이언트 장치에 로컬로 저장된 텍스트-응답 맵에 액세스하는 단계를 더 포함한다. 텍스트-응답 맵은 복수의 맵핑들을 포함하며, 맵핑들 각각은 클라이언트 장치에 의해 캡처한 이전 오디오 데이터에서 이전에 생성된 해당 텍스트에 기초하고 그리고 이전 오디오 데이터 및 해당 텍스트 중 적어도 하나를 원격 시스템으로 송신하는 것에 응답하여 원격 시스템으로부터 이전에 수신된 해당 응답에 기초하여 해당 텍스트와 해당 응답 간의 해당 직접적인 관계를 정의한다. 방법은 텍스트-응답 맵의 해당 텍스트가 현재 텍스트와 일치하는지 여부를 결정하는 단계를 더 포함한다. 이 방법은 텍스트-응답 맵의 해당 텍스트 중 소정의 텍스트가 현재 텍스트와 일치한다는 결정에 응답하여: 텍스트-응답 맵의 해당 응답 중 소정의 응답을 선택하는 단계; 그리고 소정의 응답이 클라이언트 장치와 관련된 하나 이상의 사용자 인터페이스 출력 장치를 통해 렌더링되도록 하는 단계를 더 포함한다. 소정의 응답을 선택하는 단계는 맵핑들 중에서 소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑을 포함하는 텍스트-응답 맵을 기반으로 한다.
이러한 기술 및 기타 구현에는 다음 기능 중 하나 이상이 포함될 수 있다.
일부 구현에서, 방법은, 오디오 데이터 또는 현재 텍스트를 원격 시스템으로 송신하는 단계; 오디오 데이터 또는 현재 텍스트를 송신하는 것에 응답하여 원격 시스템으로부터 음성 발화에 응답하는 서버 응답을 수신하는 단계; 서버 응답을 소정의 응답과 비교하는 단계; 그리고 상기 비교를 기반으로 텍스트-응답 맵을 업데이트하는 단계를 더 포함한다. 이러한 구현의 일부 버전에서, 상기 서버 응답을 수신하는 단계는 상기 소정의 응답의 적어도 일부가 상기 하나 이상의 사용자 인터페이스 출력 장치를 통해 렌더링된 후에 발생한다. 이러한 구현의 일부 추가 또는 대체 버전에서, 서버 응답을 소정의 응답과 비교하는 단계는 서버 응답이 소정의 응답과 다르다는 것을 나타낸다. 이러한 추가 또는 대체 버전 중 일부에서는, 텍스트-응답 맵을 업데이트하는 단계는, 서버 응답이 소정의 응답과 다르다는 것을 나타내는 비교를 기반으로: 소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑을 업데이트하여 소정의 텍스트와 직접적인 관계를 갖는 것으로 서버 응답을 정의하는 단계를 포함한다. 이러한 추가 또는 대체 버전 중 일부에서, 텍스트-응답 맵을 업데이트하는 단계는, 서버 응답이 소정의 응답과 다르다는 것을 나타내는 비교를 기반으로, 텍스트-응답 맵에서, 소정의 텍스트와 직접적인 관계가 있는 것으로 소정의 응답을 정의하는 맵핑을 제거하는 단계를 포함한다. 이러한 추가 또는 대체 버전 중 일부에서, 상기 텍스트-응답 맵을 업데이트하는 단계는, 서버 응답이 소정의 응답과 다르다는 것을 나타내는 비교를 기반으로, 소정의 텍스트가 응답에 맵핑되는 것을 방지하는 데이터를 텍스트-응답 맵에 저장하는 단계를 포함한다.
텍스트-응답 맵을 업데이트하는 것을 포함하는 일부 구현에서, 상기 텍스트-응답 맵을 업데이트하는 단계는 소정의 텍스트와의 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑과 관련된 신뢰도 점수를 조정하는 단계를 포함한다. 이러한 구현의 일부 버전에서, 소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑과 관련된 신뢰도 점수를 조정하는 단계는, 상기 비교가 소정의 응답이 서버 응답과 일치함을 나타내는 경우 신뢰도를 더 잘 나타내도록 신뢰도 점수를 조정하는 단계를 포함한다. 이러한 구현의 일부 추가 또는 대안 버전에서, 소정의 응답을 선택하는 단계는 임계값을 만족하는 맵핑과 관련된 신뢰도 점수에 더 기초한다.
일부 구현에서, 방법은, 클라이언트 장치의 적어도 하나의 마이크로폰을 통해 추가 음성 발화를 캡처하는 추가 오디오 데이터를 캡처하는 단계; 추가 음성 발화에 대응하는 추가 텍스트를 생성하기 위해 클라이언트 장치에 로컬로 저장된 음성-텍스트 모델을 이용하여 추가 오디오 데이터를 처리하는 단계; 텍스트-응답 맵의 해당 텍스트가 추가 텍스트와 일치하는지 여부를 결정하는 단계; 그리고 텍스트-응답 맵의 해당 텍스트가 추가 텍스트와 일치하지 않는다는 결정에 대한 응답으로: 추가 텍스트 및 추가 오디오 데이터 중 적어도 하나를 서버 시스템으로 송신하는 단계; 추가 텍스트 및 추가 오디오 데이터 중 적어도 하나를 송신하는 것에 응답하여, 추가 응답을 서버 시스템으로부터 수신하는 단계; 그리고 추가 응답이 클라이언트 장치와 관련된 하나 이상의 사용자 인터페이스 출력 장치를 통해 렌더링되도록 하는 단계를 더 포함한다. 이러한 구현 중 일부에서, 방법은, 추가 응답과 함께 서버 시스템으로부터 서버 응답이 추가 텍스트에 대한 정적(static) 응답이라는 표시를 수신하는 단계; 그리고 서버 응답이 추가 텍스트에 대한 정적 응답이라는 표시를 수신하는 것에 응답하여: 추가 텍스트와 추가 응답 간의 새로운 직접적인 관계를 정의하는 새로운 맵핑을 텍스트-응답 맵에 추가하는 단계를 더 포함한다.
일부 구현에서, 상기 방법이 수행될 때 클라이언트 장치는 인터넷에 대한 연결이 없다.
일부 구현에서, , 방법은, 소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑과 관련된 신뢰도 점수를 결정하는 단계를 더 포함한다. 이러한 구현 중 일부에서, 소정의 응답이 렌더링되도록 하는 단계는, 임계값을 만족하는 신뢰도 점수에 응답하여, 소정의 응답이 오디오 데이터 또는 현재 텍스트를 원격 시스템으로 송신하지 않고 렌더링되도록 하는 단계를 포함한다.
일부 구현에서, 방법은, 소정의 응답이 렌더링되기 전에 오디오 데이터 또는 현재 텍스트를 원격 시스템으로 송신하는 단계; 소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑과 관련된 신뢰도 점수를 결정하는 단계; 신뢰도 점수에 기초하여, 오디오 데이터 또는 현재 텍스트의 송신에 응답하여 원격 시스템으로부터 음성 발화에 응답하는 서버 응답을 수신하기를 기다리는 임계 시간 양을 결정하는 단계를 더 포함한다. 이러한 구현 중 일부에서, 소정의 응답이 렌더링되도록 하는 단계는, 임계 시간 양이 만료되기 전에 서버 응답이 수신되지 않으면 소정의 응답이 임계 시간 양이 만료될 때 렌더링되도록 하는 단계를 포함한다.
일부 구현에서, 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법이 제공되며, 방법은, 클라이언트 장치의 적어도 하나의 마이크로폰을 통해 사용자의 음성 발화를 캡처하는 오디오 데이터를 캡처하는 단계; 오디오 데이터를 처리하여 음성 발화에 해당하는 현재 텍스트를 생성하는 단계를 포함한다. 현재 텍스트를 생성하기 위해 오디오 데이터를 처리하는 것은 클라이언트 장치에 로컬로 저장된 음성-텍스트 모델을 활용한다. 방법은 클라이언트 장치에 로컬로 저장된 텍스트-응답 맵에 액세스하는 단계를 더 포함한다. 텍스트-응답 맵은 복수의 맵핑들을 포함하고; 맵핑들 각각은 클라이언트 장치에 의해 캡처한 이전 오디오 데이터에서 이전에 생성된 해당 텍스트에 기초하고 그리고 이전 오디오 데이터 및 해당 텍스트 중 적어도 하나를 원격 시스템으로 송신하는 것에 응답하여 원격 시스템으로부터 이전에 수신된 해당 응답에 기초하여 해당 텍스트와 해당 응답 간의 해당 직접적인 관계를 정의한다. 방법은, 클라이언트 장치에 의해, 텍스트-응답 맵의 해당 텍스트가 현재 텍스트와 일치하지 않는다고 결정하는 단계; 원격 시스템으로 오디오 데이터 또는 현재 텍스트를 송신하는 단계; 오디오 데이터 또는 현재 텍스트를 제출하는 것에 응답하여 원격 시스템으로부터 응답을 수신하는 단계; 소정의 텍스트 맵핑을 추가하여 텍스트-응답 맵을 업데이트하는 단계를 더 포함한다. 소정의 텍스트 맵핑은 현재 텍스트와 응답 사이의 직접적인 관계를 정의한다. 방법은, 텍스트-응답 맵을 업데이트한 후, 제2 오디오 데이터를 캡처하는 단계; 클라이언트 장치에 로컬로 저장된 음성-텍스트 모델을 이용하여 제2 텍스트를 생성하기 위해 제2 오디오 데이터를 처리하는 단계; 텍스트-응답 맵에 기초하여, 현재 텍스트가 제2 텍스트와 일치하는지를 결정하는 단계; 그리고 현재 텍스트가 제2 텍스트와 일치한다는 결정에 응답하여 그리고 현재 텍스트와 응답 간의 직접적인 관계를 정의하는 소정의 텍스트 맵핑을 포함하는 텍스트-응답 맵을 기반으로: 클라이언트 장치와 관련된 하나 이상의 사용자 출력 장치를 통해 응답이 렌더링되도록 하는 단계를 더 포함한다.
기술의 이러한 및 다른 구현은 선택적으로 다음 기능 중 하나 이상을 포함할 수 있다.
일부 구현에서, 방법은 응답과 함께, 응답이 정적인지 여부의 표시를 수신하는 단계를 더 포함한다. 이러한 구현 중 일부에서, 소정의 텍스트 맵핑을 텍스트-응답 맵에 추가하는 것은 응답이 정적(static)이라는 표시에 응답하여 발생한다.
일부 구현에서, 상기 텍스트-응답 맵을 업데이트하는 단계는 소정의 텍스트 맵핑과 관련하여 신뢰도 점수를 저장하는 단계를 더 포함하며, 신뢰도 점수는 응답이 정적일 가능성을 나타낸다. 이러한 구현 중 일부에서 방법은, 제2 오디오 데이터를 원격 시스템에 제출하는 단계; 제2 오디오 데이터를 제출하는 것에 응답하여, 원격 시스템으로부터 제2 서버 응답을 수신하는 단계; 그리고 제2 서버 응답을 기반으로 신뢰도 점수를 업데이트하는 단계를 더 포함한다.
일부 구현에서, 방법은, 응답과 함께, 만료 이벤트가 발생할 때까지만 응답이 정적이라는 표시를 수신하는 단계; 소정의 텍스트 맵핑으로 만료 이벤트의 표시를 포함하도록 텍스트-응답 맵을 업데이트하는 단계; 그리고 만료 이벤트가 발생하면 텍스트-응답 맵에서 소정의 텍스트 맵핑을 제거하는 단계를 더 포함한다.
일부 구현에서, 상기 텍스트-응답 맵을 업데이트하는 단계는 상기 텍스트-응답 맵으로부터 하나 이상의 맵핑을 제거하는 단계를 포함한다.
일부 구현은, 하나 이상의 프로세서; 그리고 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 상기 설명된 방법을 수행하게 하는 컴퓨터 실행 가능 명령어를 저장하는 하나 이상의 메모리를 포함하는 컴퓨팅 장치를포함한다. 컴퓨팅 장치는 예를 들어 클라이언트 장치일 수 있다. 하나 이상의 프로세서는 예를 들어 중앙 처리 장치(들), 그래픽 처리 장치(들), 및/또는 텐서 처리 장치(들)를 포함할 수 있다. 일부 구현은 적어도 하나의 컴퓨팅 장치의 하나 이상의 프로세서에 의해 실행될 때 상기 설명된 방법과 같은 방법이 수행되게 하는 컴퓨터 실행 가능 명령어를 포함하는 비-일시적 컴퓨터 판독 가능 매체를 포함한다.
전술한 개념 및 본 명세서에 더 상세히 설명된 추가 개념의 모든 조합은 본 명세서에 개시된 요지의 일부인 것으로 고려된다는 것을 이해해야한다. 예를 들어, 본 개시의 끝에 나타나는 청구된 요지의 모든 조합은 여기에 개시된 요지의 일부인 것으로 고려된다.
도 1은 여기에 설명된 기술이 구현될 수 있는 예시적인 환경을 도시한다.
도 2는 본 명세서에 설명된 방법의 구현을 예시하는 흐름도를 제공한다.
도 3은 텍스트-응답 맵이 텍스트에 대한 정적 응답을 포함하는지 확인하는 방법을 나타내는 흐름도이다.
도 4는 본 명세서에 개시된 구현에 따른 예시적인 방법의 흐름도를 도시한다.
도 5는 본 명세서에 개시된 구현에 따른 다른 예시적인 방법의 흐름도를 도시한다.
도 6은 본 명세서에 설명된 기술의 하나 이상의 양태를 수행하기 위해 선택적으로 이용될 수 있는 예시적인 컴퓨팅 장치의 블록도이다.
이후 설명되는 구현에서, 음성 지원 클라이언트 장치의 시맨틱 프로세서는 클라이언트 장치에 로컬로 저장된 텍스트-응답 맵을 사용하여 장치에 의해 수신된 음성 발화를 파싱(구문분석)한다. 일부 구현에서, 텍스트-응답 맵은 장치가 수신한 이전 음성 발화와 클라우드 지원 장치에서 수신한 하나 이상의 응답을 기반으로 생성된다. 텍스트-응답 맵에 수신된 음성에 해당하는 텍스트가 포함되지 않은 경우, 장치는 음성 발화(및/또는 클라이언트 장치에 의해 생성된 음성 발화의 텍스트 표현)를 캡처하는 오디오 데이터를 클라우드 기반 장치에 제공할 수 있으며, 클라우드 기반 장치는 추가 분석을 수행하고 응답을 결정하고, 그 응답을 장치의 하나 이상의 인터페이스에 의해 렌더링하기 위해 클라이언트 장치에 제공할 수 있다. 그 다음, 응답은 클라이언트 장치에 로컬로 저장된 텍스트-응답 맵핑의 텍스트와 함께 저장될 수 있으며 동일한 음성 발화를 수신하는 향후 인스턴스에서 응답을 식별하는 데 활용될 수 있다. 위에서 설명하고 아래에 추가로 설명하는 것처럼, 이는 클라이언트 장치 및 원격 클라우드 지원 장치를 포함하는 네트워크에서 하드웨어 리소스를보다 효율적으로 사용할 수 있다.
선택된 구현에 관한 추가 세부 사항은 이하에서 설명된다. 그러나, 여기에 개시된 구현이 배타적이지 않도록 다른 구현이 고려된다는 것이 이해될 것이다.
도 1에서, 본 명세서에 설명된 기술이 구현될 수 있는 예시적인 환경이 예시된다. 예시적인 환경은 클라이언트 장치(100) 및 원격 시스템(자동화된 어시스턴트 컴포넌트(들))(150)을 포함한다. 클라이언트 장치(100)는 예를 들어 데스크톱 컴퓨팅 장치, 랩톱 컴퓨팅 장치, 태블릿 컴퓨팅 장치, 휴대폰 컴퓨팅 장치, 사용자 차량의 컴퓨팅 장치(예: 차량용 통신 시스템, 차량용 엔터테인먼트 시스템, 차량용 내비게이션 시스템), 독립형 대화형 스피커, 스마트 TV와 같은 스마트 기기 및/또는 컴퓨팅 장치(예를 들어, 컴퓨팅 장치를 갖는 사용자의 시계, 컴퓨팅 장치를 갖는 사용자의 안경, 가상 또는 증강 현실 컴퓨팅 장치)를 포함하는 사용자의 웨어러블 장치일 수 있다. 추가 및/또는 대체 클라이언트 장치가 제공될 수 있다. 클라이언트 장치(100)의 컴포넌트 및 원격 시스템(150)의 컴포넌트는 통신 네트워크(101)를 통해 통신할 수 있다. 통신 네트워크(101)는 예를 들어 광역 네트워크(WAN)(예를 들어, 인터넷)를 포함할 수 있다. 또한, 클라이언트 장치(100)의 컴포넌트는 통신 네트워크(101)를 통해 하나 이상의 다른 컴포넌트와 통신할 수 있다. 예를 들어, 통신 네트워크(101)는 근거리 통신망(LAN) 및/또는 블루투스(BLUETOOTH)를 포함할 수 있고, 랜(LAN) 및/또는 블루투스를 통해 하나 이상의 다른 장치와 통신할 수 있다.
클라이언트 장치(100)는 사용자의 하나 이상의 발화를 나타내는 오디오 데이터를 캡처할 수 있는 하나 이상의 마이크로폰(106)을 포함한다. 마이크로폰(106)은 추가 처리(프로세싱)를 위해 클라이언트 장치(100) 및/또는 원격 시스템(150)의 하나 이상의 다른 컴포넌트에 오디오 데이터를 제공할 수 있다.
클라이언트 장치(100)는 예를 들어 STT(speech-to-tech) 모듈(102), 맵핑 모듈(103), 원격 컴포넌트 모듈(104) 및 렌더링 모듈(105)을 포함하여 여기에 설명된 방법을 구현하는 데 적합한 복수의 모듈을 포함할 수 있으며, 뿐만 아니라 복수의 텍스트 맵핑을 저장하기 위한 텍스트-응답 맵(107)을 포함한다. 마찬가지로, 원격 시스템(150)은 예를 들어 원격 STT 모듈(원격 컴포넌트 모듈)(151), 자연어 처리(NLP) 모듈(자연어 처리기)(152) 및 하나 이상의 에이전트(190)와 상호 작용하기에 적합한 에이전트 엔진(153)을 포함하는 복수의 모듈을 포함할 수 있다.
도 1 및 도 2에 도시한 바와 같이, 도 1에 예시된 다양한 컴포넌트를 사용하여 본 명세서에 설명된 방법의 구현을 예시하는 흐름도가 제공된다. 도시된 바와 같이, 오디오 데이터(200)는 STT 모듈(102)에 제공될 수 있다. STT 모듈(102)은 오디오 데이터(200)를 수신하고 디지털 오디오 데이터를 하나 이상의 텍스트 단어 또는 구(phrases)(본 명세서에서 토큰이라고도 함)로 변환한다. 일부 구현에서, STT 모듈(102)은, 캡처된 발화의 오디오 데이터가 토큰 단위로 그리고 실시간 또는 거의 실시간으로 텍스트로 변환되도록, 따라서 사용자가 완전한 음성 요청을 발언하기 전에 토큰이 사용자의 음성과 동시에 효과적으로 STT 모듈(102)로부터 출력될 수 있도록 스트리밍 모듈일 수 있다. STT 모듈(102)은 하나 이상의 로컬에 저장된 오프라인 음향 및/또는 언어 모델에 의존할 수 있으며, 이는 언어의 단어 시퀀스와 함께 언어의 음성 신호와 음성 단위(phonetic units) 간의 관계를 함께 모델링한다. 일부 구현에서, 단일 모델이 사용될 수 있지만, 다른 구현에서는 (예: 여러 언어, 여러 스피커 등을 지원하기 위해) 여러 모델이 지원될 수 있다.
일부 경우에, 오디오 데이터(200) 및/또는 텍스트(205)는 원격 컴포넌트 모듈(104)에 제공될 수 있다. 원격 컴포넌트 모듈(104)은 통신 네트워크(101)를 통해 원격 시스템(150)과 통신하고, 오디오 데이터 및/또는 오디오 데이터의 텍스트 표현을 원격 STT 모듈(151) 및/또는 자연어 처리(NLP) 모듈(152)에 제공할 수 있다. 원격 STT 모듈(151)은 사용자의 음성 발화를 나타내는 오디오 데이터를 수신하고 오디오 데이터를 텍스트로 변환할 수 있다는 점에서 STT 모듈(102)과 유사하게 기능할 수 있다. 그러나, 원격 STT 모듈(151)은 클라이언트 장치(100)의 자원(리소스)을 사용하지 않고 대신 원격 시스템(150)의 자원을 사용한다. 따라서 일부 경우에, 원격 STT 모듈(151)은, 원격 시스템(150)이 클라이언트 장치(100)보다 컴퓨팅 파워 및/또는 저장에 대한 제약이 적기 때문에 강력(robust)할 수 있다.
STT 모듈(102) 및/또는 원격 STT 모듈(151)에 의해 생성된 텍스트는 추가 처리를 위해 NLP 모듈(152)에 제공될 수 있다. NLP 모듈(152)은 자유 형식(free form) 자연어 입력을 처리하고, 자연어 입력에 기초하여 원격 시스템(150)의 하나 이상의 다른 컴포넌트에 의해 사용하기 위한 주석이 달린 출력(annotated output) 을 생성한다. 예를 들어, NLP 모듈(152)은 클라이언트 장치를 통해 사용자에 의해 제공되는 오디오 데이터의, STT 모듈(151) 및/또는 원격 STT 모듈(151)에 의한 변환인 텍스트 입력인 자연어 자유 형식 입력을 처리할 수 있다. 또한, 예를 들어, NLP 모듈(152)은 원격 컴포넌트 모듈(104)로부터 수신된 오디오 데이터(200)로부터 직접 출력을 생성할 수 있다. 생성된 주석이 달린 출력은 자연어 입력의 하나 이상의 주석 및 선택적으로 자연어 입력의 용어 중 하나 이상(예를 들어, 모두)을 포함할 수 있다.
일부 구현에서, NLP 모듈(152)은 자연어 입력에서 다양한 유형의 문법 정보를 식별하고 주석을 달도록 구성된다. 예를 들어, NLP 모듈(152)은 문법적 역할을 가진 용어에 주석을 달도록 구성된 음성 태거(speech tagger)(미도시)의 일부를 포함할 수 있다. 또한, 예를 들어, 일부 구현에서 NLP 모듈(152)은 자연어 입력에서 용어들 간의 구문 관계를 결정하도록 구성된 종속성 파서(dependency parser)(도시되지 않음)를 추가적으로 및/또는 대안적으로 포함할 수 있다.
일부 구현에서, NLP 모듈(152)은 추가적으로 및/또는 대안적으로 사람(예: 문학 인물, 유명인, 유명인 등 포함), 조직, 위치(실제 및 가상) 등에 대한 참조와 같은 하나 이상의 세그먼트에서 엔티티 참조에 주석을 달도록 구성된 엔티티 태거(도시되지 않음)를 포함할 수 있다. NLP 모듈(152)의 엔티티 태거는 (예: 사람과 같은 엔티티 클래스에 대한 모든 참조를 식별할 수 있도록 하기 위해) 높은 레벨의 입도(granularity) 및/또는 (예: 특정 사람과 같은 특정 엔티티에 대한 모든 참조를 식별할 수 있도록 하기 위해) 더 낮은 레벨의 입도에서 엔티티에 대한 참조에 주석을 달 수 있다. 엔티티 태거는 특정 엔티티를 해결하기 위해 자연어 입력의 콘텐츠에 의존할 수 있고 및/또는 특정 엔티티를 해결하기 위해 지식 그래프 또는 다른 엔티티 데이터베이스와 선택적으로 통신할 수 있다. 본 명세서에 기술된 바와 같이, 식별된 엔티티는 텍스트의 패턴을 식별하기 위해 이용될 수 있다.
일부 구현에서, NLP 모듈(152)은 추가적으로 및/또는 대안적으로 하나 이상의 컨텍스트 큐(cue)에 기초하여 동일한 엔티티에 대한 참조를 그룹화하거나 "클러스터(cluster)"하도록 구성된 공동참조 리졸버(coreference resolver)(도시되지 않음)를 포함할 수 있다. 예를 들어, 공동참조 리졸버는 자연어 입력 "I liked Hypothetical Cafe last time we ate there.(나는 지난번에 먹었던 거기 하이포쎄디컬 카페를 좋아했다)"에서 "there"라는 용어를 "Hypothetical Cafe"로 해석하는 데 활용될 수 있다.
일부 구현에서, NLP 모듈(152)의 하나 이상의 컴포넌트는 NLP 모듈(152)의 하나 이상의 다른 컴포넌트로부터의 주석(annotations)에 의존할 수 있다. 예를 들어, 일부 구현에서 명명된 엔터티 태거는 특정 엔터티에 대한 모든 멘션에 주석을 달 때 공동참조 리졸버 및/또는 종속성 파서의 주석에 의존할 수 있다. 또한, 예를 들어 일부 구현에서 공동참조 리졸버는 동일한 엔티티에 대한 참조를 클러스터링할 때 종속성 파서의 주석에 의존할 수 있다. 일부 구현에서, 특정 자연어 입력을 처리할 때, NLP 모듈(152)의 하나 이상의 컴포넌트는 하나 이상의 주석을 결정하기 위해 특정 자연어 입력 외부의 관련 이전 입력 및/또는 다른 관련 데이터를 사용할 수 있다.
그 다음 NLP 모듈(152)은, 하나 이상의 에이전트(190)에 출력을 제공할 수 있는 에이전트 모듈(153)에 주석이 달린 출력을 제공할 수 있으며, 이는 사용자의 음성 발화에 대한 적절한 응답을 결정할 수 있다. 예를 들어, 에이전트 모듈(153)은 NLP 모듈(152)의 출력의 주석에 기초하여 어떤 에이전트(190)가 주석이 달린 출력을 가장 많이 활용하고 그리고 의미있는 응답을 생성할지를 결정할 수 있다. 그 다음 NLP 모듈(152)의 주석이 달린 출력은 그 에이전트에 제공될 수 있고 에이전트로부터의 결과적인 응답은 렌더링을 위해 클라이언트 장치(100)에 제공될 수 있다. 예를 들어, "What is the weather today(오늘 날씨가 어때?)"의 음성 발화는 NLP 모듈(152)에 의해 주석이 달린 텍스트로 변환될 수 있으며, 결과적으로 주석이 달린 출력은 에이전트 모듈(153)에 제공될 수 있다. 에이전트 모듈(153)은 주석에 기초하여 날씨 에이전트가 주석이 달린 출력에 대한 의미있는 응답을 결정할 가능성이 있음을 결정하고 날씨 컴포넌트에 출력을 제공할 수 있다. 그 다음 날씨 에이전트는 클라이언트 장치에 제공할 응답을 결정할 수 있으며, 이는 클라이언트 장치(100)에 의해 사용자에게 렌더링될 수 있다. 예를 들어, 날씨 에이전트로부터 에이전트 모듈(153)에 의해 제공된 "75, sunny"의 응답을 기반으로, 렌더링 모듈(105)은 응답의 오디오 및/또는 시각적 렌더링(예를 들어, "날씨는 오늘 맑고 화씨 75도"의 오디오 렌더링 및/또는 날씨의 시각적 인터페이스로 출력)을 제공할 수 있다. NLP 모듈(152)은 STT 모듈(102) 및/또는 원격 STT 모듈(151)에 의해 생성된 텍스트를 처리할 때 비교적 계산적으로 요구될 수 있다. 이는 원격 시스템(150)에서의 NLP 모듈의 존재가 클라이언트 장치(100) 및 시스템 전체에 유리하다는 것을 의미하는 데, 클라이언트 장치(100)는 계산적으로 NLP 모듈(152)을 구현할 수 있고, 그의 전체 처리 능력 및 전력 저장 용량은 원격 시스템(150)에서 이용 가능한 것보다 더 제한될 가능성이 있다. 이러한 요인들은 원격 시스템(150)에서의 NLP 모듈의 존재가 특히 클라이언트 장치(100)가 응답을 제공하기 위해 자연어 처리를 기다려야하는 경우 응답 지연을 낮게 유지한다는 것을 의미하고, 최종 응답이 클라이언트 장치의 맵핑된 로컬 저장소(스토리지)로부터 제공되는지 또는 원격 시스템 (150)의 응답을 대기함으로써 제공되는지 여부에 관계없이 응답의 일반적인 신뢰성을 높게 유지한다.
응답이 하나 이상의 에이전트(190)로부터 에이전트 모듈(153)에 의해 수신되면, 응답은 원격 컴포넌트 모듈(104)을 통해 클라이언트 장치(100)에 제공될 수 있다. 수신된 응답은 렌더링 모듈(105)에 제공될 수 있고, 그 다음 하나 이상의 컴포넌트(도시되지 않음)를 통해 동작(액션)을 렌더링할 수 있다. 예를 들어, 렌더링 모듈(105)은 응답을 음성으로 변환하고 클라이언트 장치(100)의 하나 이상의 스피커를 통해 사용자에게 오디오를 제공할 수 있는 텍스트-음성(text-to-speech) 컴포넌트를 포함할 수 있다. 또한, 예를 들어, 렌더링 모듈(105)은 그래픽 응답을 생성하고 클라이언트 장치(100)와 연관된 하나 이상의 시각적 인터페이스를 통해 그래픽 응답을 제공할 수 있다. 또한, 예를 들어, 렌더링 모듈(105)은 와이-파이(Wi-Fi) 제어 조명과 같은, 사용자의 하나 이상의 다른 장치와 통신할 수 있고 렌더링을 위해 하나 이상의 다른 장치에 응답을 제공할 수 있다(예: 조명 켜기).
일부 구현에서, 서버 응답은 텍스트(200)와 함께 텍스트-응답 맵(107)에 저장될 수 있다. 텍스트-응답 맵(107)은 STT 모듈(102) 및/또는 원격 STT 모듈(151)에 의해 오디오 데이터로부터 생성된 텍스트를 포함하며, 원격 시스템(150)으로부터 수신된 해당 응답과 함께 저장된다. 예를 들어, "Turn on the kitchen light(주방 조명 켜기)"의 음성 발화에 대한 오디오 데이터는 STT 모듈(102)에 의해 수신되어 텍스트로 변환될 수 있다. 텍스트는 명령에 대한 적절한 동작(액션)을 결정할 수 있는(예를 들어, 음성 발화의 의미를 결정) 원격 시스템(150)에 제공될 수 있다. 조명을 켜는 것을 나타내는 결과적인 응답은 렌더링 모듈(105)에 의해 수신될 수 있으며, 이는 클라이언트 장치(100)와 연관된 "kitchen light(주방 조명)"을 식별하고 조명을 끌 수 있다. 결과적인 응답은 이후 클라이언트 장치(100)에 의한 사용을 위해 응답(예를 들어, 특정 조명을 끄는 응답)과 함께 텍스트-응답 맵(107)에 저장될 수 있다.
일부 구현에서, 텍스트-응답 맵은 데이터베이스에 하나 이상의 테이블로서, 스택(예: 후입 선출 데이터 구조)으로서, 큐(queue)(예: 선입 선출 데이터 구조) 및/또는 하나 이상의 대체 데이터 구조로서 저장될 수 있다. 본 명세서에 설명된 바와 같이, 텍스트는 영숫자 형식으로 저장될 수 있다. 그러나, 텍스트는 대안적으로 하나 이상의 음소 매트릭스, 오디오 데이터, 및/또는 맵핑 모듈(103)이 클라이언트 장치(100)에 의해 캡처된 오디오 데이터를 텍스트-응답 맵에 저장된 텍스트와 비교할 수 있게 하는 임의의 다른 형식으로 저장될 수 있다. 텍스트-응답 모듈에 저장된 응답은 텍스트 응답, 사용자의 하나 이상의 인터페이스에 의해 수행될 동작 및/또는 사용자에게 렌더링하기 위해 하나 이상의 인터페이스에 제공될 수 있는 하나 이상의 대체 형식으로 저장될 수 있다.
텍스트와 응답은 각 텍스트가 특정 응답과 연관되도록 직접적인 관계를 사용하여 텍스트-응답 맵에 저장된다. 예를 들어, "What is the capital of France(프랑스의 수도는 어디입니까)"라는 텍스트는 "Paris"라는 응답으로 다른 응답없이 저장될 수 있다. 또한, 예를 들어 "Turn on the kitchen light(주방 조명 켜기)"라는 텍스트는 사용자의 조명 장치에 제공하여 장치를 켤 수 있는 명령과 직접적인 관계로 저장될 수 있다.
일부 경우에, 텍스트 및 응답은 텍스트-응답 맵(107)에 이미 저장될 수 있다. 예를 들어, 사용자가 "주방 조명 끄기"라는 발화를 이미 말했을 수 있으며 결과적인 응답이 이미 텍스트와 함께 저장되었을 수 있다. 이러한 경우에, 맵핑 모듈(103)은 원격 시스템(150)으로부터 수신된 결과가 텍스트-응답 맵에 저장된 응답과 일치하는지 확인할 수 있다. 맵핑 모듈(103)은 저장된 응답이 원격 시스템(150)으로부터 수신된 응답과 일치하는지 확인(체크)하는 것에 기초하여 텍스트-응답 맵(107)을 업데이트할 수 있다.
도 2에서, 맵핑 모듈(103)은 전술한 바와 같이 생성된 텍스트(205)가 이전에 저장되었는지 여부를 결정하기 위해 텍스트-응답 맵(107)에 액세스할 수 있다. 결정 210에서, 텍스트(205)에 대한 텍스트 맵핑이 텍스트-응답 맵핑(107)에서 식별되지 않으면, 텍스트(또는 오디오 데이터)는 원격 시스템(150)에 제공되고 응답(220)은 전술한 바와 같이 원격 서버(150)로부터 수신된다. 응답(220)은 렌더링 모듈(105)에 의해 렌더링될 수 있고, 맵핑 모듈(103)에 추가로 제공될 수 있으며, 맵핑 모듈(103)은 텍스트(205) 및 응답(220)에 기초하여 텍스트 맵핑을 생성한다. 그 다음 텍스트 맵핑은 텍스트-응답 맵(107)에 저장될 수 있다.
맵핑 모듈(103)이 결정 210에서 텍스트-응답 맵(107)이 텍스트(205)에 대한 텍스트 맵핑을 포함한다고 결정하면, 맵핑 모듈(103)은 텍스트-응답 맵(107)에 액세스하고, 텍스트(205)와 연관된 응답(215)을 식별하고, 사용자에게 렌더링하기 위해 렌더링 모듈(105)에 응답(215)을 제공한다. 따라서, 사용자의 발화가 이미 원격 시스템(150)에 의해 처리되고 텍스트-응답 맵(107)에 저장된 경우, 원격 시스템(150)은 콘텐츠를 사용자에게 렌더링하기 위해 액세스 될 필요가 없다. 모든 동작(액션)이 클라이언트 장치(100)에서 발생하기 때문에, 통신 네트워크(101) 및/또는 원격 시스템(150)의 컴포넌트에 의해 도입된 임의의 지연이 제거된다. 또한, 원격 시스템(150)이 클라이언트 장치(100)에 의해 액세스될 필요가 없다는 사실로 인해 전체 전력 소비가 감소된다. 또한, 자연어 처리 및 응답 결정이 제거되기 때문에 사용자가 동일한 발화를 반복적으로 제출할 때 로컬 및/또는 원격 계산 리소스가 절약된다. 또한 원격 시스템(150)을 사용하지 않고도 응답을 렌더링할 수 있기 때문에, 응답은 클라이언트 장치(100)가 인터넷 연결과 같은 원격 시스템(150)에 대한 연결이 없는 경우에도 렌더링될 수 있다.
경우에 따라, 응답은 사용자의 반복 요청들간에 변경되지 않는 정적(static) 응답일 수 있다. 예를 들어, "Who was the first president of the United States(미국 최초의 대통령은 누구였습니까?)"라는 음성 발화는 그 발화가 수신될 때마다 동일한 응답을 제공한다. 그러나 일부 경우에, 응답이 동적(dynamic)일 수 있으며, 동일한 음성 발화를 수신하면 변경될 수 있다. 예를 들어 "What restaurants are near me(내 주변에 있는 레스토랑은?)"은 사용자의 위치에 따라 변경되므로 동적 응답이다. 또한 예를 들어, "What is the weather tomorrow(내일 날씨는 어때?)"는 날씨 예측이 하루 종일 변경될 수 있다는 점에서 동적이며, "tomorrow(내일)"은 제한된 시간 동안 특정 날짜를 나타낸다(즉, "오늘(today)" 발화가 수신되는 경우에만).
일부 구현들에서, 원격 컴포넌트 모듈(104)은 맵핑 모듈(103)이 텍스트-응답 맵(107)에서 텍스트(200)에 대한 텍스트 맵핑을 식별하는 경우에도 텍스트(205) 및/또는 오디오 데이터(200)를 원격 시스템(150)에 제공한다. 이는 예를 들어, 렌더링 모듈(105)이 텍스트 매핑의 해당 응답을 제공받기 전에 발생할 수 있거나, 렌더링 모듈(105)이 서버 응답을 수신하기 전에 응답(및 응답 렌더링 시작)을 제공받기 전에 발생할 수 있다. 일부 구현에서, 맵핑 모듈(103)은 원격 컴포넌트 엔진(104)이 텍스트 및/또는 오디오 데이터를 제공한 후 임계 시간을 기다릴 수 있고, 임계 시간이 만료되기 전에 응답이 원격 시스템(150)으로부터 수신되지 않는 경우에만 렌더 모듈(105)에 로컬로 저장된 응답을 제공한다.
도 3에서, 텍스트-응답 맵(107)이 텍스트에 대한 정적 응답을 포함하는지 확인하는 방법을 예시하는 흐름도가 제공된다. STT 모듈(102)은 텍스트(205)를 맵핑 모듈(103)에 제공할 수 있으며, 맵핑 모듈(103)은 텍스트(200)에 대한 텍스트 맵핑 및 해당 응답(205)을 식별할 수 있다. 또한, STT 모듈은 원격 시스템(150)으로부터 응답(215)을 수신하는 원격 컴포넌트 모듈(104)에 텍스트(205)(또는 오디오 데이터(200))를 제공할 수 있다. 맵핑 모듈(103)은 결정(300)에서 해당 응답(215)을 서버 응답(220)과 비교할 수 있다. 해당 응답(215)이 서버 응답(220)과 일치하면, 해당 응답은 정적일 가능성이 더 높고(305) 그에 따라 텍스트 맵핑이 업데이트될 수 있다. 그러나, 해당 응답(215)이 서버 응답(220)과 일치하지 않으면, 해당 응답(215)은 동적일 가능성이 있고(310) 텍스트(205)에 대한 텍스트 맵핑이 그에 따라 업데이트될 수 있다.
일부 구현에서, 맵핑 모듈(103)은 텍스트 맵핑과 함께 신뢰도 점수를 저장할 수 있다. 신뢰도 점수는 해당 응답이 정적일 가능성을 나타낼 수 있다. 신뢰도 점수는 서버 응답이 해당 응답과 일치할 때마다 업데이트되어 텍스트에 대한 응답이 이후에 변경되지 않을 가능성을 높일 수 있다. 예를 들어, 텍스트-응답 맵(107)에 처음 저장될 때 텍스트 맵핑에 "1"의 신뢰도 점수가 할당될 수 있다. 이어서, 맵핑 모듈(103)은 텍스트 맵핑을 식별할 수 있으며(텍스트 맵핑의 텍스트와 일치하는 후속 텍스트에 기초하여), 텍스트(또는 오디오 데이터)는 원격 시스템(150)에 제공될 수 있고, 원격 시스템으로부터 수신된 서버 응답은 해당 응답과 비교될 수 있다. 두 응답이 일치하면, 동일한 응답이 두 번 식별되었음을 반영하기 위해 텍스트 맵핑에 대한 신뢰도 점수가 "2"로 업데이트될 수 있다. 사용자의 후속 제출에서 텍스트가 다시 처리됨에 따라 신뢰도 점수가 계속 업데이트될 수 있다.
일부 구현에서, 맵핑 모듈(103)에 의해 식별된 텍스트 맵핑의 해당 응답은 식별된 텍스트 맵핑과 연관된 신뢰도 점수가 임계값을 만족하는 경우에만 렌더링 모듈(105)에 제공될 수 있다. 이러한 상황에서, 렌더링 모듈(105)은 원격 시스템(150)으로부터의 추가 응답을 기다리지 않고 응답을 렌더링할 수 있다. 이는 지연(latency)을 감소시킨다. 예를 들어, 맵핑 모듈(103)은 해당 응답이 3 회 검증되었음을 나타내는 "3"의 신뢰도 점수를 갖는 텍스트 맵핑을 식별할 수 있다. 맵핑 모듈은 신뢰로 레빌이 "2"보다 큰 경우 해당 텍스트만 제공하고 해당 텍스트를 제공할 수 있다. 또한, 예를 들어, 맵핑 모듈(103)은 텍스트 맵핑의 관련 신뢰도가 "1"이면 해당 응답을 제공하지 않을 수 있다. 대신에, 원격 컴포넌트 모듈은 오디오 데이터(200) 및/또는 텍스트(205)를 원격 시스템(150)에 제공할 수 있고, 서버 응답은 렌더링 모듈(105)에 제공될 수 있다(위에서 설명된 신뢰도 점수를 업데이트하기 위해 맵핑 모듈(103)에 제공될 수 있다). 해당 응답이 서버 응답과 일치하면, 신뢰도 점수는 "2"로 업데이트될 수 있고, 사용자의 후속 발화에 기초하여 텍스트 맵핑이 식별되면, 맵핑으로부터 해당 응답이 서버 응답 대신에 렌더 모듈(105)로 제공될 수 있다.
일부 구현에서, 원격 컴포넌트 모듈은 맵핑 모듈(103)이 (이전에 설명된 바와 같이) 텍스트-응답 맵(107)에서 텍스트 맵핑을 식별하지 않거나 식별된 텍스트 맵핑과 관련된 신뢰도 점수가 임계값을 충족(만족)하지 않는 경우에만 오디오 데이터(200) 및/또는 텍스트(205)를 원격 시스템(150)에 제공할 수 있다. 예를 들어, 신뢰도 점수가 임계값을 만족하는 경우 원격 서버(150)와의 통신없이, "3"의 신뢰도 점수를 갖는 텍스트 맵핑에 대한 해당 응답이 렌더링 모듈(105)에 제공될 수 있다. 그러나, 관련 신뢰도 점수 "2"를 갖는 텍스트 맵핑에 대한 해당 응답이 렌더링 모듈(105)에 제공될 수 있고, 또한 오디오 데이터 또는 텍스트가 원격 시스템(150)에 제공될 수 있다. 이러한 상황에서, 클라이언트 장치(100)에 로컬로 저장된 맵핑으로부터의 응답은 원격 시스템(150)으로부터의 응답이 클라이언트 장치(100)에서 수신되기 전에 렌더링될 수 있다. 이후에 원격 시스템(150)으로부터의 응답이 수신되면, 이는 신뢰도 점수를 반복하거나, 예를 들어 저장된 맵핑을 제거하고, 저장된 맵핑을 스테일(stale)인 것으로 표시하고, 및/또는 저장된 응답이 아래에 설명된대로 동적이라는 사실을 반영하도록 맵핑을 업데이트하는 데 사용될 수 있다. 이는 원격 시스템(150)으로부터의 응답이 로컬 맵핑의 응답과 일치하는지 여부에 따라 달라진다. 따라서, 원격 서버(150)는 식별된 텍스트 맵핑의 신뢰도 점수가 임계값을 만족하지 않는 경우에만 액세스될 수 있다. 따라서, 원격 서버(150)의 리소스(자원)는 클라이언트 장치(100)에 저장된 응답에 대한 신뢰도가 텍스트 맵핑이 정적 응답을 포함한다고 확신할만큼 충분히 높지 않은 경우에만 영향을 받는다.
일부 경우에, 서버 응답은 맵핑 모듈(103)에 의해 식별된 텍스트 맵핑의 해당 응답과 일치하지 않을 수 있다. 이러한 경우에, 맵핑 모듈(103)은 저장된 응답이 동적임을 반영하기 위해 텍스트 맵핑을 업데이트할 수 있다. 예를 들어, 맵핑 모듈(103)은 텍스트 맵핑과 연관된 신뢰도 점수를 "-1"로 업데이트하거나, 또는 응답이 스테일하거나 및/또는 동적임을 나타내기 위해 다른 플래그로 업데이트할 수 있다. 동일한 텍스트가 후속적으로 STT 모듈(102)에 의해 생성되면, 맵핑 모듈(103)은 텍스트 맵핑을 식별하고, 해당 응답이 렌더링되지 않아야한다고 결정하고, 대신에 추가 처리를 위해 오디오 데이터 및/또는 텍스트를 원격 서버(150)에 제공하도록 원격 컴포넌트 모듈(104)에 지시할 수 있다. 응답을 반영하도록 신뢰도 점수(또는 플래그 설정)를 동적으로 설정하여 동일한 텍스트를 수신하는 후속 인스턴스에서 새로운 맵핑이 저장되지 않도록 한다. 따라서, 맵핑 모듈(103)은 콘텐츠를 사용자에게 렌더링하는데 사용되지 않을 텍스트 맵핑을 연속적으로 추가하는 계산 자원을 반복적으로 소비하지 않을 것이다. 그러나, 일부 구현에서, 맵핑 모듈(103)은 저장 공간을 보존하기 위해 텍스트 맵핑을 완전히 제거할 수 있다.
일부 구현에서, 원격 시스템(150)은 서버 응답이 동적인지 정적인지의 표시를 제공할 수 있다. 일부 예들에서, 에이전트 모듈(153)은 에이전트 모듈(153)이 수신된 오디오 데이터 및/또는 텍스트에 기초하여 동작(액션)을 제공한 에이전트(190)에 기초하여 클라이언트 장치(100)에 제공할 표시를 결정할 수 있다. 예를 들어, 에이전트 모듈(153)은 특정 날짜에 대한 날씨를 결정하기 위해 날씨 에이전트에 동작(액션)이 제공되어야 한다고 결정할 수 있다. 또한, 에이전트 모듈(153)은 날씨 에이전트로부터의 응답이 동적임을 결정하고, 클라이언트 장치(100)에 제공된 서버 응답이 동적이라는 표시를 제공할 수 있다. 서버 응답이 동적이라는 표시를 수신하면, 맵핑 모듈(103)은 텍스트-응답 맵(107)의 텍스트와 함께 서버 응답을 저장하지 않을 수 있고 및/또는 응답이 동적이며 텍스트의 후속 처리시 텍스트-응답 맵(107)으로부터 제공되지 않아야 함을 나타내는 표시를 텍스트 매핑과 함께 저장할 수 있다. 또 다른 예로, 에이전트 모듈(153)은 지식 그래프 에이전트가 주석이 달린 텍스트를 처리해야한다고 결정할 수 있고, 컴포넌트에 의해 활용되는 지식 그래프가 정적이며 동일한 음성 발화가 캡처될 때 향후 활용을 위해 텍스트 매핑(즉, 서버 응답을 갖는 텍스트)을 저장해야 한다는 표시를 제공할 수 있다.
일부 구현에서, 원격 시스템(150)은 서버 응답이 얼마나 오래 정적인지의 표시를 제공할 수 있다. 예를 들어, 에이전트 모듈(153) 및/또는 원격 시스템(150)의 하나 이상의 다른 컴포넌트는 처리된 후, "What is the weather like tomorrow(내일 날씨는 어때?)"라는 발화가 자정까지 정적 응답을 초래할 수 있고 자정 이후에는 달라진다는 것을 결정할 수 있다(즉, "tomorrow"의 정의가 다른 날로 변경되는 경우). 또한, 예를 들어, "Who do the Cubs play next(컵스의 다음 플레이하는 사람은 누구입니까?)"의 발화는 다음 컵스 경기 시간과 컵스가 다음 경기를 한 후 응답이 변경될 것이라는 표시와 함께 제공될 수 있다. 또한 예를 들어, "Find restaurants near me(내 주변 레스토랑 찾아줘)"의 발화는 사용자가 위치를 변경하지 않았거나 및/또는 발화 제공 사이의 임계 거리 이상 이동하지 않은 경우에만 정적 응답을 초래할 수 있다. 맵핑 모듈(103)은 이어서 해당 응답을 렌더링 모듈(105)에 제공하기 전에 텍스트 맵핑과 함께 저장된 만료 이벤트가 발생했는지 여부를 결정하기 위해 체크할 수 있다.
일부 구현에서, 맵핑 모듈(103)은 저장된 응답이 여전히 프레쉬(fresh)하고 및/또는 텍스트-응답 맵(107)이 클라이언트 장치(100)의 능력을 넘어서 저장 공간 요구량에서 증가하는 것을 방지하기 위해 텍스트-응답 맵(107)으로부터 텍스트 맵핑을 주기적으로 제거할 수 있다. 예를 들면, 맵핑 모듈(103)은 "선입 선출(first in, first out)" 접근법을 이용하여 새로운 텍스트 매핑이 추가될 때 액세스되지 않은 오래된 텍스트 매핑을 제거할 수 있다(예: 액세스된 매핑의 마지막 X 개만 유지하고, 새로운 매핑이 추가되고 텍스트 응답에 X 개의 텍스트 매핑이 포함된 경우 가장 오래 전에 액세스한 매핑을 제거함). 일부 구현에서, 맵핑 모듈(103)은 이벤트가 발생할 때 만료 이벤트와 함께 저장된 텍스트 맵핑을 제거할 수 있다. 예를 들어, 맵핑 모듈(103)은 텍스트-응답 맵(107)에 저장된 만료 이벤트를 주기적으로 확인하고, 이미 발생한 만료 이벤트가 있는 임의의 텍스트 맵핑을 제거할 수 있다. 일부 구현에서, 맵핑 모듈(103)은 동적으로 플래그된 임의의 텍스트 맵핑을 주기적으로 제거할 수 있다.
도 4는 본 명세서에 개시된 구현에 따른 예시적인 방법의 흐름도를 도시한다. 하나 이상의 단계가 생략되고, 다른 순서로 수행될 수 있고, 및/또는 하나 이상의 추가 단계가 다양한 구현에 포함될 수 있다.
단계 405에서, 사용자의 발화를 나타내는 오디오 데이터가 캡처된다. 음성 발화는 클라이언트 장치(100)의 마이크로폰(106)과 하나 이상의 특성을 공유하는 클라이언트 장치의 하나 이상의 컴포넌트에 의해 캡처될 수 있다. 일부 구현에서, 음성 발화의 일부는 사용자가 음성 발화를 완료하기 전에 캡처될 수 있으며, 일부는 추가 오디오 데이터를 캡처하는 동안 하나 이상의 다른 컴포넌트에 제공될 수 있다. 예를 들어, 마이크로폰(106)은 오디오 데이터의 일부를 캡처하고, 오디오 데이터를 음성 발화의 추가 오디오 데이터를 계속 캡처하면서 하나 이상의 컴포넌트에 제공할 수 있다.
단계 410에서, 오디오 데이터로부터 현재 텍스트가 생성된다. 현재 텍스트는 STT 모듈(102)과 하나 이상의 특성을 공유하는 컴포넌트에 의해 생성될 수 있다. 일부 구현에서, STT 모듈(102)은 오디오 데이터의 일부를 수신하고, 예를 들어 마이크로폰(106)으로부터 음성 발화에 대한 오디오 데이터의 전체가 수신되기 전에 현재 텍스트를 생성하기 시작할 수 있다. 일부 구현에서, STT 모듈(102)은 현재 텍스트를 생성하기 전에 음성 발화의 모든 오디오 데이터가 제공될 때까지 기다릴 수 있다. 또한, STT 모듈(102)은 예를 들어 필러 단어(filler words)를 제거하고, 동사를 표준 결합(standard conjugation)에 결합하고, 및/또는 텍스트의 무의미한 부분을 제거하기 위해 텍스트의 일부 정규화를 수행할 수 있다. 그러나, STT 모듈(102)은 예를 들어 서버에서 실행되는 STT 모듈보다 계산 집약적이지 않도록 의도된다. 따라서, STT 모듈(102)은 오디오 데이터를 텍스트로 변환하는 것보다 약간 더 많은 것을 수행할 수 있다.
단계 415에서, 텍스트-응답 맵이 액세스된다. 텍스트-응답 맵은 텍스트-응답 맵(107)과 하나 이상의 특성을 공유할 수 있고, 맵핑 모듈(103)과 하나 이상의 특성을 공유하는 컴포넌트에 의해 액세스될 수 있다. 텍스트-응답 맵은 텍스트 맵핑을 포함하며, 각 맵핑은 해당 응답과 직접적인 관계가 있는 텍스트를 포함한다. 텍스트-응답 맵의 텍스트 맵핑은 사용자의 이전 음성 발화 및 발화를 말하는 사용자의 오디오 데이터 캡처에 응답하여 생성된 오디오 데이터 및/또는 텍스트 제출에 응답하여 원격 시스템으로부터 수신된 응답에 기초하여 생성될 수 있다.
단계 420에서, 텍스트-응답 맵은 현재 텍스트가 텍스트 맵핑에 포함되어 있는지를 결정하기 위해 검사(체크)된다. 예를 들어, 맵핑 모듈(103)과 하나 이상의 특성을 공유하는 컴포넌트는 텍스트-응답 맵에 액세스하고 텍스트 맵핑 중 임의의 텍스트가 현재 텍스트를 포함하는지 여부를 결정할 수 있다. 일부 구현에서, 맵핑 모듈(103)은 텍스트 맵핑의 텍스트와 현재 텍스트 사이의 정확한 일치를 요구할 수 있다. 일부 구현에서, 맵핑 모듈(103)은 현재 텍스트에 대한 근접 일치(close match)를 식별할 수 있다. 그러나, 맵핑 모듈(103)은 사용자의 클라이언트 장치에서 실행 중이고 리소스 제약이 있을 수 있으므로, 맵핑 모듈(103)은 일치가 정확하거나 텍스트가 최소한으로 변하지 않는 한 텍스트-응답 맵에서 소정의 텍스트를 현재 텍스트와 일치하는 것으로 식별하지 않을 수 있다.
단계 425에서, 현재 텍스트와 일치하는 텍스트를 가진 텍스트 맵핑이 텍스트-응답 맵에서 식별되면, 해당 텍스트 맵핑에 해당하는 응답이 선택된다. 소정의 텍스트에 대한 해당 응답은 원격 시스템에 제출되고 원격 서버로부터 해당 응답을 수신하는 소정의 텍스트(또는 소정의 텍스트와 연관된 오디오 데이터)를 기반으로 텍스트-응답 맵에 이전에 생성되어 저장되었을 수 있다. 일부 구현에서, 신뢰도 점수는 텍스트 맵핑과 연관될 수 있고, 신뢰도 점수가 임계값을 만족하는 경우에만 해당 응답이 선택될 수 있다. 예를 들어, 소정의 텍스트가 원격 시스템에 제출된 횟수 및 원격 시스템으로부터 수신되는 해당 응답에 기초하여 신뢰도 점수가 결정될 수 있다. 따라서, 소정의 텍스트(또는 소정의 텍스트에 대한 오디오 데이터)가 동일한 결과 응답으로 처리하기 위해 원격 시스템에 제공되므로 해당 응답이 유효하다는 신뢰도가 높아진다.
단계 430에서, 하나 이상의 컴포넌트는 식별된 텍스트 맵핑으로부터의 응답이 렌더링되게 한다. 응답은 렌더링 모듈(105)과 하나 이상의 특성을 공유하는 컴포넌트에 의해 렌더링될 수 있다. 일부 구현에서, 렌더링 모듈(103)은 응답을 음성으로 변환하고 음성을 하나 이상의 스피커를 통해 사용자에게 제공하는 텍스트-음성(text-to-speech) 모듈(텍스트-음성 변환 모듈)과 같은 하나 이상의 다른 컴포넌트와 통신할 수 있다. 또한 예를 들어, 렌더링 모듈(105)은 시각적 인터페이스와 같은 하나 이상의 다른 인터페이스와 통신할 수 있고, 렌더링은 시각적 인터페이스를 통해 사용자에게 시각적 출력을 제공하는 것을 포함할 수 있다. 또한 예를 들어, 렌더 모듈(103)은 Wi-fi 인에이블된 조명기구와 같은 사용자의 하나 이상의 다른 장치와 통신할 수 있고, 그 장치로 하여금 하나 이상의 동작(액션)(예를 들어, 특정 조명 끄기)을 수행하게 할 수 있다.
도 5는 본 명세서에 개시된 구현에 따른 다른 예시적인 방법의 흐름도를 도시한다. 하나 이상의 단계가 생략되고, 다른 순서로 수행될 수 있고, 및/또는 하나 이상의 추가 단계가 다양한 구현에 포함될 수 있다.
단계 505에서, 하나 이상의 컴포넌트는 사용자의 음성 발화의 오디오 데이터를 캡처한다. 단계 505는 도 4의 단계 405와 하나 이상의 특성을 공유할 수 있다. 예를 들어, 오디오 데이터는 마이크로폰(106)과 하나 이상의 특성을 공유하는 컴포넌트에 의해 캡처될 수 있다.
단계 510에서, 오디오 데이터로부터 현재 텍스트가 생성된다. 이 단계는 도 4의 단계 410과 하나 이상의 특성을 공유할 수 있다. 예를 들어, STT 모듈(102)과 하나 이상의 특성을 공유하는 컴포넌트는 오디오 데이터에 기초하여 텍스트를 생성할 수 있다.
단계 515에서, 텍스트-응답 맵이 액세스된다. 텍스트-응답 맵은 텍스트-응답 맵(107)과 하나 이상의 특성을 공유할 수 있으며, 이 단계는 도 4의 단계(415)와 하나 이상의 특성을 공유할 수 있다. 예를 들어, 맵핑 모듈(103)은 현재 텍스트가 텍스트-응답 맵(107)의 텍스트 맵핑에 포함되는지 여부를 결정하기 위해 텍스트-응답 맵(107)에 액세스할 수 있다.
단계 520에서, 하나 이상의 컴포넌트는 텍스트-응답 맵이 현재 텍스트와 일치하는 텍스트를 가진 텍스트 맵핑을 포함하지 않는다고 결정한다. 그 결정은 텍스트-응답 맵(107)에서 맵핑 모듈(103)과 하나 이상의 특성을 공유하는 컴포넌트에 의해 수행될 수 있다. 예를 들면, 맵핑 모듈(107)은 텍스트-응답 맵에 액세스하고, 맵에 저장된 텍스트를 확인할 수 있고, 본 명세서에 설명된 바와 같이 텍스트 매핑들 중 어느 것도 현재 텍스트와 일치하지 않고, 일치하는 텍스트 매핑 중 어느 것도 유효한 데이터를 나타내는 신뢰 점수를 갖지 않으며, 및/또는 임의의 일치하는 텍스트 매핑이 만료되었다고 결정할 수 있다.
단계 525에서, 캡처된 오디오 데이터 및/또는 현재 텍스트가 원격 시스템에 제공된다. 원격 시스템은 원격 시스템(159)과 하나 이상의 특성을 공유할 수 있다. 예를 들어, 원격 컴포넌트 모듈(104)은 여기에 설명된 바와 같이 추가 처리를 위해 원격 시스템(150)에 오디오 데이터 및/또는 텍스트를 제공할 수 있다. 그 후 원격 시스템(150)은 오디오 데이터 및/또는 현재 텍스트에 대한 응답을 결정할 수 있다.
단계 530에서, 응답은 원격 시스템에 의해 클라이언트 장치에 제공된다. 일부 구현에서, 응답을 생성하기 위해 원격 시스템에 의해 사용되는 에이전트의 표시와 함께 응답이 수신될 수 있다. 일부 구현에서, 응답이 정적인지 여부의 표시와 함께 응답이 수신될 수 있다. 대신에 응답이 동적이라는 표시와 함께 응답이 수신되면, 응답은 렌더링될 수 있지만 도 5의 방법의 나머지 단계에 따라 텍스트-응답 맵에 저장되지 않을 수 있다.
단계 535에서, 텍스트-응답 맵이 업데이트된다. 텍스트-응답 맵을 업데이트하는 것은 서버 응답에 맵핑된 현재 텍스트를 포함하는 새로운 텍스트 맵핑을 생성하는 것을 포함할 수 있다. 일부 구현에서, 텍스트-응답 맵을 업데이트하는 것은 새로운 텍스트 맵핑 및/또는 응답과 함께 수신된 표시(예를 들어, 응답이 정적인지 동적인지, 에이전트가 응답을 생성하는 데 사용되었는지)와 함께 신뢰도 점수를 저장하는 것을 포함할 수 있다.
단계 540에서, 제2 오디오 데이터가 캡처된다. 단계 540은 도 4의 단계 505 및/또는 단계 405와 하나 이상의 특성을 공유할 수 있다.
단계 545에서, 제2 오디오 데이터로부터 제2 텍스트가 생성된다. 단계 545는도 4의 단계 510 및/또는 단계 410과 하나 이상의 특성을 공유할 수 있다.
단계 550에서, 하나 이상의 컴포넌트는 현재 텍스트가 제2 텍스트와 일치한다고 결정한다. 이는 맵핑 모듈(103)과 하나 이상의 특성을 공유하고 도 4의 단계(420)와 하나 이상의 특성을 공유할 수 있는 컴포넌트에 의해 결정될 수 있다. 예를 들어, 맵핑 모듈(103)은 단계 535에서 텍스트-응답 맵핑에 저장된 텍스트 맵핑의 텍스트가 제2 텍스트와 일치한다고 결정할 수 있다.
단계 555에서, 하나 이상의 컴포넌트는 응답이 렌더링되도록 한다. 이 단계는 도 4의 단계 430과 하나 이상의 특성을 공유할 수 있다. 예를 들어, 렌더링 모듈(105)과 하나 이상의 특성을 공유하는 컴포넌트는 응답이 렌더링되게 할 수 있다. 선택적으로, 응답의 렌더링은 원격 시스템(150)으로 송신되는 제2 오디오 데이터 또는 제2 오디오 데이터를 나타내는 데이터없이 발생할 수 있다.
도 6은 본 명세서에 설명된 기술의 하나 이상의 양태를 수행하기 위해 선택적으로 사용될 수 있는 예시적인 컴퓨팅 장치(610)의 블록도이다. 예를 들어, 클라이언트 장치(100)는 예시적인 컴퓨팅 장치(610)의 하나 이상의 컴포넌트를 포함할 수 있고 및/또는 하나 이상의 원격 시스템(150)은 예시적인 컴퓨팅 장치(610)의 하나 이상의 컴포넌트를 포함할 수 있다.
컴퓨팅 장치(610)는 전형적으로 버스 서브시스템(612)을 통해 복수의 주변 장치와 통신하는 적어도 하나의 프로세서(614)를 포함한다. 이러한 주변 장치는, 예를 들어, 메모리 서브시스템(625) 및 파일 저장(스토리지) 서브시스템(626), 사용자 인터페이스 출력 장치(620), 사용자 인터페이스 입력 장치(622) 및 네트워크 인터페이스 서브시스템(616)을 포함하는 저장 서브시스템(624)을 포함할 수 있다. 입력 및 출력 장치는 컴퓨팅 장치(610)와의 사용자 상호 작용을 허용한다. 네트워크 인터페이스 서브시스템(616)은 외부 네트워크에 인터페이스를 제공하고 다른 컴퓨팅 장치에서 대응하는 인터페이스 장치에 연결된다.
사용자 인터페이스 입력 장치(622)는 키보드, 마우스, 트랙볼, 터치 패드 또는 그래픽 태블릿과 같은 포인팅 장치, 스캐너, 디스플레이에 통합된 터치 스크린, 음성 인식 시스템과 같은 오디오 입력 장치, 마이크로폰 및/또는 다른 유형의 입력 장치를 포함할 수 있다. 일반적으로, "입력 장치"라는 용어의 사용은 모든 가능한 유형의 장치 및 정보를 컴퓨팅 장치(610) 또는 통신 네트워크에 입력하는 방법을 포함하도록 의도된다.
사용자 인터페이스 출력 장치(620)는 디스플레이 서브시스템, 프린터, 팩스기, 또는 오디오 출력 장치와 같은 비 시각적 디스플레이를 포함할 수 있다. 디스플레이 서브시스템은 음극선 관(CRT), 액정 디스플레이(LCD)와 같은 평판 장치, 투영 장치, 또는 가시 이미지를 생성하기 위한 다른 메커니즘을 포함할 수 있다. 디스플레이 서브시스템은 또한 오디오 출력 장치를 통한 것과 같은 비 시각적 디스플레이를 제공할 수 있다. 일반적으로, "출력 장치"라는 용어의 사용은 모든 가능한 유형의 장치 및 컴퓨팅 장치(610)로부터 사용자 또는 다른 기계 또는 컴퓨팅 장치로 정보를 출력하는 방법을 포함하도록 의도된다.
저장(스토리지) 서브시스템(624)은 본 명세서에 설명된 일부 또는 모든 모듈의 기능을 제공하는 프로그래밍 및 데이터 구성을 저장한다. 예를 들어, 저장 서브시스템(624)은 도 1-3에 도시된 다양한 컴포넌트를 구현하기 위해 및/또는 도 2-5의 방법의 선택된 양태를 수행하는 로직을 포함할 수 있다.
이들 소프트웨어 모듈은 일반적으로 프로세서(614)에 의해 단독으로 또는 다른 프로세서와의 조합으로 실행된다. 저장 서브시스템(624)에 사용되는 메모리(625)는 프로그램 실행 동안 명령 및 데이터의 저장을 위한 메인 랜덤 액세스 메모리(RAM)(630) 및 고정 명령이 저장된 판독 전용 메모리(ROM)(632)를 포함하는 복수의 메모리를 포함할 수 있다. 파일 저장 서브시스템(626)은 프로그램 및 데이터 파일을 위한 영구 저장을 제공할 수 있으며, 하드 디스크 드라이브, 플로피 디스크 드라이브 및 관련 이동식 매체, CD-ROM 드라이브, 광학 드라이브 또는 이동식 매체 카트리지를 포함할 수 있다. 특정 구현의 기능을 구현하는 모듈은 파일 저장 서브시스템(626)에 의해 저장 서브시스템(624) 또는 프로세서(들)(614)에 의해 액세스 가능한 다른 머신에 저장될 수 있다.
버스 서브시스템(612)은 컴퓨팅 장치(610)의 다양한 컴포넌트 및 서브시스템이 의도된대로 서로 통신하도록 하는 메커니즘을 제공한다. 버스 서브시스템(612)이 단일 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템의 대안적인 구현은 다중 버스를 사용할 수 있다.
컴퓨팅 장치(610)는 워크스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서버 팜, 또는 임의의 다른 데이터 처리 시스템 또는 컴퓨팅 장치를 포함하는 다양한 유형일 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 6에 도시된 컴퓨팅 장치(610)의 설명은 일부 구현 예를 설명하기 위한 특정 예로서 만 의도된다. 컴퓨팅 장치(610)의 많은 다른 구성은 도 6에 도시된 컴퓨팅 장치보다 더 많거나 적은 컴포넌트를 가질 수 있다.
본 명세서에서 설명된 특정 구현이 사용자에 관한 개인 정보(예: 다른 전자 통신에서 추출된 사용자 데이터, 사용자의 소셜 네트워크에 대한 정보, 사용자의 위치, 사용자 시간, 사용자의 생체 정보 및 사용자의 활동 및 인구 통계 정보, 사용자 간의 관계 등)를 수집 또는 사용할 수 있는 상황에서, 사용자는 정보 수집 여부, 개인 정보 저장 여부, 개인 정보 사용 여부 및 사용자에 대한 정보 수집 방법, 저장 및 사용 방법을 제어할 수 있는 하나 이상의 기회를 제공받는다. 즉, 본 명세서에서 설명된 시스템 및 방법은 관련 사용자로부터 명시적인 승인을 받은 경우에만 사용자 개인 정보를 수집, 저장 및/또는 사용한다.
예를 들어, 사용자는 프로그램 또는 기능이 특정 사용자 또는 프로그램 또는 기능과 관련된 다른 사용자에 대한 사용자 정보를 수집하는지 여부를 제어할 수 있다. 개인 정보를 수집할 각 사용자는 해당 사용자와 관련된 정보 수집을 제어하고 정보의 수집 여부와 정보의 어느 부분을 수집할 것인지에 대한 권한 또는 권한을 부여할 수 있는 하나 이상의 옵션이 제공받는다. 예를 들어, 통신 네트워크를 통해 사용자에게 하나 이상의 이러한 제어 옵션이 제공될 수 있다. 또한, 특정 데이터는 개인 식별 정보가 제거되도록 저장되거나 사용되기 전에 하나 이상의 방식으로 처리될 수 있다. 일례로서, 개인의 식별 가능한 정보가 결정될 수 없도록 사용자의 신원이 취급될 수 있다. 다른 예로서, 사용자의 지리적 위치는 더 큰 영역으로 일반화되어 사용자의 특정 위치가 결정될 수 없다.

Claims (23)

  1. 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법으로서,
    클라이언트 장치의 적어도 하나의 마이크로폰을 통해 사용자의 음성 발화를 캡처하는 오디오 데이터를 캡처하는 단계;
    오디오 데이터를 처리하여 음성 발화에 해당하는 현재 텍스트를 생성하는 단계 -현재 텍스트를 생성하기 위해 오디오 데이터를 처리하는 것은 클라이언트 장치에 로컬로 저장된 음성-텍스트 모델을 활용함-;
    클라이언트 장치에 로컬로 저장된 텍스트-응답 맵에 액세스하는 단계 -텍스트-응답 맵은 복수의 맵핑들을 포함하고; 맵핑들 각각은 클라이언트 장치에 의해 캡처한 이전 오디오 데이터에서 이전에 생성된 해당 텍스트에 기초하고 그리고 이전 오디오 데이터 및 해당 텍스트 중 적어도 하나를 원격 시스템으로 송신하는 것에 응답하여 원격 시스템으로부터 이전에 수신된 해당 응답에 기초하여 해당 텍스트와 해당 응답 간의 해당 직접적인 관계를 정의함-;
    상기 텍스트-응답 맵의 해당 텍스트가 현재 텍스트와 일치하는지 여부를 결정하는 단계; 그리고
    텍스트-응답 맵의 해당 텍스트 중 소정의 텍스트가 현재 텍스트와 일치한다는 결정에 응답하여:
    텍스트-응답 맵의 해당 응답 중 소정의 응답을 선택하는 단계 -소정의 응답을 선택하는 단계는 맵핑들 중에서 소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑을 포함하는 텍스트-응답 맵을 기반으로 함-; 그리고
    소정의 응답이 클라이언트 장치와 관련된 하나 이상의 사용자 인터페이스 출력 장치를 통해 렌더링되도록 하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  2. 제1항에 있어서, 상기 방법은,
    오디오 데이터 또는 현재 텍스트를 원격 시스템으로 송신하는 단계;
    오디오 데이터 또는 현재 텍스트를 송신하는 것에 응답하여 원격 시스템으로부터 음성 발화에 응답하는 서버 응답을 수신하는 단계;
    서버 응답을 소정의 응답과 비교하는 단계; 그리고
    상기 비교를 기반으로 텍스트-응답 맵을 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  3. 제2항에 있어서, 상기 서버 응답을 수신하는 단계는 상기 소정의 응답의 적어도 일부가 상기 하나 이상의 사용자 인터페이스 출력 장치를 통해 렌더링된 후에 발생하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  4. 제2항 또는 제3항에 있어서, 서버 응답을 소정의 응답과 비교하는 단계는 서버 응답이 소정의 응답과 다르다는 것을 나타내며;
    텍스트-응답 맵을 업데이트하는 단계는,
    서버 응답이 소정의 응답과 다르다는 것을 나타내는 비교를 기반으로:
    소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑을 업데이트하여 소정의 텍스트와 직접적인 관계를 갖는 것으로 서버 응답을 정의하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  5. 제2항 또는 제3항에 있어서, 서버 응답을 소정의 응답과 비교하는 단계는 서버 응답이 소정의 응답과 다르다는 것을 나타내며;
    텍스트-응답 맵을 업데이트하는 단계는,
    서버 응답이 소정의 응답과 다르다는 것을 나타내는 비교를 기반으로:
    텍스트-응답 맵에서, 소정의 텍스트와 직접적인 관계가 있는 것으로 소정의 응답을 정의하는 맵핑을 제거하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  6. 제5항에 있어서, 상기 텍스트-응답 맵을 업데이트하는 단계는,
    서버 응답이 소정의 응답과 다르다는 것을 나타내는 비교를 기반으로:
    소정의 텍스트가 응답에 맵핑되는 것을 방지하는 데이터를 텍스트-응답 맵에 저장하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  7. 제2항 또는 제3항에 있어서, 상기 텍스트-응답 맵을 업데이트하는 단계는 소정의 텍스트와의 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑과 관련된 신뢰도 점수를 조정하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  8. 제7항에 있어서, 소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑과 관련된 신뢰도 점수를 조정하는 단계는,
    상기 비교가 소정의 응답이 서버 응답과 일치함을 나타내는 경우 신뢰도를 더 잘 나타내도록 신뢰도 점수를 조정하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  9. 제7항에 있어서, 소정의 응답을 선택하는 단계는 임계값을 만족하는 맵핑과 관련된 신뢰도 점수에 더 기초하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  10. 선행하는 청구항 중 어느 한 항에 있어서, 상기 방법은,
    클라이언트 장치의 적어도 하나의 마이크로폰을 통해 추가 음성 발화를 캡처하는 추가 오디오 데이터를 캡처하는 단계;
    추가 음성 발화에 대응하는 추가 텍스트를 생성하기 위해 클라이언트 장치에 로컬로 저장된 음성-텍스트 모델을 이용하여 추가 오디오 데이터를 처리하는 단계;
    텍스트-응답 맵의 해당 텍스트가 추가 텍스트와 일치하는지 여부를 결정하는 단계; 그리고
    텍스트-응답 맵의 해당 텍스트가 추가 텍스트와 일치하지 않는다는 결정에 대한 응답으로:
    추가 텍스트 및 추가 오디오 데이터 중 적어도 하나를 서버 시스템으로 송신하는 단계;
    추가 텍스트 및 추가 오디오 데이터 중 적어도 하나를 송신하는 것에 응답하여, 추가 응답을 서버 시스템으로부터 수신하는 단계; 그리고
    추가 응답이 클라이언트 장치와 관련된 하나 이상의 사용자 인터페이스 출력 장치를 통해 렌더링되도록 하는 단계를 더 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  11. 제10항에 있어서, 상기 방법은,
    추가 응답과 함께 서버 시스템으로부터 서버 응답이 추가 텍스트에 대한 정적(static) 응답이라는 표시를 수신하는 단계; 그리고
    서버 응답이 추가 텍스트에 대한 정적 응답이라는 표시를 수신하는 것에 응답하여:
    추가 텍스트와 추가 응답 간의 새로운 직접적인 관계를 정의하는 새로운 맵핑을 텍스트-응답 맵에 추가하는 단계를 더 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  12. 선행하는 청구항 중 어느 한 항에 있어서, 상기 방법이 수행될 때 상기 클라이언트 장치는 인터넷에 대한 연결이 없는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  13. 선행하는 청구항 중 어느 한 항에 있어서, 상기 방법은,
    소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑과 관련된 신뢰도 점수를 결정하는 단계를 더 포함하며,
    소정의 응답이 렌더링되도록 하는 단계는,
    임계값을 만족하는 신뢰도 점수에 응답하여, 소정의 응답이 오디오 데이터 또는 현재 텍스트를 원격 시스템으로 송신하지 않고 렌더링되도록 하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  14. 선행하는 청구항 중 어느 한 항에 있어서, 상기 방법은,
    소정의 응답이 렌더링되기 전에 오디오 데이터 또는 현재 텍스트를 원격 시스템으로 송신하는 단계;
    소정의 텍스트와 직접적인 관계를 갖는 것으로 소정의 응답을 정의하는 맵핑과 관련된 신뢰도 점수를 결정하는 단계;
    신뢰도 점수에 기초하여, 오디오 데이터 또는 현재 텍스트의 송신에 응답하여 원격 시스템으로부터 음성 발화에 응답하는 서버 응답을 수신하기를 기다리는 임계 시간 양을 결정하는 단계를 더 포함하며,
    소정의 응답이 렌더링되도록 하는 단계는,
    임계 시간 양이 만료되기 전에 서버 응답이 수신되지 않으면 소정의 응답이 임계 시간 양이 만료될 때 렌더링되도록 하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  15. 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법으로서,
    클라이언트 장치의 적어도 하나의 마이크로폰을 통해 사용자의 음성 발화를 캡처하는 오디오 데이터를 캡처하는 단계;
    오디오 데이터를 처리하여 음성 발화에 해당하는 현재 텍스트를 생성하는 단계 -현재 텍스트를 생성하기 위해 오디오 데이터를 처리하는 것은 클라이언트 장치에 로컬로 저장된 음성-텍스트 모델을 활용함-;
    클라이언트 장치에 로컬로 저장된 텍스트-응답 맵에 액세스하는 단계 -텍스트-응답 맵은 복수의 맵핑들을 포함하고; 맵핑들 각각은 클라이언트 장치에 의해 캡처한 이전 오디오 데이터에서 이전에 생성된 해당 텍스트에 기초하고 그리고 이전 오디오 데이터 및 해당 텍스트 중 적어도 하나를 원격 시스템으로 송신하는 것에 응답하여 원격 시스템으로부터 이전에 수신된 해당 응답에 기초하여 해당 텍스트와 해당 응답 간의 해당 직접적인 관계를 정의함-;
    클라이언트 장치에 의해, 텍스트-응답 맵의 해당 텍스트가 현재 텍스트와 일치하지 않는다고 결정하는 단계;
    원격 시스템으로 오디오 데이터 또는 현재 텍스트를 송신하는 단계;
    오디오 데이터 또는 현재 텍스트를 제출하는 것에 응답하여 원격 시스템으로부터 응답을 수신하는 단계;
    소정의 텍스트 맵핑을 추가하여 텍스트-응답 맵을 업데이트하는 단계 -소정의 텍스트 맵핑은 현재 텍스트와 응답 사이의 직접적인 관계를 정의함-;
    텍스트-응답 맵을 업데이트한 후, 제2 오디오 데이터를 캡처하는 단계;
    클라이언트 장치에 로컬로 저장된 음성-텍스트 모델을 이용하여 제2 텍스트를 생성하기 위해 제2 오디오 데이터를 처리하는 단계;
    텍스트-응답 맵에 기초하여, 현재 텍스트가 제2 텍스트와 일치하는지를 결정하는 단계; 그리고
    현재 텍스트가 제2 텍스트와 일치한다는 결정에 응답하여 그리고 현재 텍스트와 응답 간의 직접적인 관계를 정의하는 소정의 텍스트 맵핑을 포함하는 텍스트-응답 맵을 기반으로:
    클라이언트 장치와 관련된 하나 이상의 사용자 출력 장치를 통해 응답이 렌더링되도록 하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  16. 제15항에 있어서, 상기 방법은,
    응답과 함께, 응답이 정적인지 여부의 표시를 수신하는 단계를 더 포함하며,
    소정의 텍스트 맵핑을 텍스트-응답 맵에 추가하는 것은 응답이 정적(static)이라는 표시에 응답하여 발생하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  17. 제15항 또는 제16항에 있어서, 상기 텍스트-응답 맵을 업데이트하는 단계는,
    소정의 텍스트 맵핑과 관련하여 신뢰도 점수를 저장하는 단계를 더 포함하며, 신뢰도 점수는 응답이 정적일 가능성을 나타내는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  18. 제17항에 있어서, 상기 방법은,
    제2 오디오 데이터를 원격 시스템에 제출하는 단계;
    제2 오디오 데이터를 제출하는 것에 응답하여, 원격 시스템으로부터 제2 서버 응답을 수신하는 단계; 그리고
    제2 서버 응답을 기반으로 신뢰도 점수를 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  19. 제15항 내지 제18항 중 어느 한 항에 있어서, 상기 방법은,
    응답과 함께, 만료 이벤트가 발생할 때까지만 응답이 정적이라는 표시를 수신하는 단계;
    소정의 텍스트 맵핑으로 만료 이벤트의 표시를 포함하도록 텍스트-응답 맵을 업데이트하는 단계; 그리고
    만료 이벤트가 발생하면 텍스트-응답 맵에서 소정의 텍스트 맵핑을 제거하는 단계를 더 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  20. 선행하는 청구항 중 어느 한 항에 있어서, 상기 텍스트-응답 맵을 업데이트하는 단계는 상기 텍스트-응답 맵으로부터 하나 이상의 맵핑을 제거하는 단계를 포함하는 것을 특징으로 하는 클라이언트 장치의 하나 이상의 프로세서에 의해 구현되는 방법.
  21. 컴퓨팅 장치로서,
    하나 이상의 프로세서; 그리고
    하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 제1항 내지 제20항 중 어느 한 항의 방법을 수행하게 하는 컴퓨터 실행 가능 명령어를 저장하는 하나 이상의 메모리를 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  22. 제21항에 있어서, 상기 컴퓨팅 장치는 클라이언트 장치인 것을 특징으로 하는 컴퓨팅 장치.
  23. 컴퓨터 프로그램으로서,
    적어도 하나의 컴퓨팅 장치의 하나 이상의 프로세서에 의해 실행될 때, 제1항 내지 제20항 중 어느 한 항의 방법이 수행되게 하는 컴퓨터 실행 가능 명령어를 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020207037198A 2018-06-27 2018-06-27 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링 KR102517387B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237010851A KR102611386B1 (ko) 2018-06-27 2018-06-27 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/039850 WO2020005241A1 (en) 2018-06-27 2018-06-27 Rendering responses to a spoken utterance of a user utilizing a local text-response map

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237010851A Division KR102611386B1 (ko) 2018-06-27 2018-06-27 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링

Publications (2)

Publication Number Publication Date
KR20210013193A true KR20210013193A (ko) 2021-02-03
KR102517387B1 KR102517387B1 (ko) 2023-04-03

Family

ID=62986212

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207037198A KR102517387B1 (ko) 2018-06-27 2018-06-27 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링
KR1020237010851A KR102611386B1 (ko) 2018-06-27 2018-06-27 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237010851A KR102611386B1 (ko) 2018-06-27 2018-06-27 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링

Country Status (6)

Country Link
US (2) US10891958B2 (ko)
EP (2) EP3800633B1 (ko)
JP (2) JP6918255B1 (ko)
KR (2) KR102517387B1 (ko)
CN (1) CN112334976A (ko)
WO (1) WO2020005241A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11295720B2 (en) * 2019-05-28 2022-04-05 Mitel Networks, Inc. Electronic collaboration and communication method and system to facilitate communication with hearing or speech impaired participants
US11749265B2 (en) * 2019-10-04 2023-09-05 Disney Enterprises, Inc. Techniques for incremental computer-based natural language understanding
US11860914B1 (en) 2023-02-27 2024-01-02 Casetext, Inc. Natural language database generation and query system
US11861320B1 (en) 2023-02-27 2024-01-02 Casetext, Inc. Text reduction and analysis interface to a text generation modeling system
US11861321B1 (en) 2023-06-29 2024-01-02 Casetext, Inc. Systems and methods for structure discovery and structure-based analysis in natural language processing models
US11972223B1 (en) 2023-06-30 2024-04-30 Casetext, Inc. Query evaluation in natural language processing systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060070605A (ko) * 2004-12-21 2006-06-26 한국전자통신연구원 영역별 언어모델과 대화모델을 이용한 지능형 로봇 음성인식 서비스 장치 및 방법
KR20130086971A (ko) * 2012-01-26 2013-08-05 진삼순 음성인식 질의응답 시스템 및 그것의 운용방법
US20140122059A1 (en) * 2012-10-31 2014-05-01 Tivo Inc. Method and system for voice based media search
WO2017146803A1 (en) * 2016-02-24 2017-08-31 Google Inc. Facilitation of offline semantic processing in a resource-constrained device

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7240094B2 (en) * 1997-07-03 2007-07-03 Centra Software Inc. Method and system for synchronizing and serving multimedia in a distributed network
US7050977B1 (en) * 1999-11-12 2006-05-23 Phoenix Solutions, Inc. Speech-enabled server for internet website and method
US7725307B2 (en) * 1999-11-12 2010-05-25 Phoenix Solutions, Inc. Query engine for processing voice based queries including semantic decoding
US7242752B2 (en) 2001-07-03 2007-07-10 Apptera, Inc. Behavioral adaptation engine for discerning behavioral characteristics of callers interacting with an VXML-compliant voice application
US11287847B2 (en) * 2006-02-15 2022-03-29 Virtual Video Reality by Ritchey, LLC (VVRR, LLC) Human-like emulation enterprise system and method
US20080115141A1 (en) * 2006-11-15 2008-05-15 Bharat Welingkar Dynamic resource management
US8756694B2 (en) * 2007-03-30 2014-06-17 Microsoft Corporation Prevention of exploitation of update rollback
US7933777B2 (en) * 2008-08-29 2011-04-26 Multimodal Technologies, Inc. Hybrid speech recognition
US8630961B2 (en) * 2009-01-08 2014-01-14 Mycybertwin Group Pty Ltd Chatbots
US8930194B2 (en) * 2011-01-07 2015-01-06 Nuance Communications, Inc. Configurable speech recognition system using multiple recognizers
US10672399B2 (en) * 2011-06-03 2020-06-02 Apple Inc. Switching between text data and audio data based on a mapping
CN102629246B (zh) 2012-02-10 2017-06-27 百纳(武汉)信息技术有限公司 识别浏览器语音命令的服务器及浏览器语音命令识别方法
CN103295575B (zh) * 2012-02-27 2019-01-25 北京三星通信技术研究有限公司 一种语音识别方法和客户端
JP5886103B2 (ja) 2012-03-27 2016-03-16 ヤフー株式会社 応答生成装置、応答生成システム、応答生成方法および応答生成プログラム
JP5421420B2 (ja) * 2012-03-29 2014-02-19 株式会社Nttドコモ 通信サーバおよび通信方法
US9679568B1 (en) * 2012-06-01 2017-06-13 Google Inc. Training a dialog system using user feedback
KR101330671B1 (ko) 2012-09-28 2013-11-15 삼성전자주식회사 전자장치, 서버 및 그 제어방법
KR20150063423A (ko) * 2012-10-04 2015-06-09 뉘앙스 커뮤니케이션즈, 인코포레이티드 Asr을 위한 개선된 하이브리드 컨트롤러
US9064001B2 (en) * 2013-03-15 2015-06-23 Nuance Communications, Inc. Method and apparatus for a frequently-asked questions portal workflow
CN103247291B (zh) * 2013-05-07 2016-01-13 华为终端有限公司 一种语音识别设备的更新方法、装置及系统
US20170235825A1 (en) * 2013-06-26 2017-08-17 Google Inc. Identification of location-based ambient acoustic characteristics
JP2015015675A (ja) * 2013-07-08 2015-01-22 日本電気通信システム株式会社 リモートロックシステム、移動通信端末及びリモートロック方法
US9444916B2 (en) * 2013-08-26 2016-09-13 Seven Networks, Llc Enhanced caching of domain name system (DNS) and reverse DNS queries for traffic management for signaling optimization in a mobile network
WO2015041892A1 (en) * 2013-09-20 2015-03-26 Rawles Llc Local and remote speech processing
CN103593340B (zh) * 2013-10-28 2017-08-29 余自立 自然表达信息处理方法、处理及回应方法、设备及系统
JP2015106203A (ja) 2013-11-28 2015-06-08 Necパーソナルコンピュータ株式会社 情報処理装置、情報処理方法、及びプログラム
EP2887348B1 (en) * 2013-12-18 2022-05-04 Harman International Industries, Incorporated Voice recognition query response system
US8868409B1 (en) 2014-01-16 2014-10-21 Google Inc. Evaluating transcriptions with a semantic parser
US20190312973A1 (en) * 2014-02-28 2019-10-10 Ultratec, Inc. Semiautomated relay method and apparatus
US9640183B2 (en) * 2014-04-07 2017-05-02 Samsung Electronics Co., Ltd. Speech recognition using electronic device and server
US9536443B2 (en) * 2014-04-28 2017-01-03 International Business Machines Corporation Evaluating expert opinions in a question and answer system
US9324324B2 (en) * 2014-05-22 2016-04-26 Nedelco, Inc. Adaptive telephone relay service systems
KR102304052B1 (ko) * 2014-09-05 2021-09-23 엘지전자 주식회사 디스플레이 장치 및 그의 동작 방법
US9508339B2 (en) 2015-01-30 2016-11-29 Microsoft Technology Licensing, Llc Updating language understanding classifier models for a digital personal assistant based on crowd-sourcing
US20160262017A1 (en) * 2015-03-04 2016-09-08 Microsoft Technology Licensing, Llc Personal assistant authentication
US10621218B2 (en) * 2015-03-30 2020-04-14 Avaya Inc. Systems and methods for compiling and dynamically updating a collection of frequently asked questions
US9922138B2 (en) * 2015-05-27 2018-03-20 Google Llc Dynamically updatable offline grammar model for resource-constrained offline device
US10388277B1 (en) * 2015-06-25 2019-08-20 Amazon Technologies, Inc. Allocation of local and remote resources for speech processing
US10325590B2 (en) * 2015-06-26 2019-06-18 Intel Corporation Language model modification for local speech recognition systems using remote sources
US10152534B2 (en) * 2015-07-02 2018-12-11 International Business Machines Corporation Monitoring a corpus for changes to previously provided answers to questions
CN105261366B (zh) * 2015-08-31 2016-11-09 努比亚技术有限公司 语音识别方法、语音引擎及终端
JP6673580B2 (ja) 2015-10-07 2020-03-25 Necソリューションイノベータ株式会社 生成装置、生成方法、生成プログラム、および認識システム
US10169423B2 (en) * 2016-01-06 2019-01-01 International Business Machines Corporation Ranking answers in ground truth of a question-answering system
CN108604176A (zh) * 2016-02-18 2018-09-28 索尼公司 信息处理装置、信息处理方法及程序
CN108010523B (zh) * 2016-11-02 2023-05-09 松下电器(美国)知识产权公司 信息处理方法以及记录介质
US10796217B2 (en) * 2016-11-30 2020-10-06 Microsoft Technology Licensing, Llc Systems and methods for performing automated interviews
US10382624B2 (en) * 2017-03-01 2019-08-13 Speech-Soft Solutions Inc. Bridge for non-voice communications user interface to voice-enabled interactive voice response system
US10353480B2 (en) * 2017-04-17 2019-07-16 Essential Products, Inc. Connecting assistant device to devices
CN107393541B (zh) * 2017-08-29 2021-05-07 百度在线网络技术(北京)有限公司 信息验证方法和装置
US10673895B2 (en) * 2017-12-01 2020-06-02 KnowBe4, Inc. Systems and methods for AIDA based grouping
US10348761B2 (en) * 2017-12-01 2019-07-09 KnowBe4, Inc. Systems and methods for situational localization of AIDA
CN108010531B (zh) * 2017-12-14 2021-07-27 南京美桥信息科技有限公司 一种可视智能问询方法及系统
CN108170034B (zh) * 2017-12-29 2021-06-08 上海器魂智能科技有限公司 智能设备控制方法、装置、计算机设备和储存介质
US11201849B2 (en) * 2018-01-15 2021-12-14 Lenovo (Singapore) Pte. Ltd. Natural language connectivity
US10679620B2 (en) * 2018-03-06 2020-06-09 GM Global Technology Operations LLC Speech recognition arbitration logic
US10777203B1 (en) * 2018-03-23 2020-09-15 Amazon Technologies, Inc. Speech interface device with caching component
JP2019185393A (ja) * 2018-04-10 2019-10-24 株式会社沖データ 端末装置および画像形成システム
US11068518B2 (en) * 2018-05-17 2021-07-20 International Business Machines Corporation Reducing negative effects of service waiting time in humanmachine interaction to improve the user experience
US10235999B1 (en) * 2018-06-05 2019-03-19 Voicify, LLC Voice application platform
US11437029B2 (en) * 2018-06-05 2022-09-06 Voicify, LLC Voice application platform

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060070605A (ko) * 2004-12-21 2006-06-26 한국전자통신연구원 영역별 언어모델과 대화모델을 이용한 지능형 로봇 음성인식 서비스 장치 및 방법
KR20130086971A (ko) * 2012-01-26 2013-08-05 진삼순 음성인식 질의응답 시스템 및 그것의 운용방법
US20140122059A1 (en) * 2012-10-31 2014-05-01 Tivo Inc. Method and system for voice based media search
WO2017146803A1 (en) * 2016-02-24 2017-08-31 Google Inc. Facilitation of offline semantic processing in a resource-constrained device

Also Published As

Publication number Publication date
KR102517387B1 (ko) 2023-04-03
US20210097999A1 (en) 2021-04-01
CN112334976A (zh) 2021-02-05
EP3800633B1 (en) 2023-10-11
US20200342862A1 (en) 2020-10-29
WO2020005241A1 (en) 2020-01-02
KR20230047514A (ko) 2023-04-07
JP6918255B1 (ja) 2021-08-11
EP3613037B1 (en) 2020-10-21
JP2021176015A (ja) 2021-11-04
JP7256237B2 (ja) 2023-04-11
EP3800633A1 (en) 2021-04-07
US10891958B2 (en) 2021-01-12
JP2021524065A (ja) 2021-09-09
EP3613037A1 (en) 2020-02-26
KR102611386B1 (ko) 2023-12-08

Similar Documents

Publication Publication Date Title
KR102517387B1 (ko) 로컬 텍스트-응답 맵을 활용하여 사용자의 음성 발화에 대한 응답 렌더링
CN110741363B (zh) 使用机器学习处理自然语言以基于槽描述符确定槽值
CN112262430A (zh) 自动确定经由自动助理界面接收到的口头话语的语音识别的语言
US11966764B2 (en) Adapting client application of feature phone based on experiment parameters
CN113614825A (zh) 用于自动语音识别的字词网格扩增
KR102609430B1 (ko) 호출 구문 검출에서 노이즈 감소 기술의 선택적 적응 및 활용
US20230169102A1 (en) Determining responsive content for a compound query based on a set of generated sub-queries
WO2019031268A1 (ja) 情報処理装置、及び情報処理方法
US20220415305A1 (en) Speech generation using crosslingual phoneme mapping
US20220284049A1 (en) Natural language understanding clarifications
US20230230578A1 (en) Personalized speech query endpointing based on prior interaction(s)
US20220293109A1 (en) Device arbitration for local execution of automatic speech recognition
US20220254330A1 (en) Speech synthesis utilizing audio waveform difference signal(s)

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant