KR102178896B1 - 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공 - Google Patents

선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공 Download PDF

Info

Publication number
KR102178896B1
KR102178896B1 KR1020197000070A KR20197000070A KR102178896B1 KR 102178896 B1 KR102178896 B1 KR 102178896B1 KR 1020197000070 A KR1020197000070 A KR 1020197000070A KR 20197000070 A KR20197000070 A KR 20197000070A KR 102178896 B1 KR102178896 B1 KR 102178896B1
Authority
KR
South Korea
Prior art keywords
resource
user
personal assistance
assistance module
constrained device
Prior art date
Application number
KR1020197000070A
Other languages
English (en)
Other versions
KR20190012255A (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 구글 엘엘씨
Publication of KR20190012255A publication Critical patent/KR20190012255A/ko
Application granted granted Critical
Publication of KR102178896B1 publication Critical patent/KR102178896B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/16Communication-related supplementary services, e.g. call-transfer or call-hold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech 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/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72522
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 명세서에서는 자원 제약형 장치상에 전달되고 구현되는 유한 상태 머신을 생성하기 위해 온라인 시맨틱 프로세서를 활용하는 기술을 설명한다. 다양한 구현예들에서, 사용자 요청은 개인 보조 모듈에 의해 수신될 수 있다. 사용자 요청을 나타내는 데이터는 예를 들어 개인 보조 모듈에 의해 온라인 시맨틱 프로세서에 업로드될 수 있다. 데이터는 예를 들어 개인 보조 모듈에 의해 온라인 시맨틱 프로세서로부터 수신될 수 있다. 상기 수신된 데이터는 개인 보조 모듈의 후보 상태들을 갖는 상태 머신을 나타낼 수 있다. 각 후보 상태는 상기 요청에 잠재적으로 응답할 수 있다. 자원 제약형 장치의 로컬 자원은 온라인 시맨틱 프로세서에서 사용할 수 없는 신호를 확인하기 위해 분석될 수 있다. 그 다음 개인 보조 모듈은 신호(들)에 기초하여 선택되는 복수의 후보 상태들 중 소정의 상태로 전환할 수 있다.

Description

선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공
본 명세서는 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공하는 것에 관한 것이다.
스마트폰, 태블릿, 독립형 음성 명령 장치 및 스마트 시계와 같은 모바일 컴퓨팅 장치에서 현재 사용할 수 있는 개인 보조 모듈은 일반적으로 모바일 장치의 일부와 온라인 또는 클라우드 기반 서비스의 일부로 구현된다. 이는 대부분의 모바일 장치가 이러한 장치의 메모리 및/또는 프로세싱 용량이 특히 온라인 또는 클라우드 기반 서비스의 용량과 비교할 때 기술적, 경제적 또는 기타 이유로 인해 제한된다는 점에서 자원 제약이 있는 것으로 간주된다는 사실에 크게 기인한다. 결과적으로, 개인 비서 모듈과 상호 작용하는 데 필요한 프로세싱 능력의 대부분은 "온라인 시맨틱(semantic) 프로세서"의 형태로 클라우드에 있을 수 있다. 그러나, 온라인 시맨틱 프로세서는 자원이 제한된 장치에서 사용할 수 있는 다양한 데이터 포인트 또는 "신호들"에 쉽게 액세스할 수 없을 수 있다. 따라서, 자원 제약형 장치로부터 온라인 시맨틱 프로세서에서 수신된 요청은 비록 자원 제약형 장치에 국부적인 하나 이상의 신호가 사용자 개입이 거의 없거나 전혀없는 모호성을 해결하기 위해 즉시 이용 가능할지라도, 모호하게 나타날 수 있다.
본 명세서는 일반적으로 자원 제약형 장치로 전달되어 구현되는 유한 상태 머신(FSM: finite state machine)을 생성하기 위해 (예를 들어, "온라인 시맨틱 프로세서"의 형태로) 클라우드의 사실상 무한한 자원을 이용하는 다양한 기술에 관한 것이다.
다양한 구현예들에서, 자원 제약형 장치는 자원 제약형 장치에 대한 로컬 자원들로부터 확인되는 하나 이상의 신호들에 적어도 부분적으로 기초하여 상기 상태 머신을 구현할 수 있다.
따라서, 일부 구현 예들에서, 방법은 자원 제약형 장치에 의해 동작되는 개인 보조 모듈에 의해 요청을 수신하는 단계; 상기 개인 보조 모듈에 의해 상기 온라인 시맨틱 프로세서에 상기 요청을 나타내는 데이터를 업로드하는 단계; 상기 개인 보조 모듈에 의해, 상기 온라인 시맨틱 프로세서로부터 상기 개인 보조 모듈의 복수의 후보 상태들을 포함하는 상태 머신을 나타내는 데이터를 수신하는 단계 -각각의 후보 상태는 잠재적으로 상기 요청에 응답함 -; 상기 개인 보조 모듈에 의해, 상기 온라인 시맨틱 프로세서에 이용 불가능한 하나 이상의 신호들을 확인하기 위해 상기 자원 제약형 장치에 로컬인 하나 이상의 자원들을 분석하는 단계; 그리고 상기 개인 보조 모듈에 의해, 상기 복수의 후보 상태들 중 소정의 상태로 전환(transitioning)시키는 단계 -상기 소정의 상태는 상기 하나 이상의 신호들에 기초하여 선택됨 -를 포함한다.
소정의 상태로의 전환에 응답하여, 개인 보조 모듈은 응답 태스크(예를 들어, 연락처(contact) 호출)를 개시할 수 있고, 이에 의해 그 요청을 수행할 수 있다. 따라서, 자원 제약형 장치는 그러한 기능성을 제공하는데 통상적으로 요구될 수 있는 프로세싱 능력을 요구하지 않으면서 외관상 복잡하고 계산 집약적인 기능(functionality)을 제공할 수 있다. 또한, 본 명세서에 설명된 방법 및 장치는 상기 기능을 제공하기 위해 공용 네트워크를 통해 자원 제약형 장치로부터 클라우드로 전송되는 민감한 사용자 데이터(예: 연락처 목록, 통화 기록 등)의 양을 감소시킬 수 있다. 이러한 방식으로 상기 데이터의 허가되지 않은 액세스 위험이 감소 될 수 있다. 유사하게, 상기 방법들 및 장치들은 상기 요청을 수행하기 위해 상기 장치와 상기 클라우드 사이에서 요구되는 교환의 수를 (2개로) 감소시킬 수 있다 (추가 정보가 요구되는 경우라 할지라도).
다양한 구현예들에서, 상기 소정의 상태는 개인 보조 모듈에 의해 전달될 출력을 포함할 수 있다. 상기 출력은 하나 이상의 입력들에 대한 요청(solicitation)을 포함할 수 있다. 다양한 구현 예들에서, 상기 방법은 상기 개인 보조 모듈이 상기 요청에 응답하여 상기 개인 보조 모듈에 의해 수신된 하나 이상의 입력들에 기초하여 상기 소정의 상태로부터 상기 복수의 후보 상태들 중 다른 상태로 전환시키는 단계를 더 포함할 수 있다.
다양한 구현예들에서, 자원 제약형 장치에 로컬인 하나 이상의 자원들은 자원 제약형 장치를 동작시키는 사용자의 연락처 리스트(contact list)를 포함할 수 있다. 다양한 구현 예들에서, 상기 방법은 개인 보조 모듈에 의해, 하나 이상의 입력들에 기초하여 연락처 리스트 내의 둘 이상의 연락처 사이의 모호성을 제거(명확하게 하는)(disambiguating)하는 단계를 더 포함할 수 있다. 다양한 구현 예들에서, 상기 방법은 개인 보조 모듈에 의해, 상기 하나 이상의 입력들에 기초하여 상기 연락처 리스트 내의 단일 연락처와 연관된 2개 이상의 주소들 또는 전화 번호들 사이의 모호성을 제거하는 단계를 더 포함할 수 있다.
다양한 구현 예들에서, 상기 요청은 연락처 리스트 내의 개인과의 전화 통화 개시 요청을 포함할 수 있다. 다양한 구현 예에서, 상기 요청은 연락처 리스트의 개인에게 메시지를 송신하라는 요청을 포함할 수 있다. 다양한 구현 예에서, 상기 요청은 연락 리스트의 개인과 연관된 위치에 대한 경로(directions) 요청을 포함할 수 있다.
다양한 구현예들에서, 자원 제약형 장치에 로컬인 하나 이상의 자원들은 자원 제약형 장치상에 설치된 복수의 애플리케이션들을 포함할 수 있다. 이 방법은 개인 보조 모듈에 의해 하나 이상의 입력들에 기초하여 둘 이상의 복수의 애플리케이션들 사이의 모호성을 제거(명확화)하는 단계를 더 포함할 수 있다.
다양한 구현예들에서, 자원 제약형 장치에 로컬인 하나 이상의 자원들은 자원 제약형 장치의 메모리에 저장된 복수의 미디어 파일들을 포함할 수 있다. 이 방법은 개인 보조 모듈에 의해 하나 이상의 입력에 기초하여 복수의 미디어 파일들 중 둘 이상 사이에서 모호성을 제거하는 단계를 더 포함할 수 있다.
다양한 구현예들에서, 하나 이상의 신호들은 사용자와 개인 보조 모듈 간의 상호 작용 이력의 하나 이상의 기록을 포함할 수 있다. 다양한 구현 예들에서, 하나 이상의 신호들은 사용자와 개인 보조 모듈 간의 상호 작용 이력의 하나 이상의 기록에 기초한 하나 이상의 통계를 포함할 수 있다. 다양한 구현 예들에서, 하나 이상의 신호들은 자원 제약형 장치의 위치 좌표를 포함할 수 있다.
다른 양태에서, 온라인 시맨틱 프로세서에 의해 수행 가능한 방법은, 자원 제약형 장치에서 동작하는 개인 보조 모듈로부터 사용자 요청을 나타내는 데이터를 수신하는 단계; 상기 개인 보조 모듈의 복수의 후보 상태들을 포함하는 상태 머신을 생성하는 단계 -각각의 후보 상태는 상기 온라인 시맨틱 프로세서에 이용 가능하지 않고 상기 자원 제약형 장치에 로컬인 자원들로부터 확인할 수 있는 하나 이상의 신호들에 의존하여 상기 요청에 잠재적으로 응답하며-; 그리고 자원 제약형 장치에 상기 상태 머신을 나타내는 데이터를 다운로드하는 단계를 포함한다.
또한, 일부 구현 예들은 메모리 및 상기 메모리에 저장된 명령어들을 실행하도록 동작 가능한 하나 이상의 프로세서를 포함하는 장치를 포함하며, 상기 명령어들은 전술한 방법들 중 임의의 것을 수행하도록 구성된다. 일부 구현 예들은 전술한 방법들 중 임의의 것을 수행하기 위해 하나 이상의 프로세서에 의해 실행 가능한 컴퓨터 명령어들을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체를 또한 포함한다.
전술한 개념들 및 본 명세서에서보다 상세하게 기술된 추가 개념들의 모든 조합은 본 명세서에 개시된 요지의 일부로서 고려될 수 있음을 이해해야 한다. 예를 들어, 본 명세서의 끝 부분에 나타난 청구된 요지의 모든 조합은 본 명세서에 개시된 요지의 부분으로 고려된다.
도 1은 컴퓨터 시스템의 예시적인 아키텍처를 도시한다.
도 2는 예시적인 분산형 음성 입력 프로세싱 환경의 블록도이다.
도 3은 도 2의 환경을 사용하여 음성 입력을 프로세싱하는 예시적인 방법을 도시하는 흐름도이다.
도 4 및 도 5는 개시된 기술들이 다양한 구현예들에 따라 다양한 시나리오들에서 어떻게 구현될 수 있는지의 예들을 도시한다.
도 6은 다양한 구현예들에 따라, 개인 보조 모듈에 의해 수행 가능한 예시적인 방법을 예시하는 흐름도이다.
도 7은 다양한 구현예들에 따라, 온라인 시맨틱 프로세서에 의해 실행 가능한 예시적인 방법을 도시하는 흐름도이다.
이하에서 설명되는 구현 예들에서, (예를 들어, "온라인 시맨틱 프로세서"의 형태인) 실질적으로 무한의 클라우드의 자원들은 제한된 장치에 전달되어 구현되는 유한 상태 머신(finite state machine)을 생성하는 데 활용된다. 다양한 구현예들에서, 자원 제약형 장치는 자원 제약형 장치에 대한 로컬 자원들로부터 확인되는 하나 이상의 신호들에 적어도 부분적으로 기초하여 상태 머신을 구현할 수 있다.
사용자가 스마트 시계에서 작동하는 개인 보조 모듈에게 "John에게 전화"하도록 지시한다고 가정해 보자. 온라인 시맨틱 프로세서는 사용자의 스마트 시계(또는 사용자와 연관된 장치들의 조정된 "에코시스템"의 다른 컴퓨팅 장치들)에 액세스할 수 없기 때문에 전화기에 John이라는 연락처들이 있는지 또는 동일한 연락처에 대해 여러 개의 번호들이 있는지 확인할 수 있다. 여러 시나리오를 처리하기 위해, 온라인 시맨틱 프로세서는 스마트 시계에 유한 상태 머신(또는 단순히 "상태 머신")을 생성하여 제공할 수 있다. 상기 상태 머신은 다수의 상태들을 포함할 수 있으며, 각각은 상응하는 출력, 동작(액션) 및/또는 다른 상태들로의 전환(transition)들을 가질 수도 있고 가지지 않을 수도 있다. 이 예에서, 제1 상태는 사용자의 스마트 시계에 "John"이라는 여러 연락처들이 있는 시나리오를 나타낼 수 있으며, 이 경우 동반 출력은 "어느 John을 의미합니까?"일 수 있다. 제2 상태는 복수의 전화 번호들(예: 직장, 휴대 전화 등)을 갖는 단일 연락처 "John"이 있는 시나리오를 나타낼 수 있으며, 이 경우 동반 출력은 "어느 전화 번호입니까?"일 수 있다. 제3 상태는 단 하나의 전화 번호와 하나의 연락처만 있는 시나리오를 나타낼 수 있으며, 동반 출력은 예를 들어 사용자의 스마트 시계로 오픈된 전화 애플리케이션에 디스플레이된 "John에게 전화중"일 수 있다. 상기 상태 머신의 제4 상태는 사용자의 연락처 리스트에 일치하는 연락처가 없는 시나리오를 나타낼 수 있으며, 이 경우 동반 출력은 "죄송합니다. 그 이름과 연락처가 없습니다."일 수 있다.
사용자의 스마트 시계가 이 상태 머신을 수신할 때, 상기 개인 보조 모듈은 스마트 시계에 로컬인 다양한 자원들(예를 들어, 로컬 메모리, 애플리케이션 데이터, 로그, 센서 등)을 폴링(poll)하여 개인 보조 모듈에 의해 사용되어 적절한 상태로 선택 및 전환할 수 있는 하나 이상의 신호들을 확인한다. 예를 들어, 사용자의 연락처 리스트에 다수의 "Johns"이 있는 경우, 상기 개인 보조 모듈은 위에서 설명한 제1 상태로 전환할 수 있다. 그러나, 사용자의 스마트 시계 연락처 리스트에 하나의 "John"만 있으면 상기 개인 보조 모듈이 제1 상태를 건너뛸(skip) 수 있다. 전화 번호가 여러 개인 단일 "John"만 있으면 상기 개인 보조 모듈이 바로 제2 상태로 전환될 수 있다. 여러 개의 "Johns"이 있고 적어도 한 명은 복수의 전화 번호가 있는 경우, 개인 보조 모듈은 처음에 제1 상태로 전환한 후, 사용자로부터 명확한 입력(모호성이 제거된 입력)을 수신한 후에 제1 상태에서 제2 상태로 전환할 수 있다.
온라인 시맨틱 프로세서로부터 수신된 상태 머신을 탐색하기 위해 개인 보조 모듈에 의해 사용될 수 있는 "신호들"은 정적 데이터 포인트들(data points)에 국한되지 않는다. 일부 구현 예들에서, 상기 신호들은 사용자와 개인 보조 모듈 간의 이력 상호 작용 데이터로부터 도출될 수 있다. 이 정보는 예를 들어 하나 이상의 로그(예: 통화 로그와 교차 참조되는 개인 보조 로그) 및/또는 다양한 로그로부터 생성된 통계로부터 사용자의 이동 전화기상에서 이용 가능할 수 있다. 예를 들어, 사용자가 가장 자주 연락하는 연락처, 사용자가 가장 최근에 연락한 연락처, 사용자가 가장 자주 또는 가장 최근에 상호 작용 한 애플리케이션들, 사용자가 특정 유형 또는 장르의 미디어 파일을 사용한 미디어 파일의 총 사용 횟수의 백분율 등을 나타내는 통계를 사용할 수 있다. 그러한 신호들에 기초하여, 사용자 입력의 요청(solicitation)없이 하나 이상의 상태들이 "스킵(skip)"(예를 들어, 자동으로 선회)될 수 있다.
선택된 구현예들에 관한 더 상세한 설명은 이하에서 설명된다. 그러나, 여기에 개시된 실시 예들은 배타적이지 않기 때문에 다른 구현 예들이 고려될 수 있음을 이해할 것이다.
도면을 참조하면, 동일한 도면 부호는 여러 도면에 걸쳐 동일한 부분을 나타내며, 도 1은 예시적인 컴퓨터 시스템(10)의 전자 컴포넌트들의 블록도이다. 시스템(10)은 전형적으로 버스 서브시스템(14)을 통해 다수의 주변 장치와 통신하는 적어도 하나의 프로세서(12)를 포함한다. 이러한 주변 장치는 예를 들어 메모리 서브시스템(18) 및 파일 저장 서브시스템(20)을 포함하는 저장 서브시스템(16), 사용자 인터페이스 입력 장치(22), 사용자 인터페이스 출력 장치(24) 및 네트워크 인터페이스 서브시스템(26)을 포함할 수 있다. 상기 입력 및 출력 장치는 사용자가 시스템(10)과 상호 작용할 수 있게 한다. 네트워크 인터페이스 서브시스템(26)은 외부 네트워크에 인터페이스를 제공하고, 다른 컴퓨터 시스템의 해당 인터페이스 장치에 연결된다.
일부 구현 예들에서, 사용자 인터페이스 입력 장치(22)는 키보드, 마우스, 트랙볼, 터치 패드 또는 그래픽 태블릿과 같은 포인팅 장치, 스캐너, 디스플레이에 통합된 터치 스크린, 음성 인식 시스템과 같은 오디오 입력 장치, 마이크로폰, 및/또는 다른 유형의 입력 장치를 포함할 수 있다. 일반적으로, 용어 "입력 장치"의 사용은 컴퓨터 시스템(10) 또는 통신 네트워크상에 정보를 입력하는 모든 가능한 유형의 장치 및 방법을 포함하도록 의도된다.
사용자 인터페이스 출력 장치(24)는 디스플레이 서브시스템, 프린터, 팩스 기계, 또는 오디오 출력 장치와 같은 비-시각적 디스플레이를 포함할 수 있다. 상기 디스플레이 서브시스템은 음극선관(CRT), 액정 디스플레이(LCD)와 같은 평판 장치, 프로젝션 장치, 또는 가시적 이미지를 생성하기 위한 다른 메커니즘을 포함할 수 있다. 디스플레이 서브시스템은 또한 오디오 출력 장치를 통한 비-시각적 디스플레이를 제공할 수 있다. 일반적으로, 용어 "출력 장치"의 사용은 컴퓨터 시스템(10)으로부터 사용자 또는 다른 기계 또는 컴퓨터 시스템으로 정보를 출력하는 모든 가능한 유형의 장치 및 방법을 포함하도록 의도된다.
저장 서브시스템(16)은 여기에 설명된 일부 또는 모든 모듈의 기능을 제공하는 프로그래밍 및 데이터 구성을 저장한다. 예를 들어, 저장 서브시스템(16)은 이하에 개시된 방법의 선택된 양태를 수행하기 위한 로직을 포함할 수 있다.
이들 소프트웨어 모듈은 일반적으로 프로세서(12) 단독으로 또는 다른 프로세서와 함께 실행된다. 저장 서브시스템(16)에서 사용되는 메모리 서브시스템(18)은 프로그램 실행 중 명령어들 및 데이터의 저장을 위한 메인 랜덤 액세스 메모리(RAM)(28) 및 고정된 명령어들이 저장되는 판독 전용 메모리(ROM)(30)를 포함하는 다수의 메모리를 포함할 수 있다. 파일 저장 서브시스템(20)은 프로그램 및 데이터 파일에 대한 영구 저장소를 제공할 수 있으며, 하드 디스크 드라이브, 관련 이동식 매체를 동반하는 플로피 디스크 드라이브, CD-ROM 드라이브, 광 드라이브 또는 이동식 매체 카트리지를 포함할 수 있다. 특정 구현예들의 기능을 구현하는 모듈은 스토리지 서브시스템(16)의 파일 저장 서브시스템(20)에 의해 저장될 수 있거나 또는 프로세서(들)(12)에 의해 액세스 가능한 다른 머신에 저장될 수 있다.
버스 서브시스템(14)은 시스템(10)의 다양한 컴포넌트들 및 서브 시스템들이 의도된 바와 같이 서로 통신하게 하는 메커니즘을 제공한다. 버스 서브시스템(14)은 단일 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템의 다른 구현 예들은 다수의 버스를 사용할 수 있다.
시스템(10)은 모바일 장치, 휴대용 전자 장치, 임베디드 장치, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 웨어러블 장치, 워크스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서버 팜, 또는 임의의 다른 데이터 처리 시스템 또는 컴퓨팅 장치를 포함하는 다양한 유형일 수 있다. 또한, 시스템(10)에 의해 구현되는 기능은 하나 이상의 네트워크, 예컨대 클라이언트-서버, P2P(peer- to-peer) 또는 다른 네트워킹 장치를 통해 서로 상호 접속된 다수의 시스템에 분산될 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 1에 도시된 시스템(10)의 설명은 단지 일부 구현 예들을 설명하기 위한 특정 예로서만 의도된다. 시스템(10)의 많은 다른 구성은 도 1에 도시된 컴퓨터 시스템보다 많거나 적은 컴포넌트들을 갖는 것이 가능하다.
이하 설명되는 구현 예들은 여기에 개시된 기능의 다양한 조합을 구현하는 하나 이상의 방법을 포함할 수 있다. 다른 구현 예들은 여기서 설명된 하나 이상의 방법과 같은 방법을 수행하기 위해 프로세서에 의해 실행 가능한 명령어들을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 또 다른 구현 예들은 메모리 및 본 명세서에 설명된 하나 이상의 방법과 같은 방법을 수행하기 위해 메모리에 저장된 명령어들을 실행하도록 동작하는 하나 이상의 프로세서를 포함하는 장치를 포함할 수 있다.
후술되는 다양한 프로그램 코드는 특정 구현 예에서 구현되는 애플리케이션에 기초하여 식별될 수 있다. 그러나, 이하의 특정 프로그램 명칭은 단지 편의를 위해 사용된다는 것을 이해해야 한다. 또한, 컴퓨터 프로그램이 루틴, 절차, 방법, 모듈, 객체 등으로 구성될 수 있는 수많은 방식뿐만 아니라, 일반적인 컴퓨터(예: 운영 체제, 라이브러리, API, 애플리케이션, 애플릿 등) 내에 프로그램 기능이 상주하는 다양한 소프트웨어 계층들 사이에 할당될 수 있는 다양한 방식들이 주어진다면, 일부 구현 예들은 여기서 설명된 프로그램 기능의 특정 구성 및 할당에 제한되지 않을 수도 있다는 것을 알아야 한다.
또한, 임의의 프로그램 코드에 의해 수행되거나 임의의 루틴, 워크플로우 등에서 수행될 수도 있는 본 명세서에 기술된 다양한 동작은 분리, 재정렬, 생략, 순차적으로 또는 병렬로 수행되거나 및/또는 다른 기술로 보충될 수 있으며, 따라서 일부 구현 예들은 여기서 설명된 특정 동작 시퀀스에 제한되지 않는다.
도 2는 예를 들어, 온라인 시맨틱 프로세서(54)와 같은 온라인 서비스와 통신하는 음성 가능 장치(voice-enabled device)(52)와 함께 사용하기 위한 예시적인 분산형 음성 입력 프로세싱 환경(50)을 도시한다. 이하에 설명되는 구현 예들에서, 예를 들어, 음성 가능 장치(52)는 셀룰러 전화 또는 태블릿 컴퓨터와 같은 이동 장치로 기술된다. 그러나, 다른 구현 예들은 다양한 다른 음성 가능 장치를 이용할 수 있으므로, 이후 이동 장치에 대한 참조는 단지 이하의 설명을 간략화하기 위한 것일 뿐이다. 예를 들어, 랩톱 컴퓨터, 시계, 헤드 장착형 장치, 가상 또는 증강 현실 장치, 다른 착용형 장치, 오디오/비디오 시스템, 내비게이션 시스템, 자동차, 및 기타 차량 시스템, 독립형 음성 명령 장치 등을 포함하여, 여기에 기술된 기능을 무수히 많은 유형의 음성 가능 장치가 사용할 수 있다. 더욱이, 그러한 음성 작동형 장치들 중 많은 것들은 이러한 장치들의 메모리 및/또는 프로세싱 용량이 기술, 경제적 또는 다른 이유로 제한될 수 있다는 점에서, 특히 무제한 컴퓨팅 자원을 개별 태스크에 사용할 수 있는 온라인 또는 클라우드 기반 서비스의 능력과 비교할 때 자원 제약이 있는 것으로 간주될 수 있다.
일부 구현 예들에서, 온라인 시맨틱 프로세서(54)는, 예를 들어 다수의 사용자로부터의 대량의 요청을 처리하기에 적합한 소프트웨어를 실행하는 고성능 컴퓨터의 서버 팜 또는 클러스터를 사용하는 클라우드 기반 구조를 사용하는 클라우드 기반 서비스로서 구현될 수 있다. 온라인 시맨틱 프로세서(54)는 음성 기반 요청들에 제한되지 않을 수 있고, 다른 유형의 요청들, 예컨대 텍스트 기반 요청, 이미지 기반 요청 등을 처리할 수 있다. 일부 구현 예들에서, 온라인 시맨틱 프로세서(54)는 알람 또는 리마인더 설정, 리스트 관리, 전화기, 텍스트, 이메일 등을 통한 다른 사용자와의 통신 개시 또는 음성 입력을 통해 개시될 수 있는 다른 동작 수행과 같은 음성 기반 요청을 처리할 수 있다. 본 개시의 목적을 위해, 음성 기반 요청들이 검색을 개시하고, 질문을 제기하고, 명령 발행 등을 수행하는지 여부에 관계없이, 음성 기반 요청들 및 다른 형태의 음성 입력을 총칭하여 음성 기반 요청들로 지칭될 수 있다. 따라서, 예를 들어, 하나 이상의 단어 또는 구를 포함하는 임의의 음성 입력은 도시된 구현 예들과 관련하여 음성 기반 요청으로 간주될 수 있다.
도 2의 구현 예에서, 음성 가능 장치(52)에 의해 수신된 음성 입력은 도 2에서 개인 보조 모듈(56)의 형태를 취하는 음성 작동형 애플리케이션(또는 "app")에 의해 프로세싱된다. 다른 구현예들에서, 음성 입력은 음성 가능 장치(52)의 운영 체제 또는 펌웨어 내에서 처리될 수 있다. 도시된 구현 예에서, 개인 보조 모듈(56)은 음성 액션 모듈(58), 온라인 인터페이스 모듈(60) 및 렌더(Render)/동기화 모듈(62)을 포함한다. 음성(voice) 액션 모듈(58)은 개인 보조 모듈(56)로 향하는 음성 입력을 수신하고, 음성 입력의 분석 및 음성 가능 장치(52)의 사용자에 대한 하나 이상의 동작(액션)들의 수행을 조정한다. 온라인 인터페이스 모듈(60)은 온라인 시맨틱 프로세서(54)에 음성 입력을 포워딩하고 이에 대한 응답을 수신하는 것을 포함하여 온라인 시맨틱 프로세서(54)와의 인터페이스를 제공한다. 렌더/동기화 모듈(62)은, 예를 들어, 시각적 디스플레이, 음성 오디오, 또는 특정 음성 가능 장치에 적합한 다른 피드백 인터페이스를 통해 사용자에 대한 응답 렌더링을 관리한다. 또한, 일부 구현 예들에서, 모듈(62)은 또한, 예를 들어, 응답 또는 동작이 온라인 검색 서비스에서 사용자에 대해 유지되는 데이터에 영향을 줄 때마다(예를 들어, 음성 입력이 클라우드 기반 캘린더에서 유지되는 약속의 생성(appointment creation)을 요청하는 경우), 온라인 시맨틱 프로세서(54)와의 동기화를 처리한다.
개인 보조 모듈 (56)은, 예를 들어 스트리밍 음성-텍스트 모듈(64) 및 파서 모듈(68), 대화 관리자 모듈(66), 액션 빌더(builder) 모듈(72)을 포함하는 시맨틱 프로세서 모듈(66)을 포함하는, 음성 입력을 처리하기 위해 다양한 미들웨어, 프레임워크, 운영 체제 및/또는 펌웨어 모듈에 의존할 수 있다.
모듈(64)은, 예를 들어, 디지털 오디오 데이터의 형태로 음성 입력의 오디오 레코딩을 수신하고, 디지털 오디오 데이터를 하나 이상의 텍스트 단어들 또는 구들(본 명세서에서 "토큰들"이라고도 함)로 변환한다. 예시된 구현예들에서, 모듈(64)은 또한 음성 입력이 토큰 단위로 그리고 실시간 또는 거의 실시간으로 텍스트로 변환되도록 하는 스트리밍 모듈이며, 상기 토큰은 사용자의 발언과 동시에 효율적으로 모듈(64)로부터 출력될 수 있고, 따라서 사용자가 완전한 발언 요청을 말하기 전에 모듈(64)로부터 출력될 수 있다. 모듈(64)은 하나 이상의 국부적으로 저장된 오프라인 음향 및/또는 언어 모델(74)에 의존할 수 있으며, 이는 오디오 신호와 언어의 음성 단위들(phonetic units) 사이의 관계를 모델링한다. 일부 구현 예들에서, 하나의 모델(74)이 사용될 수 있는 반면에, 다른 구현 예들에서, 예를 들어 다중 언어, 다중 스피커 등을 지원하기 위해 다중 모델이 지원될 수 있다.
모듈(64)이 음성을 텍스트로 변환하는 반면, 모듈(66)은 목적을 위해 모듈(64)에 의한 텍스트 출력의 의미 또는 시맨틱을 식별하거나 적절한 응답을 공식화하려고 시도한다. 예를 들어, 파서 모듈(68)은 텍스트를 특정 동작(액션)에 매핑하고 이러한 동작의 성능, 예를 들어 이러한 동작에 대한 입력 변수를 제한하는 속성을 식별하기 위해 하나 이상의 오프라인 문법 모델(76)에 의존한다. 일부 구현 예들에서, 하나의 모델(76)이 사용될 수 있는 반면, 다른 구현 예에서는, 상이한 동작 또는 동작 영역(action domain)들(즉, 통신 관련 동작, 검색 관련 동작, 오디오/비주얼 관련 동작, 일정(calendar) 관련 동작, 장치 제어 관련 동작 등과 같은 관련 동작의 집합)을 지원하기 위해, 복수의 모델이 지원될 수 있다.
예로서, 오프라인 문법 모델(76)은 상기 리마인더와 연관된 하나 이상의 아이템을 특정하는 아이템 파라미터, 및 상기 리마인더를 활성화하고 사용자에게 리마인드하기 위해 시간을 특정하는 시간 파라미터를 설정하는 리마인더의 유형을 특정하는 리마인더 유형 파라미터를 갖는 "리마인더 세트"와 같은 액션을 지원할 수 있다. 파서 모듈(68)은 파서 모듈(68)은 "나에게 리마인더", "픽업(pick up)", "빵(bread)" 및 "애프터 워크(after work)"와 같은 토큰들의 시퀀스를 수신할 수 있고, 상기 토큰들의 시퀀스를 "쇼핑 리마인더"로 설정된 라마인더 유형 파라미터, "빵"으로 설정된 아이템 파라미터, "오후 5:00"의 시간 파라미터를 갖는 리마인더를 설정하는 동작에 매핑할 수 있으며, 이로 인해 그날 사용자는 오후 5시에 "빵을 사라"는 리마인더를 수신한다.
파서 모듈(68)은 또한 사용자와의 대화를 관리하는 대화 관리자 모듈(70)과 함께 동작할 수 있다. 이 컨텍스트 내의 대화는 두 사람 사이의 대화와 유사한 응답들 및 음성 입력들의 세트를 나타낸다. 따라서, 모듈(70)은 대화의 "상태"를 유지하여, 후속 음성 입력을 처리할 때 이전 음성 입력에서 사용자로부터 얻은 정보를 사용할 수 있게 한다. 예를 들어, 사용자가 "빵을 픽업하라고 나에게 리마인더"라고 말하면, "네, 언제 리마인드 할까요?"라고 대답하는 응답이 생성될 수 있으며, "애프터 워크"의 후속 음성 입력은 리마인더를 생성하기 위한 원래 요청으로 다시 연결(tied)된다. 일부 구현 예에서, 모듈(70)은 개인 보조 모듈(56)의 일부로서 구현될 수 있다.
여기에 설명된 다양한 구현 예에서, 대화 관리자 모듈(70)은 온라인 시맨틱 플세서(54)가 음성 가능 장치(52)를 동작시키는 사용자로부터 요청을 수신한 후에 예를 들어 개인 보조 모듈(56)의 복수의 후보 상태를 포함하는 상태 머신을 나타내는 데이터를 온라인 시맨틱 프로세서(54)로부터 수신할 수 있다. 각 후보 상태는 잠재적으로 사용자의 요청에 응답할 수 있다. 모듈(70)은 개인 보조 모듈(56)과 단독으로 또는 그와 함께 음성 가능 장치(52)에 로컬인 하나 이상의 자원을 분석하여 온라인 시맨틱 프로세서(54)에 이용할 수 없는 하나 이상의 신호들을 확인한다. 하나 이상의 신호들에 기초하여, 대화 관리자 모듈(70) 및/또는 개인 보조 모듈(56)은 복수의 후보 상태들의 소정의 상태를 선택하고 전환할 수 있다.
동작 빌더 모듈(72)은 음성 입력 해석을 나타내는 파서 모듈(68)로부터 파싱된 텍스트를 수신하고, 개인 보조 모듈(56)의 모듈(62)에 의한 프로세싱을 위한 임의의 연관된 파라미터들과 함께 하나 이상의 응답 액션들 또는 "태스크"를 생성한다. 액션 빌더 모듈(72)은 파싱된 텍스트로부터 액션들을 생성하기 위한 다양한 룰들(rules)을 통합하는 하나 이상의 오프라인 액션 모델(78)에 의존할 수 있다. 일부 구현 예들에서, 예를 들어, 액션들은 F(IT)= Au와 같은 함수 F로 정의될 수 있으며, 여기서 T는 입력 해석의 유형을 나타내고, U는 출력 액션의 유형을 나타낸다. F는 따라서, 서로 매핑되는 복수의 입력 쌍(T, U)을 포함할 수 있으며, 예를 들어 f(it) = au인 경우, it는 유형 t의 입력 포토(proto) 변수이고, au는 유형 u의 파라미터 또는 출력 모듈형 인수(modular argument)이다. 일부 파라미터들은 음성 입력으로서 직접 수신될 수 있는 반면, 일부 파라미터들은 다른 방식으로, 예를 들어 사용자의 위치, 인구 통계학적 정보 또는 사용자에게 특정한 다른 정보에 기초하여 결정될 수 있다. 예를 들어, 사용자가 "식료품점에서 빵을 픽업하라고 나에게 리마인드"라고 말하면, 위치 파라미터는 사용자의 현재 위치, 직장과 집 사이의 사용자의 알려진 경로, 사용자의 정규적인 식료품점 등과 같은 추가 정보 없이는 결정될 수 없다.
일부 구현 예들에서, 모델들(74, 76 및 78)은 모듈들(64, 68, 70 및 72)의 기능일 수 있는 바와 같이 더 적은 수의 모델로 결합되거나 추가 모델로 분할될 수 있음을 이해할 것이다. 또한, 모델들(74-78)은 모델이 음성 가능 장치(52) 상에 로컬적으로(국부적으로) 저장되고, 따라서 장치(52)가 온라인 시맨틱 프로세서(54)와 통신하지 않을 때 오프라인으로 액세스할 수 있는 한 오프라인 모델로 지칭된다. 또한, 모듈(56)은 본 명세서에서 개인 보조 모듈로서 설명되지만, 이는 제한하려는 것이 아니다. 다양한 구현 예들에서, 음성 가능 장치(52)상에서 동작하는 임의의 유형의 애플리케이션은 온라인 시맨틱 프로세서(54)로부터 수신된 상태 머신을 구현하기 위해 여기에 기술된 기술들을 수행할 수 있다.
다양한 구현 예들에서, 온라인 시맨틱 프로세서(54)는, 예를 들어, 다양한 음향/언어, 문법 및/또는 동작(액션) 모델(82)에 의존하는 음성 기반 쿼리(query) 프로세서(80)를 사용하여 음성 입력을 처리하기 위한 보완적인 기능을 포함할 수 있다. 일부 구현예들에서, 특히 음성 가능 장치(52)가 자원 제약형 장치일 때, 음성 기반 쿼리 프로세서(80) 및 이에 의해 사용된 모델들(82)은 음성 가능 장치(52)에 국한된 것 보다 복잡하고 계산적인 자원 집약적인 음성 프로세싱 기능을 구현할 수 있음을 알 것이다.
일부 구현 예들에서, 하나 이상의 개별 개인 보조 모듈(56)에 대한 온라인 대응물로서 각각 작용하는 다수의 음성 기반 쿼리 프로세서(80)가 사용될 수 있다. 예를 들어, 일부 구현 예에서, 사용자의 에코시스템 내의 각 장치는 사용자와 연관된(예를 들어, 사용자의 선호도로 구성되고, 동일한 상호 작용 이력과 연관되는 등) 개인 보조 모듈(56)의 인스턴스를 동작하도록 구성될 수 있다. 음성 기반 쿼리 프로세서(80)의 단일 사용자 중심 온라인 인스턴스는 사용자가 그 시간에 어떤 장치를 조작하고 있는지에 따라, 이들 개인 보조 모듈(56)의 복수의 인스턴스들 각각에 액세스 가능할 수 있다.
일부 구현 예들에서, 예를 들어, 장치가 온라인 서비스와 통신할 때마다 온라인 기능이 사용되고, 연결이 없는 경우 오프라인 기능이 사용되는 것과 같은 온라인 및 오프라인 기능 모두가 지원될 수 있다. 다른 구현 예들에서, 상이한 액션들 또는 액션 영역들(action domains)은 온라인 및 오프라인 기능에 할당될 수 있고, 다른 구현 예에서는 오프라인 기능이 특정 음성 입력을 적절히 처리하지 못할 때에만 온라인 기능이 사용될 수 있다. 그러나 다른 구현예들에서는 보완적인 온라인 기능이 사용될 수 없다.
예를 들어, 도 3은 음성 입력을 처리하기 위해 음성 가능 장치(52)에 의해 실행될 수 있는 음성 프로세싱 루틴(100)을 도시한다. 루틴(100)은 예를 들어 디지털 오디오 신호의 형태로 음성 입력을 수신함으로써 블록(102)에서 시작한다. 이러한 구현 예들에서, 음성 입력을 온라인 검색 서비스로 전송하기 위한 초기 시도가 이루어진다(블록 104).
예를 들어, 연결성이 부족하거나 온라인 검색 서비스에서 응답이 없기 때문에 실패한 경우, 블록(106)은 음성 입력을 텍스트 토큰들로 변환하기 위해 블록(108)에 제어를 전달하고(블록(108), 예를 들어,도 2의 모듈(64)을 사용하여), 상기 텍스트 토큰들을 파싱하고(블록 110, 예를 들어 도 2의 모듈(68)을 사용하여), 상기 파싱된 텍스트로부터 액션을 빌드(build)한다(블록 112, 예를 들어 도 2의 모듈(72)을 사용하여). 결과 액션은 클라이언트 측 렌더링 및 동기화를 수행하는데 사용되며(블록(114), 예를 들어, 도 2의 모듈(62)을 사용하여), 음성 입력의 프로세싱이 완료된다.
블록(106)으로 돌아가서, 음성 입력을 온라인 검색 서비스로 전달하려는 시도가 성공적이면, 블록(106)은 블록(108-112)을 우회하고, 블록(114)에 직접 제어를 전달하여 클라이언트 측 렌더링 및 동기화를 수행한다. 그러면 음성 입력의 프로세싱이 완료된다. 다른 구현 예에서, 상술한 바와 같이, 음성 처리가 국부적으로 처리될 수 있을 때, 불필요한 데이터 통신을 회피하기 위해, 온라인 프로세싱 전에 오프라인 프로세싱이 시도될 수 있다는 것을 이해할 것이다.
도 4는 개인 보조 모듈(56)이 예를 들어 음성 기반 쿼리 프로세서(80)에 의해 온라인 시맨틱 프로세서(54)로부터 상태 머신을 수신하여, 개인 보조 모듈(56)이 음성 가능 장치(52)에 국부적인 하나 이상의 자원을 분석하여 온라인 시맨틱 프로세서(54) 및/또는 음성 기반 쿼리 프로세서(80)에 이용 불가능한 하나 이상의 신호를 확인할 수 있는 예시적인 시나리오(420)를 개략적으로 도시한다. 상기 분석에 기초하여, 개인 보조 모듈(56)은 하나 이상의 신호에 기초하여 선택되는 복수의 후보 상태들의 소정의 상태로 전환할 수 있다.
이 예에서, 사용자 요청(422)은 "이 순간을 캡처하자"는 구어의 형태로 음성 입력을 포함한다. 사용자 요청(422)에 응답하여, 개인 보조 모듈의 복수의 후보 상태(4241-3)를 포함하는 상태 머신은 예를 들어 온라인 시맨틱 프로세서(54)에 의해 생성될 수 있다. 각각의 후보 상태(424)는 잠재적으로 상기 쿼리에 응답할 수 있다. 예를 들어, 제1 후보 상태(4241)에서, 개인 보조 모듈(56)은 음성 가능 장치(52) 상에 설치될 수 있는 잠재적으로 복수의 카메라 애플리케이션으로부터 특정 카메라 애플리케이션의 표시를 사용자로부터 요구할 수 있다. 제1 후보 상태(4241)는 "OK, 어느 카메라 애플리케이션을 사용하시겠습니까?"와 같은 출력(청각적 또는 시각적)을 포함할 수 있다. 제2 후보 상태(4242)에서, 개인 보조 모듈(56)은, 예를 들어 "사진 또는 비디오"와 같은 음성을 출력함으로써 사진 또는 비디오를 캡처하기를 원하는지에 대한 표시(indication)를 사용자에게 요구할 수 있다. 제3 후보 상태(4243)에서, 개인 보조 모듈(56)은 플래시(flash)를 사용하기를 원하는지를 나타내기 위해 사용자에게 요청할 수 있다.
화살표로 표시된 바와 같이, 상태 머신의 상태(424)는 상태 머신의 다른 상태를 유도할 수 있다. 예를 들어, 사용자가 제1 후보 상태(4241)의 프롬프트에 응답한 후에, 개인 보조 모듈(56)은 제2 후보 상태(4242)로 전환하여 사용자가 사진 또는 비디오를 촬영하기를 원하는지를 나타내는 입력을 요구한 다음 제3 후보 상태(4243)로 전환하여 사용자가 플래시를 사용하기를 원하는지를 나타내는 입력을 요구할 수 있다. 그러나 사용자가 요청(422)을 발행할 때마다 사용자가 세 가지 상태를 모두 통과(traverse)해야 한다면, 프로세스가 너무 오래 걸릴 것이므로 사용자는 좌절할 수 있다. 또한, 음성 출력을 제공하고 이에 대한 응답을 획득하는 것은 배터리 전력, 프로세서 사이클 및/또는 메모리와 같은 컴퓨팅 자원을 소비할 수 있다. 따라서, 다양한 구현 예들에서, 개인 보조 모듈(56)은 사용자로부터의 입력을 요구하지 않고 임의의 상태들(424)이 스킵될 수 있는지 여부를 결정하기 위해 음성 가능 장치(52)에 국부(로컬)적인 자원을 분석할 수 있다.
도 4의 상태 머신을 수신하면, 개인 보조 모듈(56)은 예를 들어 음성 가능 장치(52) 상에 국부적으로 저장된 사용자 상호 작용 로그 및/또는 설치된 애플리케이션의 레지스트리와 같은 자원으로부터(온라인 시맨틱 프로세서(54)에 용이하게 이용 가능하지 않음) 사용자가 거의 독점적으로 특정 카메라 애플리케이션을 사용하여 사진 및 비디오를 촬영하는지를 결정한다. 그 결정에 기초하여, 개인 보조 모듈(56)은 제1 후보 상태(4241)를 "스킵"할 수 있다. 일부 구현 예들에서, 개인 보조 모듈(56)은 요청(422)에 응답하여 트리거(예를 들어, 비휘발성 메모리로부터 개시되거나 활성화될 수 있음)되어야 하는 앱(애플리케이션)이 특정 카메라 애플리케이션임을 액션 빌더(72)와 같은 음성 가능 장치(52)의 다른 컴포넌트들에게 통지할 수 있다.
제2 후보 상태(4242)에서, 개인 보조 모듈(56)은 선택된 카메라 애플리케이션과 연관된 사용 로그와 같은 음성 가능 장치(52)에 로컬인 자원을 다시 분석하여 비디오 대 사진에 대한 프롬프트가 필요한지 여부를 결정할 수 있다. 상기 사용 로그가 둘 사이에 어떠한 명확한 선호도를 나타내지 않으면, 개인 보조 모듈(56)은 사용자가 비디오 또는 사진을 촬영하기를 원하는지를 결정하기 위해 제2 후보 상태(4242)와 연관된 출력을 발행할 수 있다. 사용자의 응답은 예를 들어 개인 보조 모듈(56)에 의한 파라미터로서 액션(동작) 빌더(72)에 제공될 수 있으므로, 선택된 카메라 애플리케이션이 트리거될 때 사용자가 지시한 대로 사진 또는 비디오를 촬영하도록 이미 설정된다. 다른 한편으로, 상기 사용 로그가 사용자에 의해 사진 또는 비디오를 촬영하도록 명확한 선호도를 나타내면, 바람직한 포맷과 연관된 파라미터가 액션 빌더(72)에 제공될 수 있다.
다양한 구현 예들에서, 그러한 선호도는 다양한 방식으로 결정될 수 있다. 일부 구현 예들에서, 사용자가 이전에(historically) 선택된 카메라 앱을 사용하여 상기 앱의 총 사용량 중 적어도 임계 비율 이상으로 사진이나 동영상을 촬영한 경우 자동으로 모드가 선택될 수 있다. 다른 구현예들에서, 개인 보조 모듈(56)은 사용자가 최근에 어떻게 애플리케이션을 조작했는지를 결정하기 위해 상기 선택된 카메라 앱의 가장 최근의 사용을 분석할 수 있고, 그 분석에 기초하여 상기 모드를 선택할 수 있다. 예를 들어, 사용자가 생일 파티에 있고 일련의 비디오를 촬영한 경우, 사용자가 이전에(historically) 보통 상기 선택된 앱을 조작하여 사진을 찍을지라도 비디오 모드가 선택될 수 있다.
사진 또는 비디오 촬영 결정이 내려지면(자동으로 또는 사용자 입력에 대한 응답으로) 개인 보조 모듈(56)은 제3 후보 애플리케이션(4243)으로 전환할 수 있다. 제3 후보 애플리케이션(4243)에서, 개인 보조 모듈(56)은 환경에서 주변 광을 검출하도록 구성된 광 센서로부터의 신호와 같이, 음성 가능 장치(52)에 로컬인 자원을 다시 분석하여, 플래시의 사용이 필요한지 여부를 결정할 수 있다. 광 센서로부터의 신호가 어두운 환경을 나타내는 경우, 개인 보조 모듈(56)은 선택된 카메라 애플리케이션이 트리거될 때 플래시가 인에이블되어야 한다는 것을 액션 빌더(72)와 같은 컴포넌트들에 통지할 수 있다. 광 센서의 신호가 밝은 조명 환경(예: 낮 시간대의 실외)을 나타내는 경우, 개인 보조 모듈(56)은 상기 선택된 카메라 애플리케이션이 트리거될 때 플래시가 디스에이블되어야 한다는 것을 액션 빌더(72)와 같은 컴포넌트들에 통지할 수 있다. 광 센서로부터의 신호가 결정적이지 않은 경우, 개인 보조 모듈(56)은, 예를 들어 음성 출력을 사용하여 플래쉬가 인에이블되어야 하는지 여부를 표시하기 위해 사용자에게 프롬프트할 수 있다.
도 5는 개인 보조 모듈(56)이 온라인 시맨틱 프로세서에 의해 제공되는 상태 머신을 수신하여 트래버스할 수 있는 또 다른 예시적인 시나리오(520)를 나타낸다. 이 예에서, 사용자 요청(522)은 "John에게 전화해"라는 음성 요청을 포함한다. 사용자 요청(522)을 발행한 사용자가 "John" 또는 "Jon"이라는 이름의 다수의 연락처를 가지고 있다고 가정하면, 사용자 요청(522)은 사용자가 어떤 "John"을 말하는지 모호하다. 따라서, 온라인 시맨틱 프로세서(54)는 개인 보조 모듈(56)에 의해 트래버스될 수 있는 복수의 후보 상태들(5241-N)을 식별하여 잠재적인 다수의 연락처들 사이를 명확하게(disambiguate) 할 수 있다.
제1 후보 상태(5241)에서, 개인 보조 모듈(56)은 사용자에게 어느 존 (John)에게 전화할지를 나타내는 입력을 요청할 것이다. 제2 후보 상태(5242)에서, 개인 보조 모듈(56)은 선택된 "John" 연락처의 어떤 번호(예를 들어, 모바일, 집, 직장)로 연락할 것인지를 나타내는 입력을 사용자에게 요구할 것이다. 제3 후보 상태(5243)에서, 개인 보조 모듈(56)은 통화(Call)를 개시하고 대응하는 출력을 제공할 것이다. 제4 후보 상태(5244)에서, 개인 보조 모듈(56)은 그러한 연락처가 존재하지 않는다는 것을 사용자에게 통지할 것이다. 화살표로 나타낸 바와 같이, 다양한 시나리오에서, 제1 후보 상태(524i)는 제2 후보 상태(5242)로 전환할 수 있으며, 제2 후보 상태는 제3 후보 상태(5243)로 전환될 수 있다.
도 5에 도시된 상태 머신을 수신하면, 개인 보조 모듈(56)은 "John" 또는 "Jon" 이름을 갖는 연락처로 연락하기 위해 연락처 리스트 또는 소셜 네트워킹 친구 리스트와 같은 음성 가능 장치(52)에 로컬인 자원을 폴링할 수 있다. 단일 매칭 연락처가 발견되면, 개인 보조 모듈(56)은 매칭하는 연락처에 대한 다수의 전화 번호가 있다면 제2 후보 상태(5242)로 직접 진행할 수 있고, 매칭하는 연락처의 전화 번호가 하나뿐인 경우 제3 후보 상태(5243)로 스킵할 수 있다. 반면에, 매칭하는 연락처가 여러 개 발견되면, 개인 보조 모듈(56)은 (예를 들어, 음성 출력을 사용하여) 사용자에게 어떤 John/Jon을 나타내는지를 프롬프트할 수 있거나, 특정 연락처를 자동으로 선택하는데 사용할 수 있는 정보 신호들에 대해 음성 가능 장치(52)에 로컬인 자원을 폴링(poll)할 수 있다.
연락처는 다양한 정보 신호에 기초하여 복수의 잠재적인 매칭 연락처로부터 자동적으로 선택될 수 있으며, 보다 일반적으로, 소정의 후보 상태에 대한 옵션/입력 파라미터는 복수의 옵션/입력 파라미터로부터 자동적으로 선택될 수 있다. 일부 구현 예들에서, 옵션/입력 파라미터는 이전에 언급된 장치의 "에코시스템"과 같이 사용자에 의해 조작된 하나 이상의 컴퓨팅 장치와 사용자 간의 상호 작용의 이력에 적어도 부분적으로 기초할 수 있다. 사용자와 하나 이상의 컴퓨팅 장치 간의 상호 작용의 이력은 함께 또는 개별적으로 저장될 수 있는 사용자 상호 작용의 다양한 기록(record)을 포함할 수 있다.
예를 들어, 여러개 매칭하는 연락처에서 선택하는 경우, 개인 보조 모듈(56)은 콜 로그(또는 여러 개의 다른 콜 애플리케이션이 있는 경우 둘 이상의 콜 로그), 텍스트 메시지 이력, 이메일 이력(예: 받은 편지함 및 보낸 메일) 및 다른 유사한 소스들과 같은, 음성 가능 장치에 로컬인 자원들을 참조하여 사용자가 의미하는 매칭하는 연락처를 "추측"할 수 있다. 예를 들어, 사용자 요청(522)을 발행한 사용자가 "John" 또는 "Jon"이라는 이름을 가진 연락처 리스트에 있는 누군가와 연락할 때, "John Zenith"라는 특정 연락처가 역사적으로 사용자가 목표로 하는 가장 인기있는 "John/Jon"이었고 이어서 "John Adams"라는 다른 연락처가 계속 이어지는 것으로 콜 로그, 문자 메시지 이력, 이메일 이력 등으로부터 결정될 수 있다. 일부 구현 예들에서, 가장 인기있는 "John" 또는 "Jon"이라는 연락처가 자동으로 선택될 수 있다. 그 다음, 개인 보조 모듈(56)은 다수의 전화 번호가 존재하는 경우에 제2 후보 상태(5242)로 직접 전환할 수 있고, 임의의 출력을 발행하지 않고 제2 후보 상태(5242)를 스킵하고, "John/Jon"이라는 이름의 선택된 연락처에 대해 단지 하나의 전화 번호가 있다면 제3 후보 상태(5243)로 직접 진행할 수 있다.
일부 구현 예들에서, 후보 상태에 대한 옵션/입력 파라미터는 충분히 유사하다고 간주되는 다른 태스크와 연관된 하나 이상의 정보 신호에 적어도 부분적으로 기초하여 개인 보조 모듈(56)에 의해 자동적으로 선택될 수 있다. 예를 들어, 여러 "Johns/Jons" 중 누구를 호출(통화)할지 결정할 때, 전화 앱을 사용하는 이전 전화 통화, SMS 앱을 사용하여 전송된 이전 문자 등과 같이 "John/Jon"이라는 특정 연락처를 갖는 이전 연락처의 임의의 형태는 연락할 특정 연락처를 자동으로 선택할지 여부를 결정할 때 집합적으로 고려될 수 있다.
특히 "Call John"의 개인 보조 모듈에 대한 요청에 대한 응답으로 사용자의 메시징 이력에서 이전의 호출 활동이 감지되지 않았다고 가정한다. 그러나 "text John"의 개인 보조 모듈에 대한 이전 사용자 요청에 대한 응답으로 "John Jones"라는 연락된 사람에게 문자 메시지를 보내는 사용자 기록이 있다. 메시징 및 호출 태스크는 "call John" 요청에 응답하여, 개인 보조 모듈(56)이 사용자가 "John Jones"에게 호출하기를 원한다고 추론할 수 있는 것과 충분히 유사하다고 간주될 수 있다.
원시(raw) 인기 이외에 또는 대신에, 다양한 실시 예에서, 특정 옵션/입력 파라미터는 사용자가 최근에 어떻게 행동했는지에 적어도 부분적으로 기초하여 선택될 수 있다. 사용자가 "John Adams"보다 "call John" 요청을 발행한 후 더 자주 "John Zenith"를 역사적으로 선택했다고 가정한다. 그러나 최근 사례에서(예: 지난 1주일) 사용자가 'John Zenith'보다 'John Adams'를 더 많이 선택했다고 가정한다. 일부 구현예들에서는 "John Zenith" 대신 "John Adams"를 선택하기 위해 이를 고려할 수 있다.
개인 보조 모듈(56)에 의해 특정 옵션들/입력 파라미터들이 자동으로 선택될 가능성은 다양한 신호에 응답하여 시간에 따라 변할 수 있다. 일부 구현 예들에서, 특정 옵션들/입력 파라미터들이 선택될 가능성은 선택된 태스크의 개시 이후에 에코시스템의 하나 이상의 음성 가능 장치(52)와 사용자 사이의 하나 이상의 상호 작용에 기초할 수 있다. 제1 후보 상태(5241)에서, "John Adams"가 개인 보조 모듈(56)에 의해 자동적으로 선택되고, 전화 앱이 미리 다이얼링 된 "John Adams"의 전화 번호로 개시된다고 가정한다. 또한, 사용자가 "토크(talk)"를 눌러 호출(통화)을 시작한다고 가정한다. 이 사용자 상호 작용은 긍정적인 피드백으로 해석될 수 있으며 결과적으로 장래에 "John Adams"가 제1 후보 상태(5241)에서 자동 선택될 가능성이 높아질 수 있다. 마찬가지로, 사용자가 미리 다이얼링된 "John Adams"의 전화 번호로 전화 앱의 인스턴스화를 거부하고 수동으로 새로운 번호를 다이얼링하면, 해당 상호 작용이 부정적인 피드백으로 해석되어 "John Adams"가 향후 자동으로 선택될 가능성이 감소하게 될 것이다.
또한, 공동운영(Co-operating) 애플리케이션들은 특정 옵션/입력 파라미터가 개인 보조 모듈(56)에 의해 자동으로 선택되는지 여부에 영향을 줄 수 있다. 사용자가 도 5의 사용자 요청(522)에 의해 표현된 음성 명령을 음성 가능 장치(52)에 전송한다고 가정한다. SMS 애플리케이션이 배경에서 이미 열려 있고 사용자가 최근에 "John Bradley"라는 연락처와 문자 메시지를 보내고 있었다고 가정한다. SMS 앱이 이미 열려 있다는 사실은 사용자가 최근에 "John Bradley"와 문자 메시지를 보내고 있다는 사실만으로 "John Bradley"가 자동으로 선택될 가능성이 증가할 수 있다.
부가적으로 또는 대안적으로, 옵션/입력 파라미터들과 연관된 다른 정보 신호들은 개인 보조 모듈(56)에 발행된 모호한 요청에 응답하여 옵션들/입력 파라미터들로부터 자동적으로 선택하는데 사용될 수 있다. 예를 들어, "Sven"이라는 두 개의 연락처를 갖는 사용자가 "Sven에게 전화" 요청을 발행했다고 가정한다. 한 명의 "Sven" 연락처가 일반적으로 선호될 수 있다. 그러나, 개인 보조 모듈(56)이 가까운 장래에 다른 "Sven"과 함께 예정된 회의를 가지고 있는지를 결정하기 위해 음성 가능 장치(52)에 로컬인 자원들(예를 들어, 달력, 이메일, 문자 메시지 등)을 폴링하는 경우, 다른 "Sven"이 선택될 가능성은 적어도 일시적으로 상승될 수 있으며, 그 상승은 회의 동안, 그리고 회의가 끝난 후 일정시간 동안 이어질 수 있다. 유사하게, 음성 가능 장치(52)에 로컬인 자원이 한 명의 "Sven"이 다가오는 생일을 맞이하거나 특정 비행편에 도시에 도착할 예정이라면, 한 명의 "Sven"이 다른 한 명의 "Sven"보다 자동으로 선택될 가능성은 적어도 일시적으로 증가할 수 있다.
일부 구현 예들에서, 특정 옵션/입력 파라미터가 개인 보조 모듈(56)에 의해 선택될 가능성(예를 들어, 제1 후보 상태(5241)에서)은 사용자가 과거에 동일하거나 유사한 태스크를 수행했을 때 사용자의 컨텍스트와 사용자의 현재 컨텍스트 간의 유사도의 척도에 기초할 수 있다. 사용자가 주중에 동료 "David Smith"에게 전화하고 주말에 형제 "David Jones"에게 전환한다고 가정한다. 만약 사용자가 주중에 "call Dave" 요청을 발행하면, 사용자의 컨텍스트는 사용자가 "David Smith"에게 전화한 이전 인스턴스와 더 유사할 수 있으므로 "David Smith"가 선택될 가능성이 높아진다. 마찬가지로 사용자가 주말에 요청을 발행하면 사용자의 컨텍스트는 사용자가 "David Jones"에게 전화한 이전 인스턴스들과 더 유사할 수 있다. 이로 인해 "David Jones"가 제1 후보 상태(5241)에서 선택될 가능성이 높아질 수 있다.
연락처를 선택하기 위해 보다 복잡한 상황별 비교를 수행할 수도 있다. 일부 구현 예들에서, 특징들(features)은 이전 및 현재 컨텍스트로부터 추출될 수 있고 유사도의 척도를 결정하기 위해 비교될 수 있다. Kullback-Leibler("KL") 다이버전스(divergence), 코사인 유사도, "Levenshtein" 거리 등을 포함하지만 이에 한정되지 않는 다양한 기술들이 컨텍스트 간의 유사도 측정치(척도)를 계산하기 위해 사용될 수 있다. 예를 들어, 522와 같은 요청을 발행하면, 사용자의 현재 컨텍스트에 대응하는 특징 벡터는 사용자의 개인 보조 모듈(56)에 의해 도 5에서와 유사한 상태 머신의 이전 구현 동안 사용자 컨텍스트에 대해 생성된 특징 벡터들과 비교될 수 있다. 사용자의 현재 컨텍스트를 나타내는 특징 벡터와 가장 유사한 과거의 특징 벡터는 응답할 가능성이 가장 높은 것으로 간주될 수 있으며, 따라서 다수의 연락처로부터 선택하는 데 사용될 수 있다. 사용자의 현재 컨텍스트를 나타내는 특징 벡터와 가장 덜 유사한 과거의 특징 벡터는 응답할 가능성이 가장 낮은 것으로 간주 될 수 있다. 결과적으로, 이전 컨텍스트에서 사용자에 의해 호출(통화)된 연락처는 제1 후보 상태(5241)에서 자동으로 선택될 가능성이 가장 적을 수 있다.
상기 예들은 제1 후보 상태(5241)에서 다수의 연락처들로부터 개인 보조 모듈(56)에 의한 자동 선택을 기술한다. 그러나 이것은 제한하려는 것이 아니다. 개인 보조 모듈(56)은 다수의 옵션 및/또는 입력 파라미터로부터 선택하기 위해 다양한 후보 상태에서 유사한 기술을 사용할 수 있다. 예를 들어, 유사한 기술이 개인 보조 모듈(56)에 의해 제2 후보 상태(5242)에서 이용되어 호출(통화)하기 위해 "John/Jon"의 특정 연락처의 전화 번호를 선택할 수 있다.
도 6은 예를 들어 음성 기반 쿼리 프로세서(80)를 통해 온라인 시맨틱 프로세서(54)에 사용자 요청을 제공하고, 그에 응답하여 유한 상태 머신을 수신 및 구현하기 위해 개인 보조 모듈(56)에 의한 실행에 적합한 루틴(650)을 도시한다. 루틴(650)은 음성 기반 쿼리를 프로세싱하는 동일한 서비스에 의해 실행될 수 있거나, 전혀 다른 서비스일 수 있다.
블록(652)에서, 음성 입력은 예를 들어 디지털 오디오 신호의 형태로 수신된다. 블록(654)에서, 사용자 요청은 온라인 시맨틱 프로셋(54)에 업로드될 수 있다. 일부 구현 예들에서, 음성 입력은 업로드 전에 텍스트 토큰(예를 들어, 도 2의 모듈(64) 및/또는 모델(82)을 사용하여)으로 변환될 수 있다. 다른 구현예들에서, 오디오 데이터는 온라인 시맨틱 프로세서(54)에 직접 업로드될 수 있으며, 온라인 시맨틱 프로세서(54)는 음성 입력을 텍스트 토큰 자체로 변환할 수 있다.
블록(656)에서, 개인 보조 모듈(56)은 예를 들어 온라인 시맨틱 프로세서(54)로부터 상태 머신을 직접적으로 또는 간접적으로 수신할 수 있다. 블록(658)에서, 개인 보조 모듈(56)은 하나 이상의 정보 신호를 확인(ascertain)하기 위해 음성 가능 장치(52)에 로컬인 자원을 분석(예를 들어, 폴링)할 수 있다. 예를 들어, 상술된 바와 같이, 개인 보조 모듈(56)은 연락처 리스트, 통화(호출) 로그, 텍스트 메시징 로그, 설치된 애플리케이션 레지스트리, 캘린더, 이메일, 소셜 네트워킹 로그, 위치 좌표 센서와 같은 센서(예를 들어, GPS, 셀룰러 삼각 측량), 광 센서 및/또는 가속도계, 태스크 리스트, 애플리케이션 로그 등을 포함하지만 이에 한정되지 않는 다양한 로컬 자원으로부터 정보 신호를 획득할 수 있다.
블록(660)에서, 개인 보조 모듈(56)은 블록(658)에서 확인된 하나 이상의 신호에 기초하여 소정의 상태로 전환할 수 있다. 예를 들어, 상술된 바와 같이, 개인 보조 모듈(56)은 음성 가능 장치(52)에 로컬인 폴링 자원으로부터 단일 카메라 애플리케이션만이 설치된 것으로 결정되면, 사용자 요청(422)으로부터 제2 후보 상태(4242)로 직접 전환할 수 있다(필수적으로 제1 후보 상태(4241)를 스킵).
전환된 상태 및 로컬적으로 이용 가능한 정보 신호에 따라, 블록(662)의 일부 구현 예에서, 개인 보조 모듈(56)은 예를 들어 컴퓨터로 생성된 음성을 렌더링함으로써 사용자에게 입력을 요구할 수 있다. 예를 들어, 제2 후보 상태(4242)에서, 개인 보조 모듈(56)은 "사진 또는 비디오를 촬영하시겠습니까?"와 같은 음성을 출력할 수 있다. 일부 구현 예에서, 블록(662)에서 요청된 입력은 둘 이상의 옵션들/입력 파라미터들(예를 들어, 연락처들, 2개 이상의 설치된 애플리케이션, 앱 설정들, 주소들, 전화 번호들, 미디어 파일들 등) 사이를 명확히 하기(모호성 제거) 위해 개인 보조 모듈에 의해 블록(664)에서 사용될 수 있다. 다른 한편으로, 블록(660)으로 전환된 상태에서, 개인 보조 모듈(56)이 출력(예를 들어, 도 5의 5243 또는 5244)을 요구하지 않으면, 개인 보조 모듈(56)은 단순히 상기 전환된 상태와 연관된 액션(전화 걸기, 문자 메시지 보내기, 태스크 리마인더 설정, 캘린더 엔트리 생성 등)을 개시할 수 있다.
도면에 도시되지는 않았지만, 일부 구현 예에서, 수신된 상태 머신은 자원 제약형 장치에 의해 저장될 수 있으며, 동일하거나 유사한 사용자 요청의 재발시에 재사용될 수 있다. 따라서, 특정 요청이 장치에 의해 두 번째 수신될 때, 기능은 클라우드와의 교환을 요구하지 않고 제공될 수 있다. 따라서 일부 상황에서는 클라우드에 액세스할 수 없는 경우에도 어느 정도 기능을 제공할 수 있다. 따라서, 이 장치는 네트워크 상태에 관계없이 더 안정적이라고 말할 수 있다.
여기에 설명된 구현예들은 전화 및 카메라 애플리케이션의 호출을 주로 나타냈지만, 이는 제한하려는 것이 아니다. 여기에 설명된 기술은 다양한 다른 유형의 앱을 호출하거나 보다 일반적으로 다른 유형의 응답 태스크를 개시하는 데 사용될 수 있다. 예를 들어, 사용자가 "XX에 나를 위해 알람을 설정하라"라는 요청을 하면, 에코시스템의 하나 이상의 음성 가능 장치(52)에 로컬인 자원으로부터 얻어진 정보 신호가 분석되어 알람 설정에 대한 사용자의 습관을 결정할 수 있다. 이러한 습관 및 날짜, 시간 및 위치와 같은 다양한 다른 정보 신호에 기초하여, 온라인 시맨틱 프로세서(54)로부터 개인 보조 모듈(56)에 의해 수신된 상태 머신은 사용자 입력을 요구하지 않고 적어도 부분적으로 탐색될 수 있다.
또 다른 예는 개시된 기술을 사용하여 미디어 파일을 사용하는 방법을 나타낸다. 사용자가 "아티스트 A의 음악을 들을 수 있다."라는 요청을 발행했다고 가정한다. 이러한 요청에 응답하여 온라인 시맨틱 프로세서(54)에 의해 리턴된 상태 머신은 음악 재생 애플리케이션(예: 로컬로 저장된 음악 대 스트리밍 재생)을 선택하도록 사용자에게 요청하기 위한 상태들, 특정 앨범 또는 노래를 선택하도록 사용자에게 요청하기 위한 상태, "무작위 재생", "음량" 등과 같은 파라미터들을 선택하도록 사용자에게 요청하기 위한 상태를 포함할 수 있다. 개인 보조 모듈(56)은 온라인 시맨틱 프로세서(54)에 의해 생성되고 제공되는 상태 머신의 적어도 일부를 자동으로 탐색하기 위해 사용자의 청취 습관, 선호도, 로컬으로 저장된 매칭 노래 등을 결정하기 위해 자원 제약형 장치에 로컬인 다양한 자원을 폴링할 수 있다. 이러한 예들에 부가하여, 개시된 기술들은 텍스트/이메일 메시지를 전송하라는 요청, 연락처 리스트의 개인과 연관된 위치에 대한 경로 요청, 예약(예: 항공사, 식당, 호텔, 렌터카 등) 요청 등과 같은 다른 사용자 요청에 응답하여 사용될 수 있다.
도 7은 사용자 요청에 기초한 유한 상태 머신을 생성하여 개인 보조 모듈(56)에 제공하기 위해 온라인 시맨틱 프로세서(54)(및/또는 음성 기반 쿼리 프로세서(80))에 의한 실행에 적합한 루틴(770)을 도시한다. 블록(772)에서, 온라인 시맨틱 프로세서는 예를 들어 파서 모듈(68)에 의해 이미 파싱된 음성 입력 및/또는 텍스트 토큰과 같은 사용자 요청을 나타내는 데이터를 수신할 수 있다.
블록(774)에서, 온라인 시맨틱 프로세서(54)는 특히 개인 보조 모듈(56)과 연관된 사용자에 관한 다양한 정보 신호를 확인하기 위해 및/또는 일반적으로 사용자에 관한 다양한 온라인 자원을 분석할 수 있다. 특정 사용자와 관련하여, 온라인 자원은 소셜 네트워크 프로필, 전자 메일(사용자가 그러한 액세스를 허용했다고 가정), 사용자 검색 이력(다시, 사용자가 그러한 액세스를 허용했다는 가정하에), 사용자에게 권한이 있는 애플리케이션(예를 들어, 사용자가 계좌를 가지고 있는 "앱 스토어(App Store)"로부터 확인될 수 있는 바와 같이) 등을 포함할 수 있지만 이에 국한되지는 않는다. 일반적으로 사용자와 관련하여, 온라인 자원은 집계된 사용자 검색 이력, 집계된 사용자 활동 로그(개별 사용자의 익명성을 유지할 수 있음) 등을 포함할 수 있지만 이에 국한되지는 않는다.
블록(776)에서, 온라인 시맨틱 프로세서(54)는 블록(772)에서 수신된 사용자 요청 및 블록(774)에서 확인된 신호에 기초하여 개인 보조 모듈(56)에 의해 트래버스 가능한 상태 머신을 생성할 수 있다. 전술한 바와 같이, 상태 머신의 하나 이상의 상태는 음성, 텍스트, 그래픽 등과 같은 다양한 출력 양식을 통해 사용자에게 렌더링될 수있는 연관 출력들을 포함할 수 있다. 또한, 상태 머신의 하나 이상의 상태는 전화 호출, 문자 메시지 보내기, 이메일 보내기, 알림 설정, 캘린더 엔트리를 생성 및/또는 적어도 부분적으로 채우기, 특정 미디어 파일을 출력하기 위해 미디어 재생 애플리케이션 열기, 미디어 스트리밍 서비스 시작, 예약 하기, 하나의 앱 또는 다른 앱을 열기 등과 같은 응답 액션과 연관될 수 있다.
일부 구현 예들에서, 온라인 시맨틱 프로세서(54)는 블록(774)에서 확인된 하나 이상의 정보 신호를 사용하여, 초기에 상태 머신을 생성할 수 있으므로, 예를 들어, 그러한 요청에 응답하는 제1 "디폴트" 상태가 사용자의 요청에 응답할 가능성이 가장 높은 것으로 간주된다. 그러나 상태 머신의 다른 상태들은 음성 가능 장치(52)에 로컬인 자원들로부터 폴링된 하나 이상의 정보 신호들에 의존하여 온라인 시맨틱 프로세서에 알려진 디폴트보다 우선 할 수 있는 대체 옵션을 나타낼 수 있다(예컨대, 도 6의 블록(658) 참조).
예를 들어, 온라인 시맨틱 프로세서(54)는 집에서 "John Smith"를 호출하는 것이 "Call John"의 사용자 요청에 대한 가장 가능한 응답임을 온라인 호출 로그 또는 다른 정보로부터 결정할 수 있다. 따라서, 온라인 시맨틱 프로세서(54)는 집에서 "John Smith"를 호출하는 것과 연관된 디폴트 상태를 갖는 상태 머신을 생성 할 수 있다. 그러나, 사용자의 이동 장치상의 다른 신호들은 어떤 시나리오에서는 동일한 요청에 응답하여 다른 전화 번호가 실제로 요구될 수 있음을 제안할 수 있다. 디폴트 "John Smith"가 일반적으로 사용자가 공유하지만 사용자가 먼 시간대로 이동한 중앙 표준 시간대에 있다고 가정한다. 사용자의 연락처 리스트에 "John Jones"라는 연락처가 두 번째로 자주 사용되지 않는다고 가정한다. 또한 "John Jones"가 먼 시간대에 있다고 가정한다. 음성 가능 장치(52)상의 위치 좌표 컴포넌트(예를 들어, GPS, 셀 타워 식별정보 또는 삼각 측량)으로부터의 신호에 적어도 기초하여, 통상적으로 사용자는 이러한 특정 상황하에서 "John Smith"에게 전화(호출)하려고 하지만, 사용자는 실제로 "John Jones"에게 전화할 의도가 있다고 결정될 수 있다. 그러한 가능성을 설명하기 위해, 온라인 시맨틱 프로세서(54)는 음성 가능 장치(52)에 로컬인 자원들로부터 획득된 정보 신호들에 의해 디폴트 상태가 오버라이드(overrid)되는 경우에 전환하도록 개인 보조 모듈(56)을 위한 대안적인 "폴백(fall back)"또는 "캐치 올(catch all)"상태(예: "어느 John을 의미하나요?")를 상태 머신에 포함할 수 있다.
도 7에서, 블록(778)에서, 온라인 시맨틱 프로세서(54)는 블록(776)에서 생성된 상태 머신을 나타내는 데이터를 개인 보조 모듈(56)에 다운로드할 수 있다. 이 데이터는 개인 보조 모듈(56)에 의해 실행 가능 및/또는 해석 가능할 수 있는 다양한 형태로 제공될 수 있다. 일부 구현 예들에서, 상태 머신을 나타내는 데이터는 개인 보조 모듈(56)에 의해 해석될 수 있는 XML(extensible Markup Language)과 같은 마크업 언어의 형태일 수 있다. 일부 구현 예들에서, 상태 머신을 나타내는 데이터는 개인 보조 모듈(56)에 의해 해석될 수 있는 UML(Unified Modeling Language)과 같은 모델링 언어의 형태일 수 있다. 일부 구현 예들에서, 상태 머신은 상태들(및 대응하는 출력/응답 액션들)을 나타내는 노드들 및 상태들 간의 전환을 나타내는 에지들과 같은 그래프의 형태일 수 있다. 일부 구현 예들에서, 상기 상태 머신은 개인 보조 모듈(56)에 의해 해석 및/또는 실행될 수 있는 편집(compilation)의 다양한 단계에서 바이트코드, 스크립트 또는 다른 컴퓨터 실행 가능 명령어들의 형태로 될 수 있다.
전술한 바와 같이, 자원 제약형 장치는 장치에 로컬적으로 이용 가능한 계산 자원이 클라우드에서 이용 가능한 것보다 작다는 점에서 자원 제약이 될 수 있다. 이와 같이, 자원 제약형 장치는, 일부 구현 예에서, 사용자 장치 또는 사용자 단말기로 참조될 수 있다. 그러한 장치는 클라우드와 통신하도록 동작할 수 있고, (예를 들어, 이동 전화 또는 태블릿 컴퓨터와 같은 이동 장치에 제한되지는 않지만) 개인 디지털 보조 모듈을 포함하는 임의의 유형의 장치를 포함할 수 있다.
일부 구현 예들이 본 명세서에서 설명되고 도시되었지만, 기능을 수행하고 및/또는 결과 및/또는 여기에 설명된 하나 이상의 장점을 얻기위한 다양한 다른 수단 및/또는 구조가 이용될 수 있으며, 그러한 변형들 및/또는 수정들 각각은 본 명세서에서 설명된 구현예들의 범위 내에 있는 것으로 간주된다. 보다 일반적으로는, 여기에 기술된 모든 파라미터, 치수, 재료 및 구성은 예시적인 것이며, 실제 파라미터, 치수, 재료 및/또는 구성은 특정 용도 또는 그 교시가 사용되는 용도에 의존할 것이다. 당업자는 일상적인 실험만을 사용하여 본 명세서에서 설명된 특정 구현 예들에 대한 많은 균등물을 인식 할 수 있거나 또는 확인할 수 있을 것이다. 따라서, 전술한 구현 예들은 단지 예일 뿐이며, 첨부된 청구 범위 및 그 등가물의 범위 내에서 구현은 구체적으로 기술되고 청구된 것과 다르게 실시될 수 있음을 이해해야 한다. 본 개시의 구현은 여기에 기술된 각각의 개별적인 특징, 시스템, 물품, 재료, 키트 및/또는 방법에 관한 것이다. 또한, 이러한 특징, 시스템, 아티클, 재료, 키트 및/또는 방법이 상호 불일치하지 않는 경우, 둘 이상의 그러한 특징, 시스템, 아티클, 재료, 키트 및/또는 방법의 임의의 조합이 본 개시의 범위에 포함된다.

Claims (18)

  1. 컴퓨터로 구현되는 방법으로서,
    자원 제약형 장치에 의해 동작되는 개인 보조 모듈에 의해 사용자 요청을 수신하는 단계 -상기 자원 제약형 장치는 사용자 디바이스임 -;
    상기 개인 보조 모듈에 의해, 온라인 시맨틱 프로세서에 상기 사용자 요청을 나타내는 데이터를 업로드하는 단계;
    상기 자원 제약형 장치의 상기 개인 보조 모듈에 의해, 상기 사용자 요청을 나타내는 데이터를 업로드하는 것에 응답하여 상기 온라인 시맨틱 프로세서로부터 상기 개인 보조 모듈의 복수의 후보 상태들을 포함하는 상태 머신을 나타내는 데이터를 수신하는 단계 -상기 복수의 후보 상태들 중 적어도 제1 후보 상태는 잠재적으로 상기 사용자 요청에 응답하는 상기 자원 제약형 장치상에 설치된 소프트웨어 애플리케이션에 대한 둘 이상의 소프트웨어 애플리케이션 설정들(settings) 사이에서 입력 선택을 요구하는 상기 개인 보조 모듈에 의해 전달될 출력을 포함함-;
    상기 자원 제약형 장치의 상기 개인 보조 모듈에 의해, 상기 온라인 시맨틱 프로세서가 이용 불가능한 하나 이상의 신호들을 확인하기 위해 상기 자원 제약형 장치에 로컬인 하나 이상의 자원들을 분석하는 단계 -상기 하나 이상의 자원들은 자원 제약형 장치에 로컬로 저장된 정보를 포함하며, 상기 정보는 자원 제약형 장치에 설치된 상기 소프트웨어 애플리케이션의 사용에 관한 정보임-; 그리고
    상기 자원 제약형 장치의 상기 개인 보조 모듈에 의해, 상기 자원 제약형 장치의 사용자로부터 모호성을 제거하는(disambiguating) 입력을 수신하지 않고, 복수의 후보 상태들 중 제1 후보 상태를 둘 이상의 소프트웨어 애플리케이션 설정들 중 적어도 하나가 선택된 복수의 후보 상태들 중 제2 후보 상태로 전환하는 단계를 포함하며, 상기 전환하는 단계는 상기 온라인 시맨틱 프로세서가 이용 불가능한 상기 하나 이상의 신호들에 기초하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서,
    상기 자원 제약형 장치에 로컬인 상기 하나 이상의 자원들은 상기 자원 제약형 장치를 동작시키는 사용자의 연락처 리스트를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  3. 제2항에 있어서,
    상기 개인 보조 모듈에 의해,
    상기 하나 이상의 신호들에 기초하여 상기 연락처 리스트 내의 둘 이상의 연락처들 사이의 모호성을 제거하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  4. 제2항에 있어서,
    상기 개인 보조 모듈에 의해, 상기 하나 이상의 입력들에 기초하여 상기 연락처 리스트 내의 단일 연락처와 연관된 2개 이상의 주소들 또는 전화 번호들 사이의 모호성을 제거하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 제2항에 있어서,
    상기 사용자 요청은 상기 연락처 리스트 내의 개인과의 전화 통화를 개시하도록 하는 요청을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 제2항에 있어서,
    상기 사용자 요청은 상기 연락처 리스트의 개인에게 메시지를 송신하도록 하는 요청을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 제2항에 있어서,
    상기 사용자 요청은 상기 연락처 리스트의 개인과 연관된 위치에 대한 경로(directions) 요청을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 제1항에 있어서,
    상기 자원 제약형 장치에 로컬인 하나 이상의 자원들은 자원 제약형 장치상에 설치된 복수의 애플리케이션들을 포함하며,
    상기 방법은 상기 개인 보조 모듈에 의해 상기 하나 이상의 입력들에 기초하여 상기 복수의 애플리케이션들 중 둘 이상의 애플리케이션들 사이의 모호성을 제거하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  9. 제1항에 있어서,
    상기 자원 제약형 장치에 로컬인 하나 이상의 자원들은 상기 자원 제약형 장치의 메모리에 저장된 복수의 미디어 파일들을 포함하며,
    상기 방법은 상기 개인 보조 모듈에 의해 상기 하나 이상의 입력들에 기초하여 상기 복수의 미디어 파일들 중 둘 이상의 미디어 파일들 사이의 모호성을 제거하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  10. 제1항에 있어서,
    상기 하나 이상의 신호들은 사용자와 상기 개인 보조 모듈 간의 상호 작용 이력의 하나 이상의 기록들을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  11. 제10항에 있어서,
    상기 하나 이상의 신호들은 사용자와 상기 개인 보조 모듈 간의 상호 작용 이력의 하나 이상의 기록들에 기초한 하나 이상의 통계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  12. 제1항에 있어서,
    상기 하나 이상의 신호들은 상기 자원 제약형 장치의 위치 좌표들을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  13. 온라인 시맨틱 프로세서로서,
    통신 인터페이스;
    상기 통신 인터페이스와 동작 가능하게 결합된 하나 이상의 프로세서들; 그리고
    상기 하나 이상의 프로세서들과 동작 가능하게 결합된 메모리를 포함하며,
    상기 메모리는 상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 명령어들을 저장하며, 상기 동작들은,
    자원 제약형 장치에서 동작하는 개인 보조 모듈로부터 사용자 요청을 나타내는 데이터를 수신하는 동작 -상기 자원 제약형 장치는 사용자 디바이스임-;
    상기 사용자 요청을 나타내는 데이터를 수신하는 것에 응답하여:
    상기 온라인 시맨틱 프로세서가 이용 가능하지 않고 상기 자원 제약형 장치에 로컬인 하나 이상의 센서들로부터 상기 개인 보조 모듈에 의해 확인할 수 있는 하나 이상의 신호들에 기초하여 자원 제약형 장치의 상기 개인 보조 모듈에 의해 트래버스가능한(traversable) 복수의 후보 상태들을 포함하는 상태 머신을 생성하는 동작 -복수의 후보 상태들 중 적어도 제1 후보 상태는 상기 사용자 요청에 잠재적으로 응답하는 둘 이상의 별개의 소프트웨어 애플리케이션 상태들 사이에서 입력 선택을 요구하는 개인 보조 모듈에 의해 전달될 출력을 포함하며, 상기 복수의 후보 상태들 중 적어도 제2 후보 상태는 상기 온라인 시맨틱 프로세서가 이용 불가능한 하나 이상의 신호들에 기초하여 상기 제1 후보 상태를 전환함으로써 상기 개인 보조 모듈에 의해 도달가능하며, 상기 제2 후보 상태에서, 상기 둘 이상의 별개의 소프트웨어 애플리케이션 상태들 중 적어도 하나는 상기 하나 이상의 신호들에 기초하여 자동으로 선택됨-; 그리고
    상기 자원 제약형 장치에서 구현을 위해 상기 상태 머신을 나타내는 데이터를 상기 통신 인터페이스를 통해 상기 자원 제약형 장치에 다운로드하는 동작을 포함하는 것을 특징으로 하는 온라인 시맨틱 프로세서.
  14. 제13항에 있어서, 상기 온라인 시맨틱 프로세서는 하나 이상의 정보 신호들을 확인하기 위해 상기 사용자와 연관된 하나 이상의 온라인 자원들을 분석하도록 하는 명령어들을 더 포함하고, 상기 상태 머신은 상기 하나 이상의 정보 신호들에 적어도 부분적으로 기초하여 생성되는 것을 특징으로 하는 온라인 시맨틱 프로세서.
  15. 명령어들을 포함하는 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은, 자원 제약형 장치에 의해 실행될 때, 상기 자원 제약형 장치로 하여금 제1 항 내지 제12항 중 어느 한 항에 따른 방법을 수행하게 하는 것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
  16. 장치로서,
    통신 인터페이스와 동작 가능하게 결합된 하나 이상의 프로세서들; 그리고
    상기 하나 이상의 프로세서들과 동작 가능하게 결합된 메모리를 포함하며,
    상기 메모리는 상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 제1항 내지 제12항 중 어느 한 항에 따른 방법을 수행하게 하는 명령어들을 저장하는 것을 특징으로 하는 장치.
  17. 삭제
  18. 삭제
KR1020197000070A 2016-06-08 2016-12-28 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공 KR102178896B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/177,327 US10462619B2 (en) 2016-06-08 2016-06-08 Providing a personal assistant module with a selectively-traversable state machine
US15/177,327 2016-06-08
PCT/US2016/068927 WO2017213703A1 (en) 2016-06-08 2016-12-28 Providing a personal assistant module with a selectively-traversable state machine

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020207032317A Division KR102233343B1 (ko) 2016-06-08 2016-12-28 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공

Publications (2)

Publication Number Publication Date
KR20190012255A KR20190012255A (ko) 2019-02-08
KR102178896B1 true KR102178896B1 (ko) 2020-11-13

Family

ID=57838524

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197000070A KR102178896B1 (ko) 2016-06-08 2016-12-28 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공
KR1020207032317A KR102233343B1 (ko) 2016-06-08 2016-12-28 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207032317A KR102233343B1 (ko) 2016-06-08 2016-12-28 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공

Country Status (6)

Country Link
US (2) US10462619B2 (ko)
EP (1) EP3446218B1 (ko)
JP (1) JP6789320B2 (ko)
KR (2) KR102178896B1 (ko)
CN (2) CN109564530B (ko)
WO (1) WO2017213703A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11113608B2 (en) * 2017-10-30 2021-09-07 Accenture Global Solutions Limited Hybrid bot framework for enterprises
CN108538291A (zh) * 2018-04-11 2018-09-14 百度在线网络技术(北京)有限公司 语音控制方法、终端设备、云端服务器及系统
US10782986B2 (en) 2018-04-20 2020-09-22 Facebook, Inc. Assisting users with personalized and contextual communication content
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US11115410B1 (en) 2018-04-20 2021-09-07 Facebook, Inc. Secure authentication for assistant systems
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US10978056B1 (en) 2018-04-20 2021-04-13 Facebook, Inc. Grammaticality classification for natural language generation in assistant systems
US10811014B1 (en) * 2018-06-28 2020-10-20 Amazon Technologies, Inc. Contact list reconciliation and permissioning
US10698500B2 (en) * 2018-07-24 2020-06-30 Bank Of America Corporation Touch-based and audio-responsive user interface for elimination of a query's component terms
US10896295B1 (en) 2018-08-21 2021-01-19 Facebook, Inc. Providing additional information for identified named-entities for assistant systems
US10949616B1 (en) 2018-08-21 2021-03-16 Facebook, Inc. Automatically detecting and storing entity information for assistant systems
CN109272999B (zh) * 2018-09-19 2019-08-16 三角兽(北京)科技有限公司 信息处理装置、其人机对话方法及存储介质
US11442992B1 (en) 2019-06-28 2022-09-13 Meta Platforms Technologies, Llc Conversational reasoning with knowledge graph paths for assistant systems
US11657094B2 (en) 2019-06-28 2023-05-23 Meta Platforms Technologies, Llc Memory grounded conversational reasoning and question answering for assistant systems
US11120800B1 (en) * 2019-09-24 2021-09-14 Amazon Technologies, Inc. Event based feature computation
US11749265B2 (en) * 2019-10-04 2023-09-05 Disney Enterprises, Inc. Techniques for incremental computer-based natural language understanding
US11861674B1 (en) 2019-10-18 2024-01-02 Meta Platforms Technologies, Llc Method, one or more computer-readable non-transitory storage media, and a system for generating comprehensive information for products of interest by assistant systems
US11567788B1 (en) 2019-10-18 2023-01-31 Meta Platforms, Inc. Generating proactive reminders for assistant systems
CN110908650A (zh) * 2019-10-18 2020-03-24 贵州云辰软件开发有限公司 一种基于状态机的软件快速编程方法
US11562744B1 (en) 2020-02-13 2023-01-24 Meta Platforms Technologies, Llc Stylizing text-to-speech (TTS) voice response for assistant systems
US11875320B1 (en) 2020-02-28 2024-01-16 The Pnc Financial Services Group, Inc. Systems and methods for managing a financial account in a low-cash mode
US11159767B1 (en) 2020-04-07 2021-10-26 Facebook Technologies, Llc Proactive in-call content recommendations for assistant systems
US11658835B2 (en) 2020-06-29 2023-05-23 Meta Platforms, Inc. Using a single request for multi-person calling in assistant systems
US20220157315A1 (en) * 2020-11-13 2022-05-19 Apple Inc. Speculative task flow execution
US11563706B2 (en) 2020-12-29 2023-01-24 Meta Platforms, Inc. Generating context-aware rendering of media contents for assistant systems
US11809480B1 (en) 2020-12-31 2023-11-07 Meta Platforms, Inc. Generating dynamic knowledge graph of media contents for assistant systems
US11861315B2 (en) 2021-04-21 2024-01-02 Meta Platforms, Inc. Continuous learning for natural-language understanding models for assistant systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8489398B1 (en) 2011-01-14 2013-07-16 Google Inc. Disambiguation of spoken proper names

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1693829B1 (en) * 2005-02-21 2018-12-05 Harman Becker Automotive Systems GmbH Voice-controlled data system
CN102272827B (zh) * 2005-06-01 2013-07-10 泰吉克通讯股份有限公司 利用语音输入解决模糊的手工输入文本输入的方法和装置
US20070115920A1 (en) 2005-10-18 2007-05-24 Microsoft Corporation Dialog authoring and execution framework
US9318108B2 (en) * 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US20090197582A1 (en) * 2008-02-01 2009-08-06 Lewis Robert C Platform for mobile advertising and microtargeting of promotions
US8626511B2 (en) * 2010-01-22 2014-01-07 Google Inc. Multi-dimensional disambiguation of voice commands
US8694313B2 (en) * 2010-05-19 2014-04-08 Google Inc. Disambiguation of contact information using historical data
US8473289B2 (en) * 2010-08-06 2013-06-25 Google Inc. Disambiguating input based on context
US9842299B2 (en) 2011-01-25 2017-12-12 Telepathy Labs, Inc. Distributed, predictive, dichotomous decision engine for an electronic personal assistant
CN102681304A (zh) * 2011-03-09 2012-09-19 深圳富泰宏精密工业有限公司 保护罩、应用其的相机模组和便携式电子装置
KR101683083B1 (ko) * 2011-09-30 2016-12-07 애플 인크. 가상 비서에서 커맨드 처리를 용이하게 하기 위한 컨텍스트 정보의 이용
US8805340B2 (en) * 2012-06-15 2014-08-12 BlackBerry Limited and QNX Software Systems Limited Method and apparatus pertaining to contact information disambiguation
US9026431B1 (en) * 2013-07-30 2015-05-05 Google Inc. Semantic parsing with multiple parsers
US8995972B1 (en) 2014-06-05 2015-03-31 Grandios Technologies, Llc Automatic personal assistance between users devices
CA2962636A1 (en) * 2014-10-01 2016-04-07 XBrain, Inc. Voice and connection platform
US9922648B2 (en) * 2016-03-01 2018-03-20 Google Llc Developer voice actions system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8489398B1 (en) 2011-01-14 2013-07-16 Google Inc. Disambiguation of spoken proper names

Also Published As

Publication number Publication date
JP6789320B2 (ja) 2020-11-25
CN109564530A (zh) 2019-04-02
KR20200129191A (ko) 2020-11-17
US20170359707A1 (en) 2017-12-14
WO2017213703A1 (en) 2017-12-14
US20200029182A1 (en) 2020-01-23
US10694344B2 (en) 2020-06-23
EP3446218B1 (en) 2019-09-18
KR102233343B1 (ko) 2021-03-29
CN117271010A (zh) 2023-12-22
EP3446218A1 (en) 2019-02-27
KR20190012255A (ko) 2019-02-08
CN109564530B (zh) 2023-09-12
US10462619B2 (en) 2019-10-29
JP2019520644A (ja) 2019-07-18

Similar Documents

Publication Publication Date Title
KR102178896B1 (ko) 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공
KR102189853B1 (ko) 퍼스널 어시스턴트 모듈에 의한 비결정적 작업 개시
JP6690063B2 (ja) 対話型アシスタントモジュールによるアクセスの条件付き提供
US9111538B2 (en) Genius button secondary commands
KR102043365B1 (ko) 음성 인식 전자 디바이스에서 선택적으로 오프라인으로 실행가능한 음성 액션을 위한 데이터의 로컬 유지
CN105378708B (zh) 环境感知对话策略和响应生成
KR20170070094A (ko) 음성 및 연결 플랫폼
KR102624148B1 (ko) 인간 사용자를 대신하여 대화형 음성 응답(ivr) 트리 자동 탐색
KR20140022824A (ko) 오디오 상호작용 메시지 교환
US11551676B2 (en) Techniques for dialog processing using contextual data
US10997963B1 (en) Voice based interaction based on context-based directives
JP2024020472A (ja) 人間の参加者の代理の自動アシスタントによる準委任通話
CN112219386A (zh) 语音响应系统的图形用户界面
KR20240046433A (ko) 통화에 대한 추정 보류 기간 결정 및 디스플레이

Legal Events

Date Code Title Description
A201 Request for examination
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