KR20150086332A - 디바이스 구성, 상호 작용 및 제어를 위한 통합된 프레임워크, 및 연관된 방법, 디바이스 및 시스템 - Google Patents

디바이스 구성, 상호 작용 및 제어를 위한 통합된 프레임워크, 및 연관된 방법, 디바이스 및 시스템 Download PDF

Info

Publication number
KR20150086332A
KR20150086332A KR1020157016043A KR20157016043A KR20150086332A KR 20150086332 A KR20150086332 A KR 20150086332A KR 1020157016043 A KR1020157016043 A KR 1020157016043A KR 20157016043 A KR20157016043 A KR 20157016043A KR 20150086332 A KR20150086332 A KR 20150086332A
Authority
KR
South Korea
Prior art keywords
user
information
mechanisms
speech
devices
Prior art date
Application number
KR1020157016043A
Other languages
English (en)
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 KR20150086332A publication Critical patent/KR20150086332A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

디바이스를 작동시키는 방법은, 디바이스 주변의 환경으로부터의 센서 정보를 버퍼링된 센서 정보로서 버퍼링하는 단계; 환경 내의 사람의 시선을 검출하는 단계; 검출된 시선에 기초하여, 버퍼링된 센서 정보를 포함하는 일부 센서 정보에 대한 인식을 개시하는 단계; 상기 인식이 버퍼링된 센서 정보를 포함하는 센서 정보 내의 적어도 하나의 지시를 판정하는 단계; 및 적어도 하나의 지시에 기초하여 디바이스를 작동시키는 단계를 포함한다.

Description

디바이스 구성, 상호 작용 및 제어를 위한 통합된 프레임워크, 및 연관된 방법, 디바이스 및 시스템{UNIFIED FRAMEWORK FOR DEVICE CONFIGURATION, INTERACTION AND CONTROL, AND ASSOCIATED METHODS, DEVICES AND SYSTEMS}
저작권 선언
본 특허 문서는 저작권 보호 대상의 자료를 포함한다. 저작권 소유자는 미국 특허 상표청의 파일에서 본 특허 문서 또는 임의의 관련된 자료를 복제하는 것을 반대하지 않지만, 그 외의 경우에는 모든 저작권을 보유한다.
관련 출원
본 출원은, 2012년 11월 16일 출원된 발명의 명칭이 "Unified Framework For Device Configuration, Interaction And Control, And Associated Methods, Devices And Systems"인 미국 가특허 출원 번호 제61/727,217호의 우선권을 주장하며, 그 전체 내용은 모든 목적을 위해 참조로서 본 명세서에 포함된다.
발명의 분야
본 발명은, 디바이스 구성, 상호작용 및 제어를 위한 통합된 프레임워크(framework)와, 그 관련된 방법, 디바이스, 및 시스템에 관한 것이다.
컴퓨터-기반의 디바이스들, 특히 가전 컴퓨터-기반의 디바이스들은 도처에 존재하고 있다. 이들 디바이스들은 통상적으로 서로 독립적으로 설계 및 제조되며, 서로 상호작용하거나 서로 이용하도록 확장하기 위해, 이들은 이렇게 하기 위한 애드 혹(ad hoc) 또는 표준화된 기술을 이용하려는 경향이 있다. 결과적으로, 소비자들은 종종, 취득한 디바이스들에 대해 또는 상이한 디바이스들을 함께 이용하고자 할 때 또는 심지어 동일한 판매자가 디바이스를 제작할 때에도, 디바이스들에 대해 복잡한 셋업 절차를 수행해야 한다. 단일의 단독형 디바이스에 대해서도, 셋업 절차는 통상적으로 복잡하다. 일부 회사는 그들 자신의 디바이스들의 이용을 간소화하려고 노력해 왔지만, 다른 회사들의 디바이스는 그렇지 못했다.
디바이스들이 용이하게 준비되고(provisioned), 구성되고, 병합될 수 있는(assimilated) 시스템/프레임워크를 제공하는 것이 바람직하며, 본 발명의 목적이다.
상이한 타입의 디바이스들과 상이한 사용자들이 그 내부에서 상호작용할 수 있는 시스템/프레임워크를 제공하는 것이 보다 바람직한 본 발명의 목적이다.
서로간의 및 공통의 프레임워크와의 상호작용을 지원하기 위해 디바이스들 내에 코어 시스템을 제공하는 것이 보다 바람직한 본 발명의 목적이다.
본 발명의 다른 목적, 특징, 및 특성들 뿐만 아니라 구조의 관련된 요소들의 동작 및 기능의 방법, 및 파트들의 조합 및 제조 경제성은, 명세서의 일부를 형성하는 첨부된 도면을 참조하여 이하의 상세한 설명과 첨부된 특허청구범위를 고려할 경우 더욱 명백해질 것이다.
도 1은 본원의 실시예들에 따른 예시적 시스템에 대한 프레임워크를 도시한다;
도 2는 본원의 실시예들에 따른 도 1의 프레임워크 내에서의 사용자의 디바이스의 구성의 양태를 도시한다;
도 3a 내지 도 3c는 본원의 실시예들에 따른 도 1의 프레임워크의 데이터베이스(들)의 상세사항을 도시한다.
도 4a, 4aa, 4ab, 4b 및 4c는 본원의 실시예들에 따른 도 1의 프레임워크 내에서의 사용을 위한 전형적인 디바이스의 양태를 도시한다;
도 4d 내지 도 4h는 본원의 실시예들에 따른 시스템 내의 코포라(corpora)의 예시적 조직구성(organization)을 도시한다;
도 4i 내지 도 4n은 본원의 실시예들에 따른 도 1의 프레임워크 내에서의 디바이스의 예시적 동작을 도시하는 흐름도이다;
도 5a 내지 도 5e는 본 개시내용의 실시예들이 구현되고 수행될 수 있는 전형적인 컴퓨터 시스템의 양태를 도시한다;
도 6a 내지 도 6i는 본원의 실시예들에 따른 도 1의 프레임워크 내에서의 디바이스 준비 및 구성의 예시적 양태를 도시한다;
도 7a 내지 도 7j는 본원의 실시예들에 따른 도 1의 프레임워크 내에서의 디바이스의 상호작용의 양태를 도시한다;
도 8a 내지 도 8d는 본원의 실시예들에 따른 음향 렌더링(sound rendering)을 위한 예시의 특정한 디바이스의 양태를 도시한다;
도 9a 내지 도 9c는 본원의 실시예들에 따른 음향-렌더링 디바이스들 사이의 협력의 양태를 도시한다;
용어 "M"은, 설명되는 시스템, 디바이스, 프로세스, 상호작용 등에 대한 명칭으로서 본원에서 사용된다. 이 명칭은 단지 설명을 보조하기 위해 사용되는 것이고 어떤 식으로든 시스템의 범위를 제한하고자 함이 아님을 이해해야 한다.
도 1은 복수의 M-가능형(enabled) 디바이스(102-1, 102-2, ... 102-n, 집합적으로 102)가 사용되고 있는 예시적 M 시스템(100)에 대한 프레임워크/시스템을 도시한다. M-가능형 디바이스(또는 M 디바이스)(102)는 임의의 디바이스 및 임의 종류의 디바이스일 수 있고 단독형 디바이스일 수 있으며 임의 종류의 디바이스 또는 시스템 내에 통합되거나 이와 결합될 수 있다. 예를 들어, M-가능형 디바이스(102)는, (디지털 또는 아날로그 콘텐츠를 포함한) 콘텐츠를 캡처(capture) 및/또는 작성하는 디바이스, (또한, 디지털 및/또는 아날로그 콘텐츠를 포함하는) 콘텐츠를 생성 및/또는 렌더링하는 디바이스일 수 있지만, 이것으로 제한되는 것은 아니다. M-가능형 디바이스는, 예를 들어, 카메라, 스피커, 컴퓨터, 전화, 셋톱 박스, 텔레비전, 기구(appliance) 등일 수 있다(또는 이에 포함될 수 있다). 이들 디바이스들의 조합, 예를 들어, 카메라와 스피커와 텔레비전 모니터를 포함하는 셋탑박스도 역시 고려되며, 컴퓨터는 하나 이상의 M-가능형 디바이스일 수 있다. 디바이스(102)에 대해 본원에서 주어진 예는 예시일 뿐이고 어떤 식으로든 제한하고자 함이 아님을 이해해야 한다. M-가능형 디바이스(또는 M 디바이스)(102)가 이하에서 더 상세히 설명될 것이다.
시스템(100)은 바람직하게는, 공개키 인프라스트럭쳐(PKI; public key infrastructure) 방식(미도시)에서 더 큰 집합 또는 계층의 인증국(CA; Certification Authority))의 일부일 수 있는 하나 이상의 인증국(CA)(106)을 포함하거나 이에 대한 액세스를 갖는다. 각각의 CA(106)는 시스템(100)을 위해 또는 이를 대신하여 디지털 인증서를 발생하는 엔티티(entity)이다.
M-가능형 디바이스(102)는 바람직하게는 하나 이상의 인가된 디바이스 제조사(108)에 의해 (적어도 부분적으로) 제조된다. 도 1의 디바이스(102)는 상이한 제조사들에 의해 제작된 상이한 타입의 디바이스일 수 있다는 점을 이해해야 한다.
M-가능형 디바이스(102)는 서로 그리고 백엔드(backend) 시스템(104)과 상호작용할 수 있다. 상이한 타입의 디바이스들이 서로 상호작용할 수 있다(예를 들어, 모바일 전화에 임베딩된 M 디바이스는 스피커에 임베딩된 또 다른 M 디바이스와 상호작용할 수 있다)는 것을 이해해야 한다.
M-가능형 디바이스(102)들은 각각 사용자(110)와 연관된다. 특정한 사용자(110)는 그와 연관된 복수의 디바이스(102)를 가질 수 있다. 일부 구현에서, 각각의 디바이스(102)는 단 한 명의 사용자(110)와 연관될 수 있다. 용어 "사용자"는 시스템(100) 내의 내부 엔티티이고 시스템(100) 내의 디바이스들간의 결속(binding)을 정의하는데 이용된다는 점을 이해해야 한다. 사용자(110)는 시스템(100) 내에서 특정 관계를 갖는 엔티티인 것으로 간주될 수 있다. 이 엔티티는 사람 또는 사람 그룹 또는 기타 임의 종류의 엔티티(예를 들어, 회사, 학교, 클럽 등)에 대응할 수 있다. 바람직한 구현에서, 사용자(110)는 시스템에 등록된 엔티티이다. 특정한 개인(또는 엔티티)는 한 명보다 많은 사용자(110)에 대응할 수 있다. 예를 들어, 개인은 시스템(100) 내에 2명의 사용자(110)를 갖도록 선택할 수 있다.
백엔드(104)는 하나 이상의 백엔드 애플리케이션(112)을 포함하고, 그 중 적어도 일부는 디바이스(102) 및 사용자(110)에 관한 정보를 저장 및 유지하는 하나 이상의 데이터베이스(114)와 상호작용한다. 백엔드(104)는 또한, (Facebook, LinkedIn 등과 같은) 소셜 네트워킹 서비스(116) 및 (RDIO, 판도라(Pandora), 스포티파이(Spotify) 등과 같은) 콘텐츠 제공자(118)를 포함하는 다양한 다른 엔티티와 상호작용할 수 있다. 소셜 네트워킹 서비스(116)는 콘텐츠 제공자(118)와 별개인 것으로 도시되어 있지만, 이들 엔티티들간에 일부 중복이 있을 수 있다는 점을 이해해야 한다. 백엔드(104)는 사용자(110)(또는 디바이스(102))에게 추가 기능을 제공할 수 있는 엔티티(120)와 상호작용할 수 있다. 추가 기능은, 예를 들어, 음성 또는 명령 인식 기능, 얼굴 인식 등을 포함할 수 있다. 백엔드(104)는 또한, 기타의 다양한 외부 컴포넌트(122)와 상호작용할 수 있다.
추가 기능은 일부 또는 모든 디바이스(102)에 제공된 기능에 관한 향상 또는 개선을 제공하거나 디바이스에 제공된 기능 외의 기능을 제공할 수 있다. 추가 기능(120)은, 예를 들어, 디바이스(120)의 하드웨어 능력을 넘어서는 기능을 제공하기 위해 이용될 수 있다. 따라서, 예를 들어, 그리고 이하에서 더 상세히 설명되는 바와 같이, 추가 기능(120)은 특정한 디바이스(102) 상에 제공된 것을 넘어(또는 특정한 디바이스(102)의 하드웨어를 이용하여 가능한 것을 넘어) 음성 인식을 제공할 수 있다. 사실상, 추가 기능(120)은, 적어도 부분적으로, 임의의 특정한 M-가능형 디바이스(102)의 기능을 확장하는데 이용될 수 있다.
엔티티(120)에 의해 제공되는 기능의 일부 또는 모두는 백엔드(104) 내에(또는 백엔드 애플리케이션(112) 내에) 통합될 수도 있다는 점을 이해해야 한다.
도면 내의 컴포넌트들의 분리에 의해 어떠한 소유나 관리 또는 제어(또는 그것의 결여)가 암시되는 것은 아님을 이해해야 한다. 따라서, 예를 들어, CA(들)(104)이 백엔드(104)를 작동시키는 엔티티와 동일한 엔티티에 의해 소유되거나 운용되어야 (또는 그것에 의해 소유되지 않아야)한다는 요건은 없다. 유사하게, 소셜 네트워킹 서비스(116) 및/또는 콘텐츠 제공자(118) 및/또는 추가 기능(120)을 제공하는 엔티티들이 별도로 소유 및 운용되어야 (또는 이들이 공통으로 소유 및 운용되어야) 한다는 요건은 없다. 시스템(100)의 일부 또는 모두는 소셜 네트워킹 서비스(116) 및/또는 콘텐츠 제공자(118) 내에 통합될 수 있다.
시스템 및 컴포넌트 상호작용
다양한 상호작용이 시스템(100)에서 다양한 컴포넌트들간에 발생할 수 있다. 이들 상호작용은 (도 1에서) (1 내지 15로 표기된) 넘버링된 원호(arc) 또는 라인으로 도시되어 있다. 도 1에 도시된 시스템(100)에 있어서:
원호 #1은 2개의 디바이스(102) 사이의 상호작용을 말한다.
원호 #2는 디바이스 제조사(들)(108)과 디바이스(102) 사이의 상호작용을 말한다.
원호 #3은 CA(들)(106)과 디바이스(102) 사이의 상호작용을 말한다.
원호 #4는 CA(들)(106)과 사용자(110) 사이의 상호작용을 말한다.
원호 #5는 사용자(110)와 백엔드(104) 사이의 상호작용을 말한다.
원호 #6은 CA(들)(106)과 백엔드(104) 사이의 상호작용을 말한다.
원호 #7은 디바이스(102)와 백엔드(104) 사이의 상호작용을 말한다.
원호 #8은 백엔드와 데이터베이스(들)(114) 사이의 상호작용을 말한다.
원호 #9는 백엔드와 소셜 네트워킹 서비스(116) 사이의 상호작용을 말한다.
원호 #10은 백엔드와 콘텐츠 제공자(들)(118) 사이의 상호작용을 말한다.
원호 #11은 백엔드(104)와 추가 기능을 제공하는 엔티티(120) 사이의 상호작용을 말한다.
원호 #12는 백엔드(104)와 기타의 다양한 외부 컴포넌트(122) 사이의 상호작용을 말한다.
원호 #13은 디바이스 제조사(들)(108)과 백엔드(104) 사이의 상호작용을 말한다.
원호 #14는 디바이스(102)와 사용자(110) 사이의 상호작용을 말한다.
원호 #15는 CA(들)(106)과 디바이스 제조사(들)(108) 사이의 상호작용을 말한다.
여기서 설명된 다양한 상호작용은 임의의 공지된 방법(들) 및 프로토콜(들)을 이용하여 발생할 수 있고, 유선, 무선 또는 이들의 임의 조합일 수 있다. 일부 상호작용은, 적어도 부분적으로, 네트워크(101)(예를 들어, 인터넷 등의 패킷-기반의 네트워크)를 통해 발생할 수 있다. 네트워크(101)는 공개 네트워크 또는 사설 네트워크 또는 이들의 임의 조합일 수 있다. 네트워크는 하나 이상의 셀룰러 및/또는 위성 컴포넌트를 포함할 수 있다. 다양한 컴포넌트들이 상호작용을 하는데 이용하는 통신 매체 또는 프로토콜은 시스템을 제한하지 않는다는 점을 이해해야 한다.
백엔드(104)와 다양한 기타의 컴포넌트 또는 엔티티들(예를 들어, CA(106), 소셜 네트워킹 서비스(116), 콘텐츠 제공자(들)(118), 디바이스 제조사(들)(108), 추가 기능을 제공하는 엔티티(120), 및 기타의 다양한 외부 컴포넌트(122)) 사이의 상호작용은 이들 컴포넌트 또는 엔티티들의 애플리케이션 프로그램 인터페이스(API) 또는 기타의 인터페이스를 이용할 수 있다. 일부 실시예에서, 백엔드(104)는 다른 컴포넌트들의 일부 또는 모두와 통합될 수 있다. 백엔드가 기타 임의의 컴포넌트와 통신하는 방식은 시스템(100)을 어떠한 식으로든 제한하고자 하는 것이 아니며, 상이한 통신 모드와 방식들이 본원에서 고려된다는 점을 이해해야 한다. 또한, 백엔드(104)와 기타 임의의 컴포넌트 사이의 통합의 정도(degree)(또는 그것의 결여)는 시스템(100)을 어떠한 식으로든 제한하고자 하는 것이 아니며, 상이한 통합 모드, 방식, 및 정도가 본원에서 고려된다.
또한, 앞서 언급된 바와 같이, 다양한 상호작용과 통신이 임의의 공지된 방법(들) 및 프로토콜(들), 디바이스간 상호작용(도 1에서 원호 #1)을 이용하여 발생할 수 있고, 이용가능한 경우, 바람직하게는 가장 빠르고 가장 저렴한 통신 기술-통상적으로는 로컬 통신 기술(예를 들어, 블루투스 등, 또는 로컬 네트워크(local network) 상의 Wi-Fi)을 이용하고, 바람직하게는 기타의 네트워크를 통한 통신을 피한다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 기타의 상호작용이 시스템에서 가능하며, 도면에서 빠져 있다고 해서 배제되는 것은 아니라는 것을 이해할 것이다. 따라서, 다양한 엔티티들은 기타의 상호작용(도면에는 미도시)을 가질 수도 있고, 또한, 시스템(100)의 모든 구현이 도면에 도시된 모든 상호작용을 필요로 하는 것은 아니라는 점을 이해해야 한다.
사용자 ID
각 사용자(110)는 시스템(100) 내에서 적어도 하나의 고유 사용자 아이덴티티(ID)를 가져야 한다. 사용자의 사용자 ID는 사용자의 소셜 네트워크 ID(예를 들어, 그들의 Facebook ID)에 기초하거나 이로부터 유도될 수 있다. 도 2를 참조하면, 사용자의 사용자 ID는 CA(106)에 의해 발행된 사용자 인증서(175)의 형태로 어서팅될 수 있다(asserted). CA(들)(106)은 하나 이상의 CA(124)(도 6b에 도시) 및 하나 이상의 사용자 CA(126)(도 2에 도시)를 포함할 수 있지만, 디바이스와 사용자 CA들(124, 126)은 동일한 엔티티일 수도 있다는 점을 이해해야 한다. CA(들)(106)이 사용자 CA(126)를 포함한다면, 사용자의 사용자 인증서(175)는 등록 프로세스 등의 동안에 바람직하게는 백엔드에 의해 제공된다.
사용자 인증서(175)는 사용자의 디바이스(174)(예를 들어, 스마트폰, M 기술에 의해 인에이블된 스마트 디바이스 등)에서 이러한 인증서 및 사용자 식별 정보를 위한 장소(176)에 저장될 수 있다.
사용자의 친구
시스템(100) 내에서, 사용자(110)는 시스템(100) 내의 하나 이상의 친구를 가질 수 있다. 시스템(100) 내의 사용자의 친구는 제1 사용자가 시스템(100)을 통해 관계를 구축한 또 다른 사용자(110)이다. 관계는 다양한 방식으로, 예를 들어, 서로의 디바이스(102)를 공유하거나 서로 상호작용함으로써 구축될 수 있다. 사용자는 그 사용자의 친구에게 허용(permission)을 구축할 수 있다. 허용은, 예를 들어, 사용자와 연관된 디바이스(들)(102)의 타입에 의존하고 친구마다 상이할 수 있다.
시스템(100) 내에서 사용자의 또 다른 사용자와의 "친구" 관계는 제한된 범위일 수 있는데, 예를 들어, 허용에 의해 결정될 수 있다. 친구의 범위(scope)는, 우정의 다양한 양태, 예를 들어, 시스템 내에서의 친구 관계 지속기간, 시스템 내에서의 친구의 권한 등을 제한하는데 이용될 수 있다.
시스템(100) 내의 사용자의 친구들은 사용자의 소셜 네트워크 친구들(예를 들어, 사용자의 Facebook 친구들)과는 구분될 수 있지만, 중복이 존재할 수 있다. 예를 들어, 사용자의 사용자 ID가 사용자의 소셜 네트워크(예를 들어, Facebook ID)에 기초하거나 이로부터 유도된다면, 사용자의 소셜 네트워크 친구들은 시스템(100) 내의 사용자의 친구들과 중복될 수 있다.
시스템은 사용자가 다른 사용자와 "친구" 관계를 구축할 수 있는 방식에 의해 어떤 식으로든 제한되지 않는다는 점을 이해해야 한다. 친구의 시스템 개념은 실제의 친구관계 또는 시스템(100) 외부의 기타의 관계와는 어떠한 관련성도 가질 필요가 없고, 시스템 내에서의 친구 관계는 시스템(100) 내에서의 연관 및 결속을 만드는데 이용된다는 점도 이해해야 한다.
디바이스 ID
각 디바이스(102)는 시스템(100) 내에서 고유해야 하는 디바이스 아이덴티티(ID)를 가진다. 디바이스 ID의 생성 및 저장은 이하에서 더 상세히 논의된다.
데이터베이스
도 3a를 참조하면, 백엔드(104)는, 하나 이상의 데이터베이스(들)(114)과 상호작용하는 하나 이상의 애플리케이션을 포함하는, 백엔드 애플리케이션(들)(112)을 포함한다. 데이터베이스(들)(114)는, 각각 디바이스(102)와 사용자(110)에 대한 정보를 저장 및 유지하는, 디바이스 데이터베이스(들)(128) 및 사용자 데이터베이스(들)(130)를 포함한다.
데이터베이스는 임의 종류의 데이터베이스 기술을 이용할 수 있고, 본원에서는 어떠한 특정한 데이터베이스 구현이 설명되거나 요구되는 것은 아니며, 시스템(100)은 데이터베이스 구현에 의해 어떤 식으로든 제한되지 않는다는 점을 이해해야 한다. 일부 경우에, 데이터베이스 구현의 일부 또는 모두는 제3자(third party) 데이터베이스를 이용할 수 있다. 사용자 및 디바이스 데이터베이스(128, 130)는, 통합되거나 복수의 상이한, 가능하게는 분산형 데이터베이스로 구성될 수 있다는 것도 이해해야 한다.
디바이스 데이터베이스(들)(128)
도 3a 및 도 3b에 도시된 바와 같이, 데이터베이스(들)(114)은, 디바이스의 소유자(사용자(110))에 대한 정보, 디바이스의 능력, 디바이스의 이력, 및, 예를 들어, 디바이스의 마지막 알려진 위치, 디바이스의 제조사 등과 같은 기타의 정보를 포함하는, 시스템(100) 내의 각 디바이스(102)에 대한 정보를 (디바이스 데이터베이스(들)(128)에서) 유지할 수 있다. 바람직하게는 디바이스 ID는 디바이스 데이터베이스(128) 내부에 대한 키(또는 인덱스)로서 이용된다. 디바이스(102)가 제조될 때, 디바이스는 (제조시에 특별히 제공되지 않는 한) 소유자를 갖지 않는다. 디바이스의 능력은 그 타입(예를 들어, 스피커 등)을 포함할 수 있다. 용어 "소유" 및 "소유자"는, 본 명세서에서, 사용자에 의한 디바이스의 소유권의 어떠한 법적 개념을 암시하거나 요구하기 위해 사용되는 것은 아니며, 디바이스(102)와 시스템(100) 내의 사용자(110) 사이의 연관 또는 결속을 말한다는 점을 이해해야 한다.
디바이스 데이터베이스(128)는 각 디바이스에 대한 디바이스 코포라(device corpora)를 포함할 수 있다. 이하에서 더 상세히 설명되는 바와 같이, 디바이스의 코포라는 디바이스에 저장된 코포라에 대응할 수 있고, 디바이스에 의해 또는 디바이스의 사용자에 의해 이용될 수 있다.
사용자 데이터베이스(130)
바람직하게는 사용자 ID는 사용자 데이터베이스(130)에 대한 주 데이터베이스 키(primary database key)로서 역할한다. 사용자 데이터베이스(130)는 바람직하게는 (도 3c를 참조하여) 다음 중 하나 이상을 포함하는 소정의 정보를 각 사용자(110)와 연관시킨다:
● 사용자에 대한 정보를 기술하는 사용자 프로파일. 사용자 프로파일은 사용자의 소셜 네트워크 데이터(예를 들어, 사용자의 Facebook 프로파일)에 링크되거나 이로부터 정보를 얻을 수 있다. 사용자 프로파일은 또한, 예를 들어 RDIO 등의, 사용자가 연관되어 있는(즉, 계정을 갖고 있는) 콘텐츠 제공자에 대한 정보를 포함할 수 있다.
● 사용자 디바이스(102) 및 선택사항으로서 이들 디바이스들에 대한 정보(예를 들어, 디바이스의 능력). 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 사용자 데이터베이스(130) 내의 일부 정보가 디바이스 데이터베이스(128)로부터 얻어질 수 있고, 그 반대일 수 있다는 것을 이해할 것이다. 예를 들어, 사용자 데이터베이스(130)가 각 사용자의 디바이스에 대한 디바이스 식별자를 저장한다면, 이들 디바이스 식별자들은 디바이스 데이터베이스(128)로부터 대응하는 디바이스에 대한 디바이스-특정적 정보를 얻는데 이용될 수 있다.
● 시스템(100) 내에서의 사용자의 "친구" 및 가능하게는 이들 친구들과 연관된 퍼미션(permission). 바람직한 구현에서, 시스템 내에서의 사용자의 "친구"는 다른 사용자(110)이므로, 각 사용자의 친구에 대한 정보는 사용자 데이터베이스(130) 내에 0개 이상의 사용자 ID의 목록으로서 저장될 수 있다. 사용자들은 각 친구에 대한 맞춤형 퍼미션을 설정할 수 있을 것이다. 일부 실시예에서, 사용자는 친구의 클래스 또는 그룹 또는 타입을 정의 또는 이용할 수 있고 클래스 또는 그룹 또는 타입에 기초하여 퍼미션을 할당할 수 있을 것이다. 이런 방식으로, 사용자는 템플릿 등을 이용하여 한 명 이상의 사용자에 대한 퍼미션을 신속하게 설정 또는 변경할 수 있을 것이다. 시스템은 사용자가 친구를 선택하거나 친구에 대한 퍼미션을 설정하는 방식에 의해 제한되지 않는다는 점을 이해해야 한다. 사용자는 다른 사용자를 친구에서 제거할 수 있다.
● 바람직하게는, 디바이스(102), 친구(즉, 하나 이상의 디바이스나 친구를 이력 검색의 키로서 이용하여), 및 시간 중 하나 이상별로 저장 또는 검색가능한 사용자의 이력. 디바이스 이력은 사용자의 디바이스들 각각에 관련된 타임-스탬프형(time-stamped) 이벤트의 시퀀스일 수 있다. 예를 들어, 특정 디바이스(102)가 스피커이면, 그 디바이스의 이력은 그 스피커를 통해 재생된 것들의 타임-스탬프형 목록일 수 있다. 친구에 관련된 사용자의 이력은 사용자의 디바이스가 사용자의 친구의 디바이스와 상호작용하는(또는 이에 의해 이용되는)(및 그 반대의 경우도 마찬가지) 시간 및 위치를 포함할 수 있다. 검색될 수 있는 이력 상세사항의 종류에 대해 본원에서 주어진 예는 어떤 식으로든 본 설명의 범위를 제한하고자 함이 아니며, 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 기타의 정보 및/또는 요인들이 사용자의 이력을 검색하는데 이용될 수 있다는 것을 이해할 것이다.
● (사용자 CA(126)에 의해 발생된 것을 포함하는) 사용자의 ID 및 인증서.
● (이하에서 더 상세히 설명되는) 다양한 디바이스 인터페이스 메커니즘에 관한 사용자 코포라. 사용자 코포라는 바람직하게는 로컬 코포라(local corpora)와 확장된 코포라(extended corpora)를 포함한다. 이하에서 더 상세히 설명되는 바와 같이, 사용자의 로컬 코포라는 하나 이상의 디바이스 상의 사용자의 코포라에 대응할 수 있고, 사용자의 제어 하에 있는 경우에 디바이스들에 의해 이용될 수 있다. 사용자의 확장된 코포라는 일부 또는 모든 디바이스(102)의 능력을 넘어 확장될 수 있고, 추가 기능(120)에 의해 이용될 수 있는 사용자의 코포라에 대응한다.
● 바람직하게는 사용자의 디바이스에 대한 구성 상세사항 및 다른(예를 들어, 새로운) 디바이스를 구성하는데 이용될 수 있는 정보를 포함하는 구성 정보. 구성 정보는, 디바이스가 네트워크에 접속하는데 필요할 수 있는 패스워드 및 기타의 정보를 포함하는, 다양한 위치의 사용자의 무선 네트워크 설정에 대한 정보를 포함할 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 기타의 정보, 연관 및 관계가 디바이스 및 사용자 데이터베이스(128, 130)에 저장될 수 있다는 것을 이해할 것이다.
디바이스
각 디바이스(102)는 각 디바이스와 연관된 특정한 디바이스-특정적 기능/컴포넌트를 가진다. 예를 들어, 디바이스(102)가 스피커(또는 카메라 또는 전화 등)이면, 디바이스-특정적 기능/컴포넌트는 스피커(또는 카메라 또는 전화 등)로서 디바이스를 동작시키는데 이용되는 기능/컴포넌트를 포함할 것이다. 이제 도 4a를 참조하면, 디바이스(102)는, 디바이스의 디바이스-특정적 기능/컴포넌트를 지원하는 메커니즘(132)을 포함한다.
본원에서 사용될 때, 용어 "메커니즘"은 하드웨어 단독, 또는 소프트웨어와 조합한 하드웨어를 의미하며, 펌웨어를 포함한다.
디바이스(102)는 또한, 시스템(100) 내의 기능을 지원 및 구현하는데 이용되는 다양한 M 시스템 메커니즘/데이터(134)를 포함한다. 시스템 메커니즘/데이터(134)는 디바이스의 디바이스-특정적 기능(132)과 (136에서) 상호작용할 수 있지만, 시스템 메커니즘/데이터(134)는 바람직하게는 디바이스-특정적 기능(132)과는 구분된다.
디바이스(102)는 바람직하게는 시스템의 기능의 양태들을 구현하기 위해 시스템 메커니즘(134)에 의해 이용될 수 있는 하나 이상의 센서(138)를 포함한다. 본원에서 사용될 때, "센서"는 물리적 특성 또는 자극(예를 들어, 열, 빛, 음향, 압력, 자기, 움직임, 터치, 캐패시턴스)을 검출 및/또는 측정할 수 있는 임의의 메커니즘 또는 디바이스를 의미한다. 센서는 바람직하게는 자신이 검출/측정하는 특성 또는 자극의 표시를 (예를 들어, 전기 신호로서) 제공한다. 센서는 자신이 검출/측정하는 물리적 속성 또는 자극을 기록, 표시, 또는 달리 이에 응답할 수 있다. 센서는, 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 센서는 단독형 디바이스 또는 칩으로서 제공되거나 다른 디바이스(또는 센서) 또는 칩에 통합될 수 있다. 특정한 센서(138)는, 적어도 부분적으로, 전문화된 칩 또는 회로 등을 이용하여 구현될 수 있다. 본 기술분야의 통상의 기술자는, 본 명세서를 읽을 시에, 시스템은 센서가 구현되거나 통합되는 방식에 의해 어떠한 식으로든 제한되지 않는다는 것을 인식하고 이해할 것이다. 특정한 센서는 하나 보다 많은 종류의 물리적 속성 또는 자극을 검출 및/또는 측정할 수 있다는 것을 또한 이해해야 한다.
도 4aa을 참조하면, 센서(138)는, 예를 들어, 하나 이상의 카메라, 마이크로폰, 모션(motion) 센서(외부 모션 및/또는 디바이스 모션), 가속도계, 나침반, 위치 지정 시스템(LPS; location positioning system) 등을 포함할 수 있다. 본 명세서에서 사용될 때, LPS란 일반적으로, 디바이스의 위치를 판정하는데 이용될 수 있는 임의의 위치 지정 시스템을 말하며, 미국의 GPS(Global Positioning System), GLONASS(Russian GLObal NAvigation Satellite System), 유럽 연합 갈릴레오 위치지정 시스템, 중국 콤파스 네비게이션 시스템, 및 인도 지역 네비게이션 위성 시스템을 포함한다. LPS는 또한, 예를 들어, Wi-Fi 및/또는 셀룰러 전화 시스템을 이용하여, 위치 데이터 뿐만 아니라 보조형(assisted) 및 강화형(augmented) 지정 시스템을 제공할 수 있는 Wi-Fi 및/또는 전화 시스템(들)을 포함한다. 오직 하나의 카메라가 얼굴 및 제스처 처리에 이용될 수도 있지만, 필요하다면, 하나보다 많은 카메라가 3차원(3D) 처리를 위해 허용된다.
센서(138)는, (140에서) 각각의 센서에 대해 제공되는 표준 인터페이스를 통해 시스템 메커니즘(134)과 상호작용할 수 있다. 모든 디바이스(102)가 모든 종류의 센서(138)를 가질 필요는 없으며, 상이한 종류의 디바이스(또는 동일한 종류의 디바이스의 상이한 구현)는 상이한 센서 또는 센서 종류를 가질 수 있다는 점을 이해해야 한다.
디바이스(102)는 바람직하게는 시스템의 기능의 양태들을 구현하기 위해 (144에서) 시스템 메커니즘(134)에 의해 이용될 수 있는 하나 이상의 통신 메커니즘(142)을 포함한다. 도 4ab를 참조하여, 통신 메커니즘(142)은, 예를 들어, 로컬 통신(예를 들어, BLE(Bluetooth Low Energy)를 포함하는 블루투스, ZigBee 등)을 위한 메커니즘, Wi-Fi 통신(예를 들어, 802.11 등)을 위한 메커니즘, 셀룰러 통신(예를 들어, 모뎀 또는 셀룰러 전화망을 이용한 기타의 디바이스 등)을 위한 메커니즘, 및 유선 통신(예를 들어, Ethernet 등)을 위한 메커니즘 중 하나 이상을 포함할 수 있다. 통신 메커니즘(142)은 프로토콜-특정적 칩 등으로 구현될 수 있다. 모든 디바이스(102)가 모든 종류의 통신 메커니즘(142)을 가질 필요는 없으며, 상이한 종류 또는 디바이스(또는 동일한 종류의 디바이스의 상이한 구현)는 상이한 센서 또는 통신 메커니즘의 종류를 가질 수 있다는 점을 이해해야 한다. 그러나, 최소한, 각 디바이스(102)는, 적어도 일부 시간에서, 어떤 방식으로 백엔드(104)와 (셀룰러/전화망에 의해, Wi-Fi에 의해, 유선으로, 또는 일부 다른 방식으로든) 통신할 수 있어야 한다(도 1의 원호 #7). 또한, 바람직하게는 각 디바이스(102)는 적어도 일부 시간에서, 시스템(100) 내의 다른 디바이스(102)와의 통신을 허용하는 적어도 하나의 통신 메커니즘을 가진다. 각각의 디바이스는 또한, 그 다양한 통신 메커니즘(들)을 위한 요구된/적절한 커넥터 및/또는 안테나(들)을 포함한다. 이들 커넥터 및/또는 안테나(들)은, 특히 통신 메커니즘이 전문화된 칩 또는 회로로 제공되는 경우, 다양한 통신 메커니즘에 포함될 수 있다.
(임의의 요구되는 센서(138)를 포함하는) 시스템 메커니즘(134)은 별도의 보드 또는 칩셋으로서 디바이스(102) 내에 통합되거나 (서로 접속시키는 점선의 타원형으로 도시된 바와 같이) 디바이스-특정적 기능을 구현하는데 이용되는 디바이스의 메커니즘과 컴포넌트를 공유할 수 있다. 예를 들어, 디바이스-특정적 기능이 마이크로폰을 요구한다면, 그 마이크로폰은 센서(138)로서 시스템 메커니즘(134)과 공유(또는 시스템 메커니즘(134)에 의해 이용)될 수 있다. 유사하게, 통신 메커니즘의 적어도 일부는 (서로 접속시키는 점선의 타원형으로 도시된 바와 같이) 시스템 메커니즘(134)과 디바이스-특정적 기능(132) 사이에서 공유될 수 있다. 그러나, 시스템 메커니즘(134), 센서(138), 및 통신 메커니즘(142)은 디바이스-특정적 메커니즘과는 독립적으로 동작하거나 제어될 필요가 있고, 이 필요성은 일부 구현에서는 컴포넌트의 공유보다 우선하거나 공유를 방지할 수 있다는 것을 이해해야한다.
디바이스(102)는 (이하에서 더 상세히 설명되는) 컴퓨터 시스템(146)을 포함할 수 있다. 컴퓨터 시스템(146)은 (148에서) 시스템 메커니즘(134)과 상호작용할 수 있고 이들 메커니즘의 양태들을 구현할 수 있다. 도 4a의 도면에서는 별개의 컴포넌트들로 도시되어 있지만, 컴퓨터 시스템(146)의 일부 또는 전부는 (서로 접속시키는 점선 타원형으로 도시된 바와 같이) 시스템 메커니즘/데이터(134)와 공유될 수 있고 그 일부일 수 있다는 것을 이해해야 한다. 유사하게, 컴퓨터 시스템(146)의 적어도 일부는 (서로 접속시키는 점선 타원형으로 도시된 바와 같이) 디바이스(102)의 디바이스-특정적 기능(132)과 중첩할 수 있다.
디바이스의 디바이스 아이덴티티(ID) 및 기타의 아이덴티티 및 인증서 정보는 (150에서) 시스템 메커니즘/데이터(134)에 저장될 수 있다.
각 디바이스(102)는 바람직하게는 부트스트랩핑(bootstrapping)/준비(provisioning) 메커니즘(152)과 다양한 운용 메커니즘(154)(양쪽 모두 이하에서 상세히 설명됨)을 포함한다. 다양한 운용 메커니즘(154)은 디바이스 상에 대응하는 운용 스토리지(155)를 가진다. 운용 스토리지(155)는 다양한 운용 메커니즘에 의해 이용되는 데이터를 저장할 수 있고, 지속적(persistent) 및/또는 임시 스토리지에 이용될 수 있다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 운용 스토리지(155)의 일부 또는 전부가 디바이스 상의 다른 스토리지와 통합될 수 있고, 운용 스토리지(155)는 본 상세한 설명을 보조하기 위해 도면에서는 별도의 컴포넌트로서 도시되어 있다는 것을 인식하고 이해할 것이다.
각 디바이스(102)는, 시스템 메커니즘(들)(134), 컴퓨터 시스템(146), 센서(138), 통신(142) 및 디바이스 특정적 기능(132)을 포함하는, 디바이스에 전력을 공급할 수 있는 적어도 하나의 전력 시스템(157)을 포함한다. 전력 시스템(157)은 컴포넌트들 중 일부 또는 전부에 대한 별개의 시스템을 포함하고, 배터리 전원을 단독으로 또는 외부 전원과 연계하여 포함할 수 있다. 바람직하게는, 시스템 메커니즘은 디바이스 특정적 기능으로부터 별도의 전원(예를 들어, 배터리)을 가진다. 외부 전원이 이용될 때(예를 들어, 어댑터를 통한 A/C 전원), 시스템의 모든 컴포넌트들은 외부 전원에 접속되어 있지 않을 경우에 이용하기 위한 별개의 내부 전원 시스템을 갖고 있더라도 외부 전원을 이용해야 한다. 그러나, 시스템은 전원이 컴포넌트에 공급되는 방식에 의해 제한되지 않는다는 점을 이해해야 한다.
운용 메커니즘
도 4a 내지 도 4c를 참조하여, 디바이스의 운용 메커니즘(154)은 이하의 메커니즘들 중 일부 또는 전부를 포함할 수 있다:
● 디바이스-대-디바이스 상호작용과 통신(이것은 도 1에서 원호 #1로 도시된 상호작용에 대응한다)을 지원하는 메커니즘(156). 디바이스-대-디바이스 상호작용 메커니즘(156)은 대응하는 디바이스-대-디바이스 스토리지(169)(도 4c)를 갖고 그것을 이용할 수 있다.
● 디바이스(102)의 명령 및/또는 제어를 위한 메커니즘(158). 명령 및/또는 제어 메커니즘(158)은 대응하는 명령 및/또는 제어 스토리지(159)(도 4c)를 갖고 그것을 이용할 수 있다.
● 디바이스-대-백엔드 상호작용과 통신(이것은 도 1에서 원호 #7로 도시된 상호작용에 대응한다)을 지원하는 메커니즘(160). 디바이스-대-백엔드 메커니즘(160)은 대응하는 디바이스-대-백엔드 스토리지(161)(도 4c)를 갖고 이용할 수 있다.
● 시스템(100) 내의 디바이스를 작동하고 디바이스의 다른 메커니즘 및 기능과의 (바람직하게는 인간 상호작용을 포함하는) 상호작용을 지원하는데 이용되는 인터페이스 메커니즘(162). 인터페이스 메커니즘(162)은 대응하는 인터페이스 메커니즘 스토리지(163)(도 4c)를 갖고 그것을 이용할 수 있다.
● 대응하는 스토리지(165)(도 4c)를 갖고 그것을 이용할 수 있는 시스템(100) 내의 디바이스를 작동시키는데 이용되는 기타의 운용 메커니즘(164).
인터페이스 메커니즘(162)은 다음 중 하나 이상을 포함할 수 있다:
○ 사용자의 제스처(예를 들어, 제스처 명령 등)를 이용하는 동작 및/또는 기능 피처를 구현하기 위해 운용 메커니즘(154)에 의해 이용될 수 있는 제스처 메커니즘(166). 제스처 메커니즘(166)은 제스처 스토리지(167)를 갖고 그것을 이용할 수 있다. 제스처 메커니즘(166)은 바람직하게는 하나 이상의 제스처 검출 메커니즘(168) 및 하나 이상의 제스처 인식 메커니즘(170)을 포함하고, 제스처 스토리지(167)는 바람직하게는 다양한 제스처 메커니즘에 의한 이용을 위한 연관된 제스처 코포라(172)를 포함한다. 제스처 코퍼스(복수의 "코포라")란 제스처 메커니즘(들)에 의해 제스처를 검출 및/또는 인식하는데 이용가능한 제스처 샘플들 또는 제스처 집합을 말한다. 바람직한 시스템에서, 제스처 검출 및/또는 인식 메커니즘(168, 170)은 (사용자일 수도 있는) 한 명 이상의 사람의 제스처를 검출 및/또는 인식하도록 훈련 및 구성될 수 있고, 연관된 제스처 코포라는 이 훈련에 기초하여 수정될 수 있다. 제스처 메커니즘(들)(166)은, 예를 들어, 카메라 센서(들)을 포함하는 하나 이상의 센서(138)를 이용할 수 있다.
○ (예를 들어, 음성 명령 등을 위해) 인간(예를 들어, 사용자)의 음성을 이용하는 동작 및/또는 기능 피처를 구현하기 위해 운용 메커니즘(154)에 의해 이용될 수 있는 음성/스피치 메커니즘(174). 음성/스피치 메커니즘(174)은 음성/스피치 스토리지(175)를 갖고 그것을 이용할 수 있다. 음성/스피치 메커니즘(174)은 바람직하게는 하나 이상의 음성/스피치 검출 메커니즘(176) 및/또는 음성/스피치 인식 메커니즘(178)을 포함하고, 음성/스피치 스토리지(175)는 바람직하게는 다양한 음성/스피치 메커니즘에 의한 이용을 위한 연관된 코포라(180)를 포함한다. 음성/스피치 코퍼스란 음성/스피치 메커니즘(들)에 의해 음성/스피치를 검출 및/또는 인식하는데 이용가능한 구문(phrase) 샘플들 또는 단어 집합을 말한다. 바람직한 시스템에서, 음성/스피치 인식 메커니즘은 한 명 이상의 사람(예를 들어, 사용자)의 음성/스피치를 인식하도록 훈련 및 구성될 수 있고, 연관된 스피치 코포라는 이 훈련에 기초하여 수정될 수 있다. 음성/스피치 메커니즘(174)은, 예를 들어, 마이크로폰 센서(들)을 포함하는, 하나 이상의 센서(138)를 이용할 수 있다.
○ 사람의 얼굴(faces) 및/또는 시선(gazes)을 이용하는 동작 및/또는 기능 피처를 구현하기 위해 운용 메커니즘(154)에 의해 이용될 수 있는 얼굴/시선 메커니즘(182). 얼굴/시선 메커니즘(들)(182)은 얼굴/시선 스토리지(183)를 이용할 수 있다. 얼굴/시선 메커니즘(들)(182)은 얼굴/시선 검출 메커니즘(들)(184) 및/또는 얼굴/시선 인식 메커니즘(들)(186), 및/또는 얼굴 움직임 검출 메커니즘(들)(187)을 포함할 수 있고, 얼굴/시선 스토리지(183)는 바람직하게는 얼굴/시선 인식/검출 메커니즘(들)(182)에 의한 이용을 위한 연관된 얼굴/시선 코포라(188)를 포함한다. 얼굴/시선 코퍼스란 얼굴/시선 메커니즘(들)에 의해 얼굴 및/또는 시선을 검출 및/또는 인식하는데 이용가능한 얼굴 및/또는 시선 샘플들의 집합을 말한다. 바람직한 시스템에서, 얼굴/시선 인식/검출 메커니즘(182)은 하나 이상의 얼굴을 인식하도록 훈련 및 구성될 수 있고, 연관된 얼굴/시선 코포라(182)는 이 훈련에 기초하여 수정될 수 있다. 얼굴 움직임 검출 메커니즘(들)(187)은 얼굴의 부분들의 움직임, 예를 들어, 입, 눈 등의 움직임을 검출할 수 있고, 예를 들어, 사람이 말을 하고 있는 중이라고 확정하는데 이용될 수 있다. 얼굴/시선 메커니즘(들)(182)은, 예를 들어, 카메라 센서(들)을 포함하는 센서(138)를 이용할 수 있다.
○ 다른 타입의 사용자의 상호작용(예를 들어, 터치, 타이핑, 디바이스 움직임 등)을 이용하는 동작 및/또는 기능 피처를 구현하기 위해 운용 메커니즘(154)에 의해 이용될 수 있는 기타의 인터페이스 메커니즘(190). 기타의 인터페이스 메커니즘(190)은 기타의 인터페이스 메커니즘 스토리지(191)를 이용할 수 있다. 기타의 인터페이스 메커니즘(들)(190)은 센서(138)를 이용할 수 있다.
스피치, 제스처, 및/또는 얼굴/시선 인식/검출을 위한 코포라가 상기에서 언급되었지만, 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 다른 메커니즘들, 특히, 인터페이스 메커니즘(162)은 연관된 코포라를 가질 수 있고, 또한, 인간과의 상호작용, 다른 디바이스(102)와의 상호작용, 백엔드(104)와의 상호작용, 및 사용자(110)와의 상호작용을 포함한, 디바이스가 내부에서(또는 시스템(100)의 외부에서) 갖는 상호작용에 기초하여 학습 또는 구성될 수 있다는 것을 인식 또는 이해할 것이다. 일반적으로, 특정한 인터페이스 메커니즘을 위한 코퍼스란 그 특정한 시선 메커니즘이 기능하고 수행하는데 이용가능한 샘플 집합을 말한다. 따라서, 예를 들어, 도 4c에 도시된 바와 같이, 기타의 인터페이스 메커니즘(190)은 연관된 코포라(192)를 포함할 수 있다.
달리 언급되지 않는 한, 본원에서 사용되는 경우, 단어 "코포라"란 단일 "코퍼스" 및/또는 복수의 코포라를 말한다. 따라서, 예를 들어, 디바이스가 일부 피처에 대한 코포라를 갖는 것으로 기술되는 경우, 이것은 그 디바이스가 그 피처에 대해 적어도 하나의 코퍼스를 갖는 것으로, 또는 그 디바이스가 그 피처에 대해 단일의 코퍼스 또는 그 피처에 대해 복수의 코포라를 갖는 것으로 읽혀져야 한다.
일부 바람직한 실시예에서, 사용자는 그들의 디바이스(들)을 특정 구문 및/또는 제스처 패턴을 인식하도록 훈련시킬 수 있다. 이들 시그너쳐(signature) 구문/제스처 패턴들 중 하나 이상은 예를 들어 디바이스(들)에 대한 명령들의 일부 또는 전부를 트리거하는데 이용(및 요구)될 수 있다. 디바이스는 임의의 특정한 사용자 개입 또는 요청없이 학습(및 그에 따라 훈련)될 수 있고, 바람직하게는, 각 디바이스는 그렇게 하도록 특별히 요청받지 않고도 사용자 상호작용을 인식하는 것을 학습한다는 것을 이해해야 한다.
디바이스(102)는 또한 바람직하게는 (이하에서 더 상세히 설명되는) 하트비트(HB; heartbeat) 메커니즘(들)(194)을 포함한다. HB 메커니즘(들)은 디바이스-대-디바이스 메커니즘(들)(156) 및 디바이스-대-백엔드 메커니즘(들)(158)을 포함하는 다른 운용 메커니즘(154)과 상호작용할 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 특정한 디바이스는 인터페이스 메커니즘(162)의 일부만을 이용할 수도 있다는 것을 이해할 것이다. 이하에서 더 상세히 설명되는 바와 같이, 다양한 인터페이스 메커니즘(162)이 조합하여 이용될 수 있다는 것도 이해해야 한다.
바람직하게는, 디바이스(102) 상의 각 운용 메커니즘(154)은 임의의 외부 상호작용없이(즉, 기타 임의의 디바이스(102) 또는 백엔드(104)와의 상호작용없이) 디바이스 상에서 동작할 수 있다. 그러나, 다양한 운용 메커니즘(154)은, 예를 들어, 백엔드(104) 또는 하나 이상의 다른 디바이스(102)를 통해, 제공된 추가 기능(120)을 작동 또는 이용할(또는 이에 의해 강화될) 수 있다는 것을 이해해야 한다. 따라서, 예를 들어, 다양한 음성/스피치 메커니즘(174)은 어떠한 외부 상호작용도 없이 이용되는 경우, 음성 명령 등의 제한된 이용을 지원할 수 있다. 이들 음성 명령은, 예를 들어, 다양한 메커니즘들의 능력에 의해 및 디바이스의 (예를 들어, 메모리 및 계산 용량 등의) 용량에 의해 제한될 수 있다. 시스템(100)은 추가 기능(120)에 의해 강화되는 경우, 확장된 음성 명령과 상호작용을 디바이스에 제공할 수 있다. 제한된 로컬 음성/스피치 상호작용은 디바이스 상의 음성/스피치 스토리지(175)에 저장된 음성/스피치 코포라(180)에서 반영될 것이다. 음성 상호작용의 경우, 예를 들어, 디바이스(102)는, 인식할 수 있고 디바이스의 양태를 제어하는데 이용될 수 있는 (예를 들어, 음성/스피치 스토리지(175) 내에 음성/스피치 코포라(180)로서 저장된) 단어들의 제한된 코퍼스를 가질 수 있다. 추가 기능(120)을 이용하는 것은 잠재적으로 훨씬 큰 코퍼스 뿐만 아니라 더 복잡한 지시(instructions)/질의(queries)를 파싱하는 능력에 대한 디바이스 액세스를 제공한다. 예를 들어, 디바이스(102)가 스피커이면, 디바이스(102) 상의 코퍼스는 음성/스피치 메커니즘(174)와 함께 "더 크게 재생", "더 부드럽게" 등의 명령/지시를 지원할 수 있는 반면, 추가 기능(120)에 의해 제공되는 외부 코퍼스는 예를 들어 "내가 어제밤 들었던 노래를 재생" 등의 더 복잡한 지시를 지원할 수 있다. 이 후자의 요청은 문법적으로 더 복잡하고(그에 따라 가능하게는 디바이스가 제공할 수 있는 것보다 많은 스피치 인식 능력을 요구함), 또한 (예를 들어, 데이터베이스(들)(114) 내의) 외부 데이터에 대한 액세스를 요구할 수 있다.
인터페이스 메커니즘(162)은 디바이스의 사용자들에 관해 그리고 사용자들이 어떻게 디바이스와 상호작용하는지에 관해 학습할 수 있게 하는 학습 메커니즘을 제공받거나 포함할 수 있다. 예를 들어, 음성/스피치 메커니즘(174)은 (바람직하게는 디바이스와 연관된 사용자(110)에 대응하는 사람을 포함하는) 특정한 사람의 음성을 인식하도록 학습할 수 있다.
디바이스는 바람직하게는 초기에는 그 다양한 인터페이스 메커니즘(162)에 대한 일반 코포라(generic corpora)로 구성된다. 디바이스의 인터페이스 메커니즘(162)들은 학습하기 때문에, 이들은 다양한 코포라를 업데이트하여 학습된 것을 반영할 수 있다. 예를 들어, 디바이스는 특정한 사람의 음성을 인식하는 것을 학습하기 때문에, 디바이스는 그 사람에 대한 음성/스피치 코포라를 업데이트할 수 있다. 바람직하게는 디바이스는 초기 일반 코포라의 사본을 유지하고 및/또는 원본 코포라는 디바이스와는 별개의 소정 위치에(예를 들어, "클라우드"에) 보관될 수 있다.
디바이스는 상이한 사용자 또는 사람마다 상이한 코포라를 가질 수 있다. 그러나, 각 디바이스는 사용자와 연관되므로, 바람직하게는 디바이스 상의 각 인터페이스 메커니즘은 그 사용자와 연관된 적어도 하나의 코퍼스를 가진다는 것을 이해해야 한다. 디바이스를 이용하는 다른 사람들은 그들 자신의 연관된 코포라를 가질 수 있다.
상호작용에 대한 모니터링
도 4i에 도시된 바와 같이, (S402에서) 디바이스(102)는 가능한 상호작용을 모니터링한다. (S402에서) 디바이스는 지속적으로 모니터링하거나 또는 특정한 시간에서 및/또는 특정한 조건하에서 모니터링할 수 있다. 이 모니터링은 바람직하게는 디바이스 센서(138)들(예를 들어, 디바이스 카메라(들), 마이크로폰(들) 등) 중 하나 이상을 이용한다. 일부 상호작용을 놓치는 것을 피하기 위하여, (S404에서) 디바이스는 바람직하게는 잠재적 상호작용을 버퍼링 또는 저장한다. 이들 버퍼링된 상호작용은, 필요하다면, 다양한 인터페이스 메커니즘(162)에 의한 후속된 이용을 위해 임의의 알려진 적절한 방식으로 저장될 수 있다. 예를 들어, 디바이스 마이크로폰(들)에 의해 검출된 음향은, 필요하다면, 음성/스피치 메커니즘(들)(174)에 의한 후속된 이용을 위해 적절한 방식으로 버퍼링될 수 있다. 유사하게, 디바이스 카메라(들)에 의해 검출된 외부 움직임은, 필요하다면, 디바이스의 제스처(들)(166)에 의한 후속된 이용을 위해 적합한 방식으로 버퍼링될 수 있고, 디바이스에 의해 검출된 이미지는, 필요하다면, 디바이스 얼굴/시선 메커니즘(들)(182) 및/또는 기타의 메커니즘(들)(190)에 의한 이용을 위해 적합한 방식으로 저장될 수 있다. 모든 센서 입력이 모든 디바이스 또는 디바이스 타입에 대해 버퍼링될 수 있는 것은 아니라는 점을 이해해야 한다. 그러나, 센서 정보를 버퍼링하는 것은 디바이스가 그 다양한 인터페이스 메커니즘(들)(162)을 통해 더 정확한 상호작용을 제공하는 것을 허용할 수 있는데, 그 이유는, 오직 디바이스가, 상호작용이 시작된 후 소정 시간 그 상호작용이 발생했다는 것을 깨닫는 경우에도 그 상호작용을 재구성할 수 있기 때문이라는 것도 이해해야 한다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, (S404에서) 버퍼링된 정보의 양은 정보의 종류(예를 들어, 음성, 이미지, 움직임 이력 등)에 의존한다는 것을 인식하고 이해할 것이다. 유사하게, 본 기술 분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 정보가 상이한 시간 기간 동안 버퍼링될 수 있다는 것을 인식하고 이해할 것이다. 예를 들어, 디바이스 마이크로폰(들)에 의해 검출된 음향은 30초간 버퍼링될 수 있는 반면, 카메라(들)에 의해 검출된 이미지는 15초간 버퍼링될 수 있다. 버퍼링은 임의의 기술, 예를 들어, 원형(circular) 또는 랩어라운드(wrap-around) 버퍼링을 이용할 수 있고, 시스템은 이용되는 버퍼링의 종류 또는 버퍼링의 구현에 의해 제한되지 않는다. 상이한 종류의 정보에 대해 상이한 버퍼링 기술이 이용될 수 있다. 디바이스(102)는 버퍼링된 정보의 요구되는 양을 저장하기에 충분한 메모리를 가져야 한다.
(S404에서) 가능한 상호작용(들)을 버퍼링하면, (S406에서) 디바이스는 가능한 (버퍼링된) 상호작용이 실제의 상호작용인지를 판정하려고 한다. 디바이스가 (S406에서) 가능한 상호작용이 실제의 상호작용이라고(일 수 있다고) 판정하면, 디바이스는 실제의 상호작용을 처리하도록 계속할 수 있다(S408). (S408에서의) 실제의 상호작용의 처리는 도 4i를 참조하여 전술된 코포라 선택 프로세스를 이용할 수 있다.
디바이스에서 진행 중인 실제의 상호작용이 있는지(있을 수 있는지)에 대한 (S406에서의) 판정은 하나 이상의 트리거를 이용할 수 있다. 예를 들어, 어떤 사람이 디바이스에게 음성 명령을 주기 시작하면, 그 디바이스는 자신이 검출하고 있는 음향이 음성 명령에 대응하는지를 알지 못할 수 있다. 그러나, 사람이 말을 하면서 (시선 검출을 이용하여 검출될 수 있는 바와 같이) 그 디바이스를 또한 보고 있다면, 그 디바이스는, 실제의 상호작용을 처리하는 트리거로서, 검출된 스피치와 연계하여 검출된 시선에 의존할 수 있다.
디바이스(102)는 많은 상이한 종류의 환경에서 동작할 수 있고, 환경 요인 및 연관된 노이즈는 상호작용 검출 및 처리에 영향을 미칠 수 있다. 본원에서 사용되는 경우, 임의의 종류의 정보나 신호에 관한 용어 "노이즈"란 그 정보나 신호의 처리를 열화시킬 수 있는(예를 들어, 신호 내의 정보의 대응하는 검출 및/또는 인식을 열화시킬 수 있는) 정보 및/또는 신호를 말한다. 예를 들어, 공조기 또는 팬의 배경 음향은 음성/스피치 인식을 간섭 또는 열화시킬 수 있고; 또는 계속 깜빡이는 빛은 얼굴이나 제스처 메커니즘을 간섭하거나 열화시킬 수 있다. 따라서, 디바이스가 처리 이전에 노이즈를 필터링 또는 제거하는 것이 유용하다. 이와 관련하여, 기타의 메커니즘(들)(164)은 다양한 센서에 의해 검출된 입력으로부터 노이즈를 제거하는 하나 이상의 노이즈 제거 필터링/클리닝(cleaning) 메커니즘을 포함할 수 있다. 하나의 이러한 메커니즘은 디바이스 마이크로폰(들)에 의해 검출된(및 버퍼링된) 음향으로부터 (예를 들어, 공조기 및 팬으로부터의) 주변 음향(ambient sound)을 제거하는 음향-노이즈 상쇄(cancellation)이다. 상이한 및/또는 기타의 노이즈 제거 필터가 이용될 수 있고, 이들 필터 메커니즘은 디바이스가 위치되는 환경에 적응하고 이로부터 학습할 수 있다.
필터링/클리닝 메커니즘이 이용되는 경우, 바람직하게는 모든 버퍼링된 정보는 필터링/클리닝된다.
도 4j의 흐름도는 (도 4i의 S406에서) 상호작용이 발생하고 있는지를 판정하기 위해 디바이스(102)가 이용할 수 있는 예시적 프로세스를 기술한다. (도 4i의 S402에서) 다양한 센서(138)가 모니터링되고, 실제의 상호작용이 검출되고 센서 출력이 필요한 경우 (도 4i의 S404에서) 센서의 출력은 버퍼링된다는 점을 상기한다. 다양한 센서(138)로부터의 출력은 다양한 인터페이스 메커니즘(162)에 (직접 또는 버퍼를 통해) 제공되고, 그 각각은 상호작용이 발생하고 있는지의 여부를 판정하려고 시도한다. 예를 들어, (S410에서) 제스처 검출 메커니즘(들)(168)은 그들이 카메라 센서(들)을 통해 검출하고 있는 임의의 움직임이 제스처에 대응하는지를 판정하려고 시도한다. (S412에서) 얼굴/시선 검출 메커니즘(들)(184)은 그들이 카메라 센서(들)을 통해 검출하고 있는 임의의 이미지가 적어도 하나의 얼굴에 대응하는지를 판정하려고 시도한다. (S414에서) 음성/스피치 검출 메커니즘(들)(176)은 그들이 마이크로폰 센서(들)을 통해 검출하고 있는 임의의 음향이 스피치에 대응하는지를 판정하려고 시도한다. (S416에서) 기타의 메커니즘(들)(190)은 그들이 센서(들)(138)을 통해 검출하고 있는 것(예를 들어, 터치, 움직임, 다른 사용자 디바이스의 근접성)이 디바이스와의 상호작용에 대응하는지를 판정하려고 시도한다. 사용자 검출 메커니즘(들)은 (S418에서) 사용자가 디바이스와 상호작용하고 있는지를 검출하려고 시도한다.
(S412에서) 얼굴(또는 하나보다 많은 얼굴)이 검출되면, (S420에서) 시선 검출 메커니즘(들)이 이용되어 검출된 얼굴이 디바이스를 보고 있는지를 판정하고, 얼굴 검출 메커니즘(들)(187)이 이용되어 검출된 얼굴이 제스처 및/또는 스피치에 대응하는 방식으로 움직이고 있는지를 (S422에서) 판정할 수 있다.
얼굴 움직임 검출 메커니즘(들)(187)은 단독으로 또는 얼굴/시선 검출 메커니즘(들)(184)과 연계하여 이용되어 임의의 검출된 얼굴이 스피치 및/또는 제스처에 대응하는 하는 방식으로 움직이고 있는지를 판정할 수 있다.
(도 4j에 도시된 흐름도에 도시된 바와 같이) 다양한 상호작용 검출 메커니즘이 동시에 동작할 수 있지만, 메커니즘들 중 일부는(예를 들어, 시선 검출 및 얼굴 움직임 검출) 다른 메커니즘(들)의 판정에 의존할 수 있다.
일부 구현에서, 다양한 검출 메커니즘들은 그들의 검출 결정을 반영하는 부울 값(Boolean value)(참 또는 거짓)을 생성할 수 있다. 이들 경우에 상호작용이 검출되었는지에 관한 최종 판정은 이들 값들의 논리 OR에 의해 결정된다. 예를 들어, N개의 검출 메커니즘이 있고, i번째 검출 메커니즘이 부울 값 b i 를 생성한다면, 상호작용이 검출되었는지에 관한 최종 판정은 하기를 이용하여 계산될 수 있다:
Figure pct00001
이 구현에서, 임의의 참 값(즉, 임의의 검출 메커니즘에 의한 임의의 검출)은 상호작용이 발생하고 있다는 결정을 생성할 것이다. 도 4j의 흐름도를 참조하여, 임의의 메커니즘에 의한 임의의 "예" 값은 상호작용이 발생하고 있다는 긍정적 결정을 생성할 것이다.
도 4j의 흐름도 내의 라인들 상의 라벨 "예"는 일부 피처(예를 들어, 제스처, 얼굴, 스피치 등)를 검출했을 가능성이 크다는 해당 메커니즘들 각각에 의한 결정 또는 판정을 나타낸다는 점을 이해해야 한다. 유사하게, 흐름도 내의 라인들 상의 라벨 "아니오"는 일부 피처(예를 들어, 제스처, 얼굴, 스피치 등)를 검출하지 않았을 가능성이 크다는 해당 메커니즘들 각각에 의한 결정 또는 판정을 나타낸다. 따라서 이들 라인들 상의 다양한 라벨들은 피처가 발생하고 있거나 아니거나를 의미하는 것으로 해석되어서는 안 되고 오직 소정의 확실성 정도와 함께 검출되었거나 아니거나를 의미하는 것으로 해석되어야 한다는 점을 이해해야 한다. 따라서, 본 기술분야의 통상의 기술자는, 본 상세한 설명을 읽을 시에, 도 4j 내의 흐름 라인들 상의 "예" 라벨은 "아마(Maybe)" 또는 "아마도(Probably)" 또는 "아닐 가능성보다 큰"으로서 읽혀져야 하고, 도면 내의 흐름 라인들 상의 "아니오" 라벨은 "아마도 아닌(Probably not)"으로서 읽혀져야 한다는 것을 이해할 것이다. 따라서, (상기 수식 1을 이용하여 판정된) 값 상호작용 검출됨(Interaction Detected)은, "참"인 경우, "참일 가능성이 아주 큰" 또는 "거짓일 가능성보다 참일 가능성이 더 큰"으로 해석되어야 하고, "거짓"인 경우, "거짓일 가능성이 아주 큰"으로 해석되어야 한다.
디바이스는 상호작용 검출의 확률론적 성질을 이용할 수 있다. 따라서, 일부 구현에서, 각 검출 메커니즘은 검출 결과의 확실성 정도를 반영하는 값 또는 수(예를 들어, 0.0은 아무런 상호작용도 검출되어 않았다는 것을 의미하고 1.0은 상호작용이 확실히 검출되었다는 것을 의미하는 0.0 내지 1.0의 실수값, 또는 0은 상호작용 없음을 의미하고 100은 확실한 상호작용을 의미하는 0 내지 100의 정수)를 생성할 수 있다. 이들 경우에, 상호작용이 검출되었는지에 관한 최종 판정은, 적어도 부분적으로, 다양한 검출 메커니즘에 의해 생성된 값들의 함수로서 결정된 점수를 이용하여 이루어진다. 예를 들어, N개의 검출 메커니즘이 있고, i번째 검출 메커니즘이 0.0 내지 1.0 범위의 실수값 ri를 생성하고, i번째 검출 메커니즘의 점수는 가중치 w i 를 가진다면,
Figure pct00002
일부 함수 F에 대해, 수식 2의 가중치 wi상호작용 점수 ≤ 1.0이 되게 하는 것으로 이해해야 한다. 값 상호작용 검출됨은, 예를 들어, (수식 2에서 결정된) 상호작용 점수를 정적 또는 동적 임계치와 비교함으로써 결정될 수 있다. 예를 들어,
Figure pct00003
일부 구현에서, 함수 F(수식 2)는 다양한 검출 메커니즘들에 의해 생성된 값들의 가중 합계 또는 평균을 생성할 수 있고, 여기서, 예를 들어, 알려진 또는 인지된 또는 이력 정확도에 따라, 상이한 검출 메커니즘들에 상이한 가중치들이 부여될 수 있다. 예를 들어, N개의 검출 메커니즘이 있고, i번째 검출 메커니즘이 0.0 내지 1.0 범위의 실수값 ri를 생성하고, i번째 검출 메커니즘의 점수는 가중치 w i 를 가진다면, 상호작용이 검출되었는지에 관한 최종 판정은 하기를 이용하여 계산될 수 있다:
Figure pct00004
(수식 2를 참조하여) 위에서 언급된 바와 같이, 가중치 wi상호작용 점수 ≤ 1.0이 되도록 하는 것이다.
이 예에서는 가중 합계가 사용되고 있지만, 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상호작용이 발생하고 있는지를 판정하기 위해 상이한 및/또는 기타의 함수들이 이용될 수 있다는 것을 인식하고 이해할 것이다. 예를 들어, 이하의 수식 2"에 도시된 바와 같이, 상호작용 점수를 결정하기 위해 가중 평균 점수가 이용될 수 있다:
Figure pct00005
도 4k에 도시된 흐름도는, 각각의 검출 메커니즘이 점수(예를 들어, 범위 0.0 내지 1.0의 실수 값 R i )를 생성하고, 상호작용이 검출되는지에 관한 최종 판정이 적어도 부분적으로 이들 점수의 함수로서(예를 들어, 상기 수식 2 또는 2'에 따라) 결정되는 구현에서의 상호작용 검출 단계(S406')를 도시하고 있다. 이 예에서, (S410'에서) 제스처 검출 메커니즘(들)(168)은 그들이 카메라 센서(들)을 통해 검출하고 있는 임의의 움직임이 제스처에 대응하는지를 판정하려고 시도하고, 이 판정을 나타내는 점수(R1 ∈ [0 .. 1])를 생성한다. (S412'에서) 얼굴/시선 검출 메커니즘(들)(184)은 그들이 카메라 센서(들)을 통해 검출하고 있는 임의의 이미지가 적어도 하나의 얼굴에 대응하는지를 판정하려고 시도하고, 이 판정을 나타내는 점수(R2 ∈ [0 .. 1])를 생성한다. (S414'에서) 음성/스피치 검출 메커니즘(들)(176)은 그들이 마이크로폰 센서(들)을 통해 검출하고 있는 임의의 음향이 스피치에 대응하는지를 판정하려고 시도하고, 이 판정을 나타내는 점수(R3 ∈ [0 .. 1])를 생성한다. (S416에서) 기타의 인터페이스 메커니즘(들)(190)은 그들이 센서(들)(138)을 통해 검출하고 있는 것(예를 들어, 터치, 움직임, 다른 사용자 디바이스의 근접성)이 디바이스와의 상호작용에 대응하는지를 판정하려고 시도하고, 이 판정을 나타내는 점수(R4 ∈ [0 .. 1])를 생성한다. 사용자 검출 메커니즘(들)은, (S418'에서) 사용자가 디바이스와 상호작용하고 있는지를 검출하려고 시도하고, 그 판정을 나타내는 점수(R7 ∈ [0 .. 1])를 생성한다.
이전 예(도 4j)에서와 같이, (S412'에서) 얼굴이 검출되면, (S420'에서) 시선 검출 메커니즘(들)이 이용되어, 검출된 얼굴이 디바이스를 보고 있는지를 판정할 수 있다. 이 경우에, 시선 검출 메커니즘(들)은, 만약 이용된다면, 그들의 판정을 나타내는 점수(R5 ∈ [0 .. 1])를 생성한다. 유사하게, 얼굴 움직임 검출 메커니즘(들)(187)은 검출된 얼굴이 제스처 및/또는 스피치에 대응하는 방식으로 움직이고 있는지를 (S422'에서) 판정하고 그들의 판정을 나타내는 점수(R6 ∈ [0 .. 1])를 생성하는데 이용될 수 있다. 시선 검출 및/또는 얼굴 움직임 검출 메커니즘을 개시 또는 이용할지의 여부에 관한 결정은, 예를 들어, (S412'에서) 얼굴 검출 메커니즘(들)에 의해 생성된 점수(R2)에 기초할 수 있고, 여기서, (도 4k에서 TG 및 TM으로 표기된) 미리결정된 임계치가 시선 및/또는 얼굴 움직임 검출을 개시하는데 이용될 수 있다. 이들 임계치(TG 및 TM)은 동일할 수 있다. 이들 임계치들은, 예를 들어, 시스템이 그 검출 성공에 대해 학습하는 정보에 기초하여, 프리셋(preset)되고 고정되거나(fixed) 동적일 수 있다.
앞서 언급된 바와 같이, 각각의 검출 메커니즘은 연관된 대응하는 검출 가중치를 가질 수 있다. 예를 들어, 다음의 표에서 이하와 같이 요약된다:
Figure pct00006
시스템은 바람직하게는 (S407에서) 다양한 검출 메커니즘들 각각에 의해 생성된 가장 최근의 점수(이 예시의 구현에서는, R1 ... R7)에 대응하는 실행 값(running value)을 생성한다. 각각의 검출 메커니즘은 연관된 대응하는 검출 가중치를 가질 수 있으며, 다양한 점수의 가중치 함수를 이용하여 (예를 들어, 상기 수식 2, 2' 또는 2"를 이용하여) 실행 값이 생성될 수 있다. 상호작용이 검출되었는지에 관한 결정은, 적어도 부분적으로, (S407에서 계산된) 이 점수와 (도 4k의 도면에서 T상호작용으로 표기된) 또 다른 임계치간의 비교에 기초할 수 있다. 임계치 T상호작용은, 예를 들어, 시스템이 그 검출 성공에 대해 학습하는 정보에 기초하여, 프리셋되고 고정되거나 동적일 수 있다.
다양한 상호작용 검출 메커니즘/프로세스들이 병렬로 및 서로 독립적으로 진행될 수 있다. 그러나, 다양한 메커니즘/프로세스들은, 일부 경우에는, 다른 메커니즘에 의해 생성된 점수에 액세스하여 이를 이용할 수 있다는 점을 이해해야 한다. 이들 다른 메커니즘의 점수는, 예를 들어, (S412'에서의 얼굴 검출에 의해 생성된 점수(R2)가 시선 및 얼굴 움직임 검출에 대한 트리거로서 사용되는 도 4k의 예시적 경우에서와 같이) 다른 검출을 트리거하는데 이용될 수 있다.
다양한 검출 메커니즘들에 대한 가중치는 디바이스가 이전 검출로부터 학습한 정보에 기초하여 동적으로 변할 수 있다. 각 가중치는 max_weight의 일부 값에 대해 범위 0 내지 max_weight의 값이다. 본 설명의 목적을 위해, max_weight는 1.0으로 가정하지만, 점수 임계치(상기 예에서는 T상호작용)가 그에 따라 설정되는 한 임의의 값이 사용될 수 있다. 초기에 모든 메커니즘에는 동일한 가중치(예를 들어, max_weight)가 부여될 수 있고, 특정 메커니즘에 할당된 가중치는 이들 메커니즘의 정확도 또는 유용성에 기초하여 조정될 수 있다. 예를 들어, 어두워진 방에서, 제스처 및 얼굴 검출 메커니즘에는 감소된 가중치가 부여될 수 있고, 또는 (디바이스가 노이즈를 적절히 필터링 아웃할 수 없는) 시끄러운 방에서, 스피치 검출 메커니즘(들)에는 감소된 가중치가 부여될 수 있다. 일단 방안의 빛이 변하거나 방안의 노이즈가 감소되면, 대응하는 메커니즘의 가중치는 상향 조정될 수 있다. 또한, 디바이스는 그 이전 결정으로부터 학습하기 때문에, 가중치는 조정될 수 있다.
실제의 상호작용을 놓치는 것보다 가능한 상호작용의 긍정 오류(false positive) 검출을 갖는 것이 일반적으로 바람직하는 것을 이해해야 한다. 디바이스가 상호작용에 대한 적절한(예를 들어, 거의 실시간) 응답을 제공하지 않으면, 사용자는 상호작용을 사용하는 것을 그리고 가능하게는 디바이스를 정지시킬 것이다. 따라서, 디바이스와의 가능한 상호작용을 검출하기 위하여 바람직하게는 가중치는 보수적으로 높게 설정되어야 하고 대응하는 임계치는 보수적으로 낮게 설정되어야 한다.
검출 메커니즘들 각각은 전력을 소비하고, 디바이스에 의한 이들 메커니즘들의 지속적인 사용은 너무 많은 전력을 사용하게 할 수 있다. 따라서 정확한 상호작용 검출에 대한 필요성은 디바이스에서 전력을 절감할 필요성과 균형을 이루어야 한다. 그러나, 디바이스가 외부 전원에 접속되는 경우, 검출 메커니즘의 사용자에게 어떠한 제한도 부과될 필요가 없다. 다양한 메커니즘에 대한 트리거들이 전력을 절감하도록 사용될 수 있다. 예를 들어, 스피치 검출 메커니즘은 (전력을 덜 소모하는) 더 간단한 음향 검출 메커니즘에 의해 트리거될 수 있고, 얼굴 및 제스처 검출 메커니즘은 카메라 센서(들)에 의해 포착된 이미지에서의 변화를 검출하는 (전력을 덜 소모하는) 더 간단한 메커니즘에 의해 트리거될 수 있다.
일부 구현에서, 디바이스들은 디바이스들이 최소한의 상호작용 검출을 수행하는 모드(예를 들어, 휴면 모드(sleep mode) 또는 무시 모드(ignore mode))에 놓여질 수 있다. 이 모드는, 예를 들어, 하루 중의 시간, 위치, 사용자 지시, 또는 어떤 다른 요인에 기초하여 입력될 수 있다. 예를 들어, 디바이스는 평일 자정에서 7 AM 사이에는 최소의 상호작용 검출을 수행하도록 설정될 수 있다. 일부 경우에, 디바이스가 번잡하거나 시끄러운 장소에서 이용되는 경우(예를 들어, 파티장의 스피커 또는 번잡한 공항에서의 전화), 그 디바이스는 소정의 상호작용을 무시하거나 상호작용에 대한 트리거 또는 확정을 요구하도록 설정될 수 있다. 일부 경우에, 특정의 상호작용들은 디바이스가 현재 하고 있는 것에 기초하여 디스에이블될 수 있는데, 예를 들어, 스피치 입력은 음악 재생 디바이스가 음악을 활발히 재생하고 있는 동안에는 디스에이블(disable)될 수 있지만, 음악들 사이에서는 재활성화될 수 있다. 이러한 종류의 설정은, 검출 메커니즘들 중 일부와 연관된 가중치를 조정함으로써 이루어질 수 있다(예를 들어, 댄스 파티에서 제스처 검출에 대한 가중치를 매우 낮게 설정). 특정한 검출 메커니즘에 대해 낮은 가중치를 설정하는 것은 그 메커니즘을 디스에이블하지 않으므로 여전히 동작하고 전력을 소비할 것이다. 또한, 매우 낮은 가중치 값에서도, 메커니즘은 디바이스가 가능한 상호작용으로서 해석할 수도 있는 제스처를 검출할 수 있다. 바람직한 구현에서, 소정의 상호작용 검출 메커니즘들은 이들이 동작하지 않도록 또는 전력을 소비하지 않도록 턴 오프 또는 디스에이블될 수 있다. 일부 경우에 이것은 검출 메커니즘에 대한 대응하는 가중치를 제로(0.0)로 설정함으로써 달성될 수 있다.
바람직한 구현에서, 각각의 검출 메커니즘은, 소정 시간 기간(예를 들어, 5-10초) 후에 또는 검출된 상호작용이 실제로 실행된 후에 그 점수를 제로로(또는 거짓(false))으로 리셋한다.
가능한 상호작용에 대한 검사(예를 들어, 도 4i의 S406)의 진행중인 프로세스는 통상적으로 어떤 사람이 상호작용을 개시했을 수도 있다는 지식없이 수행된다. 따라서, 이 프로세스가 코포라의 이용을 요구하는(또는 이로부터 혜택을 받을 수 있는) 정도까지, 디바이스는 바람직하게는 인식 프로세스를 수행하기 위해 디바이스와 연관된 사용자의 코포라를 이용한다. 이하에서 설명되는 바와 같이, 일단 가능한 상호작용이 검출되면, 디바이스는 상이한 코포라를 이용(또는 이용을 시도)하여 실제의 상호작용을 인식 및 처리할 수 있다.
가능한 상호작용(들)의 검출(도 4i의 S406)시에, 디바이스는 바람직하게는 어떤 종류의 상호작용(들)이 진행중인지의 표시를 유지한다. 이것은 후보 상호작용을 판정하는 프로세스(도 4j, 도 4k의 S406)가 후속 처리에 의한 이용을 위해 정보를 생성하고 제공하게 함으로써 달성될 수 있다. 도 4j의 부울 구현의 경우, 프로세스는 상기 수식 1에서의 상호작용 검출됨의 값을 결정하는데 이용된 값들 b i , i=1 … N에 대응하는 비트 벡터를 설정할 수 있다. 도 4k의 구현에서 이용되는 실수값들의 경우, 프로세스는 후속 처리에 의한 이용을 위해 각 검출 메커니즘에 의해 생성된 점수에 대응하는 값들의 어레이 또는 벡터를 설정할 수 있다. 디바이스가 가능한 상호작용에 대한 정보를 유지하기 위해 다른 접근법들이 이용될 수 있고, 시스템은 이 정보가 유지 또는 통신되는 방식에 의해 제한되지 않는다.
(도 4i의 S406에서) 상호작용이 발생하고 있는지를 판정하려고 시도하는 동안, 디바이스는 다양한 상호작용 메커니즘(162)에 어떤 코포라를 이용할 것인지를 알지 못할 수도(알 필요가 없을 수) 있다. 바람직한 구현에서, 상호작용 검출이 코퍼스를 요구한다면, 디바이스(102)는 디바이스가 연관되어 있는 사용자(110)와 연관된 코포라를 이용한다. 일부 경우에, 디바이스는 이 처리 단계에서 다른 코포라(예를 들어, 일반 코포라 또는 다른 인가된 사용자와 연관된 코포라)를 이용할 수 있다.
후보 상호작용을 검출하고 나면(도 4i의 S406), 디바이스는 그 상호작용의 처리를 진행한다. 실제의 상호작용의 처리는 바람직하게는, 상호작용을 처리하는 다른 운용 메커니즘(154)과 함께 인터페이스 메커니즘(162)을 이용한다. 상호작용을 처리하기 위하여, 디바이스는 다양한 인터페이스 메커니즘(162)에 대한 코포라를 이용할 필요가 있을 수 있다. 따라서, 도 4l의 흐름도에 도시된 바와 같이, 디바이스는 먼저 (S409에서) 다양한 인터페이스 메커니즘에 어떤 코포라를 이용할지를 결정한다.
(디바이스 상에서 그리고 백엔드에서의 모두의) 코포라는, 예를 들어, 도 4d 내지 도 4h에 도시된 바와 같이 구성되어, 디바이스가, 얼굴, 제스처, 음성, 또는 일부 다른 방식으로 특정한 사람을 인식하는 경우, 대응하는 메커니즘에 의해 그 사람과 연관된 다른 코포라가 결정되고 이용될 수 있다. 예를 들어, 디바이스가 먼저 사람의 얼굴을 인식하면, 디바이스는, 필요하다면, 그 사람과 연관된 다른 코포라를 액세스 및 이용할 수 있다(도 4d)(또는 사용자의 스마트 디바이스(예를 들어, 전화 또는 태블릿)에 기초하여 연관성을 형성할 수 있다). 유사하게, 디바이스가 먼저 사람의 제스처(도 4e), 음성/스피치(도 4f), 또는 사람의 일부 다른 양태(도 4g)를 인식하면, 디바이스는, 필요하다면, 그 사람과 연관된 다른 코포라를 액세스 및 이용할 수 있다. 추가로, 디바이스가 자신과 인터페이싱하고 있는 사람을 판정할 수 있다면, 디바이스는, 필요하다면, 그 사용자에 대한 코포라를 액세스할 수 있다(도 4h). 시스템(100) 내에서, "사용자"(110)는 시스템 내의 하나 이상의 디바이스에 대한 일부 종류의 연관성 또는 결속을 형성하는데 이용되는 개념이라는 점을 기억해야 한다. 사용자(110)는 통상적으로 사람에 대응하지만, 디바이스와 상호작용하거나 디바이스와 상호작용을 시도하는 모든 사람들이 반드시 시스템(100) 내의 사용자인 것은 아니다.
코포라를 선택(도 4l의 S409)하는데 이용되는 예시적 흐름 프로세스가 도 4m에 도시되어 있다. 이 예시적 구현에 대해, 디바이스는 다양한 인터페이스 메커니즘에 대하여 적어도 일부의 일반 코포라를 포함한다고 가정한다. 이들 일반 코포라는 제조시에 또는 후속 준비 또는 구성 동안에 디바이스에 포함될 수 있다. (코포라를 선택하는) 이 프로세스에 도달하기 위해, 디바이스는 (도 4i의 S406에서) 일부 종류의 상호작용을 검출하였다. 디바이스는, 음향, 외부 움직임, 터치, 디바이스의 움직임 등 중에서 하나 이상을 검출하였을 수 있다. 이 검출은 디바이스 센서(138)들의 일부 또는 전부를 이용하므로, 예를 들어, 디바이스 마이크로폰은 음향을 검출할 수 있고, 디바이스 카메라(들)은 외부 움직임을 검출할 수 있고, 디바이스 가속도계(들)은 디바이스의 움직임을 검출할 수 있고, 디바이스 터치 센서는 디바이스가 사람이나 또 다른 디바이스에 의해 터치되고 있다고 검출할 수 있고, 디바이스는 사용자로부터의 상호작용을 검출할 수 있는 등등이다. 이 시점에서 디바이스는 (예를 들어, (도 4j의 구현을 위한) 비트 벡터 또는 (도 4k의 구현을 위한) 점수 값들의 벡터를 이용하여) 가능한 타입의 상호작용이 검출되었다는 표시를 가질 수 있다는 점을 상기한다. 디바이스는 상호작용이 무엇인지 및 어떤 코포라를 이용할지를 결정하려고 시도하기 위해 이 정보를 이용할 수 있다.
(도 4j의 S406; 도 4k의 S406'에서) 디바이스가 검출한 가능한 상호작용(들)에 기초하여, 디바이스는 특정한 사용자 또는 사람을 식별할 수 있는지를 (도 4m의 S426에서) 판정할 수 있다. (도 4m의 S428에서) 디바이스가 사용자 또는 사람을 인식한다면, 디바이스는 그 사용자 또는 사람에 대한 대응하는 코포라를 선택한다. 반면, (도 4m의 S426에서) 디바이스가 잠재적 상호작용을 디바이스에게 알려져 있는 임의의 사용자 또는 사람에 대응하는 것으로서 인식하지 않으면, 디바이스는 (도 4m의 S430에서) 디바이스의 일반 코포라를 선택한다.
(S424에서) 디바이스에 의해 검출된 잠재적 상호작용의 타입에 따라, 디바이스는 디바이스에게 알려진 사람 또는 사용자를 인식하려고 시도하기 위하여 (S426에서) 적절한 인터페이스 메커니즘(들)을 이용할 것이다. 사람 또는 사용자는, 디바이스가 그 사람 또는 사용자에 대해 저장된 적어도 하나의 코퍼스를 갖고 있다면 그 디바이스에게 알려진 것으로 간주된다. 사람은 디바이스와의 이전의 상호작용에 기초하여 디바이스에 알려질 수 있는데, 그 이유는 그 사람이 디바이스와 연관된 사용자이거나, 그 사람이 그 디바이스와 연관된 사용자와 연관되어(예를 들어, 친구)있고 특정 방식으로 그 디바이스에 액세스하기 위한 퍼미션이 부여되었기 때문이다. 바람직한 구현에서, 디바이스와 연관된 사용자는 항상 디바이스에게 알려져야 한다.
따라서, 예를 들어, 도 4i에 도시된 바와 같이, (S424에서) 일부 상호작용이 발생하고 있다고 검출하면, 디바이스는 (S432에서) 제스처 검출 및 인식 메커니즘(168, 170)을 이용하여, 검출된 제스처가 알려진 사용자/사람의 것과 대응하는지를 판정하려 할 수 있다. (S432에서) 디바이스가 제스처를 알려진 사용자/사람의 것으로 인식한다면, (S434에서) 디바이스는 대응하는 코포라를 선택한다. 디바이스는 도 4e에 도시된 맵핑(mapping)을 이용하여 인식된 제스처에 기초하여 코포라를 결정할 수 있다.
디바이스는 (S436에서) 또한(또는 대신에) 센서(138)(예를 들어, 카메라(들)인 센서)와 연계하여 얼굴/시선 검출 및 인식 메커니즘들(184, 186)을 이용하여 상호작용이 디바이스나 시스템에게 얼굴이 알려져 있는 사용자/사람의 것인지를 판정하려고 할 수 있다. 디바이스가 근처의 또는 가시의 얼굴이 디바이스에게 알려진 것(즉, 디바이스에게 알려진 사용자/사람에 대응하는 것)이라고 결정하면, 디바이스는 (S438에서) 그 얼굴에 기초하여 대응하는 코포라를 선택할 수 있다. 인식된 얼굴에 기초하여, 디바이스는 도 4d에 도시된 맵핑을 이용해서 코포라를 결정할 수 있다.
디바이스는 또한(또는 대신에) (마이크로폰(들)인 센서(138)를 이용해) 검출된 음향과 음성/스피치 검출 및 인식 메커니즘(176, 178)을 이용하여 (S440에서) 검출된 음향이 스피치인지를 판정하고, 만일 그렇다면, 이것이 디바이스에게 알려진 사람/사용자의 스피치에 대응하는지를 판정할 수 있다. 검출된 음향이 (S440에서) 디바이스에게 알려진 사람/사용자의 스피치인 것으로 판정되면, 디바이스는 (S442에서) 그 스피치에 기초하여 적절한 코포라를 선택할 수 있다. 인식된 스피치에 기초하여, 디바이스는 도 4f에 도시된 맵핑을 이용하여 코포라를 결정할 수 있다.
디바이스는 또한(또는 대신에) (S444에서) 일부 기타의 인터페이스 메커니즘(들)(190)을 이용하여 사람/사용자를 인식하고, 이 경우 디바이스는 (S446에서)그 사람/사용자에 대한 적절한 대응하는 코포라를, 예를 들어, 도 4g에 도시된 맵핑을 이용하여 선택할 수 있다.
디바이스는 또한(또는 대신에) (S448에서) 상호작용이 알려진 사용자의 것이라고 인식하고, 이 경우 디바이스는 (S450에서) 그 사용자에 대한 적절한 대응하는 코포라를, 예를 들어, 도 4h에 도시된 맵핑을 이용하여 선택할 수 있다.
도 4m은 (S426에서) 다양한 인식 시도를 도시하고 있지만, 이들 단계들의 모두가 모든 디바이스 또는 디바이스 타입에서 수행되는 것은(또는 심지어 이용가능한 것은) 아니라는 점을 이해해야 한다. 또한, 일부 디바이스 또는 디바이스 타입에서는, 이 단계들은 병렬로, 직렬로, 또는 이들의 일부 조합으로 수행될 수도 있다는 점을 이해해야 한다. 일부 경우에, (S426에서) 코포라가 선택되기 이전에 인식하거나 및/또는 인식을 확정하기 위해 복수의 테스트가 이용될 수 있다. 따라서, 예를 들어, 특정한 디바이스 또는 디바이스 타입은 먼저 얼굴 인식을 이용한 다음, 그것이 실패하는 경우에만, 일부 다른 기술을 이용할 수 있다. 또 다른 예로서, 특정한 디바이스 또는 디바이스 타입은 (도 4j의 S412; 도 4k의 S412'에서) 얼굴 및 (도4j의 S418; 도 4k의 S418'에서) 사용자를 동시에 인식하려 시도한 다음, 선택사항으로서, 다른 인식 접근법을 후속조처할 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 시스템은 다양한 사용자/사람 인식 단계가 수행되는 (동시, 직렬, 또는 이들의 조합을 포함하는) 방식 또는 순서에 의해서도 제한되지 않고, 사용자/사람을 인식하려는 시도에 이용가능하거나 이용되는 메커니즘에 의해서도 어떤 식으로든 제한되지 않는다는 것을 이해할 것이다.
(S426에서) 하나보다 많은 인식 메커니즘이 이용된다면, 디바이스는 충돌을 처리할 수 있을 필요가 있다. 충돌은, 예를 들어, 하나의 메커니즘이 한 명의 사용자/사람을 인식하고 또 다른 인식 메커니즘이 상이한 사용자/사람을 인식하는 경우에 발생할 수 있다. 이것은, 디바이스가 디바이스와 상호작용하는 사람/사용자에 대한 충분한 정보를 판정할 수 없는 경우에 발생할 수 있고, 디바이스가 그 사람에 대한 충분한 정보를 갖지 못하거나 및/또는 디바이스와 잠재적으로 상호작용하는 하나보다 많은 사람이 있기 때문이다. 예를 들어, 새로운 디바이스는 그 잠재적 사용자에 대한 충분한 정보를 갖지 못해 정확한 인식 판정을 내릴 수 없어서, 상이한 메커니즘이 상이한 인식 결정을 내릴 수 있다. 하나보다 많은 사람이 근처에 있어서 디바이스가 또한 혼동하여, 그 센서들이 상이한 사람들로부터의 상세사항을 픽업(pick up)할 수 있다. 예를 들어, 디바이스의 부근에 복수의 사람이 있다면, 그 마이크로폰(들)은 한 사람의 음성을 픽업하면서 그 카메라(들)은 또 다른 사람의 얼굴을 픽업할 수 있다.
특정한 센서가 하나보다 많은 사람을 인식하는 것도 역시 가능하다. 예를 들어, 디바이스 내의 카메라(들)은 하나보다 많은 얼굴을 인식하거나 복수의 얼굴을 발견할 수 있다.
디바이스(102)는 바람직하게는 적어도 하나의 충돌 해결 전략을 가진다. 충돌 해결 전략은 적응형으로서, 디바이스가 이전 상호작용 및 인식 결정에 기초하여 학습할 수 있다. 일부 경우에, 디바이스는, 예를 들어, (S448에서의) 사용자 인식에 가장 큰 가중치를 부여하고, (S436에서의) 얼굴 인식에는 가중치를 덜 부여하고, (S440에서의) 음성/스피치 인식에는 훨씬 덜 가중치를 부여하는 등등의, 인식 결정의 가중치 기능을 이용할 수 있다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 다른 기능이 이용될 수도 있고, 상이한 및/또는 다른 충돌 해결 전략이 제공될 수도 있다는 것을 이해할 것이다. 예를 들어, 충돌 해결 전략은, 시간에 따라(예를 들어, 학습에 기초하여) 변하는 동적일 수 있다.
충돌 해결 전략 외에도, 디바이스(102)는 또한, 사람이 디바이스와 상호작용을 시도하는지, 및 그럴 경우 어떤 사람인지에 관한 인식을 향상시키기 위해 다양한 최적화를 포함할 수 있다. 한 예시적 최적화는 (얼굴/시선 메커니즘(들)(182)을 이용하는) 시선 검출을 이용하여 누군가가 디바이스를 실제로 보고 있는지를 판정하는 것이다. 시선 검출은, 예를 들어, 다른 인식 및 상호작용에 대한 트리거로서, 및/또는 충돌 해결 전략의 일부로서, 코퍼스를 선택하는데 이용될 수 있다. 예를 들어, 디바이스가 (그 마이크로폰(들)을 이용하여) 음향을 검출하면, 디바이스는 그 음향이 디바이스에 대한 명령 또는 질의에 대응하는지를 알지 못할 수 있다. 디바이스는 또한, 누군가가 디바이스를 응시하고 있다고 검출할 수 있다면, 시선은, 단독으로 또는 검출된 음향와 함께 스피치 인식을 트리거하는데 이용될 수 있다. 시선 검출은 얼굴 인식을 요구하거나 이에 의존하지 않는다는 점을 이해해야 한다.
추가의 최적화로서, 일부 구현에서, 디바이스는 (얼굴/시선 검출 메커니즘(들)(184)을 이용하여) 검출된 얼굴이 그 검출을 확정(또는 거부)하는데 이용될 수 있는 방식으로 움직이고 있는지를 얼굴 움직임 검출 메커니즘(들)(187)을 이용하여 판정할 수 있다. 예를 들어, 시스템이 (얼굴/시선 검출 메커니즘(들)(184)을 이용해) 복수의 얼굴을 발견하고 또한 (음성/스피치 메커니즘(들)(174)을 이용해) 스피치를 검출한다면, 스피치에 대응하는 움직임(예를 들어, 입이 움직이고 있는 경우)을 보여주는 임의의 얼굴이 선택에 대한 바람직한 후보가 될 것이다. 얼굴 움직임 검출 메커니즘(들)(187)은 스피치를 해석할 필요는 없고, 이들은 스피치에 대응할 수 있는 입이나 턱 움직임 또는 일부 다른 종류의 움직임만을 검출할 필요가 있다는 점을 이해해야 한다.
일부 구현에서, 얼굴 움직임 검출 메커니즘(들)(187)은, 제스처 메커니즘(들)(166)에 의한 이용을 위해 얼굴의 다른 부분들, 예를 들어, 눈썹, 눈, 턱, 입 등의 움직임을 검출하는데 이용될 수 있다. 얼굴 움직임 그 차제는 디바이스에 의해 인식된 제스처이거나, 또는 다른 검출된 제스처를 확정하는데 이용될 수 있다.
유사하게, (제스처 메커니즘(들)(166)에 의해 판정된) 제스처는 단독으로 이용되거나 다른 검출된 정보(예를 들어, 얼굴, 음성, 움직임 등)를 확정하는데 이용될 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 일반적으로 각각의 인터페이스 메커니즘(162)은 단독으로 또는 다른 인터페이스 메커니즘과 조합하여 이용될 수 있다는 것을 이해할 것이다. 함께 사용되는 경우, 다양한 인터페이스 메커니즘들은 서로 확정하는데 사용될 수 있고 및/또는 서로에 대한 트리거로서 이용될 수 있다.
모든 디바이스 또는 디바이스 종류들이 인터페이스 메커니즘들 모두를 가질 필요는 없고 이들 구성들 모두가 모든 디바이스 또는 디바이스 종류에서 이용될 수 없을 수도 있다는 점을 이해해야 한다. 또한, 일부 디바이스들은 어떤 코포라를 이용할지를 결정하기 위해 상이한 및/또는 다른 기술들을 이용할 수 있다는 점을 이해해야 한다.
상호작용 검출(예를 들어, 도 4j의 S406, 도 4k의 S406')과 코퍼스/코포라 선택(도 4l)이 별개의 프로세스로서 도시되어 있지만, 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상호작용 검출에 대한 판정의 일부는 후속 처리, 예를 들어, (도 4m의 S426에서) 사람/사용자가 인식되는지를 판정하는데 이용될 수 있다는 것을 인식하고 이해할 것이다. 따라서, 일부 경우에, 후보 상호작용을 검출하는 프로세스(도 4j의 S406, 도 4k의 S406')에서, 디바이스는 디바이스와 상호작용하는 사람/사용자에 대한 충분한 정보를 판정하여 사용자/사람 인식 프로세스(S426)를 건너뛸(또는 간소화할) 수 있다.
다시 도 4l을 참조하면, (S409에서) 실제의 상호작용에 어떤 코포라를 이용할지를 결정하면, 디바이스는, (S409에서) 결정된 코포라 및 다양한 인터페이스 메커니즘(162)을 이용하여 (S411에서) 실제의 상호작용의 판정을 진행할 수 있다. 본 상세한 설명을 읽을 시에 본 기술분야의 통상의 기술에게 명백한 바와 같이, 실제의 상호작용은 사람 인식(S426) 및 코퍼스 선택(S428)의 프로세스에 의해 (완전히 또는 부분적으로) 판정될 수 있다. 이들 2개 프로세스가 실제의 상호작용의 판정을 야기하지 않는다면, 디바이스는 (S411에서) 실제의 상호작용을 판정하기 위해 진행할 수 있다.
실제의 구현을 처리하기 위한 대안적 구현/접근법은, 어떤 다른 인가된 사용자가 특별히 인식되거나 식별되지 않는 한, 이용될 코포라는 디바이스 사용자(110)의 것이라고 가정한다. 이 예시적 구현에서, 상호작용 검출 메커니즘에 의해 생성된 점수는 어느 인식 메커니즘이 이용되는지를 제어하는데 이용된다. 따라서, 도 4n의 흐름도를 참조하여, 디바이스는 (S409"에서) 실제의 상호작용에 어떤 코포라를 이용할지를 결정한다. 사용자 검출 프로세스(예를 들어, 도 4k의 S418')가 (도 4n에서 T 사용자 로 표기된) 소정의 임계치보다 큰 점수를 생성했다면, 디바이스는 (S418"에서) 그 사용자를 인식하려 하고, 성공적이면, (S450"에서) 인식된 사용자에 대한 코포라를 선택한다. 디바이스가 사용자(바람직하게는 인가된 사용자)를 인식하는데 실패하거나, 사용자 검출 프로세스/메커니즘에 의해 생성된 점수(R7)가 임계치(T 사용자 )를 초과하지 않는다면, 디바이스는 (일반 코포라일 수 있는) 디바이스의 사용자와 연관된 코포라를 선택한다. (S409"에서) 선택된 코포라와 함께, 디바이스는 (S411"에서) 실제 상호작용의 판정을 진행한다. 도 4n의 예시적 구현에서, 디바이스는 다양한 인터페이스 검출 메커니즘에 의해 생성된 점수를 이용하여 대응하는 인식 메커니즘을 호출(invoke)할지의 여부를 결정할 수 있다. 예를 들어, 도 4n에 도시된 바와 같이, 디바이스는 제스처 검출 메커니즘(들)(168)에 의해 (예를 들어, 도 4k의 S410'에서) 생성된 점수(R1)가 (도 4n에서 T 제스처 로 표시된) 임계치를 초과한다면 (S410"에서) 제스처 인식 메커니즘(들)(170)을 호출할 수 있다. 유사하게, 디바이스는 얼굴 검출 메커니즘(들)(168)에 의해 (예를 들어, 도 4k의 S412'에서) 생성된 점수(R2)가 (도 4n에서 T Face 로 표시된) 임계치를 초과한다면 (S412"에서) 얼굴 인식 메커니즘(들)(184)을 호출할 수 있다. 유사하게, 디바이스는 음성/스피치 검출 메커니즘(들)(176)에 의해 (예를 들어, 도 4k의 S414'에서) 생성된 점수(R3)가 (도 4n에서 T 스피치 로 표기된) 임계치를 초과한다면 (S414"에서) 음성/스피치 인식 메커니즘(들)(178)을 기동할 수 있다; 그리고, 디바이스는 기타의 인터페이스 검출 메커니즘(들)(190)에 의해 (예를 들어, 도 4k의 S416'에서) 생성된 점수(R4)가 (도 4n의 T 기타 로 표기된) 임계치를 초과한다면 (S416"에서) 기타의 인터페이스 메커니즘(들)(190)을 호출할 수 있다.
상호작용을 판정하는데 이용되는 다양한 메커니즘은 (예를 들어, 검출 메커니즘에 의해 생성된 점수 또는 가중된 점수에 기초하여) 동시에 진행되거나 어떤 미리정의된 순서로 진행될 수 있다는 점을 이해해야 한다. 본 기술분야의 통상의 기술자라면, 본 명세서를 읽을 시에, 시스템은 다양한 인식 메커니즘들이 호출되는 순서에 의해 어떤 식으로든 제한되지 않는다는 것을 이해할 것이다.
인식 메커니즘의 일부는 다른 것들과 함께 동작하거나 다른 것들과 통합될 수도 있다는 점도 이해해야 한다.
(예를 들어, 도 4n에서) 예시적 구현을 참조하여 설명된 임계치는 정적이거나 동적일 수 있고, 임의의 특정한 인식 메커니즘(들)의 호출은 상이한 및/또는 기타의 요인들에 기초할 수 있다. 일부 구현에서, 임계치들의 일부 또는 전부는 이전의 상호작용으로부터 디바이스가 학습하는 정보에 기초하여 수정될 수 있다. 본 기술분야의 통상의 기술자라면, 본 명세서를 읽을 시에, 시스템은 다양한 인식 메커니즘들을 호출하는데 이용되는 값이나 트리거에 의해 어떤 식으로든 제한되지 않는다는 것을 이해할 것이다.
도 4n의 도면으로부터 명백한 바와 같이, 가능한 상호작용을 검출(예를 들어, 시선 검출 및 얼굴 움직임 검출)하는데 이용되었던 메커니즘들 중 일부는 상호작용 인식 메커니즘에 의해 요구되지 않거나 이용되지 않을 수 있다. 따라서, 예를 들어, 일단 시선이 검출되면, 그 정보는 상호작용 인식을 트리거하는데 이용될 수 있지만, 실제의 인식에 의해 더 이상이 요구되지 않을 수 있다. (다양한 메커니즘들에 의해 생성된 점수 외에도) 검출 프로세스 동안에 이용된 정보의 일부는 인식 메커니즘에 제공될 수도 있다는 점을 이해해야 한다. 따라서, 예를 들어, (도 4n의 S412"에서 호출된) 얼굴 인식 메커니즘은 어떤 얼굴을 인식하려고 하는지를 알기 위하여 이미 시선 검출 메커니즘으로부터의 정보를 갖고 있을 수 있다. 대안으로서, 얼굴 및/또는 제스처 인식 메커니즘은 스스로 시선 검출 및/또는 얼굴 움직임 검출 메커니즘을 호출할 수 있다.
실제 상호작용의 처리
(S411에서) 실제의 상호작용을 판정하면, 디바이스는 (S413에서) 실제의 상호작용과 연관된 지시 또는 명령 또는 질의를 수행하도록 진행한다. (S411, S413에서) 실제의 상호작용을 판정 및/또는 수행하는 것은 디바이스 상에서 로컬로 이루어거나, 백엔드(104)로부터의(예를 들어, 데이터베이스(114)로부터의) 정보(또는 정보로부터의 혜택), 어떤 다른 엔티티(예를 들어, 소셜 네트워킹 서비스(들)(116) 또는 콘텐츠 제공자(들)(118) 등)와의 백엔드를 통한 상호작용 뿐만 아니라 추가 기능 엔티티(120)로부터의 처리 또는 보조를 요구할 수 있다. 실제의 상호작용을 수행하는 것은 또한, 또 다른 디바이스(102)와의 상호작용을 수반할 수 있다. 디바이스와 백엔드 사이의 상호작용은 도 1의 원호 #7에 대응한다; 백엔드 데이터베이스(들)(114)과의 상호작용은 원호 #8에 대응한다; 소셜 네트워킹 서비스(들)(116) 또는 콘텐츠 제공자(들)(118)과의 상호작용은 각각 원호 #9 및 원호 #10에 대응하고, 추가 기능 엔티티(120)와의 상호작용은 원호 #11에 대응한다. 다른 디바이스들과의 디바이스의 상호작용은 도 1의 원호 #1에 대응한다.
(S413에서의) 실제의 상호작용을 수행하는 것은 디바이스가 이전에 버퍼링된 정보(도 4i의 S404)를 이용할 것을 요구할 수 있다. 예를 들어, 디바이스가 스피치 상호작용일 수 있는 음향을 검출 및 버퍼링한다면, 사람이 디바이스를 보고(주시하고) 있는 것(예를 들어, 도 4j의 S420, 도 4k의 S420')을 디바이스가 또한 검출할 때까지(또는 검출하지 않는 한) 디바이스는 스피치 인식을 시작하지 않을 수 있다. 따라서 시선은 후속 스피치 인식(예를 들어, 도 4n의 S414")에 대한 트리거로서 동작한다. 이 접근법은 디바이스가 스피치, 또는 사람이 디바이스를 아직 응시하지 않으면서 제공하기 시작해서 디바이스를 보면서 계속 제공하는 기타의 정보(예를 들어, 제스처)를 포착하는 것을 허용한다. 기타의 상호작용(예를 들어, 제스처, 얼굴 움직임, 디바이스를 탭핑(tapping) 등)이, 이미 시작하였을 수 있는 상호작용을 포함하는, 상호작용의 후속된 인식을 위한 트리거로서 이용될 수 있다는 점을 이해해야 한다. 시스템은 잠재적 상호작용을 버퍼링하였기 때문에, 일단 하나 이상의 트리거링 이벤트가 발생하면 버퍼링된 정보를 이용할 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 센서(138)에 의해 검출 및/또는 측정될 수 있는 임의 종류의 정보가 버퍼링된 다음 하나 이상의 트리거링 이벤트가 검출된 후에 이용될 수 있다.
학습
앞서 언급된 바와 같이, 상호작용의 검출 및 인식에 이용되는 다양한 메커니즘들은 그들이 시간 및 사용의 경과에 따라 더욱 정확해질 수 있도록 학습 피처를 포함할 수 있다. 일부 경우에, 메커니즘은 특정한 사용자에 관해 학습하기 때문에, 그 메커니즘은 그 사용자에 대한 대응하는 코포라를 업데이트할 수 있다. 예를 들어, 스피치 인식 메커니즘은 특정한 사용자의 스피치를 학습하기 때문에, 그 특정한 사람과 연관된 스피치 코포라를 업데이트할 수 있다.
각각의 개별 메커니즘이 그 사용자와의 상호작용으로부터 학습하는 것 외에도, 디바이스 그 자체는 특정한 사용자가 디바이스와 어떻게 상호작용하는지를 학습하고 그 학습에 기초하여 그의 핸들링(handling)을 최적화할 수 있다. 예를 들어, 특정한 사용자가 스피치 명령과 조합하여 항상 동일한 제스처(예를 들어, 디바이스를 가리키기)를 이용한다면, 디바이스는 그 패턴을 학습할 수 있다. 이 예에서, 포인팅 제스처에는 스피치 인식에 대한 트리거로서 더 많은 가중치가 부여될 것이다. 또 다른 예로서, 특정한 사용자가 얼굴 움직임(예를 들어, 눈썹 들어올리기) 및 특정의 단어와 함께 항상 특정한 손 제스처를 이용한다면, 이들 피처들은 조합하여 디바이스에 의해 더 높은 가중치를 부여받을 수 있다.
다양한 운용 메커니즘이 도 4b의 도면에서 별개의 메커니즘으로서 도시되어 있지만, 이러한 분리는 단지 예로서 본 상세한 설명을 보조하기 위해 제공되는 것이지, 어떤 식으로든 본 설명의 범위를 제한하기 위한 것이 아니다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 도 4b에서의 분리는 요구되지 않으며, 메커니즘들의 일부 또는 전부는, 단일의 기능적 운용 메커니즘을 포함한, 상이한 및/또는 기타의 기능 유닛들로 결합될 수 있다는 것을 이해할 것이다. 예를 들어, 제스처 검출 및 인식 메커니즘(168, 170)은 단일의 제스처 메커니즘의 일부일 수 있다. 유사하게, 음성/스피치 검출 및 인식 메커니즘(176, 178)은 단일의 음성/스피치 메커니즘의 일부일 수 있다. 유사하게, 얼굴/시선 검출 및 인식 메커니즘(184, 186)은 단일의 얼굴/시선 검출 및 인식 메커니즘의 일부일 수 있다. 유사하게, 도 4c의 운용 메커니즘의 스토리지(155)의 논리적 도시는 본 상세한 설명을 보조하기 위해 제공되는 것이지, 어떠한 식으로든 본 상세한 설명의 범위를 제한하고자 함이 아니다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽고 나면, 상이한 및/또는 기타의 스토리지 조직구성이 가능하며 본원에서 고려된다는 점을 이해할 것이다.
디바이스 상태, 디바이스 준비 및 구성
본원에서 사용되는 경우, 프레임워크(100) 내의 디바이스(102)와 관련하여, 용어 "준비하기(provisioning)"란 디바이스에 의해 이용되는 다양한 시스템 메커니즘을 설치(또는 업데이트)하는 프로세스를 말한다. 준비는 디바이스 상에 펌웨어 또는 소프트웨어를 설치 및/또는 업데이트하는 것을 포함할 수 있다. 본원에서 사용되는 경우, 프레임워크(100) 내의 디바이스(102)와 관련하여, 용어 "구성하기(configuring)"란 디바이스에 의해 이용되는 다양한 메커니즘에 대한 운용 옵션 및/또는 파라미터를 구축 또는 설정하는 프로세스를 말한다. 예를 들어, 디바이스를 구성하는 것은, 디바이스에 대한 패스워드를 설정하는 것, 디바이스에 대한 네트워크 파라미터를 확립하는 것, 등을 포함할 수 있다.
이제 도 6a를 참조하면, 디바이스(102)는 다양한 준비 및 구성 상태에 있는 것으로 간주될 수 있다. 디바이스(102)는, 시스템 메커니즘을 아직 제공받지 않은 경우 준비-이전 상태(pre-provisioned state)에 있다. 디바이스(102)는, 시스템 메커니즘을 제공받았지만 아직 사용자(110)와 연관되지 않은 경우 일반 준비 상태(generic provisioned state)에 있다. 디바이스(102)는, 아직 구성되지 않은 경우 미구성 상태(unconfigured state)에 있다. 디바이스(102)는, 시스템(100) 상에서의 이용을 위해 구성되었지만 아직 특정 사용자(110)에 대해 구성되지 않은 경우 일반 구성 상태(generic configured state)에 있다. 디바이스(102)는, 특정 사용자(110)에 대해 준비된 경우 사용자-준비된 상태(user-provisioned state)에 있다고 말한다. 디바이스(102)는, 특정 사용자(110)에 대해 구성된 경우 사용자-구성된 상태(user-configured state)에 있다고 말한다. 디바이스(102)에 대한 (T1, T2 ... T6으로 표기된) 다양한 가능한 상태 천이들이 도 6a에 도시되어 있다. 이들 상태 및 천이들은 단지 설명과 예를 위한 것일 뿐이고, 여기서는 본 상세한 설명을 보조하기 위해 사용될 뿐이다. 이 시스템은 이들 다양한 상태들에 의해, 이들의 명칭이 무엇이건 어떤 상태 천이에 있건, 제한되지 않는다는 점을 이해해야 한다. 이들 상태와 천이는 디바이스 특정적 기능과는 독립적일 수 있다는 점도 이해해야 한다.
프레임워크(100) 내의 디바이스(102)를 준비 및 구성하는 것에는 2가지 양태가 있다. 제1 양태는 본질적으로 임의의 사용자와는 독립적이고 디바이스(102)가 모든 시스템 메커니즘의 당시의 및/또는 로컬화된 버전에 따르게 한다. 이 양태는 준비-이전으로부터 일반 준비로의 디바이스에 대한 상태 천이 T1, 및 가능하게는, 미구성으로부터 일반 구성으로의 천이 T2에 대응한다.
프레임워크(100) 내의 디바이스(102)를 준비 및 구성하는 제2 양태는 디바이스를 그 디바이스와 현재 연관된 특정 사용자(110)의 설정/요건에 따르게 한다. 이전에 일반적으로 준비된 또는 일반적으로 구성된 디바이스의 경우, 이 양태는 일반 준비됨으로부터 사용자 준비됨으로의 상태 천이 T3, 및 가능하게는 일반 구성됨으로부터 사용자 구성됨으로의 천이 T4에 대응한다. 특정한 사용자와의 디바이스의 연관은, 가능하게는 일시적으로만 또는 제한된 조건(예를 들어, 장소, 지속기간, 이용 등)하에서 변할 수 있다. 따라서, 준비 및 구성의 이 제2 양태는 또한, 상이한 사용자에 대해 사용자-준비된 디바이스가 준비되는 상태 천이 T5, 및/또는 상이한 사용자에 대해 사용자-구성된 디바이스가 구성되는 상태 천이 T6에 대응할 수 있다.
따라서 디바이스를 준비하는 프로세스는 모든 메커니즘들(예를 들어, 소프트웨어, 펌웨어 등)의 최신 버전을 디바이스 상에 설치하는 것을 포함할 수 있다. 디바이스(102)가 제조되는 경우, 제조사(108)는 통상적으로 디바이스 상에 (디바이스-특정적 기능에 대한 것들과 같은 기타의 메커니즘의 버전들과 함께) 시스템 메커니즘(134)의 버전을 설치한다. 그러나, 이들 버전들은 종종 제조시에도 오래된 것(out of date)이다. 따라서, 준비 프로세스에서, 부트스트랩/준비 메커니즘(152)은, 첫 전원 투입시에, 또는 심지어 디바이스가 배송 또는 판매되기 전에, 일부 또는 모든 메커니즘들(예를 들어, 소프트웨어, 펌웨어 등)을 업데이트할 수 있다. 일부 경우에, 디바이스(102)는 고정된 기간(예를 들어, 36시간) 이후에 파워업한 다음 모든 메커니즘을 업데이트하려고 시도하기 위하여 부트스트랩/준비 메커니즘(152)을 실행하도록 설정된 타이머를 이용하여 저전력 모드로 배송될 수 있다. 디바이스(102)는, 전원투입시, 인터넷에 접속하기 위해 알려진 무선(Wi-Fi) 네트워크 또는 기타의 방법을 탐색할 것이다. 바람직하게는, 디바이스는 (그 일반 구성의 일부로서) 알려진 및 신뢰되는 네트워크에 대한 정보로 미리구성되고(pre-configured), 디바이스는 이들 네트워크를 이용하여, 업데이트가 획득될 수 있는 알려진 및 신뢰되는 소스 로케이션(source location)에 네트워크(101)를 통해 접속한다. 일단 네트워크 접속이 발견 및 구축되면, 디바이스(102)는 신뢰되는 소스로부터 자신의 업데이트를 시작할 수 있다. 이런 방식으로, 디바이스가 사용자에게 도착하면(예를 들어, 디바이스가 사용자에게 판매된 후에), 디바이스는 모든 메커니즘의 가장 현재의 버전(또는 최근 버전)을 가져야 하고 그 사용자를 위해 완전히(또는 실질적으로 완전히) 준비되어야 한다.
코포라를 요구할 수 있는 메커니즘(예를 들어, 스피치 인식, 제스처 인식 등)의 경우, 초기에 일반 코포라가 디바이스에 설치된다.
바람직하게는 각 디바이스(102)는 디바이스가 백엔드(104)와의 보안 콘택트를 확립하는 것을 허용하기 위해 충분한 정보를 이용하여 (예를 들어, 제조시에) 구성된다. 이 목적을 위해, 디바이스에 대한 초기 일반 구성은, 디바이스와 백엔드(104) 사이의 보안 무선(예를 들어, 셀룰러, WiFi, 블루투스 또는 BLE) 통신을 지원하기 위해 다양한 무선 네트워크 및/또는 일반 인증서(generic credentials)에 대한 이름과 패스워드를 포함할 수 있다. 용어 보안이란, 본원에서는, 신뢰받을 수 있고 바람직하게는 스푸핑되지 않은(not spoofed) 통신 채널을 말하기 위해 사용되는 것이다. 보안의 정도는 디바이스의 타입의 기능이며, 상이한 디바이스 타입들은 디바이스-대-디바이스 및 디바이스-대-백엔드 통신에 대해 상이한 정도의 보안을 요구할 수 있다.
제조사에 의한 그리고 디바이스가 임의의 사용자와 연관될 때까지의 처리는 도 6a의 상태 천이 T1(및 가능하게는 T2)에 대응한다.
시스템(100)을 이용하는 것에 관해 이러한 방식으로 동작하기 위하여, 각 디바이스(102)는 바람직하게는 사용자(110)와 연관된다. 디바이스는 어떤 사용자와도 연관되지 않을 수 있지만(예를 들어, 처음 제조시에), 디바이스는 한 명보다 많은 소유자와(및 바람직하게는 한 번에 한 명보다 많은 사용자와) 연관되지 않을 수 있다. 본원에서 설명되는 바와 같이, 디바이스(102)는 한 명보다 많은 사람 또는 사용자(110)에 의해 이용될 수 있지만, 시스템(100) 내에서, 디바이스는 오직 단일의 사용자와 연관된다.
일부 경우에, 디바이스는, 디바이스(102)의 제조 이전에, (예를 들어, 사용자가 디바이스를 주문 또는 구매하고 사용자 식별(사용자 아이덴티티)을 제공한다면) 제조 및/또는 준비 프로세스의 준비 단계의 일부로서 사용자와 연관될 수 있다.
(전술된) 제1 준비 프로세스는 디바이스가 사용자와 연관되지 않고 발생할 수 있다. 제2 레벨의 준비 및 구성은 바람직하게는, 일단 디바이스(102)가 사용자(110)와 연관되면 발생한다. 특히, 일단 디바이스(102)가 사용자와 연관되면, 그 디바이스(102)는 그 사용자로부터 구성 정보(예를 들어, 네트워크 ID 및 패스워드 등의 무선 네트워크 정보)를 획득할 수 있다. 디바이스가 특정한 사용자에 대해 구성되는 경우, 그 디바이스는 사용자 데이터베이스(130)로부터 그 사용자에 대한 정보를 획득할 수 있다. 예를 들어, 디바이스(102)는, 사용자 프로파일 정보, 사용자 로컬 코포라, 및/또는 사용자에 대한 구성 정보를 획득할 수 있다. 이 정보는, 예를 들어, 운용 메커니즘(155)에 의한 이용을 위해 디바이스에 의해 저장될 수 있다. 예를 들어, 디바이스(102)는 사용자 데이터베이스(130)로부터 사용자 로컬 코포라를 취득하고 이들 코포라를 디바이스 상의 대응하는 적절한 인터페이스 메커니즘의 스토리지(163)에 저장할 수 있다. 이런 방식으로, 사용자가 이미 특정한 디바이스 또는 디바이스 종류를 이용했다면, 새로이 취득된 디바이스는 그 사용자와의 다양한 상호작용을 검출 및 인식하기 위해 재훈련될 필요가 없다.
사용자 데이터베이스(130)로부터의 일부 정보(예를 들어, 사용자의 디바이스 목록 ― 그 사용자가 소유한 디바이스들의 디바이스 ID 목록, 및 사용자의 친구 목록 ― 사용자의 친구들의 사용자 ID 목록)는 디바이스 상에서 (예를 들어, MD5 등의 암호 해쉬(cryptographic hash)를 이용하여) 단방향(one-way) 인코딩으로 인코딩될 수 있다. 이런 방식으로 디바이스 ID 및 사용자 ID는 노출되지 않지만, (이하에서 설명되는 바와 같이) (예를 들어, 2개 디바이스들 사이의 가능한 관계를 평가하기 위해) 목록 내의 정보가 이용될 수 있다.
디바이스 및 사용자 데이터베이스는 바람직하게는 (바람직하게는 실시간으로) 업데이트되어 각 디바이스의 준비 및 구성 상태를 반영하여, 바람직하게는 디바이스 데이터베이스가 시스템 내의 각 디바이스의 상태와 구성의 현재의 뷰를 제공할 수 있게 한다. 네트워크(101)에 접속되지 않거나 접속할 수 없거나 일부 다른 방법(예를 들어, 셀룰러 시스템)을 이용하는 디바이스들은 백엔드로의 정보 제공을 지연할 수 있다는 점을 이해해야 한다. 그러나, 바람직하게는 각 디바이스는 네트워크(101)에 접속되어 있는 동안 및 네트워크(101)에 재접속하는 경우 백엔드를 그의 상태 정보를 이용하여 업데이트한다. 유사하게, 디바이스(102)가 소정 방식으로 백엔드(104)에 접속하는 경우, 그 디바이스는 바람직하게는 백엔드로부터, 디바이스의 사용자에 관한 임의의 업데이트를 포함하는, 업데이트를 획득한다.
특히, 각 디바이스(102)는 디바이스 데이터베이스(128) 내의 코포라를 정기적으로 업데이트하여 디바이스 상에 현재 코포라를 반영해야 한다. 이들 업데이트는 정기적 스케쥴링 기반으로(예를 들어, 하루에 한 번) 또는 디바이스가 (백엔드(104)를 통해) 데이터베이스에 접속하여 디바이스 데이터베이스가 업데이트를 필요로 한다고 결정할 때마다 발생해야 한다.
또한, 사용자 데이터베이스(130) 내의 코포라 정보는 각 사용자의 디바이스(들) 상의 코포라의 현재 상태를 반영해야 한다. 따라서, 사용자 데이터베이스(130)는 (예를 들어, 디바이스 데이터베이스와 동일한 방식으로) 업데이트되어 그 사용자에 대한 가장 최근 코포라를 반영해야 한다. 사용자 데이터베이스(130)는 사용자 로컬 코포라 또는 사용자 확장형 코포라(user extended corpora)를 포함할 수 있다. 사용자 로컬 코포라는 사용자의 디바이스 상의 코포라에 대응한다. 사용자 확장형 코포라는 사용자 상호작용을 처리하기 위해 백엔드 또는 기타의 외부 시스템(예를 들어, 추가 기능(120))에 의해 이용되는 코포라에 대응한다. 예를 들어, 사용자 로컬 코포라는 디바이스(102)가 이용할 수 있는 제한된 스피치 인식 코포라를 포함하는 반면, 사용자 확장형 코포라는 예를 들어 추가 기능(120)에 의해 이용될 수 있는 그 사용자에 대한 확장된 스피치 인식 코포라를 포함할 수 있다.
각 사용자에 대한 코포라는 사용자의 디바이스의 종류 또는 능력에 기초하여 사용자 데이터베이스(130) 상에서 조직구성 또는 저장될 수 있다. 이것은 시스템이 복수 종류의 디바이스를 지원하는 것을 허용한다. 사용자가 사용자 데이터베이스(130)를 특정한 디바이스로부터의 코포라를 이용하여 업데이트하면, 데이터베이스는 바람직하게는 이들 코포라를 디바이스의 종류 및 능력에 기초하여 저장한다.
바람직하게는 디바이스 데이터베이스(128) 및 사용자 데이터베이스(130)는 코포라의 이전 버전들을 유지한다.
일부 경우에 사용자는 동일한 타입의 복수의 디바이스들(예를 들어, 복수의 스피커들)을 가질 수 있다. 사용자의 디바이스들(특히 동일한 타입의 디바이스들) 각각 상의 코포라가 그 디바이스의 타입에 대한 그 사용자의 코포라의 가장 현재의 버전을 갖는 것이 바람직하다. 따라서, 각 디바이스는 백엔드와 정기적으로 콘택트하여 백엔드가 코포라의 가장 최신 버전을 갖고 있는지를 판정해야 한다. 그렇지 않다면, 디바이스는 사용자 데이터베이스(130)로부터 코포라의 가장 최신 버전을 획득할 수 있다.
디바이스의 준비 및 구성은, 일단 먼저 사용자와 연관되면, 도 6a의 상태 천이 T3(및 가능하게는 T4)에 대응한다.
디바이스 제조 및 준비하기
도 6b 내지 도 6i는 디바이스(102)의 제조의 예를 도시한다. 디바이스 제조사(device manufacturer)(108)는 바람직하게는 시스템-인에이블형 디바이스(102)를 형성하기 위해 시스템(100)에 의해 인가된다.
도 6b의 예에서, 각 디바이스는 제조사에 의해 제공된 고유한 일련 번호를 가지며, 각 디바이스는 디바이스의 고유 일련 번호의 함수인 디바이스 ID를 가진다. 도 6c의 예에서, 이하에서 설명되는 바와 같이, 각 디바이스는 M 시스템에 의해 제공된 고유의 일련 번호를 가진다. M 시스템에 의해 이용되는 고유의 일련 번호는 디바이스 제조사에 의해 이용되는 다른 일련 번호와는 상이할 수 있다는 점을 이해해야 한다.
도 6b 및 도 6c의 도면을 참조하여, 일 실시예에서, 디바이스 제조사(108)는 디바이스 일련 번호들을 (개별적으로 또는 일괄(batch)로) (백엔드(104)의 일부일 수 있는) 디바이스 인증서 생성기(Device Certificate Generator, 172)에 (S601에서) 제공한다. 디바이스 인증서 생성기(172)는 제조사에 의해 제공된 디바이스 정보(예를 들어, 일련 번호)를 이용하여 그 디바이스(즉, 일련 번호와 연관된 또는 연관될 디바이스)에 대한 고유 디바이스 ID를 (S602에서) 작성한다. 그 고유 디바이스 ID는 (S603에서) 디바이스 CA(124)에 전송되고, 디바이스 CA(124)는 이것을 디바이스 CA(124)에 의해 서명된 인증서 내에 넣는다. 그 다음, 디바이스 CA(124)는 (S604, S605에서) 디바이스 내에 넣을 서명된 인증서를 제조사에 다시 전송한다. 고유 디바이스 ID를 갖는 서명된 인증서는 디바이스의 인증서(150)에 저장된다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, (S601에서 제조사(108)에 의해 제공된 것 이외의 또는 이에 추가하여) 상이한 및/또는 다른 정보가 (S602에서) 디바이스 인증서를 생성하기 위해 디바이스 인증서 생성기에 의해 이용될 수 있다는 것을 이해할 것이다.
바람직하게는 (S602에서) 제조사에 의해 제공된 정보는 또한 디바이스의 능력 및/또는 컴포넌트에 대한 정보를 포함한다.
일단 디바이스 인증서가 생성 및 서명되면, (가능하게는 인증서의 사본을 포함하는) 그 인증서에 대한 정보는 (S606에서) 백엔드(112)에 전송된다. 인증서와 연관된 디바이스 ID는 디바이스 데이터베이스(128)에 의해 데이터베이스에 대한 키 또는 인덱스로서 이용될 수 있다. 백엔드(104)가 디바이스 ID를 생성하는데 이용되는 정보를 제공하였으므로, 디바이스에 대한 정보(예를 들어, 그 능력)는 백엔드가 이미 알고 있을 수 있고, 따라서, 이들은 디바이스 데이터베이스(128)에서의 디바이스 ID와 연관될 수 있다.
바람직하게는 인증서 내의 정보는 암호화되어 디바이스에 의해 적절한 암호해독 키로만 판독될 수 있다.
일단 디바이스 인증서가 (예를 들어, 디바이스 인증서 생성기(172)를 통해) 백엔드(104)에 의해 생성되면, 그 인증서는 단지 (인증서와 연관되었던 고유 디바이스 ID를 갖는) 단일의 디바이스와 연관될 수 있다는 점을 이해해야 한다. 일부 이유로 디바이스가 비활성 또는 분실된다면(또는 결코 실제로 제조되지 않는다면), 디바이스 ID와 인증서는 재사용되어서는 안 된다.
(S601, S605 및 S606에서의) (디바이스 인증서 생성기(172)를 통한) 제조사(108)와 백엔드(104) 사이의 상호작용은 도 1에서 상호작용 #13에 대응한다. (디바이스 인증서 생성기(172)를 통한) 디바이스 CA(124)와 백엔드(104) 사이의 상호작용은 도 1에서 상호작용 #6에 대응한다.
일부 경우에, 디바이스 인증서 생성기(172)는, 제조사로부터의 일련 번호 목록에 기초하여 제조사에게 벌크로(in bulk) 인증서를 제공할 수 있다.
대안적인 및 현재 바람직한 실시예에서, 시스템은 일련 번호 및 연관된 인증서의 블록을 생성(또는 획득)하고, 이들 일련 번호 및 인증서를 블록으로 제조사에 제공한다. 따라서, 도 6d 및 도 6e의 도면을 참조하면, 백엔드(104)는 일련 번호를 생성하고 이들을 (S651에서) 디바이스 인증서 생성기(172')에 제공한다. 이전 예에서와 같이, 디바이스 인증서 생성기(172')는 백엔드(104)의 일부이거나 및/또는 이와 함께 위치할 수 있다.
디바이스 인증서 생성기(172')는 백엔드에 의해 제공된 정보(예를 들어, 일련 번호)를 이용하여 일련 번호와 연관된 또는 연관될 디바이스에 대한 고유 디바이스 ID를 생성한다. 그 고유 디바이스 ID는 (S653에서) 디바이스 CA(124)에 전송되고, 디바이스 CA(124)는 이것을 디바이스 CA(124)에 의해 서명된 인증서 내에 넣는다. 그 다음 디바이스 CA(124)는 (S654에서) 서명된 인증서를 다시 디바이스 인증서 생성기(172')에 전송하고, 디바이스 인증서 생성기(172')는 (S655에서) 이것을 다시 백엔드에 전송한다. 고유 디바이스 ID를 갖는 서명된 인증서는 디바이스의 인증서(150)에 저장된다.
인증서 내의 정보는 바람직하게는 인가된 디바이스에 의해서만 판독될 수 있도록 암호화된다. 디바이스 인증서 생성기(172')는 인증서를 디바이스 CA(124)에 제공하기 이전에 일련 번호와 고유 디바이스 ID를 암호화할 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 백엔드(104)는 일련 번호를 제공하고 있기 때문에, 이들 번호들은 적어도 부분적으로 디바이스 ID를 형성하는데 이용될 수 있다는 것을 이해할 것이다.
백엔드(104)는 (S656에서) 디바이스 제조사(108)에게 일련 번호 및 대응하는 인증서, 바람직하게는 이러한 번호와 인증서들의 블록을 제공한다. 제조사는 디바이스 내의 이들 인증서들의 일부 또는 전부를 이용하고, (S657에서) 백엔드(108)에게 제조사가 이용하는 일련 번호/인증서 목록을 제공할 수 있다.
백엔드는 모든 일련 번호 목록과 모든 인증서 사본을 갖기 때문에, 이용된 번호들을 추적할 수 있고 이로써 제조사에 의해 제공된 정보를 검증할 수 있다는 것을 이해해야 한다. 예를 들어, 제조사가 특정한 디바이스에서의 특정한 일련 번호의 이용을 보고하지 못하면, 백엔드는 그 특정한 디바이스가 시스템에 접속할 때 그 일련 번호의 이용을 검출할 것이다. 유사하게, 제조사가 복수의 디바이스에서 동일한 일련 번호/인증서 조합을 이용한다면, 백엔드는 그 복제를 검출할 것이다.
도 6e의 흐름도는 도 6d에 기술된 제조 실시예의 양태를 도시한다. 도 6e의 점선 수직선은 어떤 양태가 시스템에 의해 수행되고 어느 양태가 제조사에 의해 수행되는지를 도시하기 위해 제공된 것이다. 시스템은 (S661에서) 일련 번호와 인증서를 생성하고 이들을, 바람직하게는 번호/인증서의 블록들로, (S662에서) 백엔드에 제공한다. 제조사는 (S663에서) 번호/인증서 블록을 취득하고 (S664에서) 이들 중 일부를 디바이스들에서 이용한다. 제조사는 (S665에서) 어느 일련 번호/인증서를 자신이 이용했는지를 보고하고 백엔드는 (S666에서) 이용된 일련 번호/인증서 목록을 얻는다.
일부 구현에서, 제조사는 (S665에서) 디바이스 타입, 능력 등의 추가 정보를 보고할 수 있다.
준비, 구성, 및 사용자와 연관시키기
(도 6a에서, 각각 상태 변화 T1 및 T2에 대응하는) 디바이스(102)의 예시적 초기 준비 및 구성이 도 6f의 흐름도에 도시되어 있다. 이 단계에서, 디바이스는 (전술된) 연관된 디바이스 ID를 가진다고 가정한다. 제조사는 (S608에서) 디바이스(102)에 대해 필요한 요구되는 메커니즘 및 기타의 컴포넌트(예를 들어, 시스템 메커니즘(134), 센서(138), 통신(142))을 제공한다. 이들 메커니즘 및 기타의 컴포넌트는 디바이스 특정적 컴포넌트에 대한 접속을 갖는 단일 보드 또는 키트의 형태로 제공될 수 있거나, 디바이스 특정적 컴포넌트와 완전하게 또는 부분적으로 통합될 수 있다. 키트 또는 보드로서 제공되는 경우, 모든 컴포넌트들이 활성일 수 있거나 활성화될 수 있는 것은 아니다. 예를 들어, 소정 컴포넌트는, 디바이스의 위치, 디바이스의 종류에 기초하여, 또는 사용자들이 그들의 후속 활성화(activation)에 대한 추가 요금을 청구받을 것이기 때문에 비활성화될 수 있다.
메커니즘들이 설치되면, 디바이스는 (S610에서) 초기 구성을 제공받는다. 초기 구성은, 필요하다면, 다양한 메커니즘들에 대한 일반 코포라를 포함할 수 있다. 초기 구성은 또한 백엔드로의 디바이스의 접속을 지원하는 정보(예를 들어, 알려진 또는 신뢰되는 네트워크에 대한 정보 등)를 포함할 수 있다.
바람직하게는, 디바이스는, 버전 정보 및 코포라 상세사항을 포함하는, 모든 메커니즘들 및 그들의 현재의 구성 상태의 목록 또는 명단을 유지한다. 일단 디바이스가 (예를 들어, 제조 동안에) 초기에 준비 및 구성되면, 그 현재 명단이 (S612에서) 디바이스와 연관된 데이터베이스 엔트리 내의 저장을 위해 백엔드에 제공된다.
앞서 언급된 바와 같이, 준비된/구성된 디바이스는 (S614에서) 사용자와 연관되기 이전에 그 메커니즘과 구성을 업데이트할 수 있다. 예를 들어, 디바이스는 배송 동안에 그 펌웨어를 업데이트하기 위해 알려진/신뢰되는 Wi-Fi 접속을 이용할 수 있다. 이러한 업데이트는, (S616에서) 디바이스 및 디바이스 데이터베이스 양쪽 모두에서, 디바이스의 명단에 반영되어야 한다. 디바이스 데이터베이스는 디바이스에 대한 업데이트의 이력을 유지할 수 있다. 디바이스에 의해 이용되는 일부 메커니즘(예를 들어, 음성/스피치 인식, 제스처 인식 등)은 제3자(third parties)에 의해 제공될 수 있다. 이들 경우에, 메커니즘은 펌웨어 및/또는 코포라를 그와 함께 포함시키고, 이들 컴포넌트들에 대한 업데이트는 제3자로부터 획득되어야 할 수 있다.
사용자 등록
각 사용자(110)는 시스템(100) 내에서 적어도 하나의 고유 사용자 아이덴티티(ID)를 가져야 한다는 점을 상기한다. 바람직하게는, 각 사용자(110)는 시스템(100)에 등록함으로써 자신의 사용자 ID를 획득한다. 사용자 등록은, 오프라인 프로세스를 통해, 백엔드에 대한 웹 인터페이스를 통해, 또는 디바이스(102)를 통해 발생할 수 있다. 사용자는 임의의 디바이스(들)(102)을 갖기 이전에 등록할 수 있다. (전술된) 사용자 등록의 일부로서, 각 사용자는 시스템(100) 내에서 고유해야 하는 사용자 ID를 가진다. 일단 사용자가 등록하면, 그 사용자에 대한 엔트리가, 바람직하게는 주로 사용자의 사용자 ID에 관해 키잉(keyed) 또는 인덱싱된(indexed) 사용자 데이터베이스(130) 내에 만들어진다. (사용자 ID에 대응하는) 사용자의 데이터베이스 엔트리는 (예를 들어, 양식 또는 설문지를 통해) 사용자에 의해 제공된 정보 및/또는 시스템이 사용자가 (직접적으로 또는 간접적으로) 제공하는 정보에 기초하여 획득하거나 추론할 수 있는 정보를 포함하도록 등록 프로세스 동안에 채워진다(populated). 예를 들어, 사용자가 소셜 네트워크 ID를 이용하고 소셜 네트워크를 통해 등록한다면, 소셜 네트워크로부터의 사용자에 대한 정보가 데이터베이스에 포함될 수 있다.
사용자 데이터베이스(130)는 바람직하게는 사용자 ID를 이용하여 인덱싱되지만, 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 기타의 키가 사용자 데이터베이스 내의 데이터를 액세스하는데 이용될 수 있다는 것을 이해할 것이다.
언급된 바와 같이, 복수의 디바이스(102)는 각 사용자(110)와 연관될 수 있다. 디바이스는 바람직하게는 어떠한 계층적 상태도 갖지 않지만, 사용자가 획득하는 제1 디바이스를 구성하는 프로세스를 기술하는 것이 유용할 것이다.
도 2에 도시된 바와 같이, 각 사용자는 바람직하게는 그 사용자의 사용자 ID 및 저장된 연관된 사용자 인증서(175)를 갖는 적어도 하나의 사용자 디바이스(174)(예를 들어, 스마트폰 등)를 가진다. 사용자 디바이스(174)는 또한 (예를 들어, 사용자 디바이스(174) 상에서 실행중인 애플리케이션(앱) 형태의) 하나 이상의 시스템 메커니즘(178)을 가질 수 있다. 시스템 메커니즘/사용자 앱(178)은 사용자에게 시스템(100) 내에서 사용자 디바이스(174)를 구성하는 방식 뿐만 아니라 사용자 디바이스의 다른 양태들을 구성하는 방식을 제공한다. 특히, 사용자 디바이스(174)는 사용자에게 Wi-Fi 및 (로컬 Wi-Fi 네트워크에 대한 식별 데이터, 서비스 세트 식별자(SSID), 및 패스워드 등의) 기타의 네트워크 정보를 설정하는 방식을 제공할 수 있다. 이 정보는 사용자 디바이스(174) 상에서 구성 정보(180)(도 2)로서 저장될 수 있고 또한 사용자 데이터베이스(130) 내에 사용자와 연관된 구성 정보(도 3a)로서 저장될 수 있다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 이 구성 정보가 민감하고 (예를 들어, 암호화를 통해) 비밀로 유지되어야 한다는 것을 이해할 것이다.
사용자 디바이스(174)는 디바이스(102)의 한 사례일 수 있다는 점을 이해해야 한다.
예시적 사용자 등록이 도 6g를 참조하여 설명된다. 우선, (S620에서) 사용자는 (예를 들어, 전술된 바와 같이) 시스템으로부터 사용자 ID를 획득한다. 시스템은 그 다음, (S622에서) (바람직하게는 사용자 ID에 관해 키잉 또는 인덱싱된) 그 사용자에 대한 사용자 데이터베이스 엔트리를 작성한다. 시스템은 그 다음, (S624에서) 그 사용자에 대한 데이터베이스 필드를 채운다.
디바이스를 사용자와 연관시키기
각 디바이스(102)는 디바이스가 시스템(100) 내에서 완전히 동작하기 위하여 사용자(110)와 연관될 필요가 있다. 임의의 사용자와 연관되지 않은 디바이스는 여전히 그 디바이스-특정적 기능의 일부 또는 전부를 제공할 수 있을 것이라는 점을 이해해야 한다.
사용자가 디바이스(102)(예를 들어, 새로운 디바이스)를 취득하면, 그 디바이스는 그 사용자와 연관될 필요가 있다. 사용자와의 디바이스의 예시적 연관이 도 6h를 참조하여 설명된다. 먼저 (S626에서), 디바이스는 디바이스의 사용자 및 사용자 데이터베이스(128, 130)와 연관된다. 디바이스 데이터베이스(128)에서, 디바이스의 소유자는 사용자의 사용자 ID로 설정된다. 사용자 데이터베이스(130)에서, 디바이스의 고유 디바이스 ID는 사용자의 사용자 ID와 연관된 디바이스에 추가된다. 디바이스에 대한 정보는 사용자 데이터베이스(130) 내의 다른 필드에 추가될 수 있고 이력이 업데이트되어 이 디바이스와 사용자의 연관을 반영할 수 있다.
일부 실시예에서, 디바이스는 사용자의 또 다른 디바이스를 이용하여 사용자가 디바이스를 터치(또는 탭핑)하게 함으로써 사용자와 연관되게 될 수 있다. 바람직한 실시예에서, 특정한 디바이스가 어떠한 사용자에 의해서도 아직 소유되어 있지 않다면, 그 특정한 디바이스가 또 다른 디바이스에 의해 처음으로 탭핑될 때, 그 특정한 디바이스는 그 다른 디바이스의 사용자와 연관되게 된다. 그 특정한 디바이스는 백엔드 데이터베이스(들)로부터 및/또는 그것을 탭핑한 사용자의 디바이스로부터 사용자의 구성 정보를 획득할 수 있다(도 6h의 S628). 특정한 디바이스가 이미 사용자와 연관되어 있다면, 또 다른 디바이스로부터의 후속 터치(또는 탭핑)는 그 특정한 디바이스에 대한 임시 퍼미션을 제공하는데 이용될 수 있는데, 예를 들어, 디바이스들이 일부 방식으로 결합되는 것을 허용하거나 그 특정한 디바이스가 그 특정한 디바이스를 탭한 디바이스로부터 일부 구성 정보를 (바람직하게는 임시로) 계승하는 것을 허용할 수 있다. 일단 디바이스들이 (예를 들어, 터치에 의해) 쌍을 이루고 나면, 이들은 블루투스, BLE 또는 WiFi 신호 등을 통해 정보를 공유할 수 있다. 정보를 공유하는 것은 복수의 형태일 수 있는데, 예를 들어, 메타데이터가 블루투스를 통해 공유되면서 콘텐츠(예를 들어, 음악 또는 비디오 콘텐츠)가 WiFi를 통해 공유될 수 있다는 것을 이해해야 한다. 또한, 이전에 쌍을 이루었던 2개의 디바이스는 (예를 들어, 범위 내의 블루투스 신호에 의해) 서로의 존재를 검출하여 협력을 계속하거나 재구축할 수 있다.
바람직하게는 각 디바이스는 그 디바이스와 연관된 사용자(들)에 대한 일부 정보(예를 들어, 도 4a의 시스템 메커니즘(들)/데이터(134))를 유지한다. 디바이스 상의 정보는 사용자에 대한 정보를 반영하도록 (S628)에서 업데이트될 수 있다. 이 정보는 사용자 데이터베이스(130) 내의 사용자의 사용자 ID와 연관된 정보의 적어도 일부를 포함할 수 있다. 예를 들어, 디바이스(102) 상에 저장된 정보는, 사용자의 사용자 ID, 사용자의 프로파일로부터의 정보, 사용자와 연관된 다른 디바이스에 대한 정보, 사용자의 친구들에 대한(예를 들어, 그들 각각의 사용자 ID에 의한) 정보, 사용자 인증서, 사용자 코포라, 및 사용자 구성 정보를 포함할 수 있다. 디바이스 상의 사용자 정보의 적어도 일부는 바람직하게는 보안된 방식으로, 예를 들어, 암호화된 형태로 저장 및 유지되어야 한다는 점을 이해해야 한다.
일단 디바이스가 (S628에서) 사용자의 정보를 포함하도록 업데이트되면, 디바이스 데이터베이스(128)는 (S630에서) 디바이스에 행해진 변경을 반영하도록 업데이트될 필요가 있을 수 있다. 예를 들어, 사용자의 국지적 코포라가 (디바이스에 이미 존재하고 있는 어떠한 코포라, 예를 들어, 일반 코포라를 대체하여) 디바이스에 저장된다면, 디바이스 데이터베이스(128)는 이 정보를 (디바이스 코포라 및 디바이스 이력에서) 반영하도록 업데이트되어야 한다.
시스템(100)에서 디바이스를 특정한 사용자(110)와 연관시키는, 본원에서 설명된 예시적 프로세스는, 도 6a에서, 일반 준비됨으로부터 사용자 준비됨으로의 상태 변화 T3, 및 일반 구성됨으로부터 사용자 구성됨으로의 T4에 대응한다.
사용자가 시스템과 이전에 사용되었던(및 그에 따라 또 다른 사용자와 연관되어 있는) 디바이스를 취득한다면, 디바이스는 먼저, 어떤 연관된 사용자 정보도 갖지 않는 상태로 복구될 필요가 있을 수 있다. 디바이스는 그의 공장 설정(또는 사용자-이전(pre-user) 설정)으로 복구하는 임의의 기술에 의해 복구될 수 있다. 이러한 종류의 리셋은, 도 6a에서, 사용자 준비됨으로부터 일반 준비됨으로의 상태 변화 T3', 및 사용자 구성됨으로부터 일반 구성됨으로 돌아가는 T4'에 대응한다.
구성 정보를 디바이스와 연관시키기
언급된 바와 같이, 디바이스는, 디바이스가 먼저 사용자와 연관되는 경우, 사용자 데이터베이스(130)로부터(또는 또 다른 디바이스로부터) 사용자 구성 정보를 획득할 수 있다(도 6h의 S628). 그러나, 사용자 정보가 변할 때(예를 들어, 사용자가 시스템 내의 새로운 친구를 얻거나 사용자가 무선 네트워크 정보를 업데이트 또는 새로운 무선 네트워크 정보를 갖거나, 사용자가 새로운 셀룰러 통신 정보를 가질 때 등), 그 정보는 데이터베이스로부터 디바이스로(및 그 반대로) 전파되어야 한다. 따라서, 도 6h에 도시된 바와 같이, (S628에서) 사용자의 구성 정보를 디바이스에 제공하는 것, 및 (S630에서) 사용자 및 디바이스 데이터베이스(128, 130)를 업데이트하는 것은 (가능할 경우) 필요하다면 반복된다. 예를 들어, 디바이스는 (예를 들어, 백엔드(104)에 접속할 수 있는 경우) 데이터베이스를 검사하여 사용자 정보의 가장 최근 버전을 갖고 있는지를 판정할 수 있다. 일부 경우에, 백엔드는 디바이스에 통보를 푸시하여 디바이스에게 사용자 정보에 대한 업데이트에 관해 경고하려고 할 수 있다. 디바이스는 사용자의 정보에 대해 변경할(변경을 야기할) (예를 들어, 디바이스가 코포라 또는 네트워크 구성 정보를 업데이트했을) 수 있으므로, 이들 변경은 또한 디바이스 및 사용자 데이터베이스에 다시 전파될 필요가 있다. 이 프로세스가 도 6i에 반영되어 있으며, 도 6i는 (S632에서) 디바이스로부터 백엔드(104)로 정보를 (필요할 때 또는 가능할 때) 반복적으로 제공한 다음 (S634에서) 사용자와 디바이스 데이터베이스를 그에 따라 업데이트하는 것을 도시한다. 특정한 사용자에 대한 사용자 데이터베이스(130)에 대한 임의의 업데이트는 대응하는 업데이트가 사용자의 디바이스에 전송되고 대응하는 업데이트가 디바이스 데이터베이스(128)에 전송될 것을 요구할 수 있다는 점을 이해해야 한다. 예를 들어, 사용자가 복수의 디바이스를 갖고 있고, 코포라 및/또는 구성 정보가 이들 디바이스들 중 하나에서 변경된다면, 코포라 및/또는 구성 정보가 그 사용자의 다른 디바이스에 전파되어야 한다. 이런 방식으로, 사용자는 그들 디바이스들 모두를 독립적으로 또는 별개로 훈련하거나 구성해야 할 필요가 없고, 각 디바이스는 그 사용자의 다른 디바이스에 적용된 훈련 및 구성으로부터 혜택을 받을 수 있다.
사용자의 디바이스들은 서로간에 및/또는 사용자 및 디바이스 데이터베이스(128, 130) 내의 정보와 동기화가 되어 있지 않을 수 있다는 점을 이해해야 한다. 이것은, 예를 들어, 디바이스가 소정 시간 기간 동안에 백엔드에 접속할 수 없는 경우에 발생할 수 있다. 시스템은 바람직하게는 디바이스와 데이터베이스를 동기화하기 위하여 충돌 해결 기술을 적용한다. 예시적 충돌 해결 접근법은 가장 현재 버전의 구성 및 코포라 정보를 선택하기 위해 타임 스탬프를 이용할 수 있다. 또 다른 예시적 충돌 해결 접근법은, 사용자 데이터베이스 내의 구성 및 코포라 정보의 버전이 정확하다고 항상 가정할 수 있다.
바람직하게는, 사용자 개입없이 임의의 충돌 해결 기술이 수행될 수 있지만, 사용자는 (예를 들어, 전화(174) 등의 사용자 디바이스 상의 앱을 통해 또는 웹 인터페이스를 통해) 사용자가 특정 구성 및/또는 코포라를 선택하는 것을 허용하는 백엔드 및/또는 그 사용자 디바이스에 대한 인터페이스를 제공받을 수 있다. 일부 구현에서, 사용자는 그들의 디바이스에 대한 업데이트를 강제(예를 들어, 푸시)할 수 있다.
코포라에 의한 유의사항
코포라는, 예를 들어, 디바이스(102) 내의 다양한 인터페이스 메커니즘(162)에 의해 이용된다. 예를 들어, 음성/스피치 인식 메커니즘(들)(178)은 (디바이스(102) 상에 저장된) 로컬 스피치 코포라를 이용할 수 있다. 그러나, 본 기술분야의 통상의 기술자라면 이해하는 바와 같이, 음성/스피치 인식은, 동일한 음성/스피치 인식 메커니즘(들)(178)의 경우에도, 다수의 인자에 의해 영향받을 수 있다. 예를 들어, 입력 센서(예를 들어, 마이크로폰)의 상이한 품질 또는 종류는, 동일한 음성/스피치 인식 메커니즘(들)(178)의 경우에도, 상이한 코포라를 생성할 수 있다. 이 목적을 위해, 필요하다면, 사용자 데이터베이스(128) 내의 코포라는 사용자의 디바이스의 하드웨어 세부사항에 기초하여 조직구성될 수 있다. 이들 경우에, 특정한 사용자의 특정 코포라가 (예를 들어, 그 특정한 사용자와 연관된 특정한 디바이스 상의 학습 프로세스에 기초하여) 변경되는 경우, 이들 코포라는 데이터베이스에서 업데이트되지만, 그 사용자의 비슷한 디바이스들(즉, 이들 코포라와 연관된 인식 메커니즘(들)에 대한 비슷한 하드웨어와 센서 구성을 갖는 그 사용자의 디바이스들)에만 전파된다.
예를 들어, 특정한 사용자(110)가 복수의 디바이스를 갖고 있다고 가정하면, 이들 중 일부는 그들의 시스템 메커니즘(들)(134) 및/또는 센서(138)에 대해 제1 하드웨어 구성을 갖고, 다른 것들은 그들의 시스템 메커니즘(들)(134) 및/또는 센서(138)에 대해 제2 하드웨어 구성을 가진다. 제1 하드웨어 구성을 갖는 디바이스들은 그들의 대응하는 운용 메커니즘에 대해 제1 세트의 코포라를 이용하고, 제2 하드웨어 구성을 갖는 디바이스들은 그들의 대응하는 운용 메커니즘에 대해 (제1 세트의 코포라와는 구분되는) 제2 세트의 코포라를 이용한다. 이 예에서, 제1 하드웨어 구성을 갖는 제1 디바이스가 그의 코포라(예를 들어, 스피치 인식 코퍼스 또는 제스처 인식 코퍼스)를 업데이트하는 경우, 그 업데이트는 사용자 데이터베이스(130) 및 디바이스 데이터베이스(128)에 전송되어야 하지만, 이것은 제1 하드웨어 구성을 갖는 그 특정한 사용자의 다른 디바이스들에만 전파되어야 한다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 타입의(즉, 상이한 하부(underlying) 디바이스-특정적 기능을 갖는) 디바이스들이 그들의 시스템 메커니즘에 대해 동일한 하드웨어 구성을 가질 수 있다는 것을 이해할 것이다. 유사하게, 동일한 타입의 디바이스들(예를 들어, 스피커들)은 그들의 시스템 메커니즘에 대하여 상이한 하드웨어 구성을 가질 수 있다.
발명자들은 최소한의 사용자 개입 및 액션으로 디바이스가 다양한 셋업(setup)과 구성 정보를 학습하게 하는 것이 유용할 것이라 것을 인지하였다. 따라서, 이들은, 디바이스들이 서로 학습하게 하는 것이 유익하고 바람직하다는 것을 인지하였다. 따라서, 일부 양태에서, 디바이스(102-A)는 또 다른 디바이스(102-B)로부터 구성 정보를 획득할 수 있다. 일부 경우에, 디바이스는 2개의 디바이스를 서로 터치시킴으로써 또 다른 디바이스로부터 정보를 획득할 수 있다. 이들 상호작용은 도 1에 도시된 디바이스-대-디바이스 상호작용 #1에 대응하고, 적어도 부분적으로 디바이스-대-디바이스 메커니즘(156)에 의해 구현될 수 있다. 다른 경우에서, 디바이스는 사용자 명령에 의해 정보를 획득할 것을 지시받음으로써 또 다른 디바이스로부터 정보를 획득할 수 있다. 사용자의 디바이스는 또한 사용자 데이터베이스로부터 구성 및 기타의 정보를 획득할 수 있다.
디바이스 하트비트 및 상호작용
각 디바이스(102)는 바람직하게는 하트비트(HB) 메커니즘(194)(도 4b)을 포함한다. 디바이스(102) 상의 하트비트 메커니즘(들)(194)은 2개의 주요 기능을 가진다: (1) 하트비트 메시지(하트비트)를 생성하는 것, 및 (2) 다른 디바이스로부터의 하트비트를 모니터링하는 것.
따라서, 특정한 디바이스(102) 상의 하트비트 메커니즘(들)(194)은, 특정한 디바이스(102)의 상태 또는 존재 또는 현존에 대한 다양한 신호를 시스템(예를 들어, 백엔드(104)) 및/또는 기타의 디바이스(102)에 제공하는데 이용될 수 있다. 디바이스의 하트비트(HB) 메커니즘(들)(194)은 디바이스의 통신 메커니즘(142)을 이용하여 디바이스의 하트비트(및 연관된 정보)을, 로컬 통신을 위한 디바이스의 메커니즘(예를 들어, BLE를 포함하는 블루투스, ZigBee 등), Wi-Fi 통신을 위한 디바이스의 메커니즘(예를 들어, 802.11 등), 셀룰러 통신을 위한 디바이스의 메커니즘(예를 들어, 셀룰러 전화 네트워크를 이용하는 모뎀 또는 기타의 디바이스 등), 및 유선 통신을 위한 디바이스의 메커니즘(예를 들어, Ethernet 등) 중에서 하나 이상을 통해 브로드캐스트할 수 있다. 각각의 하트비트 메시지는 시스템(100)의 다른 컴포넌트들(예를 들어, 백엔드(104), 기타의 디바이스(102))이 그것이 하트비트 메시지라는 것을 인식(및 가능하게는 확정)하는 것을 허용하는 정보와, 시스템(100)의 다른 컴포넌트들이 인식(및 가능하게는 디바이스 식별 정보를 확정)할 수 있도록 하는 디바이스를 식별하는 정보를 포함할 수 있다.
(상이한 포맷과 상이한 정보를 가지며 상이한 주파수의) 상이한 하트비트 메시지들이 상이한 통신 메커니즘을 통해 브로드캐스트될 수 있다. 예를 들어, 백엔드(104)를 위한 것이고 네트워크(101) 또는 셀룰러 네트워크를 통해 전송되는 하트비트 메시지는 매일 또는 일부 이력 정보가 제공될 때 전송될 수 있다. 반면, 다른 디바이스들을 위한 것이고 디바이스의 로컬 통신 메커니즘(예를 들어, 블루투스, BLE 등)을 통해 브로드캐스트되거나 디바이스가 접속되어 있는 국지적 네트워크 상에서 전송되는 하트비트 메시지는 매 분마다(또는 일부 다른 정기적이고 짧은 시간 간격으로) 송출될 수 있다.
하트비트 신호는, 디바이스에 대한 일부 정보, 바람직하게는 적어도 디바이스의 디바이스 ID를 포함해야 한다. 예를 들어, 도 7a에 도시된 바와 같이, 디바이스로부터의 하트비트 신호(700)는 대응하는 디바이스 ID의 인코딩, 및 선택사항으로서, 디바이스의 소유자에 대한 사용자 ID의 인코딩을 포함한다. 하트비트 신호는 (도 7a의 도면에서 점선으로 도시된) 추가 정보를 포함할 수 있다. 백엔드에 전송된 신호는 예를 들어 디바이스의 위치, 이력 등의 추가 정보를 포함할 수 있다. 로컬 하트비트 신호는 디바이스 ID만을 포함할 수 있다. 하트비트 신호 내의 정보는 바람직하게는 (예를 들어, 암호화를 통해) 보호된다. 디바이스 ID 및 사용자 ID는 이들의 노출을 방지하기 위해 단방향 인코딩(예를 들어, MD5 등의 암호화 해쉬)으로 인코딩될 수 있다.
각 디바이스(102)는 또한, (예를 들어, 로컬 통신을 위한 디바이스의 메커니즘 뿐만 아니라 Wi-Fi 및 유선 통신을 위한 디바이스의 메커니즘을 이용하여) 정기적으로 (바람직하게는 연속적으로) 근처의 또는 동일한 네트워크 상에 있을 수 있는 다른 디바이스(102)로부터의 하트비트를 모니터링해야 한다. 또 다른 디바이스는, 특정한 디바이스가 그 특정한 디바이스의 로컬 통신 메커니즘(들)을 통해 그 또 다른 디바이스의 하트비트를 픽업할 수 있다면, 그 특정한 디바이스 근방에 있다고 말할 수 있다. 본 명세서에서 근방(nearness)의 다른 개념이 사용될 수 있고 고려된다.
도 7b는, 디바이스의 통신 메커니즘(142-A)(예를 들어, 국지적 통신 메커니즘)을 이용하여 디바이스의 하트비트(HB) 메커니즘(들)(194-A)을 통해 하트비트 신호를 브로드캐스팅하는 예시의 디바이스 A(102-A)를 도시한다. 도면에 도시된 바와 같이, 제2 디바이스(디바이스 B - 102-B)는 디바이스 B의 통신 메커니즘(142-B)을 통해 디바이스 A의 하트비트 신호를 검출한다. 도면에 도시되지는 않았지만, 디바이스 B는 또한 그의 하트비트 신호를 브로드캐스팅하고 있고 디바이스 A는 디바이스 B의 하트비트 신호를 검출할 수 있다는 것을 이해해야 한다. 또한, 도면에 도시되지는 않았지만, 디바이스들 각각은 또한, 상이한 통신 메커니즘들을 통해 다른 하트비트 신호들을 전송하고 있을 수 있다.
도 7c는 (S702에서) 다른 디바이스로부터의 하트비트를 모니터링하는 각 디바이스(102)에 의한(예를 들어, 디바이스의 하트비트 메커니즘(194)에 의한) 예시적 처리를 도시한다. (S704에서) 또 다른 디바이스로부터의 하트비트가 검출되면, (S706에서) 그 하트비트가 처리되고, 그렇지 않다면, 시스템은 (S702에서) 계속 하트비트를 모니터링한다. 일단 검출된 하트비트가 처리되면(또는 일단 디바이스가 검출된 하트비트의 처리를 시작하면), 디바이스는 다른 디바이스로부터의 하트비트를 계속 모니터링한다.
디바이스 협력/협동/참여
일부 디바이스(102)는 단독으로 또는 하나 이상의 다른 디바이스와 조합하여 동작할 수 있다. 디바이스들이 함께 동작하기 위해 동종(homogeneous)이어야 하거나 동일한 종류여야 하는 것은 아니라는 점을 이해해야 한다. 예를 들어, 스피커들인 디바이스들은 (이하에서 설명되는 바와 같이) 함께 동작할 수 있다. 또 다른 예로서, 스피커인 디바이스는 비디오 디스플레이인 디바이스와 함께 동작할 수 있다.
일부 방식으로 함께 동작하는 디바이스(102)들은 협력 또는 협동한다고 말할 수 있다. 본 문서의 나머지 부분에 있어서, 용어 "협력한다", "협력", 및 "협력하는"이란, 각각, "협력한다 및/또는 협동한다", "협력 및/또는 협동", 및 "협력하는 및/또는 협동하는"을 말한다.
본원에서 사용되는 경우, 디바이스(102)들은, 이들이 자신들의 동작의 적어도 일부 양태의 목적을 위해 결합되고 협력한다면, 조인(join)한다고 말할 수 있다. 디바이스들은 다양한 방식으로 조인할 수 있다. 일부 경우에, 디바이스는 단순히 다른 디바이스 부근에 놓여짐으로써 하나 이상의 다른 디바이스와 조인할 수 있다. 일부 경우에, 디바이스들은 사용자 인터페이스를 통한 특정한 명령에 의해 조인할 수 있다. 일부 경우에, 디바이스들은 이들 중 하나가 다른 것을 터치하게 함으로써 조인할 수 있다.
디바이스들은 그들의 소유권을 변경시키지 않고 협력할 수 있다는 점을 이해해야 한다. 즉, 한 사용자의 디바이스는 또 다른 사용자의 디바이스와, 어느 쪽의 디바이스의 소유권도 변경하지 않고(즉, 어느 쪽의 디바이스도 시스템(100) 내의 상이한 사용자와 연관되지 않고), 협력 또는 조인할 수 있다.
하트비트 처리
또 다른 디바이스로부터 검출된 하트비트(S704)에 대한 디바이스의 처리는, 예를 들어, 하기 중 적어도 일부를 포함하는, 다수의 인자에 의존할 수 있다:
제1 디바이스가 (예를 들어, 이전 상호작용으로부터) 제2 디바이스를 알고 있는지.
제1 및 제2 디바이스는 (동일한 사용자에 의해) 공동으로 소유되는지.
디바이스들은 친구들에 의해 소유되고 있는지.
디바이스들이 일부 방식으로 협력할 수 있는지(이것은, 적어도 부분적으로, 디바이스의 종류 또는 각 디바이스 특정적 기능, 디바이스 근접성 및/또는 각 디바이스가 이미 행하고 있는 것이 무엇인지에 의존할 수 있다). 예를 들어, 스마트폰 디바이스와 스피커 디바이스는, 이들이 동일한 방 안에 있다면 스마트폰 디바이스로부터의 음악을 스피커 디바이스 상에서 재생하기 위해 협력할 수 있다; 또는 2개의 스피커 디바이스는, 이들 중 한쪽이 이미 재생하고 있는 동일한 음악을 양쪽 모두 재생하도록 협력할 수 있다. 반면, 2개의 헤드폰 디바이스는, 이들이 양쪽 모두 이미 음향을 재생(즉, 렌더링)하고 있다면, 협력하지 않을 수 있다.
여기서 주어진 인자들과 예들은 단지 예로서 제공된 것이고, 검출된 하트비트를 어떻게 처리할지를 결정하기 위해 상이한 인자들이 이용될 수 있다.
도 7d는 디바이스(여기서는 본 논의의 목적을 위해 디바이스 A라고 함)에 의한 또 다른 디바이스(여기서는 디바이스 B라고 함)의 하트비트의 (S706에서의) 예시적 처리를 도시한다. 먼저, (이 프로세스를 실행 중에 있는) 디바이스 A는 수신된 하트비트 메시지(예를 들어, 도 7b의 하트비트 신호(700-A))로부터 디바이스 B의 디바이스 ID를 판정한다. 디바이스 ID는 다른 디바이스에 의해 추출될 수 있는 방식으로 신호 내에 인코딩될 수 있다. 일부 경우에 디바이스의 하트비트는 디바이스의 디바이스 ID의 암호화 해쉬(예를 들어, MD5 해쉬)를 포함할 수 있다. 이들 경우에, 다른 디바이스들은 디바이스 ID의 해쉬를 그들의 결정의 기초로서 이용할 수 있고 디바이스 ID 그 자체는 노출되지 않는다.
(S708에서) 다른 디바이스의 디바이스 ID(또는 그의 해쉬)를 결정하면, 디바이스 A는 (S710에서) 자신과 디바이스 B가 동일한 사용자에 의해 소유되고 있는지(즉, 그들이 공동 소유되고 있는지)를 판정한다. 각 디바이스는 그 디바이스의 사용자에 대한 사용자 데이터베이스(130)로부터의 정보를 저장 및 유지한다는 점을 상기한다. 이 정보는 바람직하게는 사용자의 디바이스들의 목록을, 예를 들어, 디바이스 ID별로 포함한다. 디바이스 A는 하트비트 메시지 내의 디바이스 ID가 그 사용자의 디바이스들의 목록 내의 디바이스 ID와 매칭하는지를 판정할 수 있다. 디바이스 ID가 해쉬되거나 일부 다른 방식으로 단방향 인코딩된다면, 디바이스 A는 동일한 인코딩을 이용하여 공동 소유된 디바이스들의 목록을 저장할 수 있다.
(S710에서) 디바이스들이 공동 소유된 것으로 판정되면, 디바이스 A는 (S712에서) 디바이스 B와 가능한 협력을 평가한다. 가능한 협력은, 앞서 언급된 바와 같이, 다수의 인자에 의존할 수 있다. 그들의 (예를 들어, 스피커로서 등의) 하부 기능에 관한 협력 외에도, 공동 소유된 디바이스들이 (예를 들어, 하트비트를 통해) 서로를 발견하면, 디바이스들은 필요하다면 구성 정보를 공유 및/또는 업데이트할 수 있다.
(S712에서 판정되는 바와 같이) 디바이스들이 실제로 협력하는지에 관계없이, 디바이스 A는 (S714에서) 바람직하게는 디바이스 B와의 조우(encounter)를 반영하도록 그 이력을 업데이트한다. 그 다음, 디바이스 A는 (S716에서) 백엔드에게 그 조우를 알릴 수 있다. 바람직하게는 디바이스에 의한 검출된 하트비트의 처리는 디바이스가 백엔드와 콘택트할 필요없이 발생한다는 점에 유의한다. 따라서, 백엔드에 조우를 통보하는 것은 백엔드와의 또 다른 일상적인 접속이 이루어질 때까지 발생할 필요가 없다. 어느 쪽의 디바이스든 조우의 결과로서 그의 구성을 업데이트한다면, 그 업데이트는 결국 다시 백엔드에 전파되어야 한다는 점에 유의한다.
(S710에서 결정되는 바와 같이) 디바이스들이 공동 소유되지 않고 있다면, 디바이스 A는 (S718에서) 디바이스 B가 디바이스 A의 소유자의 친구에 의해 소유되고 있는지를 판정하려고 한다. 하트비트 메시지는 디바이스 B의 사용자의 사용자 ID의 인코딩을 포함할 수 있고, 각 디바이스는 친구 목록을 포함하는, 사용자 데이터베이스(130)로부터의 정보를 저장한다는 것을 상기한다. 하트비트 메시지 내의 사용자 ID는 친구 목록 내의 사용자 ID들과 비교되어 매칭이 존재하는지를 판정할 수 있다. 하트비트 메시지 내의 사용자 ID가 단방향 인코딩된다면 친구 목록 내의 사용자 ID들은 유사하게 인코딩되어야 한다는 점을 이해해야 한다.
(S718에서) 디바이스 B가 디바이스 A의 소유자의 친구에 의해 소유되고 있다고 판정되면, 디바이스들간의 일부 협력이 여전히 발생할 수 있다. 따라서, 디바이스 A는 (S720에서) 디바이스들간의 가능한 협력을 (친구의 디바이스들간의 협력으로서) 평가한다. 이러한 종류의 협력은 (S712의) 공동 소유된 디바이스들 사이에서와 동일한 종류의 협력을 포함할 수 있지만, 이것은 친구와 연관된 퍼미션에 의존할 수 있다. 친구의 디바이스들은 심지어 일부 구성 및 코포라를 공유할 수 있지만, 이것은 바람직하게는 제한된 그리고 일시적 기반으로 이루어진다.
(S712의) 공동 소유된 디바이스들간의 협력에서와 같이, (S720에서 결정되는 바와 같이) 친구의 디바이스들이 실제로 협력하는지에 관계없이, 디바이스 A는 바람직하게는 (S714에서) 디바이스 B와의 조우를 반영하도록 그 이력을 업데이트하며, 다시 한번, 디바이스 A는 (S716에서) 백엔드에게 그 조우를 알릴 수 있다.
(S718에서) 디바이스들이 친구들에 의해 소유되고 있지 않다고 판정되면, 디바이스 A는 (S722에서) 이전에 디바이스 B를 조우한 적이 있는지를 판정한다. 그리고 나서 디바이스 A는 (S724에서) 디바이스 B에 대한 정보를 기록한 다음 (S714에서) 그 이력의 업데이트를 진행하고, 결국, (S716에서) 백엔드에게 조우를 알려줄 수 있다.
이해하겠지만, 디바이스들(공동 소유되거나 친구들의 디바이스들)간의 협력은 디바이스들간의 추가적 통신을 요구할 수 있다. 예를 들어, 공동 소유된 디바이스들은 그들의 구성 정보를 동기화하기 위하여 서로 통신할 필요가 있을 수 있다. 따라서 각 디바이스(102)는, 다양한 통신 메커니즘을 통해 다른 디바이스들로부터의 통신을 리스닝(listening)하는 실행중인 적어도 하나의 메커니즘 또는 프로세스를 가진다. 그러면, (예를 들어, 그들의 하트비트 중 하나 또는 양쪽 모두를 통해) 서로 조우하는 2개의 디바이스는, 필요하다면, 추가로 상호작용할 수 있다. (예를 들어, 국지적 무선 메커니즘 또는 국지적 유선 네트워크 등을 통한) 2개 디바이스들간의 통신은 바람직하게는 어떤 채널이 이용되건간에 보안된 통신을 이용한다. 일부 경우에 2개의 디바이스는 먼저 하나의 통신 메커니즘(예를 들어, 블루투스 또는 BLE) 상에서 하트비트를 통해 서로 조우한 다음 상이한 통신 메커니즘(예를 들어, Wi-Fi)을 이용하여 후속 통신을 가진다.
(S712에서) 공동 소유된 디바이스들간의 잠재적 협력을 위한 예시적 처리가 도 7e에 도시되어 있다. 이 예에서, 디바이스 A(디바이스 B의 하트비트를 검출한 디바이스)는 먼저 (S726에서) 디바이스 B와 콘택트하여 접속 구축을 시도한다. 일단 접속되면, 디바이스들은 (S728에서) (필요하다면) 그들의 구성 정보를 업데이트/동기화할 수 있다. ((S728에서의) 업데이트/동기화는 도 6a의 상태 천이 T6에 대응한다). 디바이스는 또한 임의의 협력이 가능하고 요망되는지를 판정하기 위하여 자신 및 다른 디바이스에 대한 정보를 판정한다. 디바이스는, (S730에서) 다른 디바이스의 디바이스-특정적 기능, (S732에서) 다른 디바이스가 무엇을 하고 있는지, 및 (S734에서) 디바이스 자신이 무엇을 하고 있는지를 판정할 수 있다. 이 정보는 (S736에서) 디바이스들간의 가능한 협력(들)을 판정하는데 이용될 수 있다. 그들의 협력을 지원하기 위해 다양한 디바이스들 또는 디바이스 타입들에 대해 프로토콜이 구축될 수 있다. 예를 들어, 일부 구현에서 한 디바이스가 또 다른 디바이스에 터치되어 이들간의 원하는 협력을 구축 또는 표시한다. 따라서, 디바이스 A는 또한 (S738에서) 원하는 협력의 표시가 있었는지를(예를 들어, 한 디바이스가 다른 디바이스를 터치했는지 또는 사람이 디바이스들에게 특정 디바이스들을 발견하는 경우 특정 디바이스들과 협력할 것을 지시했는지를) 판정할 수 있다. (S730, S732, S734, S736, S738에서) 판정된 정보에 기초하여, 디바이스는 (S740에서) 가능한 협력을 선택 및 개시할 수 있다. (S736에서 판정되는 바와 같이) 복수의 협력(들)이 가능하다면, (S738에서 판정되는 바와 같이) 이들 중 하나의 선택은 원하는 협력의 표시에 의해 지지된다.
디바이스 A가 디바이스 B의 하트비트를 검출했기 때문에, 디바이스 B도 역시 디바이스 A의 하트비트를 검출하는 것도 가능하다는 점에 유의한다. 2개의 디바이스가 서로의 협력을 평가하고 있는 경우, 디바이스가 특정의 결정을 내리는 것에 관해 협약이 확립될 필요가 있을 수 있다. 하나의 예시적 협약은, 다른 디바이스와의 콘택트를 먼저 개시하는 디바이스가, 필요하다면/필요할 때, 결정을 내리는데 있어서 주도권을 갖는 것이다. 또 다른 가능한 접근법은 가장 높은 디바이스 ID를 갖는 디바이스가, 필요하다면/필요할 때, 결정을 내리는데 있어서 주도권을 갖는 것이다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 필요하다면/필요할 때, 상이한 및/또는 기타의 충돌 해결 접근법이 이용될 수 있다는 것을 이해할 것이다.
(S740에서) 디바이스 A가 디바이스 B와의 협력을 개시한다고 해서 디바이스 B가 협력에 동참할 것을 의미하는 것은 아니라는 점을 이해해야 한다. 일부 경우에, 디바이스 A와 B는 협력이 개시되기 전에 협력을 협상하고 동의할 수 있으며, 이 경우 디바이스 B는 동의한대로 동참한다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 공동 소유된 디바이스들 사이에서 특정의 협력이 가능하다고 해서 협력이 이루어질 것이라는 것을 의미하는 것은 아니라는 점을 이해할 것이다. 또한, 공동 소유된 디바이스들간의 협력을 결정하고 가능하게는 개시하기 위해 상이한 및/또는 기타의 요인들이 이용될 수 있다는 것을 이해해야 한다.
(도 7d의 S720에서) 친구의 디바이스들간의 잠재적 협력을 위한 예시적 처리가 도 7f에 도시되어 있다. 이 프로세스는 (도 7e를 참조하여 전술된) 공동 소유된 디바이스들의 경우와 유사하지만, (i) 디바이스들이 협력하기 위한 퍼미션을 가질 것을 요구하고, (ii) 바람직하게는 임의의 선택된 협력을 지원하는데 필요한 구성 정보만을 업데이트한다. 도 7f에 도시된 바와 같이, (디바이스 B의 소유자와 연관된 친구 퍼미션에 기초하여) 허용된다면, 디바이스 A는 (S742에서) 디바이스 B와의 접속을 구축한다. 허용된다면, 디바이스 A는 (S744에서) 디바이스 B의 특정한 기능과 (S746에서) 디바이스 B가 무엇을 하고 있는지를 판정한다. 디바이스 A는 (S748에서) 자신이 현재 무엇을 하고 있는지를 판정한다. 자신이 판정한 정보의 일부에 적어도 부분적으로 기초하여, 및 디바이스 B의 소유자와 연관된 친구 퍼미션에 기초하여, 디바이스 A는 (S750에서) 디바이스 B와의 가능한 협력을 판정한다. 디바이스 A는 또한 (S752에서) 디바이스들간에 원하는 협력의 임의의 다른 표시가 있었는지를 판정한다. 이들 판정에 적어도 부분적으로 기초하여, 디바이스 A는 (S754에서) 디바이스 B와의 가능한 및 허용된 협력을 선택한다. (S736에서 판정되는 바와 같이) 복수의 협력(들)이 가능하다면, (S738에서 판정되는 바와 같이) 이들 중 하나의 선택은 원하는 협력의 표시에 의해 찬성된다. 디바이스 A와 디바이스 B는 (S756에서) 선택된/허용된 cc 협력을 지원하기 위해 (필요하다면 및 필요한 경우) 그들의 구성 정보를 업데이트한다. 그 다음, 허용된 협력이 (S758에서) 개시된다.
공통 소유된 디바이스들에서와 같이, (S758에서) 디바이스 A가 디바이스 B와의 협력을 개시한다고 해서 디바이스 B가 협력에 동참할 것을 의미하는 것은 아니라는 점을 이해해야 한다. 일부 경우에, 디바이스 A와 B는 협력이 개시되기 전에 협상하고 협력에 동의할 수 있으며, 이 경우 디바이스 B는 동의한대로 동참한다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 친구의 디바이스들간의 특정의 협력이 가능하다고 해서 협력이 이루어질 것이라는 것을 의미하는 것은 아니라는 점을 이해할 것이다. 또한, 친구의 디바이스들간의 협력을 결정하고 가능하게는 개시하기 위해 상이한 및/또는 기타의 요인들이 이용될 수 있다는 것을 이해해야 한다.
디바이스 협력이 (가능하게는 다른 요인들이 이용되어 가능한 디바이스 상호작용을 확정 또는 선택하는 것을 이용하여) 하트비트 검출에 기초하여 전술되었지만, 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, (앞서 언급된 바와 같이), 다른 인자들이 디바이스 협력을 개시하는데 이용될 수 있다는 것을 이해할 것이다. 예를 들어, 앞서 언급된 바와 같이, 일부 경우에 디바이스는 단순히 다른 디바이스 부근에 놓임으로써 하나 이상의 다른 디바이스들에 조인할 수 있다; 일부 경우에, 디바이스들은 사용자 인터페이스를 통한 특정한 지시에 의해 조인할 수 있다; 그리고, 일부 경우에는 디바이스들은 이들 중 하나가 다른 디바이스를 터치하게 함으로써 조인할 수 있다. 이들 다른 요인들(예를 들어, 터치, 근접성, 특정한 명령 등)은, 일부 경우에는, 그 때 디바이스들 중 어느 쪽이 무엇을 하고 있는지를 포함하는 다른 요인들에 우선할 수 있다.
따라서, 예를 들어, 도 7g에 도시된 바와 같이, 각각의 디바이스(102)는 (S760에서) 일상적으로 다른 디바이스들로부터의 일부 타입의 콘택트를 모니터링할 수 있다. 검출된 콘택트 타입은, 예를 들어, 디바이스 타입(즉, 그의 하부 디바이스-특정적 기능) 등의 하나 이상의 인자들에 의존할 수 있다. 일부 디바이스는, 물리적 터치, 사용자 지시 등에 기초하여 다른 디바이스들과의 콘택트 개시를 시도할 수 있다. 따라서, (S762에서) 또 다른 디바이스로부터의 콘택트 시도의 검출은, (하나 이상의 센서(138)로부터의) 센서 입력 등으로부터 (음성/스피치 메커니즘(들)(174) 및/또는 제스처 메커니즘(들)(166)을 이용하는) 음성 및/또는 제스처 지시의 해석을 수반할 수 있다. (S762에서) 가능한 콘택트 시도를 검출하면, 디바이스는 (S764에서) 다른 디바이스와의 콘택트 처리를 진행한다.
(S764에서의) 가능한 콘택트 시도의 처리는 (도 7d 내지 도 7f를 참조하여) 전술된 하트비트 처리와 유사할 수 있다. 특히, 제1 디바이스가 제2 디바이스로부터의 콘택트 시도를 검출하는 경우, 제1 디바이스는 여전히 제2 디바이스의 디바이스 ID를 판정할 필요가 있을 것이고(그 반대도 마찬가지), 디바이스들이 공동 소유되고 있거나 친구들에 의해 소유되고 있는지를 판정하고, 그에 따라 콘택트 시도를 처리할 것이다. 그러나, 콘택트 시도의 경우, 디바이스는, 다른 디바이스(콘택트를 개시한 디바이스)가 디바이스들 사이의 특정 형태의 협력을 구축하려고 시도하는 중이라고 가정할 수 있다.
따라서, 디바이스 개시된 콘택트의 경우에, (도 7d, 7e의 S712에서의) 공동 소유된 디바이스들간의 협력을 평가하고 (도 7d, 7f의 S720에서의) 친구들의 디바이스들간의 협력을 평가하는 처리는 도 7h 내지 도 7j를 참조하여 여기서 설명된 바와 같이 수정될 수 있다. 처리간의 주요 차이는 가능한 협력을 선택하는데 있어서 원하는 협력이 우선권을 부여받는다는 것이라는 점에 유의한다. 따라서, (도 7i의 S712'에서) 공동 소유된 디바이스들간의 디바이스-개시된 협력을 평가하는데 있어서, 가능한 협력인 것으로 판정되면, (도 7i의 S740'에서) 디바이스-개시된 원하는 협력이 선택되고 개시된다; (도 7j의 S720'에서) 친구의 디바이스들간의 디바이스-개시된 협력을 평가하는데 있어서, 디바이스-개시된 협력이 가능하고 허용된다면, (S754', S758'에서) 원하는 디바이스-개시된 협력이 선택되고 개시된다.
협력하고 있는 디바이스들은 또한 그들의 협력을 종료할 수 있을 필요가 있다. 협력은, 하나 이상의 디바이스가 전원이 차단되는 것에 의해, 명시적 사용자 지시에 의해, (디바이스에 의해 수신된 업데이트된 구성 정보로부터 결정되는) 허용 변경에 의해, 디바이스들이 더 이상 협력할 수 없는 방식으로 분리됨으로써(예를 들어, 한 디바이스가 집안의 상이한 방으로 이동되는 경우)를 포함한 그러나 이것으로 제한되지 않는 다양한 방식으로 종료될 수 있다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 기타의 디바이스 협력 종료 방식이 이용될 수 있다는 것을 이해할 것이다.
디바이스들간의 상호작용은 도 1의 원호 #1에 대응한다.
디바이스-대-디바이스 상호작용에 대해 전술된 처리는 단지 예로서 주어진 것이고, 어떤 식으로든 시스템의 범위를 제한하기 위함이 아니다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 기타의 상호작용이 수행될 수 있고 이 시스템의 범위 내에 있다는 것을 이해할 것이다.
컴퓨팅
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 본원에서 설명된 다양한 프로세스들이, 예를 들어, 임의의 크기 또는 복잡도의 적절히 프로그램된 범용 컴퓨터, 특수 목적 컴퓨터 및 컴퓨팅 디바이스들에 의해 구현될 수 있다는 것을 이해할 것이다. 하나 이상의 이러한 컴퓨터 또는 컴퓨팅 디바이스들은 컴퓨터 시스템이라 부를 수 있다.
상기에서 도시되고 설명된 서비스, 메커니즘, 동작 및 작용들은, 적어도 부분적으로, 시스템(100)의 하나 이상의 컴퓨터 상에서 실행중인 소프트웨어에 의해 구현된다. 예를 들어, 백엔드(104)와 연관된 기능은 하나 이상의 컴퓨터 상에서 실행중인 소프트웨어에 의해 구현될 수 있다.
이러한 방법들(뿐만 아니라 다른 타입의 데이터)를 구현하는 프로그램은 다수의 방식으로 다양한 매체(예를 들어, 컴퓨터 판독가능한 매체)를 이용하여 저장 및 송신될 수 있다. 다양한 실시예들의 프로세스들을 구현할 수 있는 소프트웨어 명령어들의 일부 또는 전부를 대체하여, 또는 이와 조합하여, 하드-와이어드(Hard-wired) 회로 또는 맞춤형 하드웨어가 이용될 수 있다. 따라서, 하드웨어와 소프트웨어의 다양한 조합이 소프트웨어 단독을 대신하여 이용될 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 본원에서 설명된 다양한 프로세스들이, 예를 들어, 적절히 프로그램된 범용 컴퓨터, 특별 목적 컴퓨터 및 컴퓨팅 디바이스들에 의해 구현될 수 있다는 것을 이해할 것이다. 하나 이상의 이러한 컴퓨터 또는 컴퓨팅 디바이스들은 컴퓨터 시스템이라 부를 수 있다.
도 5a는 본 개시의 실시예가 구현되고 수행될 수 있는 컴퓨터 시스템(500)의 개략도이다.
본 예에 따르면, 컴퓨터 시스템(500)은, 버스(502)(즉, 상호접속), 하나 이상의 프로세서(504), 하나 이상의 통신 포트(514), 메인 메모리(506), 판독 전용 메모리(508), 착탈식 저장 매체(510), 및 대용량 스토리지(512)를 포함할 수 있다.
본원에서 사용될 때, "프로세서"는, 그들의 아키텍쳐에 관계없이, 하나 이상의 마이크로프로세서, 중앙 처리 유닛(CPU), 컴퓨팅 디바이스, 마이크로제어기, 디지털 신호 프로세서 또는 유사한 디바이스나 이들의 임의 조합을 의미한다. 프로세스를 수행하는 장치는, 예를 들어, 프로세스를 수행하기에 적절한 입력 디바이스 및 출력 디바이스 등의 디바이스들과 프로세서를 포함할 수 있다.
프로세서(들)(504)은 맞춤형 프로세서들 또는 Intel® Itanium® 또는 Itanium 2® 프로세서(들), AMD® Opteron® 또는 Athlon MP® 프로세서(들), 또는 Motorola® 프로세서 라인들, ARM-기반의 프로세서들 등과 같은 임의의 공지된 프로세서일 수 있지만, 이것으로 제한되는 것은 아니다. 통신 포트(들)(514)은 모뎀 기반의 다이얼-업 접속에서 이용하기 위한 RS-232 포트, 10/100 이더넷 포트, 구리 또는 섬유를 이용한 Gigabit 포트, 또는 USB 포트 등 중 임의의 것일 수 있다. 통신 포트(들)(514)은, LAN(Local Area Network), WAN(Wide Area Network), 또는 컴퓨터 시스템(500)이 접속하는 임의의 네트워크 등의 네트워크에 따라 선택될 수 있다. 컴퓨터 시스템(500)은 입력/출력(I/O) 포트(520)를 통해 주변 디바이스들(예를 들어, 디스플레이 스크린(516), 입력 디바이스(들)(518))과 통신할 수 있다.
본원에서 주변 디바이스라고 언급하는 경우, 이러한 디바이스들은 컴퓨터 시스템(500)을 포함하는 디바이스의 형태 내에 통합될 수 있다는 점을 이해해야 한다. 예를 들어, 셀룰러 전화에서 이용되는 컴퓨터 시스템은 전화의 일부로서 디스플레이 스크린과 입력 디바이스를 가진다. 주변 디바이스들은, 만약 제공된다면, (예를 들어, 터치 스크린 등의 경우) 결합될 수 있다는 점도 역시 이해해야 한다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 모든 컴퓨터 시스템(500)이 컴포넌트들 모두를 포함할 필요는 없다는 것을 이해할 것이다. 예를 들어, 모든 컴퓨터 시스템(500)이 착탈식 저장 매체(510) 또는 대용량 스토리지(512)를 요구하는 것은 아니다. 유사하게, 모든 컴퓨터 시스템(500)이 디스플레이 스크린(516)을 가지는 것은 아니다.
메인 메모리(506)는 RAM(Random Access Memory), 또는 본 분야에 공지된 기타 임의의 동적 스토리지 디바이스(들)일 수 있다. 판독 전용 메모리(508)는 프로세서(504)를 위한 명령어 등의 정적 정보를 저장하기 위한 PROM(Programmable Read-Only Memory) 칩 등의 임의의 정적 스토리지 디바이스(들)일 수 있다. 대용량 스토리지(512)는 정보와 명령어를 저장하는데 이용될 수 있다. 예를 들어, Adaptec® SCSI(Small Computer Serial Interface)군 등의 하드 디스크, 광 디스크, Adaptec® RAID 드라이브 군 등의, RAID(Redundant Array of Independent Disk)와 같은 디스크 어레이, 또는 기타 임의의 대용량 스토리지 디바이스가 이용될 수 있다.
버스(502)는, 프로세서(들)(504)을, 다른 메모리, 스토리지 및 통신 블록과 통신가능하게 결합한다. 버스(502)는, 이용되는 스토리지 디바이스 등에 따라 PCI / PCI-X, SCSI, (USB; Universal Serial Bus) 기반의 시스템 버스(또는 기타의 것)일 수 있다. 착탈식 저장 매체(510)는, 임의의 종류의 외부 하드-드라이브, 플로피 드라이브, IOMEGA® Zip 드라이브, CD-ROM(Compact Disc-Read Only Memory), CD-RW(Compact Disc-Re-Writable), DVD-ROM(Digital Video Disk-Read Only Memory), SDRAM 등일 수 있다.
본원에서 실시예들은, 프로세스를 수행하도록 컴퓨터(또는 기타의 전자 디바이스)를 프로그램하는데 이용될 수 있는 명령어를 저장하고 있는 머신-판독가능한 매체를 포함할 수 있는 하나 이상의 컴퓨터 프로그램 제품으로서 제공될 수 있다. 본원에서 사용되는 경우, 용어 "머신-판독가능한 매체"란, 컴퓨터, 프로세서 또는 유사한 디바이스에 의해 판독될 수 있는 데이터(예를 들어, 명령어, 데이터 구조) 제공에 참여하는 임의의 매체, 복수의 동일한 매체, 또는 상이한 매체의 조합을 말한다. 이러한 매체는, 이것으로 제한되는 것은 아니지만, 비휘발성 매체, 휘발성 매체, 및 송신 매체를 포함하는 많은 형태를 취할 수 있다. 비휘발성 매체는, 예를 들어, 광 또는 자기 디스크 및 기타의 영구 메모리를 포함할 수 있다. 휘발성 매체는, 통상적으로 컴퓨터의 메인 메모리를 구성하는 동적 랜덤 액세스 메모리를 포함한다. 송신 매체는, 프로세서에 결합된 시스템 버스를 포함하는 배선들을 포함하여, 동축 케이블, 구리선, 및 광섬유를 포함한다. 송신 매체는 음향파; 무선 주파수(RF) 및 적외선(IR) 데이터 통신 동안에 생성되는 것과 같은, 광파 및 전자기 방출을 포함하거나 수송할 수 있다.
머신-판독가능한 매체는, 플로피 디스켓, 광 디스크, CD-ROM, 및 광자기 디스크, ROM, RAM, EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 자기 또는 광학 카드, 플래시 메모리, 또는 전자 명령어를 저장하기에 적합한 기타 유형의 매체/머신-판독가능한 매체를 포함할 수 있지만, 이들로 제한되는 것은 아니다. 게다가, 실시예들은 본원에서 컴퓨터 프로그램 제품으로서 또한 다운로드될 수 있고, 프로그램은 반송파(carrier wave) 또는 기타의 전파 매체로 구현된 데이터 신호에 의해 통신 링크(예를 들어, 모뎀 또는 네트워크 접속)를 통해 원격 컴퓨터로부터 요청측 컴퓨터로 전송될 수 있다.
다양한 형태의 컴퓨터 판독가능한 매체가 데이터(예를 들어, 명령어 시퀀스)를 프로세서에 전달하는데 수반될 수 있다. 예를 들어, 데이터는 (i) RAM으로부터 프로세서로 전달; (ii) 무선 송신 매체를 통해 운반; (iii) 다양한 포멧, 표준 또는 프로토콜에 따라 포멧팅 및/또는 송신; 및/또는 (iv) 본 분야에 공지된 다양한 방식으로 암호화될 수 있다.
컴퓨터-판독가능한 매체는 방법들을 수행하기에 적절한 프로그램 요소들을 (임의의 적절한 포멧으로) 저장할 수 있다.
도시된 바와 같이, 메인 메모리(506)는, 본원에서 논의된 기능을 지원하는 애플리케이션(들)(522-1)로 인코딩된다(애플리케이션(522-1)은 본원에서 설명된 서비스들의 기능들, 예를 들어, 백엔드 처리의 일부 또는 전부를 제공하는 애플리케이션일 수 있다). 애플리케이션(들)(522-1)(및/또는 여기서 설명된 기타의 자원)은 여기서 설명된 상이한 실시예들에 따른 처리 기능을 지원하는 데이터 및/또는 로직 명령 등의 소프트웨어 코드(예를 들어, 메모리 또는 디스크 등의 또 다른 컴퓨터 판독가능한 매체에 저장된 코드)로서 구현될 수 있다.
예를 들어, 도 5b 및 도 5c에 도시된 바와 같이, 컴퓨터 시스템(500)이 백엔드(104)의 기능을 구현하는데 이용되는 경우, 애플리케이션(들)(522-1)은 백엔드 애플리케이션(524-1)을 포함할 수 있고, 컴퓨터 시스템(500)이 디바이스의 기능을 구현하는데 이용되는 경우, 애플리케이션(522-1)은 디바이스 애플리케이션(526-1)을 포함할 수 있다.
일 실시예의 동작 동안에, 프로세서(들)(504)은, 애플리케이션(들)(522-1)의 로직 명령어를 론칭(launch), 실행, 해석(interpret) 또는 기타의 방식으로 수행하기 위하여 버스(502)를 이용하여 메인 메모리(506)에 액세스한다. 애플리케이션(들)(522-1)의 실행은 애플리케이션(들)에 관련된 서비스의 처리 기능을 생성한다. 즉, 프로세스(들)(522-2)은 컴퓨터 시스템(500)에서 프로세서(들)(504) 내에서 또는 프로세서(들)(504) 상에서 수행하는 애플리케이션(들)(522-1)의 하나 이상의 부분들을 나타낸다.
예를 들어, 도 5d 내지 도 5e에 도시된 바와 같이, 컴퓨터 시스템(500)이 백엔드(104)의 기능을 구현하는데 이용되는 경우, 프로세스(들)(522-2)은 백엔드 프로세스(들)(524-2)을 포함할 수 있고; 컴퓨터 시스템(500)이 디바이스의 기능을 구현하는데 이용되는 경우, 프로세스(들)(522-2)은 디바이스 프로세스(들)(526-2)을 포함할 수 있다.
본원에서 논의된 동작을 실행하는 프로세스(들)(522-2) 외에도, 본원에서의 다른 실시예들은 애플리케이션(522-1) 자체(즉, 미실행되거나 미수행중인 로직 명령어 및/또는 데이터)를 포함한다는 점에 유의해야 한다. 애플리케이션(522-1)은 디스크 등의 컴퓨터 판독가능한 매체(예를 들어, 저장소) 상에 또는 광학적 매체에 저장될 수 있다. 다른 실시예에 따르면, 애플리케이션(522-1)은 또한, 펌웨어, ROM 등의 메모리 타입 시스템에, 또는, 이 예에서는 메인 메모리(506) 내에(예를 들어, 랜덤 액세스 메모리, 즉 RAM 내에) 실행가능한 코드로서 저장될 수 있다. 예를 들어, 애플리케이션(522-1)은 또한, 착탈식 저장 매체(510), 판독 전용 메모리(508), 및/또는 대용량 스토리지 디바이스(512)에 저장될 수 있다.
본 기술분야의 통상의 기술자라면, 컴퓨터 시스템(500)은, 하드웨어 자원의 할당과 이용을 제어하는 운영 체제 등의, 기타의 프로세스 및/또는 소프트웨어 및 하드웨어 컴포넌트를 포함할 수 있다는 것을 이해할 것이다. 예를 들어, 커널을 포함하는 운영 체제(OS) 프로그램은 컴퓨터 시스템 상의 프로세스일 수 있다.
본원에서 논의된 바와 같이, 본 발명의 실시예는 다양한 단계 또는 동작을 포함한다. 다양한 이들 단계들은 하드웨어 컴포넌트에 의해 수행되거나, 명령어로 프로그램된 범용 또는 특수-목적 프로세서로 하여금 동작을 수행하게 하는데 이용될 수 있는 머신-실행가능한 명령어로 구현될 수 있다. 대안으로서, 단계들은, 하드웨어, 소프트웨어, 및 펌웨어의 조합에 의해 수행될 수 있다. 용어 "모듈"이란, 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합을 포함할 수 있는 자립적 기능 컴포넌트(self-contained functional component)를 말한다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 장치의 실시예들은, 설명된 프로세스의 (반드시 모든 것은 아닌) 일부를 수행하도록 동작가능한 컴퓨터/컴퓨팅 디바이스를 포함할 수 있다는 것을 이해할 것이다.
프로그램 또는 데이터 구조를 저장하고 있는 컴퓨터-판독가능한 매체의 실시예는, 실행되는 경우, 프로세서로 하여금 설명된 프로세스의 (반드시 모든 것은 아닌) 일부를 수행하게 할 수 있는 프로그램을 저장하고 있는 컴퓨터-판독가능한 매체를 포함할 수 있다.
프로세스가 본원에서 설명되는 경우, 본 기술분야의 통상의 기술자라면, 프로세스는 임의의 사용자 개입없이 동작할 수 있다는 것을 이해할 것이다. 또 다른 실시예에서, 프로세스는 일부 인간 개입을 포함한다(예를 들어, 어떤 단계는 인간에 의해 또는 인간의 보조에 의해 수행된다).
다시 도 4a 및 도 4b를 참조하면, 디바이스(102)는 컴퓨터 시스템(146)을 포함한다는 점을 상기한다. 일부 경우에, 컴퓨터 시스템(146)은, 단독으로 또는 시스템 메커니즘(들)/데이터(134)와 조합하여, (도 5a 내지 도 5c를 참조하여) 전술된 바와 같이 컴퓨터 시스템(500)에 대응할 수 있지만, 이해할 수 있는 바와 같이, 컴퓨터 시스템(146)은 도 5a에 도시된 컴포넌트들 모두를 포함하지는 않을 수도 있고, 컴퓨터 시스템(146)은 (예를 들어, 디바이스(102)에 의해 요구되는 특별한 처리에 관련된) 추가 컴포넌트를 포함할 수 있다. 예를 들어, 컴퓨터 시스템(146)은 복수의 프로세서, 복수의 메모리 등을 포함할 수 있다. 컴퓨터 시스템(146)은 복수의 컴퓨터 시스템(500)으로 형성될 수도 있다는 것을 이해해야 한다. 또한, 컴퓨터 시스템(146)은 디바이스-특정적 기능(132) 중 일부 또는 전부를 구현할 수 있다.
제어 디바이스
시스템-가능형(system-enabled) 디바이스(102)는, 음성 제어, 제스처 제어, (예를 들어, 버튼 등을 이용하는) 콘택트 제어 중 하나 이상에 의해 제어될 수 있다. 또한, 특정 종류의 시스템-가능형 디바이스(102)는, 다른 유사한 디바이스가 존재하는 경우에, 하나 이상의 다른 디바이스에 의해 또는 하나 이상의 다른 디바이스에 주어진 명령에 의해 완전히 또는 부분적으로 제어될 수 있다. 예를 들어, 디바이스(102)들이 스피커인 경우, 복수의 디바이스들이 결합되어 합께 동작할 수 있다. 이러한 경우, 소정의 명령(예를 들어, 음량 상승)이 사용자에 의해 디바이스들(스피커들) 중 하나에 주어질 수 있지만, 모든 협력하는 디바이스들이 따라야 한다.
음성 제어
디바이스의 음성 메커니즘(들)(166)은 디바이스의 음성 제어를 지원하는데 이용될 수 있다. 음성 메커니즘(들)(166)은 바람직하게는 디바이스의 종류에 적절한 기본 명령을 위한 음성 인식 메커니즘을 포함한다. 예를 들어, 1차적으로 스피커인 디바이스의 경우, 음성 명령은 디바이스를 전원 차단(또는 저전력 모드로부터 온), 더 크게 재생, 더 부드럽게 재생하는 등의 명령을 포함할 수 있다. 음성 메커니즘(들)(166)은 특별한 하드웨어 또는 회로 및 DSP(Digital Signal Processor)를 이용하여 구현될 수 있다.
각 디바이스는 바람직하게는 사용자로부터의 인식된 단어들의 코퍼스를 유지한다. 일부 경우에, 디바이스는 다수의 사용자 각각에 대해 하나씩, 단어들의 복수의 코포라를 유지할 수 있다. 디바이스는 하나보다 많은 사람에 의해 제어될 수 있으므로(및 디바이스에 설정된 퍼미션에 따라, 디바이스를 제어하는 사람은 시스템의 알려진 사용자가 아닐 수도 있으므로), 디바이스는 특정의 명령을 적절한 사용자와 연관시킬 수 있을 필요가 있다. 이런 방식으로 디바이스는 단어들의 어느 코퍼스를 음성/명령 인식에 이용할지를 판정할 수 있다.
디바이스(102)는 적절한 코퍼스를 선택하기 위하여 음성을 특정한 사용자와 연관시키기 위해 하나 이상의 카메라(센서(138))와 조합하여 얼굴 인식 메커니즘(들)(168)을 이용할 수 있다.
일부 경우에, 디바이스는 음성 명령/요청을 처리하지 못할 수 있다. 이것은, 명령/요청의 복잡성, 환경적 원인(예를 들어, 노이즈), 화자의 억양(accent) 등을 포함하는 임의의 개수의 요인에 기인한 것일 수 있다. 이러한 경우에, 디바이스는, 가능하다면(예를 들어, 네트워크에 접속되어 있다면), 및 허용될 수 있다면, 음성 명령/요청을 (예를 들어, 음성 인식이 제공된 추가 기능(120)에 의한) 처리를 위해 백엔드에 전송할 수 있다. 음성은 원시 형태(raw form)로 또는 일부 미리처리된 형태로 전송될 수 있다. 이러한 처리의 결과는 백엔드에 대한 명령/요청(예를 들어, 데이터베이스 질의) 또는 디바이스 자체에 대한 명령일 수 있다. 백엔드를 통해 원격으로 처리된 디바이스 명령은 디바이스의 특정 양태를 제어(예를 들어, 스피커의 경우, "더 크게 재생")하기에 충분히 신속하지 못할 수 있고, 백엔드 처리는 더 복잡한 명령, 특히 데이터베이스 질의를 수반하는 것들에 더 유용할 수 있다는 점을 이해해야 한다.
제스처 제어
디바이스의 제스처 메커니즘(들)(164)은, 단독으로 또는 음성 메커니즘(들)(166)과 조합하여, 디바이스의 제스처 제어를 지원하는데 이용될 수 있다. 제스처 메커니즘(들)(164)은 바람직하게는 디바이스의 종류에 적절한 기본 명령을 위한 제스처 인식 메커니즘을 포함한다. 제스처 메커니즘(들)(164)은, 예를 들어, 하나 이상의 카메라 센서를 포함하는 하나 이상의 센서(138)를 이용할 수 있다. 특별 목적 제스처 검출/인식 하드웨어 및 회로가 이용될 수 있다.
얼굴 및 시선 검출
일부 경우에, 디바이스 근처에서 동시에 말하는 복수의 사람이 있을 수 있다. 이들이 말하는 내용 중 일부는 디바이스에 대한 명령으로서 의도하지 않은 것일 수 있다. 따라서, 일부 경우에, 디바이스는 (얼굴/시선 메커니즘(들)(168)에 의해 판정되는) 시선 검출의 조합을 이용하여 음성 명령이 디바이스에 의도된 것인지를 판정할 수 있다. 얼굴/시선 메커니즘(들)(168)은 하나 이상의 센서(예를 들어, 하나 이상의 카메라)를 이용하여 말하고 있는 사람이 디바이스(102)를 실제로 보고 있는지의 여부를 판정할 수 있다. 사람은 디바이스쪽으로 완전히 향하기 전에 (디바이스에) 말을 하기 시작할 수 있기 때문에, 바람직하게는 각 디바이스는 음향의 기간을 계속 버퍼링하여 일단 시선이 검출되면, 디바이스가 버퍼링된 스트림의 음성 인식을 개시할 수 있게 한다.
일부 경우에, 디바이스를 보고 있는 사람이 디바이스에 말을 하고 있는 사람이라는 것을 확정하기 위해 입 움직임 검출이 시선 검출과 조합하여 이용될 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 음성 인식, 제스처 검출 및 인식, 얼굴 및/또는 시선 검출이 다양한 조합으로 이용되어 디바이스를 제어할 수 있다는 것을 이해할 것이다.
백엔드에 다시 보고하기
동작시에, 각 디바이스는 백엔드(102)에 정보를 보고한다(도 1의 원호 #7에 대응). 이 정보는 바람직하게는, 보고 디바이스의 고유 디바이스 ID와, 디바이스가 사용자와 연관되어 있다면, 보고 디바이스의 소유자와 연관된 고유 사용자 ID를 포함한다. 각 디바이스에 의해 보고된 정보의 일부 또는 전부는 디바이스 데이터베이스(128) 및/또는 사용자 데이터베이스(130)에, 예를 들어, 각각, 디바이스 이력 및/또는 사용자 이력으로서 저장될 수 있다. 각 디바이스는 고유 디바이스 ID를 갖고, 각 사용자는 고유 사용자 ID를 갖기 때문에, 디바이스로부터의 정보는 디바이스와 사용자 ID에 관해 키잉된 데이터베이스(들)에 저장될 수 있다.
일부 경우에, 디바이스(102)는 그 보고시에 자신의 위치에 대한 정보를 포함할 수 있다. 이들 경우에, 위치 정보는 디바이스 데이터베이스에 (현재의 디바이스 위치로서 및 디바이스 이력으로서) 저장될 수 있다. 유사하게, 위치 정보는 디바이스 이력에 따라 사용자 데이터베이스에 저장될 수 있다. 이런 방식으로, 데이터베이스에 대한 질의는 디바이스 위치에 대한 질의를 포함할 수 있다.
사용자가 시스템에 등록하는 경우, 사용자는 등록시의 자신의 현재 위치와 연관된 위치 식별 정보를 제공할 수 있다. 사용자는 또한 시스템 내의 복수의 위치를 저장할 수 있고, 각 위치는 사용자에 의해 제공된 상이한 식별을 가진다. 예를 들어, 사용자는 자신의 집, 일터, 친구의 집 등에 대한 GPS 위치 정보를 저장할 수 있다. 이런 방식으로, 시스템은 명칭부여된 위치에 기초하여 데이터베이스 질의를 지원할 수 있다(예를 들어, "내 디바이스가 어디에 있나?"에 대한 시스템의 응답은 "Joe의 집"이 될 수 있다). 바람직하게는, 사용자는 위치 정보의 저장을 특별히 요청할 필요가 없는데, 이것은 위치(예를 들어, GPS) 데이터가 바람직하게는 이력 데이터 또는 정황 메타데이터(context metadata)의 일부로서 자동으로 저장되기 때문이다.
디바이스(102)는 또한, 디바이스의 종류에 특정적인 정보(예를 들어, 디바이스의 특정 기능)를 보고할 수 있다. 예를 들어, 주로 스피커인 디바이스는 자신이 어디서 무엇을 재생하고 있는지에 대한 정보를 백엔드에 보고할 수 있다. 일부 경우에, 정보는 디바이스 설정 및 어떤 다른 디바이스들이 관여(예를 들어, 조인)되었는지에 대한 정보를 포함할 수 있다. 이런 방식으로, 데이터베이스(들)은 "내가 어제 밤 약 10시 경에 Joe의 집에서 무엇을 재생하고 있었는가?"라는 종류의 질의를 지원할 수 있고, 이에 대해 시스템은 노래 목록을 제공할 수 있다.
디바이스(102)는 또한 근접한 디바이스 또는 사용자에 대한 정보를 보고할 수 있다.
예시적 디바이스 ― 음향 렌더링 디바이스
도 8a 내지 도 8d는, 디바이스의 특정 기능이 음향 렌더링인 예시적 디바이스(800)의 아키텍쳐(디바이스(102)의 실시예)의 양태를 도시한다. 디바이스(800)는, 예를 들어, 스피커로서 이용될 수 있다. 도 8a, 8b에 도시된 바와 같이, 음향 렌더링 디바이스(800)는 디바이스-특정적 기능을 지원하는 컴포넌트(832)를 포함한다. 이들 컴포넌트(832)는, 하나 이상의 스피커 드라이버(860), 하나 이상의 신호 프로세서(862), 하나 이상의 프로세서(864), 메모리/스토리지(866), 및 제어부(868)를 포함한다.
도 8a, 8c에 도시된 바와 같이, 디바이스(800)는, 블루투스 메커니즘, 이더넷(Ethernet) 메커니즘, ZigBee 메커니즘, 셀룰러 메커니즘, 및 Wi-Fi 메커니즘을 포함하는, 통신 메커니즘을 포함할 수 있다. 일 구현에서, 디바이스(800)의 통신 메커니즘은 블루투스 메커니즘을 포함하고, 이더넷, ZigBee, 또는 셀룰러 메커니즘을 포함하지 않는다.
도 8a 및 도 8d에 도시된 바와 같이, 음향 렌더링 디바이스(800)는 또한, 하나 이상의 카메라(870), 하나 이상의 마이크로폰(872), 디바이스 모션 센서(들), 위치/포지션 센서(들), 외부 모션 센서(들), 터치/접촉 센서(들), 광 센서(들), 온도 센서(들), 및 기타의 센서들을 포함하는 센서(838)를 포함할 수 있다. 일 구현에서, 디바이스(800)의 센서는 카메라 또는 온도 센서를 포함하지 않는다.
일 예시적 구현에서, 이들 컴포넌트들 중 일부에 대해 다음과 같은 것들이 이용될 수 있다:
Figure pct00007
또 다른 구현예에서, 이들 컴포넌트들에 대해 다음과 같은 것들이 이용될 수 있다:
Figure pct00008
상기 목록은 단지 예로서 주어진 것이고, 어떤 식으로든 시스템의 범위를 제한하기 위함이 아니라는 것을 이해해야 한다.
다양한 인터페이스 메커니즘(162)에 대해 임의의 알려진 메커니즘이 이용될 수 있다. 예를 들어, 얼굴 움직임 검출은 인간 얼굴의 모델-기반의 코딩에 대해 CANDIDE 시스템을 이용할 수 있다. CANDIDE는 보통의(moderate) 컴퓨팅 전력으로 빠른 재구성을 허용하는 작은 수의 폴리곤(약 100)을 갖는 얼굴 모델을 이용한다.
음향-렌더링 디바이스(800)는 전술된 바와 같이 디바이스(102)로서 동작할 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 기타의 특정한 컴포넌트들이 음향-렌더링 디바이스(800) 내에서 이용될 수 있고, 이러한 다른 컴포넌트들은 본원에서 고려되고 있으며 시스템의 범위 내에 있다는 것을 이해할 것이다. 다양한 컴포넌트들이 복수의 방식으로 구현되고 팩키징될 수 있으며, 디바이스는 컴포넌트들이 구현되거나 팩키징되는 방식에 의해 제한되지 않는다는 것을 이해해야 한다. 디바이스는 그 팩키징이나 디바이스가 취하는 형태(즉, 디바이스의 폼팩터)에 의해 제한되지 않는다는 것도 이해해야 한다.
이하의 표는 디바이스가 음성 인식 메커니즘을 이용하여 로컬로 해석할 수 있는 예시적 명령(즉, 구문)의 목록의 문법을 포함한다. 본원에서 사용되는 경우, 구문이란 하나 이상의 단어를 말한다. 이하의 코퍼스 표에서, 굵은 이탤릭체의 구문은 로컬 코퍼스이고; 사각 괄호("[", "]")는 선택사항이다. 구문들 사이의 수직 바("|")는 "또는"(즉, 구문들 중 하나)을 의미한다. 따라서, 예를 들어, "A"|"B"는 구문 "A" 또는 구문 "B"를 의미한다. "#n"으로 표기된 구문은 숫자를 의미한다. 별표("*")에 후속되는 구문은 그 구문이 반복될 수 있다는 것을 의미한다. "(s)"가 후속되는 단어 구문은 단수의 또는 복수의 단어가 사용될 수 있다는 것을 의미한다. 따라서, 예를 들어, 표에서 항목 번호 2,
Figure pct00009
는 "a little lower", "much higher", "softer", "five lower", "little softer", "much much softer", "quiet", "quieter", "a little quieter" 등에 대응한다.
Figure pct00010
예로서, 표에서 항목 번호 3은 다음 중 임의의 것을 의미할 수 있다: "Play the next ten tunes", "Play any random song", "play next tune", "replay the previous song," "Play random tunes", "Replay", "Play", 등. 또 다른 예로서, 항목 번호 5는 다음 중 임의의 것을 의미할 수 있다: "Skip", "next three songs", "a tune", "skip seven", "previous tune", 등. 추가의 예로서, 항목 번호 8은, "tone", "adjust treble up", "bass lower" 등 중에서 임의의 것을 의미할 수 있다.
이하에서:
<musical entity>는 특정 노래, 아티스트, 또는 앨범일 수 있다.
<artist entity>는 아티스트의 이름이다(예를 들어, 핑크 플로이드).
<album entity>는 노래들의 정렬된 특정 콜렉션이다(예를 들어, "Dark side of the moon").
일부 실시예들에서, 음성 명령은 다음을 포함할 수 있다:
"play"(<artist entity> | <musical entity> "by" <artist entity> | <album entity> by <artist entity> | "somethin" | "something new" | "something different" | "my favorite")
따라서 음성/스피치 인식 메커니즘(들)(178)은 특정의 발성된 구문을 인식할 수 있고 그 다음 그들의 대응하는 시맨틱(즉, 의미)을 판정하고 대응하는 지시를 다른 운용 메커니즘(예를 들어, 명령/제어 메커니즘(들)(158))에 제공하여 디바이스를 실제로 제어해야 할 것이다.
이 예시의 코퍼스는 인식된 구문의 문법을 제공하고, 모든 구문들이 디바이스에 대해 의미(또는 타당한 의미)를 갖지는 않을 것임을 이해해야 한다. 예를 들어, 상기 번호 3은 구문 "replay the next any three song"의 인식을 지원하고, 상기 번호 5는 구문 "skip the previous a tune"의 인식을 지원할 것이다. 이들 구문들 양쪽 모두는 (코퍼스 내의 문법에 따라) 문법적으로 올바르지만, 이들은 어떠한 의미있는 명령에도 대응하지 않으며 디바이스에 의해 무시될 수 있다.
음성/스피치 인식 메커니즘(들)(178)에 대해 상기에서 주어진 코퍼스 문법은 단지 예로서 제공된 것이고, 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/기타의 음성 명령이 음향 렌더링 디바이스(800)에 의해 이해될 수 있고, 본 명세서에서 고려된다는 것을 이해할 것이다.
음향 렌더링 디바이스(800)는 서로 협력하여 동일한 음향을 렌더링(예를 들어, 동일한 소스로부터의 동일한 음악을 동시에 - 바람직하게는 동기화되어 재생)할 수 있다. 2개 이상의 음향-렌더링 디바이스(800)가 협력하여 동일한 소스로부터의 음향을 렌더링하고 있는 경우, 이들은 정확히 동일한 음향을 렌더링할 필요는 없다. 예를 들어, 복수의 음향-렌더링 디바이스(800)가 협력하여 동일한 소스로부터의 음향을 서라운드 음향 시스템으로서 렌더링할 수 있다. 또 다른 예로서, 복수의 음향-렌더링 디바이스(800)는 협력하여 동일한 소스로부터의 음향을 렌더링하되, 이들 중 일부는 (예를 들어, 일부 악기로부터의) 일부 음향을 렌더링하는 한편 다른 것들은 (예를 들어, 다른 악기로부터의) 다른 음향을 렌더링할 수 있다.
음향-렌더링 디바이스(800)는 음향을 생성하는데 이용되는 신호의 소스일 수도 있다는 점을 이해해야 한다. 예를 들어, (iPhone 등의) 스마트폰은 (비록 작긴 하지만) 스피커를 갖고 음향을 생성하기 위해 (전화 그 자체 및 다른 디바이스(800) 양쪽 모두에 의해) 이용될 수 있는 신호를 생성할 수 있다.
음향-렌더링 디바이스(800)들 사이의 협력의 예가 도 9a 내지 도 9c를 참조하여 이하에서 주어진다.
예시적 협력 - 스테레오
도 9a의 도면을 참조하면, 2개의 음향-렌더링 디바이스(800-A 및 800-B)가 협력하여 스테레오 효과를 제공할 수 있다. 디바이스들 내의 DSP는 예를 들어, 협력하여 Haas 효과를 생성한다. 디바이스들은 (예를 들어, 반향 정위(echo location) 또는 일부 다른 메커니즘을 이용하여) 그들 자신의 상대적 위치를 판정할 수 있고, 이들은 이 상대적 위치 정보를 이용하여 협력 효과를 최적화할 수 있다는 것을 이해해야 한다.
예시적 협력 - 별개의 악기
도 9b의 도면을 참조하면, 복수의 음향-렌더링 디바이스(800A 내지 800D)는 그들 중 각각의 것이 소스 신호 내의 악기들 중 일부만을 재생하도록 협력할 수 있다. 소스 신호는 각 악기에 대한 별개의 스트림을 제공하거나 각각의 DSP는 특정의 악기를 필터링 아웃하도록 프로그램될 수 있다. 디바이스가 이 그룹에 조인하면, 각 디바이스는 렌더링할 하나 이상의 악기에 할당된다. 예를 들어, 초기에 디바이스 A는 단독으로 재생하고 있었고 소스 신호 내의 모든 음향을 렌더링하고 있었다고 가정한다. 디바이스 B가 디바이스 A에 조인하면, 디바이스 A는, 예를 들어, 베이스와 바이올린을 렌더링하고, 디바이스 B는 첼로와 보컬을 렌더링할 수 있다. 디바이스 C가 디바이스 A와 B에 조인하면, 디바이스 C는 바이올린을 담당할 수 있고, 디바이스 A에게는 베이스만을 남겨준다. 그 다음, 디바이스 D가 조인하면, (도 9b의 도면에 도시된 바와 같이) 디바이스 D는 디바이스 B로부터 보컬에 대한 담당을 취할 수 있다. 다른 디바이스들이 그룹에 조인하면 이들은 이미 존재하는 디바이스들 중 하나 이상와 결합하거나 일부 다른 담당을 취할 수 있다. 디바이스가 그룹을 떠나면, 그 디바이스가 담당하던 신호의 부분은 여전히 그룹 내에 있는 또 다른 디바이스에게 재할당되어야 한다.
이 예는 오디오 신호 내의 상이한 악기에 대한 선택적 담당을 보여주고 있지만, 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 디바이스(800)는 오디오 스트림의 상이한 및/또는 다른 양태들에 대해 담당할 수 있다는 것을 이해할 것이다. 디바이스(800)는 그의 DSP가 필터링(필터링 인 또는 필터링 아웃)할 수 있는 오디오 스트림의 임의의 부분 또는 부분들을 렌더링할 수(또는 렌더링하지 않을 수) 있다는 점을 이해해야 한다. 또한, 디바이스(800)는 그의 DSP가 필터링할 수 있는 오디오 스트림의 임의의 부분 또는 부분들을 강화 또는 수정할 수 있다.
예시적 협력 - 임의 배열
도 9c를 참조하면, 임의적(무계획적) 배열로 배치된 또는 위치한 복수의 음향-렌더링 디바이스(800-A 내지 800-E)가 협력할 수 있다. 디바이스들은 (예를 들어, 반향 정위(echo location) 또는 일부 다른 접근법을 이용하여) 그들 자신의 상대적 위치를 판정할 수 있고, 이들은 이 상대적 위치 정보를 이용하여 협력 효과를 최적화할 수 있다. 디바이스들은 또한 협력하여 (청취자의 위치가 알려지거나 판정될 수 있다면) 청취자에 대한 최적의 또는 이로운 협력 효과를 생성할 수 있다.
디바이스들은, 청취자가 자신들에게 명령(음성, 제스처 등)을 내리는 사람이라고 가정한다면, 디바이스들은 그들 각각의 카메라를 이용하여 청취자의 위치를 파악(및 추종)하고, 그에 따라 음향을 조정할 수 있다. 단일의 디바이스 내의 단일의 카메라는 청취자가 위치한 방향을 판정할 수 있을 수 있다. 일부 기술은 단일의 카메라가 근사 거리를 판정하는 것을 허용한다. (단일 디바이스 또는 복수 디바이스 내의) 복수의 카메라는 (예를 들어, 얼굴 위치 및/또는 움직임 추적에 의해) 더욱 정확하게 청취자의 위치를 파악할 수 있다. 사람의 위치를 파악하기 위해 하나 이상의 카메라를 이용하는 것 외에도(또는 그 대신에), 음성 입력 및 반향 검출을 이용하여 위치 검출이 달성될 수 있다. 따라서, 카메라를 갖지 않는 디바이스에서, 음성 입력 및 반향 검출이 단독으로 이용되어 위치를 판정할 수 있다. 카메라를 갖는 디바이스에서, 음성 입력 및 반향 검출은 단독으로 또는 카메라(들)과 조합하여 위치를 판정할 수 있다.
협력을 위한 다양한 옵션들이 이 예에서 가능하다. 예를 들어, 상이한 악기들이 상이한 스테레오 라인들(도면에서 L1, L2, L3)을 따라 배치될 수 있다; 디바이스들(800-A 내지 800-E) 중 일부는 반향, 잔향(reverberation) 등의 효과를 추가하기 위해 이용될 수 있다; 디바이스들 중 일부는 룸 노이즈 또는 반향 등을 소거하는데 이용될 수 있다.
예를 들어, 도 9c에 도시된 바와 같이, 베이스는 (스테레오 라인 L1을 따라) 디바이스들 A와 C에 의해 렌더링될 수 있고, 바이올린과 첼로는 (스테레오 라인 L2를 따라) 디바이스들 A와 E에 의해 렌더링될 수 있고, 보컬은 (스테레오 라인 L3을 따라) 디바이스들 D와 E에 의해 렌더링될 수 있다. 효과(예를 들어, 룸 노이즈 또는 반향의 상쇄)는 디바이스 B에 의해 수행될 수 있다.
오디오 신호가 복수의 채널 또는 기타의 인코딩을 포함한다면, 디바이스들은 협력하여 이들 채널들을 렌더링할 수 있다.
음향 렌더링 디바이스(800), 특히 휴대형 디바이스의 성질은, 그들의 협력에 적합하다. 일부 구현에서, 사용자는 친구에게 그들의 디바이스(800)를 공유하는 게스트 특권을 부여할 수 있다. 일부 구현에서, 사용자는 그들의 음향-렌더링 디바이스(800)를 공유하기 위해 모든 임의의 다른 디바이스에 임시 ("파티 모드(party mode)") 특권을 부여할 수 있다.
충돌 해결
(하트비트 처리를 참조하여) 전술된 바와 같이, 복수의 디바이스가 협력을 시도하는 경우, 하나의 디바이스가 제어권을 갖는 것이 필요할 수 있다. 음향 렌더링 디바이스(800)의 경우, 바람직한 협약은, (예를 들어, 터치 등에 의해) 다른 디바이스와 먼저 콘택트를 개시하는 디바이스가, 필요하다면/필요할 때, 결정을 내리는데 있어서 주도권을 가지는 것이다. 본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 어느 디바이스가 제어권을 갖는지를 결정하는 상이한 및/또는 기타의 기술이 이용될 수 있고 본원에서 고려된다는 것을 이해할 것이다.
장르 분류
음향은 장르(genre)(예를 들어, 보컬, 기악, 재즈, 클래식, 발성된 음성 등)로 분류될 수 있고 이들 장르를 음향 소스 신호가 제공받을 수 있고 음향-렌더링 디바이스(800) 내의 DSP를 자동으로 설정 또는 조정하는데 이용될 수 있다. 일부 경우에, 프리셋(preset) 장르 정보는 (일부 사용자 인터페이스를 통해 제공되거나 디바이스와의 사용자 상호작용에 기초하여 디바이스에 의해 학습될 수 있는) 사용자 선호사항과 결합되거나 이에 의해 무효화될 수 있다. 예를 들어, 사용자가 특정 장르의 음악에 대한 DSP 설정을 항상 조정하여 항상 프리셋 DSP 설정을 무효화한다면, 디바이스(800)는 사용자의 원하는 설정을 학습할 수 있고 그 장르에 대한 시스템의 프리셋 설정 대신에 항상 이것들을 이용할 수 있다.
장르 정보는, 예를 들어, 미리, 소스 음향을 분석하는 오프라인 프로세스에서 설정될 수 있다. 예를 들어, 소스 라이브러리의 제공자는 음악의 각 아이템의 장르를 분류하기 위해 그들의 라이브러리 내의 모든 음악을 사전분석할 수 있다. 그 분류, 예를 들어, 장르를 나타내는 비트 벡터가 저장될 수 있고 소스 데이터를 제공받을 수 있다. 그러나, 소스 신호 내의 장르 정보의 처리는 장르 정보가 획득 또는 설정된 방식과는 독립적이라는 점을 이해해야 한다.
협력하는 디바이스(800)들은 이들이 협력하는 것을 결정하고 그 방법을 조정하기 위해 소스 신호 내의 장르 정보를 이용할 수 있다. 따라서, 복수의 노래에 대응하는 음향을 렌더링할 때, 협력하는 디바이스(800)들은 그들이 각 노래의 장르에 따라 협력하는 방식을 수정할 수 있다.
본 기술분야의 통상의 기술자라면, 본 상세한 설명을 읽을 시에, 상이한 및/또는 기타의 종류의 협력이 복수의 음향 렌더링 디바이스(800)에 의해 이용될 수 있고, 이러한 협력(들)은 본원에서 고려되고 있으며 시스템의 범위 내에 있다는 것을 이해할 것이다.
이력 및 학습
앞서 언급된 바와 같이, 시스템(100)은 각 디바이스(102)로부터 정보를 획득할 수 있다. 음향 렌더링 디바이스(800)의 경우, 디바이스들은 바람직하게는 그들이 렌더링하고 있는 음향이 무엇인지를(예를 들어, 그들이 어떤 음악 등을 재생하고 있는지를) 뿐만 아니라 음향이 언제 어디서 렌더링되고 있는지를 백엔드(184)에게 통보한다. 이 목적을 위해, 각 디바이스(800)는 그의 활동의 이력을 유지하고 그 이력을 정기적 기반으로 및/또는 가능할 때 백엔드(184)에 제공한다. 이력은 디바이스의 활동을 재현하기 위해 이용될 수 있는 타임-스탬프되고, 정렬된 활동의 목록과 디바이스 설정으로서 제공될 수 있다. 디바이스가 또 다른 디바이스와 협동하고 있다면, 그 정보는 이력에도 포함되고 양쪽 (모든) 협력 디바이스들은 그들 자신의 이력 정보를 백엔드에 제공한다.
백엔드는 디바이스 이력 정보를 디바이스와 사용자 데이터베이스(128, 130)에 저장한다.
이러한 종류의 디바이스 이력 정보는 (백엔드(184) 및 가능하게는 추가 기능(120)을 통해) 다음과 같은 종류의 후속 질의를 지원한다:
1. "월요일 오후 4:30분에 내가 듣고 있었던 것을 재생하시오."
2. "일요일 아침 [사용자] Joe와 함께 내가 듣고 있었던 것을 재생하시오."
3. "2012년 7월 1일 내가 했던 설정으로 내 디바이스를 설정하시오."
4. "[사용자 및 친구] Mary가 지금 듣고 있는 것을 재생하시오."
질의 #2는 질의하고 있는 사용자와 Joe가 친구일 것을 요구할 수 있으며 Joe로부터의 퍼미션을 요구할 수 있다는 점에 유의한다. 질의 #4는 질의하고 있는 사용자와 Mary가 친구일 것을 요구할 수 있으며 Mary로부터의 퍼미션을 요구할 수 있다는 점에 유의한다. 질의 #4는 Mary가 청취하고 있는 것이 무엇인지를 (거의 실시간으로) 알기 위해 시스템이 업데이트되었다고 가정한다는 점에 유의한다.
이들 질의는 단지 예로서 제공된 것이고 어떤 식으로든 시스템의 범위를 제한하고자 함이 아니다.
노이즈 상쇄
앞서 언급된 바와 같이, 디바이스는 음성 상호작용을 더 정확하게 처리하기 위하여 환경 노이즈를 필터링 아웃하려고 시도할 수 있다. 디바이스 그 자체는 환경 노이즈의 소스일 수 있기 때문에, 음향-렌더링 디바이스(800)는 추가 문제를 제기한다. 어쨌든, 디바이스는 디바이스에 의해 렌더링된 음향을 디바이스 자체에 대한 명령으로서 인지하지 않아야 한다. 따라서, 바람직한 구현에서, 음향-렌더링 디바이스(800)는 그의 음향 센서(마이크로폰)에 의해 획득된 음향으로부터 자신이 생성하는 음향을 필터링 아웃한다.
여기서 사용될 때, 단어 "제1", "제2" 등등은, 용어 앞에서 형용사로서 사용될 때, 단순히 유사한 용어들을 구분하기 위해 사용되는 것일 뿐이며, 이들의 사용은 어떠한 수치적 제한 또는 임의의 순서(시간적 또는 다른 방식)를 암시하거나 정의하는 것은 아니다. 따라서, 예를 들어, 용어 "제1 디바이스" 및 "제2 디바이스"는 단순히 상이한 디바이스를 가리키며 이들간을 구분하기 위해 사용되는 것이다.
청구항들을 포함하여 본원에서 사용되는 경우, 구문 "~에 기초하여"는 특별히 달리 명시하지 않는 한 "적어도 부분적으로 ~에 기초하여"를 의미한다. 따라서, 예를 들어, 구문 "XYZ에 기초하여"는 "적어도 부분적으로 XYZ에 기초하여"를 의미한다.
따라서, 디바이스 구성, 상호작용 및 제어를 위한 통일된 프레임워크(unified framework)가, 이들에서 사용된 시스템, 디바이스 및 메커니즘과 함께 설명되었다. 본 발명이 현재로서 가장 실용적이고 바람직한 실시예인 것으로 간주되는 것과 연계하여 설명되었지만, 본 발명은 개시된 실시예로 제한되어서는 안 되며, 오히려, 첨부된 특허청구범위의 사상과 범주 내에 포함되는 다양한 변형 및 균등한 구성을 망라하기 위한 것임을 이해하여야 한다.

Claims (51)

  1. 디바이스로서,
    (A) 상기 디바이스의 디바이스-특정적 기능을 지원하는 제1 메커니즘들; 및
    (B) 상기 제1 메커니즘들의 제어를 지원하는 제2 메커니즘들
    을 포함하고,
    상기 제2 메커니즘들은,
    (B)(1) 상기 디바이스의 물리적 및 환경적 특성들 및/또는 상기 디바이스 주변의 환경에 관한 정보를 획득하도록 구성된 센서들;
    (B)(2) 제어 메커니즘들; 및
    (B)(3) 상기 센서들 중 적어도 일부로부터 센서 입력을 획득하여 상기 센서 입력에 기초하여 센서 정보를 판정하고 상기 센서 정보를 상기 제어 메커니즘들에 제공하도록 구성된 인간-인터페이스(human-interface) 메커니즘들을 포함하고,
    (C) 상기 제어 메커니즘들은,
    (C)(i) 상기 인간-인터페이스 메커니즘들로부터의 상기 센서 정보에 기초하여 제어 정보를 판정하고,
    (C)(ii) 상기 제어 정보의 적어도 일부를 상기 제1 메커니즘들에 제공하도록 구성되며,
    (D) 상기 제1 메커니즘들은 상기 제어 메커니즘들로부터 상기 제어 정보를 획득하고 적어도 부분적으로 상기 제어 메커니즘들로부터 획득된 상기 제어 정보에 따라 동작하도록 구성되고(configured) 적응되며(adapted),
    (E) 상기 센서들은,
    (E)(1) 상기 디바이스 주변의 상기 환경으로부터 이미지 정보를 획득하고 상기 이미지 정보를 상기 인간-인터페이스 메커니즘들에 제공하도록 구성된 하나 이상의 카메라, 및
    (E)(2) 상기 디바이스 주변의 상기 환경으로부터 음향 정보를 획득하고 상기 음향 정보를 상기 인간-인터페이스 메커니즘들에 제공하도록 구성된 하나 이상의 마이크로폰(microphone)
    을 포함하고,
    (F) 상기 인간-인터페이스 메커니즘들은,
    (F)(1) 상기 음향 정보 내의 스피치(speech)를 인식하고 상기 음향 정보 내의 인식된 스피치에 대한 정보를 스피치 정보로서 상기 제어 메커니즘들에 제공하도록 구성된 스피치 메커니즘들 - 상기 제어 메커니즘들은 상기 스피치 정보에 기초하여 상기 제어 정보를 판정함 - ; 및
    (F)(2) 상기 이미지 정보 내의 얼굴 정보 및/또는 시선(gaze) 정보를 검출하도록 구성된 얼굴 메커니즘들
    을 포함하고,
    상기 스피치 메커니즘들 (F)(1)은 상기 얼굴 메커니즘들에 의해 검출된 정보에 기초하여 스피치 인식을 개시하도록 구성되는 디바이스.
  2. 제1항에 있어서, 상기 스피치 메커니즘들은 상기 얼굴 메커니즘들에 의해 검출된 시선 정보에 기초하여 스피치 인식을 개시하도록 구성되는 디바이스.
  3. 제1항 또는 제2항에 있어서, 상기 스피치 메커니즘들은 상기 디바이스 주변의 상기 환경으로부터의 음향 정보를 버퍼링하고 상기 얼굴 메커니즘들에 의해 검출된 시선 정보에 기초하여 버퍼링된 음향 정보의 스피치 인식을 개시하도록 구성되는 디바이스.
  4. 제1항 또는 제2항에 있어서, 상기 스피치 메커니즘들은 적어도 하나의 스피치 코퍼스(speech corpus)를 이용하고 상기 스피치 메커니즘들은 상기 얼굴 메커니즘들에 의해 제공된 얼굴 정보에 기초하여 상기 적어도 하나의 스피치 코퍼스로부터 스피치 코퍼스를 선택하도록 구성되는 디바이스.
  5. 제1항 또는 제2항에 있어서, 상기 인간-인터페이스 메커니즘들은,
    (F)(3) 상기 이미지 정보 내의 제스처(gesture)들을 검출 및 인식하고; 상기 이미지 정보 내의 인식된 제스처들에 대한 상기 정보를 제스처 정보로서 상기 제어 메커니즘들에 제공하도록 구성된 제스처 메커니즘들을 더 포함하고,
    상기 제어 메커니즘들은 상기 제스처 정보에 기초하여 상기 제어 정보를 결정하도록 구성되는 디바이스.
  6. 디바이스로서,
    (A) 상기 디바이스의 디바이스-특정적 기능을 지원하는 디바이스-특정적 메커니즘들; 및
    (B) 상기 디바이스-특정적 메커니즘들의 제어를 지원하는 제2 메커니즘들
    을 포함하고,
    상기 제2 메커니즘들은,
    (B)(1) 제어 메커니즘들;
    (B)(2) 상기 디바이스 주변의 환경으로부터 이미지 정보를 획득하도록 구성된 하나 이상의 카메라, 및 상기 디바이스 주변의 상기 환경으로부터 음향 정보를 획득하도록 구성된 하나 이상의 마이크로폰을 포함하는 센서들; 및
    (B)(3) 인간 인터페이스 메커니즘들을 포함하고,
    상기 인간 인터페이스 메커니즘들은,
    (B)(3)(1) 상기 하나 이상의 카메라로부터 획득된 이미지 정보 내의 시선 정보를 판정하도록 구성된 얼굴 메커니즘들, 및
    (B)(3)(2) 상기 하나 이상의 마이크로폰으로부터 획득된 음향 정보 내의 스피치를 인식하고 상기 음향 정보 내의 인식된 스피치에 관한 정보를 스피치 정보로서 상기 제어 메커니즘들에 제공하도록 구성된 스피치 메커니즘들을 포함하며,
    상기 스피치 메커니즘들은 상기 얼굴 메커니즘들에 의해 검출된 시선 정보에 기초하여 스피치 인식을 개시하도록 구성되고,
    상기 인간-인터페이스 메커니즘들은, 상기 스피치 메커니즘들로부터 획득된 인식된 스피치에 관한 상기 정보에 기초하여 인터페이스 정보를 판정하고, 상기 인터페이스 정보를 상기 제어 메커니즘들에 제공하도록 구성되며,
    상기 제어 메커니즘들은,
    상기 인간-인터페이스 메커니즘들로부터의 상기 인터페이스 정보에 기초하여 제어 정보를 판정하고,
    상기 제어 정보의 적어도 일부를 상기 디바이스-특정적 메커니즘들에 제공하도록 구성되며,
    상기 디바이스-특정적 메커니즘들은, 상기 제어 메커니즘들로부터 상기 제어 정보를 획득하고 적어도 부분적으로 상기 제어 메커니즘들로부터 획득된 상기 제어 정보에 따라 동작하도록 구성되는 디바이스.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 디바이스-특정적 기능은 음향 렌더링(sound rendering)을 포함하는 디바이스.
  8. 제7항에 있어서, 상기 디바이스는 스피커인 디바이스.
  9. 적어도 부분적으로 적어도 하나의 프로세서와 메모리를 포함하는 하드웨어에 의해 구현되는, 디바이스를 작동시키는 방법으로서,
    (A) 상기 디바이스 주변의 환경으로부터의 센서 정보를 상기 메모리의 버퍼 내에 버퍼링된 센서 정보로서 버퍼링하는 단계;
    (B) 상기 환경 내의 사람의 시선을 검출하는 단계;
    (C) (B)에서 검출된 상기 시선에 기초하여, 상기 버퍼링된 센서 정보를 포함하는 일부 센서 정보의 인식을 개시하는 단계;
    (D) (C)에서 개시된 상기 인식이 상기 버퍼링된 센서 정보를 포함하는 상기 센서 정보 내의 적어도 하나의 명령을 판정하는 단계; 및
    (E) 상기 적어도 하나의 명령에 기초하여 상기 디바이스를 작동시키는 단계
    를 포함하는 방법.
  10. 제9항에 있어서, 상기 센서 정보는 이미지 정보를 포함하고, (C)에서 개시된 상기 인식은 제스처 인식을 포함하며, 상기 적어도 하나의 명령은 상기 제스처 인식에 의해 인식된 적어도 하나의 제스처에 기초하여 판정되는 방법.
  11. 제8항 또는 제9항에 있어서, 상기 센서 정보는 음향 정보를 포함하고, (C)에서 개시된 상기 인식은 스피치 인식을 포함하며, 상기 적어도 하나의 명령은 상기 스피치 인식에 의해 인식된 적어도 하나의 발성된 구문(spoken phrase)에 기초하여 판정되는 방법.
  12. 적어도 부분적으로 적어도 하나의 프로세서와 메모리를 포함하는 하드웨어에 의해 구현되며, 디바이스를 작동시키는 방법으로서,
    (A) 상기 디바이스 주변의 환경으로부터의 음향을 상기 메모리 내의 버퍼링된 음향으로서 버퍼링하는 단계;
    (B) 상기 환경 내의 사람의 시선을 검출하는 단계;
    (C) (B)에서 검출된 상기 시선에 기초하여, 상기 버퍼링된 음향을 포함하는 일부 음향의 스피치 인식을 개시하는 단계;
    (D) 상기 스피치 인식이 상기 버퍼링된 음향을 포함하는 상기 음향 내의 적어도 하나의 지시를 판정하는 단계; 및
    (E) 상기 적어도 하나의 지시에 기초하여 상기 디바이스를 작동시키는 단계
    를 포함하는 방법.
  13. 적어도 부분적으로 적어도 하나의 프로세서와 메모리를 포함하는 하드웨어에 의해 구현되며, 디바이스를 작동시키는 방법으로서,
    (A) 상기 디바이스 주변의 환경으로부터의 이미지 정보를 상기 메모리 내에 버퍼링된 이미지 정보로서 버퍼링하는 단계;
    (B) 상기 환경 내의 사람의 시선을 검출하는 단계;
    (C) (B)에서 검출된 상기 시선에 기초하여, 상기 버퍼링된 이미지 정보를 포함하는 일부 이미지 정보의 제스처 인식을 개시하는 단계;
    (D) 상기 제스처 인식이 상기 버퍼링된 이미지 정보를 포함하는 상기 이미지 정보 내의 적어도 하나의 지시를 판정하는 단계; 및
    (E) 상기 적어도 하나의 지시에 기초하여 상기 디바이스를 작동시키는 단계
    를 포함하는 방법.
  14. 제9항 내지 제13항 중 어느 한 항에 있어서, 상기 디바이스는 음향 렌더링 디바이스인 방법.
  15. 제14항에 있어서, 상기 디바이스는 스피커인 방법.
  16. 프레임워크에서 동작가능한 방법으로서,
    (A) 디바이스-특정적 기능을 갖는 디바이스를 제공하는 단계;
    (B) 상기 디바이스를 상기 프레임워크의 사용자와 연관시키는 단계 - 상기 사용자는 상기 사용자와 연관된 사용자-특정적 구성 정보를 가지며, 상기 사용자에 대한 상기 사용자-특정적 구성 정보는, 상기 사용자의 스피치의 인식을 지원하는 적어도 하나의 스피치 코퍼스를 포함함 - ; 및
    (C) 상기 사용자와 연관된 상기 사용자-특정적 구성 정보에 기초하여 상기 디바이스를 구성 정보를 이용하여 자동으로 구성하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서, 상기 사용자에 대한 상기 사용자-특정적 구성 정보는,
    네트워크 구성 정보;
    패스워드 정보;
    상기 사용자와 연관된 제스처 인식을 위한 적어도 하나의 제스처 코퍼스; 및
    상기 사용자의 얼굴 인식을 위한 얼굴 정보
    중 하나 이상을 더 포함하는 방법.
  18. 제16항 또는 제17항에 있어서,
    (D) 상기 사용자와 연관된 업데이트된 사용자-특정적 구성 정보에 기초하여 상기 디바이스 상의 상기 구성 정보의 적어도 일부를 업데이트하는 단계를 더 포함하는 방법.
  19. 제18항에 있어서, 상기 디바이스는 또 다른 디바이스로부터 상기 업데이트된 사용자-특정적 구성 정보를 획득하는 방법.
  20. 제19항에 있어서,
    (D) 적어도 일부의 사용자-특정적 구성 정보를 또 다른 디바이스에 제공하는 단계를 더 포함하는 방법.
  21. 제18항에 있어서, 상기 디바이스는 상기 디바이스와의 하나 이상의 인간 상호작용에 기초하여 상기 사용자-특정적 구성 정보 중 일부를 업데이트하는 방법.
  22. 제21항에 있어서,
    (D) 업데이트된 사용자-특정적 구성 정보를 다른 위치에 제공하는 단계를 더 포함하는 방법.
  23. 제22항에 있어서, 상기 업데이트된 사용자-특정적 구성 정보는 상기 다른 위치에 저장되는 방법.
  24. 프레임워크에서 동작가능한 방법으로서,
    (A) 제1 디바이스를 상기 프레임워크의 사용자와 연관시키는 단계 - 상기 사용자는 상기 사용자와 연관된 사용자-특정적 구성 정보를 가지며, 상기 사용자-특정적 구성 정보는 상기 사용자와 연관된 상호작용들의 인식을 위한 적어도 하나의 코퍼스를 포함함 - ; 및
    (B) 상기 디바이스를 상기 사용자와 연관된 상기 사용자-특정적 구성 정보의 적어도 일부를 이용하여 자동으로 구성하는 단계
    를 포함하는 방법.
  25. 제24항에 있어서, 상기 적어도 하나의 코퍼스는,
    상기 사용자와 연관된 스피치 인식을 위한 적어도 하나의 스피치 코퍼스(speech corpus); 및
    상기 사용자와 연관된 제스처 인식을 위한 적어도 하나의 제스처 코퍼스(gesture corpus)
    중 하나 이상을 포함하는 방법.
  26. 제24항 또는 제25항에 있어서, 상기 사용자-특정적 구성 정보는,
    네트워크 구성 정보;
    패스워드 정보; 및
    상기 사용자의 얼굴 인식을 위한 얼굴 정보
    중 하나 이상을 더 포함하는 방법.
  27. 제26항에 있어서, 상기 제1 디바이스는 하나 이상의 인간 상호작용에 기초하여 상기 사용자-특정적 구성 정보 중 일부를 업데이트하는 방법.
  28. 제27항에 있어서, 상기 제1 디바이스는 업데이트된 사용자-특정적 구성 정보를 다른 위치에 제공하는 방법.
  29. 제28항에 있어서,
    (C) 상기 다른 위치에서, 상기 제1 디바이스로부터 수신된 업데이트된 사용자-특정적 구성 정보를 상기 사용자와 연관시키는 단계를 더 포함하는 방법.
  30. 제29항에 있어서,
    (D) 제2 디바이스를 상기 사용자와 연관시키는 단계; 및
    (E) 상기 제2 디바이스를 상기 업데이트된 사용자-특정적 구성 정보를 이용하여 자동으로 구성하는 단계
    를 더 포함하는 방법.
  31. 제24항 내지 제30항 중 어느 한 항에 있어서, 상기 제1 디바이스는 음향 렌더링 디바이스인 방법.
  32. 제30항에 있어서, 상기 제1 디바이스 및 상기 제2 디바이스는 음향 렌더링 디바이스들인 방법.
  33. 복수의 사용자를 위해 복수의 디바이스의 동작을 지원하는 프레임워크로서 - 상기 복수의 디바이스의 각각의 디바이스는 상기 프레임워크에서 주로 상기 복수의 사용자 중 하나의 사용자와 연관되도록 구성됨 - ,
    적어도 하나의 프로세서와 메모리를 포함하는 하드웨어와 소프트웨어를 포함하고, 데이터베이스 시스템, 및 상기 하드웨어 상에서 실행되는 백엔드 애플리케이션들을 포함하는 백엔드 시스템을 포함하고,
    상기 백엔드 애플리케이션들은,
    (a) 상기 데이터베이스 시스템 및 상기 복수의 디바이스와 인터페이싱하고,
    (b) 상기 데이터베이스 시스템에서, 상기 복수의 디바이스들의 각각의 디바이스에 대한 디바이스 정보를 유지하며 - 각각의 특정한 디바이스에 대한 상기 디바이스 정보는 상기 특정한 디바이스와 연관된 임의의 사용자에 대한 정보를 포함함 - ,
    (c) 상기 데이터베이스 시스템에서, 상기 복수의 사용자의 각각의 사용자에 대한 사용자 정보를 유지하고 - 각각의 특정한 사용자에 대한 상기 사용자 정보는 그 특정한 사용자와 연관된 디바이스들 내의 적어도 하나의 인간-인터페이스 제어 메커니즘을 지원하는 정보를 포함함 - ,
    (d) 상기 복수의 사용자들 중 특정한 사용자와 연관된 적어도 하나의 디바이스에 상기 데이터베이스 시스템으로부터의 상기 특정한 사용자의 사용자 정보의 적어도 일부를 제공하도록 구성된 프레임워크.
  34. 제33항에 있어서, 각각의 특정한 사용자에 대한 상기 사용자 정보는 상기 특정한 사용자와 연관된 구성 정보를 더 포함하고, (d)에서 상기 백엔드 시스템에 의해 제공되는 상기 특정한 사용자의 사용자 정보는 상기 특정한 사용자와 연관된 구성 정보를 포함하는 프레임워크.
  35. 제33항에 있어서, 상기 백엔드 시스템에 의해 제공되는 상기 특정한 사용자의 사용자 정보는 상기 특정한 사용자와 연관된 디바이스들 내의 상기 적어도 하나의 인간-인터페이스 제어 메커니즘을 지원하는 상기 정보를 포함하는 프레임워크.
  36. 제33항 내지 제35항 중 어느 한 항에 있어서, 상기 적어도 하나의 인간-인터페이스 제어 메커니즘은 스피치 인식 메커니즘을 포함하고, 특정한 사용자에 대해, 상기 적어도 하나의 인간-인터페이스 제어 메커니즘을 지원하는 정보는, 상기 특정한 사용자와 연관되고 상기 특정한 사용자에 의한 스피치의 인식을 지원하는 스피치 인식 메커니즘에 의해 이용가능한 적어도 하나의 스피치 코퍼스를 포함하는 프레임워크.
  37. 제33항 내지 제35항 중 어느 한 항에 있어서, 상기 적어도 하나의 인간-인터페이스 제어 메커니즘은 제스처 인식 메커니즘을 포함하고, 특정한 사용자에 대해, 상기 적어도 하나의 인간-인터페이스 제어 메커니즘을 지원하는 정보는, 상기 특정한 사용자와 연관되고 상기 특정한 사용자에 의한 제스처의 인식을 지원하는 제스처 인식 메커니즘에 의해 이용가능한 적어도 하나의 제스처 코퍼스를 포함하는 프레임워크.
  38. 제33항에 있어서, 상기 백엔드 애플리케이션들은,
    (e) 디바이스들로부터 업데이트된 사용자 정보를 획득하고,
    (f) 상기 데이터베이스 시스템에서, 상기 업데이트된 사용자 정보를 대응하는 사용자들과 연관시키도록 더 구성되는 프레임워크.
  39. 제38항에 있어서, 특정한 디바이스로부터의 상기 업데이트된 사용자 정보는 상기 특정한 디바이스 상의 인간-인터페이스 제어 메커니즘을 지원하는 업데이트된 정보를 포함하는 프레임워크.
  40. 제39항에 있어서, 상기 백엔드 애플리케이션들은, (f)에서, 상기 특정한 디바이스 상의 상기 인간-인터페이스 제어 메커니즘을 지원하는 상기 업데이트된 정보를 상기 특정한 디바이스와 연관된 사용자와 연관시키는 프레임워크.
  41. 제39항에 있어서, 상기 특정한 디바이스 상의 인간-인터페이스 제어 메커니즘은 스피치 인식 메커니즘을 포함하고, 상기 업데이트된 사용자 정보는 상기 스피치 인식 메커니즘에 대한 업데이트된 스피치 코퍼스를 포함하는 프레임워크.
  42. 제41항에 있어서, 상기 백엔드 애플리케이션들은, (f)에서, 상기 특정한 디바이스 상의 스피치 인식 메커니즘을 위한 업데이트된 스피치 코퍼스를 상기 특정한 디바이스와 연관된 사용자와 연관시키는 프레임워크.
  43. 복수의 사용자를 위해 복수의 디바이스의 동작을 지원하는 프레임워크에서 동작가능한 방법으로서, 상기 복수의 디바이스의 각각의 디바이스는 상기 프레임워크에서 주로 상기 복수의 사용자 중 하나의 사용자와 연관되도록 구성되고, 상기 프레임워크는, 적어도 하나의 프로세서와 메모리를 포함하는 하드웨어와 소프트웨어를 포함하는 백엔드 시스템을 포함하고, 상기 백엔드 시스템은, 데이터베이스 시스템과, 상기 하드웨어 상에서 실행되고 상기 데이터베이스 시스템 및 상기 복수의 디바이스와 인터페이싱하도록 구성된 백엔드 애플리케이션들을 포함하고,
    상기 방법은:
    (A) 상기 데이터베이스 시스템에서, 상기 복수의 디바이스의 각각의 디바이스에 대한 디바이스 정보를 유지하는 단계 - 각각의 특정한 디바이스에 대한 상기 디바이스 정보는 상기 특정한 디바이스와 연관된 임의의 사용자에 대한 정보를 포함함 - ;
    (B) 상기 데이터베이스 시스템에서, 상기 복수의 사용자의 각각의 사용자에 대한 사용자 정보를 유지하는 단계 - 각각의 특정한 사용자에 대한 상기 사용자 정보는 그 특정한 사용자와 연관된 디바이스들 내의 적어도 하나의 인간-인터페이스 제어 메커니즘을 지원하는 정보를 포함함 - ; 및
    (C) 상기 복수의 사용자의 특정한 사용자와 연관된 적어도 하나의 디바이스에 상기 데이터베이스 시스템으로부터의 상기 특정한 사용자의 사용자 정보의 적어도 일부를 제공하는 단계
    를 포함하는 방법.
  44. 제43항에 있어서, 각각의 특정한 사용자에 대한 상기 사용자 정보는 상기 특정한 사용자와 연관된 구성 정보를 더 포함하고, (C)에서 제공되는 상기 특정한 사용자의 사용자 정보는 상기 특정한 사용자와 연관된 구성 정보를 포함하는 방법.
  45. 제43항에 있어서, (C)에서 제공되는 상기 특정한 사용자의 사용자 정보는 상기 특정한 사용자와 연관된 디바이스들 내의 상기 적어도 하나의 인간-인터페이스 제어 메커니즘을 지원하는 상기 정보를 포함하는 방법.
  46. 제43항 내지 제45항 중 어느 한 항에 있어서, 상기 적어도 하나의 인간-인터페이스 제어 메커니즘은 스피치 인식 메커니즘을 포함하고, 특정한 사용자에 대해, 상기 적어도 하나의 인간-인터페이스 제어 메커니즘을 지원하는 상기 정보는, 상기 특정한 사용자와 연관되고 상기 특정한 사용자에 의한 스피치의 인식을 지원하는 스피치 인식 메커니즘에 의해 이용가능한 적어도 하나의 스피치 코퍼스를 포함하는 방법.
  47. 제33항 내지 제35항 중 어느 한 항에 있어서, 상기 적어도 하나의 인간-인터페이스 제어 메커니즘은 제스처 인식 메커니즘을 포함하고, 특정한 사용자에 대해, 상기 적어도 하나의 인간-인터페이스 제어 메커니즘을 지원하는 상기 정보는, 상기 특정한 사용자와 연관되고 상기 특정한 사용자에 의한 제스처들의 인식을 지원하는 제스처 인식 메커니즘에 의해 이용가능한 적어도 하나의 제스처 코퍼스를 포함하는 방법.
  48. 제43항에 있어서, 상기 백엔드 애플리케이션들에 의해,
    (D) 특정한 디바이스로부터 업데이트된 사용자 정보를 획득하는 단계; 및
    (E) 상기 데이터베이스 시스템에서, 상기 업데이트된 사용자 정보를 상기 특정한 디바이스의 대응하는 사용자와 연관시키는 단계
    를 더 포함하는 방법.
  49. 제48항에 있어서, 상기 특정한 디바이스로부터의 상기 업데이트된 사용자 정보는 상기 특정한 디바이스 상의 인간-인터페이스 제어 메커니즘을 지원하는 업데이트된 정보를 포함하는 방법.
  50. 제49항에 있어서, 상기 특정한 디바이스 상의 인간-인터페이스 제어 메커니즘은 스피치 인식 메커니즘을 포함하고, 상기 업데이트된 사용자 정보는 상기 스피치 인식 메커니즘에 대한 업데이트된 스피치 코퍼스를 포함하는 방법.
  51. 제43항에 있어서,
    (D) 상기 데이터베이스 시스템에서, 새로운 디바이스를 사용자와 연관시키는 단계를 더 포함하는 방법.
KR1020157016043A 2012-11-16 2013-11-14 디바이스 구성, 상호 작용 및 제어를 위한 통합된 프레임워크, 및 연관된 방법, 디바이스 및 시스템 KR20150086332A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261727217P 2012-11-16 2012-11-16
US61/727,217 2012-11-16

Publications (1)

Publication Number Publication Date
KR20150086332A true KR20150086332A (ko) 2015-07-27

Family

ID=50731669

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157016043A KR20150086332A (ko) 2012-11-16 2013-11-14 디바이스 구성, 상호 작용 및 제어를 위한 통합된 프레임워크, 및 연관된 방법, 디바이스 및 시스템

Country Status (6)

Country Link
EP (1) EP2920673A1 (ko)
JP (1) JP2016502137A (ko)
KR (1) KR20150086332A (ko)
CA (1) CA2891202A1 (ko)
TW (1) TW201423485A (ko)
WO (1) WO2014078480A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019190096A1 (ko) * 2018-03-29 2019-10-03 삼성전자 주식회사 사용자 음성 입력을 처리하는 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI677751B (zh) * 2017-12-26 2019-11-21 技嘉科技股份有限公司 攝像裝置與運作攝像裝置的方法
KR102512446B1 (ko) 2018-05-04 2023-03-22 구글 엘엘씨 자동화된 어시스턴트 기능(들)의 핫-워드 프리 적응
CN112236739B (zh) 2018-05-04 2024-05-17 谷歌有限责任公司 基于检测到的嘴运动和/或凝视的适配自动助理
US10890969B2 (en) * 2018-05-04 2021-01-12 Google Llc Invoking automated assistant function(s) based on detected gesture and gaze
JP2021144259A (ja) * 2018-06-06 2021-09-24 ソニーグループ株式会社 情報処理装置および方法、並びにプログラム
TWI826031B (zh) * 2022-10-05 2023-12-11 中華電信股份有限公司 基於歷史對話內容執行語音辨識的電子裝置及方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7438414B2 (en) * 2005-07-28 2008-10-21 Outland Research, Llc Gaze discriminating electronic control apparatus, system, method and computer program product
WO2008069519A1 (en) * 2006-12-04 2008-06-12 Electronics And Telecommunications Research Institute Gesture/speech integrated recognition system and method
US8707329B2 (en) * 2007-01-05 2014-04-22 Ajou University Industry Cooperation Foundation Open framework system for heterogeneous computing and service integration
US8676942B2 (en) * 2008-11-21 2014-03-18 Microsoft Corporation Common configuration application programming interface
US8843893B2 (en) * 2010-04-29 2014-09-23 Sap Ag Unified framework for configuration validation
KR101789619B1 (ko) * 2010-11-22 2017-10-25 엘지전자 주식회사 멀티미디어 장치에서 음성과 제스쳐를 이용한 제어 방법 및 그에 따른 멀티미디어 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019190096A1 (ko) * 2018-03-29 2019-10-03 삼성전자 주식회사 사용자 음성 입력을 처리하는 장치
US11455997B2 (en) 2018-03-29 2022-09-27 Samsung Electronics Co., Ltd. Device for processing user voice input
US11915700B2 (en) 2018-03-29 2024-02-27 Samsung Electronics Co., Ltd. Device for processing user voice input

Also Published As

Publication number Publication date
EP2920673A1 (en) 2015-09-23
CA2891202A1 (en) 2014-05-22
JP2016502137A (ja) 2016-01-21
TW201423485A (zh) 2014-06-16
WO2014078480A1 (en) 2014-05-22

Similar Documents

Publication Publication Date Title
KR20150086332A (ko) 디바이스 구성, 상호 작용 및 제어를 위한 통합된 프레임워크, 및 연관된 방법, 디바이스 및 시스템
JP7225301B2 (ja) 音声インターフェイスデバイスにおけるマルチユーザパーソナライゼーション
US11741979B1 (en) Playback of audio content on multiple devices
US10671231B2 (en) Electromagnetic interference signal detection
US20190166424A1 (en) Microphone mesh network
KR102393364B1 (ko) 오디오 신호 제어 방법 및 이를 지원하는 전자장치
US9431021B1 (en) Device grouping for audio based interactivity
JP2021121928A (ja) ホームオートメーションのためのインテリジェントアシスタント
US20160261268A1 (en) Processing Electromagnetic Interference Signal Using Machine Learning
WO2015191788A1 (en) Intelligent device connection for wireless media in an ad hoc acoustic network
JP6645438B2 (ja) 情報処理装置、情報処理方法およびコンピュータプログラム
JPWO2015133022A1 (ja) 情報処理装置、情報処理方法およびプログラム
US20200301378A1 (en) Deducing floor plans using modular wall units
US10101869B2 (en) Identifying device associated with touch event
US11558848B2 (en) Intelligent notification delivery
CN108476247A (zh) 媒体访问控制(mac)地址标识
US11016581B2 (en) Base station for use with digital pens
WO2015191787A2 (en) Intelligent device connection for wireless media in an ad hoc acoustic network
EP3335099B1 (en) Electromagnetic interference signal detection
US11289086B2 (en) Selective response rendering for virtual assistants
US11012780B2 (en) Speaker system with customized audio experiences
EP3350681B1 (en) Electromagnetic interference signal detection
TW201407414A (zh) 輸入裝置及搭配其使用之主機
US9355559B1 (en) Media device control profile selection
WO2023063407A1 (ja) 情報処理システム、情報処理装置および方法、収納ケースおよび情報処理方法、並びにプログラム

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination