KR20170103801A - 디지털 개인 비서 내에서 헤드리스로 작업을 완료하기 위한 기법 - Google Patents
디지털 개인 비서 내에서 헤드리스로 작업을 완료하기 위한 기법 Download PDFInfo
- Publication number
- KR20170103801A KR20170103801A KR1020177018792A KR20177018792A KR20170103801A KR 20170103801 A KR20170103801 A KR 20170103801A KR 1020177018792 A KR1020177018792 A KR 1020177018792A KR 20177018792 A KR20177018792 A KR 20177018792A KR 20170103801 A KR20170103801 A KR 20170103801A
- Authority
- KR
- South Korea
- Prior art keywords
- voice
- application
- user
- task
- command
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 73
- 230000004044 response Effects 0.000 claims abstract description 69
- 238000012545 processing Methods 0.000 claims abstract description 28
- 230000008569 process Effects 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 64
- 230000015654 memory Effects 0.000 claims description 39
- 238000004891 communication Methods 0.000 claims description 28
- 230000006854 communication Effects 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 19
- 238000003058 natural language processing Methods 0.000 claims description 17
- 238000012790 confirmation Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 238000010792 warming Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims 3
- 230000007704 transition Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 10
- 230000009471 action Effects 0.000 description 9
- 230000001413 cellular effect Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000009877 rendering Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000001066 destructive effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000009987 spinning Methods 0.000 description 2
- 206010044565 Tremor Diseases 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000007177 brain activity Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005674 electromagnetic induction Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
- G06F3/162—Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
- G06F3/167—Audio in a user interface, e.g. using voice commands for navigating, audio feedback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/08—Speech classification or search
- G10L15/18—Speech classification or search using natural language modelling
- G10L15/1822—Parsing for meaning understanding
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
- G10L2015/223—Execution procedure of a spoken command
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Acoustics & Sound (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- User Interface Of Digital Computer (AREA)
- Circuit For Audible Band Transducer (AREA)
- Machine Translation (AREA)
- Collating Specific Patterns (AREA)
- Document Processing Apparatus (AREA)
Abstract
디지털 개인 비서의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로 완료하기 위한 기술이 설명된다. 예를 들어, 방법은 마이크를 통해 음성 입력을 수신하는 단계를 포함할 수 있다. 음성 입력을 사용하여 자연어 처리를 수행하여 사용자 음성 명령을 결정할 수 있다. 사용자 음성 명령은 애플리케이션의 작업을 수행하기 위한 요청을 포함할 수 있다. 애플리케이션은, 애플리케이션의 사용자 인터페이스를 나타내지 않고 작업을 백그라운드 프로세스로 실행시킬 수 있다. 디지털 개인 비서의 사용자 인터페이스가 작업과 관련된 수신된 상태에 기초하여 사용자에게 응답을 제공함으로써, 응답이 사용자 인터페이스를 나타내지 않고 디지털 개인 비서의 사용자 인터페이스의 컨텍스트 내에서 발생할 수 있다.
Description
컴퓨팅 기술이 발전함에 따라 점점 더 강력한 컴퓨팅 장치가 사용 가능해졌다. 예를 들어, 컴퓨팅 장치는 음성 인식(speech recognition)과 같은 기능을 점점 추가하고 있다. 음성은 사용자가 컴퓨팅 장치와 통신하는 효과적인 방법일 수 있으며, 음성-제어 디지털 개인 비서(speech-controlled digital personal assistant)와 같은 음성 제어 애플리케이션이 개발되고 있다.
개인용 작업 또는 서비스를 수행하기 위해 디지털 개인 비서가 사용될 수 있다. 예를 들어, 디지털 개인 비서는 모바일 장치 또는 데스크탑 컴퓨터에서 실행되는 소프트웨어 모듈일 수 있다. 디지털 개인 비서가 수행할 수 있는 작업 및 서비스의 예로는 날씨 및 일기 예보, 스포츠 경기 점수, 교통 방향 및 조건, 지역 및/또는 국가 뉴스 기사, 및 주가를 검색하고, 새로운 일정(schedule) 항목을 생성하여 사용자의 일정을 관리하고, 다가오는 일정을 사용자에게 상기시켜 주고, 리마인더를 저장 및 검색하는 것을 들 수 있다.
그러나, 디지털 개인 비서는 사용자가 수행하기를 원하는 모든 작업을 수행할 수는 없다. 따라서, 음성-제어 디지털 개인 비서와 관련된 기술의 개선을 위한 충분한 기회가 존재한다.
이 요약은 아래의 상세한 설명에서 추가로 설명되는 일련의 개념을 단순화된 형태로 소개하기 위해 제공된다. 이 요약은 청구 대상의 주요 특징이나 필수적인 특징을 식별하기 위한 것이 아니며 청구 대상의 범위를 제한하는데 사용하기 위한 것도 아니다.
디지털 개인 비서의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로(headlessly) 완료하기 위한 기법 및 도구가 설명된다. 예를 들어, 방법은 마이크를 포함하는 컴퓨팅 장치에 의해 구현될 수 있다. 상기 방법은 사용자에 의해 생성된 디지털 음성 입력을 음성 제어(voice-controlled) 디지털 개인 비서에 의해 수신하는 단계를 포함할 수 있다. 디지털 음성 입력은 마이크를 통해 수신할 수 있다. 디지털 음성 입력을 사용하여 자연어 처리를 수행하여 사용자 음성 명령을 결정할 수 있다. 사용자 음성 명령은 제 3 자 음성-지원 애플리케이션(third-party voice-enabled application)의 사전 정의된 기능을 수행하기 위한 요청을 포함할 수 있다. 사전 정의된 기능은 음성 입력을 사용하는 이용 가능한 제 3 자 음성-지원 애플리케이션에서 지원하는 기능을 정의하는 데이터 구조를 사용하여 식별할 수 있다. 제 3 자 음성-지원 애플리케이션은, 제 3 자 음성-지원 애플리케이션의 사용자 인터페이스를 컴퓨팅 장치의 디스플레이에 표시하지 않고 사전 정의된 기능을 백그라운드 프로세스로 실행되게 할 수 있다. 사전 정의된 기능과 관련된 상태를 나타내는 응답이 제 3 자 음성-지원 애플리케이션으로부터 수신될 수 있다. 음성-제어 디지털 개인 비서의 사용자 인터페이스는 사전 정의된 기능과 관련된 수신된 상태에 기초하여 사용자에게 응답을 제공할 수 있으므로, 응답은 제 3 자 음성-지원 애플리케이션의 사용자 인터페이스를 나타내지 않고 음성-제어 디지털 개인 비서의 사용자 인터페이스 컨텍스트 내에서 발생한다.
또 다른 예로서, 처리 장치, 메모리, 및 하나 이상의 마이크를 포함하는 컴퓨팅 장치가 본원에 설명된 동작들을 수행하기 위해 제공될 수 있다. 예를 들어, 컴퓨팅 장치에 의해 수행되는 방법은 사용자에 의해 생성된 음성 입력을 하나 이상의 마이크를 통해 수신하는 단계를 포함할 수 있다. 음성 입력을 이용하여 음성 인식이 수행되어 음성 명령을 결정할 수 있다. 음성 명령은 제 3 자 애플리케이션의 작업을 수행하기 위한 요청을 포함할 수 있다. 작업은 음성 명령으로 호출할 수 있는 제 3 자 애플리케이션의 작업을 정의하는 데이터 구조를 사용하여 식별할 수 있다. 제 3 자 애플리케이션의 작업이 헤드리스 방식으로 실행될 수 있는지 여부를 결정할 수 있다. 제 3 자 애플리케이션의 작업이 헤드리스 방식으로 실행될 수 있다고 판단될 때 제 3 자 애플리케이션을 백그라운드로 실행하여 헤드리스 방식으로 작업을 실행할 수 있다. 작업과 연관된 상태를 나타내는 응답이 제 3 자 애플리케이션으로부터 수신될 수 있다. 음성-제어 디지털 개인 비서의 사용자 인터페이스는 작업과 관련된 수신된 상태에 기초하여 사용자에게 응답을 제공할 수 있으므로, 응답은 제 3 자 애플리케이션의 사용자 인터페이스를 나타내지 않고 음성-제어 디지털 개인 비서의 사용자 인터페이스 컨텍스트 내에서 발생한다.
다른 예로서, 처리 장치 및 메모리를 포함하는 컴퓨팅 장치가 본원에 설명된 동작들을 수행하기 위해 제공될 수 있다. 예를 들어, 컴퓨팅 장치는 음성-제어 디지털 개인 비서의 컨텍스트에서 음성-지원 애플리케이션의 작업을 완료하기 위한 동작을 수행할 수 있다. 동작들은 음성-제어 디지털 개인 비서에서 사용자에 의해 생성된 디지털 음성 입력을 수신하는 단계를 포함할 수 있다. 디지털 음성 입력은 마이크를 통해 수신할 수 있다. 자연어 처리는 디지털 음성 입력을 사용하여 수행되어, 사용자 음성 명령을 결정할 수 있다. 사용자 음성 명령은 음성-지원 애플리케이션의 작업을 수행하기 위한 요청을 포함할 수 있다. 사용자 음성 명령을 음성-지원 애플리케이션의 작업에 매핑하는 확장 가능한 데이터 구조를 사용하여 작업을 식별할 수 있다. 음성-지원 애플리케이션의 작업이 포어그라운드 작업(foreground task)인지 또는 백그라운드 작업인지 여부를 판정할 수 있다. 작업이 백그라운드 작업인 것으로 판정되면, 음성-지원 애플리케이션은 음성-지원 애플리케이션의 사용자 인터페이스의 제공 없이 음성-제어 디지털 개인 비서의 컨텍스트 내에서 작업을 백그라운드 작업으로 실행되게 할 수 있다. 음성-지원 애플리케이션의 응답을 수신할 수 있다. 응답은 작업과 관련된 상태를 나타낼 수 있다. 응답은 작업과 관련된 수신된 상태를 기반으로 사용자에게 제공될 수 있다. 응답은 작업이 백그라운드 작업이라고 판단될 때 음성-지원 애플리케이션의 사용자 인터페이스의 제공 없이 음성-제어 디지털 개인 비서의 컨텍스트 내에서 제공될 수 있다.
본원에서 설명된 바와 같이, 다양한 다른 특징들 및 장점들이 원하는 대로 기술에 통합될 수 있다.
도 1은 디지털 개인 비서의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로 완료하기 위한 시스템의 일례를 나타낸 도면이다.
도 2는 디지털 개인 비서의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로 완료하기 위한 예시적인 소프트웨어 아키텍처를 도시하는 도면이다.
도 3은 디지털 개인 비서와 인터페이싱하는 애플리케이션을 위한 예시적인 상태 머신의 도면이다.
도 4는 애플리케이션과 디지털 개인 비서 사이의 인터페이스를 가능하게 하는 데이터 구조를 생성하는데 사용될 수 있는 명령 정의의 예이다.
도 5는 디지털 개인 비서 내에서 애플리케이션의 작업을 헤드리스 방식으로 수행하기 위한 다수의 스레드들의 통신을 나타내는 예시적인 시퀀스 도면이다.
도 6은 디지털 개인 비서의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로 완료하기 위한 예시적인 방법의 흐름도이다.
도 7은 사용자가 디지털 개인 비서와 대화하는 동안 애플리케이션을 워밍업할지 여부를 결정하기 위한 예시적인 방법의 흐름도이다.
도 8은 일부 설명된 실시예가 구현될 수 있는 예시적인 컴퓨팅 시스템의 도면이다.
도 9는 본원에서 설명된 기술들과 함께 사용할 수 있는 예시적인 모바일 장치이다.
도 10은 본원에 설명된 기술과 함께 사용할 수 있는 예시적인 클라우드-지원 환경이다.
도 2는 디지털 개인 비서의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로 완료하기 위한 예시적인 소프트웨어 아키텍처를 도시하는 도면이다.
도 3은 디지털 개인 비서와 인터페이싱하는 애플리케이션을 위한 예시적인 상태 머신의 도면이다.
도 4는 애플리케이션과 디지털 개인 비서 사이의 인터페이스를 가능하게 하는 데이터 구조를 생성하는데 사용될 수 있는 명령 정의의 예이다.
도 5는 디지털 개인 비서 내에서 애플리케이션의 작업을 헤드리스 방식으로 수행하기 위한 다수의 스레드들의 통신을 나타내는 예시적인 시퀀스 도면이다.
도 6은 디지털 개인 비서의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로 완료하기 위한 예시적인 방법의 흐름도이다.
도 7은 사용자가 디지털 개인 비서와 대화하는 동안 애플리케이션을 워밍업할지 여부를 결정하기 위한 예시적인 방법의 흐름도이다.
도 8은 일부 설명된 실시예가 구현될 수 있는 예시적인 컴퓨팅 시스템의 도면이다.
도 9는 본원에서 설명된 기술들과 함께 사용할 수 있는 예시적인 모바일 장치이다.
도 10은 본원에 설명된 기술과 함께 사용할 수 있는 예시적인 클라우드-지원 환경이다.
개요
사용자가 디지털 개인 비서를 사용하는 것이 점점 더 편안해지면서, 사용자는 디지털 개인 비서의 컨텍스트 내에서 더 많은 동작을 수행하는 것을 선호할 수 있다. 그러나 디지털 개인 비서의 제공자는 사용자가 사용하고자 하는 모든 애플리케이션을 예측하거나 그것을 개발하는데 시간을 쓸 수 없다. 따라서, 디지털 개인 비서가 디지털 개인 비서의 제공자 이외의 개체에 의해 생성된 제 3 자 애플리케이션을 호출하거나 시작할 수 있는 것이 바람직할 수 있다.
일반적인 해결책으로, 디지털 개인 비서가 애플리케이션을 시작하고 프로그램 제어가 디지털 개인 비서로부터 애플리케이션으로 넘어갈 때, 애플리케이션의 사용자 인터페이스가 나타난다. 애플리케이션의 사용자 인터페이스가 나타나면, 사용자는 요청 상태를 확인할 수 있으며 사용자는 애플리케이션 내에서 추가 작업을 수행할 수 있다. 디지털 개인 비서의 사용자 인터페이스로 돌아가려면, 제어가 디지털 개인 비서로 돌아가기 전에 사용자가 애플리케이션을 종료해야 한다.
휴대 전화의 디지털 개인 비서를 이용하는 구체적인 예로서, 사용자는 휴대 전화에 설치된 영화 애플리케이션을 이용하여 사용자의 대기열(queue)에 영화를 추가하도록 요구할 수 있다. 예를 들어, 사용자는 "영화 애플리케이션, 대기열에 Movie-X 추가"라고 디지털 개인 비서의 사용자 인터페이스에 말할 수 있다. 명령이 구술되고 비서가 인식한 후에, 비서는 영화 애플리케이션의 사용자 인터페이스를 제공하는 영화 애플리케이션을 시작할 수 있다. 영화는 사용자의 대기열에 추가될 수 있으며, 영화가 추가되었다는 확인으로서 대기열이 사용자에게 제시될 수 있다. 사용자는 계속해서 영화 애플리케이션을 사용할 수 있으며, 또는 사용자는 영화 애플리케이션을 닫아 디지털 개인 비서의 사용자 인터페이스로 돌아갈 수 있다.
디지털 개인 비서가 제어를 애플리케이션에 전이시킬 때(transition), 애플리케이션 및 그 사용자 인터페이스를 메모리에 로딩하는 것은 인지 가능한 양의 시간이 걸릴 수 있다. 사용자가 후속 작업을 수행하는 것을 지연시키거나 및/또는 사용자의 생각의 흐름을 방해하는 것과 같이, 지연은 잠재적으로 사용자의 생산성에 영향을 미칠 수 있다. 예를 들어, 디지털 개인 비서의 사용자 인터페이스로 돌아가기 전에 애플리케이션을 닫는 것으로 사용자의 주의가 기울 수 있다. 또한, 제어를 애플리케이션으로 전이시킴으로써, 디지털 개인 비서가 이용할 수 있는 컨텍스트 정보가 애플리케이션에서는 이용 가능하지 않을 수도 있다. 예를 들어, 디지털 개인 비서는 사용자의 배우자의 신원 및 연락처 정보, 사용자의 집 또는 사무실의 위치, 또는 사용자의 데이케어 제공자의 위치를 알 수 있지만, 애플리케이션은 컨텍스트 정보에 액세스할 수가 없다.
본원에서 설명된 기술 및 해결책에서, 디지털 개인 비서는 제 3 자 애플리케이션의 작업이 백그라운드에서 수행될 수 있는지를 판정할 수 있으므로, 작업을 수행하기 위한 동작이 디지털 개인 비서의 컨텍스트 내에서 음성-지원 애플리케이션의 사용자 인터페이스가 나타나지 않고 수행될 수 있다. 따라서, 사용자는 주어진 작업 세트가 사용자 작업을 수행하는 애플리케이션의 컨텍스트가 아니라 디지털 개인 비서의 컨텍스트 내에서 수행되는 것을 경험할 수 있다. 또한, 애플리케이션의 작업이 백그라운드에서 수행될 때 애플리케이션의 사용자 인터페이스가 메모리에 로딩되지 않기 때문에 장치의 전력이 잠재적으로 감소될 수 있다(그리고 배터리 수명이 길어질 수 있다).
애플리케이션은 디지털 개인 비서에 등록하여 비서가 제공하는 고유 기능(native capabilities) 목록에서 확장할 수 있다. 애플리케이션은 장치에 설치되거나 네트워크(예를 들어, 인터넷)를 통해 서비스로 호출될 수 있다. 애플리케이션은 스키마 정의를 통해 사용자가 명령/작업을 요청할 때 헤드리스 방식으로 시작될 요청과 함께 음성 명령을 등록할 수 있다. 예를 들어, 애플리케이션에는 디지털 개인 비서가 액세스할 수 있는 음성 명령 정의(VCD) 파일이 포함될 수 있으며, VCD 파일은 헤드리스 방식으로 시작할 수 있는 작업을 식별한다. 이 정의는 애플리케이션의 작업이 항상 헤드리스 방식으로 시작되도록 지정하거나, 또는 특정 상황에서 애플리케이션의 작업이 헤드리스 방식으로 시작되도록 지정할 수 있다. 예를 들어, 표시면이 없는 장치(예를 들어, 무선 피트니스 밴드)에서 작업을 수행하도록 사용자가 요청하는 경우 또는 사용자가 핸즈프리 모드로 작업 중일 때(예를 들어, 사용자가 블루투스 헤드셋에 연결된 경우), 애플리케이션은 무언가를 헤드리스 방식으로 수행하도록 선택할 수 있다.
애플리케이션은 요청된 작업의 진행, 실패 및 성공적인 완료에 대한 응답을 제공할 수 있고, 상태와 관련된 출력이 디지털 개인 비서의 사용자 인터페이스에 의해 제공될 수 있다. 애플리케이션은 예를 들어, 디스플레이 텍스트, 소리내어 읽을 수 있는 텍스트, 애플리케이션으로의 딥 링크(deep link), 웹페이지 또는 웹사이트에 대한 링크, 및 하이퍼텍스트 마크업 언어(HTML) 기반 웹 컨텐츠를 포함하는 다양한 유형의 데이터를 디지털 개인 비서에 다시 제공할 수 있다. 애플리케이션에서 비서로의 데이터는 비서의 사용자 인터페이스를 통해 비서의 고유 기능에서 오는 것처럼 표현될 수 있다.
사용자가 다수의 의미 또는 결과를 가질 수 있는 요청을 애플리케이션에 제공하는 경우, 애플리케이션은 디지털 개인 비서에게 선택 목록을 제공할 수 있고 비서의 사용자 인터페이스는 선택들 사이의 모호성을 없애기 위해 사용될 수 있다. 사용자가 파괴적이거나 중요한 요청을 애플리케이션에 제공하면(예를 들어, 사용자가 뱅킹 애플리케이션에 잔액 전송을 요청한 경우), 비서의 확인 인터페이스를 사용하여 파괴적이거나 중요한 작업을 완료하기 전에 요청을 확인할 수 있다.
명령이 구술됨에 따라 애플리케이션이 추론적으로(speculatively) 로딩되거나 워밍업될 수 있다. 예를 들어, 사용자가 "영화 애플리케이션, 대기열에 Movie-X 추가" 명령으로부터 "영화 애플리케이션"이라는 구절을 완성하면, 메모리가 할당되고, 설치된 영화 애플리케이션의 다양한 서브루틴이 저장소에서 검색될 수 있고, 명령이 완료될 때 서브루틴이 사용될 것을 대비하여 할당된 메모리에 로딩될 수 있다. 예를 들어, 애플리케이션이 웹 서비스일 때, 워밍업은 통신 세션을 설정하고 원격 서버의 데이터베이스에서 사용자 고유의 정보를 검색하는 것을 포함할 수 있다. 애플리케이션을 워밍업함으로써, 사용자 응답 시간이 잠재적으로 줄어들어, 상호 작용이 보다 자연스럽고 사용자가 다음 작업으로 더 빨리 이동할 수 있어 사용자 생산성이 향상될 수 있다.
본원의 기술을 사용하면, 영화 애플리케이션을 사용하여 사용자 대기열에 영화를 추가하려는 사용자는 영화 애플리케이션을 시작하고 애플리케이션에 제어를 전달하는 일반적인 해결책을 사용할 때와는 다른 경험을 할 수 있다. 이 예시에서, 영화 애플리케이션의 대기열에-영화-추가 명령(add-movie-to-queue command)은 VCD 파일과 같은 명령 데이터 구조에서 헤드리스 방식으로 정의될 수 있다. 사용자가 "영화 애플리케이션, 대기열에 Movie-X 추가" 명령에서 "영화 애플리케이션"이라고 말하면, 영화 애플리케이션이 워밍업되어 사용자 응답 시간이 줄어들 수 있다. 명령이 완료될 때, 영화 애플리케이션을 사용하여 그러나 영화 애플리케이션의 사용자 인터페이스를 나타내지 않고 사용자 대기열에 영화가 추가될 수 있다. 영화를 사용자 대기열에 추가할 수 있으며 디지털 개인 비서가 영화가 추가되었음을 (비서의 사용자 인터페이스를 사용하여) 확인할 수 있다. 사용자는 보다 빠른 응답 시간을 경험할 수 있으며 더 적은 단계를 수행하여 작업을 완료할 수 있다(예를 들어, 영화 애플리케이션을 닫을 필요가 없다).
디지털 개인 비서를 포함하는 예시적인 시스템
도 1은 디지털 개인 비서(120)의 백그라운드에서 음성-지원 애플리케이션(110)의 작업(112)을 헤드리스 방식으로 완료하기 위한 시스템(100)의 일례를 나타낸 시스템도이다. 음성-지원 애플리케이션(110) 및 디지털 개인 비서(120)는 컴퓨팅 장치(130)에 설치된 소프트웨어 모듈일 수 있다. 컴퓨팅 장치(130)는 예를 들어, 데스크탑 컴퓨터, 랩탑, 휴대폰, 스마트폰, 착용 가능한 장치(예를 들어, 시계 또는 무선 전자 밴드) 또는 태블릿 컴퓨터일 수 있다. 컴퓨팅 장치(130)는 디지털 개인 비서(120)에 의해 시작될 수 있는 애플리케이션 및 애플리케이션의 작업을 식별하기 위해 명령 데이터 구조(140)를 포함할 수 있다. 애플리케이션은 디지털 개인 비서(120)에 의해 포어그라운드에서(예를 들어, 애플리케이션이 시작될 때 애플리케이션의 사용자 인터페이스가 표시됨) 및/또는 백그라운드에서(애플리케이션이 시작될 때 애플리케이션의 사용자 인터페이스가 표시되지 않음) 시작될 수 있다. 예를 들어, 포어그라운드에서 애플리케이션의 일부 작업을 시작할 수 있으며 동일한 애플리케이션의 여러 작업들을 백그라운드에서 시작할 수 있다. 명령 데이터 구조(140)는 애플리케이션 및/또는 애플리케이션의 작업이 디지털 개인 비서(120)로부터 어떻게 시작되어야 하는지를 정의할 수 있다.
컴퓨팅 장치(130)는 소리를 전기 신호로 변환하기 위한 마이크(150)를 포함할 수 있다. 마이크(150)는 공기압 변화로부터 전기 신호를 생성하기 위해 전자기 유도, 커패시턴스의 변화, 또는 압전성(piezoelectricity)을 각각 사용하는 동적, 콘덴서 또는 압전 마이크일 수 있다. 마이크(150)는 디지털 사운드 입력을 생성하기 위해 증폭기, 하나 이상의 아날로그 또는 디지털 필터, 및/또는 아날로그-디지털 변환기(analog-to-digital converter)를 포함할 수 있다. 디지털 사운드 입력은, 예를 들어, 사용자가 작업을 완수하기 위해 디지털 개인 비서(120)에 명령할 때, 사용자의 음성의 재생을 포함할 수 있다. 컴퓨팅 장치(130)는 사용자가 텍스트 입력을 입력할 수 있게 하는 터치스크린 또는 키보드(도시되지 않음)를 포함할 수 있다.
디지털 사운드 입력 및/또는 텍스트 입력은 디지털 개인 비서(120)의 자연어 처리 모듈(122)에 의해 처리될 수 있다. 예를 들어, 자연어 처리 모듈(122)은 디지털 사운드 입력을 수신하여 사용자가 구술한 단어를 텍스트로 옮길 수 있다. 추출된 텍스트는 사용자 음성 명령을 결정하기 위해 의미론적으로 분석될 수 있다. 디지털 사운드 입력을 분석하고 음성 명령에 응답하여 동작을 취함으로써, 디지털 개인 비서(120)는 음성 제어될 수 있다. 예를 들어, 디지털 개인 비서(120)는 추출된 텍스트를 잠재적인 사용자 명령 목록과 비교하여 사용자의 의도와 거의 일치하는 명령을 결정할 수 있다. 일치는 통계적 또는 확률론적 방법, 의사 결정 트리 또는 다른 규칙, 다른 적합한 일치 기준, 또는 이들의 조합에 기초할 수 있다. 잠재적인 사용자 명령은 디지털 개인 비서(120)의 고유 명령 및/또는 명령 데이터 구조(140)에서 정의된 명령일 수 있다. 따라서, 명령 데이터 구조(140)에서 명령을 정의함으로써, 디지털 개인 비서(120)가 사용자를 대신하여 수행할 수 있는 작업들의 범위가 확대될 수 있다. 잠재적인 명령은 명령 데이터 구조(140)에서 헤드리스 또는 백그라운드 작업으로 정의될 수 있는, 음성-지원 애플리케이션(110)의 작업(112)을 수행하는 것을 포함할 수 있다.
자연어 처리 모듈(122)은 사용자 구술이 완료되기 전에 텍스트의 중간 문자열이 분석될 수 있도록, 음성이 처리될 때 텍스트 스트림을 생성할 수 있다. 따라서 사용자가 애플리케이션의 이름으로 명령을 시작하면, 애플리케이션이 구술에서 일찍 식별될 수 있으며, 애플리케이션은 사용자가 명령을 완료하기 전에 워밍업될 수 있다. 애플리케이션의 워밍업은 상대적으로 느린 비휘발성 메모리(예를 들어, 하드 디스크 드라이브 또는 플래시 메모리)에서 애플리케이션의 명령을 검색하고 상대적으로 빠른 휘발성 메모리(예를 들어, 메인 메모리 또는 캐시 메모리)에 명령을 저장하는 것을 포함할 수 있다.
디지털 개인 비서(120)가 명령이 애플리케이션의 작업과 관련되어 있다고 판정하면, 애플리케이션의 작업이 실행될 수 있다. 디지털 개인 비서(120)가 애플리케이션의 작업이 (예를 들어, 명령 데이터 구조(140)에서 정의를 분석함으로써) 백그라운드 프로세스로서 실행되어야 한다고 판정하면, 애플리케이션은 백그라운드에서 실행될 수 있다. 음성-지원 애플리케이션(110)과 같은 애플리케이션은 디지털 개인 비서(120)와 통신할 수 있다. 예를 들어, 애플리케이션은 작업의 완료와 관련된 상태들의 세트를 통해 순차적으로 진행할 수 있고, 애플리케이션의 상태가 디지털 개인 비서(120)에 전달될 수 있다. 예를 들어, 애플리케이션이 "초기" 상태에서 시작하고, 작업이 수행되는 동안 "진행" 상태로 전이한 다음, 작업이 완료되면 "최종" 상태로 전이할 수 있다.
디지털 개인 비서(120)는 사용자 인터페이스(124)를 통해 작업의 진행 상황을 보고할 수 있다. 사용자 인터페이스(124)는, 예를 들어, 텍스트, 그래픽 또는 하이퍼링크를 컴퓨팅 장치(130)의 디스플레이에서 제시함으로써, 컴퓨팅 장치(130)의 스피커로부터 오디오 출력을 생성함으로써, 또는 컴퓨팅 장치(130)의 편심 추(off-center weight)에 연결된 전기 모터로부터의 진동과 같은 다른 감각 출력을 생성함으로써, 다양한 방식으로 사용자에게 정보를 전달할 수 있다. 예를 들어, 사용자 인터페이스(124)는 작업이 진행 상태에 있을 때 컴퓨팅 장치(130)의 디스플레이 화면에 스피닝 휠을 표시할 수 있다. 다른 예로서, 사용자 인터페이스(124)는 작업이 최종 상태에 있고 작업이 성공적으로 완료되었을 때 작업의 성공적인 완료를 나타내는 시뮬레이션된 음성을 생성할 수 있다. 작업의 상태를 보고하기 위해 디지털 개인 비서(120)의 사용자 인터페이스(124)를 사용함으로써, 응답은 애플리케이션의 사용자 인터페이스를 나타내지 않고 사용자 인터페이스(124)의 컨텍스트 내에서 발생할 수 있다.
음성-지원 애플리케이션(110)은 디지털 개인 비서(120)의 생산자 또는 그 생산자와 다른 제 3 자에 의해 생성될 수 있다는 것을 알아야 한다. 디지털 개인 비서(120)와 음성-지원 애플리케이션(110)의 상호 동작은 애플리케이션-대-애플리케이션 소프트웨어 계약을 준수하고 명령 데이터 구조(140)에서 기능을 정의함으로써 달성될 수 있다. 음성-지원 애플리케이션(110)은 독립적인 애플리케이션으로서 또는 단지 디지털 개인 비서(120)의 구성 요소로서만 동작할 수 있다. 독립적인 애플리케이션으로서, 음성-지원 애플리케이션(110)은 음성-지원 애플리케이션(110)과 연관된 아이콘을 누르거나 더블 클릭하는 것과 같은 포어그라운드 프로세스로서 디지털 개인 비서(120) 외부에서 시작되어 컴퓨팅 장치(130)의 디스플레이 화면에 디스플레이될 수 있다. 음성-지원 애플리케이션(110)은 자신이 시작될 때 사용자 인터페이스를 표시할 수 있고 사용자는 사용자 인터페이스와 상호 작용하여 작업을 수행할 수 있다. 상호 작용은 음성 입력으로만 가능하거나, 또는 텍스트 입력 또는 제츠처와 같은 다른 입력 모드를 사용할 수도 있다. 디지털 개인 비서(120)에 의해 호출된 애플리케이션은 컴퓨팅 장치(130)에 설치될 수 있고, 또는 웹 서비스일 수 있다.
디지털 개인 비서(120)는 원격 서버 컴퓨터(160) 상에서 실행되는 웹 서비스(162)와 같은 웹 서비스를 호출할 수 있다. 웹 서비스는 네트워크(170)와 같은 네트워크 상의 네트워크 주소에서 제공된 소프트웨어 기능이다. 네트워크(170)는 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷, 인트라넷, 유선 네트워크, 무선 네트워크, 셀룰러 네트워크, 이들의 조합, 또는 컴퓨팅 장치(130) 및 원격 서버 컴퓨터(160) 간의 통신을 위한 채널을 제공하기에 적합한 임의의 네트워크를 포함할 수 있다. 도 1에 도시된 네트워크 토폴로지는 단순화되었으며, 다수의 네트워크 및 네트워킹 장치들이 본원에 개시된 다양한 컴퓨팅 시스템을 상호 연결하는데 이용될 수 있음을 이해해야 한다. 웹 서비스(162)는 커널의 일부 또는 디지털 개인 비서(120)의 주요 부분으로서 호출될 수 있다. 예를 들어, 웹 서비스(162)는 자연어 처리 모듈(122)의 서브루틴으로서 호출될 수 있다. 부가적으로 또는 대안으로, 웹 서비스(162)는 명령 데이터 구조(140)에서 정의된 애플리케이션일 수 있으며, 디지털 개인 비서(120)로부터 헤드리스 방식으로 시작될 수 있다.
디지털 개인 비서를 포함하는 예시적인 소프트웨어 아키텍처
도 2는 디지털 개인 비서(120)의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로 완료하기 위한 예시적인 소프트웨어 아키텍처(200)를 도시하는 도면이다. 헤드리스 방식으로 애플리케이션의 작업을 수행할 때, 작업은 백그라운드에서 실행될 수 있고, 애플리케이션의 사용자 인터페이스는 작업이 수행된 결과로 표시되지 않는다. 오히려, 디지털 개인 비서(120)의 사용자 인터페이스가 사용자에게 출력을 제공하거나 및/또는 사용자로부터 입력을 제공하는데 사용되어, 사용자가 애플리케이션의 컨텍스트가 아닌 디지털 개인 비서(120)의 컨텍스트 내에서 상호 작용할 수 있다. 따라서 애플리케이션의 헤드리스 방식으로 실행된 작업은 작업 실행 기간 동안 백그라운드에서 실행될 수 있으며, 애플리케이션의 사용자 인터페이스는 절대로 표시되지 않는다. 컴퓨팅 장치(130)와 같은 컴퓨팅 장치는 아키텍처(200)에 따라 구성된 디지털 개인 비서(120), 운영 체제(OS) 커널(210), 및 애플리케이션(230)에 대한 소프트웨어를 실행할 수 있다.
OS 커널(210)은 일반적으로 컴퓨팅 장치(130)의 소프트웨어 구성 요소와 하드웨어 구성 요소 간의 인터페이스를 제공한다. OS 커널(210)은 렌더링을 위한(예를 들어, 디스플레이에 시각적 출력 렌더링, 스피커에 대한 음성 출력 및 다른 사운드 생성, 및 전기 모터용 진동 출력 생성을 위한) 구성 요소, 네트워킹용 구성 요소, 프로세스 관리용 구성 요소, 메모리 관리용 구성 요소, 위치 추적용 구성 요소, 및 음성 인식 및 기타 입력 처리용 구성 요소를 포함할 수 있다. OS 커널(210)은 컴퓨팅 장치(130)의 사용자 입력 기능, 출력 기능, 저장 액세스 기능, 네트워크 통신 기능, 메모리 관리 기능, 프로세스 관리 기능 및 기타 기능을 관리할 수 있다. OS 커널(210)은, 예를 들어, 다양한 시스템 호출을 통해, 디지털 개인 비서(120) 및 애플리케이션(230)에 이런 기능에 대한 액세스를 제공할 수 있다.
사용자는 디지털 개인 비서(120)와 상호 작용하기 위해 (음성, 촉각 및 모션과 같은) 사용자 입력을 생성할 수 있다. 디지털 개인 비서(120)는 사용자 입력에 대한 응답으로 메시지를 생성하는 기능을 포함할 수 있는 OS 커널(210)을 통해 사용자 입력을 인식할 수 있다. 메시지는 디지털 개인 비서(120) 또는 다른 소프트웨어에 의해 사용될 수 있다. 사용자 입력은 터치스크린 입력, 버튼 누름 또는 키 누름과 같은 촉각 입력을 포함할 수 있다. OS 커널(210)은 촉각 입력, 버튼 입력 또는 키 누름 입력으로부터 터치스크린에 탭, 손가락 제스처 등을 인식하는 기능을 포함할 수 있다. OS 커널(210)은 마이크(150)로부터 입력을 수신할 수 있고, 음성 입력으로부터 음성 명령 및/또는 단어를 인식하는 기능을 포함할 수 있다. OS 커널(210)은 가속도계로부터 입력을 수신할 수 있고, 떨림과 같은 방향(orientation) 또는 모션을 인식하는 기능을 포함할 수 있다.
디지털 개인 비서(120)의 사용자 인터페이스(UI) 입력 처리 엔진(222)은 OS 커널(210)로부터의 사용자 입력 이벤트 메시지를 기다릴 수 있다. UI 이벤트 메시지는 음성 입력, 장치의 터치스크린 상의 패닝(panning) 제스처, 플리킹(flicking) 제스처, 드래깅(dragging) 제스처 또는 다른 제스처, 터치스크린 상의 탭, 키스트로크 입력, 떨림(shaking) 제스처, 또는 다른 UI 이벤트(예를 들어, 방향 버튼 또는 트랙볼 입력)로부터 인식된 단어를 나타낼 수 있다. UI 입력 처리 엔진(222)은 OS 커널(210)로부터의 UI 이벤트 메시지를 디지털 개인 비서(120)의 제어 로직(224)에 보내지는 정보로 번역할 수 있다. 예를 들어, UI 입력 처리 엔진(222)은 자연어 처리 기능을 포함할 수 있으며, 특정 애플리케이션 이름이 구술 또는 타이핑되었음을 나타내거나, 사용자가 음성 명령을 제공하였음을 나타낼 수 있다. 또는, 자연어 처리 기능이 제어 로직(224)에 포함될 수 있다.
제어 로직(224)은 UI 입력 처리 엔진(222), 개인화된 정보 저장소(226) 및 명령 데이터 구조(140)와 같은 디지털 개인 비서(120)의 다양한 모듈로부터 정보를 수신할 수 있고, 제어 로직(224)은 수신된 정보에 기초하여 결정을 내리고 동작을 수행할 수 있다. 예를 들어, 제어 로직(224)은, 예를 들어, 음성 텍스트의 스트림을 파싱하여(parsing) 음성 명령이 제공되었는지 여부를 결정함으로써, 디지털 개인 비서(120)가 사용자를 대신하여 작업을 수행해야 하는지 여부를 결정할 수 있다.
제어 로직(224)은 명령에 대해 동작하기 전에 전체 사용자 명령이 구술될 때까지 기다릴 수 있고, 또는 제어 로직(224)은 명령이 여전히 구술되고 있고 완료되기 전에 명령에 대한 동작을 시작할 수 있다. 예를 들어, 제어 로직(224)은 음성 명령의 중간 문자열을 분석하여 문자열을 명령 데이터 구조(140)에 정의된 하나 이상의 애플리케이션에 매치시키려고 시도할 수 있다. 애플리케이션이 호출될 확률이 임계치를 초과하면, 애플리케이션이 사용자에게 보다 신속하게 응답할 수 있도록 애플리케이션이 워밍업될 수 있다. 다수의 애플리케이션 및/또는 기능이 호출을 예상하여 추론적으로 워밍업될 수 있으며, 애플리케이션이 호출되지 않을 것으로 판단되면 애플리케이션이 중단될 수 있다. 예를 들어, 사용자가 특정 애플리케이션의 이름으로 음성 명령을 시작하면, 특정 애플리케이션이 호출될 확률이 높으므로 애플리케이션이 워밍업될 수 있다. 다른 예로서, 일부 부분 명령 문자열은 명령 데이터 구조(140)에 정의된 작은 세트의 애플리케이션으로 제한될 수 있고, 애플리케이션 세트는 부분 명령 문자열에 일치가 있을 때 병렬로 워밍업될 수 있다. 특히, 명령 데이터 구조(140)가 "take a picture(사진 촬영)" 명령을 갖는 카메라 애플리케이션과 "take a memo(메모하기)" 명령을 갖는 메모 애플리케이션과 같이, "take"라는 단어가 있는 명령을 갖는 오직 2 개의 애플리케이션만을 가질 수 있다. 제어 로직(224)은 단어 "take"가 인식될 때 카메라 애플리케이션 및 메모 애플리케이션 모두를 워밍업 하기 시작할 수 있고, 이후 완전한 명령 "take a picture"가 인식될 때 메모 애플리케이션이 중단될 수 있다. 애플리케이션의 워밍업에는 메모리 할당, 명령의 사전 추출(pre-fetching instructions), 통신 세션 설정, 데이터베이스에서 정보 검색, 새로운 실행 스레드 시작, 인터럽트 제기 또는 기타 적절한 애플리케이션-고유 동작들이 포함될 수 있다. 프로세스 관리 서비스, 메모리 관리 서비스, 및 네트워크 서비스와 같은 OS 커널(210)의 서비스들이 워밍업 중에 호출될 수 있다.
음성 텍스트는 컨텍스트 정보를 포함할 수 있고, 제어 로직(224)은 사용자 음성 명령이 컨텍스트-프리(context-free)가 되도록 컨텍스트 정보를 해석할 수 있다. 컨텍스트 정보는 현재 위치, 현재 시간, 컴퓨팅 장치(130)의 방향 및 개인화된 정보 저장소(226)에 저장된 개인 정보를 포함할 수 있다. 개인 정보는 사용자, 배우자 또는 자녀의 이름과 같은 사용자 관계; 집, 직장, 학교, 데이케어 또는 의사 주소와 같은 사용자 특정 위치; 사용자의 연락처 목록 또는 달력의 정보; 사용자가 좋아하는 색, 음식점 또는 교통 수단; 중요한 생일, 기념일 또는 다른 날짜; 및 기타 사용자 특정 정보를 포함할 수 있다. 사용자는 컨텍스트 정보를 갖는 명령을 내릴 수 있고, 제어 로직(224)은 명령을 컨텍스트-프리 명령으로 변환할 수 있다. 예를 들어, 사용자는 "버스-앱, 다음 한 시간 내에 집으로 가는 버스를 알려줘"라는 명령을 내릴 수 있다. 이 예시에서, 명령의 컨텍스트 정보는 현재 날짜와 시간, 현재 위치, 및 사용자의 집 위치이다.
제어 로직(224)은 실시간 클록을 유지하거나 그에 액세스할 수 있는 OS 커널(210)로부터 현재 시간을 얻을 수 있다. 제어 로직(224)은 컴퓨팅 장치(130)의 로컬 구성 요소로부터 현재 위치 데이터를 얻을 수 있는 OS 커널(210)로부터 컴퓨팅 장치(130)에 대한 현재 위치 데이터를 얻을 수 있다. 예를 들어, 위치 데이터는 GPS(Global Positioning System)로부터의 데이터에 기초하여, 셀룰러 네트워크의 타워 간 삼각 측량에 의해, 주변의 와이파이 라우터의 물리적 위치를 참조하여, 또는 다른 메커니즘에 의해 결정될 수 있다. 제어 로직(224)은 개인화된 정보 저장소(226)로부터 사용자의 집의 위치를 얻을 수 있다. 개인화된 정보 저장소(226)는 컴퓨팅 장치(130)의 보조 또는 다른 비휘발성 저장 장치에 저장될 수 있다. 따라서, 제어 로직(224)은 저장 자원(예를 들어, 개인화된 정보 저장소(226))에 액세스할 수 있는 OS 커널(210)을 통해 개인화된 정보를 수신할 수 있다. 컨텍스트 정보가 해석될 수 있으면, 명령은 컨텍스트-프리 명령으로 변환될 수 있다. 예를 들어, 금요일 저녁 6시, 사용자가 444 Main Street에 있고, 사용자의 집이 123 Pleasant Drive이면, 컨텍스트-프리 명령은 "버스-앱, 금요일 저녁 6시에서 7시 사이에 444 Main street 근처에 도착하고 123 Pleasant Drive 근처를 지나는 버스를 알려줘.”일 수 있다.
사용자 명령은 제어 로직(224)에 의해(예를 들어, 명령이 디지털 개인 비서(120)의 고유 명령인 경우), 컴퓨팅 장치(130)에 설치된 애플리케이션(230)에 의해(예를 들어, 명령이 애플리케이션(230)과 관련된 경우), 또는 웹 서비스(162)에 의해(예를 들어, 명령이 웹 서비스(162)와 관련된 경우) 수행될 수 있다. 명령 데이터 구조(140)는 어느 명령이 어느 애플리케이션과 관련되는지, 그리고 그 명령이 포어그라운드 또는 백그라운드에서 수행될 수 있는지 여부를 특정할 수 있다. 예를 들어, 명령 데이터 구조(140)는 이용 가능한 제 3 자 음성-지원 애플리케이션이 지원하는 기능에 사용자 음성 명령을 매핑할 수 있다.
제어 로직(224)이 사용자 명령이 애플리케이션(230)의 사전 정의된 기능(232)과 관련이 있다고 판단할 때, 제어 로직(224)은 애플리케이션(230)의 사전 정의된 기능(232)을 실행시킬 수 있다. 제어 로직(224)이 애플리케이션(230)의 사전 정의된 기능(232)이 백그라운드 프로세스로서 실행될 것이라고 판정하면, 사전 정의된 기능(232)이 백그라운드에서 실행될 수 있다. 예를 들어, 제어 로직(224)은 인터럽트를 발생시키거나, 공유 메모리에 기록하거나, 메시지 대기열에 기록하거나, 메시지를 전달하거나, 새로운 실행 스레드를 시작함으로써(예를 들어, OS 커널(210)의 프로세스 관리 구성 요소를 통함) 사전 정의된 기능(232)에 요청(240)을 전송할 수 있다. 애플리케이션(230)은 사전 정의된 기능(232)을 수행하고, 인터럽트를 발생시키거나, 공유 메모리에 기록하거나, 메시지 대기열에 기록하거나, 메시지를 전달함으로써 제어 로직(224)에 응답(242)을 반환할 수 있다. 응답은 애플리케이션(230)의 상태 및/또는 사용자 명령에 응답하는 다른 정보를 포함할 수 있다.
제어 로직(224)은 명령이 웹 서비스(162)와 관련되어 있다고 판단할 때 웹 서비스(162)가 호출되도록 할 수 있다. 예를 들어, 요청(260)은 OS 커널(210)의 네트워킹 구성 요소를 통해 웹 서비스(162)로 전송될 수 있다. 네트워킹 구성 요소는 사용자 명령을 수행하기 위해 요청을 포맷팅하여 네트워크(170)를 통해 (예를 들어, 네트워크(170)의 프로토콜에 따라 네트워크 패킷에 요청을 캡슐화함으로써) 웹 서비스(162)에 전달할 수 있다. 요청(260)은 제어 로직(224)과 웹 서비스(162) 사이의 통신 채널(예를 들어, 소켓)을 열고 사용자 명령과 관련된 정보를 전송하는 것과 같은 다수의 단계를 포함할 수 있다. 웹 서비스(162)는 네트워크(170)를 통해 전송되고 회신(262)으로서 네트워킹 구성 요소에 의해 제어 로직(224)으로 전송될 수 있는 응답으로 요청(260)에 응답할 수 있다. 웹 서비스(162)로부터의 응답은 웹 서비스(162)의 상태 및 사용자 명령에 응답하는 다른 정보를 포함할 수 있다.
제어 로직(224)은 애플리케이션으로부터의 응답에 기초하여 (UI 출력 렌더링 엔진(228) 및 OS 커널(210)의 렌더링 구성 요소의 도움으로) 사용자에게 제공될 출력을 생성할 수 있다. 예를 들어, 명령 데이터 구조(140)는 기능들로부터 수신된 상태들을 음성-제어 디지털 개인 비서(120)로부터 사용자에게 제공된 응답들에 매핑할 수 있다. 일반적으로, 제어 로직(224)은 디스플레이 상의 시각적 출력, 스피커 또는 헤드폰 상의 오디오 및/또는 음성 출력, 및 전기 모터로부터의 진동 출력을 위해, OS 커널(210)의 렌더링 컴포넌트에 더 낮은 레벨의 출력 프리미티브를 생성할 수 있는 UI 출력 렌더링 엔진(228)에 하이-레벨 출력 명령을 제공할 수 있다. 예를 들어, 제어 로직(224)은 텍스트 문자열을 갖는 텍스트 음성 변환(text-to-speech) 명령을 음성 출력을 시뮬레이션하는 디지털 오디오 데이터를 생성할 수 있는 UI 출력 렌더링 엔진(228)에 전송할 수 있다.
제어 로직(224)은 애플리케이션의 상태에 기초하여 사용자에게 제공할 정보를 결정할 수 있다. 상태는 사용자 명령의 시작, 처리, 확인, 모호성 제거(disambiguating), 또는 완료에 해당할 수 있다. 명령 데이터 구조(140)는 사용자에게 제공될 상이한 응답들에 애플리케이션의 상태들을 매핑할 수 있다. 제공될 수 있는 정보의 유형은 예를 들어, 디스플레이 텍스트, 시뮬레이션된 음성, 애플리케이션으로의 딥 링크, 웹페이지 또는 웹사이트로의 링크 및 하이퍼텍스트 마크업 언어(HTML) 기반 웹 컨텐츠를 포함할 수 있다.
예시적인 애플리케이션 상태
도 3은 헤드리스 방식으로 디지털 개인 비서(120)와 접속하는 애플리케이션을 위한 예시적인 상태 머신(300)의 도면이다. 애플리케이션은 워밍업 상태(310) 또는 초기 상태(320)에서 시작할 수 있다. 예를 들어, 애플리케이션 이름이 알려졌지만 음성 명령이 완전하지는 않은 경우, 디지털 개인 비서(120)가 애플리케이션을 워밍업시킬 때 워밍업 상태(310)에 들어갈 수 있다. 워밍업 동작이 완료될 때까지 애플리케이션은 워밍업 상태(310)를 유지할 것이다. 워밍업 동작이 완료되면, 애플리케이션은 초기 상태(320)로 전이할 수 있다.
워밍업 상태(310)가 완료된 후 또는 디지털 개인 비서에 의해 사용자 명령이 애플리케이션에 제공된 후에 초기 상태(320)로 들어갈 수 있다. 초기 상태(320) 동안, 사용자 명령이 애플리케이션에 의해 처리된다. 명령이 명확하지만 완료하는데 사전 결정된 시간(예컨대, 5 초)보다 더 걸리는 경우, 명령이 수행되는 동안 상태는 진행 상태(330)로 전이될 수 있다. 명령이 모호하지 않고 중요하거나 파괴적인 동작이 수행될 수 있는 경우, 상태는 확인 상태(340)로 전이될 수 있다. 명령이 다소 모호하지만, 몇몇 옵션 중에서 선택함으로써 모호성을 명확하게 할 수 있는 경우, 상태가 모호성 제거 상태(350)로 전이될 수 있다. 명령이 모호하고 몇몇 옵션으로 명확해지지 않으면, 상태는 실패 상태 또는 리디렉션(redirection) 상태와 같은 최종 상태(360)로 전이될 수 있다. 명령이 수행될 수 없는 경우, 상태는 실패 상태와 같은 최종 상태(360)로 전이될 수 있다. 명령이 완료하기 위한 사전 결정된 시간보다 덜 걸리고 완료될 수 있고 사용자로부터 확인을 요청하는 것이 바람직하지 않은 경우, 상태는 성공 상태와 같은 최종 상태(360)로 전이될 수 있다. 최종 상태(360)는 여러 조건(예를 들어, 조건이 성공, 실패, 리디렉션 및 타임 아웃인 경우)을 갖는 단일 상태 또는 최종 상태들(예를 들어, 상태가 성공, 실패, 리디렉션 및 타임 아웃인 경우)의 그룹일 수 있다.
진행 상태(330)는 사용자 명령의 동작이 수행되고 있거나 시도 중임을 나타낼 수 있다. 애플리케이션은 텍스트 음성 변환(text-to-speech, TTS) 문자열 또는 그래픽 사용자 인터페이스(GUI) 문자열을 디지털 개인 비서(120)에 전송함으로써 진행 상태(330) 동안 정보를 사용자에게 제공하여, 디지털 개인 비서(120)의 사용자 인터페이스를 사용하여 사용자에게 정보를 제시할 수 있다. 부가적으로 또는 대안으로, 디폴트 정보(예를 들어, 스피닝 휠, 모래 시계 및/또는 취소 버튼)가 진행 상태(330) 동안 디지털 개인 비서(120)의 사용자 인터페이스를 사용하여 사용자에게 제공될 수 있다.
진행 상태(330) 동안, 애플리케이션은 동작의 진행을 모니터링하고 애플리케이션이 진행 상태(330)에 머물 것인지 또는 최종 상태(360)로 전이될 것인지를 결정할 수 있다. 일 실시예에서, 애플리케이션은 타이머(예를 들어, 5 초)를 시작하고, 타이머가 만료되기 전에 애플리케이션이 충분한 진행을 하지 않으면, 상태는 타임 아웃 상태와 같은 최종 상태(360)로 전이될 수 있다. 애플리케이션이 충분히 진행 중이면, 타이머를 다시 시작할 수 있으며 다음 타이머 만료 시에 진행 상황을 다시 검사할 수 있다. 애플리케이션은 진행 상태(330)에 머무는 최대 시간 제한을 가질 수 있고, 최대 시간 제한이 초과되면, 상태는 타임 아웃 상태와 같은 최종 상태(360)로 전이될 수 있다. 사용자 명령과 관련된 동작은 (성공하든 또는 성공하지 못하든) 완료될 수 있고, 상태는 적절한 최종 상태(360)로 전이될 수 있다. 사용자는 디지털 개인 비서(120)의 사용자 인터페이스에 명령을 내림으로써 진행 상태(330)에 있을 때 애플리케이션을 종료시킬 수 있다. 예를 들어, 사용자는 디스플레이 상의 "취소" 또는 "뒤로 가기" 버튼을 누르거나 클릭하고, 또는 "취소"라고 말할 수 있다. 명령을 취소하면 디지털 개인 비서(120)가 애플리케이션을 중지시키고, 디지털 개인 비서(120)의 홈 스크린을 표시하거나 또는 종료할 수 있다.
확인 상태(340)는 애플리케이션이 작업을 완료하기 전에 사용자로부터의 확인을 기다리고 있음을 나타낼 수 있다. 디지털 개인 비서(120)가 애플리케이션이 확인 상태(340)에 있음을 탐지하는 경우, 디지털 개인 비서(120)의 사용자 인터페이스를 사용하여 예/아니오 응답에 대한 프롬프트가 사용자에게 제공될 수 있다. 애플리케이션은 예 또는 아니오의 대답을 갖는 질문인 TTS 문자열을 디지털 개인 비서(120)에 제공할 수 있다. 디지털 개인 비서(120)는 애플리케이션의 제공된 TTS 문자열을 말할 수 있고, "예/아니오" 응답을 들을 수 있다. 사용자 응답이 예 또는 아니오 응답으로 해결되지 않으면, 디지털 개인 비서(120)는 사용자에게 사전 정의된 횟수(예를 들어, 3 회)까지 질문을 계속할 수 있다. 모든 시도가 소진된 경우, 디지털 개인 비서(120)는 "죄송합니다, 이해할 수 없습니다. 답을 선택하려면 아래를 누르세요”와 같은 디폴트 구절을 말할 수 있고, 디지털 개인 비서(120)는 청취를 멈출 수 있다. 사용자가 예 또는 아니오를 누르면, 디지털 개인 비서(120)는 사용자의 선택을 애플리케이션에 전송할 수 있다. 사용자가 마이크 아이콘을 누르면, 디지털 개인 비서(120)는 (예를 들어, 구두로 대답하는 시도의 횟수를 세는 카운터를 리셋함으로써) 음성 응답을 다시 인식하려고 시도할 수 있다. 디지털 개인 비서(120)는 일치가 있을 때까지 또는 사용자가 취소하거나 디스플레이 화면의 뒤로 가기 버튼을 누를 때까지 반복할 수 있다. 애플리케이션이 디지털 개인 비서(120)로부터 긍정적인 응답을 수신하면, 애플리케이션은 그 작업을 완료하려고 시도할 수 있다. 작업이 성공적으로 완료되면, 상태는 성공 상태인 최종 상태(360)로 전이할 수 있다. 작업이 성공적으로 완료되지 않거나 애플리케이션이 취소되면, 상태는 실패 상태인 최종 상태(360)로 전이할 수 있다. 작업이 완료하는데 사전 결정된 시간 이상을 소요하게 되면, 작업이 수행되는 동안 상태는 진행 상태(330)로 전이될 수 있다.
모호성 제거 상태(350)는 사용자가 작업 완료 전에 제한된 수(예를 들어, 10 이하)의 옵션들을 명확히 하기를 애플리케이션이 기다리고 있음을 나타낼 수 있다. 애플리케이션은 TTS 문자열, GUI 문자열 및/또는 사용자가 선택할 항목들의 목록을 디지털 개인 비서(120)에 제공할 수 있다. 항목들의 목록은 이름, 설명 및/또는 아이콘과 같이, 각 항목에 대해 사용자에게 제공할 하나 이상의 정보 조각을 가진 템플릿으로서 제공될 수 있다. 디지털 개인 비서(120)는 애플리케이션에 의해 제공된 정보를 사용하여 사용자에게 항목들의 목록을 제공할 수 있다. 디지털 개인 비서(120)는 사용자로부터의 선택을 물어보고 청취할 수 있다. 사용자는 유연한 선택 또는 유연하지 않은 선택을 사용하여 목록에서 선택할 수 있다. 유연하지 않은 선택은 사용자가 목록에서 한 가지 방법으로만 선택할 수 있음을 의미하는 반면, 유연한 선택은 사용자가 여러 다른 방법으로 목록에서 선택할 수 있음을 의미한다. 예를 들어, 사용자는 첫 번째 항목 또는 두 번째 항목을 각각 선택하기 위해 "첫 번째" 또는 "두 번째"라고 말함으로써, 항목들이 나열된 순서에 따라 목록에서 선택할 수 있다. 다른 예로서, 사용자는 "하단에 있는 것", "상단에 있는 것", "우측에 있는 것" 또는 "하단으로부터 두 번째에 있는 것"과 같이 항목들 간의 공간 관계에 기초하여 목록에서 선택할 수 있다. 다른 예로서, 사용자는 항목의 이름을 말함으로써 목록에서 선택할 수 있다.
모호성 제거의 구체적인 예로서, 사용자는 디지털 개인 비서(120)에게 "영화 애플리케이션, 대기열에 Movie-X 추가"라고 말할 수 있다. 그러나, 예를 들어, Movie-X I, Movie-X II, 및 Movie-X III처럼 원본 X와 두 개의 후속편인, 세가지 버전의 Movie-X가 있을 수 있다. 음성 명령에 응답하여, 디지털 개인 비서(120)는 Movie-X를 대기열에 추가하라는 명령으로 백그라운드에서 영화 애플리케이션을 시작할 수 있다. 영화 애플리케이션은 Movie-X를 검색하여 세 가지 버전이 있는지 판단할 수 있다. 따라서, 영화 애플리케이션은 모호성 제거 상태(350)로 전이하여 세 가지 선택을 디지털 개인 비서(120)에 전송할 수 있다. 디지털 개인 비서(120)는, 자신의 사용자 인터페이스를 통해, 사용자에게 세 가지 선택을 제시할 수 있고, 사용자는 목록에서 하나를 선택할 수 있다. 사용자에 의해 적절한 선택이 이루어지면, 디지털 개인 비서(120)는 영화 애플리케이션에 응답을 전송할 수 있고, 올바른 영화가 대기열에 추가될 수 있다.
사용자 응답이 목록의 항목으로 해석될 수 없는 경우, 디지털 개인 비서(120)는 사용자에게 사전 정의된 횟수까지 질문을 계속할 수 있다. 모든 시도가 소진된 경우, 디지털 개인 비서(120)는 "죄송합니다, 이해할 수 없습니다. 답을 선택하려면 아래를 누르세요”와 같은 디폴트 구절을 말할 수 있고, 디지털 개인 비서(120)는 청취를 멈출 수 있다. 사용자가 디스플레이된 목록에서 어느 하나의 항목을 누르면, 디지털 개인 비서(120)는 사용자의 선택을 애플리케이션에 전송할 수 있다. 사용자가 마이크 아이콘을 누르면, 디지털 개인 비서(120)는 (예를 들어, 구두로 대답하는 시도의 횟수를 세는 카운터를 리셋함으로써) 음성 응답을 다시 인식하려고 시도할 수 있다. 디지털 개인 비서(120)는 일치가 있을 때까지 또는 사용자가 취소하거나 디스플레이 화면의 뒤로 가기 버튼을 누를 때까지 반복할 수 있다. 애플리케이션이 디지털 개인 비서(120)로부터 유효한 응답을 수신하면, 애플리케이션은 그 작업을 완료하려고 시도할 수 있다. 작업을 수행하기 전에 작업에 사용자 확인이 필요하면, 상태는 확인 상태(340)로 전이할 수 있다. 작업이 성공적으로 완료되면, 상태는 성공 상태인 최종 상태(360)로 전이할 수 있다. 작업이 성공적으로 완료되지 않거나 애플리케이션이 취소되면, 상태는 실패 상태인 최종 상태(360)로 전이할 수 있다. 작업이 완료하는데 사전 결정된 시간 이상을 소요하면, 작업이 수행되는 동안 상태가 진행 상태(330)로 전이될 수 있다.
예시적인 상태 머신(300)은 사용자와 애플리케이션 간의 다양한 멀티-턴(multi-turn) 대화를 가능하게 하기 위해 추가 상태 또는 대안 상태로 확장될 수 있다는 것을 이해해야 한다. (모호성 제거 상태(350)를 통한) 모호성 제거 및 (확인 상태(340)를 통한) 확인이 멀티 턴 대화의 구체적인 예이다. 일반적으로, 멀티 턴 대화에서, 헤드리스 애플리케이션은 자신의 사용자 인터페이스를 나타내지 않고 사용자로부터 추가 정보를 요청할 수 있다. 오히려, 정보는 애플리케이션을 대신하여 디지털 개인 비서(120)에 의해 사용자로부터 얻을 수 있다. 따라서, 디지털 개인 비서(120)는 사용자와 애플리케이션 사이의 도관(conduit)으로서 동작할 수 있다.
최종 상태(360)는 애플리케이션이 작업을 성공적으로 완료했거나, 작업을 완료하는데 실패했거나, 타임 아웃되었거나, 또는 애플리케이션이 포어그라운드에서 시작되어야 한다고(리디렉션) 제안하고 있음을 나타낼 수 있다. 전술한 바와 같이, 최종 상태(360)는 다수의 조건(예를 들어, 성공, 실패, 리디렉션 및 타임 아웃)을 갖는 단일 상태이거나 또는 최종 상태들(예를 들어, 성공, 실패, 리디렉션 및 타임 아웃)의 그룹일 수 있다. 애플리케이션은 TTS 문자열, GUI 문자열, (템플릿을 통해 제공되는) 항목들의 목록, 및/또는 시작 파라미터(launch parameter)를 디지털 개인 비서(120)에 제공할 수 있다. 디지털 개인 비서(120)는 디지털 개인 비서(120)의 사용자 인터페이스를 사용하여 애플리케이션이 제공한 정보를 사용자에게 제시할 수 있다. 부가적으로 또는 대안으로, 디지털 개인 비서(120)는 상이한 조건과 관련된 사전 정의되거나 준비된(canned) 응답을 제시할 수 있다. 예를 들어, 타임 아웃이 발생하거나 작업이 실패하면, 디지털 개인 비서(120)는 "죄송합니다. 작업을 완료하지 못했습니다. 나중에 다시 시도해 주시겠습니까?"라고 말할 수 있다. 다른 예로서, 애플리케이션이 리디렉션을 요청하면, 디지털 개인 비서(120)는 "죄송합니다. <appName>이 응답하지 않습니다. <appName>을 시작합니다"라고 말할 수 있고, 디지털 개인 비서(120)는 원래의 음성 명령 및 시작 파라미터(시작 파라미터가 애플리케이션에서 제공되는 경우)로 애플리케이션을 포어그라운드에서 실행시키려고 시도할 수 있다. 다른 예로서, 애플리케이션이 작업을 성공적으로 완료하면, 디지털 개인 비서(120)는 "작업을 완수했습니다."라고 말할 수 있다.
예시적인 명령 정의
도 4는 제 3 자 애플리케이션과 디지털 개인 비서(120) 사이의 인터페이스를 가능하게 하기 위해 명령 데이터 구조(140)와 같은 데이터 구조를 생성하는데 사용될 수 있는 스키마에 부합하는 명령 정의(400)의 일례이다. 명령 정의(400)는 XML(Extensible Markup Language) 또는 스키마에 의해 정의된 XML의 서브 세트와 같은 다양한 언어로 기재될 수 있다. 예를 들어, 스키마는 합법적인 요소, 요소들의 계층 구조, 각각의 요소의 법적 및 선택적 속성, 및 기타 적합한 기준과 같은 명령 정의의 구조를 정의할 수 있다. 명령 정의(400)는 애플리케이션, 명령 또는 작업, 및 데이터 항목이 선택적인 데이터 항목 또는 슬롯과 같은 상이한 구성 요소로 사용자 구술을 파싱하는 것을 돕기 위해 디지털 개인 비서(120)에 의해 사용될 수 있다. 예를 들어, "영화 앱 서비스, 대기열에 MovieX 추가(MovieAppService, add MovieX to my queue)" 명령은 애플리케이션("영화 앱 서비스"), 명령("추가") 및 데이터 항목("MovieX")으로 파싱될 수 있다. 명령 정의(400)는 애플리케이션 이름, 애플리케이션의 작업 또는 명령, 자연어 처리를 위한 대체 표현, 및 상이한 애플리케이션 상태와 관련된 응답을 정의하기 위한 요소를 포함할 수 있다.
명령 정의(400)에서 하나 이상의 애플리케이션이 정의될 수 있다. 애플리케이션은 컴퓨팅 장치 또는 웹 서비스 상에 설치된 제 3 자 또는 다른 애플리케이션일 수 있다. 애플리케이션과 관련된 정보는 애플리케이션을 정의하는 요소로 구분할 수 있다. 예를 들어, 애플리케이션 이름은 <AppName> 요소로 정의할 수 있으며 <AppName> 요소들 간의 요소는 선두의 <AppName> 요소와 관련될 수 있다. 명령 정의(400)에서, 애플리케이션 이름은 "영화 앱 서비스"이고, <AppName> 요소 다음의 요소는 "영화 앱 서비스" 애플리케이션과 관련된다.
애플리케이션 이름 다음의 명령들은 애플리케이션의 명령들이다. 명령은 <Command> 요소로 식별할 수 있다. 명령 요소의 속성은 명령의 이름(예를 들어, "Name") 및 명령의 활성화 유형(예를 들어, "ActivationType")을 포함할 수 있다. 예를 들어, 활성화 유형이 포어그라운드에서 시작될 명령에 대해서는 "포어그라운드"가 될 수 있고, 백그라운드에서 시작될 명령에 대해서는 "백그라운드"일 수 있다. "ActivationType" 속성은 선택 사항일 수 있으며, 디폴트 활성화 유형은 포어그라운드이다.
<ListenFor> 요소는 <Command> 요소 내에 중첩될 수 있으며, 명령이 구술될 수 있는 하나 이상의 방법을 정의하는데 사용될 수 있다. 선택적 단어 또는 전달 어구(carrier words)는 자연어 처리를 수행할 때 디지털 개인 비서(120)에 대한 힌트로서 제공될 수 있다. 전달 어구는 대괄호: [] 내에서 식별될 수 있다. 데이터 항목은 중괄호: {} 내에서 식별될 수 있다. 명령 정의(400)에는, 일반적으로, 두 개의 <ListenFor> 요소에 의해 정의되는 바와 같이 "추가" 명령을 호출하는 두 가지 방법이 있다. 예를 들어, "대기열에 MovieX 추가" 또는 " 영화 앱 서비스 대기열에 MovieX 추가"를 말함으로써 디지털 개인 비서(120)가 영화 앱 서비스의 "추가" 명령을 백그라운드에서 시작하게 할 수 있다. 사전 정의된 구문은 {builtln: <phrase identified>}의 괄호 세트 안에 키워드 "builtln:"으로 식별될 수 있다.
<Feedback> 요소는 <Command> 요소 내에 중첩될 수 있고, 디지털 개인 비서(120)가 사용자로부터의 음성 명령을 성공적으로 인식하였을 때 사용자에게 구술될 구문을 정의하는데 사용될 수 있다. 부가적으로 또는 대안으로, <Feedback> 요소는 구술된 명령이 디지털 개인 비서(120)에 의해 파싱됨에 따라 사용자에게 디스플레이 될 텍스트 문자열을 정의할 수 있다.
<Response> 요소는 <Command> 요소 내에 중첩될 수 있으며, 디지털 개인 비서(120)에 의해 사용자에게 제공되는 하나 이상의 응답을 정의하는데 사용될 수 있다. 각각의 응답은 "상태" 속성으로 정의된 애플리케이션 상태와 연관된다. 상태는 성공 및 실패와 같은 최종 상태이거나, 또는 진행과 같은 중간 상태일 수 있다. 정의된 다양한 응답 유형에는, 예를 들어, 화면에 텍스트를 디스플레이하기 위한 <DisplayString>, 사용자에게 구술될 텍스트를 위한 <TTSString>, 웹사이트에 대한 딥 링크를 위한 <AppDeepLink>, 웹사이트에 대한 덜 깊은 링크를 위한 <WebLink>가 있다. <Response> 요소에 의해 정의된 응답은 애플리케이션에서 제공하는 추가 응답 정보로 보강될 수 있다.
예시적인
시퀀스
도면
도 5는 디지털 개인 비서(120) 내에서 제 3 자 애플리케이션의 기능을 헤드리스 방식으로 수행하기 위해 다중 실행 스레드(510, 520 및 530)의 통신을 도시하는 예시적인 시퀀스 도면(500)이다. UI 스레드(510) 및 제어 스레드(520)는 디지털 개인 비서(120)의 멀티 스레드된 실시예의 병렬 스레드일 수 있다. UI 스레드(510)는 디지털 개인 비서(120)의 사용자 인터페이스로부터의 입력을 캡쳐하고 디지털 개인 비서(120)의 사용자 인터페이스로 출력을 디스플레이하는 것을 주로 담당할 수 있다. 예를 들어, 음성 입력, 촉각 입력, 및/또는 텍스트 입력이 UI 스레드(510)에 의해 캡쳐될 수 있다. 일 실시예에서, UI 스레드(510)는 입력에 대한 자연어 처리를 수행할 수 있고 사용자의 음성 명령을 명령 데이터 구조(140)의 명령과 매치시킬 수 있다. 음성 명령이 명령 데이터 구조(140) 내의 명령과 일치한다고 결정되면, 그 명령은 추후 처리를 위해 제어 스레드(520)에 전달될 수 있다. 다른 실시예에서, UI 스레드(510)는 STT(speech to text) 입력을 캡쳐할 수 있고, 개별 단어는 입력에 대한 자연어 처리를 수행할 수 있는 제어 스레드(520)에 전달될 수 있고 사용자의 음성 명령을 명령 데이터 구조(140)의 명령에 매치시킬 수 있다.
제어 스레드(520)는 주로 애플리케이션과의 통신 및 애플리케이션의 진행 추적 및 UI 스레드(510)와의 접속을 담당할 수 있다. 예를 들어, 사용자가 디지털 개인 비서(120)의 사용자 인터페이스에 대해 말한 것이 UI 스레드(510)에 의해 제어 스레드(520)에 통지될 수 있다. 제어 스레드(520)에 의해 단어 또는 명령이 수신될 수 있고, 사용자 명령이 제어 스레드 (520)에 의해 인식되었을 때 제어 스레드(520)가 UI 스레드(510)에 통지할 수 있다. UI 스레드(510)는 디지털 개인 비서(120)의 사용자 인터페이스를 통해 명령이 진행되고 있음을 사용자에게 알릴 수 있다. UI 스레드(510) 또는 제어 스레드(520)는 명령 데이터 구조(140)로부터 명령의 속성을 검색함으로써, 명령이 헤드리스 방식으로 시작될 것인지를 결정할 수 있다. 제어 스레드(520)는, 명령이 헤드리스 방식으로 시작될 때, 새로운 스레드를 시작하거나 앱서비스 스레드(AppService thread, 530)와 같은 기존 스레드와 통신할 수 있다. 사용자에 대한 응답 시간을 감소시키기 위해, 제어 스레드(520)가 새로운 스레드를 시작하는 것보다는 기존 스레드인 앱서비스 스레드(530)가 바람직할 수 있다. 예를 들어, 앱서비스 스레드(530)는 애플리케이션을 워밍업할 때 또는 컴퓨팅 장치(130)의 부팅 중에 시작될 수 있다.
앱서비스 스레드(530)는 컴퓨팅 장치(130)에서 실행될 수 있거나 또는 원격 서버 컴퓨터(160)와 같은 원격 서버에서 실행될 수 있다. 앱서비스 스레드(530)는 주로 사용자 명령에 의해 지정된 기능을 완료하는 것을 담당할 수 있다. 앱서비스 스레드(530)는 상태 머신(예를 들어, 상태 머신(300))을 유지하여 기능의 실행 진행을 추적할 수 있고, 제어 스레드(520)에 상태에 관한 업데이트를 제공할 수 있다. 제어 스레드(520)에 상태 업데이트를 제공함으로써, 앱서비스 스레드(530)는 헤드리스일 수 있으며, 사용자에 대한 출력은 앱서비스 스레드(530)의 사용자 인터페이스가 아닌 디지털 개인 비서(120)에 의해 제공된다.
제어 스레드(520)는 애플리케이션으로부터 상태 업데이트를 수신하고 애플리케이션이 진행 중인지 여부를 확인함으로써 애플리케이션(예를 들어, 앱서비스 스레드(530))의 진행을 추적할 수 있다. 예를 들어, 제어 스레드(520)는 앱서비스 스레드(530)와 통신할 때마다(앱서비스 스레드(530)에 정보를 전송하거나 앱서비스 스레드(530)로부터 정보를 수신) 사전 정의된 기간(예를 들어, 5 초)의 타이머를 시작할 수 있다. 앱서비스 스레드(530)가 응답하기 전에 타이머가 만료되면, 제어 스레드(520)는 애플리케이션이 응답하지 못했음을 UI 스레드(510)에 알릴 수 있고, UI 스레드(510)는 디지털 개인 비서(120)의 사용자 인터페이스를 통해 사용자에게 실패 메시지를 제시할 수 있다. 앱서비스 스레드(530)는 타이머가 만료된 후에 제어 스레드(520)에 의해 종료되거나 무시될 수 있다. 또는, 타이머가 만료되기 전에 앱서비스 스레드(530)가 응답하면, 애플리케이션으로부터 다른 응답이 기대되는 경우(예를 들어, 애플리케이션이 진행 상태로 응답할 때) 타이머가 리셋되거나, 타이머가 취소될 수 있다(예를 들어, 애플리케이션이 기능을 완료할 때(최종 상태) 또는 사용자 응답이 요청될 때(확인 또는 모호성 제거 상태)).
제어 스레드(520)가 앱서비스 스레드(530)로부터 확인 또는 모호성 제거 상태를 수신하면, 제어 스레드(520)는 사용자로부터 확인 또는 모호성 제거가 요청되었음을 UI 스레드(510)에 알릴 수 있다. UI 스레드(510)는 디지털 개인 비서(120)의 사용자 인터페이스를 통해 사용자에게 확인 또는 모호성 제거 선택을 제공할 수 있다. 사용자가 응답하거나 또는 응답하지 않으면, UI 스레드(510)는 사용자 응답을, 또는 응답의 명확한 부재를, 제어 스레드(520)에 제공할 수 있다. 제어 스레드(520)는 앱서비스 스레드(530)가 기능을 수행할 수 있도록 사용자 응답을 앱서비스 스레드(530)에 전달할 수 있다. 사용자가 응답하지 않으면, 제어 스레드(520)는 앱서비스 스레드(530)를 종료시킬 수 있다.
UI 스레드(510)는 디지털 개인 비서(120)의 사용자 인터페이스를 통해 다양한 유형의 출력을 디스플레이할 수 있다. 예를 들어, UI 스레드(510)는 텍스트로부터 디지털 시뮬레이션된 음성 출력과 같은 오디오 출력을 생성할 수 있다. 디지털 시뮬레이션된 음성은, (예를 들어, 디지털-아날로그 변환기(digital-to-analog converter)를 갖는) 디지털 시뮬레이션된 음성을 스피커 또는 헤드폰을 통해 사운드로 출력할 수 있는 아날로그 신호로 변환할 수 있는 오디오 처리 칩으로 전송될 수 있다. 다른 예로서, UI 스레드(510)는 컴퓨팅 장치(130)의 디스플레이 화면에 사용자가 보기 위한 이미지, 애니메이션, 텍스트 출력 및 하이퍼링크와 같은 시각적 출력을 제공할 수 있다. 하이퍼링크가 눌리거나 클릭되면, UI 스레드(510)는 브라우저 애플리케이션을 시작하여 선택된 하이퍼링크에 해당하는 웹사이트를 볼 수 있다. 다른 예로서, UI 스레드(510)는, 예를 들어, 컴퓨팅 장치(130)를 진동하게 할 수 있는 전기 모터에 진동 신호를 전송함으로써, 촉각 출력을 생성할 수 있다.
헤드리스
작업 완료를 위한 예시적인 방법
도 6은 디지털 개인 비서(120)의 백그라운드에서 애플리케이션의 작업을 헤드리스 방식으로 완료하기 위한 예시적인 방법(600)의 흐름도이다. 610에서, 사용자에 의해 생성된 음성 입력이 디지털 개인 비서(120)에 의해 수신될 수 있다. 음성 입력은 컴퓨팅 장치(130)에서 국부적으로 또는 컴퓨팅 장치(130)로부터 원격으로 캡쳐될 수 있다. 일례로서, 사용자에 의해 생성된 음성 입력은 컴퓨팅 장치(130)의 마이크(150)에 의해 국부적으로 캡쳐될 수 있고, 아날로그-디지털 변환기에 의해 디지털화될 수 있다. 다른 예로서, 사용자에 의해 생성된 음성 입력은 컴퓨팅 장치(130)에 무선으로 연결된 마이크(예를 들어, 블루투스 컴패니언 장치)에 의해 원격으로 캡쳐될 수 있다. 디지털 개인 비서(120)는 디지털 개인 비서(120)의 사용자 인터페이스에 입력된 음성 및/또는 텍스트에 의해 제어될 수 있다.
620에서, 음성 입력의 자연어 처리가 수행되어 사용자 음성 명령을 결정할 수 있다. 사용자 음성 명령은 제 3 자 음성-지원 애플리케이션과 같은 애플리케이션의 사전 정의된 기능을 수행하기 위한 요청을 포함할 수 있다. 사전 정의된 기능은 디지털 개인 비서(120)가 지원하는 애플리케이션 및 애플리케이션의 기능을 정의하는 데이터 구조를 사용하여 식별될 수 있다. 예를 들어, 호환 가능한 애플리케이션은 명령 정의(400)와 같은 명령 정의 파일에서 식별될 수 있다. 확장 가능한 명령 정의 파일을 사용하여 디지털 개인 비서(120)에 의해 헤드리스 방식으로 수행될 수 있는 제 3 자 애플리케이션의 기능을 정의함으로써, 디지털 개인 비서(120)는 사용자가 디지털 개인 비서(120)의 사용자 인터페이스로 더 많은 작업을 수행할 수 있게 한다.
630에서, 디지털 개인 비서(120)는 컴퓨팅 장치(130)의 디스플레이 상에 나타나는 애플리케이션의 사용자 인터페이스 없이도 애플리케이션이 사전 정의된 기능을 헤드리스 방식으로 실행하게 할 수 있다. 디지털 개인 비서(120)는, 애플리케이션이 명령 데이터 구조(140)에서 헤드리스로 정의되었기 때문에 또는 사용자가 컴퓨팅 장치를 핸즈프리 모드로 사용하는 중이어서 포어그라운드에서 애플리케이션을 실행하는 것이 잠재적으로 사용자에게 혼란을 줄 수 있기 때문에, 애플리케이션을 헤드리스 방식으로 실행하도록 결정할 수 있다. 예를 들어, 디지털 개인 비서(120)는 웹 서비스를 호출하여 애플리케이션의 사전 정의된 기능을 실행할 수 있다. 다른 예로서, 디지털 개인 비서(120)는 컴퓨팅 장치(130)에서 새로운 스레드를 시작하여, 사용자 명령이 결정된 후에 애플리케이션의 사전 정의된 기능을 실행할 수 있다. 다른 예로서, 디지털 개인 비서(120)는 애플리케이션의 워밍업 중에 시작된 스레드와 같은 기존 스레드와 통신하여 애플리케이션의 사전 정의된 기능을 실행할 수 있다. 사전 정의된 기능은 백그라운드 프로세스로 실행될 수 있다. 애플리케이션은, 예를 들어, 사전 정의된 기능의 상태를 추적함으로써, 사전 정의된 기능의 진행 상황을 모니터링할 수 있다.
640에서, 사전 정의된 기능과 관련된 상태를 나타내는 응답이 애플리케이션으로부터 수신될 수 있다. 예를 들어, 상태에는 워밍업, 초기, 진행, 확인, 모호성 제거, 및 최종 상태가 포함될 수 있다. 응답은 템플릿화된 목록, 텍스트 문자열, 텍스트 음성 변환 문자열, 이미지, 하이퍼링크 또는 디지털 개인 정보의 사용자 인터페이스를 통해 사용자에게 디스플레이될 수 있는 다른 적절한 정보와 같은 추가 정보를 포함할 수 있다.
650에서, 디지털 개인 비서(120)의 사용자 인터페이스는 사전 정의된 기능과 관련된 수신된 상태에 기초하여 사용자에게 응답을 제공할 수 있다. 이러한 방식으로, 응답은 애플리케이션의 사용자 인터페이스를 나타내지 않고 디지털 개인 비서(120)의 사용자 인터페이스의 컨텍스트 내에서 발생할 수 있다. 또한, 디지털 개인 비서(120)의 확인 및 모호성 제거 기능은 애플리케이션에 대한 사용자 명령을 확인 및/또는 명확하게 하는데 사용될 수 있다.
애플리케이션을
워밍업할지 여부를
결정하기 위한 예시적인 방법
도 7은 사용자가 디지털 개인 비서(120)와 대화하는 동안 애플리케이션을 워밍업할지 여부를 결정하기 위한 예시적인 방법(700)의 흐름도이다. 710에서, 사용자는 디지털 개인 비서(120)에 대해 타이핑하거나 구술하거나 말할 수 있다. 사용자의 텍스트 또는 음성은 자연어 처리 기법을 사용하여 분석될 수 있고, 음성으로부터 개별 단어가 인식될 수 있다. 개별 단어는 개별적으로 그리고 그들이 구술된 중간 구절 내에서 분석될 수 있다. 예를 들어, 사용자는 "이 봐(hey) 비서, 마이 앱(MyApp), …해봐"라고 말할 수 있다. "이 봐"라는 단어는 전달 어구이므로 뺄 수 있다. "비서"라는 단어는 사용자가 동작을 수행할 것을 요구하고 있음을 디지털 개인 비서(120)가 알게 하는데 사용될 수 있다. "마이 앱"이라는 단어는 애플리케이션으로 해석될 수 있다.
720에서, 타이핑된 단어 또는 음성 단어는 디지털 개인 비서(120)의 고유 기능 및 확장 가능한 명령 정의에서 제공된 기능과 비교될 수 있다. 집합적으로, 고유 기능 및 명령 정의 파일에서 정의된 기능을 "알려진 앱서비스"라고 지칭할 수 있다. 음성 단어는, 단어가 발음됨에 따라 분석되어 알려진 앱서비스와 비교될 수 있다. 즉, 사용자가 전체 구절을 말하거나 타이핑하기 전에 음성 분석이 일어날 수 있다. 알려진 앱서비스 중 어느 것도 일치하지 않으면, 730에서, 디지털 개인 비서(120)는 웹 브라우저를 열어 인식되지 않은 구술된 구절에 대응하는 검색 문자열을 갖는 검색 엔진 웹페이지를 검색할 수 있다. 사용자가 웹 검색을 구체화하고 및/또는 결과를 볼 수 있도록 프로그램 제어가 웹 브라우저로 전송될 수 있다. 그러나, 알려진 앱서비스가 매치되면, 방법(700)은 740에서 계속될 수 있다.
740에서, 앱서비스 애플리케이션이 포어그라운드 작업인지 백그라운드 작업인지를 결정할 수 있다. 예를 들어, 명령 정의에는 앱서비스 애플리케이션을 포어그라운드 또는 백그라운드 애플리케이션으로 정의하는 속성이 포함될 수 있다. 앱서비스 애플리케이션이 포어그라운드 작업인 경우, 750에서, 앱서비스 애플리케이션을 포어그라운드에서 시작하고 제어를 앱서비스 애플리케이션으로 전송하여 명령을 완료할 수 있다. 앱서비스 애플리케이션이 백그라운드 작업이면, 방법(700)은 병렬 단계(760 및 770)를 계속할 수 있다.
760에서, 디지털 개인 비서(120)는 음성 분석에 관한 정보를 사용자에게 제공할 수 있다. 특히, 디지털 개인 비서(120)는 디지털 개인 비서(120)의 사용자 인터페이스의 진행 중인 화면에 대한 출력을 생성할 수 있다. 예를 들어, 출력은 명령 정의의 <Command> 요소 내에 중첩된 <Feedback> 요소 내에 정의될 수 있다. 출력은 텍스트 문자열일 수 있으며 사용자가 계속 말을 하면 계속 업데이트될 수 있다.
770에서, 디지털 개인 비서(120)는 사용자 구술이 끝나기를 기다리지 않고 앱서비스 애플리케이션을 워밍업할 수 있다. 앱서비스 애플리케이션의 워밍업에는 메모리 할당, 명령의 사전 추출, 통신 세션 설정, 데이터베이스에서 정보 검색, 새로운 실행 스레드 시작, 인터럽트 제기 또는 기타 적절한 애플리케이션 특정 작업이 포함될 수 있다. 애플리케이션은 추론적 기능(speculative function)에 기초하여 워밍업될 수 있다. 예를 들어, 추론적 기능에 해당하는 명령은 기능이 확실하게 알려지지 않은 경우에도 추출될 수 있다. 사용자가 음성 명령을 완료하기 전에 애플리케이션을 워밍업함으로써, 사용자에게 응답하는 시간을 잠재적으로 줄일 수 있다.
780에서, 디지털 개인 비서(120)는 구술이 완료될 때까지 부분 음성 인식 결과를 계속해서 파싱할 수 있다. 구술의 종료는 파싱되고 있는 명령에 기초하여 및/또는 사전 결정된 시간보다 긴 시간 동안의 사용자의 침묵(pause)에 기초하여 탐지될 수 있다. 예를 들어, "대기열"이라는 단어가 인식되면 "영화 앱 서비스, 대기열에 MovieX 추가" 명령의 끝부분을 탐지할 수 있다. 또 다른 예로, "텍스트 앱(TextApp), 내가 저녁 식사 시간에 늦게 집에 갈 것이라고 내 아내에게 문자 보내줘."라고 하는 명령의 끝은, 명령이 알 수 없는 길이의 데이터 항목으로 끝나기 때문에 탐지하기가 더 어려울 수 있다. 따라서, 명령이 완료되었음을 디지털 개인 비서(120)에게 알려주기 위해 침묵이 사용될 수 있다.
790에서, 음성 명령의 종료가 탐지될 수 있고 최종 음성 인식 결과가 애플리케이션에 전달될 수 있다. 애플리케이션 및 디지털 개인 비서(120)는 이전의 도면을 참조하여 설명된 바와 같이 서로 통신하여 음성 명령을 완료할 수 있다.
컴퓨팅 시스템
도 8은 전술한 혁신들이 구현될 수 있는 적절한 컴퓨팅 시스템(800)의 일반화된 예를 나타낸다. 이들 혁신은 다양한 범용 또는 전용 컴퓨팅 시스템에서 구현될 수 있으므로 컴퓨팅 시스템(800)은 용도 또는 기능의 범주에 대해 어떠한 제한을 하려는 것이 아니다.
도 8을 참조하면, 컴퓨팅 시스템(800)은 하나 이상의 처리 장치(810, 815) 및 메모리(820, 825)를 포함한다. 도 8에서, 이러한 기본 구성(830)은 점선 내에 포함된다. 처리 장치(810, 815)는 컴퓨터 실행-가능 명령어를 실행한다. 처리 장치는 범용 중앙 처리 장치(CPU), 애플리케이션 특정 집적 회로(ASIC, application-specific integrated circuit) 내의 프로세서 또는 임의의 다른 유형의 프로세서일 수 있다. 다중 처리 시스템에서는, 복수의 처리 장치가 컴퓨터 실행가능 명령어를 실행하여 처리 능력을 증가시킨다. 예를 들어, 도 8은 중앙 처리 장치(CPU)(810)와 함께 그래픽 처리 장치 또는 코-프로세싱 유닛(815)을 도시한다. 유형의 메모리(820, 825)는 처리 장치(들)에 의해 액세스 가능한 휘발성 메모리(예, 레지스터, 캐시, RAM), 비휘발성 메모리(예, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 일부 조합일 수 있다. 메모리(820, 825)는 본원에서 설명된 하나 이상의 혁신기술을 구현하는 소프트웨어(880)를 처리 장치(들)에 의해 실행하기에 적합한 컴퓨터 실행가능 명령어의 형태로 저장한다.
컴퓨팅 시스템은 추가적인 특징을 가질 수 있다. 예를 들어, 컴퓨팅 시스템(800)은 저장 장치(840), 하나 이상의 입력 장치(850), 하나 이상의 출력 장치(860) 및 하나 이상의 통신 연결부(870)를 포함한다. 버스와 같은 상호연결 메커니즘(도시되지 않음), 컨트롤러 또는 네트워크가 컴퓨팅 시스템(800)의 구성 요소를 상호 연결한다. 일반적으로, 운영 체제 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(800)에서 실행되는 다른 소프트웨어를 위한 운영 환경을 제공하고 컴퓨팅 시스템(800)의 구성 요소의 활동을 조정한다.
유형의 저장 장치(840)는 이동식 또는 비이동식일 수 있고 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD 또는 정보를 저장하는데 사용될 수 있으며 컴퓨팅 시스템(800) 내에서 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 저장 장치(840)는, 본원에서 설명된 하나 이상의 혁신을 구현하는 소프트웨어(880)에 대한 명령어를 저장한다.
입력 장치(들)(850)는 키보드, 마우스, 펜 또는 트랙볼과 같은 터치 입력 장치, 음성 입력 장치, 스캐닝 장치 또는 컴퓨팅 시스템(800)에 입력을 제공하는 다른 장치일 수 있다. 비디오 인코딩을 위해, 입력 장치(들)(850)는 카메라, 비디오 카드, TV 튜너 카드 또는 아날로그나 디지털 형식의 비디오 입력을 수신하는 유사한 장치, 또는 컴퓨팅 시스템(800)으로 비디오 샘플을 판독하는 CD-ROM이나 CD-RW일 수 있다. 출력 장치(들)(860)는 디스플레이, 프린터, 스피커, CD-라이터 또는 컴퓨팅 시스템(800)으로부터의 출력을 제공하는 다른 장치일 수 있다.
통신 연결부(들)(870)는 통신 매체를 통한 다른 컴퓨팅 개체로의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령어와 같은 정보, 오디오 또는 비디오 입력이나 출력, 또는 변조된 데이터 신호로 된 다른 데이터를 운반한다. 변조된 데이터 신호는 자신의 특성 중 하나 이상이 신호에 정보를 인코딩하는 방식으로 설정되거나 변경된 신호이다. 제한이 아닌 예시로서, 통신 매체는 전기, 광학, RF 또는 다른 반송파를 사용할 수 있다.
혁신들은 타겟 실제 또는 가상 프로세서 상의 컴퓨팅 시스템에서 실행되는 프로그램 모듈에 포함된 것들과 같은 컴퓨터 실행가능 명령어의 일반적인 컨텍스트에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정한 작업을 수행하거나 특정한 추상 데이터 유형을 구현하는 루틴, 프로그램, 라이브러리, 객체, 클래스, 구성 요소, 데이터 구조 등을 포함한다. 프로그램 모듈의 기능은 다양한 실시예에서 원하는 대로 프로그램 모듈들 사이에서 결합되거나 나누어질 수 있다. 프로그램 모듈을 위한 컴퓨터 실행가능 명령어는 로컬 또는 분산 컴퓨팅 시스템 내에서 실행될 수 있다.
"시스템" 및 "장치"란 용어는 본원에서 교환 가능하게 사용된다. 컨텍스트 상 다르게 표시하지 않는 한, 이들 용어는 컴퓨팅 시스템 또는 컴퓨팅 장치의 유형에 대한 어떠한 제한을 나타내고자 하는 것은 아니다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 장치는 로컬일 수도 있고 또는 분산될 수도 있으며, 본원에서 설명된 기능을 구현하는 소프트웨어를 갖는 전용 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
프레젠테이션을 위해, 상세한 설명은 컴퓨팅 시스템에서의 컴퓨터 동작을 기술하기 위해 "결정(determine)" 및 "사용(use)"과 같은 용어를 사용한다. 이들 용어는 컴퓨터에 의해 수행된 동작을 위한 하이 레벨 추상화(high-level abstraction)이며, 인간에 의해 수행된 동작과 혼동해서는 안 된다. 이들 용어에 대응하는 실제 컴퓨터 동작은 구현에 따라 변한다.
모바일 장치
도 9는 902에 일반적으로 도시된, 다양한 선택적 하드웨어 및 소프트웨어 구성 요소를 포함하는 예시적인 모바일 장치(900)를 나타내는 시스템도이다. 설명의 편의를 위해 모든 연결부가 도시되지는 않았으나, 모바일 장치의 임의의 구성 요소(902)는 임의의 다른 구성 요소와 통신할 수 있다. 모바일 장치는 다양한 컴퓨팅 장치(예컨대, 셀룰러 폰, 스마트폰, 핸드헬드 컴퓨터, PDA(Personal Digital Assistant) 등) 중 임의의 것일 수 있고, 셀룰러, 위성, 또는 다른 네트워크와 같은 하나 이상의 모바일 통신 네트워크(904)와의 무선 양방향 통신을 가능하게 할 수 있다.
도시된 모바일 장치(900)는 신호 코딩, 데이터 처리, 입/출력 처리, 전력 제어 및/또는 다른 기능과 같은 작업을 수행하는 컨트롤러 또는 프로세서(910)(예컨대, 신호 프로세서, 마이크로프로세서, ASIC 또는 다른 제어 및 처리 로직 회로)를 포함할 수 있다. 운영 체제(912)는 구성 요소(902)의 할당 및 사용을 제어할 수 있고, 디지털 개인 비서(120) 및 하나 이상의 애플리케이션 프로그램(914)을 지원할 수 있다. 애플리케이션 프로그램은 공통 모바일 컴퓨팅 애플리케이션(예컨대, 이메일 애플리케이션, 캘린더, 연락처 관리자, 웹 브라우저, 메시징 애플리케이션, 영화 애플리케이션, 뱅킹 애플리케이션) 또는 임의의 다른 컴퓨팅 애플리케이션을 포함할 수 있다. 애플리케이션 프로그램(914)은 디지털 개인 비서(120)에 의해 헤드리스 방식으로 실행될 수 있는 작업을 갖는 애플리케이션을 포함할 수 있다. 예를 들어, 작업은 명령 데이터 구조(140)에서 정의될 수 있다. 또한, 애플리케이션 저장소에 액세스하는 기능부(913)가 애플리케이션 프로그램(914)을 획득하고 업데이트하는데 사용될 수 있다.
도시된 모바일 장치(900)는 메모리(920)를 포함할 수 있다. 메모리(920)는 비이동식 메모리(922) 및/또는 이동식 메모리(924)를 포함할 수 있다. 비이동식 메모리(922)는 RAM, ROM, 플래시 메모리, 하드 디스크 또는 다른 잘 알려진 메모리 저장 기법을 포함할 수 있다. 이동식 메모리(924)는 플래시 메모리 또는 GSM 통신 시스템 분야에 잘 알려져 있는 SIM 카드(Subscriber Identity Module) 또는 "스마트 카드"와 같은 다른 잘 알려진 메모리 저장 기술을 포함할 수 있다. 메모리(920)는 운영 체제(912) 및 애플리케이션(914)을 실행하기 위한 데이터 및/또는 코드를 저장하는데 사용될 수 있다. 예시적인 데이터는 웹페이지, 텍스트, 이미지, 사운드 파일, 비디오 데이터 또는 하나 이상의 유선 또는 무선 네트워크를 통해 하나 이상의 네트워크 서버나 다른 장치로부터 수신되거나 송신되는 기타 데이터 세트를 포함할 수 있다. 메모리(920)는 IMSI(International Mobile Subscriber Identity)와 같은 가입자 식별자 및 IMEI(International Mobile Equipment Identity)와 같은 장치 식별자를 저장하는데 사용될 수 있다. 이들 식별자는 사용자 및 장치를 식별하도록 네트워크 서버에게 전송될 수 있다.
모바일 장치(900)는 터치스크린(932), 마이크(934), 카메라(936), 물리적 키보드(938) 및/또는 트랙볼(940)과 같은 하나 이상의 입력 장치(930)를 지원할 수 있고, 스피커(952) 및 디스플레이(954)와 같은 하나 이상의 출력 장치(950)를 지원할 수 있다. 다른 가능한 출력 장치(도시되지 않음)는 압전 또는 다른 햅틱 출력 장치를 포함할 수 있다. 일부 장치는 하나 이상의 입/출력 기능을 제공할 수 있다. 예를 들어, 터치스크린(932) 및 디스플레이(954)는 단일한 입/출력 장치로 결합될 수 있다.
입력 장치(930)는 NUI(Natural User Interface)를 포함할 수 있다. NUI는 마우스, 키보드, 원격 컨트롤러 등과 같은 입력 장치에 의해 부가되는 인공적인 제약으로부터 벗어나 사용자가 "자연스러운" 방식으로 장치와 상호 작용할 수 있게 하는 임의의 인터페이스 기법이다. NUI 방법의 예로는 음성 인식, 터치 및 스타일러스 인식, 스크린 및 스크린에 접한 곳 모두에서의 제스처 인식, 에어 제스처(air gesture), 머리 및 눈 추적, 목소리와 음성, 시각, 터치, 제스처 및 기계 지능에 의존하는 방법을 들 수 있다. NUI의 다른 예는 가속도계/자이로스코프, 얼굴 인식, 3D 디스플레이, 머리, 눈 및 시선 추적, 몰입형 증강 현실 및 가상 현실 시스템을 사용하는 모션 제스처 검출을 포함하며, 이들 모두는 하나 이상의 내추럴 인터페이스를 제공하고 또한 EEG(electirc field sensing electrodes) 및 관련 방법들을 사용하여 뇌 활동을 감지하는 기술을 제공한다. 따라서, 일 특정예에서, 운영 체제(912) 또는 애플리케이션(914)은 음성 인식 소프트웨어를 사용자가 음성 명령을 통해 장치(900)를 동작할 수 있도록 하는 음성 사용자 인터페이스의 일부로서 포함할 수 있다. 또한, 장치(900)는, 게이밍 애플리케이션 또는 기타 애플리케이션에 입력을 제공하기 위한 제스처를 검출하고 해석하는 것과 같이, 사용자의 공간 제스처를 통한 사용자 상호 작용을 가능하게 하는 입력 장치 및 소프트웨어를 포함할 수 있다.
무선 모뎀(960)은 관련 분야에 잘 알려진 바와 같이, 안테나(도시되지 않음)에 연결될 수 있고, 프로세서(910) 와 외부 장치 간의 양방향 통신을 지원할 수 있다. 모뎀(960)은 일반적으로 도시되며, 모바일 통신 네트워크(904) 및/또는 다른 무선 기반 모뎀(예컨대, 블루투스(964) 또는 와이파이(962))와 통신하기 위한 셀룰러 모뎀을 포함할 수 있다. 무선 모뎀(960)은 일반적으로 단일 셀룰러 네트워크 내, 셀룰러 네트워크들 간 또는 모바일 장치와 PSTN(public swithced telephone network) 간의 데이터 및 음성 통신을 위한 GSM 네트워크와 같은 하나 이상의 셀룰러 네트워크와의 통신을 위해 구성된다.
모바일 장치는 적어도 하나의 입/출력 포트(980), 전원(982), GPS(Global Positioning System) 수신기와 같은 위성 내비게이션 시스템 수신기(984), 가속도계(986), 및/또는 USB 포트, IEEE 1394(FireWire) 포트 및/또는 RS-232 포트일 수 있수 있는 물리적 커넥터(990)를 추가로 포함할 수 있다. 임의의 구성 요소가 삭제될 수 있고 다른 구성 요소가 추가될 수 있기 때문에, 도시된 구성 요소(902)는 필수적이거나 포괄적인 것이 아니다.
클라우드
-지원 환경
도 10은 설명된 실시예, 기법, 기술이 구현될 수 있는 적절한 클라우드-지원 환경(1000)의 일반화된 예를 나타낸다. 예시적인 환경(1000)에서, 다양한 유형의 서비스(예컨대, 컴퓨팅 서비스)가 클라우드(1010)에 의해 제공된다. 예를 들어, 클라우드(1010)는 컴퓨팅 장치의 컬렉션을 포함할 수 있고, 이는 중앙 집중형 또는 분산형으로 배치될 수 있으며 인터넷과 같은 네트워크를 통해 연결된 다양한 유형의 사용자 및 장치에 클라우드 기반 서비스를 제공한다. 구현 환경(1000)은 컴퓨팅 작업을 수행하기 위해 다른 방식으로 사용될 수 있다. 예를 들어, 일부 작업(예컨대, 사용자 입력 처리, 사용자 인터페이스 제시)은 로컬 컴퓨팅 장치(예, 연결된 장치(1030, 1040, 1050))에서 수행될 수 있는 반면에, 다른 작업(예를 들면, 후속 처리에서 사용될 데이터의 저장)은 클라우드(1010)에서 수행될 수 있다.
예시적인 환경(1000)에서, 클라우드(1010)는 연결된 장치(1030, 1040, 1050)를 위한 서비스에 다양한 스크린 기능을 제공한다. 연결된 장치(1030)는 컴퓨터 스크린(1035)(예컨대, 중형 사이즈 스크린)을 포함하는 장치를 나타낸다. 예를 들어, 연결된 장치(1030)는 데스크탑 컴퓨터, 랩탑, 노트북, 넷북 등과 같은 개인 컴퓨터일 수 있다. 연결된 장치(1040)는 모바일 장치 스크린(1045)(예컨대, 소형 사이즈 스크린)을 포함하는 장치를 나타낸다. 예를 들어, 연결된 장치(1040)는 모바일 폰, 스마트폰, PDA, 태블릿 컴퓨터 등일 수 있다. 연결된 장치(1050)는 대형 스크린(1055)을 가진 장치를 나타낸다. 예를 들어, 연결된 장치(1050)는 텔레비전 스크린(예컨대, 스마트 텔레비전) 또는 텔레비전에 연결된 다른 장치(예컨대, 셋톱 박스 또는 게이밍 콘솔) 등일 수 있다. 연결된 장치(1030, 1040, 1050) 중 하나 이상은 터치스크린 기능을 포함할 수 있다. 터치스크린은 여러 방식으로 입력을 받아들일 수 있다. 예를 들어, 용량성 터치스크린은 객체(예컨대, 핑거팁 또는 스타일러스)가 표면을 가로질러 흐르는 전기 전류를 왜곡하거나 차단하는 경우에 터치 입력을 검출한다. 다른 예로서, 터치스크린은 광학 센서를 사용하여 광학 센서로부터의 빔이 차단되는 경우에 터치 입력을 검출한다. 일부 터치스크린에 의해 입력이 검출되기 위해 스크린 표면과의 물리적 접촉이 반드시 필요한 것은 아니다. 스크린 기능이 없는 장치 또한 예시적인 환경(1000)에서 사용될 수 있다. 예를 들어, 클라우드(1010)는 디스플레이 없이 하나 이상의 컴퓨터(예컨대, 서버 컴퓨터)에 서비스를 제공할 수 있다.
서비스는 서비스 제공자(1020) 또는 온라인 서비스의 다른 제공자(도시되지 않음)를 통해 클라우드(1010)에 의해 제공될 수 있다. 예를 들어, 클라우드 서비스는 특정 연결된 장치(예컨대, 연결된 장치(1030, 1040, 1050))의 스크린 사이즈, 디스플레이 기능 및/또는 터치스크린 기능에 맞춤화될 수 있다.
예시적인 환경(1000)에서, 클라우드(1010)는 적어도 부분적으로 서비스 제공자(1020)를 사용하여 본원에서 설명된 기술 및 해결책을 연결된 다양한 장치(1030, 1040, 1050)에 제공한다. 예를 들어, 서비스 제공자(1020)는 다양한 클라우드 기반 서비스에 대한 중앙 집중화된 해결책을 제공할 수 있다. 서비스 제공자(1020)는 사용자 및/또는 장치(예를 들면, 연결된 장치(1030, 1040, 1050) 및/또는 이들 각각의 사용자)에 관한 서비스 가입을 관리할 수 있다.
구현예
설명된 방법 중 일부의 동작들은 표현의 편의를 위해 특정한 순서로 기술되어 있지만, 이러한 설명 방식은 특정 순서가 후술하는 특정 언어로 요구되지 않는 한 재정렬을 포함한다. 예를 들어, 순차적으로 설명된 동작은 경우에 따라서 재정렬되거나 동시에 수행될 수 있다. 또한, 간략화를 위해, 첨부 도면은 개시된 방법이 다른 방법과 함께 사용될 수 있는 다양한 방식을 보여주지 않을 수 있다.
개시된 방법들 중 임의의 방법은 하나 이상의 컴퓨터 판독가능 저장 매체에 저장되고 컴퓨팅 장치(예컨대, 스마트폰 또는 컴퓨팅 하드웨어를 포함하는 기타 모바일 장치를 포함하는 임의의 상용 컴퓨팅 장치)에서 실행되는 컴퓨터 실행가능 명령어 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 유형의(tangible) 상용 매체(예컨대, DVD 또는 CD와 같은 하나 이상의 광 미디어 디스크, 휘발성 메모리 소자(예컨대, DRAM 또는 SRAM), 또는 비휘발성 메모리 소자(예컨대, 플래시 메모리 또는 하드 드라이브))이다. 예를 들어, 도 8을 참조하면, 컴퓨터 판독가능 저장 매체는 메모리(820 및 825) 및 저장부(840)를 포함한다. 예를 들어, 도 9를 참조하면, 컴퓨터 판독가능 저장 매체는 메모리 및 저장부(920, 922, 924)를 포함한다. 컴퓨터 판독가능 저장 매체라는 용어는 신호 및 반송파를 포함하지 않는다. 또한, 컴퓨터 판독가능 저장 매체라는 용어는 통신 연결부(예컨대, 870, 960, 962, 964)를 포함하지 않는다.
개시된 기법들을 구현하기 위한 임의의 컴퓨터 실행가능 명령어 및 개시된 실시예의 구현 동안 생성되어 사용되는 임의의 데이터가 하나 이상의 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 컴퓨터 실행가능 명령어는, 예컨대, 전용 소프트웨어 애플리케이션, 또는 웹 브라우저나 다른 소프트웨어 애플리케이션(예컨대, 원격 컴퓨팅 애플리케이션)을 통해 액세스되거나 다운로딩되는 소프트웨어 애플리케이션의 일부일 수 있다. 이와 같은 소프트웨어는, 예를 들어, 단일 로컬 컴퓨터(예컨대, 임의의 적절한 상용 컴퓨터) 상에 또는 네트워크 환경(예컨대, 인터넷, 광역 통신망, 근거리 통신망, (클라우드 컴퓨팅 네트워크와 같은) 클라이언트-서버 네트워크, 또는 기타 이와 같은 네트워크)에서 하나 이상의 네트워크 컴퓨터를 사용하여 실행될 수 있다.
명확성을 위해, 소프트웨어 기반의 구현예의 소정의 선택된 특성만이 기술된다. 잘 알려진 다른 세부 사항은 생략된다. 예를 들어, 개시된 기술은 임의의 특정 컴퓨터 언어 또는 프로그램으로 한정되지 않는다. 예를 들어, 개시된 기술은 C++, Java, Perl, JavaScript, Adobe Flash, 또는 기타 적절한 프로그래밍 언어로 기록된 소프트웨어에 의해 구현될 수 있다. 마찬가지로, 개시된 기술은 임의의 특정 컴퓨터 또는 하드웨어 유형으로 제한되지 않는다. 적절한 컴퓨터 및 하드웨어의 소정의 세부 사항은 잘 알려져 있으므로 본원에 상세히 기술될 필요는 없다.
또한, (예컨대, 컴퓨터로 하여금 개시된 방법들 중 임의의 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 포함하는) 소프트웨어 기반 실시예들 중 임의의 예가 적절한 통신 수단을 통해 업로딩되거나, 다운로딩되거나, 또는 원격으로 액세스될 수 있다. 이와 같은 적절한 통신 수단은, 예를 들어, 인터넷, 월드 와이드 웹, 인트라넷, 소프트웨어 애플리케이션, (광섬유 케이블을 포함하는) 케이블, 자기 통신, (RF, 마이크로파, 및 적외선 통신을 포함하는) 전자기 통신, 전자 통신, 또는 이와 같은 기타 통신 수단을 포함한다.
전술한 방법, 장치, 및 시스템은 어떠한 방식으로든 제한하는 것으로 해석되어서는 안 된다. 대신에, 본원은 개시된 다양한 실시예들의 모든 신규하고 비자명한 특징들 및 특성들, 각자 그리고 서로에 대한 다양한 조합 및 하위 조합에 관한 것이다. 개시된 방법, 장치, 시스템은 임의의 특정한 양태나 특성 또는 이들의 조합에 한정되지 않고, 임의의 하나 이상의 특정 이점이 존재하거나 문제점이 해결될 것을 요구하지도 않는다.
임의의 예로부터의 기술들은 임의의 하나 이상의 다른 예에서 기술된 기술과 결합될 수 있다. 개시된 기술의 원리가 적용될 수 있는 많은 가능한 실시예를 고려하여, 예시된 실시예들은 개시된 기술의 예들일 뿐이며, 본 발명의 범위를 제한하는 것으로 취급되어서는 안 된다는 점을 이해해야 한다.
Claims (15)
- 컴퓨팅 장치로서,
처리 장치,
메모리, 및
하나 이상의 마이크를 포함하고,
상기 컴퓨팅 장치는 음성-제어 디지털 개인 비서와 함께 동작들을 수행하도록 구성되고,
상기 동작들은
상기 하나 이상의 마이크를 통해 사용자에 의해 생성된 음성 입력을 수신하는 동작,
상기 음성 입력을 사용하여 음성 인식을 수행하여 음성 명령을 결정하는 동작 - 상기 음성 명령은 제 3 자 애플리케이션의 작업을 수행하기 위한 요청을 포함하고, 상기 작업은 음성 명령에 의해 호출 가능한 제 3 자 애플리케이션의 작업을 정의하는 데이터 구조를 사용하여 식별됨 -,
상기 제 3 자 애플리케이션의 작업이 헤드리스 방식으로 실행될 수 있는지 여부를 판정하는 동작,
상기 제 3 자 애플리케이션의 작업이 헤드리스 방식으로 실행될 수 있다고 판정될 때, 상기 제 3 자 애플리케이션이 백그라운드 프로세스로서 실행되게 하여 상기 작업을 헤드리스 방식으로 실행시키는 동작,
상기 제 3 자 애플리케이션으로부터 상기 작업과 관련된 상태를 나타내는 응답을 수신하는 동작,
상기 음성-제어 디지털 개인 비서의 사용자 인터페이스에 의해, 상기 작업과 관련된 상기 수신된 상태에 기초하여 상기 사용자에게 응답을 제공함으로써, 상기 응답이 상기 제 3 자 애플리케이션의 상기 사용자 인터페이스를 나타내지 않고 상기 음성-제어 디지털 개인 비서의 사용자 인터페이스의 컨텍스트 내에서 발생할 수 있게 하는 동작을 포함하는
컴퓨팅 장치.
- 제 1 항에 있어서,
상기 제 3 자 애플리케이션의 작업이 헤드리스 방식으로 실행될 수 있는지를 판정하는 것은 상기 데이터 구조가 상기 작업을 백그라운드 작업으로 정의하는지를 판정하는 것을 포함하는 컴퓨팅 장치.
- 제 1 항에 있어서,
상기 제 3 자 애플리케이션의 작업이 헤드리스 방식으로 실행될 수 있는지를 판정하는 것은 상기 사용자가 핸즈프리 모드에서 상기 컴퓨팅 장치를 사용하고 있는지를 판정하는 것을 포함하는 컴퓨팅 장치. - 제 1 항에 있어서,
상기 동작들은
음성 인식을 수행하는 동안 및 상기 음성 명령의 결정 완료 전에 상기 제 3 자 애플리케이션의 워밍업 시퀀스를 시작하는 동작을 더 포함하는 컴퓨팅 장치.
- 제 4 항에 있어서,
상기 워밍업 시퀀스는 상기 메모리의 일부 할당, 명령의 사전 추출, 통신 세션 설정, 데이터베이스에서 정보 검색, 새로운 실행 스레드 시작, 또는 인터럽트 제기를 포함하는 컴퓨팅 장치.
- 제 1 항에 있어서,
음성 명령에 의해 호출 가능한 제 3 자 애플리케이션의 작업을 정의하는 상기 데이터 구조는 상기 작업과 연관된 상태의 상기 사용자에 대한 응답으로의 매핑을 포함하는 컴퓨팅 장치.
- 제 1 항에 있어서,
상기 동작들은
상기 제 3 자 애플리케이션이 백그라운드 프로세스로서 실행될 때 타이머를 시작하는 동작,
상기 타이머가 만료되면 상기 백그라운드 프로세스를 종료하는 동작을 더 포함하는 컴퓨팅 장치.
- 제 1 항에 있어서,
상기 제 3 자 애플리케이션으로부터의 응답은 확인 상태를 나타내며, 상기 확인 상태에 기초하는 상기 사용자에 대한 응답은 사용자로 하여금 예 또는 아니오 대답으로 응답하도록 물어보는 컴퓨팅 장치.
- 마이크를 포함하는 컴퓨팅 장치에 의해 구현되는 방법으로서,
음성-제어 디지털 개인 비서에 의해, 사용자에 의해 생성된 디지털 음성 입력을 수신하는 단계 - 상기 디지털 음성 입력은 상기 마이크를 통해 수신됨 -,
상기 디지털 음성 입력을 사용하여 자연어 처리를 수행하여 사용자 음성 명령을 결정하는 단계 - 상기 사용자 음성 명령은 제 3 자 음성-지원 애플리케이션의 사전 정의된 기능을 수행하기 위한 요청을 포함하고, 상기 사전 정의된 기능은 음성 입력을 사용하여 이용 가능한 제 3 자 음성-지원 애플리케이션에서 지원하는 기능을 정의하는 데이터 구조를 사용하여 식별됨 -,
상기 제 3 자 음성-지원 애플리케이션이 상기 컴퓨팅 장치의 디스플레이 상에 나타나는 상기 제 3 자 음성-지원 애플리케이션의 사용자 인터페이스 없이 사전 정의된 기능을 백그라운드 프로세스로서 실행하게 하는 단계,
상기 사전 정의된 기능과 관련된 상태를 나타내는 응답을 상기 제 3 자 음성-지원 애플리케이션으로부터 수신하는 단계, 및
상기 음성-제어 디지털 개인 비서의 사용자 인터페이스에 의해, 상기 사전 정의된 기능과 관련된 상기 수신된 상태에 기초하여 상기 사용자에게 응답을 제공함으로써, 상기 응답이 상기 제 3 자 음성-지원 애플리케이션의 상기 사용자 인터페이스를 나타내지 않고 상기 음성-제어 디지털 개인 비서의 사용자 인터페이스의 컨텍스트 내에서 발생할 수 있게 하는 단계를 포함하는 방법.
- 제 9 항에 있어서,
자연어 처리를 수행하는 동안 및 상기 사용자 음성 명령의 결정 완료 전에 상기 제 3 자 음성-지원 애플리케이션의 워밍업 시퀀스를 시작하는 단계를 더 포함하는 방법.
- 제 10 항에 있어서,
상기 워밍업 시퀀스를 시작하는 단계는 상기 제 3 자 음성-지원 애플리케이션에 추론적 기능을 전송하는 단계를 포함하는 방법.
- 제 9 항에 있어서,
상기 데이터 구조는 상기 사용자로부터의 요청을 하나 이상의 제 3 자 음성-지원 애플리케이션의 사전 정의된 기능과 연관시키기 위해 사용 가능한 명령 스키마를 통해 확장 가능한 방법.
- 제 9 항에 있어서,
상기 데이터 구조는
이용 가능한 제 3 자 음성-지원 애플리케이션에 의해 지원되는 기능들에 대한 음성 명령들의 제 1 매핑, 및
상기 음성-제어 디지털 개인 비서로부터 상기 사용자에게 제공된 응답들에 대한 상기 기능들로부터 수신된 상태들의 제 2 매핑을 포함하는 방법.
- 컴퓨팅 장치로 하여금 음성-제어 디지털 개인 비서의 컨텍스트 내에서 음성-지원 애플리케이션의 작업을 완료하기 위한 동작들을 수행하게 하는 컴퓨터 실행-가능 명령어를 저장하는 컴퓨터 판독가능 저장 매체로서,
상기 동작들은
상기 음성-제어 디지털 개인 비서에 의해, 사용자에 의해 생성된 디지털 음성 입력을 수신하는 동작- 상기 디지털 음성 입력은 마이크를 통해 수신됨 -,
상기 디지털 음성 입력을 사용하여 자연어 처리를 수행하여 사용자 음성 명령을 결정하는 동작- 상기 사용자 음성 명령은 상기 음성-지원 애플리케이션의 작업을 수행하기 위한 요청을 포함하고, 상기 작업은 사용자 음성 명령을 음성-지원 애플리케이션의 작업에 매핑하는 확장 가능한 데이터 구조를 사용하여 식별됨 -,
상기 음성-지원 애플리케이션의 작업이 포어그라운드 작업인지 백그라운드 작업인지를 판정하는 동작,
상기 작업이 백그라운드 작업인 것으로 판정되면, 상기 음성-지원 애플리케이션이 상기 작업을 백그라운드 작업으로서 그리고 상기 음성-지원 애플리케이션의 사용자 인터페이스를 나타내지 않고 상기 음성-제어 디지털 개인 비서의 컨텍스트 내에서 실행되게 하는 동작,
상기 작업과 관련된 상태를 나타내는 응답을 상기 음성-지원 애플리케이션으로부터 수신하는 동작,
상기 작업과 관련된 상기 수신된 상태에 기초하여 상기 사용자에게 응답을 제공하는 동작- 상기 작업이 백그라운드 작업으로 판정되면, 상기 음성-지원 애플리케이션의 사용자 인터페이스를 나타내지 않고 상기 음성-제어 디지털 개인 비서의 컨텍스트 내에서 상기 응답이 제공됨 -을 포함하는
컴퓨터 판독가능 저장 매체.
- 제 14 항에 있어서,
상기 동작들은
자연어 처리를 수행하는 동안 및 상기 사용자 음성 명령의 결정 완료 전에, 상기 음성-지원 애플리케이션의 워밍업 시퀀스를 시작하는 동작을 더 포함하는
컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/593,584 US9959129B2 (en) | 2015-01-09 | 2015-01-09 | Headless task completion within digital personal assistants |
US14/593,584 | 2015-01-09 | ||
PCT/US2015/067759 WO2016111881A1 (en) | 2015-01-09 | 2015-12-29 | Headless task completion within digital personal assistants |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170103801A true KR20170103801A (ko) | 2017-09-13 |
KR102490776B1 KR102490776B1 (ko) | 2023-01-19 |
Family
ID=55305053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177018792A KR102490776B1 (ko) | 2015-01-09 | 2015-12-29 | 디지털 개인 비서 내에서 헤드리스로 작업을 완료하기 위한 기법 |
Country Status (18)
Country | Link |
---|---|
US (1) | US9959129B2 (ko) |
EP (2) | EP3243199B1 (ko) |
JP (1) | JP6666920B2 (ko) |
KR (1) | KR102490776B1 (ko) |
CN (1) | CN107111516B (ko) |
AU (1) | AU2015375326B2 (ko) |
BR (1) | BR112017013524B1 (ko) |
CA (2) | CA3158979C (ko) |
CL (1) | CL2017001755A1 (ko) |
CO (1) | CO2017007028A2 (ko) |
IL (1) | IL252458B (ko) |
MX (1) | MX2017008926A (ko) |
MY (1) | MY186956A (ko) |
NZ (2) | NZ770836A (ko) |
PH (1) | PH12017550012A1 (ko) |
RU (1) | RU2710984C2 (ko) |
SG (1) | SG11201705282XA (ko) |
WO (1) | WO2016111881A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200017249A (ko) * | 2018-08-08 | 2020-02-18 | 삼성전자주식회사 | 전자 장치에서 사용자 의도 확인을 위한 피드백 제공 방법 및 장치 |
Families Citing this family (194)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677377B2 (en) | 2005-09-08 | 2014-03-18 | Apple Inc. | Method and apparatus for building an intelligent automated assistant |
US9318108B2 (en) | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
US8977255B2 (en) | 2007-04-03 | 2015-03-10 | Apple Inc. | Method and system for operating a multi-function portable electronic device using voice-activation |
US8676904B2 (en) | 2008-10-02 | 2014-03-18 | Apple Inc. | Electronic devices with voice command and contextual data processing capabilities |
US10706373B2 (en) | 2011-06-03 | 2020-07-07 | Apple Inc. | Performing actions associated with task items that represent tasks to perform |
US10276170B2 (en) | 2010-01-18 | 2019-04-30 | Apple Inc. | Intelligent automated assistant |
US8682667B2 (en) | 2010-02-25 | 2014-03-25 | Apple Inc. | User profiling for selecting user specific voice input processing information |
US8688514B1 (en) | 2011-06-24 | 2014-04-01 | Google Inc. | Ad selection using image data |
US10972530B2 (en) * | 2016-12-30 | 2021-04-06 | Google Llc | Audio-based data structure generation |
US11087424B1 (en) | 2011-06-24 | 2021-08-10 | Google Llc | Image recognition-based content item selection |
US10630751B2 (en) | 2016-12-30 | 2020-04-21 | Google Llc | Sequence dependent data message consolidation in a voice activated computer network environment |
US10956485B2 (en) | 2011-08-31 | 2021-03-23 | Google Llc | Retargeting in a search environment |
US11093692B2 (en) | 2011-11-14 | 2021-08-17 | Google Llc | Extracting audiovisual features from digital components |
US10586127B1 (en) | 2011-11-14 | 2020-03-10 | Google Llc | Extracting audiovisual features from content elements on online documents |
US10417037B2 (en) | 2012-05-15 | 2019-09-17 | Apple Inc. | Systems and methods for integrating third party services with a digital assistant |
KR20240132105A (ko) | 2013-02-07 | 2024-09-02 | 애플 인크. | 디지털 어시스턴트를 위한 음성 트리거 |
US10652394B2 (en) | 2013-03-14 | 2020-05-12 | Apple Inc. | System and method for processing voicemail |
US10748529B1 (en) | 2013-03-15 | 2020-08-18 | Apple Inc. | Voice activated device for use with a voice-based digital assistant |
US11030239B2 (en) | 2013-05-31 | 2021-06-08 | Google Llc | Audio based entity-action pair based selection |
US10176167B2 (en) | 2013-06-09 | 2019-01-08 | Apple Inc. | System and method for inferring user intent from speech inputs |
KR101772152B1 (ko) | 2013-06-09 | 2017-08-28 | 애플 인크. | 디지털 어시스턴트의 둘 이상의 인스턴스들에 걸친 대화 지속성을 가능하게 하기 위한 디바이스, 방법 및 그래픽 사용자 인터페이스 |
DE112014003653B4 (de) | 2013-08-06 | 2024-04-18 | Apple Inc. | Automatisch aktivierende intelligente Antworten auf der Grundlage von Aktivitäten von entfernt angeordneten Vorrichtungen |
US9703757B2 (en) | 2013-09-30 | 2017-07-11 | Google Inc. | Automatically determining a size for a content item for a web page |
US10614153B2 (en) | 2013-09-30 | 2020-04-07 | Google Llc | Resource size-based content item selection |
US10431209B2 (en) | 2016-12-30 | 2019-10-01 | Google Llc | Feedback controller for data transmissions |
US10296160B2 (en) | 2013-12-06 | 2019-05-21 | Apple Inc. | Method for extracting salient dialog usage from live data |
US9633004B2 (en) | 2014-05-30 | 2017-04-25 | Apple Inc. | Better resolution when referencing to concepts |
US9715875B2 (en) | 2014-05-30 | 2017-07-25 | Apple Inc. | Reducing the need for manual start/end-pointing and trigger phrases |
CN110797019B (zh) | 2014-05-30 | 2023-08-29 | 苹果公司 | 多命令单一话语输入方法 |
US10170123B2 (en) | 2014-05-30 | 2019-01-01 | Apple Inc. | Intelligent assistant for home automation |
US9430463B2 (en) | 2014-05-30 | 2016-08-30 | Apple Inc. | Exemplar-based natural language processing |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US10127911B2 (en) | 2014-09-30 | 2018-11-13 | Apple Inc. | Speaker identification and unsupervised speaker adaptation techniques |
US9668121B2 (en) | 2014-09-30 | 2017-05-30 | Apple Inc. | Social reminders |
US9898170B2 (en) | 2014-12-10 | 2018-02-20 | International Business Machines Corporation | Establishing user specified interaction modes in a question answering dialogue |
US11127055B1 (en) * | 2015-02-27 | 2021-09-21 | State Farm Mutual Automobile Insurance Company | System and method for navigating an automated process using audio and tactile feedback |
US10152299B2 (en) | 2015-03-06 | 2018-12-11 | Apple Inc. | Reducing response latency of intelligent automated assistants |
US9886953B2 (en) | 2015-03-08 | 2018-02-06 | Apple Inc. | Virtual assistant activation |
US9721566B2 (en) | 2015-03-08 | 2017-08-01 | Apple Inc. | Competing devices responding to voice triggers |
US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
US10200824B2 (en) | 2015-05-27 | 2019-02-05 | Apple Inc. | Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device |
US10083688B2 (en) | 2015-05-27 | 2018-09-25 | Apple Inc. | Device voice control for selecting a displayed affordance |
US9578173B2 (en) | 2015-06-05 | 2017-02-21 | Apple Inc. | Virtual assistant aided communication with 3rd party service in a communication session |
US20160378747A1 (en) | 2015-06-29 | 2016-12-29 | Apple Inc. | Virtual assistant for media playback |
US20170046438A1 (en) | 2015-08-13 | 2017-02-16 | Quixey, Inc. | Cloud-Enabled Caching Architecture for On-Demand Native Application Crawling |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10671428B2 (en) | 2015-09-08 | 2020-06-02 | Apple Inc. | Distributed personal assistant |
US10331312B2 (en) | 2015-09-08 | 2019-06-25 | Apple Inc. | Intelligent automated assistant in a media environment |
US10740384B2 (en) | 2015-09-08 | 2020-08-11 | Apple Inc. | Intelligent automated assistant for media search and playback |
US11587559B2 (en) | 2015-09-30 | 2023-02-21 | Apple Inc. | Intelligent device identification |
US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
US10956666B2 (en) | 2015-11-09 | 2021-03-23 | Apple Inc. | Unconventional virtual assistant interactions |
KR20170072652A (ko) * | 2015-12-17 | 2017-06-27 | 삼성전자주식회사 | 디스플레이 장치 및 디스플레이 방법 |
US10079021B1 (en) * | 2015-12-18 | 2018-09-18 | Amazon Technologies, Inc. | Low latency audio interface |
US10223066B2 (en) | 2015-12-23 | 2019-03-05 | Apple Inc. | Proactive assistance based on dialog communication between devices |
US10120954B2 (en) | 2015-12-31 | 2018-11-06 | Samsung Electronics Co., Ltd. | Transformation and presentation of on-demand native application crawling results |
US10229677B2 (en) * | 2016-04-19 | 2019-03-12 | International Business Machines Corporation | Smart launching mobile applications with preferred user interface (UI) languages |
US10783178B2 (en) | 2016-05-17 | 2020-09-22 | Google Llc | Generating a personal database entry for a user based on natural language user interface input of the user and generating output based on the entry in response to further natural language user interface input of the user |
US11227589B2 (en) | 2016-06-06 | 2022-01-18 | Apple Inc. | Intelligent list reading |
US10586535B2 (en) | 2016-06-10 | 2020-03-10 | Apple Inc. | Intelligent digital assistant in a multi-tasking environment |
DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
DK179415B1 (en) | 2016-06-11 | 2018-06-14 | Apple Inc | Intelligent device arbitration and control |
US11093834B2 (en) * | 2016-07-06 | 2021-08-17 | Palo Alto Research Center Incorporated | Computer-implemented system and method for predicting activity outcome based on user attention |
US10474753B2 (en) | 2016-09-07 | 2019-11-12 | Apple Inc. | Language identification using recurrent neural networks |
US10395652B2 (en) | 2016-09-20 | 2019-08-27 | Allstate Insurance Company | Personal information assistant computing system |
US11204787B2 (en) * | 2017-01-09 | 2021-12-21 | Apple Inc. | Application integration with a digital assistant |
US11010601B2 (en) | 2017-02-14 | 2021-05-18 | Microsoft Technology Licensing, Llc | Intelligent assistant device communicating non-verbal cues |
US10467510B2 (en) | 2017-02-14 | 2019-11-05 | Microsoft Technology Licensing, Llc | Intelligent assistant |
US11100384B2 (en) | 2017-02-14 | 2021-08-24 | Microsoft Technology Licensing, Llc | Intelligent device user interactions |
US10574825B2 (en) * | 2017-02-15 | 2020-02-25 | Microsoft Technology Licensing, Llc | Assisted-communication with intelligent personal assistant |
US11323665B2 (en) * | 2017-03-31 | 2022-05-03 | Ecolink Intelligent Technology, Inc. | Method and apparatus for interaction with an intelligent personal assistant |
KR102339819B1 (ko) * | 2017-04-05 | 2021-12-15 | 삼성전자주식회사 | 프레임워크를 이용한 자연어 표현 생성 방법 및 장치 |
US10726056B2 (en) * | 2017-04-10 | 2020-07-28 | Sap Se | Speech-based database access |
US11170768B2 (en) * | 2017-04-17 | 2021-11-09 | Samsung Electronics Co., Ltd | Device for performing task corresponding to user utterance |
KR102414122B1 (ko) * | 2017-04-19 | 2022-06-29 | 삼성전자주식회사 | 사용자 발화를 처리하는 전자 장치 및 그 동작 방법 |
US20180316634A1 (en) * | 2017-04-26 | 2018-11-01 | Microsoft Technology Licensing, Llc | Extending application functionality via conversational interfaces |
KR102298947B1 (ko) * | 2017-04-28 | 2021-09-08 | 삼성전자주식회사 | 음성 데이터 처리 방법 및 이를 지원하는 전자 장치 |
KR102380717B1 (ko) * | 2017-04-30 | 2022-03-31 | 삼성전자주식회사 | 사용자 발화를 처리하는 전자 장치 및 이 전자 장치의 제어 방법 |
DK201770383A1 (en) | 2017-05-09 | 2018-12-14 | Apple Inc. | USER INTERFACE FOR CORRECTING RECOGNITION ERRORS |
DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
US10395654B2 (en) | 2017-05-11 | 2019-08-27 | Apple Inc. | Text normalization based on a data-driven learning network |
US10726832B2 (en) | 2017-05-11 | 2020-07-28 | Apple Inc. | Maintaining privacy of personal information |
US11301477B2 (en) | 2017-05-12 | 2022-04-12 | Apple Inc. | Feedback analysis of a digital assistant |
DK201770428A1 (en) | 2017-05-12 | 2019-02-18 | Apple Inc. | LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT |
DK179745B1 (en) | 2017-05-12 | 2019-05-01 | Apple Inc. | SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT |
DK179496B1 (en) | 2017-05-12 | 2019-01-15 | Apple Inc. | USER-SPECIFIC Acoustic Models |
US10127227B1 (en) | 2017-05-15 | 2018-11-13 | Google Llc | Providing access to user-controlled resources by automated assistants |
DK201770411A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | MULTI-MODAL INTERFACES |
US11436417B2 (en) | 2017-05-15 | 2022-09-06 | Google Llc | Providing access to user-controlled resources by automated assistants |
US20180336275A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Intelligent automated assistant for media exploration |
US20180336892A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Detecting a trigger of a digital assistant |
US10311144B2 (en) | 2017-05-16 | 2019-06-04 | Apple Inc. | Emoji word sense disambiguation |
DK179549B1 (en) | 2017-05-16 | 2019-02-12 | Apple Inc. | FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES |
US11048995B2 (en) * | 2017-05-16 | 2021-06-29 | Google Llc | Delayed responses by computational assistant |
US10679192B2 (en) | 2017-05-25 | 2020-06-09 | Microsoft Technology Licensing, Llc | Assigning tasks and monitoring task performance based on context extracted from a shared contextual graph |
US10769138B2 (en) | 2017-06-13 | 2020-09-08 | International Business Machines Corporation | Processing context-based inquiries for knowledge retrieval |
KR102365649B1 (ko) | 2017-06-28 | 2022-02-22 | 삼성전자주식회사 | 화면 제어 방법 및 이를 지원하는 전자 장치 |
US10449440B2 (en) * | 2017-06-30 | 2019-10-22 | Electronic Arts Inc. | Interactive voice-controlled companion application for a video game |
US10366691B2 (en) * | 2017-07-11 | 2019-07-30 | Samsung Electronics Co., Ltd. | System and method for voice command context |
US11004444B2 (en) * | 2017-09-08 | 2021-05-11 | Amazon Technologies, Inc. | Systems and methods for enhancing user experience by communicating transient errors |
US10621317B1 (en) | 2017-09-14 | 2020-04-14 | Electronic Arts Inc. | Audio-based device authentication system |
US10423873B2 (en) * | 2017-12-01 | 2019-09-24 | International Business Machines Corporation | Information flow analysis for conversational agents |
US11113026B2 (en) * | 2017-12-08 | 2021-09-07 | Toonimo, Inc. | System and method for voice-directed website walk-through |
US10629192B1 (en) | 2018-01-09 | 2020-04-21 | Electronic Arts Inc. | Intelligent personalized speech recognition |
US20190213528A1 (en) * | 2018-01-10 | 2019-07-11 | Microsoft Technology Licensing, Llc | Digital assistant task management |
US11422848B2 (en) * | 2018-01-12 | 2022-08-23 | Google Llc | Systems, methods, and apparatuses for processing routine interruption requests |
US10643632B2 (en) * | 2018-01-12 | 2020-05-05 | Wells Fargo Bank, N.A. | Automated voice assistant personality selector |
US20210064640A1 (en) * | 2018-01-17 | 2021-03-04 | Sony Corporation | Information processing apparatus and information processing method |
US10592604B2 (en) | 2018-03-12 | 2020-03-17 | Apple Inc. | Inverse text normalization for automatic speech recognition |
KR102617265B1 (ko) * | 2018-03-13 | 2023-12-26 | 삼성전자주식회사 | 사용자 음성 입력을 처리하는 장치 |
CN108521500A (zh) * | 2018-03-13 | 2018-09-11 | 努比亚技术有限公司 | 一种语音场景控制方法、设备及计算机可读存储介质 |
US10818288B2 (en) | 2018-03-26 | 2020-10-27 | Apple Inc. | Natural assistant interaction |
CN110321201A (zh) * | 2018-03-29 | 2019-10-11 | 努比亚技术有限公司 | 一种后台程序处理方法、终端及计算机可读存储介质 |
BR102019007123A2 (pt) * | 2018-04-16 | 2019-10-29 | Panasonic Avionics Corp | assistentes digitais e métodos associados para um veículo de transporte |
US11715042B1 (en) | 2018-04-20 | 2023-08-01 | Meta Platforms Technologies, Llc | Interpretability of deep reinforcement learning models in assistant systems |
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 |
US11676220B2 (en) | 2018-04-20 | 2023-06-13 | Meta Platforms, Inc. | Processing multimodal user input for assistant systems |
US11307880B2 (en) | 2018-04-20 | 2022-04-19 | Meta Platforms, Inc. | Assisting users with personalized and contextual communication content |
US10824432B2 (en) * | 2018-04-30 | 2020-11-03 | Servicenow, Inc. | Systems and methods for providing multiple console sessions that enable line-by-line execution of scripts on a server application |
US10928918B2 (en) | 2018-05-07 | 2021-02-23 | Apple Inc. | Raise to speak |
CN118605832A (zh) * | 2018-05-07 | 2024-09-06 | 谷歌有限责任公司 | 提供用于控制连接设备的复合图形助理界面的方法和系统 |
US11145294B2 (en) | 2018-05-07 | 2021-10-12 | Apple Inc. | Intelligent automated assistant for delivering content from user experiences |
EP3610375B1 (en) * | 2018-05-07 | 2024-04-10 | Google LLC | Platform selection for performing requested actions in audio-based computing environments |
CN110710158B (zh) * | 2018-05-07 | 2022-08-09 | 谷歌有限责任公司 | 验证与数字助理应用交接的代理的操作状态 |
US11087761B2 (en) | 2018-05-07 | 2021-08-10 | Google Llc | Platform selection for performing requested actions in audio-based computing environments |
US11487501B2 (en) | 2018-05-16 | 2022-11-01 | Snap Inc. | Device control using audio data |
KR20190136832A (ko) | 2018-05-31 | 2019-12-10 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 음성 명령을 프린팅 서비스를 지원하는 텍스트 코드 블록들로 변환 |
DK201870355A1 (en) * | 2018-06-01 | 2019-12-16 | Apple Inc. | VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS |
DK180639B1 (en) | 2018-06-01 | 2021-11-04 | Apple Inc | DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT |
US10892996B2 (en) | 2018-06-01 | 2021-01-12 | Apple Inc. | Variable latency device coordination |
DK179822B1 (da) | 2018-06-01 | 2019-07-12 | Apple Inc. | Voice interaction at a primary device to access call functionality of a companion device |
US11076039B2 (en) | 2018-06-03 | 2021-07-27 | Apple Inc. | Accelerated task performance |
AU2019100576C4 (en) * | 2018-06-03 | 2020-01-30 | Apple Inc. | Accelerated task performance |
DK201870357A1 (en) * | 2018-06-03 | 2019-12-20 | Apple Inc. | ACCELERATED TASK PERFORMANCE |
EP3682345B1 (en) | 2018-08-07 | 2021-11-24 | Google LLC | Assembling and evaluating automated assistant responses for privacy concerns |
US11217244B2 (en) | 2018-08-07 | 2022-01-04 | Samsung Electronics Co., Ltd. | System for processing user voice utterance and method for operating same |
US11010561B2 (en) | 2018-09-27 | 2021-05-18 | Apple Inc. | Sentiment prediction from textual data |
US11170166B2 (en) | 2018-09-28 | 2021-11-09 | Apple Inc. | Neural typographical error modeling via generative adversarial networks |
US10839159B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Named entity normalization in a spoken dialog system |
US11462215B2 (en) | 2018-09-28 | 2022-10-04 | Apple Inc. | Multi-modal inputs for voice commands |
US11205422B2 (en) | 2018-10-02 | 2021-12-21 | International Business Machines Corporation | Methods and systems for managing chatbots with data access |
US11475898B2 (en) | 2018-10-26 | 2022-10-18 | Apple Inc. | Low-latency multi-speaker speech recognition |
KR102435433B1 (ko) * | 2018-11-21 | 2022-08-24 | 구글 엘엘씨 | 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합 |
KR102701868B1 (ko) * | 2018-12-03 | 2024-09-03 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 제어 방법 |
US10878805B2 (en) * | 2018-12-06 | 2020-12-29 | Microsoft Technology Licensing, Llc | Expediting interaction with a digital assistant by predicting user responses |
KR20210110650A (ko) * | 2018-12-28 | 2021-09-08 | 구글 엘엘씨 | 선택된 제안에 따라 자동 어시스턴트에 음성 입력 보충하기 |
US11638059B2 (en) | 2019-01-04 | 2023-04-25 | Apple Inc. | Content playback on multiple devices |
US11380214B2 (en) * | 2019-02-19 | 2022-07-05 | International Business Machines Corporation | Memory retention enhancement for electronic text |
WO2020171809A1 (en) * | 2019-02-20 | 2020-08-27 | Google Llc | Utilizing pre-event and post-event input streams to engage an automated assistant |
JP7280066B2 (ja) * | 2019-03-07 | 2023-05-23 | 本田技研工業株式会社 | エージェント装置、エージェント装置の制御方法、およびプログラム |
US11348573B2 (en) | 2019-03-18 | 2022-05-31 | Apple Inc. | Multimodality in digital assistant systems |
US11307752B2 (en) | 2019-05-06 | 2022-04-19 | Apple Inc. | User configurable task triggers |
DK201970509A1 (en) | 2019-05-06 | 2021-01-15 | Apple Inc | Spoken notifications |
CN112262370A (zh) * | 2019-05-06 | 2021-01-22 | 谷歌有限责任公司 | 响应于语音命令在应用上渲染视觉组件 |
US11475884B2 (en) | 2019-05-06 | 2022-10-18 | Apple Inc. | Reducing digital assistant latency when a language is incorrectly determined |
US11423908B2 (en) | 2019-05-06 | 2022-08-23 | Apple Inc. | Interpreting spoken requests |
US11140099B2 (en) | 2019-05-21 | 2021-10-05 | Apple Inc. | Providing message response suggestions |
EP3977380A1 (en) * | 2019-05-28 | 2022-04-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Network nodes and methods performed therein for handling messages |
DK180129B1 (en) | 2019-05-31 | 2020-06-02 | Apple Inc. | USER ACTIVITY SHORTCUT SUGGESTIONS |
US11289073B2 (en) | 2019-05-31 | 2022-03-29 | Apple Inc. | Device text to speech |
US11496600B2 (en) | 2019-05-31 | 2022-11-08 | Apple Inc. | Remote execution of machine-learned models |
DK201970511A1 (en) | 2019-05-31 | 2021-02-15 | Apple Inc | Voice identification in digital assistant systems |
US11360641B2 (en) | 2019-06-01 | 2022-06-14 | Apple Inc. | Increasing the relevance of new available information |
US11227599B2 (en) | 2019-06-01 | 2022-01-18 | Apple Inc. | Methods and user interfaces for voice-based control of electronic devices |
US20200388280A1 (en) * | 2019-06-05 | 2020-12-10 | Google Llc | Action validation for digital assistant-based applications |
EP4270172A3 (en) * | 2019-06-05 | 2024-01-10 | Google LLC | Action validation for digital assistant-based applications |
US10926173B2 (en) | 2019-06-10 | 2021-02-23 | Electronic Arts Inc. | Custom voice control of video game character |
US10901689B1 (en) * | 2019-07-11 | 2021-01-26 | International Business Machines Corporation | Dynamic augmented reality interface creation |
EP4002087A4 (en) * | 2019-07-19 | 2023-04-12 | LG Electronics Inc. | DISPLAY DEVICE AND ARTIFICIAL INTELLIGENCE SERVER CAPABLE OF CONTROLLING A HOME APPLIANCE VIA A USER'S VOICE |
EP3970000A1 (en) | 2019-07-19 | 2022-03-23 | Google LLC | Condensed spoken utterances for automated assistant control of an intricate application gui |
WO2021056255A1 (en) | 2019-09-25 | 2021-04-01 | Apple Inc. | Text detection using global geometry estimators |
US11308284B2 (en) | 2019-10-18 | 2022-04-19 | Facebook Technologies, Llc. | Smart cameras enabled by assistant systems |
US11567788B1 (en) | 2019-10-18 | 2023-01-31 | Meta Platforms, Inc. | Generating proactive reminders for assistant systems |
US11574634B2 (en) * | 2019-11-27 | 2023-02-07 | Google Llc | Interfacing with applications via dynamically updating natural language processing |
KR20220062360A (ko) * | 2019-11-27 | 2022-05-16 | 구글 엘엘씨 | 동적으로 업데이트되는 자연어 처리를 통한 애플리케이션과의 인터페이스 |
CN111261156A (zh) * | 2019-12-30 | 2020-06-09 | 北京梧桐车联科技有限责任公司 | 语音采集方法、装置及计算机可读存储介质 |
US11907298B2 (en) * | 2020-02-04 | 2024-02-20 | Intuition Robotics, Ltd. | System and method thereof for automatically updating a decision-making model of an electronic social agent by actively collecting at least a user response |
US11782986B2 (en) | 2020-03-27 | 2023-10-10 | Trushant Mehta | Interactive query based network communication through a media device |
US11061543B1 (en) | 2020-05-11 | 2021-07-13 | Apple Inc. | Providing relevant data items based on context |
US11038934B1 (en) | 2020-05-11 | 2021-06-15 | Apple Inc. | Digital assistant hardware abstraction |
US11755276B2 (en) | 2020-05-12 | 2023-09-12 | Apple Inc. | Reducing description length based on confidence |
US11556707B2 (en) | 2020-06-18 | 2023-01-17 | Google Llc | Fulfillment of actionable requests ahead of a user selecting a particular autocomplete suggestion for completing a current user input |
US11490204B2 (en) | 2020-07-20 | 2022-11-01 | Apple Inc. | Multi-device audio adjustment coordination |
US11438683B2 (en) | 2020-07-21 | 2022-09-06 | Apple Inc. | User identification using headphones |
US11587568B2 (en) * | 2020-12-08 | 2023-02-21 | Google Llc | Streaming action fulfillment based on partial hypotheses |
CN112698872A (zh) * | 2020-12-21 | 2021-04-23 | 北京百度网讯科技有限公司 | 语音数据处理的方法、装置、设备及存储介质 |
US11947783B2 (en) * | 2021-01-25 | 2024-04-02 | Google Llc | Undoing application operation(s) via user interaction(s) with an automated assistant |
US11978449B2 (en) | 2021-03-02 | 2024-05-07 | Samsung Electronics Co., Ltd. | Electronic device for processing user utterance and operation method therefor |
US20220293128A1 (en) * | 2021-03-10 | 2022-09-15 | Comcast Cable Communications, Llc | Systems and methods for improved speech and command detection |
US20220366338A1 (en) * | 2021-05-13 | 2022-11-17 | At&T Intellectual Property I, L.P. | Contextual presentation of multiple steps in performing a task |
US20220366905A1 (en) * | 2021-05-17 | 2022-11-17 | Google Llc | Enabling natural conversations for an automated assistant |
US12021806B1 (en) | 2021-09-21 | 2024-06-25 | Apple Inc. | Intelligent message delivery |
US20230297484A1 (en) * | 2022-03-17 | 2023-09-21 | International Business Machines Corporation | Predicting target applications |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595642B1 (en) * | 2007-10-04 | 2013-11-26 | Great Northern Research, LLC | Multiple shell multi faceted graphical user interface |
US20130345980A1 (en) * | 2012-06-05 | 2013-12-26 | Apple Inc. | Providing navigation instructions while operating navigation application in background |
KR20140114519A (ko) * | 2013-03-15 | 2014-09-29 | 주식회사 팬택 | 음성 명령에 의한 오브젝트 실행 장치 및 방법 |
US20140365227A1 (en) * | 2013-06-08 | 2014-12-11 | Apple Inc. | Interpreting and acting upon commands that involve sharing information with remote devices |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3725566B2 (ja) * | 1992-12-28 | 2005-12-14 | 株式会社東芝 | 音声認識インターフェース |
US6791529B2 (en) * | 2001-12-13 | 2004-09-14 | Koninklijke Philips Electronics N.V. | UI with graphics-assisted voice control system |
US7003464B2 (en) * | 2003-01-09 | 2006-02-21 | Motorola, Inc. | Dialog recognition and control in a voice browser |
DE102005016853A1 (de) * | 2005-04-12 | 2006-10-19 | Siemens Ag | Verfahren zur Kontrolle von sprachgesteuerten Applikationen und zugehöriges Kontrollsystem |
US9064010B2 (en) * | 2006-12-13 | 2015-06-23 | Quickplay Media Inc. | Encoding and transcoding for mobile media |
US20130176328A1 (en) * | 2009-12-25 | 2013-07-11 | Nokia Corporation | Method and apparatus for persistent display of navigation content |
US10631246B2 (en) | 2011-02-14 | 2020-04-21 | Microsoft Technology Licensing, Llc | Task switching on mobile devices |
US9063629B2 (en) * | 2011-10-31 | 2015-06-23 | Nokia Technologies Oy | Responding to a received message in a locked user interaction mode |
CN102510426A (zh) | 2011-11-29 | 2012-06-20 | 安徽科大讯飞信息科技股份有限公司 | 个人助理应用访问方法及系统 |
CN103593230B (zh) | 2012-08-13 | 2017-05-10 | 百度在线网络技术(北京)有限公司 | 移动终端的后台任务控制方法及移动终端 |
US10276157B2 (en) * | 2012-10-01 | 2019-04-30 | Nuance Communications, Inc. | Systems and methods for providing a voice agent user interface |
US9384732B2 (en) | 2013-03-14 | 2016-07-05 | Microsoft Technology Licensing, Llc | Voice command definitions used in launching application with a command |
US9658740B2 (en) * | 2013-03-15 | 2017-05-23 | Apple Inc. | Device, method, and graphical user interface for managing concurrently open software applications |
US9386152B2 (en) * | 2013-03-15 | 2016-07-05 | Genesys Telecommunications Laboratories, Inc. | Intelligent automated agent and interactive voice response for a contact center |
CN103257787B (zh) | 2013-05-16 | 2016-07-13 | 小米科技有限责任公司 | 一种语音助手应用的开启方法和装置 |
US9749209B2 (en) * | 2013-11-01 | 2017-08-29 | The Nielsen Company (Us), Llc | Methods and apparatus to credit background applications |
US9741343B1 (en) * | 2013-12-19 | 2017-08-22 | Amazon Technologies, Inc. | Voice interaction application selection |
-
2015
- 2015-01-09 US US14/593,584 patent/US9959129B2/en active Active
- 2015-12-29 NZ NZ770836A patent/NZ770836A/en unknown
- 2015-12-29 JP JP2017536242A patent/JP6666920B2/ja active Active
- 2015-12-29 EP EP15832720.5A patent/EP3243199B1/en active Active
- 2015-12-29 RU RU2017124103A patent/RU2710984C2/ru active
- 2015-12-29 WO PCT/US2015/067759 patent/WO2016111881A1/en active Application Filing
- 2015-12-29 CA CA3158979A patent/CA3158979C/en active Active
- 2015-12-29 EP EP19181002.7A patent/EP3584787B1/en active Active
- 2015-12-29 KR KR1020177018792A patent/KR102490776B1/ko active IP Right Grant
- 2015-12-29 BR BR112017013524-8A patent/BR112017013524B1/pt active IP Right Grant
- 2015-12-29 SG SG11201705282XA patent/SG11201705282XA/en unknown
- 2015-12-29 MX MX2017008926A patent/MX2017008926A/es unknown
- 2015-12-29 AU AU2015375326A patent/AU2015375326B2/en active Active
- 2015-12-29 NZ NZ732357A patent/NZ732357A/en unknown
- 2015-12-29 CN CN201580072926.4A patent/CN107111516B/zh active Active
- 2015-12-29 CA CA2970725A patent/CA2970725C/en active Active
- 2015-12-29 MY MYPI2017702491A patent/MY186956A/en unknown
-
2017
- 2017-05-23 IL IL25245817A patent/IL252458B/en active IP Right Grant
- 2017-05-24 PH PH12017550012A patent/PH12017550012A1/en unknown
- 2017-07-03 CL CL2017001755A patent/CL2017001755A1/es unknown
- 2017-07-13 CO CONC2017/0007028A patent/CO2017007028A2/es unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595642B1 (en) * | 2007-10-04 | 2013-11-26 | Great Northern Research, LLC | Multiple shell multi faceted graphical user interface |
US20130345980A1 (en) * | 2012-06-05 | 2013-12-26 | Apple Inc. | Providing navigation instructions while operating navigation application in background |
KR20140114519A (ko) * | 2013-03-15 | 2014-09-29 | 주식회사 팬택 | 음성 명령에 의한 오브젝트 실행 장치 및 방법 |
US20140365227A1 (en) * | 2013-06-08 | 2014-12-11 | Apple Inc. | Interpreting and acting upon commands that involve sharing information with remote devices |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200017249A (ko) * | 2018-08-08 | 2020-02-18 | 삼성전자주식회사 | 전자 장치에서 사용자 의도 확인을 위한 피드백 제공 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
BR112017013524B1 (pt) | 2023-03-07 |
PH12017550012A1 (en) | 2017-10-18 |
EP3584787A1 (en) | 2019-12-25 |
IL252458A0 (en) | 2017-07-31 |
JP2018511095A (ja) | 2018-04-19 |
CA2970725A1 (en) | 2016-07-14 |
US20160203002A1 (en) | 2016-07-14 |
CO2017007028A2 (es) | 2017-09-29 |
MX2017008926A (es) | 2017-10-11 |
CN107111516B (zh) | 2021-07-30 |
BR112017013524A2 (pt) | 2018-01-02 |
US9959129B2 (en) | 2018-05-01 |
MY186956A (en) | 2021-08-26 |
EP3584787B1 (en) | 2022-02-23 |
AU2015375326A1 (en) | 2017-06-15 |
CN107111516A (zh) | 2017-08-29 |
IL252458B (en) | 2019-11-28 |
RU2710984C2 (ru) | 2020-01-14 |
NZ732357A (en) | 2022-10-28 |
NZ770836A (en) | 2022-10-28 |
RU2017124103A3 (ko) | 2019-07-17 |
CA3158979A1 (en) | 2016-07-14 |
EP3243199B1 (en) | 2019-06-19 |
WO2016111881A1 (en) | 2016-07-14 |
CL2017001755A1 (es) | 2018-02-16 |
EP3243199A1 (en) | 2017-11-15 |
SG11201705282XA (en) | 2017-07-28 |
CA3158979C (en) | 2024-06-04 |
KR102490776B1 (ko) | 2023-01-19 |
RU2017124103A (ru) | 2019-01-09 |
JP6666920B2 (ja) | 2020-03-18 |
AU2015375326B2 (en) | 2020-08-27 |
CA2970725C (en) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102490776B1 (ko) | 디지털 개인 비서 내에서 헤드리스로 작업을 완료하기 위한 기법 | |
JP6744314B2 (ja) | クラウドソーシングに基づいてデジタルパーソナルアシスタントのための言語理解分類子モデルを更新すること | |
EP3241213B1 (en) | Discovering capabilities of third-party voice-enabled resources | |
US10860289B2 (en) | Flexible voice-based information retrieval system for virtual assistant | |
US20110184730A1 (en) | Multi-dimensional disambiguation of voice commands | |
DK201670562A1 (en) | Application integration with a digital assistant | |
US20200051560A1 (en) | System for processing user voice utterance and method for operating same | |
JP2019175453A (ja) | ユーザ音声入力の処理を含むシステム及びその動作方法並びに電子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |