KR20210002715A - 오디오 쿼리들의 오버랩핑 프로세싱의 조정 - Google Patents

오디오 쿼리들의 오버랩핑 프로세싱의 조정 Download PDF

Info

Publication number
KR20210002715A
KR20210002715A KR1020207034786A KR20207034786A KR20210002715A KR 20210002715 A KR20210002715 A KR 20210002715A KR 1020207034786 A KR1020207034786 A KR 1020207034786A KR 20207034786 A KR20207034786 A KR 20207034786A KR 20210002715 A KR20210002715 A KR 20210002715A
Authority
KR
South Korea
Prior art keywords
digital assistant
response
component
data processing
processing system
Prior art date
Application number
KR1020207034786A
Other languages
English (en)
Other versions
KR102506361B1 (ko
Inventor
보 왕
스미타 라이
맥스 올레도르프
수바이아 벤카타
차드 요시카와
압히나브 타네자
아미트 아가왈
크리스 람스달
크리스 투르크스트라
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Priority to KR1020237007207A priority Critical patent/KR102624149B1/ko
Publication of KR20210002715A publication Critical patent/KR20210002715A/ko
Application granted granted Critical
Publication of KR102506361B1 publication Critical patent/KR102506361B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/632Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/632Query formulation
    • G06F16/634Query by example, e.g. query by humming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/638Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Acoustics & Sound (AREA)
  • Information Transfer Between Computers (AREA)
  • Environmental & Geological Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stereo-Broadcasting Methods (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Stereophonic System (AREA)

Abstract

오디오 쿼리들의 프로세싱을 조정하는 것이 제공된다. 시스템이 쿼리를 수신한다. 시스템이 쿼리를 프로세싱을 위해 제 1 디지털 어시스턴트 컴포넌트 및 제 2 디지털 어시스턴트 컴포넌트에 제공한다. 시스템이 제 1 디지털 어시스턴트 컴포넌트로부터 쿼리에 대한 제 1 응답을 수신하고, 제 2 디지털 어시스턴트 컴포넌트로부터 쿼리에 대한 제 2 응답을 수신한다. 제 1 디지털 어시스턴트 컴포넌트는 제 2 디지털 어시스턴트 컴포넌트가 액세스하는 것이 금지된 데이터베이스에 액세스할 권한을 부여받을 수 있다. 시스템은, 순위 결정 기능에 근거하여, 제 2 디지털 어시스턴트 컴포넌트로부터 쿼리에 대한 제 2 응답을 선택할 것을 결정한다. 시스템은, 선택에 응답하여, 제 2 디지털 어시스턴트로부터의 제 2 응답을 컴퓨팅 디바이스에 제공한다.

Description

오디오 쿼리들의 오버랩핑 프로세싱의 조정
본 출원은 미국 가특허 출원 번호 제62/666,681호(출원일: 2018년 5월 3일; 발명의 명칭: "COORDINATION OF OVERLAPPING PROCESSING OF AUDIO QUERIES")에 대해 35 U.S.C. §119 하에서 우선권의 혜택을 주장하며, 이러한 문헌은 그 전체가 참조로 본 명세서에 통합된다.
컴퓨팅 디바이스(computing device)들 간의 네트워크 트래픽 데이터(network traffic data)의 (패킷-기반(packet-based) 혹은 다른 것에 기반하는) 과도한 네트워크 전송(network transmission)들은, 컴퓨팅 디바이스가 네트워크 트래픽 데이터를 적절하게 프로세싱(processing)하는 것을 방해할 수 있거나, 또는 네트워크 트래픽 데이터와 관련된 동작을 완료하는 것을 방해할 수 있거나, 또는 네트워크 트래픽 데이터에 적시에(timely)에 응답하는 것을 방해할 수 있다. 네트워크 트래픽 데이터의 과도한 네트워크 전송들은 또한, 만약 응답하는 컴퓨팅 디바이스가 자신의 프로세싱 능력(processing capacity)에 있거나 혹은 그 위에 있다면, 데이터 라우팅(data routing)을 복잡하게 할 수 있거나, 또는 응답의 품질을 저하(degrade)시킬 수 있는데, 이것은 결과적으로 비효율적인 대역폭 이용(inefficient bandwidth utilization)을 초래할 수 있다. 과도한 네트워크 전송들의 일부는 유효한 요청들이 아닌 요청들에 대한 전송들을 포함할 수 있다.
적어도 하나의 실시형태는 오디오 쿼리(audio query)들의 오버랩핑 프로세싱(overlapping processing)을 조정(coordinate)하기 위한 시스템에 관한 것이다. 시스템은 데이터 프로세싱 시스템을 포함할 수 있다. 데이터 프로세싱 시스템은 적어도 하나의 프로세서 및 메모리를 포함할 수 있다. 데이터 프로세싱 시스템은, 인터페이스(interface)를 통해, 컴퓨팅 디바이스(computing device)의 센서(sensor)에 의해 검출된 오디오 신호(audio signal)를 포함하는 하나 이상의 데이터 패킷(data packet)들을 수신할 수 있다. 데이터 프로세싱 시스템은, 하나 이상의 데이터 패킷들을 통해 수신된 오디오 신호에 근거하여 쿼리를 발생시킬 수 있다. 데이터 프로세싱 시스템은, 쿼리를 복수의 디지털 어시스턴트 컴포넌트(digital assistant component)들로 전송할 수 있다. 데이터 프로세싱 시스템은, 복수의 디지털 어시스턴트 컴포넌트들 중 제 1 디지털 어시스턴트 컴포넌트로부터 쿼리에 대한 제 1 응답을 수신할 수 있다. 데이터 프로세싱 시스템은, 복수의 디지털 어시스턴트 컴포넌트들 중 제 2 디지털 어시스턴트 컴포넌트로부터 쿼리에 대한 제 2 응답을 수신할 수 있다. 제 1 디지털 어시스턴트 컴포넌트는 제 2 디지털 어시스턴트 컴포넌트가 액세스(accessing)하는 것이 금지된 데이터베이스(database)에 액세스할 권한을 부여받을 수 있다. 데이터 프로세싱 시스템은, 순위 결정 기능(ranking decision function)에 근거하여, 제 1 디지털 어시스턴트 컴포넌트로부터의 제 1 응답 대신 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 선택할 것을 결정할 수 있다. 데이터 프로세싱 시스템은, 선택에 응답하여, 제 2 디지털 어시스턴트 컴포넌트로부터의 제 2 응답을 컴퓨팅 디바이스에 제공할 수 있다.
선택에 따라서는, 데이터 프로세싱 시스템은, 제 2 디지털 어시스턴트 컴포넌트에 대해 확립된 미리-구성된 선호도(pre-configured preference)에 근거하여 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 선택하도록 구성될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은 제 2 디지털 어시스턴트 컴포넌트로부터의 제 2 응답에 대한 신뢰도 점수(confidence score)에 근거하여 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 선택하도록 구성될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은, 제 1 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트(preferred digital assistant)라고 결정하도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 1 디지털 어시스턴트 컴포넌트로부터의 제 1 응답이 폴백 응답(fallback response)으로서 플래그(flag)되어 있는 것을 결정하도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 1 디지털 어시스턴트 컴포넌트로부터의 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정함에 응답하여, 제 1 디지털 어시스턴트 컴포넌트를 오버라이드(override)하도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 선택하도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 1 디지털 어시스턴트 컴포넌트를 선호되는 디지털 어시스턴트로서 유지하도록 구성될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은, 쿼리에 대한 신호를 결정하는 것과; 그리고 신호에 근거하여 복수의 순위 결정 기능들로부터 순위 결정 기능을 선택하는 것을 수행하도록 구성될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은, 쿼리에 대한 신호를 결정하는 것과; 그리고 신호에 근거하여 제 2 디지털 어시스턴트 컴포넌트로부터 응답들을 선택하는 것을 수행하도록 구성될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은, 순위 결정 기능에 근거하여, 제 1 응답이 오디오만 있는 응답(audio-only response)인 것을 근거로 제 2 응답을 선택하도록 구성될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은, 순위 결정 기능에 근거하여, 제 2 디지털 어시스턴트 컴포넌트가 컴퓨팅 디바이스의 메모리 내에 저장된 데이터에 액세스하는 것을 근거로 제 2 응답을 선택하도록 구성될 수 있다. 선택에 따라서는, 제 1 응답은 캘린더 정보(calendar information) 또는 미디어 콘텐츠(media content) 중 하나를 포함할 수 있다. 선택에 따라서는, 제 1 디지털 어시스턴트 컴포넌트는 제 1 응답을 발생시키기 위해 제 2 디지털 어시스턴트 컴포넌트와는 독립적으로 실행되도록 구성될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은, 복수의 디지털 어시스턴트들로 하여금 쿼리를 오버랩핑 방식으로 프로세싱하도록 하기 위해서 독립적인 브랜치(independent branch)를 통해 복수의 디지털 어시스턴트들 각각으로 쿼리를 전송하도록 구성될 수 있다. 선택에 따라서는, 제 1 디지털 어시스턴트 컴포넌트는 제 2 디지털 어시스턴트 컴포넌트와는 다른 관리자(administrator)에 의해 확립될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은, 오디오를 텍스트(text)로 변환하도록 되어 있는 스트리밍 음성 서버(streaming speech server)를 통해 컴퓨팅 디바이스로부터 하나 이상의 데이터 패킷들을 수신하도록 구성될 수 있다. 선택에 따라서는, 데이터 프로세싱 시스템은, 제 1 디지털 어시스턴트 컴포넌트로부터의 제 1 응답 이전에 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 수신하도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트 컴포넌트가 아니라고 결정하도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정하도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트가 아니고 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정함에 응답하여, 제 1 디지털 어시스턴트 컴포넌트로부터 제 1 응답을 기다리도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 1 디지털 어시스턴트 컴포넌트로부터 제 1 응답을 수신하는 경우, 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정하도록 구성될 수 있다. 데이터 프로세싱 시스템은, 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트가 아니고 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정함에 근거하여, 제 2 응답을 선택하도록 구성될 수 있다.
적어도 하나의 실시형태는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하는 방법에 관한 것이다. 방법은 적어도 하나의 프로세서 및 메모리를 포함하는 데이터 프로세싱 시스템에 의해 수행될 수 있다. 방법은, 데이터 프로세싱 시스템이 컴퓨팅 디바이스의 센서에 의해 검출된 오디오 신호를 포함하는 하나 이상의 데이터 패킷들을 수신하는 것을 포함할 수 있다. 방법은, 데이터 프로세싱 시스템이 하나 이상의 데이터 패킷들을 통해 수신된 오디오 신호에 근거하여 쿼리를 발생시키는 것을 포함할 수 있다. 방법은, 데이터 프로세싱 시스템이 쿼리를 복수의 디지털 어시스턴트 컴포넌트들로 전송하는 것을 포함할 수 있다. 방법은, 데이터 프로세싱 시스템이 복수의 디지털 어시스턴트 컴포넌트들 중 제 1 디지털 어시스턴트 컴포넌트로부터 쿼리에 대한 제 1 응답을 수신하는 것을 포함할 수 있다. 방법은, 데이터 프로세싱 시스템이 복수의 디지털 어시스턴트 컴포넌트들 중 제 2 디지털 어시스턴트 컴포넌트로부터 쿼리에 대한 제 2 응답을 수신하는 것을 포함할 수 있다. 제 1 디지털 어시스턴트 컴포넌트는 제 2 디지털 어시스턴트 컴포넌트가 액세스하는 것이 금지된 데이터베이스에 액세스할 권한을 부여받을 수 있다. 방법은, 데이터 프로세싱 시스템이, 순위 결정 기능에 근거하여, 제 1 디지털 어시스턴트 컴포넌트로부터의 제 1 응답 대신 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 선택할 것을 결정하는 것을 포함할 수 있다. 방법은, 데이터 프로세싱 시스템이, 선택에 응답하여, 제 2 디지털 어시스턴트 컴포넌트로부터의 제 2 응답을 컴퓨팅 디바이스에 제공하는 것을 포함할 수 있다.
선택에 따라서는, 방법은, 제 2 디지털 어시스턴트 컴포넌트로부터의 제 2 응답에 대한 신뢰도 점수에 근거하여 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 선택하는 것을 포함할 수 있다. 선택에 따라서는, 방법은, 제 1 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트라고 결정하는 것을 포함할 수 있다. 방법은, 제 1 디지털 어시스턴트 컴포넌트로부터의 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정하는 것을 포함할 수 있다. 방법은, 제 1 디지털 어시스턴트 컴포넌트로부터의 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정함에 응답하여, 제 1 디지털 어시스턴트 컴포넌트를 오버라이드하는 것을 포함할 수 있다. 방법은, 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 선택하는 것을 포함할 수 있다. 방법은, 제 1 디지털 어시스턴트 컴포넌트를 선호되는 디지털 어시스턴트로서 유지하는 것을 포함할 수 있다. 선택에 따라서는, 방법은, 순위 결정 기능에 근거하여, 제 1 디지털 어시스턴트 컴포넌트가 컴퓨팅 디바이스의 메모리 내에 저장된 데이터에 액세스하는 것을 근거로 제 1 응답을 선택할 것을 결정하는 것을 포함할 수 있다. 선택에 따라서는, 방법은, 복수의 디지털 어시스턴트들로 하여금 쿼리를 오버랩핑 방식으로 프로세싱하도록 하기 위해서 독립적인 브랜치를 통해 복수의 디지털 어시스턴트들 각각으로 쿼리를 전송하는 것을 포함할 수 있다. 선택에 따라서는, 방법은, 제 1 디지털 어시스턴트 컴포넌트로부터의 제 1 응답 이전에 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 수신하는 것을 포함할 수 있다. 방법은, 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트 컴포넌트가 아니라고 결정하는 것을 포함할 수 있다. 방법은, 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정하는 것을 포함할 수 있다. 방법은, 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트가 아니고 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정함에 응답하여, 제 1 디지털 어시스턴트 컴포넌트로부터 제 1 응답을 기다리는 것을 포함할 수 있다. 방법은, 제 1 디지털 어시스턴트 컴포넌트로부터 제 1 응답을 수신하는 경우, 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정하는 것을 포함할 수 있다. 방법은, 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트가 아니고 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정함에 근거하여, 제 2 응답을 선택하는 것을 포함할 수 있다.
적어도 하나의 실시형태는 컴퓨터 프로그램물(computer program product)에 관한 것이고, 여기서 컴퓨터 프로그램물은 프로세서 및 메모리를 포함하는 데이터 프로세싱 시스템 상에서 실행될 때 데이터 프로세싱 시스템으로 하여금 앞서의 실시형태의 방법을 수행하도록 하게 구성된다. 컴퓨터 프로그램물은 유형의 비-일시적인 컴퓨터 판독가능 매체(tangible, non-transient, computer readable medium) 내에 포함될 수 있거나, 혹은 유형의 비-일시적인 컴퓨터 판독가능 매체 상에 제공될 수 있다.
이러한 실시형태들 및 구현예들 그리고 다른 실시형태들 및 구현예들이 아래에서 상세히 논의된다. 앞서의 정보 및 다음의 상세한 설명은 다양한 실시형태들 및 구현예들의 예시적 사례들을 포함하고, 그리고 제시되는 실시형태들 및 구현예들의 특성 및 특징을 이해하기 위한 개관 혹은 기본구조를 제공한다. 도면들은 다양한 실시형태들 및 구현예들의 예시 및 추가 이해를 제공하고, 그리고 본 명세서의 일부에 통합되고 본 명세서의 일부를 구성한다.
첨부되는 도면들은 축척에 따라 도시되도록 의도되지 않았다. 다양한 도면들에서의 유사한 참조 번호들 및 지명들은 유사한 요소들을 표시한다. 명확성을 위해, 모든 컴포넌트가 모든 도면에서 라벨링(labeling)되지 않을 수 있다. 도면은 다음과 같다.
도 1은 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 예시적인 시스템을 예시한다.
도 2는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템의 예시적인 동작을 예시한다.
도 3은 도 1 혹은 도 2에서 예시된 예시적인 시스템을 사용하여 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 흐름도를 예시한다.
도 4는 도 1 혹은 도 2에서 예시된 예시적인 시스템을 사용하여 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 방법을 예시한다.
도 5는, 예를 들어, 도 1 및 도 2에 도시된 시스템들, 도 3에 도시된 흐름, 또는 도 4에 도시된 방법을 포함하는, 본 명세서에서 설명 및 예시되는 시스템들 및 방법들의 요소들을 구현하기 위해 이용될 수 있는 컴퓨터 시스템에 대한 일반적인 아키텍처를 예시하는 블록도이다.
아래에서 후속되는 것은, 데이터 프로세싱 시스템, 디스플레이 디바이스들, 및 클라이언트 디바이스들과 같은 다수의 디바이스들에 걸쳐 오디오 쿼리들의 병렬 프로세싱을 조정하기 위한 방법들, 장치들, 및 시스템들의 구현예들 그리고 이러한 방법들, 장치들, 및 시스템들에 관한 다양한 개념들의 더 상세한 설명들이다. 앞에서 도입되고 아래에서 더 상세히 논의되는 다양한 개념들은 수많은 방식들 중 임의의 방식으로 구현될 수 있다.
오디오 쿼리들은 다수의 디지털 어시스턴트 컴포넌트들에 의해 프로세싱될 수 있다. 하지만, 상이한 디지털 어시스턴트 컴포넌트들은, 각각의 컴포넌트에 의해 사용되는 프로세싱 기법들에 근거하여, 또는 상이한 디지털 어시스턴트 컴포넌트들에 대해 확립된 데이터베이스 액세스 제어들에 근거하여, 오디오 쿼리들에 대한 상이한 결과들을 발생시킬 수 있다. 더욱이, 상이한 디지털 어시스턴트 컴포넌트들은 상이한 시간에 결과들을 프로세싱 및 리턴(return)할 수 있다. 따라서, 상이한 디지털 어시스턴트 컴포넌트들이 오디오 쿼리를 병렬로 혹은 오버랩핑 방식으로 프로세싱할 수 있는 경우에 오디오 쿼리들의 프로세싱을 조정하는 것은 도전과제일 수 있다.
본 발명의 기술적 해법의 시스템들 및 방법들은 오디오 쿼리들의 오버랩핑 프로세싱의 조정을 제공한다. 예를 들어, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 마이크로폰(microphone)에 의해 검출된 오디오 쿼리를 수신할 수 있다. 컴퓨팅 디바이스, 또는 컴퓨팅 디바이스의 인터페이스는 오디오 쿼리를 프로세싱을 위해 제 1 디지털 어시스턴트 에이전트(digital assistant agent)로 전달(forward)할 수 있다. 인터페이스는 오디오 쿼리를 프로세싱을 위해 제 2 디지털 어시스턴트 에이전트로 전달할 수 있다. 제 1 디지털 어시스턴트는 적어도 하나의 제 1 결과를 발생시킬 수 있고, 이와 동시에 제 2 디지털 어시스턴트는 제 2 결과를 발생시킬 수 있다. 제 2 디지털 어시스턴트는 제 2 결과에 대한 신뢰도 점수를 발생시킬 수 있다. 신뢰도 점수에 응답하여, 제 2 디지털 어시스턴트는 제 1 디지털 어시스턴트를 오버라이드할 수 있고, 그리고 제 2 결과를 리턴할 수 있다. 제 2 디지털 어시스턴트는, 제 1 결과는 아직 이용가능하지 않음을 결정할 수 있고, 그리고 제 2 결과를 제공하기 위해 제 1 디지털 어시스턴트를 오버라이드할 수 있다.
예를 들어, 다수의 디지털 어시스턴트 컴포넌트들(예컨대, 디지털 어시스턴트들, 디지털 어시스턴트 에이전트들, 혹은 음성 에이전트(voice agent)들)은, 컴퓨팅 디바이스(예컨대, 네트워크에 연결된 텔레비전(network connected television), 네트워크에 연결된 스피커(network connected speaker), 또는 다른 네트워크에 연결된 컴퓨팅 디바이스)를 통해 사용자에 의해 입력된 오디오 쿼리들을 프로세싱하거나, 파싱(parsing)하거나, 서빙(serving)하거나, 혹은 이에 응답하도록 구성될 수 있다. 본 발명의 기술적 해법의 시스템들 및 방법들은 응답하는 디지털 어시스턴트 에이전트들 간에 중재(arbitrate) 및 우선화(prioritize)를 행하기 위한 프레임워크(framework)를 제공한다. 예를 들어, 사전-프로세서 컴포넌트(pre-processor component)에 의해 음성 쿼리가 텍스트로 전사(transcribe)된 이후, 쿼리는 쿼리를 프로세싱할 제 1 디지털 어시스턴트(예를 들어, 써드-파티 디지털 어시스턴트 컴포넌트(third-party digital assistant component)를 갖도록 구성된 써드-파티 클라우드(third-party cloud))로 전달될 수 있고, 이와 동시에 제 2 디지털 어시스턴트는 쿼리를 병렬로 혹은 오버랩핑 방식으로 프로세싱할 수 있다.
디지털 어시스턴트 컴포넌트들 중 하나, 또는 별개의 조정기 컴포넌트(coordinator component), 또는 응답 핸들러 컴포넌트(response handler component)는, 응답을 제공하기 위해 어떤 음성 에이전트를 사용할 것인지, 또는 어떤 응답을 사용할 것인지를 결정할 수 있다. 조정 컴포넌트(coordinate component)는, 어떤 디지털 어시스턴트 컴포넌트를 사용할 것인지를 결정하기 위해 규칙(rule)들, 정책(policy)들, 또는 품질 평가 기법(quality assessment technique)들을 갖도록 구성될 수 있다. 제 2 디지털 어시스턴트 컴포넌트는 제 1 디지털 어시스턴트 컴포넌트를 오버라이드할 것을 결정할 수 있다. 제 2 디지털 어시스턴트 컴포넌트는, 신뢰도 점수, 품질 평가 기법, 쿼리를 파싱하는 것으로부터 발생된 신호, 결과를 제공하기 위해 사용되는 데이터베이스, 또는 쿼리와 관련된 도메인(domain)에 근거하여, 제 1 디지털 어시스턴트를 오버라이드할 것을 결정할 수 있다.
예를 들어, 제 1 디지털 어시스턴트는 "스트리밍_서비스_A 상의 영화_A를 재생하세요(play Movie_A on Streaming_Service_A)"와 같은 미디어 도메인 쿼리들과 관련된 오디오 쿼리들을 프로세싱하고 이에 응답하도록 구성될 수 있고, 반면 제 2 디지털 어시스턴트 컴포넌트는 "나의 다음 약속은 언제인가요(when is my next appointment)"와 같은 검색 도메인 쿼리들을 프로세싱하고 이에 응답하도록 구성될 수 있다. 만약 검색 쿼리 신호들이 모호하거나 다수의 카테고리(category)들에 속한다면, 조정기 컴포넌트는 다수의 디지털 어시스턴트 컴포넌트들로부터의 응답들에 점수 혹은 순위를 부여할 수 있고, 디지털 어시스턴트 컴포넌트 중 하나로부터 응답을 선택할 수 있다. 예를 들어, 조정기 컴포넌트는 신뢰도 레벨 혹은 다른 인자(factor)들에 근거하여 응답들 혹은 쿼리들에 점수 혹은 순위를 부여할 수 있다.
따라서, 본 발명의 기술적 해법의 시스템들 및 방법들은, 제 1 디지털 어시스턴트 컴포넌트와 제 2 디지털 어시스턴트 컴포넌트가 직렬이 아닌 병렬로 혹은 오버랩핑 방식으로 실행될 수 있게 함으로써 레이턴시(latency)를 감소시킬 수 있다. 레이턴시는 먼저 프로세싱을 완료한 디지털 어시스턴트로부터의 결과들을 선택함으로써 더 감소될 수 있다. 디지털 어시스턴트들 중 하나로부터의 응답들 혹은 결과들을 선택하기 위해 순위 결정 기능을 사용함으로써 신뢰도(reliability)가 증가될 수 있다. 본 발명의 기술적 해법의 시스템들 및 방법들은 선호되는 도메인들에 대해 기능하는 써드-파티 클라우드에 대한 의존성(dependency)을 감소시킬 수 있는데, 이것은 결과적으로 더 강인한 성능(robust performance)을 갖게 할 수 있다. 예를 들어, 만약 제 2 디지털 어시스턴트 컴포넌트로부터의 응답이 이용가능하고 제 2 디지털 어시스턴트 혹은 제 2 디지털 어시스턴트의 관리자에 의해 선호되는 도메인에 쿼리가 속한다고 표시한다면, 제 2 디지털 어시스턴트 컴포넌트는 제 1 디지털 어시스턴트 컴포넌트가 응답을 리턴하는 것조차 기다리지 않고 응답을 제공할 수 있으며, 그럼으로써 제 1 디지털 어시스턴트가 더 느리거나 또는 오작동, 에러, 고장, 과도한 프로세싱 부하, 혹은 다른 프로세싱 문제를 겪고 있는 경우에 레이턴시 혹은 지연(delay)을 감소시키게 된다. 본 발명의 기술적 해법의 시스템들 및 방법들은 제 1 디지털 어시스턴트 컴포넌트 또는 제 2 디지털 어시스턴트 컴포넌트로부터 신뢰도 점수들에 대한 결과들의 미세-조정(fine-tuning)을 제공할 수 있다. 제 1 디지털 어시스턴트 컴포넌트는 "폴백(fallback)" 결과들과 함께 자신들의 결과들의 신뢰도 점수들을 보고(report)할 수 있다. 만약 제 2 디지털 어시스턴트 컴포넌트가 임계치에 대해 낮은 신뢰도 점수를 갖는다면, 혹은 제 1 디지털 어시스턴트 컴포넌트의 신뢰도 점수에 대해 낮은 신뢰도 점수를 갖는다면, 시스템은 제 1 디지털 어시스턴트 컴포넌트로부터의 "폴백" 결과들을 리턴할 것을 결정할 수 있다. 만약 제 1 디지털 어시스턴트 컴포넌트가 자신은 답변(answer)를 갖지 않는다고 표시한다면, 제 2 디지털 어시스턴트 컴포넌트는 쿼리와 관련된 신호들 또는 도메인과 상관없는 결과들을 제공할 수 있다.
본 개시내용의 시스템들 및 방법들은 자신들의 디지털 어시스턴트 에이전트들을 갖는 써드-파티 텔레비전들이 데이터 프로세싱 시스템에 의해 제공되는 디지털 어시스턴트 에이전트와 통합될 수 있도록 하는 방법을 제공할 수 있다. 시스템들 및 방법들은, 데이터 프로세싱 시스템의 디지털 어시스턴트 컴포넌트가 상호작용할 수 있는 써드-파티 음성 에이전트 엔드포인트(third-party voice agent endpoint)와 같은 디바이스들의 타입에 대한 공통 메타데이터, 임의의 음성 바이어싱 어구(speech biasing phrase)들 및 디바이스 능력들(예컨대, 브라우저)을 특정하기 위해 디바이스 모델(device model)을 등록하는 것을 포함할 수 있다. 시스템 및 방법들은 미디어 쿼리(media query)들과 같은 어떤 쿼리 도메인들이 서빙을 위해 선호되는지를 특정하기 위해 디바이스 모델 내에 도메인들을 제공하는 것을 포함할 수 있다. 시스템들 및 방법들은 텔레비전들 상에서의 시각적인 결과들을 위해 강화된 디지털 어시스턴트 소프트웨어 개발 키트(Software Development Kit)("SDK") 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)("API")와의 통합을 포함할 수 있다. 시스템들 및 방법들은 사용자로 하여금 디바이스에 사인-인(sign-in)하도록 인도하기 위해 디지털 어시스턴트 SDK 아웃-오브-박스 경험(Out-Of-Box Experience)("OOBE") 흐름과의 통합을 포함할 수 있다. OOBE 및 인증(authentication)을 지원하기 위한 디바이스 바운드 해법(device bound solution)은 안전(secure)할 수 있다.
모델 등록 API(model registration API)는 텔레비전 혹은 다른 컴퓨팅 디바이스의 제조자들로 하여금 자신들의 클라우드 자연 언어 이해(Natural Language Understanding)("NLU") 엔드포인트들 및 다른 신디케이션 특정 메타데이터(syndication specific metadata)를 특정할 수 있게 할 수 있다. 시스템은 데이터 프로세싱 시스템의 자동 음성 인식이 디바이스 상에서 발언된 공통 쿼리들을 정확하게 인식하도록 하기 위해 디바이스 모델에 등록된 콘텍스트 음성 바이어싱 어구(contextual speech biasing phrase)들을 제공할 수 있다. 시스템은 최적의 레이턴시를 위해 데이터 프로세싱 시스템의 후보 결과들을 구축하는 것과 병렬로 써드-파티 클라우드 NLU를 트리거(trigger)할 수 있다. 시스템은 도메인들에 근거하여 쿼리들을 이행하기 위해 순위결정 프로토콜(protocol)들 혹은 정책들을 고려하는 순위결정 계층을 제공할 수 있다. 시스템은 사인-인을 요구함이 없이 디지털 어시스턴트 컴포넌트로부터의 응답들을 허용하기 위해 새로운 프로세싱 흐름을 제공할 수 있다. 시스템은 써드-파티 디지털 어시스턴트에 의해 응답이 제공되는 쿼리들에 대한 콘텐츠 선택을 차단(block)할 수 있고, 그리고 다른 로그(log)들로부터 이러한 쿼리들을 스크럽(scrub)하기 위해 사후 프로세싱(post processing)을 수행할 수 있다. 시스템은 에이전트의 능력에 대한 흐름을 제공할 수 있는데, 왜냐하면 다수의 에이전트들이 플랫폼(platform) 상에서 이용가능하기 때문이다. 시스템은 써드-파티 디바이스들 상에서 HTML5를 렌더링(rendering)하기 위한 확장가능한 시각적 해법을 제공할 수 있고, 이에 따라 브라우저를 갖는 임의의 디바이스는 시각적 결과를 보여줄 수 있게 되고, 그리고 제안 클릭(click)들 혹은 링크(link)들과 같은 상호작용적 요소(interactive element)들을 지원할 수 있게 된다.
도 1은 다수의 디바이스들에 걸쳐 오디오 쿼리들의 병렬 프로세싱을 조정하기 위한 예시적인 시스템(100)을 예시한다. 시스템(100)은 적어도 하나의 데이터 프로세싱 시스템(102), 적어도 하나의 제 1 디지털 어시스턴트 서버(106), 하나 이상의 클라이언트 디바이스들(104), 하나 이상의 디스플레이 디바이스들(108), 및 네트워크(110)를 포함할 수 있다. 디스플레이 디바이스(108)는 유선 혹은 무선 연결을 통해(예를 들어, 네트워크(110)를 통해, 또는 단-거리 통신(short-range communication)들을 통해, 또는 페어링(pairing)을 통해) 클라이언트 디바이스(104)에 결합될 수 있다. 클라이언트 디바이스(104)는 디스플레이 디바이스(108)의 일부일 수 있거나, 또는 그렇지 않으면 디스플레이 디바이스에 통합될 수 있다. 적어도 하나의 데이터 프로세싱 시스템(102), 하나 이상의 클라이언트 디바이스들(104), 및 하나 이상의 디스플레이 디바이스들(108)은 네트워크(110)를 통해 서로 통신가능하게 결합될 수 있다.
데이터 프로세싱 시스템(102)은 인터페이스(122)를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 제 2 디지털 어시스턴트 애플리케이션(120)을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 오디오-기반 입력들을 파싱하기 위해 자연 언어 프로세서(Natural Language Processor, NLP) 컴포넌트(124)를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 시스템(100) 내의 다른 디바이스들의 인터페이스들을 검출 및 관리하기 위해 인터페이스 관리 컴포넌트(128)를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 오디오-기반 신호들을 발생시키기 위해 오디오 신호 발생기 컴포넌트(130)를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 오디오-기반 입력들로부터 파싱된 요청들을 이행하기 위해 다이렉트 액션(direct action) 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)(126)를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 오디오-기반 입력 신호들에 대한 응답들을 선택하기 위해 오디오 신호 발생기 컴포넌트(130)를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 데이터 보관소(data repository)(140)를 포함할 수 있다. 데이터 프로세싱 시스템(102)은, 검색 조정기 컴포넌트(search coordinator component)(132), 콘텐츠 인덱서 컴포넌트(content indexer component)(134), 순위결정 엔진(ranking engine)(136), 및 응답 핸들러 컴포넌트(response handler component)(138)를 포함할 수 있다. NLP 컴포넌트(124), 인터페이스 관리 컴포넌트(128), 오디오 신호 발생기 컴포넌트(130), 데이터 보관소(140), 다이렉트 액션 API(126), 인터페이스 관리 컴포넌트(128), 검색 조정기 컴포넌트(132), 콘텐츠 인덱서 컴포넌트(134), 순위결정 엔진(136), 및 응답 핸들러 컴포넌트(138)는 디지털 어시스턴트 애플리케이션(120)을 형성할 수 있다.
디지털 어시스턴트 애플리케이션(120)과 같은 데이터 프로세싱 시스템(102)의 기능들은, 하나 이상의 클라이언트 디바이스들(104) 및 하나 이상의 디스플레이 디바이스들(108)로부터 액세스가능할 수 있거나 또는 그렇지 않으면 포함될 수 있다. 데이터 프로세싱 시스템(102)의 기능들은, 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스들(108) 상에서 실행되는 디지털 어시스턴트 애플리케이션(120)과 인터페이싱(interfacing)할 수 있거나 기능들에 대응할 수 있다. 클라이언트 디바이스들(104) 및 디스플레이 디바이스들(108)은 각각 디지털 어시스턴트 애플리케이션(120)의 하나 이상의 컴포넌트들의 개별 인스턴스(instance)를 포함할 수 있고 실행할 수 있다. 클라이언트 디바이스들(104) 및 디스플레이 디바이스들(108)은 그렇지 않으면 네트워크(110)를 통해 원격 데이터 프로세싱 시스템(102) 상에서의 디지털 어시스턴트 애플리케이션(120)의 컴포넌트들의 기능들에 대한 액세스를 가질 수 있다. 예를 들어, 디스플레이 디바이스(108)는 NLP 컴포넌트(124)의 기능들을 포함할 수 있고, 그리고 데이터 프로세싱 시스템(102)에 대한 네트워크(110)를 통해 디지털 어시스턴트 애플리케이션(120)의 컴포넌트들의 나머지에 액세스할 수 있다. 데이터 프로세싱 시스템(102), 클라이언트 디바이스(104), 및 디스플레이 디바이스(108)는 디지털 어시스턴트 애플리케이션(120)의 컴포넌트들의 별개의 인스턴스를 포함할 수 있고 실행할 수 있다. 클라이언트 디바이스들(104) 및 디스플레이 디바이스들(108) 상에서 실행되거나 혹은 액세스가능한 디지털 어시스턴트 애플리케이션(120)은 각각 상이한 기능들을 가질 수 있다. 클라이언트 디바이스(104) 또는 디스플레이 디바이스(108)는 데이터 프로세싱 시스템(102)과 인터페이싱하는 제 2 디지털 어시스턴트 애플리케이션(120)을 실행할 수 있다. 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트 서버(106)와 인터페이싱할 수 있다.
클라이언트 디바이스들(104) 및 디스플레이 디바이스들(108)은 각각 네트워크(110)를 통해 데이터 프로세싱 시스템(102)과 서로 통신하기 위해 프로세서를 갖는 컴퓨팅 디바이스와 같은 적어도 하나의 로직 디바이스(logic device)를 포함할 수 있다. 클라이언트 디바이스들(104) 및 디스플레이 디바이스들(108)은 데이터 프로세싱 시스템(102)과 관련하여 설명된 컴포넌트들 중 임의의 컴포넌트의 인스턴스를 포함할 수 있다. 클라이언트 디바이스들(104)은, 데스크탑 컴퓨터(desktop computer), 랩탑(laptop), 태블릿 컴퓨터(tablet computer), 개인 디지털 어시트턴트(personal digital assistant), 스마트폰(smartphone), 모바일 디바이스(mobile device), 휴대가능 컴퓨터(portable computer), 신 클라이언트 컴퓨터(thin client computer), 가상 서버(virtual server), 스피커-기반 디지털 어시스턴트(speaker-based digital assistant), 또는 다른 컴퓨팅 디바이스를 포함할 수 있다. 디스플레이 디바이스(108)는 스마트 텔레비전(smart television), 하이브리드 텔레비전(hybrid television), 커텍티드 텔레비전(connected television), 텔레비젼에 연결된 셋-탑 박스(set-top box), 디지털 비디오 레코드(digital video record), 모니터(monitor), 스크린(screen), 또는 디스플레이 기능을 갖는 다른 컴퓨팅 디바이스를 포함할 수 있다. 클라이언트 디바이스들(104)은 디스플레이 디바이스들(108)과 통신가능하게 결합될 수 있다. 예를 들어, 페어링되는 경우, 클라이언트 디바이스(104)는 디스플레이 디바이스(108)에서 다양한 기능들을 제어하기 위해 원격 제어로서 기능할 수 있다. 클라이언트 디바이스들(104)은 디스플레이 디바이스(108)의 일부일 수 있거나, 또는 디스플레이 디바이스(108)와 통합될 수 있다.
시스템(100)의 컴포넌트들은 네트워크(110)를 통해 통신할 수 있다. 네트워크(110)는, 예를 들어, 포인트-투-포인트 네트워크(point-to-point network), 브로드캐스트 네트워크(broadcast network), 와이드 영역 네트워크(wide area network), 로컬 영역 네트워크(local area network), 원격통신 네트워크(telecommunications network), 데이터 통신 네트워크(data communication network), 컴퓨터 네트워크(computer network), ATM(Asynchronous Transfer Mode; 비동기 전달 모드) 네트워크, SONET(Synchronous Optical Network; 동기 광학 네트워크) 네트워크, SDH(Synchronous Digital Hierarchy; 동기 디지털 계층) 네트워크, NFC(Near-Field Communication; 근접-필드 통신) 네트워크, 로컬 영역 네트워크(Local Area Network, LAN), 무선 네트워크(wireless network) 또는 유선라인 네트워크(wireline network), 및 이들의 조합들을 포함할 수 있다. 네트워크(110)는 적외선 채널(infrared channel) 혹은 위성 밴드(satellite band)와 같은 무선 링크(wireless link)를 포함할 수 있다. 네트워크(110)의 토폴로지(topology)는 버스(bus), 스타(star), 혹은 링(ring) 네트워크 토폴로지를 포함할 수 있다. 네트워크(110)는 모바일 디바이스들 간의 통신을 위해 사용되는 임의의 프로토콜 혹은 프로토콜들을 사용하는 모바일 전화기 네트워크들을 포함할 수 있고, 이러한 프로토콜에는 진보된 모바일 폰 프로토콜(Advanced Mobile Phone Protocol, AMPS), 시분할 다중 액세스(Time Division Multiple Access, TDMA), 코드-분할 다중 액세스(Code-Division Multiple Access, CDMA), 모바일 통신을 위한 글로벌 시스템(Global Ssystem for Mobile communication, GSM), 일반 패킷 무선 서비스들(General Packet Radio Services, GPRS), 또는 범용 모바일 원격통신 시스템(Universal Mobile Telecommunications System, UMTS)이 포함된다. 데이터의 상이한 타입들이 상이한 프로토콜들을 통해 전송될 수 있고, 또는 데이터의 동일한 타입들이 상이한 프로토콜들을 통해 전송될 수 있다.
네트워크(110)는, 블루투스(Bluetooth), 저전력 블루투스(Bluetooth Low Energy), 전용 단-거리 통신들(Dedicated Short-Range Communications, DSRC), 또는 근접-필드 통신들(Near-Field Communications, NFC) 프로토콜들을 이용하여, 클라이언트 디바이스들(104)과 디스플레이 디바이스들(108) 간에 확립되는 (예컨대, 그 범위가 최대 30 미터인) 단-거리 통신 링크를 포함할 수 있다. 이러한 프로토콜들을 사용하여, 데이터 프로세싱 시스템(102)은 인터페이스(122)를 통해 하나 이상의 클라이언트 디바이스들(104)과 통신 링크를 확립할 수 있다. 데이터 프로세싱 시스템(102)은 인터페이스(122)를 통해 하나 이상의 디스플레이 디바이스들(108)과 통신 링크를 확립할 수 있다. 단-거리 통신 링크가 페어링 프로토콜을 통해 클라이언트 디바이스들(104)과 디스플레이 디바이스들(108) 간에 확립될 수 있다.
클라이언트 디바이스들(104)은 센서들(152), 스피커들(150), 인터페이스들(122), 및 트랜스듀서(transducer)들(154)을 포함할 수 있다. 디스플레이 디바이스들(108)은 센서들(152), 스피커들(150), 인터페이스들(122), 및 트랜스듀서들(154)을 포함할 수 있다. 클라이언트 디바이스들(104) 및 디스플레이 디바이스(108)는 적어도 하나의 센서(152), 적어도 하나의 트랜스듀서(154), 적어도 하나의 오디오 드라이버(audio driver), 및 적어도 하나의 스피커(150)를 포함할 수 있다. 센서(152)는 마이크로폰 혹은 오디오 입력 센서를 포함할 수 있다. 센서(152)는 GPS 센서, 근접 센서(proximity sensor), 주변 광 센서(ambient light sensor), 온도 센서(temperature sensor), 모션 센서(motion sensor), 가속도계(accelerometer), 혹은 자이로스코프(gyroscope) 중 적어도 하나를 포함할 수 있다. 센서는 점유 또는 중량 센서를 포함할 수 있다. 트랜스듀서(154)는 오디오 입력을 전자 신호(electronic signal)로 변환할 수 있다. 오디오 드라이버는 스피커(150)를 제어하기 위해 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)의 하나 이상의 프로세서들에 의해 실행되는 스크립트(script) 또는 프로그램을 포함할 수 있다. 스피커(150)는 전기 신호(electrical signal)들을 청취가능한 파(audible wave)들로 변환함으로써 오디오 신호들을 렌더링할 수 있다. 클라이언트 디바이스(104) 및 디스플레이 디바이스(108)는 각각 다른 디바이스들 중에서도 키보드(keyboard), 포인팅 디바이스(pointing device), 모니터(monitor)(내장형 혹은 독립형), 및 헤드폰(headphone)들과 같은 주변 디바이스(peripheral device)들을 포함할 수 있다.
클라이언트 디바이스들(104) 및 디스플레이 디바이스(108)는 각각 멀티미디어 콘텐츠 애플리케이션(multimedia content application)(160)의 인스턴스를 실행할 수 있다. 멀티미디어 콘텐츠 애플리케이션(160)은 특정 제 1 디지털 어시스턴트 서버(106)와 관련될 수 있다. 멀티미디어 콘텐츠 애플리케이션(160)은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서 인스톨(install)된 스크립트 혹은 프로그램을 포함할 수 있다. 멀티미디어 콘텐츠 애플리케이션(160)은 웹 브라우저(web browser)와 같은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서 인스톨된 또 하나의 다른 애플리케이션을 통해 실행가능한 스크립트 혹은 프로그램을 포함할 수 있다. 멀티미디어 콘텐츠 애플리케이션(160)은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서의 다른 애플리케이션들(예컨대, 디지털 어시스턴트 애플리케이션(120))이 멀티미디어 콘텐츠 애플리케이션(160)과 인터페이싱하게 할 수 있는 애플리케이션 프로그래밍 인터페이스(API)를 포함할 수 있다. 멀티미디어 콘텐츠 애플리케이션(160)은 멀티미디어 콘텐츠를 재생할 수 있거나, 스트리밍(streaming)할 수 있거나, 다운로드(download)할 수 있거나, 또는 그렇지 않으면 멀티미디어 콘텐츠에 액세스할 수 있다. 멀티미디어 콘텐츠는 다른 것들 중에서도 MP3, ACC, OPUS, RTMP, RTP, MP4, FLV, WebM, ASF, ISMA, HEVC, H.264, VP8, VP9, HLS, HDS, 및 SMIL과 같은 임의의 포맷(format)을 갖는 하나 이상의 시청각 콘텐츠 파일(audiovisual content file)들에 대응할 수 있다. 하나 이상의 시청각 콘텐츠 파일들은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서 재생하기 위한 오디오 및/또는 시각 콘텐츠를 포함할 수 있다. 하나 이상의 시청각 콘텐츠 파일들을 로딩(loading)하는 경우, 멀티미디어 콘텐츠 애플리케이션(160)은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상에서 멀티미디어 콘텐츠를 재생할 수 있거나 또는 스트리밍할 수 있다.
멀티미디어 콘텐츠 애플리케이션(160)은 제 1 디지털 어시스턴트 서버(106)와 인증 프로세스(authentication process)를 수행할 수 있다. 인증 프로세스는 저장소로부터의 검색 혹은 입력을 통해 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서 액세스 코드(access code) 및 계정 식별자(account identifier)를 식별하는 것을 포함할 수 있다. 수신시, 멀티미디어 콘텐츠 애플리케이션(160)은 계정 식별자 및 액세스 코드를 제 1 디지털 어시스턴트 서버(106)로 보낼 수 있다. 제 1 디지털 어시스턴트 서버(106)는 이에 따라 계정 식별자에 대한 자기 자신의 저장된 액세스 코드와 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로부터 수신된 액세스 코드를 비교할 수 있다. 두 개의 액세스 코드들 간의 매칭(matching)을 결정함에 응답하여, 제 1 디지털 어시스턴트 서버(106)는 성공적인 인증 표시자(authentication indicator)를 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 보낼 수 있다.
성공적인 인증 표시자의 수신에 응답하여, 멀티미디어 콘텐츠 애플리케이션(160)은 계정 식별자에 대해 제 1 디지털 어시스턴트 서버(106)에 의해 이용가능하게되는 이용가능한 멀티미디어 콘텐츠의 카탈로그(catalog)를 검색할 수 있다. 멀티미디어 콘텐츠 애플리케이션(160)은 각각의 이용가능한 멀티미디어 콘텐츠에 대응하는 각각의 요소와 함께 그래픽 사용자 인터페이스(graphical user interface)에서 이용가능한 멀티미디어 콘텐츠의 카탈로그를 디스플레이할 수 있다. 그래픽 사용자 인터페이스의 요소들 중 하나와의 상호작용시, 멀티미디어 콘텐츠 애플리케이션(160)은 선택된 멀티미디어 콘텐츠에 대한 요청을 제 1 디지털 어시스턴트 서버(106)로 보낼 수 있다. 제 1 디지털 어시스턴트 서버(106)는 선택된 멀티미디어 콘텐츠에 대응하는 하나 이상의 시청각 콘텐츠 파일들을 식별 및 제공할 수 있다. 멀티미디어 콘텐츠 애플리케이션(160)은 이에 따라 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서 그 선택된 멀티미디어 콘텐츠에 대응하는 하나 이상의 시청각 콘텐츠 파일들을 저장할 수 있거나, 재생할 수 있거나, 또는 스트리밍할 수 있다. 시스템(100)의 맥락에서 제 1 디지털 어시스턴트 서버(106) 및 멀티미디어 콘텐츠 애플리케이션(160)의 기능에 관한 추가적인 세부사항들이 본 명세서에서 설명된다.
데이터 프로세싱 시스템(102)과 관련된 애플리케이션, 스크립트, 프로그램, 또는 다른 컴포넌트들이 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)에서 인스톨될 수 있다. 애플리케이션은 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)가 입력 오디오 신호들(및 다른 데이터)을 데이터 프로세싱 시스템(102)의 인터페이스(122)로 전달할 수 있게 할 수 있다. 애플리케이션은 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)가 출력 오디오 신호들을 렌더링하도록 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)의 컴포넌트들을 구동시킬 수 있게 할 수 있다.
클라이언트 디바이스들(104) 및 디스플레이 디바이스(108)는, (센서(152)를 통해) 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)에 입력 오디오 신호들로서 음성 쿼리들을 입력하고 데이터 프로세싱 시스템(102)으로부터 제공될 수 있는 컴퓨터 발생 음성(computer generated voice)의 형태로 오디오 출력을 수신하는 최종 사용자와 관련될 수 있다. 입력 오디오 신호들에 응답하여, 클라이언트 디바이스들(104) 및 디스플레이 디바이스(108)는 미리결정된 기능들 혹은 액션들을 수행하기 위해 액션 데이터 구조(action data structure)들을 수신할 수 있다. 인터페이스(122)는 데이터 메시지들을 수신할 수 있거나 데이터 프로세싱 시스템(102)의 다이렉트 액션 API(126)에 제공할 수 있고 그리고 시스템(100)의 컴포넌트들 간의 통신을 가능하게 할 수 있다. 클라이언트 디바이스들(104) 및 디스플레이 디바이스(108)는 사용자가 시스템(100)의 컴포넌트들과 상호작용할 수 있게 하는 사용자 인터페이스를 포함할 수 있다.
데이터 프로세싱 시스템(102)은 적어도 하나의 프로세서를 갖는 적어도 하나의 서버를 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 적어도 하나의 데이터 센터(data center) 또는 서버 팜(server farm)에 위치하는 복수의 서버들을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 오디오 입력 신호로부터 요청 및 요청과 관련된 트리거 키워드(trigger keyword)를 결정할 수 있다. 요청 및 트리거 키워드에 근거하여, 데이터 프로세싱 시스템(102)은 응답 데이터를 발생시킬 수 있거나 선택할 수 있다. 응답 데이터는 오디오-기반 혹은 텍스트-기반일 수 있다. 예를 들어, 응답 데이터는 렌더링될 때 오디오 출력 혹은 음향 파(acoustic wave)를 제공하는 하나 이상의 오디오 파일들을 포함할 수 있다. 응답 데이터 내의 데이터는 콘텐츠 아이템(content item)들로서 지칭될 수 있다. 응답 데이터는 오디오 콘텐츠에 추가하여 다른 콘텐츠(예컨대, 텍스트, 비디오, 혹은 이미지 콘텐츠)를 포함할 수 있다. 응답 데이터는 캘리더 정보, 메시지들, 날씨 정보, 뉴스 정보, 또는 티켓 정보와 같은 콘텐츠의 다양한 타입들을 포함할 수 있다.
데이터 프로세싱 시스템(102)은 다수의 논리적으로 그룹화된 서버들을 포함할 수 있고, 그리고 분산된 컴퓨팅 기법들을 용이하게 할 수 있다. 서버들의 논리적 그룹(logical group)은 데이터 센서, 서버 팜, 또는 머신 팜(machine farm)으로서 지칭될 수 있다. 서버들은 지리적으로 분산될 수 있다. 데이터 센터 혹은 머신 팜은 단일 엔티티(single entity)로서 관리될 수 있고, 또는 머신 팜은 복수의 머신 팜들을 포함할 수 있다. 각각의 머신 팜 내의 서버들은 이종(heterogeneous)일 수 있다(서버들 혹은 머신들 중 하나 이상은 오퍼레이팅 시스템 플랫폼(operating system platform)의 하나 이상의 타입에 따라 동작할 수 있음). 데이터 프로세싱 시스템(102)은 예를 들어, 엔터프라이즈 데이터 센터(enterprise data center) 내에 위치하는 하나 이상의 고-밀도 랙 시스템(high-density rack system)들 내에서 관련된 저장 시스템들과 함께 저장되는 데이터 센터 내의 서버들을 포함할 수 있다. 이러한 방식으로, 통합된 서버들을 갖는 데이터 프로세싱 시스템(102)은, 로컬화된 고성능 네트워크들 상에 서버들 및 고성능 저장 시스템들을 위치시킴으로써 시스템 관리가능성(system manageability), 데이터 보안(data security), 시스템의 물리적 보안, 및 시스템 성능을 향상시킬 수 있다. 서버들 및 저장 시스템들을 포함하는 데이터 프로세싱 시스템(102) 컴포넌트들 중 일부 혹은 모두의 중앙집중화(centralization), 그리고 이들을 진보된 시스템 관리 툴들과 결합하는 것은, 사버 리소스(server resource)들의 더 효율적인 사용을 가능하게 하고, 이것은 파워 및 프로세싱 요건들을 절약하며 대역폭 사용(bandwidth usage)을 감소시킨다. 데이터 프로세싱 시스템(102)의 컴포넌트들 각각은 적어도 하나의 프로세싱 유닛, 서버, 가상 서버, 회로, 엔진, 에이전트, 어플라언스(appliance), 또는 다른 로직 디바이스(logic device), 예컨대, 데이터 보관소(140)와 통신하도록 구성된 아울러 다른 컴퓨팅 디바이스들과 통신하도록 구성된 프로그래밍가능 로직 어레이(programmable logic array)들을 포함할 수 있다.
데이터 프로세싱 시스템(102)은 데이터 보관소(140)를 포함할 수 있다. 데이터 보관소(140)는 하나 이상의 로컬 혹은 분산된 데이터베이스들을 포함할 수 있고 아울러 데이터베이스 관리 시스템을 포함할 수 있다. 데이터 보관소(140)는 컴퓨터 데이터 저장소 혹은 메모리를 포함할 수 있고, 그리고 하나 이상의 애플리케이션 식별자들(142), 하나 이상의 엔티티 메타데이터(entity metadata)(144), 하나 이상의 순위결정 정책(ranking policy)들(146), 및 적어도 하나의 참조 어드레스(reference address)(148)를 저장할 수 있다. 각각의 애플리케이션 식별자(142)는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상에서 실행될 멀티미디어 콘텐츠 애플리케이션(160)에 대응하는 문자숫자 값(alphanumeric value)일 수 있다. 각각의 엔티티 메타데이터(144)는 엔티티에 대응할 수 있다. 각각의 참조 어드레스(148)는 참조를 식별시킬 수 있다. 하나 이상의 애플리케이션 식별자들(142), 하나 이상의 엔티티 메타데이터(144), 하나 이상의 순위결정 정책들(146), 및 참조 어드레스(148)의 사용 및 기능들의 세부사항들은 아래에서 제공된다.
데이터 보관소(140)는 컴퓨터 데이터 저장소 혹은 메모리를 포함할 수 있고, 그리고 다른 데이터 중에서도 하나 이상의 파라미터(parameter)들, 하나 이상의 정책들, 응답 데이터, 및 템플릿(template)들을 저장할 수 있다. 파라미터들, 정책들 및 템플릿들은 클라이언트 디바이스들(104)과, 데이터 프로세싱 시스템(102)과, 그리고 디스플레이 디바이스(108) 간의 음성 기반 세션(voice based session)에 대한 규칙들과 같은 정보를 포함할 수 있다. 파라미터들, 정책들 및 템플릿들은, 또 하나의 다른 소스(source)(예를 들어, 데이터 프로세싱 시스템(102), 클라이언트 디바이스들(104), 및 디스플레이 디바이스들(108))로부터 인터페이스(122)를 통해 수신된 또 하나의 다른 디지털 어시스턴트 애플리케이션(120)에 대한 정보를 포함할 수 있다. 예를 들어, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상에서 호스팅(hosting)되는 디지털 어시스턴트 애플리케이션(120)의 데이터 보관소(140) 내에 저장된 파라미터들, 정책들, 및 템플릿들은, 클라이언트 디바이스(104) 및 디스플레이 디바이스(108)를 통해 액세스가능한 디지털 어시스턴트 애플리케이션(120)의 데이터 보관소(140)로부터의 파라미터들, 정책들, 및 템플릿들을 포함할 수 있고, 그 반대의 경우도 가능하다. 이러한 방식으로 상이한 디지털 어시스턴트 애플리케이션들(120)의 파라미터들, 정책들, 및 템플릿들은 서로 공유될 수 있고 사용될 수 있다. 응답 데이터는 오디오 출력을 위한 콘텐츠 아이템들, 혹은 관련된 메타데이터를 포함할 수 있고, 뿐만 아니라 클라이언트 디바이스들(104) 및 디스플레이 디바이스들(108)과의 하나 이상의 통신 세션(communication session)들의 일부일 수 있는 입력 오디오 메시지들을 포함할 수 있다.
NLP 컴포넌트(124)는 입력 오디오 신호들을 수신할 수 있다. 데이터 프로세싱 시스템(102)은 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)로부터 (예를 들어, 트랜스듀서들(154) 혹은 센서들(152)을 통해) 데이터 패킷 내에 포함되는 입력 오디오 신호를 수신할 수 있다. 데이터 패킷은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)와 관련된 디바이스 식별자를 포함할 수 있다. 데이터 패킷은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서 실행가능한 멀티미디어 콘텐츠 애플리케이션(160)의 애플리케이션 식별자를 포함할 수 있다. NLP 컴포넌트(124)의 기능들은 데이터 프로세싱 시스템(102), 클라이언트 디바이스(104), 및 디스플레이 디바이스(108) 간에 분할(split)될 수 있다. 예를 들어, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상에서 실행되는 NLP 컴포넌트(124)는 센서들(152)에서 검출된 입력 오디오 신호를 데이터 패킷으로 패키징(packaging)할 수 있고, 데이터 패킷을 데이터 프로세싱 시스템(102)에서 실행되는 NLP 컴포넌트(124)에서의 추가 프로세싱을 위해 데이터 프로세싱 시스템(102)으로 보낼 수 있다.
NLP 컴포넌트(124)는, 입력 오디오 신호를 오디오 파형들의 저장된 대표 세트에 대비하여 비교하고 가장 가까운 매칭들을 선택함으로써 입력 오디오 신호를 인식된 텍스트로 변환할 수 있다. 대표 파형들은 입력 오디오 신호들의 대규모 세트에 걸쳐 발생될 수 있다. 인식된 텍스트로 입력 오디오 신호가 변환되면, NLP 컴포넌트(124)는 예를 들어, 학습 국면(learning phase)을 통해 액션들 혹은 출력 오디오 신호들과 관련된 단어들에 텍스트를 매칭시킬 수 있다.
입력 오디오 신호로부터, NLP 컴포넌트(124)는 적어도 하나의 요청을 식별할 수 있다. 요청은 입력 오디오 신호의 의도(intent) 또는 주된 내용(subject matter)을 표시할 수 있다. 요청은 취해질 가능성이 있는 액션의 타입을 표시할 수 있다. 예를 들어, NLP 컴포넌트(124)는 멀티미디어 콘텐츠를 재생시키도록 하는 적어도 하나의 요청(예를 들어, "오케이, 2015년부터의 배트 무비를 재생하시오(Okay, play Bat Movie from 2015)")을 식별하기 위해 입력 오디오 신호를 파싱할 수 있다. 요청은 취해질 액션을 표시하는 적어도 하나의 단어(word), 어구(phrase), 어근(root), 혹은 부분적 단어(partial word), 또는 파생어(derivative)를 포함할 수 있다. 요청은 "오케이(okay)" 또는 "진행하세요(go)"와 같은 트리거 키워드를 포함할 수 있다. NLP 컴포넌트(124)는 요청 내에서 트리거 키워드를 검출할 수 있다. 트리거 키워드의 검출에 응답하여, NLP 컴포넌트(124)는 입력 오디오 신호로부터 의도, 주된 내용, 및 취해질 액션의 타입을 식별할 수 있다.
NLP 컴포넌트(124)는 요청으로부터 적어도 하나의 엔티티를 식별할 수 있다. 적어도 하나의 엔티티는 요청 내의 적어도 하나의 단어, 어구, 어근 혹은 부분적 단어, 또는 파생어에 대응할 수 있다. 적어도 하나의 엔티티는 멀티미디어 콘텐츠에 대한 서술자(descriptor)를 포함할 수 있는데, 예를 들어, 제목(title), 저자(author), 배포자(distributor), 최초 발표 날짜(original release date), 언어(language), 장르(genre), 시간 길이(time length), 및 다른 관련 키워드들(예컨대, 배우 이름들)을 포함할 수 있다. 예를 들어, 2005년에 발표된 "배트 무비 I" 영화(film)에 대한 엔티티는, 다른 정보 중에서도, 제목으로서 "배트 무비 I(Bat Movie I)", 저자로서 "미즈. 디렉터(Ms. Director)", 최초 발표 날짜로서 "2005년 6월 15일(June 15, 2005)", 언어로서 "영어(English)", 장르로서 "액션(Action)", 그리고 길이로서 "140분(140 minutes)"을 포함할 수 있다. NLP 컴포넌트(126)는 요청 내의 적어도 하나의 단어, 어구, 어근 혹은 부분적 단어, 또는 파생어가 적어도 하나의 엔티티에 대응한다고 결정할 수 있다. 이러한 결정을 수행하기 위해, NLP 컴포넌트(126)는 시맨틱 지식 그래프(semantic knowledge graph)에 액세스할 수 있다. 시맨틱 지식 그래프는 적어도 하나의 엔티티와 관련된 단어들, 어구들, 어근 혹은 부분적 단어들, 또는 파생어들의 세트를 특정할 수 있다. 시맨틱 지식 그래프는 에지(edge)들을 통해 서로 연결되는 노드(node)들을 포함할 수 있다. 노드들은 단어, 어구, 어근 혹은 부분적 단어, 또는 파생어와 관련될 수 있고, 그리고 적어도 하나의 엔티티와 관련된 것으로 또는 관련되지 않은 것으로 표시(mark)될 수 있다. 두 개의 노드들을 연결하는 각각의 에지는 둘 간의 관계를 나타낼 수 있다. 이전의 사례로부터 계속해서, 시멘틱 지식 그래프 내에서 "배트 무비(Bat Movie)"에 대한 노드가 엔티티와 관련된 것으로서 표시될 수 있고, 그리고 엔티티와 관련된 것으로서 또한 라벨링된 "배트 무비 I(Bat Movie I)"로 라벨링된 노드에 대한 에지들을 가질 수 있는데, 여기서 에지들은 두 개의 용어들 간의 관계를 표시한다. 시멘틱 지식 그래프를 사용하여, NLP 컴포넌트(126)는 요청 내의 적어도 하나의 단어, 어구, 어근 혹은 부분적 단어, 또는 파생어가 적어도 하나의 엔티티에 대응한다고 결정할 수 있다.
NLP 컴포넌트(124)는 엔티티에 근거하여 적어도 하나의 요청이 멀티미디어 콘텐츠에 대한 쿼리에 대응하는지 여부를 결정할 수 있다. 요청 내의 적어도 하나의 단어, 어구, 어근 혹은 부분적 단어, 또는 파생어가 적어도 하나의 엔티티에 대응한다고 식별함에 응답하여, NLP 컴포넌트(124)는 적어도 하나의 요청이 멀티미디어 콘텐츠에 대한 쿼리에 대응한다고 결정할 수 있다. 요청 내의 단어들, 어구들, 어근 혹은 부분적 단어들, 또는 파생어들 중 어느 것도 적어도 하나의 엔티티에 대응하지 않는다고 식별함에 응답하여, NLP 컴포넌트(124)는 적어도 하나의 요청이 멀티미디어 콘텐츠에 대한 쿼리에 대응하지 않는다고 결정할 수 있다. 적어도 하나의 요청이 멀티미디어 콘텐츠에 대한 쿼리에 대응한다는 결정은, 아래에서 설명되는 바와 같이, 검색 조정기 컴포넌트(132), 콘텐츠 인덱서 컴포넌트(134), 순위결정(136), 및 응답 핸들러 컴포넌트(138)의 기능들을 트리거할 수 있다.
오디오 신호 발생기 컴포넌트(130)는 데이터 보관소(140)로부터 정보를 획득할 수 있는데, 데이터 보관소(140)에서 이러한 정보는 응답 데이터의 일부로서 저장될 수 있다. 오디오 신호 발생기 컴포넌트(130)는 예를 들어, 응답 데이터로부터 응답 어구들 혹은 콘텐츠 아이템들을 선택하기 위해 혹은 그렇지 않으면 식별하기 위해 데이터 보관소(140)에 질의(query)할 수 있다. 오디오 신호 발생기 컴포넌트(130)는 콘텐츠 아이템을 포함하는 출력 신호를 발생시킬 수 있거나 또는 그렇지 않으면 획득할 수 있다. 데이터 프로세싱 시스템(102)은 콘텐츠 아이템 혹은 요청에 대응하는 출력 신호를 발생시키거나 생성하도록 오디오 신호 발생기 컴포넌트(130)를 실행시킬 수 있다. 예를 들어, 요청이 이행되면, 오디오 신호 발생기 컴포넌트(130)는 어구 "액션은 완료됨(The action was completed)"을 포함하는 오디오 출력 신호를 발생시킬 수 있다.
인터페이스(122)는 시스템(100)의 컴포넌트들이 서로 통신할 수 있게 하는 네트워크 인터페이스 혹은 데이터 인터페이스일 수 있다. 데이터 프로세싱 시스템(102)의 인터페이스(122)는 액션 데이터 구조, 오디오 신호들, 또는 다른 데이터를 포함하는 하나 이상의 데이터 패킷들을 네트워크(110)를 통해 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)에 제공할 수 있거나 전송할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 데이터 보관소(140)로부터의 출력 신호 또는 오디오 신호 발생기 컴포넌트(130)로부터의 출력 신호를 클라이언트 디바이스들(104)에 제공할 수 있다. 데이터 프로세싱 시스템(102)은 데이터 패킷 전송들을 통해 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)에게 액션 데이터 구조 내에 표시된 기능들을 수행하도록 명령할 수 있다. 출력 신호는 획득될 수 있거나, 발생될 수 있거나, 하나 이상의 데이터 패킷들(혹은 다른 통신 프로토콜)로 변환될 수 있거나, 또는 하나 이상의 데이터 패킷들(혹은 다른 통신 프로토콜)로서 데이터 프로세싱 시스템(102)(혹은 다른 컴퓨팅 디바이스)로부터 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)로 전송될 수 있다.
데이터 프로세싱 시스템(102)의 다이렉트 액션 API(126)는 예를 들어, 요청에 근거하여 액션 데이터 구조들을 발생시킬 수 있다. 액션 데이터 구조는 요청을 만족시키기 위해 특정 액션의 실행을 위한 데이터 혹은 명령들을 포함할 수 있다. 일부 구현예들에서, 액션 데이터 구조는 JSON 포맷 데이터 구조 혹은 XML 포맷 데이터 구조일 수 있다.
요청 내에 특정된 액션에 따라, 다이렉트 액션 API(126)는 요청을 이행하기 위해 요구된 파라미터들을 식별시키는 코드 혹은 다이얼로그 스크립트(dialog script)를 실행시킬 있다. 액션 데이터 구조들은 요청에 응답하여 발생될 수 있다. 액션 데이터 구조는 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)로 전송된 또는 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)에 의해 수신된 메시지들 내에 포함될 수 있다. 다이렉트 액션 API(126)는 요청을 디스플레이 디바이스(108)로의 전송을 위한 액션 데이터 구조로 패키징할 수 있다. 다이렉트 액션 API(126)는 어떤 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)가 요청을 발생시킨 사용자와 관련되어 있는지를 결정하기 위해 응답 데이터로부터 디바이스 식별자에 액세스할 수 있다. 수신시, 디스플레이 디바이스(108)는 액션 데이터 구조를 프로세싱할 수 있고 표시된 액션을 수행할 수 있다. 다이렉트 액션 API(126)는 요청을 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에 의한 실행을 위해 액션 데이터 구조로 패키징할 수 있다. 수신시, 클라이언트 디바이스(104)는 클라이언트 디바이스(104) 상에서 실행되는 디지털 어시스턴트 애플리케이션(120) 혹은 하나 이상의 애플리케이션들을 사용하여 액션 데이터 구조를 프로세싱할 수 있다.
액션 데이터 구조는 요청을 완료하기 위한 정보를 포함할 수 있다. 예를 들어, 액션 데이터 구조는 요청을 완료하는 것 혹은 그렇지 않으면 이행하는 것에서 사용되는 속성(attribute)들을 포함하는 XML 혹은 JSON 포맷 데이터 구조일 수 있다. 속성들은, 디스플레이 디바이스(108)의 위치, 클라이언트 디바이스들(104)의 위치, 클라이언트 디바이스(104)와 관련된 사용자의 권한부여 레벨(authorization level), 디바이스 식별자, 인터페이스 식별자, 교통 상태(vehicular state), 또는 요청 상태를 포함할 수 있다. 일부 구현예들에서, 요청 상태는 액션이 이행되기 전에 만족되어야 하는 하나 이상의 속성들을 포함한다. 예를 들어, 요청이 "오케이, 노래를 바꾸세요(Ok, change the song)"인 경우, 요청 상태는 속성 {requestor: [authorized, passenger]}을 가질 수 있는데, 이것은 요청이 명시적으로 권한 있는 사용자이어야 함을 표시한다.
다이렉트 액션 API(126)는 어떤 필드(field)들 혹은 속성들을 액션 데이터 구조에 포함할 것인 지를 결정하기 위해 데이터 보관소(140)로부터 템플릿를 검색할 수 있다. 다이렉트 액션 API(126)는 필요한 파라미터들을 결정할 수 있고 그리고 정보를 액션 데이터 구조로 패키징할 수 있다. 다이렉트 액션 API(126)는 데이터 구조의 속성들에 대한 정보를 획득하기 위해 데이터 보관소(140)로부터 콘텐츠를 검색할 수 있다.
다이렉트 액션 API(126)는 입력 오디오 신호로부터의 데이터로 필드들을 채울 수 있다. 다이렉트 액션 API(126)는 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스(108)로부터의 데이터 혹은 또 하나의 다른 소스로부터의 데이터로 필드들을 채울 수 있다. 다이렉트 액션 API(126)는 필드들을 채울 때 추가적인 정보에 대해 사용자에게 촉구(prompt)할 수 있다. 템플릿들은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 내에서 기능들을 수행하는 그리고 메시지들에 응답하는 액션들의 상이한 타입들에 대해 표준화될 수 있다. 액션 데이터 구조는 원격 데이터 프로세싱 시스템(102)에 의해 실행되는 다이렉트 액션 API(126)에 의해 초기에 발생될 수 있다. 원격 데이터 프로세싱 시스템(102)은 액션 데이터 구조를 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 전송할 수 있고, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 액션 데이터 구조에 필드들 및 속성들을 부가할 수 있다.
다이렉트 액션 API(126)는 데이터 보관소(140)로부터 응답 데이터(또는 파라미터들 또는 정책들)를 획득할 수 있고, 뿐만 아니라 클라이언트 디바이스들(104) 혹은 디스플레이 디바이스들(108)로부터 최종 사용자 동의(end user consent)와 함께 수신된 데이터를 획득할 수 있다. 응답 데이터(또는 파라미터들 또는 정책들)는 액션 데이터 구조에 포함될 수 있다. 액션 데이터 구조에 포함된 콘텐츠가 인증을 위해 사용된 최종 사용자 데이터를 포함하는 경우, 데이터는 데이터 보관소(140)에 저장되기 전에 해싱 기능(hashing function)을 통해 전달될 수 있다.
데이터 프로세싱 시스템(102)은 검색 조정기 컴포넌트(132)를 포함할 수 있거나, 검색 조정기 컴포넌트(132)와 인터페이싱(interfacing)할 수 있거나, 또는 그렇지 않으면 검색 조정기 컴포넌트(132)와 통신할 수 있다. 검색 조정기 컴포넌트(132)는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 전송할 쿼리 커맨드(query command)를 발생시킬 수 있다. 검색 조정기 컴포넌트(132)에 의한 쿼리 커맨드의 발생은 요청이 멀티미디어 콘텐츠에 대한 쿼리에 대응한다는 결정에 응답하여 존재할 수 있다. 쿼리 커맨드는 응답으로부터 식별된 엔티티를 포함할 수 있다. 쿼리 커맨드는 쿼리 커맨드를 프로세싱하기 위한 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에 대한 명령들을 포함할 수 있다. 명령들은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상의 어떤 멀티미디어 콘텐츠 애플리케이션(160)이 엔티티에 대한 검색을 수행해야하는 지를 표시할 수 있다. 명령들을 발생시키기 위해, 검색 조정기 컴포넌트(132)는 쿼리 커맨드 내에 포함할 하나 이상의 애플리케이션 식별자들(142)을 식별하기 위해 데이터 보관소(140)에 액세스할 수 있다. 데이터 보관소(140)는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)와 관련된 디바이스 식별자에 의해 하나 이상의 애플리케이션 식별자들(142)을 식별할 수 있다. 각각의 애플리케이션 식별자(142)는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에 의한 사용의 빈도에 의해 라벨링될 수 있다. 검색 조정기 컴포넌트(132)는 초기 데이터 패킷 내의 하나 이상의 애플리케이션 식별자들(142)을 쿼리 커맨드의 명령들에 삽입할 수 있다. 검색 조정기 컴포넌트(132)는 클라이언트 디바이스(104) 및 디스플레이 디바이스(108)에 의한 사용의 빈도에 근거하여 클라이언트 디바이스(104) 및 디스플레이 디바이스(108)에 대한 애플리케이션 식별자들(142)의 서브세트(subset)를 식별할 수 있다. 예를 들어, 검색 조정기 컴포넌트(132)는 디스플레이 디바이스(108)가 멀티미디어 콘텐츠 애플리케이션들(160) "C", "D", 및 "E"보다 멀티미디어 콘텐츠 애플리케이션들(160) "A" 및 "B"를 더 빈번하게 사용하다고 식별할 수 있다. 이러한 예에서, 검색 조정기 컴포넌트(132)는 쿼리 커맨드에 삽입하기 위해 멀티미디어 콘텐츠 애플리케이션들(160)에 대응하는 애플리케이션 식별자들(142)을 선택할 수 있다. 쿼리 커맨드의 각각의 애플리케이션 식별자(142)는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상의 어떤 멀티미디어 콘텐츠 애플리케이션(160)이 엔티티에 대한 검색을 수행해야하는 지를 표시할 수 있다. 쿼리 커맨드의 발생에 후속하여, 검색 조정기(132)는 쿼리 커맨드를 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 전송할 수 있다.
쿼리 커맨드의 수신은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 하여금 멀티미디어 콘텐츠 애플리케이션(160)에게 엔티티에 대한 검색을 수행하도록 할 수 있다. 쿼리 커맨드의 수신에 응답하여, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 엔티티를 식별하기 위해 쿼리 커맨드를 파싱할 수 있다. 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 하나 이상의 애플리케이션 식별자들(142)을 식별하기 위해 쿼리 커맨드를 파싱할 수 있다. 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 쿼리 커맨드의 하나 이상의 애플리케이션 식별자들(142)에 대응하는 멀티미디어 콘텐츠 애플리케이션들(160)을 식별할 수 있다. 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 쿼리 커맨드의 하나 이상의 애플리케이션 식별자들(142)로부터 식별된 멀티미디어 콘텐츠 애플리케이션(160)의 실행을 개시(initiate)할 수 있다. 검색을 수행하기 위해, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 멀티미디어 콘텐츠 애플리케이션(160)에 대한 애플리케이션 프로그래밍 인터페이스를 통해 각각의 멀티미디어 콘텐츠 애플리케이션(160)에게 쿼리 커맨드 내의 적어도 하나의 엔티티를 제공할 수 있다. 엔티티가 제공되면, 각각의 멀티미디어 콘텐츠 애플리케이션(160)은 쿼리 요청을 관련된 제 1 디지털 어시스턴트 서버(106)로 보낼 수 있다.
클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에 대한 쿼리 커맨드의 발생 및 전송과 병행하여, 검색 조정기 컴포넌트(132)는 제 1 디지털 어시스턴트 서버(106)에 보낼 쿼리 요청을 발생시킬 수 있다. 검색 조정기 컴포넌트(132)에 의한 쿼리 요청의 발생은 요청이 멀티미디어 콘텐츠에 대한 쿼리에 대응한다는 결정에 응답하여 존재할 수 있다. 검색 조정기 컴포넌트(132)에 의한 쿼리 요청의 발생은 아래에서 논의되는 바와 같이 콘텐츠 인덱서 컴포넌트(134)에 의한 호출(invocation)에 응답하여 존재할 수 있다. 쿼리 요청은 응답으로부터 식별된 엔티티를 포함할 수 있다. 쿼리 요청은 쿼리 요청을 프로세싱하기 위해 제 1 디지털 어시스턴트 서버(106)에 대한 명령들을 포함할 수 있다. 검색 조정기(132)는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에 대한 하나 이상의 애플리케이션 식별자들(142)로부터 어떤 멀티미디어 콘텐츠 제공자들이 쿼리 요청들을 전송할지를 식별할 수 있다. 쿼리 요청의 발생에 후속하여, 검색 조정기(132)는 쿼리 요청을 제 1 디지털 어시스턴트 서버(106)로 전송할 수 있다.
클라이언트 디바이스(104), 디스플레이 디바이스(108), 또는 검색 조정기 컴포넌트(132)로부터의 쿼리 요청의 수신은, 제 1 디지털 어시스턴트 서버(106)로 하여금 엔티티에 대한 검색을 수행하도록 할 수 있다. 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)가, 쿼리 요청을 전송하도록 멀티미디어 콘텐츠 애플리케이션(160)을 초기화(initialize)했을 수 있기 때문에, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로부터의 쿼리 요청은 검색 조정기 컴포넌트(132)로부터의 쿼리 요청에 후속하여 수신될 수 있다. 제 1 디지털 어시스턴트 서버(106)는 쿼리 요청에 응답하여 콘텐츠 데이터 보관소(162)에 액세스할 수 있다. 콘텐츠 데이터 보관소(162)는 하나 이상의 엔티티 메타데이터(144) 및 하나 이상의 순위결정 정책들(146)을 포함할 수 있다. 각각의 엔티티 메타데이터(144)는 엔티티에 대응할 수 있다. 데이터 보관소(162) 상의 각각의 엔티티 메타데이터(144)는, 제목, 저자, 배포자, 최초 발표 날짜, 언어, 장르, 시간 길이, 및 다른 관련 키워드들과 같은 엔티티에 대응하는 멀티미디어 콘텐츠에 대한 하나 이상의 엔트리(entry)들을 포함할 수 있다. 예를 들어, 하나의 엔티티 메타데이터(144)는 "배트 무비 I(Bat Movie I)"에 대응할 수 있고, 또 하나의 다른 엔티티 메타데이터(144)는 "배트 무비 II(Bat Movie II)"에 대응할 수 있다. 각각의 엔티티 메타데이터(144)는 참조 어드레스(148)(예를 들어, 유니폼 리소스 로케이터(Uniform Resource Locator))와 관련될 수 있다. 참조 어드레스(148)는 호스트명칭(hostname), 파일 경로명칭(file pathname), 및 쿼리 파라미터(query parameter)를 포함할 수 있다. 호스트명칭은 제 1 디지털 어시스턴트 서버(106)에 대응할 수 있다. 파일 경로명칭은 엔티티에 대응하는 멀티미디어 콘텐츠에 대한 하나 이상의 시청각 파일들에 대응할 수 있다. 쿼리 파라미터는 속성-값 쌍(attribute-value pair)을 포함할 수 있다. 쿼리 파라미터는 제 1 디지털 어시스턴트 서버(106)에 의해 동적으로 발생될 수 있고, 그리고 클라이언트 디바이스(104), 디스플레이 디바이스(108), 혹은 검색 조정기 컴포넌트(132)에 대해 달라질 수 있다.
쿼리 요청으로부터의 엔티티에 근거하여, 제 1 디지털 어시스턴트 서버(106)는 엔티티에 대응하는 참조 어드레스(148)를 식별할 수 있다. 제 1 디지털 어시스턴트 서버(106)는 콘텐츠 데이터 보관소(162)에 걸쳐 트래버스(traverse)할 수 있다. 각각의 엔티티 메타데이터(144)에 대해, 제 1 디지털 어시스턴트 서버(106)는 엔티티를 엔티티 메타데이터(144)와 비교할 수 있다. 예를 들어, 제 1 디지털 어시스턴트 서버(106)는 엔티티 "배트 무비(Bat Movie)"를 제목과 같은 엔티티 메타데이터(144)에 대한 엔트리들 중 임의의 엔트리에 비교할 수 있다. 제 1 디지털 어시스턴트 서버(106)는 엔티티 메타데이터(144)의 하나 이상의 엔트리들이 쿼리 요청으로부터의 엔티티와 매칭되는지 여부를 결정할 수 있다. 제 1 디지털 어시스턴트 서버(106)는 엔티티와 엔티티 메타데이터(144) 간의 매칭이 존재하지 않는다고 결정할 수 있다. 매칭이 존재하지 않는다고 결정함에 응답하여, 제 1 디지털 어시스턴트 서버(106)는 콘텐츠 데이터 보관소(162)를 계속 트래버스할 수 있다. 제 1 디지털 어시스턴트 서버(106)는 트래버스할 엔티티 메타데이터(144)가 더 이상 존재하지 않는다고 결정할 수 있다. 트래버스할 엔티티 메타데이터(144)가 더 이상 존재하지 않는다고 결정함에 응답하여, 제 1 디지털 어시스턴트 서버(106)는 콘텐츠 데이터 보관소(162) 상에 엔티티가 존재하지 않는다고 결정할 수 있다. 제 1 디지털 어시스턴트 서버(106)는 널 응답(null response)을 전송할 수 있다. 널 응답은 제 1 디지털 어시스턴트 서버(106)가 엔티티에 대응하는 멀티미디어 콘텐츠를 가지고 있지 않음을 표시할 수 있다.
반대로, 제 1 디지털 어시스턴트 서버(106)는 엔티티와 엔티티 메타데이터(144) 간의 매칭이 존재한다고 결정할 수 있다. 매칭의 결정에 응답하여, 제 1 디지털 어시스턴트 서버(106)는 콘텐츠 데이터 보관소(162) 상에 엔티티가 존재한다고 결정할 수 있다. 제 1 디지털 어시스턴트 서버(106)는 엔티티에 매칭되는 엔티티 메타데이터(144)에 대응하는 참조 어드레스(148)를 식별할 수 있다. 제 1 디지털 어시스턴트 서버(106)는 검색 응답을 발생시킬 수 있다. 검색 응답은 제 1 디지털 어시스턴트 서버(106)가 엔티티에 대응하는 멀티미디어 콘텐츠를 가지고 있다고 표시할 수 있다. 검색 응답은 엔티티에 대한 멀티미디어 콘텐츠에 대응하는 참조 어드레스(148)를 포함할 수 있다.
제 1 디지털 어시스턴트 서버(106)는 쿼리 요청의 엔티티와 엔티티 메타데이터(144) 간의 추가적인 매칭들을 식별하기 위해 콘텐츠 데이터 보관소(162)에 걸처 계속 트래버스할 수 있다. 추가적인 매칭들이 있는 경우, 제 1 디지털 어시스턴트 서버(106)는 엔티티와 매칭되는 엔티티 메타데이터(144)에 대응하는 참조 어드레스(148)를 반복적으로 식별할 수 있고 참조 어드레스(148)를 검색 응답에 포함할 수 있다. 제 1 디지털 어시스턴트 서버(106)는 트래버스할 엔티티 메타데이터(144)가 더 이상 존재하지 않는다고 결정할 수 있다. 트래버스할 엔티티 메타데이터(144)가 더 이상 존재하지 않는다고 결정함에 응답하여, 제 1 디지털 어시스턴트 서버(106)는 쿼리 검색(query search)을 보낸 검색 조정기 컴포넌트(132), 또는 디스플레이 디바이스(108), 또는 클라이언트 디바이스(104)로 응답을 보낼 수 있다.
데이터 프로세싱 시스템(102)은 콘텐츠 인덱서 컴포넌트(134)를 포함할 수 있거나, 콘텐츠 인덱서 컴포넌트(134)와 인터페이싱할 수 있거나, 또는 그렇지 않으면 콘텐츠 인덱서 컴포넌트(134)와 통신할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 엔티티에 대응하는 참조 어드레스(148)를 식별하기 위해 데이터 프로세싱 시스템(102)의 데이터 보관소(140) 또는 제 1 디지털 어시스턴트 서버(106)에 액세스할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 참조 어드레스(148)를 식별하기 위해 제 1 디지털 어시스턴트 서버(106)에 액세스하기 전에 데이터 보관소(140)에 액세스할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)에 걸처 트래버스할 수 있다. 애플리케이션 식별자들(142)에 추가하여, 데이터 보관소(140)는 하나 이상의 엔티티 메타데이터(144) 및 하나 이상의 순위결정 정책들(146)을 포함할 수 있다. 데이터 보관소(140) 상의 엔티티 메타데이터(144) 및 순위결정 정책들(146)은 콘텐츠 데이터 보관소(162) 상의 엔티티 메타데이터(144) 및 순위결정 정책들(146)과는 별개로 그리고 독립적으로 유지될 수 있다. 데이터 보관소(140) 상의 엔티티 메타데이터(144) 및 순위결정 정책들(146)은 멀티미디어 콘텐츠 제공자들로부터의 이전의 검색 응답들로부터 존재할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)에 저장되는 각각의 엔티티 메타데이터(144) 및 관련된 참조 어드레스(148)에 대해 경과된 시간을 추적하기 위해 타이머(timer)를 유지할 수 있다.
콘텐츠 인덱서 컴포넌트(134)는 콘텐츠 데이터 보관소(140)에 걸쳐 트래버스할 수 있다. 각각의 엔티티 메타데이터(144)에 대해, 콘텐츠 인덱서 컴포넌트(134)는 엔티티를 엔티티 메타데이터(144)와 비교할 수 있다. 예를 들어, 콘텐츠 인덱서 컴포넌트(134)는 엔티티 "배트 무비(Bat Movie)"를 제목과 같은 엔티티 메타데이터(144)에 대한 엔트리들 중 임의의 엔트리에 비교할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 엔티티 메타데이터(144)의 하나 이상의 엔트리들이 쿼리 요청으로부터의 엔티티와 매칭되는지 여부를 결정할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 엔티티와 엔티티 메타데이터(144) 간의 매칭이 존재하지 않는다고 결정할 수 있다. 매칭이 존재하지 않는다고 결정함에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 콘텐츠 데이터 보관소(140)를 계속 트래버스할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 트래버스할 엔티티 메타데이터(144)가 더 이상 존재하지 않는다고 결정할 수 있다. 트래버스할 엔티티 메타데이터(144)가 더 이상 존재하지 않는다고 결정함에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 콘텐츠 데이터 보관소(140) 상에 엔티티가 존재하지 않는다고 결정할 수 있다. 콘텐츠 데이터 보관소(140) 상에 엔티티가 존재하지 않는다고 결정함에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 쿼리 요청을 제 1 디지털 어시스턴트 서버(106)로 보내 참조 어드레스(148)를 검색하도록 하기 위해 검색 조정기 컴포넌트(132)를 호출할 수 있다.
반대로, 콘텐츠 인덱서 컴포넌트(134)는 엔티티와 엔티티 메타데이터(144) 간의 매칭이 존재한다고 결정할 수 있다. 매칭의 결정에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 콘텐츠 데이터 보관소(140) 상에 엔티티가 존재한다고 결정할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 엔티티에 매칭되는 엔티티 메타데이터(144)에 대응하는 참조 어드레스(148)를 식별할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 엔티티에 대응하는 참조 어드레스(148)를 저장할 수 있다.
콘텐츠 인덱서 컴포넌트(134)는 식별된 참조 어드레스(148)에 대해 경과된 시간을 식별할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 경과된 시간을 미리-설정된 만료 시간(pre-set expiration time)과 비교할 수 있다. 미리-설정된 만료 시간은 1시간으로부터 1달까지의 범위를 가질 수 있는데, 왜냐하면 제 1 디지털 어시스턴트 서버(106)는 이용가능한 멀티미디어 콘텐츠의 카탈로그(catalogue)를 주기적으로 업데이트(update) 또는 변경할 수 있기 때문이다. 미리-설정된 만료 시간은 참조 어드레스(148)가 제 1 디지털 어시스턴트 서버(106)에서 엔티티에 대해 유효한(valid) 시간의 양에 대응할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 경과된 시간이 미리-설정된 만료 시간보다 작다고 결정할 수 있다. 경과된 시간이 미리-설정된 만료 시간보다 작다고 결정함에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 엔티티에 대응하는 참조 어드레스(148)를 저장할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 엔티티에 대응하는 참조 어드레스에 대해 검색을 하기 위해 제 1 디지털 어시스턴트 서버(106)의 액세스를 종료(terminate)할 수 있다.
반면에, 콘텐츠 인덱서 컴포넌트(134)는 경과된 시간이 미리-설정된 만료 시간보다 크거나 같다고 결정할 수 있다. 경과된 시간이 미리-설정된 만료 시간보다 크거나 같다고 결정함에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)로부터의 참조 어드레스(148)를 대체(replace)할 수 있다. 데이터 보관소(140)를 업데이트하기 위해, 콘텐츠 인덱서 컴포넌트(134)는 쿼리 요청을 제 1 디지털 어시스턴트 서버(106)로 보내 참조 어드레스(148)를 검색하도록 하기 위해 검색 조정기 컴포넌트(132)를 호출할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 제 1 디지털 어시스턴트 서버(106)로부터 검색 응답을 수신할 수 있다. 검색 응답은 엔티티에 대한 새로운 참조 어드레스(148)를 포함할 수 있다. 제 1 디지털 어시스턴트 서버(106)로부터 참조 어드레스(148)의 수신에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 참조 어드레스(148)를 데이터 보관소(140) 상에 저장할 수 있고, 새롭게 저장된 참조 어드레스(148)를 엔티티에 매칭되는 엔티티 메타데이터(144)와 관련시킬 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 제 1 디지털 어시스턴트 서버(106)로부터 널 응답을 수신할 수 있다. 널 응답의 수신에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)로부터 참조 어드레스(148)를 제거할 수 있다.
콘텐츠 인덱서 컴포넌트(134)는 쿼리 요청의 엔티티와 엔티티 메타데이터(144) 간의 추가적인 매칭들을 식별하기 위해 콘텐츠 데이터 보관소(140)에 걸처 계속 트래버스할 수 있다. 추가적인 매칭들이 있는 경우, 콘텐츠 인덱서 컴포넌트(134)는 엔티티와 매칭되는 엔티티 메타데이터(144)에 대응하는 참조 어드레스(148)를 반복적으로 식별할 수 있고 참조 어드레스(148)를 검색 응답에 포함할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 트래버스할 엔티티 메타데이터(144)가 더 이상 존재하지 않는다고 결정할 수 있다. 트래버스할 엔티티 메타데이터(144)가 더 이상 존재하지 않는다고 결정함에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)에서 추가적인 순위결정 정책들(146)에 대한 검색을 종료할 수 있다. 트래버스에 후속하여, 콘텐츠 인덱서 컴포넌트(134)는 쿼리 요청을 제 1 디지털 어시스턴트 서버(106)로 보내 참조 어드레스(148)를 검색하도록 하기 위해 검색 조정기 컴포넌트(132)를 호출할 수 있다. 검색 조정기 컴포넌트(132)의 호출은 앞서 설명된 경과된 시간과 미리-설정된 만료 시간의 비교와 무관할 수 있다.
쿼리 요청을 보내기 위해 검색 조정기 컴포넌트(132)를 호출하는 것에 후속하여, 콘텐츠 인덱서 컴포넌트(134)는 제 1 디지털 어시스턴트 서버(106)로부터 검색 응답을 수신할 수 있다. 제 1 디지털 어시스턴트 서버(106)로부터 검색 응답의 수신은 제 1 디지털 어시스턴트 서버(106)가 엔티티에 대한 액세스를 가짐을 표시할 수 있다. 검색 응답은 엔티티에 대응하는 참조 어드레스(148)를 포함할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 참조 어드레스(148)를 식별하기 위해 검색 응답을 파싱할 수 있다. 데이터 보관소(140) 상의 엔티티 메타데이터(144)와 엔티티 간의 매칭의 식별에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)로부터의 참조 어드레스(148)를 제 1 디지털 어시스턴트 서버(106)로부터의 참조 어드레스(148)와 비교할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)로부터의 참조 어드레스(148)가 제 1 디지털 어시스턴트 서버(106)로부터의 참조 어드레스(148)와 다르다고 결정할 수 있다. 순위결정 정책들(146)에서의 차이는 제 1 디지털 어시스턴트 서버(106)가 엔티티에 대한 참조 어드레스(148)를 업데이트했음을 의미(signify)할 수 있다. 순위결정 정책들(146)이 다르다는 결정에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)에 저장된 참조 어드레스(148)를 제 1 디지털 어시스턴트 서버(106)로부터의 참조 어드레스(148)로 대체할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)로부터의 참조 어드레스(148)가 제 1 디지털 어시스턴트 서버(106)로부터의 참조 어드레스(148)와 동일하다고 결정할 수 있다. 순위결정 정책들(146)이 동일하다는 결정에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 아래에서 설명되는 바와 같이 쿼리 결과를 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 보내기 위해 응답 핸들러 컴포넌트(138)를 호출하도록 진행할 수 있다.
콘텐츠 인덱서 컴포넌트(134)는 제 1 디지털 어시스턴트 서버(106)로부터 널 응답을 수신할 수 있다. 제 1 디지털 어시스턴트 서버(106)로부터 널 응답의 수신은 제 1 디지털 어시스턴트 서버(106)가 이제 더 이상 엔티티를 가지고 있지 않음을 표시할 수 있다. 예를 들어, 제 1 디지털 어시스턴트 서버(106)는 엔티티를 배제(exclude)하기 위해 이용가능한 멀티미디어 콘텐츠의 카탈로그를 업데이트했을 수 있다. 널 응답의 수신에 응답하여 그리고 데이터 보관소(140) 상의 엔티티 메타데이터(144)와 엔티티 간의 매칭의 식별에 응답하여, 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)로부터 참조 어드레스(148)를 제거할 수 있다. 콘텐츠 인덱서 컴포넌트(134)는 아래에서 설명되는 바와 같이 쿼리 결과를 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 보내기 위해 응답 핸들러 컴포넌트(138)를 호출하도록 진행할 수 있다. 일부 경우들에서, 콘텐츠 인덱서 컴포넌트(134)는 예를 들어, 네트워크(110)와 관련된 문제들로 인해, 또는 제 1 디지털 어시스턴트 서버(106)에서의 운행정지(outage)로 인해, 쿼리 응답의 전송에 후속하여 미리결정된 양의 시간 내에 제 1 디지털 어시스턴트 서버(106)로부터 어떠한 응답들도 수신하지 못할 수 있다. 그러한 경우들에서, 콘텐츠 인덱서 컴포넌트(134)는 데이터 보관소(140)에서 순위결정 정책들(146)을 유지할 수 있다.
데이터 프로세싱 시스템(102)은 순위결정 엔진 컴포넌트(136)를 포함할 수 있거나, 순위결정 엔진 컴포넌트(136)와 인터페이싱할 수 있거나, 또는 그렇지 않으면 순위결정 엔진 컴포넌트(136)와 통신할 수 있다. 순위결정 엔진 컴포넌트(136)는 데이터 보관소(140) 내에 저장된 하나 이상의 순위결정 정책들(146)을 사용할 수 있다. 순위결정 엔진 컴포넌트(136)는 도 2 및 도 3에 도시된 순위 결정 기능들 혹은 블록(block)들과 같은 순위 결정 기능을 사용할 수 있다. 순위 결정 기능은 신뢰도 점수, 레이턴시, 완료까지의 시간, 플래그들, 우선권(priority)들, 미리구성된 선호도들, 프로토콜들, 또는 다른 인자들에 근거할 수 있다. 예를 들어, 제 2 디지털 어시스턴트(120)는 제 1 디지털 어시스턴트보다 우선화될 수 있다.
순위결정 엔진 컴포넌트(136)는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로부터의 쿼리를 프로세싱할 수 있거나 파싱할 수 있어 쿼리에 대한 하나 이상의 신호들을 식별할 수 있거나 발생시킬 수 있다. 순위결정 엔진 컴포넌트(136)는 데이터 보관소(140) 내에 저장된 복수의 결정 기능들로부터 결정 기능을 선택할 수 있다. 결정 기능들은 정책들(146)로서 지칭될 수 있거나 저장될 수 있다. 결정 기능들(혹은 정책들(146))은 쿼리에 대한 신호들에 근거하여 변할 수 있다. 예를 들어, 미디어 콘텐츠에 대한 쿼리는 결과들에 대해 제 1 디지털 어시스턴트를 선택하도록 표시하는 신호를 발생시킬 수 있다. 데이터 프로세싱 시스템(102)에 의해 액세스가능한 데이터베이스로부터의 검색 결과들에 대한 쿼리는 제 2 디지털 어시스턴트로부터의 결과들을 우선화하기 위한 신호를 발생시킬 수 있다.
순위 결정 기능들은 신뢰도 점수들을 고려할 수 있다. 예를 들어, 제 1 디지털 어시스턴트 혹은 제 2 디지털 어시스턴트는 결과들과 함께 신뢰도 점수를 리턴할 수 있다. 예를 들어, 만약 제 2 디지털 어시스턴트가 결과들을 먼저 리턴하고 높은(예컨대, 1점 만점에 0.8보다 큰) 신뢰도 점수를 제공한다면, 데이터 프로세싱 시스템(102)은 임의의 결과들이 제 1 디지털 어시스턴트로부터 나오는 것을 기다리지 않을 수 있고, 그리고 제 2 디지털 어시스턴트로부터의 결과들을 전송하도록 진행할 수 있으며, 그럼으로써 제 1 디지털 어시스턴트를 오버라이드하게 된다.
데이터 프로세싱 시스템(102)은 응답 핸들러 컴포넌트(138)를 포함할 수 있거나, 응답 핸들러 컴포넌트(138)와 인터페이싱할 수 있거나, 또는 그렇지 않으면 응답 핸들러 컴포넌트(138)와 통신할 수 있다. 요청 내의 엔티티에 대응하는 참조 어드레스(148)의 식별에 응답하여, 응답 핸들러 컴포넌트(138)는 참조 어드레스(148)를 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에게 제공할 수 있거나 또는 전송할 수 있다. 응답 핸들러 컴포넌트(138)는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서 콘텐츠 선택 인터페이스를 렌더링하기 위한 명령들을 발생시킬 수 있다. 콘텐츠 선택 인터페이스는 하나 이상의 선택 요소들 및 플레이스홀더 요소(placeholder element)(이것은 집합적으로 때때로 "디스플레이 카드(display card)"로 지칭됨)를 포함할 수 있다. 하나 이상의 선택 요소들은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)의 요청 내에 포함된 엔티티에 대한 참조 어드레스(148)에 대응할 수 있다. 멀티미디어 콘텐츠 애플리케이션들(160)에 의해 수행되는 검색은, 응답 핸들러 컴포넌트(138)가 참조 어드레스(148)를 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 보내기 전에, 완료되지 않았을 수 있다. 결과적으로, 콘텐츠 선택 인터페이스는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상에서 실행되는 멀티미디어 콘텐츠 애플리케이션들(160)에 의해 수행되는 검색으로부터의 결과들을 초기에 배제할 수 있다. 응답 핸들러 컴포넌트(138)는 콘텐츠 선택 인터페이스를 렌더링하기 위한 명령들을, 참조 어드레스(148)와 함께, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에게 제공할 수 있다.
클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)에서 콘텐츠 선택 인터페이스의 제시에 후속하여, 플레이스홀더 요소와의 상호작용은 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 하여금 멀티미디어 콘텐츠 애플리케이션들(160)에 의해 수행되는 검색이 완료되었는지 여부를 결정하도록 할 수 있다. 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 멀티미디어 콘텐츠 애플리케이션들(160)에 의해 수행되는 검색이 완료되었음을 결정할 수 있다. 검색이 완료되었다는 결정에 응답하여, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 추가적인 선택 요소들을 포함하도록 콘텐츠 선택 상호작용을 수정(modify)할 수 있다. 각각의 추가적인 선택 요소는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상에서 실행되는 멀티미디어 콘텐츠 애플리케이션들(160)에 의해 수행되는 검색 동안 발견된 참조 어드레스(148)에 대응할 수 있다. 콘텐츠 선택 요소의 선택 요소들과의 상호작용은, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)로 하여금 관련된 선택 요소의 참조 어드레스(148)에 대응하는 하나 이상의 시청각 파일들을 재생하기 위해 멀티미디어 콘텐츠 애플리케이션(160)(또는 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108) 상에서 실행되는 또 하나의 다른 애플리케이션)을 론칭(launching)시키도록 할 수 있다.
반면에, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 멀티미디어 콘텐츠 애플리케이션들(160)에 의해 수행되는 검색이 아직 완료되지 않았음을 결정할 수 있다. 검색이 아직 완료되지 않았다는 결정에 응답하여, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 미리결정된 양의 시간 동안 기다릴 수 있다. 미리결정된 양의 시간 동안, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 멀티미디어 콘텐츠 애플리케이션들(160)에 의해 수행되는 검색이 완료되었다고 결정할 수 있다. 검색이 완료되었다는 결정에 응답하여, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 추가적인 선택 요소들을 포함하도록 콘텐츠 선택 상호작용을 수정할 수 있다. 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 미리결정된 양의 시간이 경과되었고 검색이 아직 완료되지 않았다고 결정할 수 있다. 미리결정된 양의 시간이 경과되었고 검색이 아직 완료되지 않았다는 결정에 응답하여, 클라이언트 디바이스(104) 혹은 디스플레이 디바이스(108)는 플레이스홀더 요소를 제거하도록 콘텐츠 선택 인터페이스를 수정할 수 있다.
도 2는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템의 예시적인 동작을 예시한다. 시스템(200)은 도 1 또는 도 5에서 도시된 하나 이상의 컴포넌트 혹은 기능을 포함할 수 있다. 시스템(200)은 데이터 프로세싱 시스템(102)을 포함할 수 있다. 시스템(200)은 제 1 디지털 어시스턴트 서버(106)를 포함할 수 있거나, 제 1 디지털 어시스턴트 서버(106)와 인터페이싱할 수 있거나, 또는 그렇지 않으면 통신할 수 있거나, 또는 제 1 디지털 어시스턴트 서버(106)를 이용할 수 있다. 시스템(200)은 제 2 디지털 어시스턴트 서버(120)를 포함할 수 있거나, 제 2 디지털 어시스턴트 서버(120)와 인터페이싱할 수 있거나, 또는 그렇지 않으면 통신할 수 있거나, 또는 제 2 디지털 어시스턴트 서버(120)를 이용할 수 있다. 제 1 디지털 어시스턴트 서버(106)(이것은 제 1 디지털 어시스턴트, 제 1 디지털 어시스턴트 컴포넌트, 또는 제 1 디지털 어시스턴트 애플리케이션으로 지칭될 수 있음)는 제 2 디지털 어시스턴트 애플리케이션(120)(이것은 제 2 디지털 어시스턴트, 제 2 디지털 어시스턴트 컴포넌트, 또는 제 2 디지털 어시스턴트 애플리케이션으로서 지칭될 수 있음)과 독립적으로 실행될 수 있다. 제 1 디지털 어시스턴트 또는 제 2 디지털 어시스턴트 중 하나는 로컬 디지털 어시스턴트로서 지칭될 수 있고, 반면 제 1 디지털 어시스턴트 또는 제 2 디지털 어시스턴트 중 다른 하나는 원격 디지털 어시스턴트로서 지칭될 수 있다. 예를 들어, 제 1 디지털 어시스턴트 서버(106)는 원격 디지털 어시스턴트로서 지칭될 수 있고, 제 2 디지털 어시스턴트 애플리케이션(120)은 로컬 디지털 어시스턴트로서 지칭될 수 있다. 일부 경우들에서, 제 1 디지털 어시스턴트 서버(106)는 로컬 디지털 어시스턴트로서 지칭될 수 있고, 제 2 디지털 어시스턴트 애플리케이션(120)은 원격 디지털 어시스턴트로서 지칭될 수 있다.
동작(202)에서, 클라이언트 디바이스(104)(이것은 디스플레이 디바이스(108)를 포함할 수 있거나, 디스플레이 디바이스(108)와 통합될 수 있거나, 또는 그렇지 않으면 디스플레이 디바이스(108)와 통신가능하게 결합될 수 있음)는 입력 오디오 신호를 수신할 수 있다. 클라이언트 디바이스(104)는 컴퓨팅 디바이스 혹은 클라이언트 컴퓨팅 디바이스로서 지칭될 수 있다. 클라이언트 디바이스(104)는 사용자로부터 오디오 신호를 수신할 수 있다. 오디오 신호는 클라이언트 디바이스(104)의 사용자에 의해 제공된 음성 입력을 포함할 수 있다. 음성 입력은 요청, 쿼리, 커맨드, 명령, 또는 응답을 포함할 수 있다. 클라이언트 디바이스(104)의 마이크로폰(예컨대, 센서(152) 혹은 트랜스듀서(154))은 오디오 입력을 검출 혹은 수신할 수 있다.
동작(222)에서, 클라이언트 디바이스(104)는 오디오 입력, 또는 오디오 입력에 대응하는 데이터를 서버로 전송 혹은 제공할 수 있다. 클라이언트 디바이스(104)는 오디오 입력, 또는 오디오 입력에 대응하는 데이터를 스트리밍 음성 서버("S3")(204) 또는 데이터 프로세싱 시스템(102)으로 전송할 수 있다. 클라이언트 디바이스(104)는 동작(202)에서 수신된 오디오 입력을, 서버로의 전송을 위해 구성된 포맷으로 변환할 수 있다. 클라이언트 디바이스(104)는 예를 들어, 오디오 입력을 사전-프로세싱(pre-processing)할 수 있고, 오디오 입력을, 데이터 네트워크를 통한 전송을 위해 구성된 디지털 포맷으로 변환할 수 있다. 클라이언트 디바이스(104)는, 오디오 입력 내에서 요청을 식별함에 응답하여, 오디오 입력, 또는 오디오 입력에 대응하는 데이터를 전송할 수 있다. 요청은 클라이언트 디바이스(104) 혹은 하나 이상의 서버들에 의해 수행될 콘텐츠 또는 액션에 대한 요청을 사용자가 가진다고 클라이언트 디바이스(104)에게 표시하는, 오디오 입력 내의 키워드(keyword), 핫워드(hotword), 웨이크업 워드(wakeup word), 토큰(token) 또는 다른 표시(indication)를 포함할 수 있다. 클라이언트 디바이스(104)는, 권한부여 혹은 인증에 응답하여, 오디오 입력, 또는 오디오 입력에 대응하는 데이터를 전송할 수 있다.
클라이언트 디바이스(104)는 요청으로서 입력 오디오 신호를 스트리밍 음성 서버(204)에 전송할 수 있다. 요청은 오디오(audio), 말소리(speech), 혹은 음성(voice)을 텍스트로 변환하도록 하는 요청 혹은 오디오 입력의 다운스트림 전송들 혹은 프로세싱을 용이하게 하는 어떤 다른 포맷으로 변환하도록 하는 요청을 포함할 수 있다. S3 서버(204)는 음성을 텍스트로 전사(transcribe)할 수 있다. 동작(224)에서, S3 서버(204)는 전사의 결과들을 클라이언트 디바이스(104)로 다시 보낼 수 있다. 일부 경우들에서, S3 서버(204)는 전사된 결과들을 후속 프로세싱을 위해 데이터 프로세싱 시스템(102)으로 전송할 수 있다. 일부 경우들에서, S3 서버는 전사된 결과들을 저장을 위해 데이터 보관소(220)로 전송할 수 있다.
동작(226)에서, S3 서버(204)는 전사된 결과들을 데이터 프로세싱 시스템(102)으로 전송할 수 있다. 전사된 결과들은 동작(202)에서 수신된 입력 오디오 신호에 대응하는 쿼리를 갖는 데이터 패킷들을 포함할 수 있다. S3 서버(204)는 텍스트 쿼리(text query)를 데이터 프로세싱 시스템(102)으로 전달할 수 있다. 일부 경우들에서, 클라이언트 디바이스(204)는, 오디오 입력을 S3 서버(204)로 전송함이 없이, 오디오 입력을 데이터 패킷들로 변환할 수 있고, 그리고 데이터 패킷들을 데이터 프로세싱 시스템(102)으로 전송할 수 있다.
데이터 프로세싱 시스템(102)은, 클라이언트 디바이스(104)에 의해 검출된 오디오 신호에 대응하는 하나 이상의 데이터 패킷들을 인터페이스를 통해 수신할 수 있다. 데이터 프로세싱 시스템(102)은 클라이언트 디바이스(104) 혹은 S3 서버(204)로부터 하나 이상의 데이터 패킷들을 수신할 수 있다. 하나 이상의 데이터 패킷들은 텍스트 쿼리를 포함할 수 있고, 또는 데이터 프로세싱 시스템(102)은 쿼리를 식별하기 위해 하나 이상의 데이터 패킷들을 프로세싱할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 오디오 신호에 대응하는 수신된 데이터 패킷들에 근거하여 쿼리를 발생시킬 수 있다.
데이터 프로세싱 시스템(102)은 쿼리를 프로세싱을 위해 하나 이상의 디지털 어시스턴트들로 전송할 수 있다. 데이터 프로세싱 시스템(102)은 쿼리를 프로세싱을 위해 하나 이상의 디지털 어시스턴트들에게 제공할 수 있다. 데이터 프로세싱 시스템(102)은 데이터 프로세싱 시스템(102)에 의해 실행 혹은 관리되는 하나 이상의 디지털 어시스턴트들을 사용하여 쿼리를 프로세싱할 수 있다. 데이터 프로세싱 시스템(102)은 데이터 프로세싱 시스템(102)으로부터 외부에 있는 하나 이상의 디지털 어시스턴트들에게 쿼리를 제공할 수 있다. 디지털 어시스턴트는 데이터 프로세싱 시스템(102)으로부터 외부에 있을 수 있는데, 이것은 디지털 어시스턴트가 지리적으로 데이터 프로세싱 시스템(102)로부터 원격지에 있는 경우, 또는 데이터 프로세싱 시스템(102)과는 다른 엔티티에 의해 운용 혹은 관리되는 경우이다. 디지털 어시스턴트는 만약 해당 디지털 어시스턴트가 상이한 타입의 디지털 어시스턴트라면, 데이터 프로세싱 시스템(102)으로부터 외부에 있는 것으로 지칭될 수 있다.
데이터 프로세싱 시스템(102)은 쿼리를 프로세싱을 위해 다수의 디지털 어시스턴트 컴포넌트들로 전송할 수 있거나, 제공할 수 있거나, 또는 그렇지 않으면 운반할 수 있거나 또는 전달할 수 있다. 다수의 디지털 어시스턴트들 중 하나 이상은 쿼리를 프로세싱할 수 있고 쿼리에 대한 응답을 발생시킬 수 있다. 데이터 프로세싱 시스템(102)은 제 2 디지털 어시스턴트 애플리케이션(120)과 같은 내부 디지털 어시스턴트를 포함할 수 있다. 제 2 디지털 어시스턴트 애플리케이션(120)은 쿼리를 프로세싱하여 쿼리에 대한 응답을 발생시킬 수 있다. 데이터 프로세싱 시스템(102)(혹은 인터페이스(122))은 쿼리를 프로세싱을 위해 제 2 디지털 어시스턴트 애플리케이션(120)으로 전송할 수 있다. 데이터 프로세싱 시스템(102)(혹은 인터페이스(122))은 쿼리를 프로세싱을 위해 데이터 프로세싱 시스템(102) 외부에 있는 제 1 디지털 어시스턴트 서버(106)로 전송할 수 있다. 데이터 프로세싱 시스템(102)은 (예를 들어, 인터페이스(122) 또는 제 2 디지털 어시스턴트 애플리케이션(120)을 통해) 동시에 혹은 오버랩핑 방식으로 프로세싱을 행하기 위해 쿼리를 다수의 디지털 어시스턴트들로 동시에 전송할 수 있다. 예를 들어, 제 2 디지털 어시스턴트 애플리케이션(120)은 쿼리를 수신할 수 있고, 그리고 쿼리에 대한 응답을 발생시키기 위해 쿼리를 제 1 디지털 어시스턴트 서버(106)로 전송할 수 있다. 제 2 디지털 어시스턴트 애플리케이션(120)은, 제 2 디지털 어시스턴트 애플리케이션(120)이 쿼리를 프로세싱하거나 쿼리에 대한 응답을 발생시키기 전에, 쿼리를 제 1 디지털 어시스턴트 서버(106)로 전송할 수 있고, 그럼으로써 제 2 디지털 어시스턴트 애플리케이션(120)에 의해 야기되는 레이턴시 혹은 지연을 감소시키게 된다. 일부 경우들에서는, 레이턴시 혹은 지연을 더 감소시키기 위해, 인터페이스(122)는 동시 프로세싱 혹은 오버랩핑 프로세싱을 위해 쿼리를 제 2 디지털 어시스턴트 애플리케이션(120) 및 제 1 디지털 어시스턴트 서버(106)로 동시에 전송할 수 있다.
데이터 프로세싱 시스템(102)은, 데이터 프로세싱 시스템(102)의 제 2 디지털 어시스턴트 애플리케이션(120) 전에, 쿼리를 제 1 디지털 어시스턴트 서버(106)로 (예를 들어, 인터페이스(122)를 통해) 전송할 수 있다. 데이터 프로세싱 시스템(102)은, 쿼리가 제 2 디지털 어시스턴트 애플리케이션(120)으로 전송된 이후, 쿼리를 제 1 디지털 어시스턴트 서버(106)로 전송할 수 있다. 데이터 프로세싱 시스템(102)은, 제 2 디지털 어시스턴트 애플리케이션(120)이 쿼리를 수신한 이후, 쿼리를 제 1 디지털 어시스턴트 서버(106)로 전송할 수 있다. 데이터 프로세싱 시스템(102)은 데이터 프로세싱 시스템(102)에 의해 수신된 쿼리, 혹은 본래의 쿼리를 클라이언트 디바이스(104)로부터 제 1 디지털 어시스턴트 서버(106)로 전송하기 위해 혹은 포스팅(posting)하기 위해 애플리케이션 프로그래밍 인터페이스(API)를 이용할 수 있다. 일부 경우들에서, 데이터 프로세싱 시스템(102)은 클라이언트 디바이스(104)로부터 수신된 본래의 쿼리를 제 1 디지털 어시스턴트 서버(106)로 제공할 수 있거나, 전송할 수 있거나, 중계할 수 있거나, 또는 전달할 수 있다. 일부 경우들에서, 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트 서버(106)로의 전송 전에 본래의 쿼리를 프로세싱 혹은 수정할 수 있다.
데이터 프로세싱 시스템(102)은 제 2 디지털 어시스턴트를 사용하여 텍스트 쿼리를 프로세싱 혹은 파싱할 수 있고, 그리고 제 2 디지털 어시스턴트 후보 결과들(204)을 발생시킬 수 있다. 텍스트 쿼리는 208에서 제 1 디지털 어시스턴트 서버(106)로 전달될 수 있는데, 여기서 제 1 디지털 어시스턴트 서버(106)는 클라우드 서버 시스템(cloud server system) 내에서 실행되고 있을 수 있다. 제 1 디지털 어시스턴트 서버(106)는 제 2 디지털 어시스턴트를 실행시키는 데이터 프로세싱 시스템(102)으로부터 분리될 수 있다. 데이터 프로세싱 시스템은, 복수의 디지털 어시스턴트들로 하여금 쿼리를 오버랩핑 방식으로 프로세싱하도록 하기 위해서 독립적인 브랜치를 통해 복수의 디지털 어시스턴트들 각각으로 쿼리를 전송할 수 있다. 독립적인 브랜치는, 별개의 디지털 어시스턴트들이 응답을 발생시키기 위해 쿼리를 별도로 프로세싱하는 동안 서로 통신하지 않는, 로직 흐름(logic flow) 내의 로직 브랜치(logical branch), 또는 별개의 프로세싱 쓰레드(processing thread)를 지칭할 수 있다. 별개의 디지털 어시스턴트들은 결과들을 발생시키기 위해 쿼리를 오버랩핑 방식으로 별도로 프로세싱할 수 있다. 제 1 디지털 어시스턴트 후보 결과들(206)이 응답(212)에서 데이터 프로세싱 시스템(102)에게 제공될 수 있다. 제 1 디지털 어시스턴트 서버(106)는 제 2 디지털 어시스턴트 애플리케이션(120)을 확립한 다른 관리자에 의해 확립될 수 있다. 예를 들어, 제 2 디지털 어시스턴트 애플리케이션(120)과 비교하여 다른 회사들, 엔티티들, 혹은 제조자들이 제 1 디지털 어시스턴트 서버(106)를 설계하고 구성할 책임이 있었을 수 있다. 제 1 디지털 어시스턴트 서버(106)와 제 2 디지털 어시스턴트 애플리케이션(120)은 쿼리에 대한 응답 혹은 결과를 발생시키기 위해 서로 독립적으로 실행될 수 있다.
제 1 디지털 어시스턴트 및 제 2 디지털 어시스턴트는 상이한 타입의 정보 혹은 데이터에 대한 액세스를 가질 수 있다. 제 1 디지털 어시스턴트 서버(106)는, 제 2 디지털 어시스턴트 애플리케이션(120)이 액세스할 권한을 부여받지 못할 수 있거나 액세스하는 것이 금지되어 있을 수 있는 데이터베이스 혹은 데이터 소스에 액세스할 권한을 부여받을 수 있다. 예를 들어, 제 1 디지털 어시스턴트 서버(106)은 영화들 혹은 노래들을 저장하는 멀티미디어 보관소에 대한 액세스를 가질 수 있다. 이러한 멀티미디어 보관소에 대한 액세스는 자격증명(credential)들 혹은 구독(subscription)을 통한 권한부여를 포함할 수 있다. 제 1 디지털 어시스턴트(106)는 클라이언트 디바이스(104)의 사용자 프로파일(user profile) 혹은 클라이언트 디바이스(104)와 관련된 구독 정보를 통해 인증 정보에 대한 액세스를 가질 수 있는데, 하지만 이러한 자격증명들은 제 2 디지털 어시스턴트 애플리케이션(120)으로 전달되지 않을 수 있거나 사용가능하지 않을 수 있다.
데이터 프로세싱 시스템(102)은 쿼리에 대한 결과들을 수신할 수 있다. 데이터 프로세싱 시스템(102)은 하나 이상의 디지털 어시스턴트들로부터 쿼리에 대한 후보 결과들을 수신할 수 있다. 데이터 프로세싱 시스템(102)은 제 2 디지털 어시스턴트 후보 결과들(210)을 수신할 수 있다. 동작(212)에서, 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트 후보 결과들(206)을 수신할 수 있다. 제 1 디지털 어시스턴트 후보 결과들(206) 및 제 2 디지털 어시스턴트 후보 결과들(210)은 서로 유사한 포맷을 가질 수 있거나 혹은 상이한 포맷들을 가질 수 있다. 제 1 디지털 어시스턴트 후보 결과들(206) 및 제 2 디지털 어시스턴트 후보 결과들(210)은 상이한 소스들로부터 온 것일 수 있고, 그리고 상이한 기법들, 기능들, 파라미터들, 선택 기준들, 혹은 프로세스들을 사용하여 발생될 수 있다.
제 1 디지털 어시스턴트 컴포넌트 및 제 2 디지털 어시스턴트 컴포넌트로부터의 결과들은, 클라이언트 디바이스(104)에 의해 수신된 입력 오디오 신호로부터의 쿼리에 근거하는 혹은 이에 응답하는 콘텐츠 아이템(content item)들, 참조(reference)들, 링크(link)들, 이미지(image)들, 텍스트(text), 비디오(video), 오디오(audio), 또는 다른 타입의 결과들을 포함할 수 있다. 결과들은 다양한 소소들로부터의 데이터를 포함할 수 있다. 결과들은 스트리밍 데이터를 포함할 수 있다. 결과들은 스트리밍 오디오 혹은 비디오와 같은 스트리밍 콘텐츠에 대한 참조 혹은 링크를 포함할 수 있다. 결과들은 쿼리에 응답하는 제안(suggestion)들을 포함할 수 있다. 결과들은 콘텐츠에 대한 딥 링크(deep link)를 포함할 수 있다. 결과들은, 결과들에 포함된 혹은 결과들에서 식별된 콘텐츠에 액세스하도록 클라이언트 디바이스(104)에게 권한을 부여하도록 구성된 인증 혹은 자격증명 정보를 포함할 수 있다.
214에서, 데이터 프로세싱 시스템(102)은 후보 결과들(204 또는 206)을 선택하기 위해 순위 결정을 수행할 수 있다. 제 2 디지털 어시스턴트 애플리케이션(120)은 순위 결정을 수행할 수 있다. 제 2 디지털 어시스턴트 애플리케이션(120) 또는 데이터 프로세싱 시스템(102)의 순위결정 엔진 컴포넌트(136)가 순위 결정을 수행할 수 있다. 예를 들어, 순위결정 엔진 컴포넌트(136)는 후보 결과들을 수신할 수 있고, 또는 다수의 디지털 어시스턴트 컴포넌트들로부터의 후보 결과들이 이용가능하다는 표시를 수신할 수 있다. 순위결정 엔진 컴포넌트(136)는, 데이터 프로세싱 시스템(102)이 쿼리를 전송한 모든 디지털 어시스턴트 컴포넌트들로부터 결과들이 수신되었다는 표시를 순위결정 엔진 컴포넌트(136)가 수신할 때까지, 순위 결정을 수행하는 것을 기다릴 수 있다.
데이터 프로세싱 시스템(102)은 (예를 들어, 순위결정 엔진 컴포넌트(136)를 통해) 순위 결정 기능에 근거하여 제 1 디지털 어시스턴트 애플리케이션 서버(106)(예를 들어, 제 1 디지털 어시스턴트 컴포넌트) 또는 제 2 디지털 어시스턴트 애플리케이션(120)(예를 들어, 제 2 디지털 어시스턴트 컴포넌트) 중 하나로부터의 응답 혹은 결과들을 선택할 것을 결정할 수 있다. 데이터 프로세싱 시스템(102)은 제 2 디지털 어시스턴트 후보 결과들(210), 또는 제 1 디지털 어시스턴트 후보 결과들(206)을 선택할 것을 결정할 수 있다. 데이터 프로세싱 시스템(102)은 제 2 디지털 어시스턴트 후보 결과들(210) 또는 제 1 디지털 어시스턴트 후보 결과들(206) 중 하나로부터의 결과들 중 하나를 선택할 것을 결정할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트 컴포넌트로부터의 응답 혹은 결과 대신에 제 2 디지털 어시스턴트 컴포넌트로부터의 응답 혹은 결과를 선택할 것을 결정할 수 있다.
데이터 프로세싱 시스템(102)은 결과 혹은 응답을 선택하기 위해 다양한 순위 결정 기능들 혹은 기법들을 이용할 수 있고, 이것의 일부 예들이 다음의 문단들에서 설명된다. 데이터 프로세싱 시스템(102)은 입력 오디오 신호와 관련된 신호 또는 입력 오디오 신호에 대응하는 쿼리에 근거하여 순위 결정 기능 혹은 기법을 선택할 수 있다. 데이터 프로세싱 시스템(102)은 입력 오디오 신호와 관련된 신호 또는 입력 오디오 신호에 대응하는 쿼리에 근거하여 디지털 어시스턴트 또는 응답을 선택할 수 있다. 신호들은, 쿼리가 미디어의 타입에 대한 것인지, 인터넷 검색 쿼리에 대한 것인지, 뉴스 요청에 대한 것인지, 날씨 요청에 대한 것인지, 비디오 요청에 대한 것인지, 영화 요청에 대한 것인지, 음악 요청에 대한 것인지, 또는 다른 타입의 요청에 대한 것인지를 표시할 수 있다. 데이터 프로세싱 시스템(102)은, 결과를 제공한 디지털 어시스턴트와 관련된 정보에 근거하여, 결과 자체와 관련된 정보에 근거하여, 클라이언트 디바이스(104)와 관련된 정보에 근거하여, 클라이언트 디바이스(104)와 관련된 사용자의 프로파일과 관련된 정보에 근거하여, 결과의 타입에 근거하여, 결과를 제공하기 위해 사용된 데이터 소스에 근거하여, 결과가 링크된 혹은 지시하는 데이터 소스, 결과들의 데이터 크기, 또는 다른 인자들에 근거하여, 응답 혹은 결과를 선택할 수 있다.
데이터 프로세싱 시스템(102)은 미리-구성된 선호도들에 근거하여 결과들 혹은 응답을 선택할 수 있다. 미리-구성된 선호도들은 클라이언트 디바이스(104), 데이터 프로세싱 시스템(102), 혹은 제 1 디지털 어시스턴트 서버(106) 상에 저장될 수 있거나 또는 구성될 수 있다. 예를 들어, 제 2 디지털 어시스턴트 애플리케이션(120)은 클라이언트 디바이스(104) 상에서 적어도 부분적으로 실행될 수 있다. 제 2 디지털 어시스턴트 애플리케이션(120)은 클라이언트 디바이스(104) 상에 위치하는 인터페이스를 포함할 수 있다. 제 2 디지털 어시스턴트 애플리케이션(120)은 클라이언트 디바이스(104)의 관리자, 제조자, 혹은 제공자와 관련될 수 있다. 제 2 디지털 어시스턴트 애플리케이션(120)은 선호되는 디지털 어시스턴트인 것으로 미리-구성될 수 있다. 클라이언트 디바이스(104)에 대해 선호되는 디지털 어시스턴트인 것은 데이터 프로세싱 시스템(102)으로 하여금 제 1 디지털 어시스턴트 후보 결과들(206)로부터의 결과 대신에 제 2 디지털 어시스턴트 후보 결과들(210)로부터의 결과의 선택을 우선화하도록 할 수 있다. 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트(106)로부터의 결과들보다 제 2 디지털 어시스턴트(120)로부터의 결과들에 더 높은 순위를 부여할 수 있다. 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트 서버(106)로부터의 결과들보다 제 2 디지털 어시스턴트 애플리케이션(120)로부터의 결과들에 더 많은 가중치(weight)를 부여할 수 있다. 제 2 디지털 어시스턴트 애플리케이션(120)으로부터의 결과들에 순위, 가중치, 또는 그렇지 않으면 우선권을 부여함으로써, 데이터 프로세싱 시스템(102)이, 제 1 디지털 어시스턴트 서버(106)로부터의 결과들과 비교하여 제 2 디지털 어시스턴트(120)로부터의 결과들을 선택할 가능성이 더 클 수 있다. 선호도, 순위 부여, 가중치 부여, 혹은 다른 우선권 부여와 관련된 구성 정보는 데이터베이스(140)(예컨대, 정책들(146) 데이터 구조) 내에 저장될 수 있거나, 또는 클라이언트 디바이스(104) 혹은 다른 데이터 저장 디바이스 상에 저장될 수 있다.
데이터 프로세싱 시스템(102)은 응답 혹은 결과 자체에 대한 정보 또는 응답 혹은 결과 자체와 관련된 정보에 근거하여 결과 혹은 응답을 선택할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은, 순위 결정 기능에 근거하여, 오디오만 있는(audio-only) 콘텐츠, 비디오 및 오디오(video and audio) 콘텐츠, 비디오만 있는(video-only) 콘텐츠, 텍스트만 있는(text only) 콘텐츠, 이미지만 있는(image only) 콘텐츠, 또는 다른 멀티미디어 콘텐츠를 포함하는 응답에 기반을 둔 응답을 선택할 것을 결정할 수 있다. 데이터 프로세싱 시스템(102)은 예를 들어, 제 2 응답과 관련된 속성 혹은 특성에 근거하여 제 1 응답을 선택할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 오디오만 포함하는 제 2 응답에 응답하여 비디오를 포함할 수 있는 제 1 응답을 선택할 수 있다.
데이터 프로세싱 시스템(102)은 디지털 어시스턴트 혹은 결과에 대한 데이터 소스에 근거하여 결과, 응답 혹은 디지털 어시스턴트를 선택할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은, 순위 결정 기능에 근거하여, 제 2 디지털 어시스턴트 컴포넌트가 클라이언트 디바이스(104)의 메모리 내에 저장된 데이터에 액세스하는 것을 근거로 제 2 디지털 어시스턴트 컴포넌트로부터 제 2 응답을 선택할 것을 결정할 수 있다. 데이터 프로세싱 시스템(102)은 데이터가 데이터를 제시 혹은 렌더링하는 클라이언트 디바이스(104) 상에 저장되어 있다는 것의 결과로서 네트워크 대역폭 사용 혹은 레이턴시 혹은 데이터 저장을 감소시키기 위해 이러한 결정을 행할 수 있다.
데이터 프로세싱 시스템(102)은 결과가 어떻게 선택되었는지와 관련된 정보에 근거하여 응답 또는 결과들을 선택할 수 있다. 예를 들어, 결과를 선택하기 위해 사용되는 선택 기법 혹은 프로세스는 결과에 대한 신뢰도 점수를 출력할 수 있다. 신뢰도 점수는, 결과가 정확한지, 신뢰가능한지, 또는 쿼리에 대한 응답인지와 관련된 신뢰도의 레벨을 반영, 표시, 혹은 전달할 수 있다. 예를 들어, 특정 결과는 결과와 관련된 높은 신뢰도 점수(예를 들어, 0.7, 0.8, 0.9 또는 1)를 가질 수 있고, 반면 또 하나의 다른 결과는 낮은 신뢰도 점수(예를 들어, 0.4, 0.3, 0.2 혹은 더 적은 값)를 가질 수 있다. 신뢰도 점수는 결과가 쿼리와 매칭되거나 쿼리에 대한 응답일 가능성(likelihood)을 표시할 수 있다. 신뢰도 점수는 클라이언트 디바이스(104)의 사용자가 결과 또는 결과에 대응하는 콘텐츠 아이템과 상호작용할 가능성을 표시할 수 있다. 따라서, 데이터 프로세싱 시스템(102)은 예를 들어, 제 2 디지털 어시스턴트 컴포넌트로부터의 응답에 대한 신뢰도 점수에 근거하여 제 2 디지털 어시스턴트 후보 결과들(210)로부터 응답 혹은 결과를 선택할 수 있다.
결과는 하나 이상의 인자들에 근거하여 낮은 신뢰도 점수 혹은 높은 신뢰도 점수를 가질 수 있다. 예를 들어, 디지털 어시스턴트 컴포넌트는 유한한 혹은 미리결정된 세트의 데이터 또는 데이터 소스들에 대한 액세스를 가질 수 있다. 디지털 어시스턴트 컴포넌트는 데이터 소스에 대한 제한된 액세스에 근거하여 결과들에 관해 제한될 수 있다. 따라서, 디지털 어시스턴트 컴포넌트는 제한된 세트의 데이터 소스들로부터의 최상의 매칭 결과가 여전히 낮은 신뢰도 점수와 관련될 수 있다고 결정할 수 있다.
결정 블록(216)에서, 데이터 프로세싱 시스템(102)(혹은 순위결정 엔진 컴포넌트(136))는 제 2 디지털 어시스턴트로부터의 결과들이 선호되는지 여부를 결정할 수 있다. 만약 데이터 프로세싱 시스템(102)이 결정 블록(216)에서 제 2 디지털 어시스턴트로부터의 결과들이 선호된다고 결정한다면, 데이터 프로세싱 시스템은 HTML 어댑터(HTML adapter)(218)로 진행한다. HTML 어댑터(218)는 HTML로 코딩될 수 있는 제 2 디지털 어시스턴트로부터의 결과들을 S3 서버(204)와 호환가능한 포맷으로 변환할 수 있다. HTML 어댑터(218)는 제 2 디지털 어시스턴트 후보 결과들(210)로부터의 변환된 결과들을 S3 서버로 전달할 수 있다.
하지만, 만약 데이터 프로세싱 시스템(102)이 결정 블록(216)에서 제 2 디지털 어시스턴트로부터의 결과들이 선호되지 않는다고 결정한다면, 데이터 프로세싱 시스템(102)은 S3 서버(204)로 진행할 수 있고, 그리고 제 1 디지털 어시스턴트 서버(106)로부터의 응답(212)을 제공할 수 있다.
데이터 프로세싱 시스템(102)(예를 들어, 순위결정 엔진 컴포넌트(136))은 응답을 선택하기 위한 다양한 로직, 규칙들, 휴리스틱 기법(heuristic technique)들 혹은 다른 기능을 갖도록 구성될 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트라고 결정할 수 있다. 데이터 프로세싱 시스템(102)은, 쿼리의 타입, 구성 정보, 프로파일 정보, 미리-결정된 정보, 혹은 다른 인자들에 근거하여 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정할 수 있다. 데이터 프로세싱 시스템(102)은 선호되는 디지털 어시스턴트로서 설정된 제 1 디지털 어시스턴트로부터 제 1 응답을 수신할 수 있다. 제 1 디지털 어시스턴트로부터의 이러한 제 1 응답은 플래그와 관련될 수 있다. 제 1 디지털 어시스턴트는 제 1 응답에 대한 플래그를 할당할 수 있거나, 부착할 수 있거나, 제공할 수 있거나, 또는 그렇지 않으면 표시할 수 있다. 플래그는 이러한 제 1 응답이 폴백 응답임을 표시할 수 있다. 폴백 응답은 또 하나의 다른 응답이 존재하지 않은 경우에 사용될 대안적 응답(alternative response)인 그러한 응답을 지칭할 수 있다. 폴백 응답은 순위결정 엔진 컴포넌트(136)에 의해 수행되는 선택 프로세스에 응답을 입력할 때 제 1 응답의 우선권, 가중치, 또는 순위를 낮추도록 표시할 수 있다. 제 1 디지털 어시스턴트 혹은 데이터 프로세싱 시스템(102)은 제 1 응답과 관련된 신뢰도 점수, 또는 제 1 응답과 관련된 다른 인자에 근거하여 제 1 응답을 폴백 응답으로서 플래그할 것을 결정할 수 있다. 예를 들어, 제 1 디지털 어시스턴트 컴포넌트는 제 1 응답과 관련된 데이터 파일과 관련된 품질이 낮은 품질을 갖거나 또는 임계치 아래에 있는 품질을 갖는다고 결정할 수 있다. 품질은 비디오 품질, 이미지 품질, 또는 오디오 품질을 지칭할 수 있거나 또는 포함할 수 있다. 품질은 데이터 스트리밍 속도(data streaming rate)를 지칭할 수 있거나 또는 포함할 수 있다. 품질은 데이터 파일을 전송함에 있어서 지연을 지칭할 수 있고, 또는 데이터 소스와의 연결을 확립함에 있어서 지연을 지칭할 수 있다. 품질은 결과와 관련된 평가(rating) 또는 검토(review)와 같은 응답의 실체(substance)의 품질을 지칭할 수 있다. 품질은 클라이언트 디바이스(104)와 관련된 프로파일 또는 쿼리에 대한 결과의 관련성을 지칭할 수 있다. 제 1 디지털 어시스턴트 컴포넌트는 제 1 응답과 관련된 신뢰도 점수가 낮음 또는 임계치 아래에 있음을 결정할 수 있다.
결과와 관련된 품질 혹은 신뢰도 점수가 낮거나 또는 임계치 아래에 있다는 결정에 응답하여, 제 1 디지털 어시스턴트 컴포넌트는 응답을 폴백 응답으로서 플래그할 수 있다. 즉, 비록 제 1 디지털 어시스턴트 컴포넌트(예를 들어, 제 1 디지털 어시스턴트 서버(106))가 선호되는 디지털 어시스턴트이도록 구성되지만, 제 1 디지털 어시스턴트 컴포넌트는 제 1 디지털 어시스턴트 컴포넌트에 의해 발생 혹은 제공되는 응답을 폴백 응답으로서 플래그할 수 있다. 데이터 프로세싱 시스템(102)(예를 들어, 순위결정 엔진 컴포넌트(136))는, 선호되는 디지털 어시스턴트인 제 1 디지털 어시스턴트 서버(106)로부터 결과를 수신할 때, 제 1 디지털 어시스턴트 컴포넌트를 오버라이드할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 선호되는 디지털 어시스턴트 컴포넌트로부터 응답을 선택하도록 구성될 수 있다. 하지만, 선호되는 디지털 어시스턴트 컴포넌트로부터의 결과가 폴백 응답으로서 플래그되어 있기 때문에, 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트 컴포넌트로부터 응답을 선택하지 않을 것을 결정할 수 있고, 그럼으로써 제 1 디지털 어시스턴트 컴포넌트를 오버라이드하게 된다. 대신, 데이터 프로세싱 시스템(102)은, 클라이언트 디바이스(104)에 제공하기 위해, 선호되는 디지털 어시스턴트 컴포넌트가 아닐 수 있는 제 2 디지털 어시스턴트 컴포넌트(120)로부터 응답을 선택할 수 있다.
제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트 컴포넌트일지라도, 제 2 디지털 어시스턴트로부터 응답을 선택함으로써 제 1 디지털 어시스턴트 컴포넌트를 오버라이드하는 경우, 그럼에도 불구하고 데이터 프로세싱 시스템(102)은 제 1 디지털 어시스턴트 컴포넌트를 선호되는 디지털 어시스턴트로서 유지할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 폴백 응답으로서 플래그된 응답에 대해 제 1 디지털 어시스턴트 컴포넌트를 오버라이드할 수 있지만, 폴백 응답들로서 플래그되지 않은 다른 응답들에 대해서는 그렇지 않을 수 있다.
데이터 프로세싱 시스템(102)은 하나 이상의 선택된 결과들 또는 선택된 디지털 어시스턴트로부터의 하나 이상의 결과들을 클라이언트 디바이스(104)에게 제공할 수 있다. 데이터 프로세싱 시스템(102)은 또 하나의 다른 디바이스 또는 서버를 통해 결과들을 클라이언트 디바이스(104)에게 제공할 수 있다. 데이터 프로세싱 시스템(102)은 결과들을 클라이언트 디바이스(104)에게 제공하기 전에 결과들을 사전-프로세싱할 수 있거나, 또는 그렇지 않으면 조작 혹은 수정할 수 있다. 데이터 프로세싱 시스템(102)은, 결과들이 클라이언트 디바이스에게 제공되기 전에, 프로세싱을 위해 데이터 프로세싱 시스템(102)으로부터 원격지에 있는 디바이스 혹은 서버에게 결과들을 제공할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 결과들을 S3 서버(204)에게 제공할 수 있다. S3 서버(204)는 HTML 어댑터(218) 또는 제 1 디지털 어시스턴트 서버(106)로부터 수신된 응답을 오디오로 변환할 수 있고, 그리고 오디오 응답을 렌더링 혹은 제시를 위해 클라이언트 디바이스(104) 또는 디스플레이 디바이스(108)에게 제공할 수 있다. S3 서버(204)는 후속 프로세싱을 위한 데이터 로그(data log)로서 또는 후속 프로세싱을 위해 디바이스 보관소(220) 내에 응답을 저장할 수 있다.
일부 경우들에서, 데이터 프로세싱 시스템(102)은 선택된 응답 혹은 결과를 클라이언트 디바이스(104)에게 제공할 수 있다. 클라이언트 디바이스(104)는 클라이언트 디바이스(104)의 출력 인터페이스를 통해 응답을 제시하도록 구성될 수 있다. 클라이언트 디바이스(104)는 클라이언트 디바이스(104)의 출력 인터페이스를 통해 제시하기 위해 결과 혹은 응답을 하나의 포맷으로부터 또 하나의 다른 포맷으로 변환하도록 구성될 수 있다. 예를 들어, 클라이언트 디바이스(104)는 텍스트 혹은 HTML 콘텐츠를 오디오 출력 혹은 시각적 출력으로 변환하기 위해 텍스트-대-음성 기능(text-to-speech functionality)을 갖도록 자체적으로 구성될 수 있다.
도 3은 도 1 혹은 도 2에서 예시된 예시적인 시스템을 사용하여 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 흐름도를 예시한다. 프로세스(300)는 데이터 프로세싱 시스템(102), 제 1 디지털 어시스턴트 서버(106), 클라이언트 디바이스(104), 하나 이상의 프로세서 또는 컴퓨팅 디바이스(500)에 의해 수행될 수 있다. 302에서, 데이터 프로세싱 시스템은 제 1 브랜치에서 제 1 디지털 어시스턴트를 실행시킬 수 있고, 제 2 브랜치에서 제 2 디지털 어시스턴트를 실행시킬 수 있다. 두 개의 디지털 어시스턴트는 병렬로 혹은 오버랩핑 방식으로 실행될 수 있다. 오버랩핑 프로세싱은 양쪽 디지털 어시스턴트가 적어도 부분적 양의 시간 동안 동시에 실행되는 것을 지칭할 수 있다. 오버랩핑 프로세스는 적어도 부분적으로 병렬로 또는 적어도 부분적으로 동시에 실행되는 것을 지칭할 수 있다. 디지털 어시스턴트들 중 하나는 먼저 실행을 시작할 수 있거나 먼저 실행을 중단할 수 있다. 별개의 디지털 어시스턴트 상의 프로세싱이 동시에(예를 들어, 동일한 시간에) 일어날 수 있다. 제 1 디지털 어시스턴트는 써드 파티 서버 상에서 실행될 수 있다. 제 2 디지털 어시스턴트는 데이터 프로세싱 시스템 상에서 실행될 수 있다. 제 1 디지털 어시스턴트는 제 2 디지털 어시스턴트를 관리하는 엔티티와는 다른 써드 파티에 의해 관리될 수 있다.
304에서, 데이터 프로세싱 시스템은 제 2 디지털 어시스턴트로부터의 결과가 이용가능한지를 결정하기 위해 결정 블록을 실행할 수 있다. 만약 제 2 디지털 어시스턴트로부터의 결과가 이용가능하지 않다면, 동작(306)에서, 데이터 프로세싱 시스템은 결정 블록(304)으로 되돌아갈 수 있고 결과가 이용가능한지를 알아내기 위해 다시 점검을 행할 수 있다. 데이터 프로세싱 시스템은 제 2 디지털 어시스턴트로부터의 결과가 이용가능한지를 반복적으로 점검하기 위해 결정 블록(304)으로 되돌아갈 수 있다. 일부 경우들에서, 데이터 프로세싱 시스템은 제 2 디지털 어시스턴트로부터의 결과가 미리결정된 양의 시간(예를 들어, 10초, 30초, 60초, 또는 그 이상의 시간) 동안 이용가능하지 않다면 타임아웃(timeout)될 수 있다.
만약 데이터 프로세싱 시스템이 블록(304)에서 행한 결정이, 제 2 디지털 어시스턴트로부터의 결과들이 이용가능함(동작(308))이라면, 데이터 프로세싱 시스템은 제 2 디지털 어시스턴트로부터의 결과들이 선호되는지를 결정하기 위해 결정 블록(310)으로 진행할 수 있다. 만약 제 2 디지털 어시스턴트로부터의 결과들이 선호된다면, 데이터 프로세싱 시스템은 블록(312)으로 진행할 수 있고, 여기서 데이터 프로세싱 시스템은 제 2 디지털 어시스턴트로부터 응답을 선택할 수 있다.
하지만, 만약 데이터 프로세싱 시스템이 블록(310)에서 제 2 디지털 어시스턴트로부터의 결과들이 선호되지 않는다고 결정한다면, 데이터 프로세싱 시스템은 블록(314)으로 진행할 수 있고 제 1 디지털 어시스턴트로부터 응답을 기다릴 수 있다. 데이터 프로세싱 시스템이 제 1 디지털 어시스턴트로부터 결과들을 수신하는 경우, 데이터 프로세싱 시스템은 결정 블록(316)으로 진행할 수 있고, 여기서 데이터 프로세싱 시스템은 제 1 디지털 어시스턴트로부터의 응답이 폴백 응답으로서 플래그되어 있는지 여부를 결정할 수 있다. 폴백 응답은 응답이 단지 폴백, 혹은 마지막 수단(resort), 혹은 마지박 방책(measure)으로서 사용돼야만 함을 표시할 수 있다. 만약 응답이 정확하거나, 신뢰가능하거나, 또는 올바르다는 신뢰도 점수가 낮다면(예를 들어, 0.2, 0.3, 0.4 또는 이보다 더 작은 값과 같이 임계치보다 작다면) 응답은 폴백 응답으로서 태그(tag) 혹은 플래그될 수 있다.
만약, 결정 블록(316)에서, 데이터 프로세싱 시스템이 제 1 디지털 어시스턴트 서버로부터의 응답이 폴백 응답으로서 플래그되어 있다고 결정한다면, 데이터 프로세싱 시스템은 블록(312)에서 제 2 디지털 어시스턴트로부터 응답을 선택하도록 진행할 수 있다. 예를 들어, 만약 제 1 디지털 서버로부터의 응답이 폴백으로서 플래그되어 있다면, 데이터 프로세싱 시스템은 비록 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트임에도 불구하고 제 1 디지털 어시스턴트 응답을 오버라이드할 수 있고, 그리고 제 2 디지털 어시스턴트를 사용하도록 진행할 수 있다.
하지만, 결정 블록(316)에서 데이터 프로세싱 시스템에 의해 결정되는 바와 같이, 만약 제 1 디지털 어시스턴트 응답이 폴백으로서 플래그되어 있지 않다면, 데이터 프로세싱 시스템(102)은 블록(318)으로 진행할 수 있고, 그리고 제 1 디지털 어시스턴트 응답을 선택할 수 있다.
일부 경우들의 경우, 블록(304)에서, 데이터 프로세싱 시스템은 제 1 디지털 어시스턴트 컴포넌트로부터의 결과들 전에 제 2 디지털 어시스턴트 컴포넌트로부터의 결과들이 이용가능함 또는 준비되어 있음을 결정할 수 있다. 데이터 프로세싱 시스템은, 블록(310)에서, 제 2 디지털 어시스턴트 컴포넌트는 선호되는 디지털 어시스턴트 컴포넌트가 아니라고 결정할 수 있다. 데이터 프로세싱 시스템은 구성 정보, 명령, 표시 혹은 다른 데이터에 근거하여 이러한 결정을 행할 수 있다. 데이터 프로세싱 시스템은 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정한다. 예를 들어, 구성, 명령, 표시 혹은 다른 데이터 파일은 다수의 디지털 어시스턴트들 중 어느 것이 선호되는 디지털 어시스턴트인지를 표시할 수 있다. 블록(310)에서, 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정함으로써, 데이터 프로세싱 시스템은 블록(310)에서 제 2 디지털 어시스턴트는 선호되는 디지털 어시스턴트가 아니라고 결정할 수 있다.
데이터 프로세싱 시스템은, 제 2 디지털 어시스턴트가 선호되는 디지털 어시스턴트가 아니라고 결정함에 응답하여, 또는 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정함에 응답하여, 하나 이상의 액션들을 취할 수 있다. 예를 들어, 블록(314)에서, 데이터 프로세싱 시스템은, 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트가 아니고 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트라고 결정함에 응답하여, 제 1 디지털 어시스턴트 컴포넌트로부터 제 1 응답을 기다릴 수 있다. 따라서, 비록 데이터 프로세싱 시스템이 제 1 디지털 어시스턴트로부터 임의의 응답을 수신하기 전에 제 2 디지털 어시스턴트로부터 응답을 수신했을 지라고, 데이터 프로세싱 시스템은 제 1 디지털 어시스턴트로부터 제 1 응답을 기다릴 수 있는데, 왜냐하면 제 1 디지털 어시스턴트가 선호되는 디지털 어시스턴트이기 때문이다.
데이터 프로세싱 시스템은 제 1 디지털 어시스턴트로부터 응답을 수신할 수 있다. 데이터 프로세싱 시스템은 제 1 디지털 어시스턴트로부터 응답을 먼저 수신한 이후에 응답을 기다린 후 제 1 디지털 어시스턴트로부터 응답을 수신할 수 있다. 데이터 프로세싱 시스템은 제 1 디지털 어시스턴트 컴포넌트로부터 제 1 응답을 수신하는 경우, 블록(316)에서, 제 1 응답이 폴백 응답으로서 플래그되어 있다고 결정할 수 있다. 예를 들어, 제 1 디지털 어시스턴트는, 비록 선호되는 디지털 어시스턴트로서 구성되어 있어도, 제 1 디지털 어시스턴트에 의해 발생되는 응답을 폴백 응답으로서 할당할 수 있다. 블록(312)에서, 데이터 프로세싱 시스템은, 제 2 디지털 어시스턴트 컴포넌트는 선호되는 디지털 어시스턴트가 아니고 제 1 응답은 폴백 응답으로서 플래그되어 있다는 결정에 근거하여, 제 2 응답을 선택할 수 있다. 데이터 프로세싱 시스템이 제 1 디지털 어시스턴트로부터의 응답들을 우선화할 수 있고, 그리고 비록 데이터 프로세싱 시스템이 제 2 디지털 어시스턴트로부터 응답을 이미 수신했어도 제 1 디지털 어시스턴트로부터의 응답을 기다렸을 수 있지만, 데이터 프로세싱 시스템은 궁극적으로 제 2 디지털 어시스턴트로부터의 응답을 선택할 것을 결정할 수 있는데, 왜냐하면 제 1 디지털 어시스턴트로부터의 응답이 폴백 응답으로서 플래그되어 있었기 때문이다. 제 2 디지털 어시스턴트로부터의 응답은 폴백으로서 플래그되어 있지 않았을 수 있다. 만약 제 1 및 디지털 어시스턴트들 양쪽 모두로부터의 응답들이 폴백 응답들로서 플래그되어 있었다면, 데이터 프로세싱 시스템은 본 예에서 제 1 디지털 어시스턴트와 같은 선호되는 디지털 어시스턴트로부터 응답을 선택할 수 있다. 따라서, 데이터 프로세싱 시스템은, 선호되는 디지털 제공자로부터의 응답이 폴백 응답으로서 플래그되어 있음 아울러 선호되지 않은 디지털 어시스턴트로부터의 응답이 폴백으로서 플래그되어 있지 않음의 경우가 아니라면, 선호되는 디지털 어시스턴트로부터의 응답에 더 높은 순위를 부여할 수 있고, 그리고 선호되는 디지털 어시스턴트로부터 응답을 선택할 수 있다.
도 4는 도 1 혹은 도 3에서 예시된 예시적인 시스템을 사용하여 다수의 디바이스들에 걸쳐 오디오 쿼리들의 병렬 프로세싱을 조정하기 위한 방법을 예시한다. 예를 들어, 방법(400)은 데이터 프로세싱 시스템(102)에 의해 수행될 수 있다. 405에서, 데이터 프로세싱 시스템은 클라이언트 디바이스로부터 오디오 신호를 수신할 수 있다. 클라이언트 디바이스는 마이크로폰 혹은 트랜스듀서와 같은 센서를 사용하여 오디오 신호를 검출할 수 있다. 오디오 신호는 클라이언트 디바이스의 사용자로부터의 음성 혹은 말소리를 포함할 수 있다. 오디오 신호는 오디오 신호의 적어도 일부에 응답하여 클라이언트 디바이스에게 액션을 취하도록 알려주기 위한 웨이크업 워드, 키워드, 핫워드, 혹은 트리거 워드를 포함할 수 있다.
액션(410)에서, 오디오 신호는 쿼리를 발생시키기 위해 텍스트로 변환될 수 있다. 예를 들어, 클라이언트 디바이스 자체가 그 검출된 오디오 신호를 말소리로 변환할 수 있거나, 또는 클라이언트 디바이스는 오디오를 텍스트로 변환하기 위해 오디오 신호를 스트리밍 음성 서버로 전송할 수 있다. 클라이언트 디바이스는 네트워크를 통한 데이터 전송들을 용이하게 하기 위해 오디오 신호를 사전-프로세싱할 수 있거나 혹은 또 하나의 다른 포맷으로 변환할 수 있다. 예를 들어, 클라이언트 디바이스는 네트워크를 통해 데이터 패킷들 내에서 페이로드(payload)로서 오디오 신호를 전송하는 것을 용이하게 하는 디지털 오디오 신호로 아날로그 오디오 입력 신호를 변환할 수 있다. 데이터 프로세싱 시스템 또는 스트리밍 음성 서버는, 데이터 패킷들을 수신하는 경우, 오디오 신호를 텍스트로 변환할 수 있다.
데이터 프로세싱 시스템은 오디오 신호에 대응하는 텍스트 내에서 쿼리를 식별할 수 있다. 쿼리는 예를 들어, 콘텐츠에 대한 요청을 포함할 수 있다. 쿼리는 데이터 혹은 정보에 대한 요청을 포함할 수 있다. 쿼리는 데이터 프로세싱 시스템 혹은 클라이언트 디바이스 혹은 다른 디바이스가 디지털 액션(digital action) 혹은 전자 액션(electronic action)과 같은 액션을 수행하도록 하는 요청을 포함할 수 있다.
액션(415)에서, 데이터 프로세싱 시스템은 쿼리를 프로세싱을 위해 제 1 디지털 어시스턴트 서버로 전송할 수 있다. 데이터 프로세싱 시스템은 쿼리를 프로세싱을 위해 제 2 디지털 어시스턴트 서버로 전송할 수 있다. 데이터 프로세싱 시스템은 쿼리를 별개의 브랜치들을 통해 다수의 디지털 어시스턴트들로 전송할 수 있다. 브랜치들은 프로세싱 쓰레드들을 지칭할 수 있다. 데이터 프로세싱 시스템은 쿼리들을 프로세싱을 위해 다수의 디지털 어시스턴트들로 동시에 전송할 수 있다.
액션(420)에서, 데이터 프로세싱 시스템은 제 1 디지털 어시스턴트의 응답을 오버라이드하는 것 그리고 제 2 디지털 어시스턴트의 응답을 선택하는 것을 행하기 위해 순위 결정 로직을 사용할 수 있다. 데이터 프로세싱 시스템은 쿼리 내의 신호에 근거하여 순위 결정 로직을 선택할 수 있다. 신호들은 예를 들어, 영화 쿼리들(movie queries), 뉴스 쿼리들(news queries), 음악 쿼리들(music queries), 오디오 북 쿼리들(audio book queries), 날씨 쿼리들(weather queries), 또는 텔레비전 쇼 쿼리들(television show queries)과 같은 여러 타입의 쿼리들을 지칭할 수 있거나 표시할 수 있다. 데이터 프로세싱 시스템은 쿼리의 타입을 표시하는 신호를 식별할 수 있고, 그 다음에 선호되는 디지털 어시스턴트를 선택하기 위해 대응하는 순위 결정 로직을 선택할 수 있다. 예를 들어, 만약 쿼리가 영화 쿼리라면, 데이터 프로세싱 시스템은 제 1 디지털 어시스턴트를 선호되는 디지털 어시스턴트로서 설정할 수 있다. 하지만, 만약 신호가 쿼리가 검색 쿼리임을 표시한다면, 데이터 프로세싱 시스템은 예를 들어, 제 2 디지털 어시스턴트를 선호되는 디지털 어시스턴트로서 설정할 수 있다.
데이터 프로세싱 시스템은 다수의 순위 결정 기능의 풀(pool)로부터 순위 결정 기능을 선택할 수 있다. 데이터 프로세싱 시스템은 쿼리의 신호에 근거하여 순위 결정 기능을 선택할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 영화 쿼리에 대해 제 1 순위 결정 기능을 선택할 수 있거나, 음악 쿼리에 대해 제 2 순위 결정 기능을 선택할 수 있거나, 또는 뉴스 쿼리에 대해 제 3 순위 결정 기능을 선택할 수 있다. 예를 들어, 제 1 순위 결정 기능은 제 1 디지털 어시스턴트를 선호되는 디지털 어시스턴트로서 할당할 수 있고, 그리고 응답들에 대한 신뢰도 점수에 대해 제 1 임계치를 설정할 수 있다. 제 2 순위 결정은 제 2 디지털 어시스턴트를 선호되는 디지털 어시스턴트로서 할당할 수 있고, 그리고 응답들에 대한 제 2 임계 신뢰도 점수를 설정할 수 있다. 제 1 임계치 및 제 2 임계치는 각각의 쿼리들에 대한 응답들과 관련된 인자들에 근거하여 설정 혹은 튜닝(tunning)될 수 있다. 예를 들어, 날씨 쿼리들에 대해서는 더 낮은 신뢰도 점수 임계치가 존재할 수 있고, 하지만 네비게이션 관련 쿼리들(navigation related queries) 혹은 영화 관련 쿼리들에 대해서는 더 높은 신뢰도 점수 임계치가 존재할 수 있다.
예를 들어, 제 1 디지털 어시스턴트는 "스트리밍_서비스_A 상의 영화_A를 재생하세요(play Movie_A on Streaming_Service_A)"와 같은 미디어 도메인 쿼리들과 관련된 오디오 쿼리들을 프로세싱하고 이에 응답하도록 구성될 수 있고, 반면 제 2 디지털 어시스턴트 컴포넌트는 "나의 다음 약속은 언제인가요(when is my next appointment)"와 같은 검색 도메인 쿼리들을 프로세싱하고 이에 응답하도록 구성될 수 있다. 만약 쿼리의 신호가 모호하거나 다수의 카테고리들에 속한다면, 데이터 프로세싱 시스템은 다수의 디지털 어시스턴트 컴포넌트들로부터의 응답들에 순위를 부여할 수 있고, 디지털 어시스턴트 컴포넌트 중 하나로부터 응답을 선택할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 신뢰도 레벨, 품질 점수, 혹은 다른 인자들에 근거하여 응답들 혹은 쿼리들에 점수 혹은 순위를 부여할 수 있다.
따라서, 데이터 프로세싱 시스템은, 디지털 어시스턴트들 중 하나의 디지털 어시스턴트로부터 응답을 선택하는 경우, 디지털 어시스턴트들 중 그 하나의 디지털 어시스턴트를 선택하기 위해 순위 결정 로직 혹은 기능을 사용할 수 있다. 액션(425)에서, 데이터 프로세싱 시스템은 선택된 디지털 어시스턴트로부터의 선택된 응답을 제시들을 위해 클라이언트 디바이스에게 제공할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 제 2 디지털 어시스턴트에 의해 발생된 쿼리에 대한 응답을 제시를 위해 클라이언트 디바이스에게 제공할 수 있다.
도 5는 예시적 컴퓨터 시스템(500)의 블록도이다. 컴퓨터 시스템 혹은 컴퓨팅 디바이스(500)는 시스템(100) 혹은 시스템(100)의 컴포넌트들(예컨대, 데이터 프로세싱 시스템(102), 클라이언트 디바이스(104), 제 1 디지털 어시스턴트 서버(106), 및 디스플레이 디바이스(108)와 같은 것)을 포함할 수 있거나, 혹은 이들을 구현하기 위해 사용될 수 있다. 컴퓨팅 시스템(500)은 정보를 전달하기 위한 버스(505) 혹은 다른 통신 컴포넌트를 포함하고, 그리고 버스(505)에 결합되어 정보를 프로세싱하기 위한 프로세서(510) 혹은 프로세싱 회로를 포함한다. 컴퓨팅 시스템(500)은 버스에 결합되어 정보를 프로세싱하기 위한 하나 이상의 프로세서들(510) 혹은 프로세싱 회로들을 포함할 수 있다. 컴퓨팅 시스템(500)은, 버스(505)에 결합되어 프로세서(510)에 의해 실행될 명령들 및 정보를 저장하기 위한 메인 메모리(main memory)(515)(예컨대, 랜덤 액세스 메모리(Random Access Memory, RAM) 혹은 다른 동적 저장 디바이스(dynamic storage device)와 같은 것)를 포함한다. 메인 메모리(515)는 데이터 보관소(140)일 수 있고, 또는 데이터 보관소(140)를 포함할 수 있다. 메인 메모리(515)는 또한, 위치 정보, 임시 변수들, 혹은 프로세서(510)에 의한 명령들의 실행 동안의 다른 중간 정보를 저장하는데 사용될 수 있다. 컴퓨팅 시스템(500)은 또한, 버스(505)에 결합되어 프로세서(510)에 대한 정적 정보 및 명령들을 저장하기 위한 판독-전용 메모리(Read-Only Memory, ROM)(520) 혹은 다른 정적 저장 디바이스(static storage device)를 포함할 수 있다. 정보 및 명령들을 지속적으로 저장하기 위한 저장 디바이스(525)(예컨대, 솔리드 스테이트 디바이스(solid state device), 자기 디스크(magnetic disk) 혹은 광학 디스크(optical disk)와 같은 것)가 버스(505)에 결합될 수 있다. 저장 디바이스(525)는 데이터 보관소(140)를 포함할 수 있거나, 혹은 데이터 보관소(140)의 일부일 수 있다.
컴퓨팅 시스템(500)은 사용자에게 정보를 디스플레이하기 위한 디스플레이(535)(예컨대, 액정 디스플레이(liquid crystal display) 혹은 액티브 매트릭스 디스플레이(active matrix display)와 같은 것)에 버스(505)를 통해 결합될 수 있다. 정보 및 커맨드 선택들을 프로세서(510)에 전달하기 위한 입력 디바이스(530)(예컨대, 문자숫자 키(alphanumeric key)들 및 다른 키들을 포함하는 키보드와 같은 것)가 버스(505)에 결합될 수 있다. 입력 디바이스(530)는 터치 스크린 디스플레이(535)를 포함할 수 있다. 입력 디바이스(530)는, 마우스, 트랙볼(trackball), 혹은 커서 방향 키(cursor direction key)들과 같은 커서 제어(cursor control)를 포함할 수 있으며, 이러한 커서 제어는 방향 정보 및 커맨드 선택들을 프로세서(510)에게 전달하기 위한 것이고, 그리고 디스플레이(535) 상에서의 커서 움직임을 제어하기 위한 것이다. 디스플레이(535)는 예를 들어, 도 1의 데이터 프로세싱 시스템(102), 클라이언트 디바이스들(104), 디스플레이 디바이스들(108), 혹은 다른 컴포넌트의 일부일 수 있다.
본 명세서에서 설명되는 프로세스들, 시스템들, 및 방법들은, 프로세서(510)가 메인 메모리(515)에 포함된 명령들의 정렬(arrangement)을 실행함에 응답하여 컴퓨팅 시스템(500)에 의해 구현될 수 있다. 이러한 명령들은 저장 디바이스(525)와 같은 또 하나의 다른 컴퓨터-판독가능 매체로부터 메인 메모리(515)로 판독될 수 있다. 메인 메모리(515)에 포함된 명령들의 정렬의 실행은 컴퓨팅 시스템(500)으로 하여금 본 명세서에서 설명되는 예시적 프로세스들을 수행하도록 한다. 다중-프로세싱 구성(multi processing arrangement)에서의 하나 이상의 프로세서들이 메인 메모리(515)에 포함된 명령들을 실행하기 위해 이용될 수 있다. 고정-배선 회로(hard-wired circuitry)가 본 명세서에서 설명되는 시스템들 및 방법들과 함께 소프트웨어 명령들과 결합되어 혹은 소프트웨어 명령들 대신에 사용될 수 있다. 본 명세서에서 설명되는 시스템들 및 방법들은 하드웨어 회로와 소프트웨어의 임의의 특정 결합으로만 한정되지 않는다.
비록 예시적인 컴퓨팅 시스템이 도 5에서 설명되었지만, 본 명세서에서 설명되는 동작들을 포함하는 주된 내용은 다른 타입들의 디지털 전자 회로(digital electronic circuitry)로 구현될 수 있고, 또는 컴퓨터 소프트웨어, 펌웨어, 혹은 하드웨어로 구현될 수 있으며, 여기에는 본 명세서에서 개시되는 구조들 및 이들의 구조적 등가물들이 포함되고, 또는 이들 중 하나 이상의 것들의 조합들로 구현될 수 있다.
본 명세서에서 논의되는 시스템들이 사용자들에 대한 개인 정보를 수집하는 상황들에 대해, 혹은 개인 정보를 이용할 수 있는 상황들에 대해, 사용자들은, 개인 정보(예를 들어, 사용자의 소셜 네트워크(social network), 소셜 액션들 혹은 활동들, 사용자의 선호도(preference)들, 또는 사용자의 위치에 대한 정보)를 수집할 수 있는 프로그램들 혹은 특징들의 가능 여부를 제어할 기회를 제공받을 수 있고, 또는 사용자들은, 콘텐츠 서버로부터의 콘텐츠 혹은 사용자와 더 관련될 수 있는 다른 데이터 프로세싱 시스템으로부터의 콘텐츠를 수신할지 여부 혹은 어떻게 수신할지를 제어할 기회를 제공받을 수 있다. 추가적으로, 특정 데이터는 해당 데이터가 저장되기 전에 혹은 사용되기 전에 하나 이상의 방식들로 익명화(anonymize)될 수 있고, 이에 따라 개인적으로 식별가능한 정보는 파라미터들을 발생시킬 때 제거되게 된다. 예를 들어, 사용자의 아이덴티티는 사용자에 대한 어떠한 개인적으로 식별가능한 정보도 결정될 수 없도록 익명화될 수 있고, 또는 위치 정보가 획득되는 사용자의 지리적 위치는 (예를 들어, 도시(city) 레벨로, 혹은 우편 코드(postal code) 레벨로, 혹은 주(state) 레벨로) 일반화(generalize)될 수 있으며, 이에 따라 사용자의 특정 위치는 결정될 수 없게 된다. 따라서, 사용자는 사용자에 대한 정보가 어떻게 수집되는지 그리고 콘텐츠 서버에 의해 어떻게 사용되는지에 관한 제어를 할 수 있다.
본 명세서에서 설명되는 주된 내용 및 동작들은 디지털 전자 회로로 구현될 수 있고, 또는 컴퓨터 소프트웨어, 펌웨어, 혹은 하드웨어로 구현될 수 있으며, 여기에는 본 명세서에서 개시되는 구조들 및 이들의 구조적 등가물들이 포함되고, 또는 이들 중 하나 이상의 것들의 조합들로 구현될 수 있다. 본 명세서에서 설명되는 주된 내용은, 데이터 프로세싱 장치들에 의한 실행을 위해 혹은 데이터 프로세싱 장치들의 동작을 제어하기 위해 하나 이상의 컴퓨터 저장 멀티미디어 상에 인코딩된 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다(예를 들어, 컴퓨터 프로그램 명령들의 하나 이상의 회로들). 대안적으로 혹은 추가적으로, 프로그램 명령들은 인위적으로 발생되는 전파되는 신호(propagated signal) 상에 인코딩될 수 있는데, 이러한 인위적으로 발생되는 전파되는 신호는, 예를 들어, 데이터 프로세싱 장치에 의한 실행을 위해서 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하기 위해 발생되는 머신에 의해 발생되는 전기적, 광학적, 혹은 전기자기적 신호이다. 컴퓨터 저장 매체는, 컴퓨터-판독가능 저장 디바이스, 컴퓨터-판독가능 저장 기판(computer-readable storage substrate), 랜덤(random) 혹은 직렬(serial) 액세스 메모리 어레이 혹은 디바이스, 또는 이들의 하나 이상의 것들의 조합일 수 있거나, 혹은 이러한 것들 내에 포함될 수 있다. 컴퓨터 저장 매체는 임의의 전파되는 신호가 아니며, 컴퓨터 저장 매체는 인위적으로 발생되는 전파되는 신호에 인코딩된 컴퓨터 프로그램 명령들의 소스(source) 혹은 목적지(destination)일 수 있다. 컴퓨터 저장 매체는 또한, 하나 이상의 개별적 컴포넌트들 혹은 멀티미디어(예를 들어, 복수의 CD들, 디스크들, 혹은 다른 저장 디바이스들)일 수 있거나, 혹은 이러한 것들 내에 포함될 수 있다. 본 명세서에서 설명되는 동작들은, 하나 이상의 컴퓨터-판독가능 저장 디바이스들 상에 저장된 데이터 혹은 다른 소스들로부터 수신된 데이터에 관해 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어들 "데이터 프로세싱 시스템", "컴퓨팅 디바이스", "컴포넌트" 혹은 "데이터 프로세스 장치"는 데이터를 프로세싱하기 위한 다양한 장치들, 디바이스들, 및 머신들을 포괄하고, 여기에는 예를 들어, 프로그래밍가능 프로세서, 컴퓨터, 시스템-온-칩(system-on-chip), 또는 복수의 프로그래밍가능 프로세서들, 복수의 컴퓨터들, 복수의 시스템-온-칩들, 또는 앞서의 것들의 조합들이 포함된다. 장치는 특수-목적 로직 회로(special-purpose logic circuitry), 예를 들어, FPGA(Field Programmable Gate Array, 현장 프로그래밍가능 게이트 어레이) 혹은 ASIC(Application-Specific Integrated Circuit, 애플리케이션-특정 집적 회로)를 포함할 수 있다. 장치는 또한, 하드웨어에 추가하여, 해당하는 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드를 포함할 수 있고, 이러한 코드는 예를 들어, 프로세서 펌웨어(processor firmware), 프로토콜 스택(protocol stack), 데이터베이스 관리 시스템(database management system), 오퍼레이팅 시스템(operating system), 크로스-플랫폼 런타임 환경(cross-platform runtime environment), 가상 머신(virtual machine), 혹은 이들의 하나 이상의 것들의 임의의 조합을 구성하는 코드이다. 이러한 장치 및 실행 환경은 서로 다른 다양한 컴퓨팅 모델 기반구조(computing model infrastructure)들을 실현할 수 있는데, 예컨대, 웹 서비스(web service)들, 분산된 컴퓨팅 및 그리드 컴퓨팅 기반구조(distributed computing and grid computing infrastructure)들과 같은 것을 실현할 수 있다. 시스템(100) 컴포넌트들은 하나 이상의 데이터 프로세싱 장치들, 시스템들, 컴퓨팅 디바이스들, 혹은 프로세서들을 포함할 수 있거나 혹은 이들을 공유할 수 있다.
컴퓨터 프로그램(이것은 또한 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱(app), 스크립트, 혹은 코드로서 알려져 있음)은 임의 형태의 프로그래밍 언어로 작성될 수 있고(이러한 프로그래밍 언어에는 컴파일링된 언어(compiled language)들 혹은 해석된 언어(interpreted language)들, 선언적 언어(declarative language)들 혹은 절차적 언어(procedural language)들이 포함됨), 그리고 임의의 형태로 배치될 수 있는데, 이러한 배치에는 독립형 프로그램(stand-alone program)으로서 배치되는 것, 또는 컴퓨팅 환경에서의 사용을 위해 적합한 모듈(module), 컴포넌트(component), 서브루틴(subroutine), 오브젝트(object), 혹은 다른 유닛(unit)으로서 배치되는 것이 포함된다. 컴퓨터 프로그램은 파일 시스템(file system) 내의 임의의 파일에 대응할 수 있다. 컴퓨터 프로그램은, 다른 프로그램들 혹은 데이터(예를 들어, 마크업 언어 문서(markup language document)에 저장되는 하나 이상의 스크립트들)를 보유하는 임의의 파일의 일부분에 저장될 수 있거나, 해당하는 프로그램에 전용으로 사용되는 단일 파일에 저장될 수 있거나, 또는 복수의 조정된 파일들(예를 들어, 하나 이상의 모듈들, 서브 프로그램들, 혹은 코드의 일부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 실행되도록 배치될 수 있거나 혹은 복수의 컴퓨터들 상에서 실행되도록 배치될 수 있는데, 이 경우 컴퓨터들은 하나의 사이트(site)에 위치하거나 혹은 복수의 사이트들에 걸쳐 분산되어 통신 네트워크에 의해 상호연결된다.
본 명세서에서 설명되는 프로세스들 및 로직 흐름(logic flow)들은, 입력 데이터에 관해 동작하여 출력을 발생시킴으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍가능 프로세서들(예를 들어, 데이터 프로세싱 시스템(102), 클라이언트 디바이스(104), 제 1 디지털 어시스턴트 서버(106), 및 디스플레이 디바이스(108)의 컴포넌트들)에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예를 들어, FPGA(Field-Programmable Gate Array) 또는 ASIC(Application-Specific Integrated Circuit)에 의해 수행될 수 있고, 그리고 장치들은 또한 특수 목적 로직 회로, 예를 들어, FPGA(Field-Programmable Gate Array) 또는 ASIC(Application-Specific Integrated Circuit)로서 구현될 수 있다. 컴퓨터 프로그램 명령들 및 데이터를 저장하는데 적합한 디바이스들은 모든 형태들의 비-휘발성 메모리, 멀티미디어, 및 메모리 디바이스들을 포함하며, 여기에는 예를 들어, 반도체 메모리 디바이스들, 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들어, 내부 하드 디스크들 혹은 탈착가능한 디스크들; 광 자기 디스크(magneto optical disk)들; 그리고 CD-ROM 및 DVD-ROM 디스크들이 포함된다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보충될 수 있거나, 혹은 특수 목적 로직 회로 내에 통합될 수 있다.
본 명세서에서 설명되는 주된 내용은 컴퓨팅 시스템 내에서 구현될 수 있는데, 이러한 컴퓨팅 시스템은, (예를 들어, 데이터 서버로서의) 백 엔드 컴포넌트(back end component)를 포함하거나, 또는 미들웨어 컴포넌트(middleware component)(예를 들어, 애플리케이션 서버)를 포함하거나, 또는 프런트 엔드 컴포넌트(front end component)(예를 들어, 사용자로 하여금 본 명세서에서 설명되는 주된 내용의 구현예와 상호작용할 수 있게 하는 그래픽 사용자 인터페이스 혹은 웹 브라우저를 갖는 클라이언트 컴퓨터)를 포함하거나, 또는 하나 이상의 이러한 백 엔드 컴포넌트들, 미들웨어 컴포넌트들, 혹은 프런트 엔드 컴포넌트들의 임의의 조합을 포함한다. 시스템의 컴포넌트들은 임의 형태 혹은 매체의 디지털 데이터 통신, 예를 들어, 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예들은, 로컬 영역 네트워크(Local Area Network)("LAN") 및 와이드 영역 네트워크(Wide Area Network)("WAN"), 인터-네트워크(inter-network)(예를 들어, 인터넷), 그리고 피어-투-피어 네트워크(peer-to-peer network)들(예를 들어, 애드 혹 피어-투-피어 네트워크(ad hoc peer-to-peer network)들)을 포함한다.
시스템(100) 혹은 시스템(500)과 같은 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로로부터 멀리 떨어져 있고, 그리고 전형적으로 통신 네트워크(예를 들어, 네트워크(110))를 통해 상호작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터들 상에서 실행되는 컴퓨터 프로그램들로서 서로에 대해 클라이언트-서버 관계를 갖고 있는 그러한 컴퓨터 프로그램들에 의해서 일어난다. 일부 구현예들에서, 서버는 데이터(예를 들어, 콘텐츠 아이템을 나타내는 데이터 패킷들)를 클라이언트 디바이스로 (예를 들어, 클라이언트 디바이스와 상호작용하는 사용자에게 데이터를 디스플레이할 목적으로, 그리고 클라이언트 디바이스와 상호작용하는 사용자로부터의 사용자 입력을 수신할 목적으로) 전송한다. 클라이언트 디바이스에서 발생된 데이터(예를 들어, 사용자 상호작용의 결과)는 클라이언트 디바이스로부터 서버에서 수신될 수 있다(예를 들어, 클라이언트 디바이스들(104) 또는 디스플레이 디바이스(108)로부터 데이터 프로세싱 시스템(102)에 의해 수신될 수 있음).
동작들이 도면들에서 특정 순서로 도시되어 있지만, 이러한 동작들은 제시된 특정 순서로 혹은 순차적 순서로 수행되도록 요구되지 않으며, 예시되는 모든 동작들이 수행되도록 요구되지 않는다. 본 명세서에서 설명되는 액션들은 상이한 순서로 수행될 수 있다.
다양한 시스템 컴포넌트들의 분리가 모든 구현예들에서 이러한 분리를 요구하는 것이 아니며, 설명되는 프로그램 컴포넌트들은 단일 하드웨어 혹은 소프트웨어 제품에 포함될 수 있다. 예를 들어, NLP 컴포넌트(124) 및 다이렉트 액션 API(126)는 단일 컴포넌트, 앱, 혹은 프로그램, 또는 하나 이상의 프로세싱 회로들을 갖는 로직 디바이스, 또는 데이터 프로세싱 시스템(102)의 하나 이상의 서버들의 일부일 수 있다.
이제까지 일부 예시적 구현예들이 설명되었는데, 앞서의 것은 예시적인 것이고 한정의 의미를 갖고 있지 않으며 예로서 제시된 것임은 명백하다. 특히, 비록 본 명세서에서 제시되는 예들의 많은 것들이 방법의 행위들 혹은 시스템의 요소들의 특정 조합들을 수반하고 있어도, 그러한 행위들 및 그러한 요소들은 동일한 목적들을 달성하기 위해 다른 방식들로 결합될 수 있다. 하나의 구현예와 연계되어 논의되는 행위들, 요소들, 및 특징들은 다른 구현예들에서 유사한 역할을 하는 것으로부터 배제되도록 의도되지 않았다.
본 명세서에 사용되는 어법(phraseology) 및 용어(terminology)는 설명 목적으로 제공되는 것이며 한정의 의미로서 고려돼서는 안 된다. 본 명세서에서 "포함하는", "포함하고", "갖는", "포함하며", "수반하는", "특징이 있는", "특징을 갖고 있는" 그리고 이들의 변형들의 사용은 이러한 용어들 앞에 나열되는 아이템들, 이들의 등가물들, 및 추가적인 아이템들을 포괄하도록 의도된 것이며, 뿐만 아니라 배타적으로 이러한 용어들 앞에 나열되는 아이템들로 구성되는 대안적인 구현예들을 포괄하도록 의도된 것이다. 하나의 구현예에서, 본 명세서에서 설명되는 시스템들 및 방법들은 본 명세서에서 설명되는 요소들, 행위들, 혹은 컴포넌트들 중 하나, 혹은 이들 중 하나보다 많은 것들의 각각의 조합, 혹은 이들 모두로 구성된다.
단수적 표현으로 지칭되는 본 명세서에서의 시스템들 및 방법들의 구현예들, 요소들 혹은 행위들에 대한 임의의 언급은 또한 이러한 요소들을 복수 개 포함하는 구현예들을 포괄할 수 있으며, 그리고 본 명세서에서 복수적 표현으로 임의의 구현예, 요소 혹은 행위에 대한 임의의 언급은 또한 오로지 단일 요소를 포함하는 구현예들을 포괄할 수 있다. 이러한 단수적 형태 혹은 복수적 형태의 언급들은 본 명세서에서 개시되는 시스템들 혹은 방법들, 이들의 컴포넌트들, 행위들, 혹은 요소들을 단일의 구성 혹은 복수의 구성들로 한정하도록 의도된 것이 아니다. 임의의 행위 혹은 요소가 임의의 정보, 행위, 혹은 요소에 근거한다는 언급들은 임의의 행위 혹은 요소가 임의의 정보, 행위, 혹은 요소에 적어도 부분적으로 근거하는 구현예들을 포함할 수 있다.
본 명세서에서 개시되는 임의의 구현예는 임의의 다른 구현예 혹은 실시예와 결합될 수 있고, 그리고 "임의의 구현예", "일부 구현예들", "하나의 구현예" 등에 관한 언급들은 반드시 상호 배타적인 것이 아니며, 해당 구현예와 연계되어 설명되는 특정 특징, 구조 혹은 특성이 적어도 하나의 구현예 혹은 실시예에 포함될 수 있음을 표시하도록 의도된 것이다. 본 명세서에서 사용되는 바와 같은 이러한 용어들이 반드시 모두 동일한 구현예를 지칭하는 것은 아니다. 본 명세서에서 개시되는 실시형태들 및 구현예들과 일관되는 임의의 방식으로 임의의 구현예가 임의의 다른 구현예와 비배타적으로 혹은 배타적으로 결합될 수 있다.
"또는" 및 "혹은"에 관한 언급은 포함적 의미로서 해석될 수 있고, 이에 따라 "또는" 및 "혹은"을 사용하여 설명되는 임의의 항목(term)들은 그 설명되는 항목들 중 단일 항목, 하나보다 많은 항목들, 및 모든 항목들 가운데 어느 하나를 표시할 수 있다. "'A' 및 'B' 중 적어도 하나"에 관한 언급은 오로지 'A'만을 포함할 수 있고, 오로지 'B'만을 포함할 수 있고, 뿐만 아니라 'A'와 'B'를 모두 포함할 수 있다. "포함하는" 혹은 다른 개방형 용어(open terminology)와 연계되어 사용되는 이러한 언급들은 추가적인 아이템들을 포함할 수 있다.
도면들, 상세한 설명, 혹은 임의의 청구항에서의 기술적 특징들이 참조 부호들과 병기되어 사용되는 경우, 이러한 참조 부호들은 도면들, 상세한 설명, 혹은 청구항들의 명료성(intelligibility)을 증가시키기 위해 포함된 것이다. 이에 따라, 이러한 참조 부호들이 있는 것 혹은 없는 것이 본 발명의 임의의 청구 요소들의 범위에 임의의 한정적 영향을 미치는 것이 아니다.
본 명세서에서 설명되는 시스템들 및 방법들은 본 발명의 특징들로부터 벗어남이 없이 다른 특정 형태들로 구현될 수 있다. 앞서의 구현예들은 본 명세서에서 설명되는 시스템들 및 방법들을 한정하는 것이라기보다는 오히려 예시하려는 것이다. 따라서, 본 명세서에서 설명되는 시스템들 및 방법들의 범위는, 앞서의 설명에 의해 표시된다기보다는 오히려 첨부되는 청구항들에 의해 표시되며, 그리고 청구항들의 등가(equivalency)의 의미 및 범위 내에서 일어나는 변경들은 본 발명의 범위에 포함된다.

Claims (20)

  1. 오디오 쿼리(audio query)들의 오버랩핑 프로세싱(overlapping processing)을 조정(coordinate)하기 위한 시스템으로서,
    상기 시스템은 데이터 프로세싱 시스템(data processing system)을 포함하고, 상기 데이터 프로세싱 시스템은 적어도 하나의 프로세서 및 메모리를 포함하고,
    상기 데이터 프로세싱 시스템은,
    인터페이스(interface)를 통해, 컴퓨팅 디바이스(computing device)의 센서(sensor)에 의해 검출된 오디오 신호(audio signal)에 대응하는 하나 이상의 데이터 패킷(data packet)들을 수신하는 것과;
    상기 하나 이상의 데이터 패킷들을 통해 수신된 상기 오디오 신호에 근거하여 쿼리를 발생시키는 것과;
    상기 쿼리를 복수의 디지털 어시스턴트 컴포넌트(digital assistant component)들로 전송하는 것과;
    상기 복수의 디지털 어시스턴트 컴포넌트들 중 제 1 디지털 어시스턴트 컴포넌트로부터 상기 쿼리에 대한 제 1 응답을 수신하는 것과;
    상기 복수의 디지털 어시스턴트 컴포넌트들 중 제 2 디지털 어시스턴트 컴포넌트로부터 상기 쿼리에 대한 제 2 응답을 수신하는 것과, 여기서 상기 제 1 디지털 어시스턴트 컴포넌트는 상기 제 2 디지털 어시스턴트 컴포넌트가 액세스(accessing)하는 것이 금지된 데이터베이스(database)에 액세스할 권한을 부여받고;
    순위 결정 기능(ranking decision function)에 근거하여, 상기 제 1 디지털 어시스턴트 컴포넌트로부터의 상기 제 1 응답 대신 상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 선택할 것을 결정하는 것과; 그리고
    상기 선택에 응답하여, 상기 제 2 디지털 어시스턴트 컴포넌트로부터의 상기 제 2 응답을 상기 컴퓨팅 디바이스에 제공하는 것을
    수행하도록 되어 있는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  2. 제1항에 있어서,
    상기 데이터 프로세싱 시스템은, 상기 제 2 디지털 어시스턴트 컴포넌트에 대해 확립된 미리-구성된 선호도(pre-configured preference)에 근거하여 상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 선택하도록 되어 있는 것을 특징으로 하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  3. 제2항 또는 제1항에 있어서,
    상기 데이터 프로세싱 시스템은 상기 제 2 디지털 어시스턴트 컴포넌트로부터의 상기 제 2 응답에 대한 신뢰도 점수(confidence score)에 근거하여 상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 선택하도록 되어 있는 것을 특징으로 하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  4. 임의의 앞선 항에 있어서,
    상기 데이터 프로세싱 시스템은,
    상기 제 1 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트(preferred digital assistant)라고 결정하는 것과;
    상기 제 1 디지털 어시스턴트 컴포넌트로부터의 상기 제 1 응답이 폴백 응답(fallback response)으로서 플래그(flag)되어 있는 것을 결정하는 것과;
    상기 제 1 디지털 어시스턴트 컴포넌트로부터의 상기 제 1 응답이 상기 폴백 응답으로서 플래그되어 있는 것을 결정함에 응답하여, 상기 제 1 디지털 어시스턴트 컴포넌트를 오버라이드(override)하는 것과;
    상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 선택하는 것과; 그리고
    상기 제 1 디지털 어시스턴트 컴포넌트를 상기 선호되는 디지털 어시스턴트로서 유지하는 것을
    수행하도록 되어 있는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  5. 임의의 앞선 항에 있어서,
    상기 데이터 프로세싱 시스템은,
    상기 쿼리에 대한 신호를 결정하는 것과; 그리고
    상기 신호에 근거하여 복수의 순위 결정 기능들로부터 상기 순위 결정 기능을 선택하는 것을
    수행하도록 되어 있는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  6. 임의의 앞선 항에 있어서,
    상기 데이터 프로세싱 시스템은,
    상기 쿼리에 대한 신호를 결정하는 것과; 그리고
    상기 신호에 근거하여 상기 제 2 디지털 어시스턴트 컴포넌트로부터 응답들을 선택하는 것을
    수행하도록 되어 있는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  7. 임의의 앞선 항에 있어서,
    상기 데이터 프로세싱 시스템은, 상기 순위 결정 기능에 근거하여,
    상기 제 1 응답이 오디오만 있는 응답(audio-only response)인 것; 그리고/또는
    상기 제 2 디지털 어시스턴트 컴포넌트가 상기 컴퓨팅 디바이스의 메모리 내에 저장된 데이터에 액세스하는 것
    중 적어도 하나인 것을 근거로 상기 제 2 응답을 선택할 것을 결정하도록 되어 있는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  8. 임의의 앞선 항에 있어서,
    상기 제 1 응답은 캘린더 정보(calendar information) 또는 미디어 콘텐츠(media content) 중 하나를 포함하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  9. 임의의 앞선 항에 있어서,
    상기 제 1 디지털 어시스턴트 컴포넌트는 상기 제 1 응답을 발생시키기 위해 상기 제 2 디지털 어시스턴트 컴포넌트와는 독립적으로 실행되는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  10. 임의의 앞선 항에 있어서,
    상기 데이터 프로세싱 시스템은, 상기 복수의 디지털 어시스턴트들로 하여금 상기 쿼리를 오버랩핑 방식으로 프로세싱하도록 하기 위해서 독립적인 브랜치(independent branch)를 통해 상기 복수의 디지털 어시스턴트들 각각으로 상기 쿼리를 전송하도록 되어 있는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  11. 임의의 앞선 항에 있어서,
    상기 제 1 디지털 어시스턴트 컴포넌트는 상기 제 2 디지털 어시스턴트 컴포넌트와는 다른 관리자(administrator)에 의해 확립되는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  12. 임의의 앞선 항에 있어서,
    상기 데이터 프로세싱 시스템은, 오디오를 텍스트(text)로 변환하도록 되어 있는 스트리밍 음성 서버(streaming speech server)를 통해 상기 컴퓨팅 디바이스로부터 상기 하나 이상의 데이터 패킷들을 수신하도록 되어 있는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  13. 임의의 앞선 항에 있어서,
    상기 데이터 프로세싱 시스템은,
    상기 제 1 디지털 어시스턴트 컴포넌트로부터의 상기 제 1 응답 이전에 상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 수신하는 것과;
    상기 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트 컴포넌트가 아니라고 결정하는 것과;
    상기 제 1 디지털 어시스턴트가 상기 선호되는 디지털 어시스턴트라고 결정하는 것과;
    상기 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트가 아니고 상기 제 1 디지털 어시스턴트가 상기 선호되는 디지털 어시스턴트라고 결정함에 응답하여, 상기 제 1 디지털 어시스턴트 컴포넌트로부터 상기 제 1 응답을 기다리는 것과;
    상기 제 1 디지털 어시스턴트 컴포넌트로부터 상기 제 1 응답을 수신하는 경우, 상기 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정하는 것과; 그리고
    상기 제 2 디지털 어시스턴트 컴포넌트가 상기 선호되는 디지털 어시스턴트가 아니고 상기 제 1 응답이 상기 폴백 응답으로서 플래그되어 있는 것을 결정함에 근거하여, 상기 제 2 응답을 선택하는 것을
    수행하도록 되어 있는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하기 위한 시스템.
  14. 오디오 쿼리들의 오버랩핑 프로세싱을 조정하는 방법으로서,
    상기 방법은,
    프로세서 및 메모리를 포함하는 데이터 프로세싱 시스템에 의해, 컴퓨팅 디바이스의 센서에 의해 검출된 오디오 신호에 대응하는 하나 이상의 데이터 패킷들을 수신하는 것과;
    상기 데이터 프로세싱 시스템에 의해, 상기 하나 이상의 데이터 패킷들을 통해 수신된 상기 오디오 신호에 근거하여 쿼리를 발생시키는 것과;
    상기 데이터 프로세싱 시스템에 의해, 상기 쿼리를 복수의 디지털 어시스턴트 컴포넌트들로 전송하는 것과;
    상기 데이터 프로세싱 시스템에 의해, 상기 복수의 디지털 어시스턴트 컴포넌트들 중 제 1 디지털 어시스턴트 컴포넌트로부터 상기 쿼리에 대한 제 1 응답을 수신하는 것과;
    상기 데이터 프로세싱 시스템에 의해, 상기 복수의 디지털 어시스턴트 컴포넌트들 중 제 2 디지털 어시스턴트 컴포넌트로부터 상기 쿼리에 대한 제 2 응답을 수신하는 것과, 여기서 상기 제 1 디지털 어시스턴트 컴포넌트는 상기 제 2 디지털 어시스턴트 컴포넌트가 액세스하는 것이 금지된 데이터베이스에 액세스할 권한을 부여받고;
    상기 데이터 프로세싱 시스템에 의해, 순위 결정 기능에 근거하여, 상기 제 1 디지털 어시스턴트 컴포넌트로부터의 상기 제 1 응답 대신 상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 선택할 것을 결정하는 것과; 그리고
    상기 데이터 프로세싱 시스템에 의해, 상기 선택에 응답하여, 상기 제 2 디지털 어시스턴트 컴포넌트로부터의 상기 제 2 응답을 상기 컴퓨팅 디바이스에 제공하는 것을
    포함하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하는 방법.
  15. 제14항에 있어서,
    상기 방법은, 상기 제 2 디지털 어시스턴트 컴포넌트로부터의 상기 제 2 응답에 대한 신뢰도 점수에 근거하여 상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 선택하는 것을 포함하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하는 방법.
  16. 제14항 또는 제15항에 있어서,
    상기 방법은,
    상기 제 1 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트라고 결정하는 것과;
    상기 제 1 디지털 어시스턴트 컴포넌트로부터의 상기 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정하는 것과;
    상기 제 1 디지털 어시스턴트 컴포넌트로부터의 상기 제 1 응답이 상기 폴백 응답으로서 플래그되어 있는 것을 결정함에 응답하여, 상기 제 1 디지털 어시스턴트 컴포넌트를 오버라이드하는 것과;
    상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 선택하는 것과; 그리고
    상기 제 1 디지털 어시스턴트 컴포넌트를 상기 선호되는 디지털 어시스턴트로서 유지하는 것을
    포함하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하는 방법.
  17. 제14항 내지 제16항 중 임의의 항에 있어서,
    상기 방법은, 상기 순위 결정 기능에 근거하여, 상기 제 1 디지털 어시스턴트 컴포넌트가 상기 컴퓨팅 디바이스의 메모리 내에 저장된 데이터에 액세스하는 것을 근거로 상기 제 1 응답을 선택할 것을 결정하는 것을 포함하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하는 방법.
  18. 제14항 내지 제17항 중 임의의 항에 있어서,
    상기 방법은, 상기 복수의 디지털 어시스턴트들로 하여금 상기 쿼리를 오버랩핑 방식으로 프로세싱하도록 하기 위해서 독립적인 브랜치를 통해 상기 복수의 디지털 어시스턴트들 각각으로 상기 쿼리를 전송하는 것을 포함하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하는 방법.
  19. 제14항 내지 제18항 중 임의의 항에 있어서,
    상기 방법은,
    상기 제 1 디지털 어시스턴트 컴포넌트로부터의 상기 제 1 응답 이전에 상기 제 2 디지털 어시스턴트 컴포넌트로부터 상기 제 2 응답을 수신하는 것과;
    상기 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트 컴포넌트가 아니라고 결정하는 것과;
    상기 제 1 디지털 어시스턴트가 상기 선호되는 디지털 어시스턴트라고 결정하는 것과;
    상기 제 2 디지털 어시스턴트 컴포넌트가 선호되는 디지털 어시스턴트가 아니고 상기 제 1 디지털 어시스턴트가 상기 선호되는 디지털 어시스턴트라고 결정함에 응답하여, 상기 제 1 디지털 어시스턴트 컴포넌트로부터 상기 제 1 응답을 기다리는 것과;
    상기 제 1 디지털 어시스턴트 컴포넌트로부터 상기 제 1 응답을 수신하는 경우, 상기 제 1 응답이 폴백 응답으로서 플래그되어 있는 것을 결정하는 것과; 그리고
    상기 제 2 디지털 어시스턴트 컴포넌트가 상기 선호되는 디지털 어시스턴트가 아니고 상기 제 1 응답이 상기 폴백 응답으로서 플래그되어 있는 것을 결정함에 근거하여, 상기 제 2 응답을 선택하는 것을
    포함하는 것을 특징으로 하는 오디오 쿼리들의 오버랩핑 프로세싱을 조정하는 방법.
  20. 컴퓨터 프로그램물(computer program product)로서, 상기 컴퓨터 프로그램물은 프로세서 및 메모리를 포함하는 데이터 프로세싱 시스템 상에서 실행될 때 상기 데이터 프로세싱 시스템으로 하여금 청구항 제14항 내지 제19항 중 임의의 항의 방법을 수행하도록 하는 것을 특징으로 하는 컴퓨터 프로그램물.
KR1020207034786A 2018-05-03 2019-04-08 오디오 쿼리들의 오버랩핑 프로세싱의 조정 KR102506361B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237007207A KR102624149B1 (ko) 2018-05-03 2019-04-08 오디오 쿼리들의 오버랩핑 프로세싱의 조정

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862666681P 2018-05-03 2018-05-03
US62/666,681 2018-05-03
PCT/US2019/026321 WO2019212697A1 (en) 2018-05-03 2019-04-08 Coordination of overlapping processing of audio queries

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237007207A Division KR102624149B1 (ko) 2018-05-03 2019-04-08 오디오 쿼리들의 오버랩핑 프로세싱의 조정

Publications (2)

Publication Number Publication Date
KR20210002715A true KR20210002715A (ko) 2021-01-08
KR102506361B1 KR102506361B1 (ko) 2023-03-06

Family

ID=66248772

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020247000715A KR20240007723A (ko) 2018-05-03 2019-04-08 오디오 쿼리들의 오버랩핑 프로세싱의 조정
KR1020207034786A KR102506361B1 (ko) 2018-05-03 2019-04-08 오디오 쿼리들의 오버랩핑 프로세싱의 조정
KR1020237007207A KR102624149B1 (ko) 2018-05-03 2019-04-08 오디오 쿼리들의 오버랩핑 프로세싱의 조정

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020247000715A KR20240007723A (ko) 2018-05-03 2019-04-08 오디오 쿼리들의 오버랩핑 프로세싱의 조정

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237007207A KR102624149B1 (ko) 2018-05-03 2019-04-08 오디오 쿼리들의 오버랩핑 프로세싱의 조정

Country Status (5)

Country Link
US (1) US20210334306A1 (ko)
EP (1) EP3596616A1 (ko)
JP (2) JP7119218B2 (ko)
KR (3) KR20240007723A (ko)
WO (1) WO2019212697A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11595517B2 (en) * 2021-04-13 2023-02-28 Apple Inc. Digital assistant integration with telephony
US11972764B2 (en) 2021-11-10 2024-04-30 Google Llc Providing related queries to a secondary automated assistant based on past interactions

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120078889A1 (en) * 2010-09-28 2012-03-29 International Business Machines Corporation Providing answers to questions using hypothesis pruning

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484155B1 (en) 1998-07-21 2002-11-19 Sentar, Inc. Knowledge management system for performing dynamic distributed problem solving
JP2003044088A (ja) 2001-07-27 2003-02-14 Sony Corp プログラム、記録媒体、並びに音声対話装置および方法
JP2003295890A (ja) 2002-04-04 2003-10-15 Nec Corp 音声認識対話選択装置、音声認識対話システム、音声認識対話選択方法、プログラム
JP2008090545A (ja) 2006-09-29 2008-04-17 Toshiba Corp 音声対話装置および音声対話方法
US8626511B2 (en) * 2010-01-22 2014-01-07 Google Inc. Multi-dimensional disambiguation of voice commands
WO2014020835A1 (ja) 2012-07-31 2014-02-06 日本電気株式会社 エージェント制御システム、方法およびプログラム
US10032234B2 (en) * 2013-01-29 2018-07-24 Facebook, Inc. Ranking search results using diversity groups
US11393461B2 (en) * 2013-03-12 2022-07-19 Cerence Operating Company Methods and apparatus for detecting a voice command
JP5753212B2 (ja) 2013-03-19 2015-07-22 シャープ株式会社 音声認識システム、サーバ、および音声処理装置
US9582608B2 (en) * 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
EP2881898A1 (en) * 2013-12-09 2015-06-10 Accenture Global Services Limited Virtual assistant interactivity platform
US20160378747A1 (en) * 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
JP2017107078A (ja) 2015-12-10 2017-06-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 音声対話方法、音声対話装置及び音声対話プログラム
US10339934B2 (en) * 2016-06-27 2019-07-02 Google Llc Asynchronous processing of user requests
JP6614080B2 (ja) 2016-09-16 2019-12-04 トヨタ自動車株式会社 音声対話システムおよび音声対話方法
US11188808B2 (en) * 2017-04-11 2021-11-30 Lenovo (Singapore) Pte. Ltd. Indicating a responding virtual assistant from a plurality of virtual assistants
US11631017B2 (en) * 2018-01-09 2023-04-18 Microsoft Technology Licensing, Llc Federated intelligent assistance
US20190237067A1 (en) * 2018-01-31 2019-08-01 Toyota Motor Engineering & Manufacturing North America, Inc. Multi-channel voice recognition for a vehicle environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120078889A1 (en) * 2010-09-28 2012-03-29 International Business Machines Corporation Providing answers to questions using hypothesis pruning

Also Published As

Publication number Publication date
WO2019212697A1 (en) 2019-11-07
KR102506361B1 (ko) 2023-03-06
KR102624149B1 (ko) 2024-01-11
US20210334306A1 (en) 2021-10-28
JP2022172090A (ja) 2022-11-15
KR20230034443A (ko) 2023-03-09
KR20240007723A (ko) 2024-01-16
JP7439186B2 (ja) 2024-02-27
JP2021523500A (ja) 2021-09-02
CN110741362A (zh) 2020-01-31
EP3596616A1 (en) 2020-01-22
JP7119218B2 (ja) 2022-08-16

Similar Documents

Publication Publication Date Title
US10741183B2 (en) Trigger phrase for voice actions of software applications
JP7439186B2 (ja) オーディオクエリのオーバーラップ処理の協調
US11841893B2 (en) Coordination of parallel processing of audio queries across multiple devices
US11664025B2 (en) Activation of remote devices in a networked system
US20220027124A1 (en) Verifying operational statuses of agents interfacing with digital assistant applications
US20200257853A1 (en) Verifying operational statuses of agents interfacing with digital assistant applications
CN110741362B (zh) 音频查询的重叠处理的协调
JP2024063034A (ja) オーディオクエリのオーバーラップ処理の協調

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
A107 Divisional application of patent
GRNT Written decision to grant