KR102173014B1 - 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화 - Google Patents

디바이스들 간의 상태 상호작용의 캡슐화 및 동기화 Download PDF

Info

Publication number
KR102173014B1
KR102173014B1 KR1020180124457A KR20180124457A KR102173014B1 KR 102173014 B1 KR102173014 B1 KR 102173014B1 KR 1020180124457 A KR1020180124457 A KR 1020180124457A KR 20180124457 A KR20180124457 A KR 20180124457A KR 102173014 B1 KR102173014 B1 KR 102173014B1
Authority
KR
South Korea
Prior art keywords
playback
session
devices
asset
command
Prior art date
Application number
KR1020180124457A
Other languages
English (en)
Other versions
KR20190044523A (ko
Inventor
토마스 알시나
찰스 마가헤른
코디 디. 요르겐센
에드워드 티. 슈미트
제이슨 피. 케터만
니콜라스 제이. 폴슨
주-원 후앙
세자르 드 카마르고 바르스세비시우스
엘레나 레이프만
키이스 헨릭슨
앤드류 시네시오
오웬 임홀트
해리 시몬즈
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20190044523A publication Critical patent/KR20190044523A/ko
Application granted granted Critical
Publication of KR102173014B1 publication Critical patent/KR102173014B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4305Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23605Creation or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/254Management at additional data server, e.g. shopping server, rights management server
    • H04N21/2543Billing, e.g. for subscription services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25841Management of client data involving the geographical location of the client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26258Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/42203Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS] sound input device, e.g. microphone
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4343Extraction or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/43615Interfacing a Home Network, e.g. for connecting the client to a plurality of peripherals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • H04N21/43637Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47217End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/10537Audio or video recording
    • G11B2020/10546Audio or video recording specifically adapted for audio data

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Valve Device For Special Equipments (AREA)

Abstract

재생 디바이스들의 애드 호크 그룹 사이에서 미디어 재생을 관리하기 위한 기술들이 개시된다. 이러한 기술들은 재생 디바이스들이 그것들의 재생 역량들에 관한 정보를 교환하는, 재생 디바이스들 사이의 세션을 구축하는 것을 수반할 수 있다. 디바이스들의 재생 역량들에 기초하여, 재생 모드가 세션에 대하여 유추될 수 있다. 재생 동작들은 세션의 구성원들인 디바이스들 사이에서 동기화될 수 있는데, 여기서 디바이스들은 재생 동작에 따라 렌더링되는 자산(들)의 식별 및 자산의 재생의 타이밍 정보를 수신한다. 디바이스들은 그것들이 그렇게 할 수 있을 때 재생 자산들을 직접 미디어 소스들로부터 스트리밍할 수 있다. 이러한 방식으로, 통신 리소스들이 절약된다.

Description

디바이스들 간의 상태 상호작용의 캡슐화 및 동기화{ENCAPSULATING AND SYNCHRONIZING STATE INTERACTIONS BETWEEN DEVICES}
본 개시내용은 미디어 재생 동작들, 특히, 애드 호크(ad hoc) 기초로 재생을 위하여 서로 그룹화되는 재생 디바이스들의 동기화에 관한 것이다.
미디어 재생 디바이스들은 소비자 가전에 잘 알려져 있다. 통상적으로, 그것들은 소비자 디바이스, 예컨대, 미디어 플레이어 디바이스(텔레비전, 오디오 시스템)에서의 비디오 또는 오디오의 재생을 수반한다. 최근, 재생 애플리케이션들이 네트워크 연결된 디바이스들을 통한 재생, 예컨대, 블루투스 또는 WiFi 네트워크를 통한 재생을 포함하도록 확장되었다. 네트워크 연결된 애플리케이션들에서, 재생은 통상적으로 스마트폰과 같은 제1 플레이어 디바이스로부터 접속된 렌더링 디바이스로 재생 콘텐츠를 스트리밍하는 것을 포함한다. 제1 플레이어 디바이스는 재생 콘텐츠를 자체적으로 저장하지 않을 수 있고; 다른 소스로부터 콘텐츠를 스트리밍할 수 있다.
도 1은 본 개시내용의 일 양태에 따른 시스템을 도시한다.
도 2는 본 개시내용의 일 양태에 따른 렌더링 디바이스의 블록도이다.
도 3은 본 개시내용의 일 실시예에 따른 동기화 세션의 진행을 도시하는 상태도이다.
도 4는 본 개시내용의 일 양태에 따른 디바이스들을 세션에 추가하는 예시적인 프로세스를 도시하는 신호 흐름도이다.
도 5는 본 개시내용의 일 양태에 따른 재생 콘텐츠의 예시적인 렌더링을 도시하는 신호 흐름도이다.
도 6은 본 개시내용의 다른 양태에 따른 재생 콘텐츠의 예시적인 렌더링을 도시하는 신호 흐름도이다.
도 7은 본 개시내용의 다른 양태에 따른 세션에서 렌더링 디바이스를 제거하는 예시적인 프로세스를 도시하는 신호 흐름도이다.
도 8은 본 개시내용의 일 양태에 따른 디스플레이 가능한 디바이스에 나타낼 수 있는 예시적인 사용자 인터페이스를 도시한다.
도 9는 세션 내의 디바이스들을 관리하기 위한 예시적인 사용자 인터페이스를 도시한다.
도 10은 본 개시내용의 일 양태에 따른 재생 콘텐츠의 예시적인 그룹 관리를 도시하는 신호 흐름도이다.
도 11은 세션 내의 디바이스들을 관리하기 위한 예시적인 사용자 인터페이스를 도시한다.
도 12는 본 개시내용의 다른 양태에 따른 예시적인 그룹 관리를 도시하는 신호 흐름도이다.
도 13은 본 개시내용의 일 양태에 따른 방법을 도시한다.
도 14 및 도 15는 본 개시내용의 양태들에 따른 렌더링 디바이스들을 관리하는 커맨드들을 입력하는 두 용례를 도시한다.
도 16은 본 개시내용의 다른 양태에 따른 방법을 도시한다.
도 17은 본 개시내용의 추가적인 양태에 따른 방법을 도시한다.
도 18은 본 개시내용의 다른 양태에 따른 방법을 도시한다.
도 19는 본 개시내용의 추가적인 양태에 따른 시스템의 네트워크 다이어그램이다.
도 20a는 본 개시내용의 일 양태에 따른 가상 어시스턴트 시스템을 도시하는 블록도이다.
도 20b는 본 개시내용의 일 양태에 따른 가상 어시스턴트 시스템의 기능들을 도시한다.
본 개시내용의 양태들은 재생 디바이스들의 애드 호크 그룹 사이에서 미디어 재생을 관리하기 위한 기술들을 제공한다. 이러한 기술들은 재생 디바이스들이 그것들의 재생 역량들에 관한 정보를 교환하는, 재생 디바이스들 사이의 세션을 구축하는 것을 수반할 수 있다. 디바이스들의 재생 역량들에 기초하여, 재생 모드가 세션에 대하여 유추될 수 있다. 재생 동작들은 세션의 구성원들인 디바이스들 사이에서 동기화될 수 있는데, 여기서 디바이스들은 재생 동작에 따라 렌더링되는 자산(들)의 식별 및 자산의 재생의 타이밍 정보를 수신한다. 디바이스들은 그것들이 그렇게 할 수 있을 때 재생 자산들을 직접 미디어 소스들로부터 스트리밍할 수 있다. 이러한 방식으로, 통신 리소스들이 절약된다.
네트워크 연결된 디바이스들의 애드 호크 그룹들을 통한 미디어 재생이 알려져 있지만, 그것들은 비효율적인 경향이 있다. 이러한 애플리케이션들은 통상적으로 그룹 내의 제1 디바이스로 하여금 재생 콘텐츠를 그룹 내의 각각의 디바이스에 스트리밍하게 한다. 제1 디바이스가 스트리밍된 콘텐츠를 다른 소스로부터 검색하면, 이는 이러한 애플리케이션들에서 대역폭 부족현상을 야기하게 되는데, 그 이유는 제1 디바이스가 검색하고, 이어서 그룹 내의 다른 디바이스들에 의해 렌더링되는 콘텐츠를 재전송하기 때문이다. 그러나, 본 개시내용의 기술들은 업링크 대역폭이 제한되거나 또는 디지털 저작권 관리("DRM")가 자산들에 대한 한계 액세스를 제한할 때에도 세션의 모든 디바이스들에 걸쳐 일관된 방식으로 재생이 수행되게 한다.
도 1은 본 개시내용의 일 양태에 따른 시스템(100)을 도시한다. 시스템(100)은 네트워크(120)를 통해 상호 통신에 제공되는 복수의 렌더링 디바이스들(110.1 내지 110.N)을 포함할 수 있다. 렌더링 디바이스들(110.1 내지 110.N)은 협력하여 조화된 방식으로 미디어 아이템을 렌더링할 수 있다.
동작 시, 렌더링 디바이스들 중 하나(말하자면, 디바이스(110.1))는 "마스터" 디바이스의 역할로 동작할 수 있다. 마스터 디바이스(110.1)는 렌더링 디바이스들(110.1 내지 110.N)의 그룹에 의해 재생될 미디어 자산들의 재생목록을 나타내는, 편의상 "재생 큐"로 불리는 데이터를 저장할 수 있다. 재생 큐는, 예를 들어, 연속적으로 재생될 복수의 자산들, 현재 재생 모드 등을 식별할 수 있다(예를 들어, "셔플" 또는 "반복" 모드에 따라 재생중인 오디오 자산들). 다른 양태들에서, 자산들은, 예를 들어, 알고리즘 스테이션, 스트리밍된 스테이션, 또는, 제3자 애플리케이션의 경우에, 그 애플리케이션에 의해 유지되는 데이터 구조와 같이 알고리즘 기준에 따라 식별될 수 있다. 마스터 디바이스(110.1)는 다른 렌더링 디바이스들(110.2 내지 110.N)과 통신하여 미디어 자산들의 재생을 동기화할 수 있다.
"이차" 디바이스들로 불리는, 그룹 내의 다른 렌더링 디바이스들(110.2 내지 110.N)은 동기화된 자산들을 재생할 수 있다. 일 양태에서, 디바이스들(110.1 내지 110.N) 각각은 자산들을 직접 네트워크 상의 미디어 소스(130)로부터 스트리밍할 수 있다. 이차 디바이스들(110.2 내지 110.N)은 통상적으로 현재 재생중인 자산 및 렌더링을 동기화할 타임베이스를 나타내는 데이터를 저장한다. 렌더링 디바이스(말하자면, 디바이스(110.3))가 자산들을 미디어 소스(130)로부터 스트리밍할 수 없는 다른 양태에서, 마스터 디바이스(110.1)는 데이터를 능력이 없는 렌더링 디바이스(110.3)에 직접 스트리밍할 수 있다. 다른 양태에서, 마스터 디바이스(110.1)는, 이차 디바이스들의 역량들에 상관없이, 자산들을 복호화 및 디코딩하고, 이어서 자산 데이터(예컨대, 오디오 바이트)를 이차 디바이스들에 스트리밍할 수 있다.
본 논의의 원리들은 다양한 상이한 유형들의 렌더링 디바이스들(110.1 내지 110.N)을 이용한 응용을 확인한다. 그것들은 렌더링 디바이스(110.1); 디스플레이 장비(110.2); 및 스피커 장비(110.1 내지 110.N)로 표현되는, 스마트폰 또는 태블릿 컴퓨터를 포함할 수 있다. 도 1에 도시되지 않았지만, 본 발명의 원리들은 다른 유형들의 장비, 예컨대, 랩톱 및/또는 개인용 컴퓨터, 개인용 미디어 플레이어, 셋톱 박스, 디스크형 미디어 플레이어, 서버, 프로젝터, 웨어러블 컴퓨터, 내장형 플레이어(차량용 음악 플레이어), 및 개인용 게임 장비를 이용한 응용을 확인한다.
렌더링 디바이스들(110.1 내지 110.N)은 네트워크(120)로 포괄적으로 도시된, 하나 이상의 네트워크에 의해 상호 통신에 제공될 수 있다. 네트워크(120)는 다양한 렌더링 디바이스들(110.1 내지 110.N)이 서로 발견하게 되는 통신 조직을 제공할 수 있다. 예를 들어, 주거용 응용예들에서, 네트워크(120)는 공동 집에 있는 렌더링 디바이스들이 서로 발견하게 되는 통신 조직을 제공할 수 있다. 사무실 응용예에서, 네트워크(120)는 공동 건물, 공동 부서 및/또는 공동 캠퍼스에 있는 렌더링 애플리케이션들이 서로 발견할 수 있는 통신 조직을 제공할 수 있다. 본 명세서에 다른 방식으로 언급되지 않은 경우, 네트워크들(120)의 수를 포함한, 네트워크들(120)의 아키텍처 및/또는 토폴로지는 본 논의에 중요하지 않다.
도 2는 본 개시내용의 일 양태에 따른 렌더링 디바이스(200)의 블록도이다. 렌더링 디바이스(200)는 프로세서(210), 메모리(220), 사용자 인터페이스(230), 송수신기(240), 및, 디바이스의 유형에 적절한, 디스플레이(들)(250) 및/또는 스피커(들)(260)를 포함할 수 있다.
렌더링 디바이스는 메모리(220)에 저장된 프로그램 명령어들을 실행하는 프로세서(210)를 포함할 수 있다. 프로그램 명령어들은 렌더링 디바이스(200)의 운영 체제(212); 동기화 관리자(214)(본 명세서에 논의됨); 렌더링 디바이스(200) 및 상대편 렌더링 디바이스들(110.1 내지 110.N)(도 1)에 의해 수행될 수 있는 재생 동작들에 수반되는 렌더링 디바이스(200)의 다양한 애플리케이션들(216.1 내지 216.N); 및 옵션적으로, 렌더링 디바이스(200) 및/또는 상대편 렌더링 디바이스들(110.1 내지 110.N)(도 1)에 의해 렌더링되는 재생 미디어(218)를 정의할 수 있다.
렌더링 디바이스(200)는 또한 다른 기능 유닛들, 예컨대, 사용자 인터페이스(230), 송수신기("TX/RX")(240), 디스플레이(들)(250) 및/또는 스피커(들)(260)를 포함할 수 있다. 사용자 인터페이스(230)는 렌더링 디바이스(200)가 사용자들과 상호작용하는 제어들을 제공할 수 있다. 사용자 인터페이스 컴포넌트들은 다양한 운영자 제어들, 예컨대, 버튼, 스위치, 포인터 디바이스들 등 및 다양한 출력 컴포넌트들, 예컨대, 표시자, 조명, 스피커 및/또는 디스플레이를 포함할 수 있다.
TX/RX(240)는 렌더링 디바이스(200)는 네트워크(120)(도 1) 및, 확장하여, 다른 렌더링 디바이스들 및, 필요한 경우, 미디어 소스들과 통신하는 인터페이스를 제공할 수 있다.
디스플레이(들)(250) 및/또는 스피커(들)(260)는 디바이스(200)가 렌더링 디바이스의 유형에 따라 재생 콘텐츠 ― 비디오 및/또는 오디오 ―를 렌더링할 수 있는 렌더링 컴포넌트들을 나타낸다. 디스플레이들 및 스피커들은 렌더링 디바이스(200)에 의해 수행될 수 있는 재생 동작들을 단지 강조하기 위하여 사용자 인터페이스(230)로부터 분리된 것으로 도시된다. 실제로, 사용자 인터페이스 동작들에 수반되는 동일한 디스플레이들 및/또는 스피커들은 또한 재생 동작들에 수반될 것이다.
언급된 바와 같이, 본 개시내용의 원리들은 다양한 렌더링 디바이스들 및, 특히, 다양한 유형들의 렌더링 디바이스들 사이의 재생 동작들의 동기화를 수반하였다. 그에 따라, 주어진 렌더링 디바이스는 도 2에 도시된 모든 컴포넌트들을 소유할 필요는 없다. 스피커 디바이스가, 예를 들어, 디스플레이를 포함할 필요는 없다. 셋톱 박스 디바이스가 스피커 또는 디스플레이를 소유할 필요는 없다. 따라서, 도 2의 블록도의 일부 편차는 본 개시내용의 원리들이 동작에 대입될 때 예상될 수 있다.
도 3은 본 개시내용의 일 실시예에 따른 동기화 세션(300)의 진행을 도시하는 상태도이다. 동기화 세션(300)은 세션 수정 단계(단계들(310, 320)로 별도로 도시됨), 동기화/재생 단계(330), 및 옵션적으로, 큐 마이그레이션 상태(340)를 포함하는 여러 주요 단계들에 따라 진행될 수 있다. 세션 수정 단계에 진입하여 렌더링 디바이스를 동기화 세션에 추가(단계(320))하거나 또는 세션에서 하나를 제거(단계(320))할 수 있다. 동기화/재생 단계(330)는 현재 공동 동기화 그룹의 구성원들인 디바이스들이 재생에 관한 정보를 교환하는 동작 단계를 나타낸다. 큐 마이그레이션 단계(340)에 진입하여 재생 큐의 상태를 하나의 렌더링 디바이스로부터 다른 렌더링 디바이스로 전달하여, 효과적으로 디바이스들의 그룹에 대하여 새로운 마스터를 지정할 수 있다.
동기화 세션(300)은 처음 두 렌더링 디바이스들에 의해, 아마도 더 많이, 세션(300)에 개시될 수 있다. 통상적으로, 세션은 제1 렌더링 디바이스(말하자면, 도 1의 디바이스(110.1))로부터 개시되며, 이는 암암리에 렌더링 디바이스(110.1)가 세션에 포함될 것을 나타낸다. 제2 렌더링 디바이스(말하자면, 도 1의 디바이스(110.2))가 식별될 수 있다.
이 식별로부터, 세션(300)은 수정 상태(310)에 진입하여 선택된 디바이스들을 세션(300)에 추가할 수 있다. 디바이스들(110.1, 110.2)은 상호 통신에 참여하여 렌더링에 사용될 재생 모드를 협상할 수 있다. 협상이 완료되면, 디바이스들은 세션에 대한 구성원들인 디바이스들이 렌더링에 대한 정보를 교환하는 동안 동기화/재생 상태(330)에 진입할 수 있다.
세션은 다른 제어 입력들에 응답하여 다른 상태들로 진행할 수 있다. 예를 들어, 다른 디바이스(말하자면, 디바이스(110.3))를 세션(300)에 추가하기 위한 입력이 수신되는 경우, 세션(300)은 마스터 디바이스(말하자면, 디바이스(110.1))가 렌더링에 사용될 재생 모드를 새로운 디바이스(110.3)와 협상하는 상태(310)로 돌아갈 수 있다.
세션(300)으로부터 디바이스를 삭제하기 위한 입력이 수신되는 경우, 세션(300)은 식별된 디바이스(말하자면, 디바이스(110.3))가 세션에서 제거되는 다른 수정 상태(320)로 진행할 수 있다. 이 상태에서, 마스터 디바이스(110.1)가 제거될 디바이스(110.3)와 통신하여 세션에서의 디바이스의 구성원 자격을 종료시킬 수 있다. 디바이스(110.3)는 렌더링을 종료해야 한다.
디바이스가 세션(300)에서 삭제되면 세션(300)은 여러 다른 상태들로 진행할 수 있다. 디바이스의 삭제는 마지막 두 디바이스들(예컨대, 디바이스들(110.2, 110.3)) 세션에서 분리하며(세션에 디바이스들의 그룹이 없음을 의미함), 이는 세션(300)이 끝나게 할 수 있다.
다른 용례에서, 삭제되는 디바이스는 세션에 "마스터" 디바이스일 수 있다. 이 경우에, 마스터 디바이스의 삭제는 세션으로 하여금 큐 마이그레이션 상태(340)로 진입하게 할 수 있으며, 여기서 새로운 마스터 디바이스가 세션에 남아 있는 디바이스들로부터 선택되고, 재생 큐 정보가 새롭게 선택된 마스터에 전달된다. 새로운 마스터가 선택되면, 세션(300)은 동기화/재생 상태(330)로 돌아갈 수 있다.
다른 양태에서, 큐 마이그레이션은 운영자 제어에 응답하여 수행될 수 있다. 예를 들어, 운영자는 현재 마스터 디바이스로 활동하지 않는 디바이스와 상호작용할 수 있다. 운영자는, 예를 들어, 재생 모드 또는 재생 자산들을 변경(예컨대, 하나의 자산 재생목록에서 다른 자산 재생목록으로 전환)함으로써 재생 세션을 변경하는 제어에 관여할 수 있다. 이에 응답하여, 세션 내의 디바이스들은 큐 마이그레이션 상태(340)로 진행하여 큐를 운영자가 상호작용하고 있는 디바이스에 전달하고, 이어서 운영자가 새로운 재생 모드에 관여하면 동기화/재생 상태(330)로 돌아올 수 있다.
추가적인 양태에서, 디바이스의 삭제(320) 및, 필요한 경우, 큐 마이그레이션(340)은 디바이스 실패에 응답하여 수행될 수 있다. 동기화 정보의 교환은 세션 내의 디바이스들 사이에 메시지들의 전송을 수반할 수 있다. 주어진 디바이스로부터 사전결정된 기간이 지나도록 메시지들이 수신되지 않는 경우, 그것은 다른 디바이스들에 의해 디바이스 실패로 해석될 수 있다. 이에 응답하여, 세션은 상태(320)로 진행하여 실패한 디바이스를 세션에서 삭제하고, 실패한 디바이스가 마스터 디바이스인 경우, 상태(340)에서 큐 마이그레이션을 수행할 수 있다.
통상적으로, 재생 세션은 디바이스들에서 다양한 사용자 인터페이스 컴포넌트들에 의해 지원될 수 있다. 일부 예시적인 사용자 인터페이스들은 도 8 및 도 9에 도시된다. 일 양태에서, 상태 변경들은 사용자 인터페이스들을 업데이트하기 전에 원자적 트랜잭션처럼 구현될 수 있다. 이러한 방식으로, 사용자 인터페이스들은 동기화/-재생 상태(330)의 동작 동안 주기적으로 리프레시될 수 있으며, 이는 사용자 인터페이스의 표시를 단순화한다.
종료 이벤트나 큐 마이그레이션 이벤트 어느 것도 트리거되지 않은 경우, 세션(300)은 상태(320)에서 세션 수정이 완료되면 동기화/재생 상태(330)로 돌아갈 수 있다.
도 4는 본 개시내용의 일 양태에 따른, 디바이스들을 세션(300)(도 3)에 추가하기 위한 디바이스들 사이의 신호 흐름(400)을 도시한다. 이 예에서, 세션을 관리하는 제1 렌더링 디바이스(110.1)로부터 두 렌더링 디바이스들(110.2, 110.3)이 세션에 추가된다.
표시된 바와 같이, 세션(300)은 두 디바이스들을 세션에 ― 여기서, 디바이스들(110.1, 110.2) 추가함으로써 시작될 수 있다. 디바이스(110.2)가 세션에 추가되는 것을 나타내는 사용자 입력에 응답하여, 렌더링 디바이스(110.1)는 렌더링 디바이스(110.2)의 재생 역량들을 요청하는 메시지(메시지(410))를 그것에 전송할 수 있다. 렌더링 디바이스(110.2)는 그것의 재생 역량들에 관한 정보를 제공함으로써 응답할 수 있다(메시지(420)).
디바이스(110.1)는 디바이스들(110.1, 110.2)을 세션의 구성원들로 식별하고, 수행될 재생 렌더링 동작의 다양한 특징부들을 식별하는 세션 객체를 구축할 수 있다(박스(430)). 그 후에, 렌더링 디바이스들(110.1, 110.2)은 재생 렌더링 동작에 관한 동기화 정보(메시지(440))를 교환할 수 있다.
동기화 정보는 디바이스들의 유형 및 디바이스에 의해 지원되는 렌더링 모드들 둘 모두를 기술하는 정보를 포함할 수 있다. 예를 들어, 디바이스들은 스스로를 비디오-가능형, 오디오-가능형 또는 둘 모두인지 식별할 수 있다. 디바이스들은 지원되는 재생 애플리케이션들(예를 들어, 아이튠즈(ITunes), 스포티파이(Spotify), 판도라(Pandora), 넷플릭스(Netflix) 등)을 식별할 수 있고, 응용가능한, 계정 식별자들이 이러한 정보와 연관된다.
이러한 정보로부터, 마스터 디바이스가 렌더링되는 자산들, 자산들의 타이밍 정보 및 기타 재생 모드 정보(예를 들어, 렌더링에 사용될 애플리케이션들)를 식별하는 세션 객체를 구축할 수 있다. 세션 객체로부터의 상태 정보는 그것의 라이프 사이클에 걸쳐 세션에 대한 다른 디바이스(들)에 분배될 수 있다.
재생 렌더링 동작들은 렌더링 디바이스들(110.1, 110.2)에 의해 재생될 미디어의 유형들에 따라 달라질 수 있고, 따라서, 동기화 정보의 유형들도 달라질 수 있다. 다음의 용례들을 고려해 본다:
렌더링 디바이스들(110.1, 110.2) 둘 모두 음악 재생목록으로부터 재생한다. 이 경우에, 마스터 디바이스는 재생 큐, 예를 들어, 오디오 재생목록을 구성하는 오디오 자산들, 오디오 자산들이 연관된 임의의 콘텐츠 서비스(예를 들어, 아이튠즈), 재생 모드(예컨대, 셔플, 재생 순서) 등을 나타내는 데이터를 저장할 수 있다. 일 양태에서, 동기화 정보는 재생되고 있는 자산(예를 들어, URL 및 디지털 저작권 관리 토큰에 의함), 음악 자산들을 렌더링하기 위한 타이밍 정보, 및 디바이스들(110.1, 110.2)의 역할들(예컨대, 디바이스들이 자산 전체 또는 자산의 특정된 채널 ― 좌측, 우측 ―을 재생하는지)을 식별할 수 있다. 렌더링 디바이스들(110.1, 110.2)은 이 정보를 이용하여 재생목록 내에서 식별된 음악 자산들을 획득하고 그것들을 동기화하여 렌더링한다. 재생 모드의 변경(예컨대, 이전 트랙으로 건너뛰기, 다음 트랙으로 건너뛰기, 셔플)은 새로운 동기화 정보로 하여금 디바이스들 사이에 전송되게 할 수 있다.
다른 양태에서, 동기화 정보는 사용 중인 콘텐츠 서비스 및 핸들(아마도 사용자 ID, 패스워드, 세션 ID)을 식별하여, 서비스가 액세스되고 있는 서비스 파라미터들 및 재생 시 디바이스들의 각자의 역할들의 임의의 파라미터들(예컨대, 비디오, 오디오, 오디오 채널 등)을 식별할 수 있다. 이와 같은 경우에, 렌더링 디바이스들(110.1, 110.2)은 콘텐츠 서비스를 지원하는 서버(130)를 이용하여 스스로 인증할 수 있다. 서버(130)는 재생중인 자산들, 재생 순서 등에 관한 정보를 보존할 수 있고, 자산들을 디바이스들에 직접 제공할 수 있다.
렌더링 디바이스들(110.1, 110.2) 둘 모두가 공동 시청각 자산을 재생한다. 이 경우에, 마스터 디바이스는 재생 큐를 나타내는 데이터, 예를 들어, 렌더링될 자산으로부터의 비디오 및 오디오 컴포넌트들, 자산이 액세스되는 임의의 콘텐츠 서비스, 및 재생 설정을 저장할 수 있다. 많은 시청각 자산들은 다중 비디오 컴포넌트들(예를 들어, 상이한 스크린 해상도 및/또는 코딩 포맷에서의 비디오의 표현, 상이한 시야각에서의 비디오의 표현 등) 및 다중 오디오 컴포넌트들(예를 들어, 상이한 언어의 오디오 트랙들)을 포함할 수 있다. 동기화 정보는 그룹 내의 각각의 디바이스에 의해 렌더링되는 자산 컴포넌트, 및 각자의 컴포넌트들을 렌더링하기 위한 타이밍 정보(예컨대, 자산의 타임라인에서의 참조점들)를 식별할 수 있다. 렌더링 디바이스들(110.1, 110.2)은 이 정보를 이용하여 디바이스들의 각자의 유형들에 관련된 시청각 자산의 컴포넌트들을 획득할 수 있다. 예를 들어, 디스플레이 디바이스는 디스플레이의 구성에 따르는 자산의 비디오 부분을 획득할 수 있고, 스피커 디바이스는 렌더링 설정(예컨대, 재생 설정에 따라 특정될 수 있는 영어 오디오 트랙 또는 프랑스어 오디오 트랙)에 따르는 자산의 오디오 부분을 획득할 수 있다.
표시된 바와 같이, 큐 마이그레이션(상태(340))은 새로운 마스터 디바이스가 선택될 때 수행될 수 있다. 새로운 마스터 디바이스의 선택은 디바이스들 사이의 메시지 교환 이후에 수행될 수 있고, 다양한 방법으로 수행될 수 있다. 제1 양태에서, 세션에 대한 개별적인 디바이스들은 마스터 디바이스들의 역할을 할 수 없는데, 그 이유는, 예를 들어, 그것들은 기능 제한적인 디바이스들이기 때문이다. 따라서, 디바이스 역량에 기초하여, 디바이스들은 마스터 디바이스로서 동작하는 후보군이 되는 것이 배제될 수 있다. 후보자 디바이스들 사이에서, 디바이스의 특성들에 기초하여 마스터 디바이스가 선택될 수 있다. 예를 들어, 디바이스들은 그것들이 배터리 동작형 또는 유선 전원공급형인지에 기초하여, 그것들의 네트워크(120)에 대한 접속 대역폭에 기초하여, 그것들의 부하(예를 들어, 그것들이 자신의 열적 한계에 가까운지)에 기초하여, 다른 태스크들을 처리하기 위한 인터럽션의 주기와 같은 특성들에 기초하여 달라질 수 있다.
마스터 디바이스의 선택은 이러한 요인들 중 하나 이상에 응답하여, 더 높은 신뢰성을 나타내는 요인들에 주어진(옵션적으로) 선호도를 바탕으로 수행될 수 있다. 예를 들어, 유선 전원공급형 디바이스들은 배터리 동작형 디바이스들보다 더 신뢰할 만하다고 판단될 수 있다. 자신들의 열적 한계에 가까이 동작하고 있는 디바이스들은 그렇지 않은 디바이스들보다 덜 신뢰할 만하다고 판단될 수 있다. 더 넓은 대역폭 접속을 갖는 디바이스들은 좁은 대역폭을 갖는 디바이스들보다 더 신뢰할 만하다고 간주될 수 있다. 덜 빈번하게 인터럽트되는 디바이스들은 더 높은 비율로 인터럽트되는 디바이스들보다 더 신뢰할 만하다고 간주될 수 있다. 새로운 마스터 디바이스의 선택은, 이러한 요인들을 개별적으로 또는 종합적으로 고려하여 도출될 수 있다.
도 4는 또한 다른 디바이스(110.3)를 세션에 추가하는 동작들을 도시한다. 여기서, 세션은 렌더링 디바이스(110.1)에서의 사용자 입력에 응답하여 세션에 추가되는 것으로 도시된다. 렌더링 디바이스(110.1)는 렌더링 디바이스(110.3)의 재생 역량들을 요청하는 메시지(메시지(450))를 렌더링 디바이스(110.3)에 전송할 수 있다. 렌더링 디바이스(110.2)는 그것의 재생 역량들에 관한 정보를 제공함으로써 응답할 수 있다(메시지(460)).
디바이스(110.1)는 세션 객체를 수정하여 디바이스(110.3)를 추가할 수 있다(박스(470)). 도시된 예에서, 세션 객체는 디바이스들(110.1, 110.2, 및 110.3)을 세션의 구성원들로서 식별할 수 있다. 그것은 또한 수행되는 재생 렌더링 동작의 다양한 특징부들을 식별할 수 있다. 이러한 특징부들은 디바이스들(110.1, 110.2, 및 110.3)의 역량들의 중복에 기초하여 박스(430) 내에서 식별된 특징부들로부터 변경될 수 있다. 그 후에, 렌더링 디바이스들(110.1, 110.2, 및 110.3)은 재생 렌더링 동작에 관한 동기화 정보(메시지(480))를 교환할 수 있다.
도 5는 본 개시내용의 일 양태에 따른 세션(300)(도 3)에 의한 재생 콘텐츠의 예시적인 렌더링을 도시하는 신호 흐름도이다. 이 예에서, 3개의 렌더링 디바이스들(110.1 내지 110.3)이 공동 재생 세션의 구성원들이다.
이 재생 예에서, 렌더링 디바이스들의 각각은 공동 애플리케이션을 이용하여 미디어 콘텐츠를 재생하는 역량을 갖는다. 따라서, 각각의 렌더링 디바이스(110.1 내지 110.3)는 그것의 각자의 재생 콘텐츠를 미디어 소스(130)로부터 네트워크를 통해 스트리밍하고 다른 것들에 독립적으로 재생 콘텐츠를 렌더링하는데, 이는 박스들(520, 530 및 540)에 나타나 있다. 이 예에서, 렌더링 디바이스들(110.1 내지 110.3)은 서로 통신하여 재생을 동기화하지만(메시지(510)), 그것들은 렌더링될 재생 콘텐츠를, 독립적으로 미디어 소스(130)와의 통신 프로세스들을 통해 획득한다.
도 6은 본 개시내용의 다른 양태에 따른 세션(300)(도 3)에 의한 재생 콘텐츠의 예시적인 렌더링을 도시하는 신호 흐름도이다. 이 예에서, 3개의 렌더링 디바이스들(110.1 내지 110.3)이 공동 재생 세션의 구성원들이다.
이 재생 예에서, 렌더링 디바이스들은 공동 애플리케이션을 이용하여 미디어 콘텐츠를 재생하는 공동 역량을 갖지 않는다. 디바이스들(110.1, 110.2)은 그것들의 각자의 재생 콘텐츠를 미디어 소스(130)로부터 획득하는 역량을 갖지만, 디바이스(110.3)는 그렇지 않다.
이 예에서, 렌더링 디바이스들(110.1, 110.2)은 그것들의 각자의 재생 콘텐츠를 미디어 소스(130)로부터 네트워크를 통해 스트리밍하고, 다른 것들에 독립적으로 재생 콘텐츠를 렌더링하는데, 이는 박스들(620, 630)에 나타나 있다. 디바이스들 중 하나(이 예에서 디바이스(110.1))는 렌더링 디바이스(110.3)를 위한 콘텐츠를 획득하고, 재생 콘텐츠를 렌더링 디바이스(110.3)에 전송할 수 있다(박스(640)). 따라서, 렌더링 디바이스(110.3)는 자신의 콘텐츠를 미디어 소스가 아닌, 세션 내의 다른 디바이스(110.1)로부터 획득한다.
일부 응용예들에서, 렌더링 디바이스(110.3)가 디지털 저작권 관리(DRM) 이슈로 인해 주어진 재생 모드에서 콘텐츠를 렌더링할 역량을 갖지 못할 수 있다. 예를 들어, (예를 들어, 추가되는 디바이스가 콘텐츠가 재생되고 있는 미디어 소스에 계정이 없어서) 현재 활성화된 재생 모드에 참여할 권한이 없는 디바이스를 진행중인 세션에 추가하려는 시도를 하는 경우, 여러 결과들이 가능하다. 하나의 경우에, 능력이 없는 렌더링 디바이스가 추가되지 않을 수 있다. 다른 경우에, (예를 들어, 새로운 디바이스가 액세스 권한이 있는 대안 애플리케이션으로 전환함으로써) 현재 재생 모드에서와 동일한 자산들을 재생하는 대안 재생 모드가 유도될 수 있다.
도 7은 본 개시내용의 다른 양태에 따른 세션(300)(도 3)으로부터 렌더링 디바이스(110.2)를 제거하는 예시적인 프로세스를 도시하는 신호 흐름도이다. 이 예에서, 3개의 렌더링 디바이스들(110.1 내지 110.3)이 초기의 공동 재생 세션의 구성원들이다. 이 예에서, 3개의 디바이스들(110.1 내지 110.3)은 주기적인 동기화 통신(메시지(710))에 관여하여 디바이스들 사이의 재생을 동기화할 수 있다.
일부 시점에, 디바이스(110.2)가 세션에서 제거되어야 한다는 것을 나타내는 사용자 입력이 수신될 수 있다. 이에 응답하여, 마스터 디바이스(여기서, 디바이스(110.1))가 세션 객체를 수정하여 디바이스(110.2)를 떠나는 디바이스로 식별할 수 있다. 마스터 디바이스(110.1)는 떠나는 디바이스(110.2)가 재생을 종료할 것을 나타내는 메시지(730)를 떠나는 디바이스(110.2)에 전송할 수 있다. 렌더링 디바이스(110.2)는 이에 응답하여 자신의 재생을 종료할 수 있다(박스(740)). 그 후에, 재생을 수반하는 동기화 메시지들(750)이 세션 내에 남아있는 디바이스들(110.1, 110.3) 사이에 교환될 것이다.
다른 양태에서, 디바이스의 제거는 제거되고 있는 디바이스에서 개시될 수 있다. 이 이벤트(미도시)에서, 제거되고 있는 디바이스는 자신의 재생을 종료시키고, 마스터에게 디바이스의 제거에 대하여 통지하는 메시지를 마스터 디바이스에 전송할 수 있다.
전술한 논의는 세션 관리 기능들을 공동 디바이스(디바이스(110.1))에 의해 제어되는 것으로 나타냈지만, 본 논의의 원리들 그렇게 한정되지 않는다. 따라서, 본 논의의 원리들은 상이한 디바이스들이 세션 상태(도 3)를 변경하는 응용을 확인한다. 따라서, 디바이스를 세션에 추가하는 것(상태(310))은 세션에 추가되는 디바이스를 포함하는, 임의의 디바이스에 의해 개시될 수 있다. 유사하게, 세션에서 디바이스를 삭제하는 것(상태(320))은 임의의 디바이스, 마스터 디바이스 또는 이차 디바이스에 의해 개시될 수 있다. 큐 마이그레이션은, 논의된 바와 같이, 사용자 제어에 의해 또는 마스터 디바이스를 세션에서 제거하는 이벤트에 의해 개시될 수 있다.
도시적인 예와 같이, 다른 디바이스가 이미 관리하는 디바이스로서 활성화된 기존 세션에 이차 디바이스가 합류하는 구성을 고려해본다. 예를 들어, 세션이 스마트 스피커(110.3)(도 1), 집 안의 디바이스들의 그룹에 대한 재생 세션을 관리하는 스피커 디바이스에 관리되는 경우에 일어날 수 있다. 사용자가 그의/그녀의 스마트폰(110.1)을 세션에 추가할 수 있다. 이 경우에, 스마트폰(110.1)은 자신을 세션에 합류시키는 동작(상태(310), 도 3)을 개시할 수 있다. 그것은 초기에 이차 디바이스의 역할을 할 수 있고, 재생중인 미디어 자산과 연관된 미디어 자산들(말하자면, 비디오 콘텐츠, 이미지 콘텐츠)의 렌더링을 시작할 수 있다. 결국, 사용자는 스마트폰(110.1)을 통해 재생 제어 동작들에 관여할 수 있고, 이는 재생 큐 정보를 스마트폰(110.1)으로 전달하는 큐 마이그레이션 이벤트(상태(340))를 야기할 수 있다. 그리고, 추가적으로, 사용자는 세션에서 스마트폰(110.1)을 제거(상태(320))할 수 있는데, 이는 재생 큐 정보를 세션 내의 다른 디바이스 ― 아마도 스마트 스피커(110.3)로 다시 전달하는 제2 큐 마이그레이션 이벤트(상태(340))를 야기할 수 있다.
대안적으로, 스마트폰(110.1)으로 하여금 마스터 디바이스가 되게 하는 큐 마이그레이션 이벤트 이후에, 사용자(또는 다른 사용자)는 스피커(110.3)를 통해 재생 제어 동작들에 관여할 수 있다. 이와 같은 경우에, 다른 큐 마이그레이션 이벤트(상태(340))가 일어나, 재생 큐 정보를 스마트 스피커에 전달할 수 있다.
큐 마이그레이션은 사용자들이 접속된 디바이스들을 통해 커맨드들을 입력하는 모든 경우들에 수행될 필요는 없다. 다른 실시예들에서, 그룹의 구성원들인 디바이스들은 사용자들에게 이러한 디바이스들에서 진행중인 재생 세션에 관한 정보를 디스플레이하는 원격 제어 사용자 인터페이스들을 공유할 수 있다. 이러한 원격 제어 디스플레이를 통해 사용자들은, 마스터 디바이스에 입력되지 않는 경우, 마스터 디바이스에 전달되어 재생 모드를 변경하게 하는 커맨드들을 입력하게 할 수 있다. 큐 마이그레이션은 이러한 용례들에서 일어날 필요는 없다.
도 8은 본 개시내용의 일 양태에 따른 디스플레이 가능한 디바이스에 표시될 수 있는 세션(300)(도 3) 관리를 위한 예시적인 사용자 인터페이스(800)를 도시한다. 사용자 인터페이스(800)는 세션 내의 디바이스 구성원 자격을 관리하기 위한 제어부(810), 재생 세션 내의 자산들의 재생을 관리하기 위한 제어부들(820, 825), 및 자산 정보의 렌더링을 위한 지역들(830, 835)을 포함할 수 있다.
제어부들(810)은 디바이스들을 세션에 추가 또는 삭제하기 위한 제어부들을 포함할 수 있다. 도 8의 예에서, 제어 지역(810)은 디바이스를 추가하기 위한 제1 제어부(812), 현재 세션 내의 디바이스(들)를 디스플레이하는 제2 제어부(814), 및 다른 세션 관리 제어부에 액세스하기 위한 제3 제어부(816)를 포함한다.
제어부들(820, 825)은 자산 재생을 제어할 수 있다. 도시된 예에서, 그것들은 재생/일시정지 제어부, 재생을 스킵하여 이전 자산으로 되돌아가거나 또는 다음 자산으로 진행하는 제어부, 음량 제어부, 및 자산의 재생 타임라인을 따라 지정된 위치로 재생을 건너뛰는 제어부를 포함한다. 도 8에 도시되지 않았지만, 제어부들은 또한 재생 모드를 변경(예컨대, 정상 재생, 셔플, 반복), 재생목록을 변경, 미디어가 수신되는 서비스를 변경, 미디어가 수신되는 사용자 계정을 변경 등을 위해 호출될 수 있다. 또한, 비디오 자산들에 제공되는 것과는 상이한 오디오 자산들에 제공되는 사용자 제어부들의 세트로 렌더링되는 자산의 유형에 특화된 사용자 제어부들이 제공될 수 있다.
지역들(830, 835)은 자산 콘텐츠 또는 그 콘텐츠에 관한 메타데이터의 디스플레이를 제공할 수 있다. 오디오 정보의 경우, 그것은 렌더링중인 오디오와 연관된 그래픽 이미지들 및/또는 텍스트 정보(예컨대, 아티스트 이미지들, 아트워크, 트랙 이름 등)를 포함할 수 있다. 비디오의 경우, 그것은 자산 자체의 비디오 데이터를 포함할 수 있다.
도 9는 세션(300)(도 3) 내의 디바이스들을 관리하기 위한 예시적인 사용자 인터페이스(900)를 도시한다. 이 예에서, 사용자 인터페이스(900)는 디바이스들을 세션에 추가 및/또는 삭제하기 위한 제어 지역(910)을 포함할 수 있고, 그것은 기타 정보의 디스플레이를 위한 기타 지역들(920, 930, 940 내지 945)을 포함할 수 있다. 예를 들어, 지역(920)은 세션의 재생 모드에 관한 정보를 디스플레이할 수 있다. 지역(930)은 재생을 관리하기 위한 사용자 제어부들을 제공할 수 있다. 지역들(940 내지 945)은 세션의 구성원들은 아니지만 추가될 수 있는 다른 디바이스들에 대한 상태의 표시자들을 디스플레이할 수 있다.
도 10은 본 개시내용의 일 양태에 따른 재생 콘텐츠의 예시적인 그룹 관리를 도시하는 신호 흐름도이다. 도 10에 도시된 기술들은 새로운 디바이스(여기서, 렌더링 디바이스(110.3))가 진행중인 세션(300)(도 3)에 합류하려고 시도하지만, 예를 들어, 사용자 승낙 또는 디바이스들 간의 직접 통신을 막는 기타 제약들에 의해 세션 디바이스들의 그룹의 마스터 디바이스(110.1)를 발견하지 못하는 환경의 응용을 확인한다. 논의를 위해, 합류하는 디바이스(110.3)가 그룹의 다른 구성원을 발견 및 통신할 수 있다고 가정한다. 도 10의 예에서, 합류하는 디바이스(110.3)는 디바이스(110.2)와 통신할 수 있다.
이 예에서, 그룹의 구성원들인 두 디바이스들(110.1, 110.2) 사이에 재생 동기화(1010)가 수행된다. 합류하는 디바이스(110.3)는 그룹에 합류하기 위한 요청(메시지(1020))을 마스터가 아닌 디바이스(110.2)에 전송할 수 있다. 이에 응답하여, 마스터가 아닌 디바이스(110.2)는 합류 요청 메시지(메시지(1030))를 마스터 디바이스(110.1)에 전달할 수 있다. 마스터 디바이스는 마스터가 아닌 디바이스(110.2)에 대한 통신을 통해 합류하는 디바이스(110.3)의 역량들을 요청할 수 있고(메시지(1040)), 마스터가 아닌 디바이스(110.2)는 통신(메시지(1050))을 합류하는 디바이스(110.3)에 전달할 수 있다. 합류하는 디바이스(110.3)는 응답 메시지(메시지(1060)) 내에 자신의 역량들을 식별시킬 수 있고, 이는 마스터가 아닌 디바이스(110.2)에 전송되고 마스터 디바이스(110.1)에 전달된다(메시지(1070)). 마스터 디바이스는 세션 객체를 수정하여 렌더링 디바이스(110.3)를 도착하는 디바이스로 식별할 수 있다(박스(1080)). 그 후에, 3개의 렌더링 디바이스들(110.3) 간에 재생 동기화(1090)가 수행될 수 있다.
도 10의 실시예는 소위 "수동적(dumb) 디바이스들", 즉, 그룹 관리에서 마스터 디바이스들의 역할을 하는 기능이 없는 디바이스들을 이용한 응용을 확인할 수 있다. 따라서, 도 10에 도시된 양태에서, 렌더링 디바이스(110.2)는 렌더링 디바이스(110.2)가 세션 관리 동작들을 스스로 수행하는 역량이 없는 환경에 있는 경우에도 다른 디바이스들 사이에서 그룹 관리 메시지들을 전달할 수 있다.
수동적 디바이스들이 수반되는 다른 양태에서, 마스터 디바이스들은 이러한 디바이스들에 그룹 제어부들뿐만 아니라 디바이스에만 국한되어 적용되는 제어부들을 제공하는 사용자 인터페이스 제어부들을 공급할 수 있다. 도 11은 세션(300)(도 3) 내의 디바이스들을 관리하기 위한 예시적인 사용자 인터페이스(1100)를 도시한다. 이 예에서, 사용자 인터페이스(1100)는 세션 내의 디바이스들을 제어하기 위한 제어 지역(1110)을 포함할 수 있다. 그것은 현재 세션 내의 모든 디바이스들에 대하여 재생 음량을 제어하기 위한, 슬라이더로 도시된 제1 제어부(1112)를 포함할 수 있다. 그것은 세션 디바이스들의 재생 음량을 개별적으로 제어하기 위한 다른 제어부들(1114, 1116)을 포함할 수 있다. 하나의 이러한 제어부는, 말하자면, 제어부(1114)는 디바이스를 국지적으로 제어할 수 있다.
사용자의 로컬 제어부(1114)와의 상호작용에 응답하여, 디바이스는 사용자 입력에 의해 직접 지시되는 행위를 수행할 수 있다. 따라서, 음량 제어부와의 상호작용에 응답하여, 렌더링 디바이스는 그것의 음량 출력을 그에 따라 변경할 수 있다. 전체로서의 세션 그룹 또는 기타 디바이스를 표현하는 제어부와의 상호작용에 응답하여, 렌더링 디바이스는 사용자 입력을 마스터 디바이스에 보고할 수 있는데, 이는 음량 제어 커맨드들을 세션 내의 다른 디바이스들에 발행할 것이다.
다른 양태에서, 세션 디바이스들은 종래의 마이그레이션이 불가능한 환경에서 큐 마이그레이션을 모방하는 동작들을 수행할 수 있다. 세션이 두 완전한 능력있는 렌더링 디바이스들(마스터의 역할을 할 수 있는 디바이스들) 및 기타, 수동적 디바이스들(마스터의 역할을 할 수 없는 디바이스들)을 포함하는 곳에 놓인 환경을 고려해 본다. 이와 같은 구현예에서, 마스터 디바이스가 세션 관리 기능을 나타내는 사용자 인터페이스들을 수동적 디바이스들에 제공할 수 있다. 사용자가 세션을 제어하여 세션에서 현재 마스터를 제거하는 일이 일어날 수 있는데, 이는 큐 관리 책임을 다른 수동적 디바이스로 이동시킬 것이다. 이러한 환경들에서, 세션 디바이스들은 다양한 방법으로 응답할 수 있다:
Figure 112018102848130-pat00001
일 양태에서, 마스터 디바이스는 마스터의 역할을 할 수 있는 (수동적 디바이스 이외의) 세션 내의 다른 디바이스들을 검색할 수 있다. 하나가 발견되면, 큐 마이그레이션을 수행하여 큐 관리 책임을 다른 능력있는 디바이스에 전달할 수 있다.
Figure 112018102848130-pat00002
다른 양태에서, 마스터 디바이스는 큐 관리 책임을 유지할 수 있다. 그것은 스스로 침묵하며 세션으로부터의 제거를 모방하지만 여전히 큐 관리 동작들을 수행할 수 있다.
도 12는 본 개시내용의 다른 양태에 따른 세션(300)(도 3) 관리를 위한 통신 흐름(1200)을 도시한다. 도 12는 큐 관리가 제1 디바이스(여기서, 렌더링 디바이스(110.2))에 의해 수행되고 사용자들이 액세스 제어 특권들에 따라 동작하는 디바이스(렌더링 디바이스(110.3))를 추가하려고 시도하는 환경들에서의 응용을 확인한다.
통신 흐름(1200)에서, 렌더링 디바이스(110.3)가 세션에 추가되어야 함을 나타내는 추가 요청이 렌더링 디바이스(110.1)에 입력되고; 추가 요청(메시지(1210))은 큐 관리자, 렌더링 디바이스(110.2)에 전달된다. 이에 응답하여, 렌더링 디바이스(110.2)는 합류 요청 메시지(메시지(1220))를 렌더링 디바이스(110.3)에 송신할 수 있다. 렌더링 디바이스(110.3)는 큐 관리자, 렌더링 디바이스(110.2)에 송신되는 크리덴셜 챌린지(메시지(1230))로 응답할 수 있다. 이에 응답하여, 렌더링 디바이스(110.2)는 추가 요청이 수신되었던 렌더링 디바이스(110.1)로 크리덴셜 챌린지를 전달할 수 있다(메시지(1240)). 렌더링 디바이스(110.1)는 크리덴셜들을 큐 마스터(110.2)에 제공할 수 있는데(메시지(1250)), 큐 마스터(110.2)는 이것을 합류되는 렌더링 디바이스(110.3)에 전달한다. 크리덴셜들이 수신되는 것을 가정하면(박스(1270)), 합류되는 렌더링 디바이스(110.3)는 합류 요청을 허가하는 응답 메시지(메시1280)를 전달할 수 있다. 재생 동기화(1290)는 렌더링 디바이스들(110.2, 110.3) 간에 수행될 수 있다.
본 개시내용의 원리들은 디바이스들 사이의 연관이 디바이스 위치에 기초하여 생성될 수 있는 네트워크 연결된 환경에서의 응용을 확인한다. 거주 애플리케이션에서, 플레이어 디바이스들은 집의 개별적인 방들 ― 예컨대, 주방, 거실 등과 연관될 수 있다. 상업 애플리케이션에서, 플레이어 디바이스들은 개별적인 회의실들, 사무실 등과 연관될 수 있다. 휴대용 디바이스들은 종종 근처 위치에 있는 디바이스들을 자동으로 발견하는 프로토콜에 따라 동작한다. 이러한 애플리케이션들에서, 이러한 디바이스들의 식별자들은 자동으로 제어 지역(910)에 추가되어 운영자들이 디바이스들을 세션에 추가 및 삭제하도록 허용할 수 있다.
일 양태에서, 디바이스들은 세션들에 자동으로 추가 및 삭제되도록 구성될 수 있다. 예를 들어, 스마트폰의 오디오 플레이어가 (예를 들어, 차량의 시동이 켜지기 때문에) 그것이 플레이어를 검출할 때 차량의 내장된 플레이어로 세션을 자동으로 구축할 수 있다. 재생 세션은 세션이 합류되면 자동으로 차량의 오디오 시스템을 통해 미디어를 렌더링할 수 있다. 예를 들어, 차량의 시동이 꺼지기 때문에 스마트폰이 내장된 오디오 플레이어와의 접촉의 이탈을 검출하는 경우, 그것은 세션을 해체할 수 있다. 또한, 재생의 나중 시점에 다른 디바이스들, 예를 들어, 홈 오디오 컴포넌트들을 검출하는 경우, 그것은 이러한 디바이스들에 합류할 수 있다. 이러한 방식으로, 본 개시내용의 원리들은, 운영자가 그의/그녀의 일상 생활을 지냄에 따라 재생으로 하여금 그 사람을 "따르게" 하는 재생 경험을 생성할 수 있다.
도 13은 본 개시내용의 일 양태에 따른 세션(300)(도 3) 관리를 위한 방법(1300)을 도시한다. 방법(1300)은 "주방에서 재즈 틀어줘."와 같은, 타겟 디바이스 상에서 취해질 행동을 식별하는 커맨드에 응답하여 호출될 수 있다. 이와 같은 커맨드에 응답하여, 방법(1300)은 커맨드의 타겟인 디바이스(예컨대, 주방 미디어 플레이어)를 분류할 수 있다. 타겟 디바이스는 스마트 디바이스 또는 수동적 디바이스로 분류될 수 있다.
타겟 디바이스가 "스마트 디바이스"로 분류되면, 방법(1300)은 타겟 디바이스가 재생 그룹의 구성원인지 결정할 수 있다(박스(1315)). 그렇지 않다면, 타겟 디바이스는 선택된 콘텐츠를 꺼내, 렌더링을 시작할 수 있다(박스(1320)).
박스(1315)에서, 타겟 디바이스가 재생 그룹의 구성원으로 결정되는 경우, 방법(1300)은 타겟 디바이스의 역할을, 그룹의 일차, 그룹의 이차 또는 그룹의 "조용한 일차"로 결정할 수 있다(박스(1325)). 타겟 디바이스가 이차로 분류되면, 방법(1300)은 타겟 디바이스로 하여금 자신을 그룹에서 제거하고(박스(1330)) 새로운 그룹에서 단독으로 일차가 되게 할 수 있다. 그 후에, 방법(1300)은 박스(1320)로 진행할 수 있고, 타겟 디바이스는 식별된 콘텐츠를 렌더링할 수 있다.
박스(1325)에서, 타겟 디바이스가 일차로 분류되는 경우, 방법(1300)은 그룹으로 하여금 분할되게 할 수 있다(박스(1335)). 그룹을 분할하는 것은 이전에 정의된 그룹에서 타겟 디바이스를 제거하고 이전에 정의된 그룹이 계속해서 그것의 이전 행동을 하게 할 수 있다. 방법(1300)은 이전에 정의된 그룹 내의 일부 다른 디바이스가 일차의 역할을 맡는 큐 마이그레이션을 수행하고 그룹의 관리 및 그것의 렌더링 동작들을 계속할 수 있다. 타겟 디바이스는 새로운 그룹에서 단독으로 일차가 될 수 있다(초기에 유일하게 타겟 디바이스로 형성됨). 방법(1300)은 박스(1320)로 진행할 수 있고, 타겟 디바이스는 식별된 콘텐츠를 렌더링할 수 있다.
박스(1325)에서, 타겟 디바이스가 조용한 일차로 분류되는 경우, 방법(1300)은 조용한 일차로 하여금 그룹에 대한 재생을 중단하게 할 수 있다(박스(1345)). 방법(1300)은 박스(1320)로 진행할 수 있고, 타겟 디바이스는 식별된 콘텐츠를 렌더링할 수 있다.
박스(1310)에서, 타겟 디바이스가 수동적 디바이스로 분류되는 경우, 방법(1300)은 타겟 디바이스가 현재 콘텐츠를 재생중인지 결정할 수 있다(박스(1350)). 그렇다면, 방법(1300)은 타겟 디바이스로 하여금 재생을 중단하게 할 수 있다(박스(1355)). 그 후에, 또는 타겟 디바이스가 콘텐츠를 재생중이 아닌 경우, 방법(1300)은 타겟 디바이스의 통신 범위 내의 다른 디바이스가 타겟 디바이스를 대신하여 "조용한 일차"로서 동작하도록 정의할 수 있다(박스(1360)). 조용한 일차 디바이스는 커맨드 내에 식별된 콘텐츠를 인출하고, 렌더링을 위하여 인출된 콘텐츠를 타겟 디바이스에 스트리밍할 수 있다(박스(1365)). 조용한 일차 디바이스는 자신만의 출력을 통해 한정적으로 인출된 콘텐츠를 재생할 필요가 없는데; 실제로, 조용한 일차는 커맨드에 응답하여 타겟 디바이스에 의해 재생될 콘텐츠와는 상이한, 상이한 콘텐츠를 재생할 수 있다.
도 13의 방법(1300)의 동작 동안, "스마트" 또는 "수동적" 디바이스의 분류는 디바이스의 재생 역량들에 의한 타겟 디바이스의 역량들의 식별, 그것의 사용 권한 또는 이들의 조합에 기초할 수 있다. 타겟 디바이스가 스스로 식별된 콘텐츠를 인출하고 재생할 수 없으면 타겟 디바이스는 수동적인 것으로 분류될 수 있다. 예를 들어, 타겟 디바이스는 인터넷 가능 디바이스가 아닐 수 있고, 따라서, 인터넷 기반 미디어 서비스로부터 콘텐츠를 다운로드하지 못할 수도 있다. 대안적으로, 타겟 디바이스가 이러한 서비스로부터 콘텐츠를 다운로드할 수 있을지라도, 이러한 서비스에 액세스하는 데 필요한 계정 정보 또는 기타 인증 정보가 없을 수 있다. 이러한 시나리오에서, 타겟 디바이스는 수동적인 것으로 분류될 수 있다. 대안적으로, 타겟 디바이스가 식별된 콘텐츠를 다운로드하고 렌더링하는 역량을 가진 경우, 타겟 디바이스는 스마트한 것으로 분류될 수 있다.
큐 마이그레이션 동작들은 모든 디바이스들에서 이용가능하지 않을 수 있다. 이러한 용례들에서, 방법(1300)은 타겟 디바이스가 구성원(미도시)인 그룹에 대한 재생을 중단할 수 있다. 대안적으로, 방법(1300)은 또한 단독으로 일차가 될 수 있는 타겟 디바이스 상에서 식별된 스트리밍의 재생을 시작할 수 있고, 또한 타겟 디바이스로 하여금 그것의 이전 그룹에서 다른 디바이스들에 대하여 조용한 일차가 되게 할 수 있다(동작은 도시되지 않음).
방법(1300)(도 14)은 다양한 용례들에서의 다양한 디바이스들을 이용한 응용을 확인한다. 도 14 및 도 15는 2개의 이러한 용례들을 도시한다. 도 14는 운영자가 음성 커맨드를, 타겟 디바이스 자체이거나 또는 아닐 수 있는 재생 디바이스(1400)에 제시하는 용례를 도시한다. 도 15는 운영자가 터치 스크린 입력을 통해 커맨드를 제어 디바이스(1500)에 제시하는 다른 용례를 도시하며(이 예에서 스마트폰으로 도시됨); 도 15의 예에서, 제어 디바이스(1500)는 타겟 디바이스가 아니다.
일 양태에서, 타겟 디바이스를 식별하고, 타겟 디바이스를 제어할 수 있는 디바이스로 커맨드를 지향시키는 제어 방법들이 제공될 수 있다(예를 들어, 타겟 디바이스 자체 또는 타겟 디바이스의 일차). 하나의 그러한 제어 방법이 도 13에 도시되어 있다. 여기서, 방법(1300)은 커맨드가 타겟 디바이스에서 수신되는지 결정할 수 있다(박스(1365)). 그렇다면, 방법(1300)은 박스(1315)로 진행할 수 있고, 상기 동작들이 관여될 수 있다. 그렇지 않다면, 방법(1300)은 타겟 디바이스의 상태를(박스(1370)), 예를 들어, 그것이 일차를 갖는 그룹 내에 관여되는지 결정할 수 있다. 방법(1300)은 커맨드를 타겟 디바이스 또는 타겟 디바이스의 일차에 전달할 수 있다(박스(1375)). 예를 들어, 타겟 디바이스가 그룹에 관여된 경우, 방법(1300)은 커맨드를 타겟 디바이스의 일차에 전달할 수 있다. 타겟 디바이스가 단독의 일차로서 작동하는 경우, 방법(1300)은 커맨드를 타겟 디바이스 자체에 전달할 수 있다.
도 16은 본 개시내용의 다른 양태에 따른 세션(300)(도 3) 관리를 위한 방법(1600)을 도시한다. 방법(1600)은 소정 위치에 여러 타겟 디바이스들이 있을 수 있는 위치로 커맨드가 지향될 때(주방 안에 여러 디바이스들이 있을 때 "주방에서 재즈 틀어줘") 응용을 확인할 수 있다. 방법(1600)은 커맨드가 지향되는 타겟 디바이스를 식별하고, 이어서 타겟 디바이스가 스테레오 페어에 속하도록 구성되었는지 결정할 수 있다(박스(1610)). 그렇다면, 커맨드에 의해 지정되는 타겟 디바이스와 페어링되는 임의의 디바이스(들)는 방법(1600)으로 평가될 것이다.
방법(1600)은 타겟 디바이스가 임의의 현재-동작하는 렌더링 그룹들의 구성원인지 식별할 수 있다(박스(1620)). 그것은 임의의 타겟 디바이스가 이와 같은 그룹의 구성원인지 결정한다(박스(1625)). 그렇지 않다면, 방법(1600)은 타겟 디바이스가 단독으로 일차의 역할을 할 수 있는지 결정할 수 있다(박스(1630)). 타겟 디바이스가 일차의 역할을 할 수 있다면, 방법(1600)은 타겟 디바이스로 하여금 새로운 그룹의 일차가 되게 하고(박스(1635)), 타겟 디바이스는 커맨드에 의해 식별된 콘텐츠를 인출하고 콘텐츠의 렌더링을 시작한다(박스(1640)). 타겟 디바이스가 다른 것과 페어링되는 이벤트에서, 이어서 디바이스들은 함께 협상하여 그것들 중 하나를 일차 디바이스로, 그리고 다른 것을 이차로 지정할 수 있다.
박스(1630)에서, 타겟 디바이스가 일차의 역할을 할 수 없으면, 방법(1600)은 타겟 디바이스를 위한 조용한 일차로서 작동할 다른 디바이스를 찾을 수 있다(박스(1645)). 조용한 일차가 배정될 수 있으면, 방법(1600)은 조용한 일차로 하여금 식별된 콘텐츠를 인출하고 콘텐츠에 대한 렌더링 데이터를 타겟 디바이스(들)에 밀어내게 할 수 있다(박스(1650)). 도 16에 도시되지 않았지만, 식별된 타겟 디바이스(들)에 대하여 발견될 수 있는 조용한 일차 디바이스가 없을 수 있는데, 이러한 경우에, 방법(1600)은 커맨드에 응답하여 오류를 반환할 수 있다.
박스(1625)에서, 타겟 디바이스가 그룹의 구성원인 경우, 방법은 그룹이 타겟 디바이스(들)를 넘어서는 디바이스들을 포함하는지 결정할 수 있다(박스(1655)). 그렇지 않다면, 타겟 디바이스(들)의 그룹은 식별된 콘텐츠의 렌더링을 시작할 수 있다(박스(1640)).
타겟 디바이스들이 커맨드가 지향되지 않는 디바이스들을 포함하는 그룹의 구성원들인 경우(박스(1655)), 방법(1600)은 타겟 디바이스들을 오래된 그룹으로부터 분할할 수 있다(박스(1660)). 방법(1600)은 타겟 디바이스가 이전 그룹의 일차였는지 결정할 수 있다(박스(1665)). 타겟 디바이스가 이전 그룹의 일차였다면, 방법(1600)은 타겟 디바이스(들)이 분할된 이전 그룹의 구성원들인 디바이스들에 대한 큐 마이그레이션을 수행할 수 있다(박스(1670)). 성공한 경우, 이전 렌더링 이벤트는 이전 그룹의 구성원들이었던 다른 디바이스들을 이용하여 계속될 수 있다.
그룹을 분할하는 것(박스(1660))은 새로운 그룹으로 하여금 타겟 디바이스들로 형성되게 할 수 있다. 방법(1600)은 박스(1630)로 진행하여 박스들(1630 내지 1650)의 동작들을 수행하여 새로운 그룹에 대한 렌더링 동작들을 시작할 수 있다.
논의된 바와 같이, 디바이스는 식별된 콘텐츠를 렌더링하기 위한 적절한 계정 정보를 갖고, 유선 전력 공급으로 동작(배터리 전력 공급과 반대)하는 것과 같은 디바이스의 동작 파라미터들, 네트워크 접속의 품질, 및 디바이스 유형(예컨대, 오디오를 렌더링할 때 스피커 디바이스가 다른 유형들의 미디어 플레이어들보다 우선될 수 있음)에 기초하여 주어진 그룹에 대한 일차로서 동작할 수 있다. 타겟 디바이스가 일차의 역할을 할 수 있는지 타겟을 식별할 때(박스(1630)), 그룹 내의 각각의 타겟 디바이스는 콘텐츠를 렌더링하기 위한 요구조건들과 디바이스의 역량을 비교한 결과에 기초하여 평가될 수 있다. 그룹 내에 일차의 역할을 할 수 있는 타겟 디바이스가 없으면, 그룹의 구성원들이 아닌 다른 디바이스들이 또한 식별된 콘텐츠를 렌더링하기 위한 요구조건들과 그것들의 역량들을 비교한 결과, 및 또한 새로운 그룹 내의 타겟 디바이스들과 통신하는 후보자 일차의 능력에 기초하여 조용한 일차들의 역할을 하는지 평가될 수 있다. 일부 경우들에서, 일차로서 동작할 수 있는 타겟 디바이스가 없고, 조용한 일차로서 동작할 수 있는 다른 디바이스가 없으면, 방법(1600)은 오류 콘텐츠에서 종료할 수 있다(미도시).
일부 용례들에서, 큐 마이그레이션(박스(1670))은 성공적으로 수행되지 않을 수 있다. 이러한 경우들에서, 방법(1600)은 이전 그룹의 디바이스들 ― 타겟 디바이스들을 새로운 그룹에 합류시키지 않을 임의의 디바이스들 ―로 하여금 재생을 중단하게 할 수 있다(동작은 도시되지 않음). 또한 도시되지 않은 다른 대안예에서, 방법(1600)은 이전에 이전 그룹의 일부였던 디바이스들을 이용하여 박스들(1630 내지 1650)의 동작들을 병렬 처리로 수행할 수 있고, 타겟 디바이스를 새로운 그룹에 합류시키지 않을 것이다(동작들은 또한 도시되지 않음).
도 17은 본 개시내용의 일 양태에서 타겟 디바이스에서 재생을 중단하기 위한 커맨드(예컨대, "주방에 재생을 중단해줘.")에 응답하여 수행될 수 있는 세션(300)(도 3) 관리에 대한 방법(1700)을 도시한다. 이전 방법들과 같이, 커맨드는 디바이스의 타겟인 디바이스에 입력될 필요는 없다. 방법(1700)은 커맨드의 타겟인 디바이스를 식별하고, 이어서 타겟 디바이스가 다른 디바이스들과 페어링되는지 결정할 수 있다(박스(1710)). 그렇다면, 모든 페어링된 디바이스들은 방법(1700)의 목적을 위하여 타겟 디바이스들로 고려된다. 방법(1700)은 타겟 디바이스(들)이 속하는 그룹을 식별할 수 있고(박스(1730)), 그것은 타겟 디바이스(들)를 분류할 수 있다(박스(1740)).
타겟 디바이스가 이차들이 없는 일차라면, 방법(1700)은 타겟 디바이스 상의 재생을 중단할 수 있다(박스(1750)).
타겟 디바이스가 이차들을 갖는 일차라면, 방법(1700)은 재생 콘텐츠에 대한 큐 마이그레이션을 수행하여(박스(1760)) 다른 디바이스를 일차로 설정할 수 있다. 그 후에, 방법(1700)은 타겟 디바이스 상의 재생을 중단할 수 있고, 이는 박스(1750)에 도시된 바와 같다. 이전 실시예들에서와 같이, 큐 마이그레이션이 임의의 이유로 실패한다면, 옵션적으로 방법(1700)은 현재 그룹 내의 모든 디바이스들 상에서 재생을 중단시킬 수 있다(동작은 도시되지 않음).
타겟 디바이스가 이차라면, 방법(1700)은 타겟 디바이스를 그것의 현재 그룹에서 제거하고(박스(1770)) 타겟 디바이스 상에서 재생을 중단할 수 있으며, 이는 박스(1750)에 도시된 바와 같다.
타겟 디바이스가 조용한 일차라면, 방법(1700)은 타겟 디바이스로 하여금 조용히 남게 할 수 있다(박스(1780)).
도 18은 본 개시내용의 일 양태에 따른 세션(300)(도 3) 관리를 위한 다른 방법(1800)을 도시한다. 방법(1800)은 상대적인 측면에서 바람직한 콘텐츠를 식별하는 커맨드(예컨대, "이 음악을 주방에 추가해줘", 여기서 이 음악은 직접 식별되지 않음)가 입력될 때의 응용을 확인할 수 있다. 도 18의 방법(1800)은 커맨드에 의해 참조되는 콘텐츠를 식별하기 위한 동작들에 착수할 수 있다.
방법(1800)은 커맨드가 입력된 디바이스(편의상, "커맨드 디바이스"로 불림)가 콘텐츠를 재생중인지 결정함으로써 시작할 수 있다(박스(1810)). 그렇다면, 방법(1800)은 커맨드 디바이스를 방법의 목적들을 위한 마스터 그룹으로 지정할 수 있다. "마스터 그룹"은 타겟 디바이스가 궁극적으로 렌더링 목적으로 합류될 그룹이다.
박스(1810)에서, 방법(1800)이 커맨드 디바이스는 재생중이 아니라고 결정하는 경우, 방법(1800)은 대안적인 수단을 통해 마스터 그룹을 식별할 수 있다(박스(1830)). 일 양태에서, 방법(1800)은 얼마나 많은 그룹들이 재생 동작들에 현재 관여되는 범위 내에 있는지 결정할 수 있다(박스(1832)). 단지 하나의 그룹이 식별된다면, 그 그룹이 마스터 그룹에 지정될 수 있다(박스(1834)). 여러 그룹들이 식별된다면, 방법(1800)은, 랭킹 기준, 예컨대, 커맨드 디바이스(및, 그에 따라, 사용자)에 대한 오디오 근접도, 커맨드 디바이스에 대한 블루투스 근접도, 커맨드 디바이스에 대한 디바이스의 물리적 레이아웃을 나타내는 데이터, 및/또는 가장 최근에 재생을 시작했던 그룹 또는 가장 최근에 사용자 상호작용을 수신했던 그룹과 같은 휴리스틱에 기초하여, 그룹들 중 하나를 마스터 그룹으로 지정할 수 있다.
마스터 그룹이 지정되면, 방법(1800)은 마스터 그룹에 추가될 타겟 디바이스들을 식별할 수 있다(박스(1840)). 또한, 타겟 디바이스는 식별될 수 있다(이 예에서, 주방 디바이스). 방법(1800)은 타겟 디바이스가, 예컨대, 스테레오 페어링에 의해 임의의 다른 디바이스와 페어링되어 있음을 결정할 수 있다(박스(1842)). 그렇다면, 페어링된 디바이스는 또한 타겟 디바이스로 지정된다(박스(1844)). 그 후에, 방법(1800)은 타겟 디바이스(들)를 마스터 그룹에 추가할 수 있다(박스(1850)).
본 개시내용의 원리들은 다른 용례들에 확장된다. 예를 들어, "음악을 주방으로 옮겨줘"와 같은 커맨드가, 재생 그룹에서 타겟 디바이스를 제거하는 제거 동작 및 타겟 디바이스를 다른 재생 그룹에 추가하는 추가 동작으로서 수행될 수 있다. 따라서, 전술한 실시예들에 개시된 기술들은 복잡성이 증가하는 디바이스 관리 특징부들을 제공하기 위하여 단계적으로 수행될 수 있다.
본 개시내용의 양태들은 음성 커맨드 입력에 응답하는 컴퓨터 기반 가상 어시스턴트 서비스를 이용하는 사용을 확인한다. 일 양태에서, 가상 어시스턴트는 커맨드 컨텍스트를 개발하는 방식으로 사용자 커맨드들을 서로 연관시킬 수 있는데, 이를 통해 가상 어시스턴트는, 예를 들어, 디바이스 또는 미디어에 특정되지 않은 커맨드들을 타겟 디바이스들 또는 미디어 콘텐츠에 연관시키게 된다.
도 19는 가상 어시스턴트 서비스를 이용하여 세션들(300)(도 3)을 관리할 수 있는 예시적인 시스템(1900)의 네트워크 다이어그램이다. 여기에 시스템(1900)은 통신 네트워크(1930)를 통해 서버(1920)와의 통신에 제공되는 복수의 사용자 디바이스들(1910.1 내지 1910.3)을 포함한다. 이 예에서, 가상 어시스턴트 서비스(1940)는 서버(1920)에 의해 제공되는 것으로 도시된다. 대안적인 구현예들에서, 가상 어시스턴트 서비스(1940)는 사용자 디바이스들(1910.1 내지 1910.3) 중 하나에 의해 제공될 수 있거나 또는 그것은 여러 디바이스들(1910.1 내지 1910.3) 사이에 분배될 수 있다. 시스템(1900) 내의 가상 어시스턴트(1940)의 배치에 관한 구현 결정들은 개별적인 애플리케이션 요구에 적합하도록 맞춰질 것이라고 예상된다.
가상 어시스턴트(1940)는 스피치 처리(1942), 자연 언어 처리(1944) 및 흐름 제어 처리(1946)를 포함할 수 있다. 스피치 처리(1942)는 디바이스들(1910.1 내지 1910.3) 중 하나에 입력되는 음성 커맨드들을 나타내는 오디오 데이터를 수신할 수 있고, 그것은 스피치의 텍스트 표현들을 생성할 수 있다. 자연 언어 처리(1944)는 오디오의 텍스트 표현들로부터 의도를 결정할 수 있다. 흐름 제어 처리(1946)는 자연 언어 처리(1944)에 의해 생성된 의도 데이터로부터 세션 커맨드(들)를 생성할 수 있다. 이 커맨드들은 디바이스들(1910.1 내지 1910.3)에 출력되어 음성 커맨드들에 따라 세션 변경에 영향을 줄 수 있다.
동작 시, 사용자 커맨드들은 음성 입력을 수용하고 세션 제어를 위해 시스템에 통합된 임의의 디바이스에 입력될 수 있다. 따라서, 커맨드들은 스마트폰 디바이스들(1910.1), 스마트 스피커 디바이스들(1910.2), 미디어 플레이어들(1910.3) 등에 입력될 수 있다. 이 디바이스들은 음성 커맨드들을 나타내는 오디오를 캡처하고, 오디오를 가상 어시스턴트(1940)로서 동작하는 디바이스(1920)에 전달할 수 있다. 가상 어시스턴트는 오디오를 텍스트로, 그리고 추가적으로 세션 제어 커맨드들로 분해할 수 있는데, 이들은 재생 세션들을 관리하기 위하여 디바이스들(1910.1 내지 1910.3)에 출력될 수 있다.
사용자들은 사용자가 상호작용하는 디바이스들과는 상이한 디바이스들에 지향되는 음성 커맨드들을 입력할 것이라고 예상된다. 따라서, 사용자는 스마트폰(1910.1)에, 스피커(1910.2) 또는 디지털 미디어 플레이어(1910.3)에서의 재생의 변경에 영향을 주도록 의도된 커맨드를 입력할 수 있다. 다른 때에, 사용자는 한 방(미도시)에 있는 스피커(1910.2)에, 다른 방에 있는 다른 스피커(미도시)에서의 재생을 변경하도록 의도된 커맨드를 입력할 수 있다. 마지막으로, 사용자들이 재생의 변경에 영향을 주는 데 필요한 모든 정보를 명확히 제공하지 않는 커맨드들을 입력할 수 있다고 예상된다. 예를 들어, 사용자들은 렌더링될 미디어 또는 커맨드들의 타겟인 디바이스들에 대한 것으로서 특정되지 않은 커맨드들을 입력할 수 있다.
본 개시내용의 양태들은 "컨텍스트들", 즉, 디바이스(들)를 식별하는 데이터 및/또는 사용자 커맨드들의 주제인 미디어를 개발한다. 컨텍스트들은 운영자 커맨드들에 응답하여 시간이 지남에 따라 진화할 수 있다. 재생을 변경하는 새로운 커맨드들이 수신되면, 가상 어시스턴트(1940)는 커맨드들의 주제(들)가 무엇인지 결정하기 위하여 현재 개발된 컨텍스트를 참조할 수 있다.
다음의 예는 컨텍스트가 어떻게 개발되는지 도시한다. 이 예에서, 사용자는 다음의 커맨드들을 입력할 수 있다:
커맨드 1: "주방에서 재즈 틀어줘."
커맨드 2: "일시정지 해줘."
제1 커맨드는 재생될 미디어 아이템(재즈 재생목록) 및 타겟 디바이스(주방 스피커)를 식별한다. 따라서, 가상 어시스턴트(1940)는 주방 디바이스로 하여금 식별된 미디어 아이템을 렌더링하게 하는 세션 커맨드들을 생성할 수 있다. 가상 어시스턴트(1940)는 또한 주방 디바이스를 포함하는 것으로서 컨텍스트를 식별하는 데이터를 저장할 수 있다.
커맨드 2가 수신되면, 가상 어시스턴트(1940)는 커맨드가 미디어에 특정되지 않고 타겟 디바이스에 특정되지 않는다고 결정할 수 있다. 가상 어시스턴트(1940)는 사용자에 대하여 현재 개발된 컨텍스트를 참조할 수 있고, 그것은 그 컨텍스트로부터 타겟 디바이스를 식별할 수 있다. 이러한 방식으로, 가상 어시스턴트(1940)는 주방 디바이스로 하여금 재생을 일시정지하게 하는 세션 커맨드들을 생성할 수 있다.
사용자 커맨드들은 현재-개발된 그룹의 확장을 야기할 수 있다. 예를 들어, 다음과 같은 커맨드 시퀀스를 고려해 본다:
커맨드 1: "주방에서 재즈 틀어줘."
커맨드 2: "이거 거실에서 틀어줘."
논의된 바와 같이, 제1 커맨드는 주방 재생 디바이스(들)를 포함하는 컨텍스트 그룹을 개발할 수 있다. 제2 커맨드(특히 주방 디바이스에 입력된 경우)는 다른 위치의 타겟 디바이스(들)를 포함하도록 컨텍스트 그룹을 확장시킬 수 있다. 가상 어시스턴트(1940)는 현재 재생의 컨텍스트 ― "이거"는 주방에서 렌더링중인 재즈 재생목록을 나타냄 ― 를 식별할 수 있고, 거실 디바이스(들)를 재즈 재생목록을 재생중인 그룹에 추가할 수 있다.
추가로, 사용자 커맨드들은 컨텍스트 그룹의 축소를 야기할 수 있다. 다음과 같은 커맨드 시퀀스를 고려해 본다:
커맨드 1: "클래식 음악을 모두 다 틀어줘."
커맨드 2: "주방에서 재생을 멈춰줘."
제1 커맨드는 커맨드가 입력된 디바이스에 근접한 모든 디바이스들을 포함하는 컨텍스트 그룹을 개발할 수 있다(예를 들어, 집 안의 모든 디바이스들). 제2 커맨드는 타겟 디바이스로 하여금 그룹에서 제거되게 할 수 있다. 이 예에서, 가상 어시스턴트(1940)는 세션에서 주방 디바이스(들)를 제거하지만, 그룹 내의 다른 디바이스들은 계속해서 재생하게 할 수 있다. 가상 어시스턴트(1940)는 또한 주방 디바이스(들)로 하여금 컨텍스트에서 제거되게 할 수 있다. 이 양태에서, 다른 커맨드들이 수신되는 경우(말하자면, "재즈 틀어줘"), 가상 어시스턴트(1940)는 그 때 컨텍스트 내의 디바이스들(주방 디바이스(들)를 제외한 모든 디바이스들)을 최근에 수신된 커맨드의 타겟들로서 참조할 수 있다.
다른 양태에서, 세션 그룹의 축소를 야기하는 커맨드는 컨텍스트 그룹이 소거되게 할 수 있다. 따라서, 전술한 예에서, 커맨드 2가 수신되면, 가상 어시스턴트는 주방 디바이스(들)가 세션에서 제거되고 컨텍스트가 소거되게 할 수 있다. 이 양태에서, 최근에 수신된 커맨드들(말하자면, "재즈 틀어줘")은 가상 어시스턴트에 이용가능한 활성화된 컨텍스트 없이 처리될 수 있다. 예를 들어, 커맨드는 커맨드가 입력된 로컬 디바이스로 지향되는 것으로 해석될 수 있다. 따라서, 가상 어시스턴트(1940)는 재즈 재생목록이 로컬 디바이스에서 렌더링되게 할 수 있다.
이 예에 이어서, 가상 어시스턴트는 또한 재즈의 재생을 시작할 그 로컬 디바이스의 재생 상태를 체크할 수 있다. 로컬 디바이스가 세션 그룹의 일부(예컨대, 클래식 음악을 재생중인 남아있는 디바이스들의 세트)인 경우, 가상 어시스턴트는 세션 그룹 내의 모든 디바이스들이 새로운 미디어 아이템으로 전환되게 할 수 있다. 로컬 디바이스가 세션 그룹의 일부가 아닌 경우(예를 들어, 그것은 커맨드 2에서 세션 그룹에서 제거된 주방 디바이스), 가상 어시스턴트는 주방 디바이스를 이용하여 새로운 세션 그룹을 생성할 수 있다. 두 결과에서, 가상 어시스턴트에 의해 타겟 디바이스(들)로 식별되는 디바이스들의 세트는 새로운 사용자 커맨드들의 처리에 사용할 새로운 컨텍스트가 될 수 있다.
유사한 방식으로, 넓은 지역들에서 재생이 중단되게 하는 커맨드들(예컨대, "모두 다 멈춰줘")은 컨텍스트가 소거되게 할 수 있다. 이와 같은 경우에, 최근에 수신된 커맨드 "재즈 틀어줘"는 컨텍스트 "모두 다"를 참조할 수 없지만, 대신 상이한 방법으로, 예를 들어, 커맨드가 입력되었던 로컬 디바이스에서 재즈를 재생함으로써 분해될 수 있다.
일 양태에서, 스테레오 페어의 구성원들로 식별된 디바이스들(예컨대, 좌측 및 우측 스피커)은 개별적인 디바이스들보다는 유닛으로서 컨텍스트들에 추가 및 제거될 수 있다.
전술한 논의는 컨텍스트들을 커맨드들의 타겟 디바이스들을 명백히 식별하지 않는 커맨드들에 대한 타겟 디바이스들로서 식별되는 디바이스들을 포함하는 것으로서 논의하였다. 다른 양태에서, 컨텍스트들은 미디어 아이템에 대하여도 개발될 수 있다.
다음의 예를 고려해 본다:
커맨드 1: "주방에서 재즈 틀어줘."
커맨드 2: "그거 여기에서 틀어줘."
커맨드 2의 경우, 타겟 디바이스는 사용자에 대한 그것의 상대적인 위치에 의해 식별된다 ― 그것은 사용자가 음성 커맨드를 입력한 디바이스이다. 그러나, 미디어 아이템은 식별되지 않는다.
일 양태에서, 가상 어시스턴트들은 또한 이전 사용자 커맨드들에 기초하여 미디어(예컨대, 미디어 아이템들, 미디어 재생목록들)를 식별하는 컨텍스트들을 개발할 수 있다. 전술한 예에서, 커맨드 1은 재즈 재생목록을 주방 디바이스 상에서 렌더링될 미디어로서 식별한다. 커맨드 2를 처리할 때, 컨텍스트(재즈)는 사용자가 새로운 디바이스 상에서 재생하기를 바라는 미디어의 식별을 제공할 수 있다.
다음의 예를 고려해 본다:
커맨드 1: "재즈 틀어줘."
커맨드 2: "이거 주방에서 틀어줘."
여기서, 다시, 커맨드 1은 로컬 디바이스 상에서 재생될 미디어 재생목록을 식별한다. 커맨드 1은 또한 최근에 수신된 커맨드들에 대한 컨텍스트를 제공할 수 있다. 커맨드 2가 수신되면, 가상 어시스턴트(1940)는 컨텍스트(재즈)로부터 커맨드에 대한 미디어 재생목록을 식별할 수 있다. 이 예에서, 가상 어시스턴트(1940)는 재즈 재생목록을 재생하는 그룹에 주방 디바이스들을 추가하기 위한 세션 커맨드들을 발행할 수 있다.
컨텍스트들은 가상 어시스턴트와 상호작용하는 상이한 사용자들에 대하여 개발될 수 있다. 따라서, 거주 애플리케이션에서, 가상 어시스턴트는 가정의 개별적인 구성원들에 대한 컨텍스트를 개발할 수 있다. 주어진 사용자로부터 새로운 커맨드들이 입력되면, 가상 어시스턴트는 그 사용자에 대하여 개발된 컨텍스트를 참조하여 커맨드에 적용될 타겟 디바이스(들) 및/또는 미디어 아이템들을 식별할 수 있다.
도 20a는 다양한 예들에 따른 가상 어시스턴트 시스템(2000)의 블록도를 도시한다. 일부 예들에서, 가상 어시스턴트 시스템(2000)은 독립형 컴퓨터 시스템 상에서 구현될 수 있다. 일부 예들에서, 가상 어시스턴트 시스템(2000)은 다수의 컴퓨터에 걸쳐 분산될 수 있다. 일부 예들에서, 가상 어시스턴트의 모듈들 및 기능들 중 일부는 서버 부분과 클라이언트 부분으로 나뉠 수 있는데, 여기서 클라이언트 부분은 하나 이상의 사용자 디바이스들(1910.1 내지 1910.3) 상에 존재하고, 예컨대 도 19에 도시된 바와 같은 하나 이상의 네트워크를 통해 서버 부분(예컨대, 서버(1920))과 통신할 수 있다. 일부 예들에서, 가상 어시스턴트 시스템(2000)은 도 19에 도시된 서버 시스템(1920)의 일 구현예일 수 있다. 가상 어시스턴트 시스템(2000)은 단지 가상 어시스턴트 시스템의 일례일 뿐이라는 것, 및 가상 어시스턴트 시스템(2000)이 도시된 것보다 더 많거나 더 적은 컴포넌트들을 가질 수 있거나, 둘 이상의 컴포넌트를 조합할 수 있거나, 또는 상이한 구성 또는 배열의 컴포넌트들을 가질 수 있다는 것에 유의해야 한다. 도 20a에 도시된 다양한 컴포넌트들은 하나 이상의 신호 처리 및/또는 주문형 집적 회로를 비롯한, 하드웨어, 하나 이상의 프로세서에 의한 실행을 위한 소프트웨어 명령어들, 펌웨어, 또는 이들의 조합으로 구현될 수 있다.
가상 어시스턴트 시스템(2000)은 메모리(2002), 하나 이상의 프로세서(2004), 입/출력(I/O) 인터페이스(2006), 및 네트워크 통신 인터페이스(2008)를 포함할 수 있다. 이들 컴포넌트들은 하나 이상의 통신 버스들 또는 신호 라인들(2010)을 통해 서로 통신할 수 있다.
일부 예들에서, 메모리(2002)는 비일시적 컴퓨터 판독가능 매체, 예컨대 고속 랜덤 액세스 메모리 및/또는 비휘발성 컴퓨터 판독가능 저장 매체(예컨대, 하나 이상의 자기 디스크 저장 디바이스, 플래시 메모리 디바이스, 또는 기타 비휘발성 솔리드 스테이트 메모리 디바이스)를 포함할 수 있다.
일부 예들에서, I/O 인터페이스(2006)는 디스플레이들, 키보드들, 터치 스크린들, 및 마이크로폰들과 같은 가상 어시스턴트 시스템(2000)의 입/출력 디바이스들(2016)을 사용자 인터페이스 모듈(2022)에 결합할 수 있다. I/O 인터페이스(2006)는, 사용자 인터페이스 모듈(2022)과 함께, 사용자 입력들(예컨대, 음성 입력, 키보드 입력들, 터치 입력들 등)을 수신하고 그에 따라 이들을 처리할 수 있다. 일부 예들에서, 예컨대, 가상 어시스턴트가 독립형 사용자 디바이스 상에서 구현되는 경우, 가상 어시스턴트 시스템(2000)은 디바이스들(1910.1 내지 1910.3)(도 19)과 각각 통신하기에 편리한 임의의 컴포넌트들 및 I/O 통신 인터페이스들을 포함할 수 있다. 일부 예들에서, 가상 어시스턴트 시스템(2000)은 가상 어시스턴트 구현예의 서버 부분(1920)(도 19)을 표현할 수 있고, 사용자 디바이스(예컨대, 디바이스들(1910.1 내지 1910.3(도 19))) 상에 상주하는 클라이언트 측 부분을 통해 사용자와 상호작용할 수 있다.
일부 예들에서, 네트워크 통신 인터페이스(2008)는 유선 통신 포트(들)(2012) 및/또는 무선 송신 및 수신 회로부(2014)를 포함할 수 있다. 유선 통신 포트(들)는 하나 이상의 유선 인터페이스, 예컨대 이더넷, 범용 직렬 버스(USB), 파이어와이어 등을 통해 통신 신호들을 수신하고 전송할 수 있다. 무선 회로부(2014)는 통신 네트워크들 및 기타 통신 디바이스들로부터/로 RF 신호들 및/또는 광학 신호들을 수신하고 전송할 수 있다. 무선 통신은 GSM, EDGE, CDMA, TDMA, 블루투스, Wi-Fi, VoIP, Wi-MAX, 또는 임의의 기타 적합한 통신 프로토콜과 같은 복수의 통신 표준들, 프로토콜들, 및 기술들 중 임의의 것을 이용할 수 있다. 네트워크 통신 인터페이스(2008)는 인터넷, 인트라넷, 및/또는 무선 네트워크, 예컨대 셀룰러 전화 네트워크, 무선 근거리 통신망(LAN), 및/또는 도시권 통신망(MAN)과 같은 네트워크들을 이용하는 가상 어시스턴트 시스템(2000)과 기타 디바이스들 간의 통신을 가능하게 할 수 있다.
일부 예들에서, 메모리(2002) 또는 메모리(2002)의 컴퓨터 판독가능 저장 매체들은, 운영 체제(2018), 통신 모듈(2020), 사용자 인터페이스 모듈(2022), 하나 이상의 애플리케이션(2024), 및 가상 어시스턴트 모듈(2026)의 전체 또는 그들의 서브세트를 포함한, 프로그램들, 모듈들, 명령어들, 및 데이터 구조들을 저장할 수 있다. 특히, 메모리(2002) 또는 메모리(2002)의 컴퓨터 판독가능 저장 매체는 프로세스를 수행하기 위한 명령어들을 저장할 수 있다. 하나 이상의 프로세서(2004)는 이러한 프로그램들, 모듈들, 및 명령어들을 실행할 수 있고, 데이터 구조들로부터/로 판독/기록할 수 있다.
운영 체제(2018)(예를 들어, 다윈(Darwin), RTXC, LINUX, UNIX, iOS, OS X, WINDOWS, 또는 VxWorks와 같은 임베디드 운영 체제)는 일반적인 시스템 태스크들(예를 들어, 메모리 관리, 저장 디바이스 제어, 전력 관리 등)을 제어하고 관리하기 위한 다양한 소프트웨어 컴포넌트들 및/또는 드라이버들을 포함하고, 다양한 하드웨어, 펌웨어, 및 소프트웨어 컴포넌트들 간의 통신들을 용이하게 할 수 있다.
통신 모듈(2020)은 네트워크 통신 인터페이스(2008)를 통해 가상 어시스턴트 시스템(2000)과 기타 디바이스들 간의 통신을 용이하게 할 수 있다. 예를 들어, 통신 모듈(2020)은 각각 디바이스들(1910.1 내지 1910.3(도 19))과 같은 전자 디바이스들의 RF 회로부(208)와 통신할 수 있다. 통신 모듈(2020)은 또한 무선 회로부(2014) 및/또는 유선 통신 포트(2012)에 의해 수신된 데이터를 처리하기 위한 다양한 컴포넌트들을 포함할 수 있다.
사용자 인터페이스 모듈(2022)은 I/O 인터페이스(2006)를 통해 사용자로부터(예컨대, 키보드, 터치 스크린, 포인팅 디바이스, 제어기, 및/또는 마이크로폰으로부터) 커맨드들 및/또는 입력들을 수신하고, 디스플레이 상에 사용자 인터페이스 객체들을 생성할 수 있다. 사용자 인터페이스 모듈(2022)은 또한 출력들(예컨대, 스피치, 사운드, 애니메이션, 텍스트, 아이콘들, 진동들, 햅틱 피드백, 조명 등)을 준비하고, I/O 인터페이스(2006)를 통해(예컨대, 디스플레이들, 오디오 채널들, 스피커들, 및 터치 패드들 등을 통해) 사용자에게 그들을 전달할 수 있다.
애플리케이션들(2024)은 하나 이상의 프로세서(2004)에 의해 실행되도록 구성된 프로그램들 및/또는 모듈들을 포함할 수 있다. 예를 들어, 가상 어시스턴트 시스템이 독립형 사용자 디바이스 상에 구현되는 경우, 애플리케이션들(2024)은 게임들, 캘린더 애플리케이션, 내비게이션 애플리케이션, 또는 이메일 애플리케이션과 같은 사용자 애플리케이션들을 포함할 수 있다. 가상 어시스턴트 시스템(2000)이 서버(1920 (도 19)) 상에서 구현되는 경우, 애플리케이션들(2024)은, 예를 들어 리소스 관리 애플리케이션들, 진단 애플리케이션들, 또는 스케줄링 애플리케이션들을 포함할 수 있다.
메모리(2002)는 또한 가상 어시스턴트 모듈(2026)(또는 가상 어시스턴트의 서버 부분)을 저장할 수 있다. 일부 예들에서, 가상 어시스턴트 모듈(2026)은 하기의 하위모듈들, 또는 그들의 서브세트 또는 수퍼세트를 포함할 수 있다: 입/출력 처리 모듈(2028), 스피치-텍스트(speech-to-text: STT) 처리 모듈(2030), 자연 언어 처리 모듈(2032), 대화 흐름 처리 모듈(2034), 태스크 흐름 처리 모듈(2036), 서비스 처리 모듈(2038), 및 스피치 합성 모듈(2040). 이러한 모듈들 각각은 가상 어시스턴트 모듈(2026)의 하기의 시스템 또는 데이터 및 모델들, 또는 그들의 서브세트 또는 수퍼세트 중 하나 이상에 대해 액세스할 수 있다: 온톨로지(2060), 어휘 인덱스(2044), 사용자 데이터(2048), 태스크 흐름 모델들(2054), 서비스 모델들(2056), 및 ASR 시스템.
일부 예들에서, 가상 어시스턴트 모듈(2026)에서 구현되는 모델들, 데이터, 및 처리 모듈들을 사용하여, 가상 어시스턴트는 다음 중 적어도 일부를 수행할 수 있다; 스피치 입력을 텍스트로 변환하는 것; 사용자로부터 수신된 자연 언어 입력에 표현된 사용자의 의도를 식별하는 것; 사용자의 의도를 완전히 추론하는 데 필요한 정보를(예컨대, 단어들, 게임들, 의도들 등의 중의성을 해소함(disambiguating)으로써) 능동적으로 이끌어내고 획득하는 것; 추론된 의도를 이행하기 위한 태스크 흐름을 결정하는 것; 및 태스크 흐름을 실행하여 추론된 의도를 이행하는 것.
일부 예들에서, 도 20b에 도시된 바와 같이, I/O 처리 모듈(2028)은 도 20a의 I/O 디바이스들(2016)을 통해 사용자와 상호작용하거나 또는 도 20a의 네트워크 통신 인터페이스(2008)를 통해 사용자 디바이스(예컨대, 디바이스들(1910.1, 내지 1910.3 (도 19))와 상호작용하여, 사용자 입력(예컨대, 스피치 입력)을 획득하고 사용자 입력에 대한 응답들(예컨대, 스피치 출력들로서)을 제공할 수 있다. I/O 처리 모듈(2028)은 사용자 입력의 수신과 함께 또는 사용자 입력의 수신 직후에, 사용자 디바이스로부터 사용자 입력과 연관된 컨텍스트 정보를 옵션적으로 획득할 수 있다. 컨텍스트 정보는 사용자-특정 데이터, 어휘, 및/또는 사용자 입력과 관련된 선호도들을 포함할 수 있다. 일부 예들에서, 컨텍스트 정보는 또한 사용자 요청이 수신된 시간에서의 사용자 디바이스의 소프트웨어 및 하드웨어 상태 및/또는 사용자 요청이 수신되는 시간에서의 사용자의 주위 환경에 관련된 정보를 포함한다. 일부 예들에서, I/O 처리 모듈(2028)은 또한 사용자 요청에 관하여 사용자에게 후속 질문들을 전송하고, 그로부터 답변들을 수신할 수 있다. 사용자 요청이 I/O 처리 모듈(2028)에 의해 수신되고 사용자 요청이 스피치 입력을 포함할 수 있는 경우, I/O 처리 모듈(2028)은 스피치-텍스트 변환을 위해 스피치 입력을 STT 처리 모듈(2030)(또는 스피치 인식기)로 전달할 수 있다.
STT 처리 모듈(2030)은 하나 이상의 ASR 시스템을 포함할 수 있다. 하나 이상의 ASR 시스템들은 I/O 처리 모듈(2028)을 통해 수신되는 스피치 입력을 처리하여 인식 결과를 생성할 수 있다. 각각의 ASR 시스템은 프론트-엔드 스피치 프리프로세서(front-end speech pre-processor)를 포함할 수 있다. 프론트-엔드 스피치 프리프로세서는 스피치 입력으로부터 대표적인 특징을 추출할 수 있다. 예를 들어, 프론트-엔드 스피치 프리프로세서는 스피치 입력을 푸리에 변환을 수행하여 대표적인 다차원 벡터의 시퀀스로서 스피치 입력을 특징짓는 스펙트럼 특징을 추출할 수 있다. 또한, 각각의 ASR 시스템은 하나 이상의 스피치 인식 모델(예컨대, 음향 모델 및/또는 언어 모델)을 포함할 수 있고, 하나 이상의 스피치 인식 엔진을 구현할 수 있다. 스피치 인식 모델의 예는 은닉 마르코프 모델(hidden Markov models), 가우시안 혼합 모델(Gaussian-Mixture Models), 딥 신경망 모델(Deep Neural Network Models), n-gram 언어 모델, 및 기타 통계 모델을 포함할 수 있다. 스피치 인식 엔진의 예는 동적 시간 왜곡 기반 엔진 및 가중치 유한 상태 변환기(WFST) 기반 엔진을 포함할 수 있다. 하나 이상의 스피치 인식 모델 및 하나 이상의 스피치 인식 엔진은 중간 인식 결과들(예를 들어, 음소, 음소 문자열, 및 하위 단어들), 및 궁극적으로 텍스트 인식 결과들(예컨대, 단어, 단어 문자열, 또는 토큰들의 시퀀스)을 생성하기 위해 프론트-엔드 스피치 프리프로세서의 추출된 대표 특징들을 처리하는 데 사용될 수 있다. 일부 예들에서, 스피치 입력은 제3자 서비스에 의해 또는 사용자의 디바이스(예컨대, 디바이스(1910.1 내지 1910.3 (도 19))) 상에서 적어도 부분적으로 처리되어 인식 결과를 생성할 수 있다. STT 처리 모듈(2030)이 텍스트 문자열(예를 들어, 단어들, 또는 단어들의 시퀀스, 또는 토큰들의 시퀀스)을 포함하는 인식 결과를 생성하면, 인식 결과는 의도 추론을 위해 자연 언어 처리 모듈(2032)로 전달될 수 있다.
일부 예들에서, STT 처리 모듈(2030)은 음성 기호 변환 모듈(2031)을 통해 인식가능한 단어들의 어휘를 포함하고/하거나 이에 액세스할 수 있다. 각각의 어휘 단어는 스피치 인식 음성 기호로 표현된 단어의 하나 이상의 후보 발음과 연관될 수 있다. 특히, 인식가능한 단어의 어휘는 복수의 후보 발음과 연관된 단어를 포함할 수 있다. 예를 들어, 어휘는
Figure 112018102848130-pat00003
Figure 112018102848130-pat00004
의 후보 발음과 연관된 "tomato"라는 단어를 포함할 수 있다. 또한, 어휘 단어는 사용자로부터의 이전 스피치 입력에 기초한 맞춤형 후보 발음과 연관될 수 있다. 이러한 맞춤형 후보 발음은 STT 처리 모듈(2030)에 저장될 수 있고, 디바이스 상의 사용자의 프로필을 통해 특정 사용자와 연관될 수 있다. 일부 예들에서, 단어에 대한 후보 발음은 단어의 철자 및 하나 이상의 언어 및/또는 음성 규칙에 기초하여 결정될 수 있다. 일부 예들에서, 후보 발음은 예를 들어, 알려진 정준 발음(canonical pronunciations)에 기초하여 수동으로 생성될 수 있다.
일부 예들에서, 후보 발음은 후보 발음의 공통성에 기초하여 순위를 매길 수 있다. 예를 들어, 후보 발음
Figure 112018102848130-pat00005
Figure 112018102848130-pat00006
보다 높은 순위가 될 수 있는데, 그 이유는 이전 발음이 더 일반적으로 사용되는 발음이기 때문이다(예를 들어, 모든 사용자 중에서, 특정 지리적 지역에 있는 사용자의 경우, 또는 임의의 다른 적절한 사용자들의 서브셋의 경우). 일부 예들에서, 후보 발음은 후보 발음이 사용자와 연관된 맞춤형 후보 발음인지 여부에 기초하여 순위가 매겨질 수 있다. 예를 들어, 맞춤형 후보 발음은 정준 후보 발음보다 높은 순위가 매겨질 수 있다. 이는 정준 발음에서 벗어나는 고유한 발음을 가진 고유 명사를 인식하는 데 유용할 수 있다. 일부 예들에서, 후보 발음은 지리적인 기원, 국적, 또는 민족성과 같은 하나 이상의 스피치 특성과 연관될 수 있다. 예를 들어, 후보 발음
Figure 112018102848130-pat00007
는 미국과 연관될 수 있는 반면, 후보 발음
Figure 112018102848130-pat00008
는 영국과 연관될 수 있다. 또한, 후보 발음의 순위는 디바이스 상의 사용자 프로필에 저장된 사용자의 하나 이상의 특성(예를 들어, 지리적 기원, 국적, 민족성 등)에 기초할 수 있다. 예를 들어, 사용자가 미국과 연관되어 있다는 사용자의 프로파일로부터 결정될 수 있다. 미국과 연관되어 있는 사용자에 기초하여, 후보 발음
Figure 112018102848130-pat00009
(미국과 연관됨)는 후보 발음
Figure 112018102848130-pat00010
(영국과 연관됨)보다 높은 순위가 매겨질 수 있다. 일부 예들에서, 순위가 매겨진 후보 발음들 중 하나는 예측된 발음(예를 들어, 가장 가능성이 있는 발음)으로서 선택될 수 있다.
스피치 입력이 수신될 때, STT 처리 모듈(2030)은(예를 들어, 음향 모델을 사용하여) 스피치 입력에 대응하는 음소를 결정하는 데 사용될 수 있고, 이어서(예를 들어, 언어 모델을 사용하여) 음소에 매칭되는 단어를 결정하고자 시도할 수 있다. 예를 들어, STT 처리 모듈(2030)이 스피치 입력의 일부에 대응하는 음소들의 시퀀스
Figure 112018102848130-pat00011
를 먼저 식별할 수 있는 경우, 그것은 이어서 어휘 인덱스(2044)에 기초하여 이 시퀀스가 단어 "tomato"에 대응한다고 결정할 수 있다.
일부 예들에서, STT 처리 모듈(2030)은 근사 매칭 기술을 사용하여 발화 중인 단어를 결정할 수 있다. 따라서, 예를 들어, STT 처리 모듈(2030)은 음소들의 특정 시퀀스가 그 단어에 대한 음소들의 후보 시퀀스 중 하나가 아니더라도 음소들의 시퀀스
Figure 112018102848130-pat00012
가 단어 "tomato"에 대응한다고 결정할 수 있다.
일부 예에서, 자연 언어 처리 모듈(2032)은 스피치 입력과 관련된 메타데이터를 수신하도록 구성될 수 있다. 메타데이터는 스피치 입력(또는 스피치 입력에 대응하는 단어 또는 토큰의 시퀀스)에 대해 자연 언어 처리를 수행할지 여부를 나타낼 수 있다. 메타데이터가 자연 언어 처리가 수행될 것을 나타내면, 자연 언어 처리 모듈은 자연 언어 처리를 수행하기 위해 STT 처리 모듈로부터 단어들 또는 토큰들의 시퀀스를 수신할 수 있다. 그러나, 메타데이터가 자연 언어 처리가 수행되지 않아야 한다고 나타내면, 자연 언어 처리 모듈은 디스에이블될 수 있고, STT 처리 모듈로부터의 단어들 또는 토큰들(예를 들어, 텍스트 문자열)의 시퀀스가 가상 어시스턴트로부터 출력될 수 있다. 일부 예에서, 메타데이터는 사용자 요청에 대응하는 하나 이상의 도메인을 추가로 식별할 수 있다. 하나 이상의 도메인에 기초하여, 자연 언어 프로세서는 하나 이상의 도메인 이외의 온톨로지(2060)에서 도메인을 디스에이블할 수 있다. 이러한 방식으로, 자연 언어 처리는 온톨로지(2060)에서 하나 이상의 도메인으로 제한된다. 특히, 구조 질의(아래에서 설명함)는 온톨로지에서 다른 도메인이 아닌 하나 이상의 도메인을 사용하여 생성될 수 있다.
가상 어시스턴트의 자연 언어 처리 모듈(2032)("자연 언어 프로세서")은 STT 처리 모듈(2030)에 의해 생성된 단어들 또는 토큰들의 시퀀스("토큰 시퀀스")를 취하고, 토큰 시퀀스를 가상 어시스턴트에 의해 인식되는 하나 이상의 "행동가능한 의도들"과 연관시키고자 시도할 수 있다. "행동가능한 의도"는 가상 어시스턴트에 의해 수행될 수 있는 태스크를 표현할 수 있고, 태스크 흐름 모델들(2054)에서 구현되는 관련 태스크 흐름을 가질 수 있다. 연관 태스크 흐름은 가상 어시스턴트가 태스크를 수행하기 위해 취하는 일련의 프로그래밍된 동작들 및 단계들일 수 있다. 가상 어시스턴트의 능력들의 범주는 태스크 흐름 모델들(2054)에서 구현되고 저장된 태스크 흐름들의 수 및 종류, 또는 다시 말해, 가상 어시스턴트가 인식하는 "행동가능한 의도들"의 수 및 종류에 의존할 수 있다. 그러나, 가상 어시스턴트의 효율성은 또한 자연 언어로 표현된 사용자 요청으로부터 정확한 "행동가능한 의도(들)"를 추론하는 어시스턴트의 능력에 의존할 수 있다.
일부 예들에서, STT 처리 모듈(2030)로부터 획득된 단어들 또는 토큰 시퀀스에 부가하여, 자연 언어 처리 모듈(2032)은 또한 예를 들어, I/O 처리 모듈(2028)로부터 사용자 요청과 연관된 컨텍스트 정보를 수신할 수 있다. 자연 언어 처리 모듈(2032)은 옵션적으로 컨텍스트 정보를 이용하여, STT 처리 모듈(2030)로부터 수신된 토큰 시퀀스에 포함된 정보를 명확하게 하고, 보완하고/하거나 추가로 정의할 수 있다. 컨텍스트 정보는, 예를 들어 사용자 선호도들, 사용자 디바이스의 하드웨어 및/또는 소프트웨어 상태들, 사용자 요청 전, 요청 중, 또는 요청 직후에 수집되는 센서 정보, 가상 어시스턴트와 사용자 사이의 이전 상호작용들(예컨대, 대화) 등을 포함할 수 있다. 본 명세서에 기술하는 바와 같이, 컨텍스트 정보는 동적일 수 있고, 시간, 위치, 대화의 내용, 및 기타 인자들에 따라 변화할 수 있다.
일부 예들에서, 자연 언어 처리는, 예컨대 온톨로지(2060)에 기초할 수 있다. 온톨로지(2060)는 많은 노드들을 포함하는 계층 구조(hierarchical structure)일 수 있는데, 각각의 노드는 "행동가능한 의도"또는 "행동가능한 의도들" 중 하나 이상에 관련된 "속성(property)", 또는 기타 "속성들" 중 어느 하나를 표현한다. 전술한 바와 같이, "행동가능한 의도"는 가상 어시스턴트가 수행할 수 있는 태스크, 즉 그것이 "행동가능"하거나 또는 영향을 미칠 수 있는 태스크를 표현할 수 있다. "속성"은 행동가능한 의도 또는 다른 속성의 하위 양태와 연관되는 파라미터를 표현할 수 있다. 온톨로지(2060) 내의 행동가능한 의도 노드와 속성 노드 간의 연결성(linkage)은 속성 노드에 의해 표현되는 파라미터가 행동가능한 의도 노드에 의해 표현되는 태스크에 어떻게 관련되는지 여부를 정의할 수 있다.
일부 예들에서, 온톨로지(2060)는 행동가능한 의도 노드들 및 속성 노드들로 구성될 수 있다. 온톨로지(2060) 내에서, 각각의 행동가능한 의도 노드는 직접적으로 또는 하나 이상의 중간 속성 노드를 통해 하나 이상의 속성 노드에 연결될 수 있다. 유사하게, 각각의 속성 노드는 직접적으로 또는 간접적으로 하나 이상의 중간 속성 노드를 통해 하나 이상의 행동가능한 의도 노드에 연결될 수 있다.
행동가능한 의도 노드는, 그것의 연결된 개념 노드들과 함께, "도메인"으로 기술될 수 있다. 본 논의에서, 각각의 도메인은 개개의 행동가능한 의도와 연관될 수 있고, 특정한 행동가능한 의도와 연관된 노드들(및 이들 사이의 관계들)의 그룹을 지칭한다. 각각의 도메인은 하나 이상의 속성 노드를 하나 이상의 다른 도메인과 공유할 수 있다.
일부 예들에서, 온톨로지(2060)는 가상 어시스턴트가 이해할 수 있고 그에 의거하여 동작할 수 있는 모든 도메인들(및 그에 따른 행동가능한 의도들)을 포함할 수 있다. 일부 예들에서, 온톨로지(2060)는, 예컨대 전체 도메인들 또는 노드들을 추가하거나 제거함으로써 또는 온톨로지(2060) 내에서 노드들 사이의 관계를 수정함으로써 수정될 수 있다.
또한, 일부 예들에서, 다수의 관련 행동가능한 의도들과 연관된 노드들은 온톨로지(2060) 내에서 "상위 도메인" 아래에 군집될 수 있다.
일부 예들에서, 온톨로지(2060) 내의 각각의 노드는, 노드에 의해 표현되는 속성 또는 행동가능한 의도와 관련된 단어들 및/또는 구절(phrase)들의 세트와 연관될 수 있다. 각각의 노드와 연관된 단어들 및/또는 구절들의 개개의 세트는 노드와 연관된 소위 "어휘"일 수 있다. 각각의 노드와 연관된 단어들 및/또는 구절들의 개개의 세트는 노드에 의해 표현되는 속성 또는 행동가능한 의도와 관련하여 어휘 인덱스(2044)에 저장될 수 있다. 어휘 인덱스(2044)는 상이한 언어들의 단어들 및 구절들을 옵션적으로 포함할 수 있다.
자연 언어 처리 모듈(2032)은 STT 처리 모듈(2030)로부터 토큰 시퀀스(예컨대, 텍스트 문자열)를 수신하고, 토큰 시퀀스 내의 단어들에 의해 어떤 노드들이 연루되는지 여부를 결정할 수 있다. 일부 예들에서, 토큰 시퀀스 내의 단어 또는 구절이(어휘 인덱스(2044)를 통해) 온톨로지(2060) 내의 하나 이상의 노드와 연관되는 것으로 밝혀지는 경우, 단어 또는 구절은 이들 노드들을 "트리거" 또는 "활성화"시킬 수 있다. 활성화된 노드들의 양 및/또는 상대적 중요도에 기초하여, 자연 언어 처리 모듈(2032)은 사용자가 가상 어시스턴트로 하여금 수행하도록 의도했던 태스크로서 행동가능한 의도들 중 하나를 선택할 수 있다. 일부 예들에서, 가장 많이 "트리거된" 노드들을 갖는 도메인이 선택될 수 있다. 일부 예들에서, 가장 높은 신뢰도 값(예컨대, 그것의 다양한 트리거된 노드들의 상대적 중요도에 기초함)을 갖는 도메인이 선택될 수 있다. 일부 예들에서, 도메인은 트리거된 노드들의 수 및 중요도의 조합에 기초하여 선택될 수 있다. 일부 예들에서, 가상 어시스턴트가 사용자로부터의 유사한 요청을 이전에 정확하게 해석했는지 여부와 같은 추가 인자들도 노드를 선택하는 데 있어 마찬가지로 고려된다.
사용자 데이터(2048)는 사용자-특정 정보, 예컨대 사용자-특정 어휘, 사용자 선호도, 사용자 주소, 사용자의 초기설정 언어 및 제2 언어, 사용자의 연락처 목록, 및 각각의 사용자에 대한 기타 단기 또는 장기 정보를 포함할 수 있다. 일부 예들에서, 자연 언어 처리 모듈(2032)은 사용자-특정 정보를 이용하여 사용자 입력에 포함된 정보를 보완하여 사용자 의도를 추가로 정의할 수 있다.
일부 예들에서, 일단 자연 언어 처리 모듈(2032)이 사용자 요청에 기초하여 행동가능한 의도(또는 도메인)를 식별하면, 자연 언어 처리 모듈(2032)은 식별된 행동가능한 의도를 표현하기 위해 구조화된 질의(structured query)를 생성할 수 있다. 일부 예들에서, 구조화된 질의는, 행동가능한 의도를 위한 도메인 내의 하나 이상의 노드에 대한 파라미터들을 포함할 수 있고, 파라미터들 중 적어도 일부에는 사용자 요청 내에 지정되는 특정 정보 및 요건들이 덧붙여져 있다. 온톨로지에 따르면, 도메인에 대한 구조화된 질의는 사전결정된 파라미터들을 포함할 수 있다. 일부 예들에서, 스피치 입력, 및 STT 처리 모듈(2030)을 사용하여 스피치 입력으로부터 도출된 텍스트에 기초하여, 자연 언어 처리 모듈(2032)은 도메인에 대한 부분 구조화된 질의를 생성할 수 있으며, 여기서 부분 구조화된 질의는 도메인과 연관된 파라미터들을 포함한다. 일부 예들에서, 자연 언어 처리 모듈(2032)은 구조화된 질의의 일부 파라미터들에 수신된 컨텍스트 정보를 덧붙일 수 있으며, 이는 논의된 바와 같다.
일부 예들에서, 자연 언어 처리 모듈(2032)은 생성된 구조화된 질의(임의의 완성된 파라미터들을 포함함)를 태스크 흐름 처리 모듈(2036)("태스크 흐름 프로세서")로 전달할 수 있다. 태스크 흐름 처리 모듈(2036)은 자연 언어 처리 모듈(2032)로부터 구조화된 질의를 수신하도록, 필요하다면, 구조화된 질의를 완성하도록, 그리고 사용자의 궁극적인 요청을 "완성"하는 데 필요한 동작들을 수행하도록 구성될 수 있다. 일부 예들에서, 이들 태스크들을 완수하는 데 필요한 다양한 절차들이 태스크 흐름 모델들(2054)에서 제공될 수 있다. 일부 예들에서, 태스크 흐름 모델들(2054)은 사용자로부터 추가 정보를 획득하기 위한 절차들, 및 행동가능한 의도와 연관된 동작들을 수행하기 위한 태스크 흐름들을 포함할 수 있다.
일부 용례들에서, 구조화된 질의를 완성하기 위해, 태스크 흐름 처리 모듈(2036)은 추가 정보를 획득하고/하거나 잠재적으로 모호한 발화들을 명확히 구분하기 위해 사용자와의 추가 대화를 개시할 필요가 있을 수 있다. 그와 같은 상호작용이 필요한 경우, 태스크 흐름 처리 모듈(2036)은 대화 흐름 처리 모듈(2034)을 호출하여 사용자와의 대화에 참여할 수 있다. 일부 예들에서, 대화 흐름 처리 모듈(2034)은 어떻게(및/또는 언제) 사용자에게 추가 정보를 물을지를 결정할 수 있고, 사용자 응답을 수신하고 프로세싱할 수 있다. 질문들은 I/O 처리 모듈(2028)을 통해 사용자들에게 제공될 수 있고 그들로부터 답변들이 수신될 수 있다. 일부 예들에서, 대화 흐름 처리 모듈(2034)은 오디오 및/또는 시각적 출력을 통해 사용자에게 대화 출력을 제시할 수 있고, 음성 또는 물리적(예컨대, 클릭킹) 응답들을 통해 사용자로부터 입력을 수신한다. 위 예에 이어서, 태스크 흐름 처리 모듈(2036)이 대화 흐름 처리 모듈(2034)을 호출하여 선택된 도메인과 연관된 구조화된 질의에 대한 파라미터 정보를 결정할 때, 대화 흐름 처리 모듈(2034)은 사용자에게 전달될 질문들을 생성할 수 있다. 사용자로부터 답변들이 수신되면, 대화 흐름 처리 모듈(2034)은 이어서 구조화된 질의에 누락 정보를 덧붙이거나, 또는 태스크 흐름 처리 모듈(2036)에 정보를 전달하여 구조화된 질의로부터 누락 정보를 완성할 수 있다.
일단 태스크 흐름 처리 모듈(2036)이 행동가능한 의도에 대한 구조화된 질의를 완성했다면, 태스크 흐름 처리 모듈(2036)은 행동가능한 의도와 연관된 궁극적인 태스크를 수행하도록 진행할 수 있다. 따라서, 태스크 흐름 처리 모듈(2036)은 구조화된 질의에 포함된 특정 파라미터들에 따라 태스크 흐름 모델에서 단계들 및 명령어들을 실행할 수 있다.
일부 예들에서, 태스크 흐름 처리 모듈(2036)은 사용자 입력에서 요청된 태스크를 완성하거나 또는 사용자 입력에서 요청된 정보제공형 답변을 제공하기 위해 서비스 처리 모듈(2038)("서비스 처리 모듈")의 어시스턴트를 채용할 수 있다. 일부 예들에서, 각각의 서비스에 의해 요구되는 프로토콜들 및 애플리케이션 프로그래밍 인터페이스(API)들은 서비스 모델들(2056) 중 개개의 서비스 모델에 의해 특정될 수 있다. 서비스 처리 모듈(2038)은 서비스를 위한 적절한 서비스 모델에 액세스하고, 서비스 모델에 따른 서비스에 의해 요구되는 프로토콜들 및 API들에 따라 서비스에 대한 요청들을 생성할 수 있다.
일부 예들에서, 자연 언어 처리 모듈(2032), 대화 흐름 처리 모듈(2034), 및 태스크 흐름 처리 모듈(2036)은 사용자의 의도를 추론 및 정의하도록, 사용자 의도를 더 명확히 하고 정제하게 하기 위해 정보를 획득하도록, 그리고 최종적으로 사용자의 의도를 이행하기 위해 응답(즉, 사용자에게로의 출력, 또는 태스크의 완수)을 생성하도록 총체적이고 반복적으로 사용될 수 있다. 생성된 응답은 사용자의 의도를 적어도 부분적으로 이행하는 스피치 입력에 대한 대화 응답일 수 있다. 또한, 일부 예들에서, 생성된 응답은 스피치 출력으로서 출력될 수 있다. 이들 예에서, 생성된 응답은 스피치 합성 모듈(2040)(예컨대, 스피치 합성기)로 전송될 수 있으며, 여기서 스피치 합성 모듈(2040)은 스피치 형태로 대화 응답을 합성하도록 처리될 수 있다. 또 다른 예들에서, 생성된 응답은 스피치 입력에서 사용자 요청을 만족시키는 것과 관련된 데이터 콘텐츠일 수 있다.
스피치 합성 모듈(2040)은 사용자에게의 제시를 위한 스피치 출력을 합성하도록 구성될 수 있다. 스피치 합성 모듈(2040)은 가상 어시스턴트에 의해 제공된 텍스트에 기초하여 스피치 출력을 합성한다. 예를 들어, 생성된 대화 응답은 텍스트 문자열의 형태일 수 있다. 스피치 합성 모듈(2040)은 텍스트 문자열을 가청 스피치 출력으로 변환할 수 있다. 스피치 합성 모듈(2040)은, 텍스트로부터의 스피치 출력을 생성하기 위하여 임의의 적절한 스피치 합성 기법을 사용할 수 있는데, 이는 연결 합성(concatenative synthesis), 단위 선택 합성, 다이폰 합성, 도메인-특정 합성, 포먼트 합성(Formant synthesis), 조음 합성(Articulatory synthesis), HMM(hidden Markov model) 기반 합성, 및 정현파 합성(sinewave synthesis)을 포함하지만 이로 한정되지 않는다. 일부 예들에서, 스피치 합성 모듈(2040)은 단어들에 대응하는 음소 문자열에 기초하여 개별 단어들을 합성하도록 구성될 수 있다. 예를 들어, 음소 문자열은 생성된 대화 응답의 단어와 연관될 수 있다. 음소 문자열은 단어와 연관된 메타데이터에 저장될 수 있다. 스피치 합성 모듈(2040)은 스피치 형태의 단어를 합성하기 위해 메타데이터 내의 음소 문자열을 직접 프로세싱하도록 구성될 수 있다.
일부 예들에서, 스피치 합성 모듈(2040)을 사용하는 대신에(또는 그에 부가하여), 스피치 합성은 원격 디바이스(예컨대, 서버 시스템(1920 (도 19))) 상에서 수행될 수 있고, 합성된 스피치는 사용자에게의 출력을 위해 사용자 디바이스로 전송될 수 있다. 예를 들어, 이는 가상 어시스턴트에 대한 출력이 서버 시스템에서 생성되는 일부 구현예들에서 발생할 수 있다. 그리고 서버 시스템은 일반적으로 사용자 디바이스보다 많은 처리 능력 또는 리소스를 갖기 때문에, 클라이언트 측 합성에서 실제보다 높은 품질의 스피치 출력을 획득하는 것이 가능할 수 있다.
본 발명은 일부 실시예들을 참조하여 위에서 상세히 설명되었지만, 본 발명의 범위 및 사상 내의 변형들은 본 기술 분야에 숙련자들에게는 명확할 것이다. 따라서, 본 발명은 첨부된 청구범위들의 범위에 의해서만 제한되는 것으로 한다.
도 21은 본 개시내용의 다른 양태에 따른 시스템(2100)을 도시한다. 이 실시예에서, 렌더링 디바이스들(2110.1 내지 2110.n)은 통신 네트워크(2130)를 통해 서버(2120)와 통신하도록 제공된다. 일 구현예에서, 서버(2120)는 렌더링 디바이스들(2110.1 내지 2110.n)이 위치하는 로컬 영역 네트워크에 제공될 수 있는데, 이는 서버(2120)가 주거 네트워크에 대한 프록시 디바이스로서 작동할 때 일어날 수 있다. 다른 구현예에서, 서버(2120)는 인터넷 위치에 제공될 수 있는데, 이는 서버(2120)가 온라인 서비스에 통합되면 일어날 수 있다.
도 21에 도시된 양태에서, 서버(2120)는 본 명세서에 기재된 세션 관리 동작들을 수행할 수 있다. 따라서, 서버(2120)는 재생 큐 데이터를 저장하고, 렌더링 디바이스들(2110.1 내지 2110.n)의 세션 데이터를 관리할 수 있다. 서버(2120)가 미디어 데이터를 재생의 일부로서 렌더링하지 않을 수 있지만, 서버(2120)는 재생에 관여되는 렌더링 디바이스들(2110.1 내지 2110.n) 대신에 마스터로서 동작할 수 있다. 이 양태에서, 서버(2120)는 많은 동시에 활성화된 그룹들 대신에 마스터 디바이스로서 작동할 수 있다. 서버(2120)는 그것을 이용하여 등록된 렌더링 디바이스들(2110.1 내지 2110.n)의 데이터를 레지스트리(2125) 내에 저장할 수 있다.
도 22는 서버(2200)를 이용하여 렌더링 디바이스(2210)를 등록하기 위한 본 개시내용의 일 양태에 따른 렌더링 디바이스(2210)와 서버(2220) 사이에 일어날 수 있는 세션(300)(도 3) 관리를 위한 통신 흐름(2200)을 도시한다. 렌더링 디바이스(2210)는 디바이스를 식별하는 서버(2200)에 등록 메시지(메시지(2230))를 송신할 수 있다. 서버(2220)는 디바이스가 새로운 디바이스, 즉, 서버(2220)가 아직 정보를 저장하지 않은 것인지 결정할 수 있다(박스(2232)). 그렇다면, 서버(2220)는 그것의 역량들, 위치, 및 계정 정보와 같은 정보를 요청하는 요청 메시지(메시지(2234))를 렌더링 디바이스(2210)에 송신할 수 있다. 렌더링 디바이스(2210)는 요청된 정보를 응답 메시지(메시지(2236))에 담아 제공할 수 있고, 서버(2220)는 렌더링 디바이스를 그것의 레지스트리에 저장할 수 있다(박스(2238)). 박스(2232)에서, 서버(2220)가 렌더링 디바이스(2210)는 새로운 디바이스가 아니라고 결정한다면, 서버(2220)는 렌더링 디바이스(2210)를 그것의 레지스트리에서 활성화된 것으로 표시할 수 있다(또한 박스(2238)).
본 개시내용의 원리들은 개별적인 렌더링 디바이스들이 불확정적인 시간에 전원이 온오프될 수 있고, 네트워크 접속이 또한 불확정적인 시간에 가능 및 불가능할 수 있는 애드 호크 네트워킹 환경에서의 응용을 확인한다. 그에 따라, 도 22의 방법(2200)은 렌더링 디바이스들에 의해 표준 전력 공급 절차의 일부로서 또는 그것들의 네트워크 접속이 가능할 때 개시될 수 있다.
도 23은 본 개시내용들의 일 양태에 따른 세션(300) 관리 방법(2300)을 도시한다. 방법(2300)은 입력 디바이스에서 사용자 커맨드가 수신되면 개시할 수 있다(박스(2310)) (예: "주방에서 재즈 틀어줘"). 커맨드를 수신하면, 입력 디바이스는 커맨드를 서버(2120)(도 21)에 보고할 수 있다(박스(2315)). 서버에서, 방법(2300)은 그것의 레지스트리 데이터로부터 커맨드의 타겟 디바이스(들)를 식별할 수 있다(박스(2320)). 그렇게 식별된 각각의 타겟 디바이스에 대하여, 방법(2300)은 박스들(2325 내지 2385)에 도시된 동작들로부터 적절한 단계들을 관여시킬 수 있다.
방법은 타겟 디바이스의 유형을 결정할 수 있다(박스(2325)). 방법(2300)이 타겟 디바이스를 스마트 디바이스로 분류하면, 방법(2300)은 타겟 디바이스가 이미 활성화된 그룹의 구성원인지 결정할 수 있다(박스(2330)). 그렇지 않다면, 방법(2300)은 서버로 하여금 타겟 디바이스에 대한 재생목록 및 그룹 내의 그것의 역할을 식별하는 커맨드를 타겟 디바이스에 발행하여 재생을 시작하게 할 수 있다(박스(2335)).
박스(2330)에서, 방법(2300)이 타겟 디바이스는 이미 그룹의 구성원이라고 결정하는 경우, 방법(2300)은 타겟 디바이스의 그룹 내의 그것의 역할을 결정할 수 있다(박스(2340)). 타겟 디바이스가 일차인 경우, 방법(2300)은 그룹을 분할하기로 결정할 수 있다(박스(2345)). 방법(2300)은 이미-활성화된 그룹의 재생 콘텐츠에 대하여 큐 마이그레이션 프로세스를 개시할 수 있고(박스(2350)), 이는 서버로 하여금 커맨드(들)(미도시)를 이미-활성화된 그룹의 다른 구성원들에 발행하게 할 수 있는데, 커맨드는 그 구성원들 중 하나를 새로운 일차 디바이스로 지정한다. 방법(2300)은 서버로 하여금 타겟 디바이스에 대한 재생목록 및 그룹 내의 그것의 역할을 식별하는 커맨드를 타겟 디바이스에 발행하여 재생을 시작하게 할 수 있다(박스(2335)).
박스(2340)에서, 방법이 타겟 디바이스는 조용한 일차로서 작동한다고 결정하는 경우, 방법(2300)은 타겟 디바이스에 커맨드를 발행하여 그것의 이미-활성화된 그룹을 대신하여 재생을 중단할 수 있다(박스(2355)). 방법(2300)은 이미-활성화된 그룹의 다른 타겟 디바이스에 커맨드를 발행하여, 그것을 새로운 조용한 일차로 지정할 수 있다(박스(2360)). 방법(2300)은 또한 서버로 하여금 타겟 디바이스에 대한 재생목록 및 그룹 내의 그것의 역할을 식별하는 커맨드를 타겟 디바이스에 발행하여 재생을 시작하게 할 수 있다(박스(2335)). 일 양태에서, 박스들(2355, 2335)에서 타겟 디바이스에 발행된 커맨드들은 공동 메시지 또는 메시지들의 세트로 병합될 수 있다.
박스(2340)에서, 방법이 타겟 디바이스는 이차로서 작동한다고 결정하는 경우, 방법(2300)은 타겟 디바이스를 새로운 그룹에 배정하는 커맨드를 타겟 디바이스에 발행할 수 있다(박스(2365)). 방법(2300)은 또한 서버로 하여금 타겟 디바이스에 대한 재생목록 및 그룹 내의 그것의 역할을 식별하는 커맨드를 타겟 디바이스에 발행하여 재생을 시작하게 할 수 있다(박스(2335)). 또한, 박스들(2365, 2335)에서 타겟 디바이스에 발행된 커맨드들은 공동 메시지 또는 메시지들의 세트로 병합될 수 있다.
박스(2325)에서, 방법이 타겟 디바이스는 수동적 디바이스라고 결정하는 경우, 방법(2300)은 타겟 디바이스가 현재 재생에 관여되는지 결정할 수 있다(박스(2370)). 그렇다면, 방법(2300)은 타겟 디바이스에 커맨드를 발행하여 재생을 중단할 수 있다(박스(2375)). 방법(2300)은 타겟 디바이스(2380)에 대하여 조용한 일차를 정의하고(박스(2380)) 타겟 디바이스에 커맨드를 발행하여 그것의 새로운 일차를 식별할 수 있다(박스(2385)). 박스들(2375, 2385)에서 타겟 디바이스에 발행된 커맨드들은 공동 메시지 또는 메시지들의 세트로 병합될 수 있다. 방법(2300)은 지정된 일차 디바이스(2385)에 커맨드를 발행하여 미디어를 타겟 디바이스에 스트리밍할 수 있다(박스(2385)).
위에 설명된 바와 같이, 본 개시내용은 다양한 설계들 및 역량들의 복수의 느슨하게 연결된 렌더링 디바이스들 간의 네트워크들을 렌더링하는 애드 호크를 개발하기 위한 기술들을 나타낸다. 디바이스들은 서로 자체적으로 발견할 수 있고, 그것들은 그것들의 렌더링 동작들을 동기화하는 통신을 교환할 수 있다. 디바이스들은 광범위한 다양한 역량들을 가질 수 있다. 일부 매우 능력있는 디바이스들은 미디어 소스들과 통신하는 역량들을 소유하고, 재생 세션의 일부로서 렌더링되는 미디어 아이템들에 대한 액세스 권한을 갖는 것으로 스스로 인증하고, 재생을 위하여 자체적으로 미디어 아이템들을 다운로드할 수 있다. 다른 최소 능력의 디바이스는 이러한 기능을 소유할 수 없는데; 그것들은 일차-이차 관계에서 "이차" 모드로 동작할 수 있으며, 여기서 그것들은, 예를 들어, 스스로를 미디어 소스들에 대하여 인증하거나 또는 미디어 아이템들을 자체적으로 다운로드하는 역량을 갖지 않는 다른 "일차" 디바이스로부터 그것에 전송되는 미디어 콘텐츠를 수신한다. 또한, 렌더링 디바이스들은 다수의 상이한 디바이스들의 임의의 것을 통한 사용자 입력 ― 스마트폰 또는 컴퓨터를 통한 터치 스크린 입력, 마이크로폰에 의해 스마트폰, 컴퓨터 또는 스마트 스피커 등에 의해 캡처된 오디오 입력 ―을 수용하여 렌더링 네트워크에 의해 수행되는 렌더링 동작들을 제어할 수 있다. 본 명세서에 개시된 다양한 세션 관리 기술들이 렌더링 세션 사이에서 정당화되는 환경을 변경하는 것에 응답하여 적응적으로 적용될 수 있음이 예상된다. 예를 들어, 주어진 세션(300)은, 개시되면, 일차로서 동작하는 제1 렌더링 디바이스(도 1)에 의해 관리될 일이 일어날 수 있지만, 시간이 지남에 따라 아마도 세션에서 제1 렌더링 디바이스를 제거하기 때문에, 세션은 그 후에 인터넷에 있는 서버에 의해 관리될 수 있다(도 21). 세션은 동작 시 한 시점에 통신 흐름(400)(도 4)에 의해 관리될 것이고, 그것은 그것의 라이프 사이클 동안 다른 시점에 방법(1300)(도 13)에 의해 관리될 일이 일어날 수 있고, 그것은 그것의 라이프 사이클 동안 또 다른시점에 방법(2300)(도 23)에 의해 관리될 수 있다. 본 개시내용의 원리들은 이러한 변형들을 수용한다.
전술한 논의는 본 발명의 다양한 실시예들에 따라 구성된 재생 디바이스(들) 및 서버들에 사용될 수 있는 기능 블록들을 식별한다. 일부 응용예들에서, 전술한 기능 블록들은 통합된 소프트웨어 시스템의 구성요소들로서 제공될 수 있는데, 여기서 블록들은 메모리에 저장되고 프로세싱 디바이스에 의해 실행되는 컴퓨터 프로그램의 별개의 구성요소들로서 제공될 수 있다. 비일시적 컴퓨터 판독가능 매체는 컴퓨터로 하여금 기능 블록들을 수행하게 하기 위한 프로그램 명령어들을 가질 수 있다. 다른 응용예들에서, 기능 블록들은 프로세싱 시스템의 개별 회로 컴포넌트들, 예컨대, 디지털 신호 프로세서 또는 주문형 집적 회로 내의 기능 유닛들로서 제공될 수 있다. 본 발명의 또 다른 애플리케이션들은 전용 하드웨어 및 소프트웨어 컴포넌트들의 하이브리드 시스템으로서 구현될 수 있다. 더욱이, 본 명세서에 기재된 기능 블록들은 개별 유닛들로서 제공될 필요는 없다. 그러한 구현의 상세한 것은 달리 위에서 언급하지 않는 한 본 발명의 동작에 중요하지 않다.
전술된 바와 같이, 본 기술의 일 양태는, 초청 콘텐츠 또는 사용자가 관심을 가질 만한 임의의 다른 콘텐츠의 사용자에게로의 전달을 향상시키기 위한, 다양한 소스들로부터 입수가능한 데이터의 수집 및 사용이다. 본 개시내용은, 일부 경우들에 있어서, 이러한 수집된 데이터가 특정 개인을 고유하게 식별하거나 또는 그와 연락하거나 그의 위치를 확인하는 데 이용될 수 있는 개인 정보 데이터를 포함할 수 있음을 고려한다. 그러한 개인 정보 데이터는 인구통계 데이터, 위치 기반 데이터, 전화 번호들, 이메일 주소들, 트위터 ID들, 집 주소들, 사용자의 건강 또는 피트니스 레벨에 관한 데이터 또는 기록들(예컨대, 바이탈 사인(vital sign) 측정치들, 약물 정보, 운동 정보), 생년월일, 또는 임의의 다른 식별 또는 개인 정보를 포함할 수 있다.
본 개시내용은 본 기술에서의 그러한 개인 정보 데이터의 이용이 사용자들에게 이득을 주기 위해 사용될 수 있음을 인식한다. 예를 들어, 개인 정보 데이터는 더 큰 관심이 있는 타깃 콘텐츠를 사용자에게 전달하는 데 이용될 수 있다. 따라서, 그러한 개인 정보 데이터의 이용은 사용자가 전달된 콘텐츠의 계산된 제어를 가능하게 한다.
본 발명은 그러한 개인 정보 데이터의 수집, 분석, 공개, 전달, 저장, 또는 다른 이용을 책임지고 있는 엔티티들이 잘 확립된 프라이버시 정책들 및/또는 프라이버시 관례들을 준수할 것이라는 것을 고려한다. 특히, 그러한 엔티티들은, 대체로 개인 정보 데이터를 사적이고 안전하게 유지시키기 위한 산업적 또는 행정적 요건들을 충족시키거나 넘어서는 것으로 인식되는 프라이버시 정책들 및 관례들을 구현하고 지속적으로 이용해야 한다. 그러한 정책들은 사용자들에 의해 쉽게 액세스가능해야 하고, 데이터의 수집 및/또는 이용이 변화함에 따라 업데이트되어야 한다. 사용자들로부터의 개인 정보는 엔티티의 적법하며 적정한 사용들을 위해 수집되어야 하고, 이들 적법한 사용들을 벗어나서 공유되거나 판매되지 않아야 한다. 또한, 그러한 수집/공유는 사용자들의 통지된 동의를 수신한 후에 발생해야 한다. 부가적으로, 그러한 엔티티들은 그러한 개인 정보 데이터에 대한 액세스를 보호하고 안전하게 하며 개인 정보 데이터에 대한 액세스를 갖는 다른 사람들이 그들의 프라이버시 정책들 및 절차들을 고수한다는 것을 보장하기 위한 임의의 필요한 단계들을 취하는 것을 고려해야 한다. 게다가, 그러한 엔티티들은 널리 인정된 프라이버시 정책들 및 관례들에 대한 그들의 고수를 증명하기 위해 제3자들에 의해 그들 자신들이 평가를 받을 수 있다. 추가로, 정책들 및 관례들은 수집되고/되거나 액세스되는 특정 유형의 개인 정보 데이터에 대해 적응되고, 관할구역 특정 고려사항들을 비롯한 적용가능한 법률들 및 표준들에 적응되어야 한다. 따라서, 상이한 프라이버시 관례들은 각각의 국가의 상이한 개인 데이터 유형들에 대해 유지되어야 한다.
전술한 것에도 불구하고, 본 개시내용은 또한 사용자가 개인 정보 데이터의 사용, 또는 그에 대한 액세스를 선택적으로 차단하는 실시예들을 고려한다. 즉, 본 개시내용은 그러한 개인 정보 데이터에 대한 액세스를 방지하거나 차단하기 위해 하드웨어 및/또는 소프트웨어 요소들이 제공될 수 있다는 것을 고려한다. 예를 들어, 광고 전달 서비스들의 경우에, 본 기술은 사용자들이 서비스를 위한 등록 중 또는 이후 임의의 시간에 개인 정보 데이터의 수집 시의 참여의 "동의함" 또는 "동의하지 않음"을 선택하는 것을 허용하도록 구성될 수 있다. 다른 예에서, 사용자들은 타깃 콘텐츠 전달 서비스들을 위한 분위기-연관된 데이터를 제공하지 않도록 선택할 수 있다. 또 다른 예에서, 사용자들은 분위기 연관된 데이터가 유지되는 시간의 길이를 제한하거나 또는 베이스라인 분위기 프로파일의 개발을 전적으로 금지하도록 선택할 수 있다. "동의" 및 "동의하지 않음" 옵션들을 제공하는 것에 더하여, 본 발명은 개인 정보의 액세스 또는 이용에 관한 통지들을 제공하는 것을 고려한다. 예를 들어, 사용자는 그들의 개인 정보 데이터가 액세스될 앱을 다운로드할 시에 통지받고, 이어서 개인 정보 데이터가 앱에 의해 액세스되기 직전에 다시 상기하게 될 수 있다.
또한, 의도하지 않은 또는 인가되지 않은 액세스 또는 이용의 위험을 최소화하는 방식으로 개인 정보 데이터가 관리되고 처리되어야 한다는 것이 본 발명의 의도이다. 데이터의 수집을 제한하고 데이터가 더 이상 필요하지 않게 되면 데이터를 삭제함으로써 위험이 최소화될 수 있다. 추가로, 그리고 소정의 건강 관련 애플리케이션들을 비롯하여, 적용가능할 때, 사용자의 프라이버시를 보호하기 위해 데이터 식별해제가 사용될 수 있다. 적절한 경우, 특정 식별자들(예컨대, 생년월일 등)을 제거함으로써, 저장된 데이터의 양 또는 특이성을 제어함으로써(예컨대, 주소 수준이라기보다는 오히려 도시 수준에서 위치 데이터를 수집함으로써), 데이터가 저장되는 방식을 제어함으로써(예컨대, 사용자들에 걸쳐 데이터를 집계함으로써), 그리고/또는 다른 방법들에 의해, 식별해제가 용이하게 될 수 있다.
따라서, 본 개시내용이 하나 이상의 다양한 개시된 실시예들을 구현하기 위해 개인 정보 데이터의 사용을 광범위하게 커버하지만, 본 개시내용은 다양한 실시예들이 또한 그러한 개인 정보 데이터에 액세스할 필요 없이 구현될 수 있다는 것을 또한 고려한다. 즉, 본 기술의 다양한 실시예들은 그러한 개인 정보 데이터의 모두 또는 일부분의 결여로 인해 동작 불가능하게 되지 않는다. 예를 들어, 콘텐츠는, 사용자와 연관된 디바이스에 의해 요청되는 콘텐츠, 콘텐츠 전달 서비스들에 대해 이용가능한 다른 비-개인 정보, 또는 공개적으로 입수가능한 정보와 같은 비-개인 정보 데이터 또는 드러난 최소량의 개인 정보에 기초하여 선호도를 추론함으로써 선택되고 사용자들에게 전달될 수 있다.
특허청 및 본 출원에 발표된 임의의 특허의 임의의 독자들이 여기에 첨부된 청구범위를 해석하는 데 도움을 주기 위하여, 출원인들은 단어 "~하기 위한 수단" 또는 "하는 단계"가 명확하게 특정 청구항에 사용되지 않는 한, 첨부된 청구항들 또는 청구항 구성요소들 중 어떠한 것도 35 U.S.C. 112(f)를 적용하도록 의도하지 않음을 언급하기를 원한다.
본 발명의 여러 실시예가 본 명세서에 구체적으로 예시 및/또는 기술된다. 그러나, 본 발명의 수정 및 변형이 본 발명의 사상 및 의도된 범주로부터 벗어남이 없이 상기의 교시에 의해 그리고 첨부한 특허청구범위의 범위 내에 포함된다는 것이 인지될 것이다.

Claims (45)

  1. 방법으로서,
    네트워크 연결된 렌더링 디바이스들의 재생 세션을 변경하기 위한 커맨드에 응답하여, 상기 커맨드의 콘텐츠의 컨텍스트로부터, 타겟 디바이스를 식별하는 단계;
    상기 식별된 타겟 디바이스의 역량들로부터, 상기 타겟 디바이스에 대한 재생 모드를 결정하는 단계; 및
    상기 세션의 구성원들인 다른 디바이스(들)과 상기 타겟 디바이스의 재생을 동기화하는 단계 - 상기 동기화하는 단계는 상기 재생 세션에 의해 렌더링되는 적어도 하나의 자산 및 상기 자산의 재생의 타이밍을 식별하는 단계를 포함함 - 를 포함하는, 방법.
  2. 제1항에 있어서, 상기 커맨드는 상기 타겟 디바이스를 그것의 위치에 의해 식별하는, 방법.
  3. 제1항에 있어서, 상기 커맨드는 상기 타겟 디바이스와 상이한 입력 디바이스에 입력되는, 방법.
  4. 제1항에 있어서, 상기 커맨드는 마이크로폰에 입력되는 음성 입력인, 방법.
  5. 제1항에 있어서, 상기 커맨드는 터치 스크린 입력을 통해 입력되는, 방법.
  6. 제1항에 있어서, 상기 재생 모드에 따라, 상기 타겟 디바이스는 상기 자산을 온라인 소스로부터 다운로드하여 그것을 렌더링하는, 방법.
  7. 제1항에 있어서, 상기 재생 모드에 따라, 상기 타겟 디바이스는 상기 자산의 콘텐츠를 상기 세션의 구성원인 다른 디바이스로부터 수신하는, 방법.
  8. 제1항에 있어서, 상기 재생 모드에 따라, 상기 타겟 디바이스는 상기 재생 세션에 의해 렌더링되는 자산(들)의 재생 큐를 관리하는, 방법.
  9. 제1항에 있어서, 서버가 상기 재생 세션에 의해 렌더링되는 자산(들)의 재생 큐를 관리하는, 방법.
  10. 제1항에 있어서, 상기 식별하는 단계는 상기 세션의 구성원인 다른 디바이스에 의해 수행되는, 방법.
  11. 제1항에 있어서, 상기 식별하는 단계는 상기 재생 세션에 의한 자산(들)의 렌더링을 수행하지 않는 서버에 의해 수행되는, 방법.
  12. 프로그램 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서, 상기 프로그램 명령어들은 프로세싱 디바이스에 의해 실행될 때, 상기 디바이스로 하여금:
    네트워크 연결된 렌더링 디바이스들의 재생 세션을 변경하기 위한 커맨드에 응답하여, 상기 커맨드의 콘텐츠의 컨텍스트로부터, 타겟 디바이스를 식별하고;
    상기 식별된 타겟 디바이스의 역량들로부터, 상기 타겟 디바이스에 대한 재생 모드를 결정하고;
    상기 세션의 구성원들인 다른 디바이스(들)과 상기 타겟 디바이스의 재생을 동기화하게 하는 - 상기 동기화하는 것은 상기 재생 세션에 의해 렌더링되는 적어도 하나의 자산 및 상기 자산의 재생의 타이밍을 식별하는 것을 포함함 -, 비일시적 컴퓨터 판독가능 매체.
  13. 제12항에 있어서, 상기 커맨드는 상기 타겟 디바이스를 그것의 위치에 의해 식별하는, 비일시적 컴퓨터 판독가능 매체.
  14. 제12항에 있어서, 상기 커맨드는 상기 타겟 디바이스와 상이한 입력 디바이스에 입력되는, 비일시적 컴퓨터 판독가능 매체.
  15. 제12항에 있어서, 상기 커맨드는 마이크로폰에 입력되는 음성 입력인, 비일시적 컴퓨터 판독가능 매체.
  16. 제12항에 있어서, 상기 커맨드는 터치 스크린 입력을 통해 입력되는, 비일시적 컴퓨터 판독가능 매체.
  17. 방법으로서,
    커맨드의 콘텐츠의 컨텍스트로부터 식별된 타겟 디바이스를 세션에 추가하기 위한 상기 커맨드에 응답하여, 추가되는 상기 타겟 디바이스에 재생 역량들에 대한 요청을 전달하는 단계,
    추가되는 상기 타겟 디바이스의 응답으로부터, 상기 세션에 대한 재생 모드를 유추하는 단계, 및
    추가되는 상기 타겟 디바이스를 포함하는, 상기 세션의 구성원들인 디바이스들의 재생을 동기화하는 단계 - 상기 동기화하는 단계는 재생 동작에 의해 렌더링되는 적어도 하나의 자산의 식별 및 상기 자산의 재생의 타이밍 정보를 전달하는 단계를 포함함 - 를 포함하는, 방법.
  18. 제17항에 있어서, 상기 세션의 구성원들인 적어도 두 디바이스들은 미디어 소스로부터 상기 자산의 그것들의 각자의 재생 콘텐츠를 서로 독립적으로 스트리밍하는, 방법.
  19. 제17항에 있어서, 상기 세션의 구성원인 상기 디바이스들 중 하나는 마스터 디바이스로서 동작하고, 상기 재생 동작에 의해 렌더링되는 복수의 자산들을 나타내는 재생 큐의 데이터를 저장하는, 방법.
  20. 제19항에 있어서, 상기 세션의 구성원이지만 상기 마스터 디바이스가 아닌 다른 디바이스는 이차 디바이스로서 동작하고, 현재 렌더링되고 있는 자산의 데이터 및 상기 자산의 재생의 상기 타이밍 정보를 저장하는, 방법.
  21. 제19항에 있어서, 상기 세션에서 상기 마스터 디바이스를 제거하기 위한 요청에 응답하여, 상기 재생 큐의 상기 데이터를 상기 세션의 구성원인 다른 디바이스에 전달하는 단계를 추가로 포함하는, 방법.
  22. 제17항에 있어서, 추가되는 디바이스의 재생 역량이, 상기 세션 내의 다른 디바이스가 재생 콘텐츠를 스트리밍하고 있는 미디어 소스로부터 상기 디바이스가 상기 자산의 재생 콘텐츠를 직접 스트리밍할 수 없음을 나타내는 경우, 상기 자산의 재생 콘텐츠를 상기 다른 디바이스로부터 추가되는 상기 디바이스로 전송하는 단계를 추가로 포함하는, 방법.
  23. 제17항에 있어서, 상기 세션에서 디바이스를 제거하기 위한 요청에 응답하여, 제거되는 상기 디바이스에 재생을 중단하기 위한 메시지를 전송하는 단계를 추가로 포함하는, 방법.
  24. 제17항에 있어서, 상기 세션에서 디바이스를 제거하기 위한 요청에 응답하여:
    상기 세션 내에 남아있는 디바이스들의 수를 결정하는 단계, 및
    상기 세션 내에 남아 있는 디바이스들의 수가 2 미만인 경우, 상기 세션을 종료하는 단계를 추가로 포함하는, 방법.
  25. 제17항에 있어서, 추가되는 상기 디바이스의 상기 응답은 상기 디바이스가 구독되는 콘텐츠 구독 서비스의 식별을 포함하는, 방법.
  26. 제17항에 있어서, 추가되는 상기 디바이스의 상기 응답은 상기 디바이스 상에 설치된 재생 애플리케이션의 식별을 포함하는, 방법.
  27. 프로그램 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서, 상기 프로그램 명령어들은 프로세싱 디바이스에 의해 실행될 때, 상기 디바이스로 하여금:
    커맨드의 콘텐츠의 컨텍스트로부터 식별된 타겟 디바이스를 세션에 추가하기 위한 상기 커맨드에 응답하여, 추가되는 상기 타겟 디바이스에 재생 역량들에 대한 요청을 전달하고,
    추가되는 상기 타겟 디바이스의 응답으로부터, 상기 세션에 대한 재생 모드를 유추하고,
    추가되는 상기 타겟 디바이스를 포함하는, 상기 세션의 구성원들인 디바이스들의 재생을 동기화하게 하는 - 상기 재생 동작에 의해 렌더링되는 적어도 하나의 자산의 식별 및 상기 자산의 재생의 타이밍 정보를 전달하는 것을 포함함 -, 비일시적 컴퓨터 판독가능 매체.
  28. 제27항에 있어서, 상기 프로세싱 디바이스는 추가되는 상기 디바이스에 의해 수행되는 스트리밍에 독립적으로 미디어 소스로부터 상기 자산의 그것의 재생 콘텐츠를 스트리밍하는, 비일시적 컴퓨터 판독가능 매체.
  29. 제27항에 있어서, 상기 프로세싱 디바이스는 마스터 디바이스로서 동작하고, 상기 재생 동작에 의해 렌더링되는 복수의 자산들을 나타내는 재생 큐의 데이터를 저장하는, 비일시적 컴퓨터 판독가능 매체.
  30. 제29항에 있어서, 상기 프로세싱 디바이스는, 상기 세션에서 상기 프로세싱 디바이스를 제거하기 위한 요청에 응답하여, 상기 재생 큐의 상기 데이터를 상기 세션의 구성원인 다른 디바이스에 전달하는, 비일시적 컴퓨터 판독가능 매체.
  31. 제27항에 있어서, 상기 프로세싱 디바이스는, 상기 디바이스가 상기 프로세싱 디바이스가 재생 콘텐츠를 스트리밍하는 미디어 소스로부터 직접 상기 자산의 재생 콘텐츠를 스트리밍할 수 없음을 추가되는 상기 디바이스의 재생 역량이 나타내는 경우, 상기 자산의 재생 콘텐츠를 추가되는 상기 디바이스에 전송하는, 비일시적 컴퓨터 판독가능 매체.
  32. 제27항에 있어서, 상기 프로세싱 디바이스는, 상기 세션에서 디바이스를 제거하기 위한 요청에 응답하여, 제거되는 상기 디바이스에 재생을 중단하기 위한 메시지를 전송하는, 비일시적 컴퓨터 판독가능 매체.
  33. 제27항에 있어서, 상기 프로세싱 디바이스는, 상기 세션에서 디바이스를 제거하기 위한 요청에 응답하여:
    상기 세션 내에 남아있는 디바이스들의 수를 결정하고,
    상기 세션 내에 남아 있는 디바이스들의 수가 2 미만인 경우, 상기 세션을 종료하는, 비일시적 컴퓨터 판독가능 매체.
  34. 방법으로서,
    재생 디바이스에서, 재생 세션 내의 다른 디바이스로부터의 재생 역량들에 대한 요청에 응답하여, 상기 재생 디바이스의 역량들을 식별하는 응답을 전송하는 단계 - 상기 재생 디바이스는 상기 다른 디바이스에 의해 수신되는 커맨드의 콘텐츠의 컨텍스트로부터 식별됨 -; 및
    상기 재생 세션 내의 상기 다른 디바이스로부터, 상기 재생 세션에 의해 렌더링되는 적어도 하나의 자산의 식별 및 상기 적어도 하나의 자산의 재생의 타이밍 정보를 수신하는 단계 - 상기 적어도 하나의 자산은 상기 식별된 재생 역량들에 응답하여 선택됨 -를 포함하는, 방법.
  35. 제34항에 있어서,
    추가적인 디바이스는 초기에 상기 세션의 마스터 디바이스로서 지정되고,
    상기 마스터 디바이스가 상기 세션에서 제거되는 경우, 상기 마스터 디바이스에 의해 저장된 재생 큐의 데이터는 상기 재생 디바이스에 전달되는, 방법.
  36. 제34항에 있어서, 상기 세션에서 상기 재생 디바이스를 제거하기 위한 요청을 수신하면, 현재 재생되는 자산의 렌더링을 중지하는 단계를 추가로 포함하는, 방법.
  37. 제34항에 있어서, 상기 세션에서 상기 재생 디바이스를 제거하기 위한 요청에 응답하여:
    상기 세션 내에 남아있는 디바이스들의 수를 결정하는 단계, 및
    상기 세션 내에 남아 있는 디바이스들의 수가 2 미만인 경우, 상기 세션을 종료하는 단계를 추가로 포함하는, 방법.
  38. 제34항에 있어서, 상기 응답은 상기 재생 디바이스가 구독되는 콘텐츠 구독 서비스의 식별을 포함하는, 방법.
  39. 제34항에 있어서, 상기 응답은 상기 재생 디바이스 상에 설치된 재생 애플리케이션의 식별을 포함하는, 방법.
  40. 재생 디바이스로서,
    프로세싱 디바이스,
    송수신기, 및
    프로그램 명령어들을 저장한 메모리 시스템을 포함하고, 상기 프로그램 명령어들은 실행될 때, 상기 프로세싱 디바이스로 하여금:
    커맨드의 콘텐츠의 컨텍스트로부터 식별된 타겟 디바이스를 세션에 추가하기 위한 상기 커맨드에 응답하여, 추가되는 상기 타겟 디바이스에 재생 역량들에 대한 요청을 전달하고,
    추가되는 상기 타겟 디바이스의 응답으로부터, 상기 세션에 대한 재생 모드를 유추하고,
    추가되는 상기 타겟 디바이스를 포함하는, 상기 세션의 구성원들인 디바이스들의 재생을 동기화하게 하는 - 상기 재생 동작에 의해 렌더링되는 적어도 하나의 자산의 식별 및 상기 자산의 재생의 타이밍 정보를 전달하는 것을 포함함 -, 재생 디바이스.
  41. 제40항에 있어서, 상기 메모리 시스템은 상기 재생 디바이스가 구독되는 콘텐츠 구독 서비스와 연관된 프로그램 명령어들을 저장하고, 상기 재생은 상기 콘텐츠 구독 서비스의 상기 프로그램 명령어들의 실행에 의해 일어나는, 재생 디바이스.
  42. 제40항에 있어서, 상기 메모리 시스템은 상기 재생 디바이스가 구독되는 상기 재생 디바이스 상에 설치된 재생 애플리케이션의 프로그램 명령어들을 저장하고, 상기 재생은 상기 재생 애플리케이션의 상기 프로그램 명령어들의 실행에 의해 일어나는, 재생 디바이스.
  43. 제1항에 있어서, 상기 커맨드의 콘텐츠의 상기 컨텍스트로부터, 렌더링되는 상기 적어도 하나의 자산을 식별하는 단계를 추가로 포함하는 방법.
  44. 제1항에 있어서, 상기 디바이스 역량들은 이용가능한 전력 리소스(들), 인터럽션의 주파수 또는 네트워크 접속 대역폭 중 하나 이상을 포함하는 신뢰성의 인자들을 포함하는, 방법.
  45. 제34항에 있어서,
    상기 식별된 자산을 미디어 소스로부터 스트리밍하는 단계, 및
    상기 타이밍 정보에 따라 상기 자산을 렌더링하는 단계
    를 추가로 포함하는 방법.
KR1020180124457A 2017-10-20 2018-10-18 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화 KR102173014B1 (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US201762574891P 2017-10-20 2017-10-20
US62/574,891 2017-10-20
US201862620737P 2018-01-23 2018-01-23
US62/620,737 2018-01-23
US201862650699P 2018-03-30 2018-03-30
US62/650,699 2018-03-30
US201862669642P 2018-05-10 2018-05-10
US62/669,642 2018-05-10
US16/146,098 2018-09-28
US16/146,098 US11509726B2 (en) 2017-10-20 2018-09-28 Encapsulating and synchronizing state interactions between devices

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020200140367A Division KR102213637B1 (ko) 2017-10-20 2020-10-27 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화

Publications (2)

Publication Number Publication Date
KR20190044523A KR20190044523A (ko) 2019-04-30
KR102173014B1 true KR102173014B1 (ko) 2020-11-02

Family

ID=63965246

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020180124457A KR102173014B1 (ko) 2017-10-20 2018-10-18 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화
KR1020200140367A KR102213637B1 (ko) 2017-10-20 2020-10-27 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화
KR1020210014655A KR102444709B1 (ko) 2017-10-20 2021-02-02 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020200140367A KR102213637B1 (ko) 2017-10-20 2020-10-27 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화
KR1020210014655A KR102444709B1 (ko) 2017-10-20 2021-02-02 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화

Country Status (5)

Country Link
US (2) US11509726B2 (ko)
EP (1) EP3474558A3 (ko)
KR (3) KR102173014B1 (ko)
CN (3) CN109697992B (ko)
AU (1) AU2018250489B2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9747011B2 (en) 2014-09-16 2017-08-29 Google Inc. Continuation of playback of media content by different output devices
US9830321B2 (en) * 2014-09-30 2017-11-28 Rovi Guides, Inc. Systems and methods for searching for a media asset
US11509726B2 (en) 2017-10-20 2022-11-22 Apple Inc. Encapsulating and synchronizing state interactions between devices
JP7069900B2 (ja) * 2018-03-19 2022-05-18 船井電機株式会社 コンテンツ配信装置
US11477516B2 (en) * 2018-04-13 2022-10-18 Koji Yoden Services over wireless communication with high flexibility and efficiency
CN110177293B (zh) * 2019-05-28 2021-12-21 南京南方电讯有限公司 一种同步组播和视频转发方法、系统
KR102245953B1 (ko) * 2019-06-05 2021-04-28 엘지전자 주식회사 복수의 전자기기의 제어방법
CN114924682A (zh) * 2019-10-24 2022-08-19 华为终端有限公司 一种内容接续方法及电子设备
US11528678B2 (en) * 2019-12-20 2022-12-13 EMC IP Holding Company LLC Crowdsourcing and organizing multiple devices to perform an activity
US11876851B2 (en) * 2019-12-26 2024-01-16 Akamai Technologies, Inc. Synchronizing independent media and data streams using media stream synchronization points
US11838450B2 (en) 2020-02-26 2023-12-05 Dish Network L.L.C. Devices, systems and processes for facilitating watch parties
US11875786B2 (en) * 2020-03-10 2024-01-16 Scott C Harris Natural language recognition assistant which handles information in data sessions
US11606597B2 (en) 2020-09-03 2023-03-14 Dish Network Technologies India Private Limited Devices, systems, and processes for facilitating live and recorded content watch parties
US20220366077A1 (en) * 2021-05-15 2022-11-17 Apple Inc. User interfaces and associated systems and processes for shared playback of content items
US11991232B2 (en) * 2021-05-28 2024-05-21 Spotify Ab Command buffering
US11758245B2 (en) 2021-07-15 2023-09-12 Dish Network L.L.C. Interactive media events
WO2023014783A1 (en) * 2021-08-03 2023-02-09 Akamai Technologies, Inc. Synchronizing independent media and data streams using media stream synchronization points
CN116069975A (zh) * 2021-10-30 2023-05-05 华为技术有限公司 回放方法、录制方法以及相关设备
US11849171B2 (en) 2021-12-07 2023-12-19 Dish Network L.L.C. Deepfake content watch parties
US11974005B2 (en) 2021-12-07 2024-04-30 Dish Network L.L.C. Cell phone content watch parties
US11991511B2 (en) * 2021-12-10 2024-05-21 Amazon Technologies, Inc. Contextual awareness in dynamic device groups
US11973999B2 (en) * 2022-08-19 2024-04-30 Dish Network L.L.C. User chosen watch parties
US20240073474A1 (en) * 2022-08-29 2024-02-29 Apple Inc. Systems and methods for display synchronization

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060270395A1 (en) * 2005-05-25 2006-11-30 Microsoft Corporation Personal shared playback
US20100015945A1 (en) * 2008-07-15 2010-01-21 Qualcomm Incorporated Reducing latency in a prepaid group communication session within a wireless communications system
US20140334381A1 (en) * 2013-05-08 2014-11-13 Qualcomm Incorporated Video streaming in a wireless communication system
US20170273044A1 (en) * 2015-09-30 2017-09-21 Apple Inc. Synchronized playback and control of media

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9207905B2 (en) 2003-07-28 2015-12-08 Sonos, Inc. Method and apparatus for providing synchrony group status information
US7818770B2 (en) * 2004-11-23 2010-10-19 Palo Alto Research Center Incorporated Methods, apparatus, and program products to support a shared viewing experience from remote locations
US20080152165A1 (en) * 2005-07-01 2008-06-26 Luca Zacchi Ad-hoc proximity multi-speaker entertainment
JP4935345B2 (ja) * 2006-12-25 2012-05-23 ソニー株式会社 コンテンツ再生システム、再生装置、再生制御方法及びプログラム
US20100011135A1 (en) 2008-07-10 2010-01-14 Apple Inc. Synchronization of real-time media playback status
US8473429B2 (en) * 2008-07-10 2013-06-25 Samsung Electronics Co., Ltd. Managing personal digital assets over multiple devices
US20100031299A1 (en) * 2008-08-04 2010-02-04 Opanga Networks, Llc Systems and methods for device dependent media content delivery in a local area network
US20150058409A1 (en) * 2013-03-22 2015-02-26 Frank C. Wang Enhanced content delivery system and method spanning multiple data processing systems
US9021370B1 (en) * 2010-03-17 2015-04-28 Amazon Technologies, Inc. Collaborative chat room media player with recommendations
US10712771B2 (en) 2010-08-13 2020-07-14 Netflix, Inc. System and method for synchronized playback of streaming digital content
US8789086B2 (en) * 2011-02-11 2014-07-22 Sony Corporation Method and apparatus for content playback using multiple IPTV devices
US20130173517A1 (en) * 2011-12-30 2013-07-04 Nokia Corporation Method and apparatus for coordinating content across devices based on stimuli
US9654821B2 (en) * 2011-12-30 2017-05-16 Sonos, Inc. Systems and methods for networked music playback
US9654817B2 (en) * 2012-01-27 2017-05-16 Avaya Inc. System and method to synchronize video playback on mobile devices
US8997169B2 (en) * 2012-03-23 2015-03-31 Sony Corporation System, method, and infrastructure for synchronized streaming of content
US9609395B2 (en) * 2012-03-26 2017-03-28 Max Abecassis Second screen subtitles function
US9077844B2 (en) * 2012-04-06 2015-07-07 Realtek Semiconductor Corp. Multi-screen video playback system and related computer program product
US9195383B2 (en) * 2012-06-29 2015-11-24 Spotify Ab Systems and methods for multi-path control signals for media presentation devices
EP3253079B1 (en) * 2012-08-31 2023-04-05 Dolby Laboratories Licensing Corporation System for rendering and playback of object based audio in various listening environments
US20140096169A1 (en) * 2012-09-28 2014-04-03 Joseph Dodson Playback synchronization in a group viewing a media title
US9319409B2 (en) 2013-02-14 2016-04-19 Sonos, Inc. Automatic configuration of household playback devices
KR101571338B1 (ko) * 2013-03-13 2015-11-24 삼성전자주식회사 복수의 재생 장치들이 스트리밍 컨텐트를 동기화하여 재생하는 방법 및 이를 위한 장치
EP4092968A1 (en) * 2013-05-29 2022-11-23 Sonos Inc. Playback queue control via a playlist on a mobile device
US9438193B2 (en) 2013-06-05 2016-09-06 Sonos, Inc. Satellite volume control
US8826347B1 (en) * 2013-08-22 2014-09-02 aioTV, Inc. Method and system for creating video channels for delivery of content from multiple platforms
US10194189B1 (en) * 2013-09-23 2019-01-29 Amazon Technologies, Inc. Playback of content using multiple devices
US20150128194A1 (en) * 2013-11-05 2015-05-07 Huawei Device Co., Ltd. Method and mobile terminal for switching playback device
CN103581816A (zh) * 2013-11-18 2014-02-12 广州市花都区中山大学国光电子与通信研究院 基于UPnP协议的无线多房间音乐系统的一种同步机制
US9431021B1 (en) * 2014-03-27 2016-08-30 Amazon Technologies, Inc. Device grouping for audio based interactivity
US9916839B1 (en) * 2014-03-27 2018-03-13 Amazon Technologies, Inc. Shared audio functionality based on device grouping
US11553018B2 (en) * 2014-04-08 2023-01-10 Comcast Cable Communications, Llc Dynamically switched multicast delivery
US9671997B2 (en) * 2014-07-23 2017-06-06 Sonos, Inc. Zone grouping
US20160103655A1 (en) 2014-10-08 2016-04-14 Microsoft Corporation Co-Verbal Interactions With Speech Reference Point
US20160189232A1 (en) * 2014-12-30 2016-06-30 Spotify Ab System and method for delivering media content and advertisements across connected platforms, including targeting to different locations and devices
US9833723B2 (en) * 2014-12-31 2017-12-05 Opentv, Inc. Media synchronized control of peripherals
US9330096B1 (en) 2015-02-25 2016-05-03 Sonos, Inc. Playback expansion
KR102051985B1 (ko) 2015-09-30 2019-12-04 애플 인크. 이질적인 네트워킹 환경들에서 미디어 렌더링의 동기화
DE112016004512T5 (de) 2015-09-30 2018-07-12 Apple Inc. Koordinierte steuerung der medienwiedergabe
CN105355201A (zh) 2015-11-27 2016-02-24 百度在线网络技术(北京)有限公司 基于场景的语音服务处理方法、装置和终端设备
US9846564B1 (en) * 2016-06-21 2017-12-19 Google Inc. Mesh network of nearby mobile devices as a combined speaker system for audio
US10134399B2 (en) * 2016-07-15 2018-11-20 Sonos, Inc. Contextualization of voice inputs
CN106125567B (zh) 2016-08-30 2019-11-08 广东美的制冷设备有限公司 一种基于用户指令识别家电的方法、系统和装置
CN107819809B (zh) * 2016-09-14 2024-03-05 京东方科技集团股份有限公司 对内容进行同步操作的方法及装置
US10158905B2 (en) * 2016-09-14 2018-12-18 Dts, Inc. Systems and methods for wirelessly transmitting audio synchronously with rendering of video
US10304463B2 (en) * 2016-10-03 2019-05-28 Google Llc Multi-user personalization at a voice interface device
US10712997B2 (en) * 2016-10-17 2020-07-14 Sonos, Inc. Room association based on name
US10839795B2 (en) * 2017-02-15 2020-11-17 Amazon Technologies, Inc. Implicit target selection for multiple audio playback devices in an environment
US10362346B2 (en) * 2017-04-20 2019-07-23 Apple Inc. Simultaneous playback for multiple audience members with different visual and audio needs
US11509726B2 (en) 2017-10-20 2022-11-22 Apple Inc. Encapsulating and synchronizing state interactions between devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060270395A1 (en) * 2005-05-25 2006-11-30 Microsoft Corporation Personal shared playback
US20100015945A1 (en) * 2008-07-15 2010-01-21 Qualcomm Incorporated Reducing latency in a prepaid group communication session within a wireless communications system
US20140334381A1 (en) * 2013-05-08 2014-11-13 Qualcomm Incorporated Video streaming in a wireless communication system
US20170273044A1 (en) * 2015-09-30 2017-09-21 Apple Inc. Synchronized playback and control of media

Also Published As

Publication number Publication date
CN114495994A (zh) 2022-05-13
CN115713949A (zh) 2023-02-24
AU2018250489A1 (en) 2019-05-09
KR20200124644A (ko) 2020-11-03
US11509726B2 (en) 2022-11-22
US20230053350A1 (en) 2023-02-23
KR20190044523A (ko) 2019-04-30
CN109697992B (zh) 2022-11-22
EP3474558A2 (en) 2019-04-24
AU2018250489B2 (en) 2020-03-19
US20190124159A1 (en) 2019-04-25
KR102213637B1 (ko) 2021-02-08
KR20210014730A (ko) 2021-02-09
EP3474558A3 (en) 2019-05-15
KR102444709B1 (ko) 2022-09-19
CN109697992A (zh) 2019-04-30

Similar Documents

Publication Publication Date Title
KR102213637B1 (ko) 디바이스들 간의 상태 상호작용의 캡슐화 및 동기화
KR102299239B1 (ko) 공동 디바이스 상의 가상 어시스턴트 시스템에 대한 개인 도메인
US11269678B2 (en) Systems and methods for integrating third party services with a digital assistant
US11102259B2 (en) Network system for content playback on multiple devices
US9280610B2 (en) Crowd sourcing information to fulfill user requests
KR101883301B1 (ko) 인공 지능 자동 화자 식별 방법을 이용하는 개인 맞춤형 음성 인식 서비스 제공 방법 및 이에 사용되는 서비스 제공 서버
KR20200127814A (ko) 사용자의 입력 입력에 기초하여 타겟 디바이스를 결정하고, 타겟 디바이스를 제어하는 서버 및 그 동작 방법
JP2019120935A (ja) 人工知能機器で複数のウェイクワードを利用したサービス提供方法およびそのシステム
TW202301080A (zh) 輔助系統的多裝置調解
JP6554517B2 (ja) サウンドを利用したソーシャルネットワークサービス提供装置及びその方法
JPWO2019235013A1 (ja) 情報処理装置および情報処理方法

Legal Events

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