KR101143115B1 - 다중 동기화된 데이터 스트림들에 대한 데이터베이스 검색속도를 증진하기 위한 시스템 및 방법 - Google Patents

다중 동기화된 데이터 스트림들에 대한 데이터베이스 검색속도를 증진하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR101143115B1
KR101143115B1 KR1020050085003A KR20050085003A KR101143115B1 KR 101143115 B1 KR101143115 B1 KR 101143115B1 KR 1020050085003 A KR1020050085003 A KR 1020050085003A KR 20050085003 A KR20050085003 A KR 20050085003A KR 101143115 B1 KR101143115 B1 KR 101143115B1
Authority
KR
South Korea
Prior art keywords
trace
traces
media
cache
client
Prior art date
Application number
KR1020050085003A
Other languages
English (en)
Other versions
KR20060051233A (ko
Inventor
치리스 제이. 버게스
존 씨. 플렛
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060051233A publication Critical patent/KR20060051233A/ko
Application granted granted Critical
Publication of KR101143115B1 publication Critical patent/KR101143115B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H60/00Arrangements for broadcast applications with a direct linking to broadcast information or broadcast space-time; Broadcast-related systems
    • H04H60/35Arrangements for identifying or recognising characteristics with a direct linkage to broadcast information or to broadcast space-time, e.g. for identifying broadcast stations or for identifying users
    • H04H60/37Arrangements for identifying or recognising characteristics with a direct linkage to broadcast information or to broadcast space-time, e.g. for identifying broadcast stations or for identifying users for identifying segments of broadcast information, e.g. scenes or extracting programme ID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/432Query formulation
    • G06F16/433Query formulation using audio data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/438Presentation of query results
    • G06F16/4387Presentation of query results by the use of playlists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/632Query formulation
    • G06F16/634Query by example, e.g. query by humming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/68Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/683Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application of database or data structure, e.g. distributed, multimedia, or image

Abstract

"매체 식별기"(Media Identifier)가 동시 매체 스트림들(concurrent media streams) 상에서 동작하여, 라디오, 텔레비전, 또는 인터넷 방송과 같은 스트리밍 매체에 포함된 매체 객체들의 실시간 서버 측 식별을 다수의 클라이언트에게 제공한다. 그러한 매체 객체들은 노래(songs), 광고 방송(commercials), 울림 소리(jingles), 스테이션 식별자(station identifiers) 등을 포함한다. 매체 객체들의 식별은, 매체 스트림 샘플들로부터 계산된 클라이언트-생성 트레이스들을 알려진 식별의 저장되고 미리 계산된 트레이스들(즉, "핑거프린트들")의 대규모 데이터베이스와 비교함으로써, 클라이언트들에게 제공된다. 또한, 유한 개수의 매체 스트림들이 있고 그보다 훨씬 더 많은 수의 클라이언트들이 있을 경우, 서버에 송신되는 트레이스들의 다수는 거의 동일할 가능성이 크다. 그러므로 특정 트레이스들을 식별하기 위해 필요한 데이터베이스 쿼리들을 제한하기 위해 검색 가능한 동적인 트레이스 캐시(searchable dynamic trace cache)가 사용된다. 이 트레이스 캐시는, 긍정이건 부정이건, 데이터베이스 검색 결과들과 함께 최근의 트레이스들의 한 카피만을 캐싱한다. 캐시 엔트리들은 노화(age)할 때 제거된다.
매체 스트림, 매체 객체, 트레이스, 핑거프린트, 데이터베이스 검색

Description

다중 동기화된 데이터 스트림들에 대한 데이터베이스 검색 속도를 증진하기 위한 시스템 및 방법{A SYSTEM AND METHOD FOR SPEEDING UP DATABASE LOOKUPS FOR MULTIPLE SYNCHRONIZED DATA STREAMS}
도 1은 본 명세서에서 설명된 "매체 식별기"(Media Identifier)를 구현하는 예시적인 시스템을 구성하는 범용 컴퓨팅 장치를 도시하는 일반적인 시스템 도면.
도 2는 본 명세서에서 설명된 매체 식별기를 구현하기 위한 기능 컴포넌트들 간의 일반적인 관계를 예시하는 예시적인 구조적 시스템 도면.
도 3은 본 명세서에서 설명된 매체 식별기를 구현하기 위한 프로그램 모듈들을 예시하는 예시적인 구조적 흐름도.
도 4는 본 명세서에서 설명된 매체 식별기의 일 실시예의 일반적인 동작을 예시하는 동작 흐름도.
<도면의 주요 부분에 대한 부호의 간단한 설명>
200 : 클라이언트(들)
210 : 매체 스트림들
305 : 매체 스트림 캡처 모듈
310 : 매체 스트림 샘플링 모듈
315 : 트레이스 계산 모듈
320 : 트레이스 송신 모듈
325 : 매체 식별 수신 모듈
200 : 네트워크/인터넷
230 : 서버(들)
345 : 캐시 유지 모듈
240 : 트레이스 캐시
250 : 핑거프린트 데이터베이스
335 : 트레이스 검색 모듈
330 : 트레이스 수신 모듈
340 : 매체 식별 송신 모듈
본 발명은 방송 매체 스트림 내의 매체 객체들의 식별에 관한 것으로, 특히, 서버 데이터베이스 쿼리 로딩을 최소화하면서 다수의 개개의 클라이언트들에게 동기화된 데이터 스트림들에서 노래(songs)와 같은 매체 객체들의 동시 서버 측 식별(concurrent server-side identification)을 제공하기 위한 시스템 및 방법에 관한 것이다.
신호들로부터 식별 목적으로 사용될 "특징들"(features)을 추출하기 위한 다수의 기존 방식들(schemes)이 있다. 예를 들면, 오디오 신호 또는 오디오 파일과 같은 1차원 신호와 관련하여, 오디오 특징 추출은 오디오 신호 내의 매체 객체들을 수반하는 분류, 검색, 및 식별 작업들을 위한 필요 단계로서 사용되어 왔다. 식별 목적으로, 추출된 특징들 또는 "트레이스들"(traces)은 전형적으로 오디오 신호 내의 엘리먼트들(elements) 또는 전체 오디오 신호를 식별하기 위해 알려진 "핑거프린트"(fingerprint)와 비교된다. 그렇게 잘 알려진 미디어 객체 식별 방식은 종래에 "오디오 핑거프린팅"으로 잘 알려져 있다.
다수의 종래의 방식들은 라디오 또는 인터넷 방송과 같은, 오디오 스트림에서 특징 노래들의 식별을 제공하기 위해 그러한 오디오 핑거프린팅 기법들을 적용하였다. 예를 들면, 오디오 스트림을 청취하는 사용자는 제목(title), 아티스트(artist), 앨범 등을 알고 싶어할 어떤 노래를 들을 수 있다. 그때 그 노래의 샘플들로부터 하나 이상의 트레이스들을 추출하기 위해 종래의 오디오 핑거프린팅 기법들이 사용된다. 전형적으로, 이들 트레이스들을 알려진 음악의 데이터베이스 내의 핑거프린트들과 비교하여 매칭하는 것을 식별하고, 그 후 그 결과들이 사용자에게 제공된다.
또한, 그러한 기법들은 일반적으로 오디오 핑거프린팅 기법들 및 데이터베이스 비교에 기초하는 요금 기반 노래 식별 또는 검색 서비스(a fee-based song identification and lookup service)를 제공하기 위해 다수의 종래의 서비스들에 적용되었다. 예를 들면, 비교적 잘 알려진 "샤잠"(Shazam) 음악 식별 서비스와 같은 몇몇 노래 식별 서비스들은 휴대 전화 네트워크(cell phone network)를 통하여 사용자들을 위해 특정 노래들을 식별하도록 동작한다. 특히, 샤잠에 의해 제공된 것과 같은 시스템들은 일반적으로 먼저 사용자에게 그의 휴대 전화상의 번호를 다이얼링하고 그 후 약 15 내지 30초 동안 전화기를 그 음악 쪽으로 들이대도록 요구함으로써 동작한다. 샤잠 서비스는 그 후 그 음악(또는 그 음악으로부터 계산된 트레이스들)을 알려진 음악의 데이터베이스와 비교함으로써 그 음악을 식별한다. 샤잠 서비스는 그 후 식별된 노래의 제목, 아티스트, 앨범 등을 갖는 텍스트 메시지를 사용자에게 반환한다.
유감스럽게도 위에서 설명한 유형의 검색 서비스들에서의 한 가지 문제점은, 임의의 주어진 시간에 음악 식별 시스템에 액세스하는 사용자들의 수가 증가함에 따라서 초당 데이터베이스 검색 요구의 수도 증가한다는 점이다. 이 문제는, 예를 들면, 샤잠에 의해 제공된 것과 같은 서비스들에서는 완화되는데, 왜냐하면 사용자는 그가 식별하고 싶어하는 각각의 노래마다 전화 통화에 대한 요금 및 그 서비스 자체에 대한 요금을 지급해야 하기 때문이고, 이런 식으로 사용자에게 요금을 부과하는 효과는 시스템의 동시 사용자들의 수를 제한하는 경향이 있고, 그럼으로써 전체 서버 부하를 줄이기 때문이다. 그러한 시스템에서의 또 다른 문제점은, (전화 서비스의 주파수/대역폭 제약에 의해 제한되는) 전체 노래의 샘플들이 서버에 송신될 필요가 있고, 그 후 서버는 매체 스트림의 송신된 샘플들로부터 트레이스들을 계산할 필요가 있다는 점이다.
따라서, 동시 사용자들의 수가 더욱더 증가함에 따라서, 수신되는 음악으로부터 트레이스들 또는 핑거프린트들을 계산하고, 이들 핑거프린트들을 식별하기 위해 데이터베이스 검색을 수행하고, 개개의 사용자들에게 응답하기 위해서 대응하는 계산 부하는 전용 서버들의 뱅크들이 비교적 큰 경우라도 빠르게 압도될 수 있다. 그 결과, 그러한 방식들은 동시 사용자들의 수가 비교적 적을 것이라는 가정에 의해 제한되는 경향이 있다. 또한, 잠재적으로 수천만에 이르는 다수의 동시 사용자들을 처리하기 위해 충분한 수의 서버들을 제공하도록 그러한 방식들의 규모를 늘리는 것이 가능하기는 하지만, 그러한 시스템을 위한 금전적 비용은 아마도 엄청날 것이다.
그러므로 실시간 노래 식별을 제공하기 위한 시스템 및 방법이 요구된다. 또한, 그러한 시스템 및 방법은 다수의 동시 사용자들에게 노래 식별 서비스를 효율적으로 제공함과 동시에 서버 부하 및 데이터베이스 검색을 최소화할 수 있어야 할 것이다. 마지막으로, 그러한 시스템 및 방법은 또한 복수의 클라이언트 컴퓨터들 각각에 의해 해당 작업이 수행되도록 요구함으로써 매체 스트림의 샘플들로부터 트레이스들을 계산하는 부담을 제거함으로써 서버 부하를 최소화해야 할 것이다.
본 명세서에서 설명되는, "매체 식별기"(Media identifier)는 예를 들어 라디오, 텔레비전, 또는 인터넷 방송과 같은 스트리밍 매체 방송에 포함된 매체 객체들의 실시간 서버 측 식별을 개개의 클라이언트들에게 제공함으로써 위에서 확인된 문제점들을 해결하도록 동작한다. 이들 매체 객체들은 예를 들면 노래(songs), 광고 방송(commercials), 울림 소리(jingles), 스테이션 식별자(station identifiers) 등을 포함한다. 일반적으로, 매체 식별기는 매체 스트림의 샘플링된 부분들로부터 각각의 클라이언트에 의해 계산된 "트레이스들"을 알려진 핑거프린트 들의 데이터베이스와 비교함으로써 개개의 클라이언트들에게 방송 매체 스트림 내의 매체 객체들의 실시간 식별을 제공하는 적어도 하나의 서버를 제공함으로써 동작한다. 일반적으로, 계산된 트레이스들은 각각의 클라이언트에 의해 서버에 송신되고, 알려진 식별의 저장되고 미리 계산된 트레이스들(여기에서는 클라이언트 생성 트레이스들과 구별하기 위해 "핑거프린트들"로 불림)의 대규모 데이터베이스와 직접, 또는 서버 측 트레이스 캐시를 통하여 비교된다.
특히, 각각의 클라이언트마다, 수신되는 매체 스트림의 고정 길이 세그먼트들이 반복된 간격으로 저차원 "트레이스들"을 계산하기 위해 사용된다. 테스트 된 실시예에서, 그러한 트레이스들은 약 6초 정도의 매체 스트림의 샘플들로부터 1초에 약 6회 정도로 각각의 클라이언트에 의해 계산되고 송신되었다. 명백히, 보다 길거나 보다 짧은 샘플 기간들을 사용하여, 보다 많거나 보다 적은 트레이스들이 사용될 수 있고, 이들 파라미터들은 전형적으로 트레이스 계산을 위해 사용되는 특정 기법들에 좌우된다.
매체 스트림으로부터의 트레이스들의 계산은, 예를 들면, "SYSTEM AND METHOD FOR NOISE-ROBUST FEATURE EXTRACTION"이라는 제명의 미국 특허 출원 공개 번호 US 2003/0236661에서 설명된 시스템과 같은 종래의 기법들을 이용하여 달성되고, 상기 문헌의 주제는 본 명세서에 참고로 통합된다. 일반적으로, 그러한 시스템들은 수신되는 매체 스트림을 샘플링하고 샘플링된 신호로부터 저차원 특징 벡터들(즉, "트레이스들")을 계산함으로써 동작한다. 샘플링된 매체 스트림들로부터의 트레이스 계산은 숙련된 당업자들에게 공지되어 있으므로, 여기에서 상세히 설명하 지 않는다.
핑거프린트 데이터베이스를 포함하는 핑거프린트들은 일반적으로 트레이스들과 동일한 방식으로 동일한 알고리즘을 이용하여 계산된다. 그러나 트레이스들과는 달리, 핑거프린트들은 알려진 핑거프린트들의 데이터베이스를 구축하기 위하여 각각의 알려진 매체 객체의 하나 이상의 샘플들로부터, 한 번만 계산된다. 일단 생성되면, 이 데이터베이스는 그 후 간단히 서버에 의해 액세스 되고, 알려진 매체 객체들에 대한 핑거프린트들을 다시 계산할 필요가 없다. 그러나 알려진 핑거프린트들의 데이터베이스는 그 후 새로운 매체 객체들(노래 등)이 생성될 때 새로운 핑거프린트들로 업데이트될 수 있다. 그러므로 알려진 핑거프린트들의 데이터베이스는 바람직하게는 오프라인으로 생성되고 그 후 간단히 서버에 제공됨으로써 여기에서 설명된 매체 식별기에 의해 수행되는 매체 식별 동작 중에 서버에서의 임의의 부가적인 계산 부하를 제거하게 된다.
각각의 클라이언트마다, 서버는 트레이스들 중 임의의 것이 데이터베이스 내의 핑거프린트들 중 임의의 것과 어떤 임계치 또는 허용 오차 내에서 매칭하는지를 판정하기 위해 부정확한 매칭(inexact matching)을 이용한다. 그러한 부정확한 매칭 기법의 사용은 정확한 매칭 기법보다 바람직한데, 그 이유는 클라이언트들 중 임의의 것에 의해 계산된 트레이스들은 그 트레이스들이 매체 스트림의 정확히 동일한 부분들로부터 계산되는 경우라도 노이즈, 간섭, 신호 감쇠 등으로 인해 변할 수 있기 때문이다. 또한, 부정확한 매칭의 사용은 또한 트레이스들이 계산된 매체 스트림의 샘플링된 부분들의 작은 시간 오프셋들(temporal offsets)을 규명한다. 일 실시예에서, 부정확한 매칭은 당 기술 분야에 공지되어 있는 바와 같이, 정확도를 향상시키기 위해, 2003년 5월, 음성 및 오디오 처리에 관한 IEEE 학회지, 제11권, 제3호, 165-174페이지에 있는, Christopher J. C. Burges, John C. Platt, 및 Soumya Jana의 "Distortion Discriminant Analysis for Audio Fingerprinting"이라는 제명의 간행물에 개시된 것과 같은 핑거프린트 특정 환치 계산법(fingerprint-specific renormalization)을 이용한다. 상기 간행물의 주제는 본 명세서에 참고로 통합된다.
하나의 클라이언트로부터의 트레이스가 핑거프린트와 매칭할 때마다, 서버는 해당 클라이언트에게 해당 트레이스에 대응하는 특정 매체 객체의 식별(identity)을 알려준다. 노래와 같은 매체 객체들의 경우에, 이 식별은 전형적으로, 예를 들어, 아티스트, 노래 제목, 앨범 명, 장르 등과 같은 정보를 포함한다. 명백히, 알려진 매체 객체가 주어지면, 임의의 원하는 정보가 해당 매체 객체를 식별하기 위해 사용되는 데이터베이스 내의 핑거프린트들과 관련될 수 있다.
그러나 여기에서 설명된 매체 식별기는, 서버에 송신되는 모든 트레이스들마다 핑거프린트 데이터베이스의 맹목적인 강제 검색을 제공하기보다는, 한정된 개수의 매체 스트림들이 있고, 또한 전형적으로 임의의 주어진 시간에 동일한 매체 스트림을 수신하는 다수의 사용자가 있다고 가정하여, 임의의 주어진 시간에, 사용자 생성 트레이스들의 다수가 거의 동일할 것이라는 사실을 이용(leverage)하는 별도의 서버 측 캐시를 도입한다. 환언하면, 임의의 주어진 시점에, 특정 라디오, 텔레비전 또는 인터넷 방송과 같은 동일한 매체 스트림을 청취하는 사람이 다수, 잠 재적으로는 수만에서 심지어 수백만까지 있을 수 있다. 이러한 관찰은 수신되는 트레이스들 및 매칭하는 핑거프린트들에 대한 데이터베이스 검색 결과들 양쪽 모두를 캐싱하는 서버 측 캐시의 생성을 가능케 한다.
특히, 각각의 클라이언트로부터의 각각의 수신되는 트레이스는 먼저 어떤 개수의 트레이스들을 포함하고 있는 캐시와 대조된다. 만일 그 트레이스가 캐시에 있지 않다면, 전체 데이터베이스 검색이 행해지고, 해당 데이터베이스 검색의 결과들은, 긍정이건 부정이건, 클라이언트에 의해 송신된 트레이스와 함께 캐시에 저장된다. 캐시 및 데이터베이스 양쪽 모두에서의 검색은, 예를 들어, 베일링(bailing)(선형 스캔을 이용한 거리 비교의 속도를 증진시키는 공지의 방법)에 의한 선형 스캔(즉, 순차적으로)과 같은 종래의 기법들을 이용하여 성취될 수 있다.
또 다른 실시예에서, 데이터베이스에서의 검색은, 2003년 6월 23일자로 출원되고 일련 번호 10/602,438이 부여된, "Multidimensional Data Object Searching Using Bit Vector Indices"라는 제명의 동시 계류중인 미국 특허 출원에 기재된 바와 같이, 비트 벡터 인덱싱(bit vector indexing)을 이용하여 가속화된다. 상기 출원의 주제는 본 명세서에 참고로 통합된다. 이 비트 벡터 인덱싱 방법은 2003년 10월 28일자 마이크로소프트 기술 보고서 MSR-TR-2003-38에 개시된 Jonathan Goldstein, John C. Platt, 및 Christopher J. C. Burges의, "Indexing High Dimensional Rectangles for Fast Multimedia Identifier"라는 제명의 간행물에도 기재되어 있다. 상기 간행물의 주제는 본 명세서에 참고로 통합된다.
일반적으로, 상기 미국 특허 출원 및 대응하는 마이크로소프트 기술 보고서 에 기재된 비트 벡터 인덱싱 방법들은 고차원 영역들과 대조한 포인트 쿼리들(point queries)을 신속히 수행하는 문제를 다룬다. 그러한 쿼리들은, 서로 다른 데이터베이스 엔트리들이 유사성에 대한 서로 다른 척도(metrics)를 갖는 경우에, 다중매체 식별 및 검색의 점점 더 중요해지고 있는 문제들에서 유용하다. 고차원의 가장 가까운 이웃 및 엡실론 범위 쿼리들(high-dimensional nearest neighbor and epsilon range queries)에 대한 인덱싱에 초점을 맞추는 전형적인 데이터베이스 인덱싱과 대조적으로, 고차원 영역들과 대조한 포인트 쿼리들에 대한 인덱싱은 현저한 성능 증진을 성취하기 위해 리던던시(redundancy) 및 비트 벡터 인덱싱의 조합에 의존하는 효율적인 인덱싱 방법을 제공한다. 그러한 방법들은 실사회(realworld) 선형 스캔들에 비하여 현저한 성능 증가를 제공하는 것으로 관찰되었다.
데이터베이스 검색의 부정적 결과들, 즉 트레이스가 데이터베이스 내의 핑거프린터와 대조하여 매칭하지 않는 것은 클라이언트에게 송신되지 않는다. 데이터베이스 검색의 긍정적 결과들, 즉 트레이스와 핑거프린트 간에 매칭하는 것은 클라이언트에게 송신되어 트레이스가 계산된 매체 객체를 식별하게 된다. 위에서 언급한 바와 같이, 핑거프린트 데이터베이스를 검색하기 전에 매칭 트레이스들을 식별하기 위해 캐시가 검색된다. 따라서, 캐시에 저장된 트레이스들과 대조하여 매칭하는 것이 발견된다면, 더 이상 데이터베이스 검색이 필요치 않다. 그 이유는 캐시 내의 트레이스는 관련 매체 객체의 식별 정보를 포함하거나, 또는 단순히 매칭하는 핑거프린트가 없다는 것을 나타낼 것이기 때문이다. 트레이스가 데이터베이 스 내의 핑거프린트와 매칭하는 경우에는, 그 매칭하는 핑거프린트와 관련된 식별 정보가 클라이언트에게 송신될 것이다.
매체 식별기에 의해 제공되는 서버 측 캐시의 한 가지 이점은 캐시의 사이즈가 비교적 작아서 캐시 검색이 매우 신속히 이루어진다는 점이다. 특히, 캐시 사이즈는 매체 스트림 내의 포인트를 수신하는 클라이언트들 간의 최대 기대 지연, 및 식별 서비스가 제공되고 있는 유일의(unique) 매체 스트림들의 수의 함수이다. 또한, 캐시 사이즈는 사용자들의 수의 함수가 아니라는 점을 주목해야 할 것이다.
특히, 각각의 특정 매체 방송 스트림은 그 특정 매체 스트림을 수신하고 있는 각각의 클라이언트에 대해 대략 동기화된다. 예를 들면, 동일한 라디오 스테이션을 수신하는 임의의 둘 이상의 클라이언트들은 약 1초 내외 정도의 매우 짧은 시간 오프셋 내에서 동일한 신호를 수신할 것 같다. 이것은 또한 매체를 스트리밍하는 대부분의 인터넷 또는 네트워크 방송들에 대해서도 마찬가지이다.
그러므로 매체 캐시 내의 트레이스들을 최대 기대 지연 시간의 어떤 작은 배수보다 더 긴 시간 동안 유지할 필요가 없다(상기 지연 시간은 또한 각각의 클라이언트가 트레이스를 계산하고 서버에 송신하기 위한 최대 기대 지연을 포함한다). 환언하면, 이 지연은 서버가 특정 매체 객체의 주어진 섹션에 대한 제1 트레이스를 수신하는 것과, 서버가 동일 매체 객체의 해당 섹션에 대한 마지막 트레이스(가장 느린 클라이언트로부터)를 수신하는 것 간의 최대 시간이다. 따라서, 트레이스들은 몇 초 정도의 짧은 기간 동안만 유지될 필요가 있다. 그 결과, 유일의 수신되는 트레이스들(unique incoming traces) 모두를 저장하기 위한 큰 캐시가 필요 없 다.
관련 실시예에서, 캐시에서의 트레이스 수명들을 설정하기 위한 최대 지연 시간들을 결정하거나 추정하려고 하기보다는, 보다 간단한 해법은 캐시 내의 트레이스들이 약 1초 내의 정도의 어떤 짧은 시간 동안 어떠한 수신되는 트레이스들과도 매칭하지 않은 후에 단순히 그 트레이스들을 캐시로부터 제거하는 것이다. 또 다른 대안 실시예들에서는, 예를 들면, 종래의 LRU(least recently used : 최근 최소 사용) 로직에 기초하여 트레이스들을 탈락시키는 고정 캐시 사이즈의 사용을 포함하는 다른 캐싱 방식들이 사용될 수도 있다.
상기 개요를 고려할 때, 여기에서 설명된 매체 식별기는 동시 매체 방송 스트림들에 대한 다수의 동시 클라이언트 요구들에 대해 실시간 매체 식별을 제공하기 위한 독특한 시스템 및 방법을 제공하는 것이 명백할 것이다. 방금 설명한 이점들 외에, 매체 식별기의 다른 이점들은 첨부 도면들과 함께 이하의 상세한 설명을 읽어보면 명백할 것이다.
본 발명의 구체적인 특징들, 양태들, 및 이점들은 이하의 설명, 부속 청구항들, 및 첨부 도면들과 관련하여 더 잘 이해될 것이다.
본 발명의 바람직한 실시예들에 대한 이하의 설명에서는, 본 명세서의 일부를 형성하는 첨부 도면들이 참조되고, 첨부 도면들에서는 본 발명이 실시될 수 있는 특정 실시예들이 예로서 도시되어 있다. 다른 실시예들이 이용될 수도 있고 본 발명의 범위를 일탈하지 않고 구조적 변경들이 행해질 수도 있다는 것을 이해해야 할 것이다.
1.0 예시적인 동작 환경:
도 1은 본 발명이 실시될 수 있는 적당한 컴퓨팅 시스템 환경(100)의 일례를 예시한다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 시스템 환경의 일례일 뿐이고, 본 발명의 이용 또는 기능의 범위에 대한 어떠한 제한도 시사하도록 의도되어 있지 않다. 컴퓨팅 환경(100)은 예시적인 동작 환경(100)에서 예시된 컴포넌트들 중 임의의 하나 또는 조합에 관하여 어떠한 종속성이나 필요 조건을 갖는 것으로 해석되어서도 안 된다.
본 발명은 다수의 다른 범용 또는 특별 용도 컴퓨팅 시스템 환경 또는 구성에서 동작 가능하다. 본 발명과 함께 이용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성들의 예로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드, 랩톱 또는 모바일 컴퓨터 또는 휴대 전화(cell phones) 및 PDA와 같은 통신 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램 가능한 소비자 전자 기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들 또는 디바이스들 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이들에 한정되지는 않는다.
본 발명은 마이크로폰 어레이(198)의 컴포넌트들을 포함하는 하드웨어 모듈들과 조합하여 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은, 컴퓨터 실행 가능 명령들의 일반적인 컨텍스트에서 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 타입(abstract data types)을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통하여 연결되어 있는 원격 처리 디바이스들에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다. 분산 컴퓨팅 환경에서는, 프로그램 모듈은 메모리 기억 장치들을 포함하는 로컬 및 원격 컴퓨터 기억 매체 양쪽 모두에 위치할 수 있다. 도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템이 컴퓨터(110)의 형태의 범용 컴퓨팅 디바이스를 포함한다.
컴퓨터(110)의 컴포넌트들은, 처리 장치(120), 시스템 메모리(130), 및 이 시스템 메모리를 포함하는 각종 시스템 컴포넌트들을 처리 장치(120)에 연결하는 시스템 버스(121)를 포함할 수 있지만, 이들에 한정되지는 않는다. 시스템 버스(121)는, 각종 버스 아키텍처 중 어느 하나를 이용한, 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 및 로컬 버스를 포함하는, 몇몇 타입의 버스 구조들 중 어느 하나일 수 있다. 한정이 아니라 예로서, 그러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 Mazzanine 버스로도 알려져 있는 PCI(Peripheral Component Interconnect) 버스를 포함한다.
컴퓨터(110)는 전형적으로 갖가지 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(110)에 의해 액세스될 수 있고 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체 모두를 포함하는 임의의 이용 가능한 매체일 수 있다. 한정이 아니라 예로서, 컴퓨터 판독 가능 매체는 컴 퓨터 기억 매체 및 통신 매체를 포함한다. 컴퓨터 기억 매체는 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위해 임의의 방법 및 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다.
컴퓨터 기억 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리, 또는 다른 메모리 기술; CD-ROM, 디지털 다용도 디스크(DVD: digital versatile disks), 또는 다른 광 디스크 기억 장치; 자기 카세트, 자기 테이프, 자기 디스크 기억 장치, 또는 다른 자기 기억 장치들; 또는 소망의 정보를 저장하기 위해 이용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체들을 포함하지만, 이들에 한정되지는 않는다. 통신 매체는 전형적으로 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 반송파(carrier wave)와 같은 변조된 데이터 신호 또는 다른 전달 메커니즘(transport mechanism)으로 구현하고 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"(modulated data signal)라는 용어는 그 신호의 특성들 중 하나 이상이 그 신호 내에 정보를 인코딩하도록 설정되거나 변경된 신호를 의미한다. 한정이 아니라 예로서, 통신 매체는 유선 네트워크(wired network) 또는 직접 유선 접속(direct-wired connection)과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기한 것들 중 임의의 것들의 조합들도 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발 성 메모리의 형태의 컴퓨터 기억 매체를 포함한다. 시동(start-up) 중과 같이, 컴퓨터(110) 내의 엘리먼트들 간에 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(133)(BIOS)은 전형적으로 ROM(131)에 저장된다. RAM(132)은 전형적으로 처리 장치(120)에 의해 즉시 액세스 가능하고 및/또는 그 처리 장치에 의해 현재 실행되고 있는 데이터 및/또는 프로그램 모듈들을 포함한다. 한정이 아니라 예로서, 도 1은 운영 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 예시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 기억 매체를 포함할 수 있다. 단지 예로서, 도 1은 비분리형, 비휘발성 자기 매체로부터 판독하거나 거기에 기록하는 하드 디스크 드라이브(141), 분리형, 비휘발성 자기 디스크(152)로부터 판독하거나 거기에 기록하는 자기 디스크 드라이브(151), 및 CD ROM 또는 다른 광학 매체와 같은 분리형, 비휘발성 광 디스크(156)로부터 판독하거나 거기에 기록하는 광 디스크 드라이브(155)를 예시한다. 예시적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 기억 매체로는, 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다용도 디스크, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만, 이들에 한정되지는 않는다. 하드 디스크 드라이브(141)는 전형적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통하여 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 전형적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 논의되고 도 1에 예시된 드라이브들 및 그들의 관련 컴퓨터 기억 매체는, 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 및 컴퓨터(110)용의 다른 데이터의 저장을 제공한다. 도 1에서, 예를 들면, 하드 디스크 드라이브(141)는 운영 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈들(146), 및 프로그램 데이터(147)를 저장하는 것으로 예시되어 있다. 이들 컴포넌트들은 운영 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈들(136), 및 프로그램 데이터(137)와 동일하거나 또는 다를 수 있다는 점을 주목해야 할 것이다. 운영 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈들(146), 및 프로그램 데이터(147)에 대해서는 최소한 그것들이 상이한 카피들임을 예시하기 위해 여기에서 상이한 번호가 부여되었다. 사용자는 키보드(162) 및 통상적으로 마우스, 트랙볼 또는 터치 패드로 불리는 포인팅 디바이스(161)와 같은 입력 장치들을 통하여 컴퓨터(110) 내에 커맨드 및 정보를 입력할 수 있다.
(도시되지 않은) 다른 입력 장치들은 조이스틱, 게임 패드, 위성 안테나(satellite dish), 스캐너, 라디오 수신기, 및 텔레비전 또는 방송 비디오 수신기 또는 그와 유사한 것을 포함할 수 있다. 이들 및 다른 입력 장치들은 흔히 시스템 버스(121)에 연결되어 있는 유선 또는 무선 사용자 입력 인터페이스(160)를 통하여 처리 장치(120)에 접속되지만, 예컨대, 병렬 포트, 게임 포트, USB(universal serial bus), IEEE 1394 인터페이스, BluetoothTM 무선 인터페이스, IEEE 802.11 무선 인터페이스 등과 같은 다른 종래의 인터페이스 및 버스 구조들에 의해 접속될 수도 있다. 게다가, 컴퓨터(110)는 또한 오디오 인터페이스(199)를 통하여 접속된 마이크로폰 또는 마이크로폰 어레이(198)와 같은 음성 또는 오디오 입력 장치는 물론, 확성기(197) 또는 다른 사운드 출력 장치를 포함할 수 있고, 상기 오디오 인터페이스(199)는 또 예컨대, 병렬, 직렬, USB, IEEE 1394, BluetoothTM 등을 포함한다.
모니터(191) 또는 다른 타입의 디스플레이 장치가 또한 비디오 인터페이스(190)와 같은 인터페이스를 통하여 시스템 버스(121)에 접속된다. 모니터 외에, 컴퓨터는 또한 다른 주변 인터페이스(195)를 통하여 접속될 수 있는 프린터(196)와 같은 다른 주변 출력 장치들을 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터들에의 논리적 접속들을 이용한 네트워킹 된 환경에서 동작할 수도 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스(peer device), 또는 다른 통상의 네트워크 노드일 수 있고, 전형적으로 컴퓨터(110)와 관련하여 위에서 설명한 엘리먼트들의 다수 또는 전부를 포함하지만, 도 1에서는 메모리 기억 장치(181)만이 예시되어 있다. 도 1에 도시된 논리적 접속들은 근거리 네트워크(LAN)(171) 및 광역 네트워크(WAN)(173)를 포함하지만, 다른 네트워크들을 포함할 수도 있다. 그러한 네트워킹 환경들은 사무실, 전사적 컴퓨터 네트워크(enterprise-wise computer networks), 인트라넷, 및 인터넷에서 흔한 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통하여 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 경우, 컴퓨터(110)는 전형적으로 인터넷과 같은 WAN(173)을 통하여 통신을 확립하기 위한 모뎀(172) 또는 다른 수단들을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160), 또는 다른 적당한 메커니즘을 통하여 시스템 버스(121)에 접속될 수 있다. 네트워킹 된 환경에서, 컴퓨터(110)와 관련하여 도시된 프로그램 모듈들 또는 그 일부는 원격 메모리 기억 장치에 저장될 수 있다. 한정이 아니라 예로서, 도 1은 원격 애플리케이션 프로그램들(185)이 메모리 디바이스(181)에 상주하는 것으로 예시하고 있다. 도시된 네트워크 접속들은 예시적인 것이고 컴퓨터들 간에 통신 링크를 확립하기 위한 다른 수단들이 이용될 수도 있다는 것을 알 것이다.
지금까지는 예시적인 동작 환경을 논의하였고, 이 설명의 나머지 부분은 스트리밍 매체 방송 내에 포함된 매체 객체들의 실시간 서버 측 식별을 클라이언트들에게 제공하는 "매체 식별기"를 구현하는 프로그램 모듈들 또는 프로세스들에 대한 논의에 할애될 것이다.
2.0 도입부:
본 명세서에서 설명된, "매체 식별기"는 라디오, 텔레비전, 또는 인터넷 방송과 같은 모니터되는 매체 스트림에 포함된 매체 객체들의 실시간 식별을 개개의 클라이언트들에게 제공한다. 그러한 매체 객체들은 노래, 광고 방송, 울림소리, 스테이션 식별자 등을 포함할 수 있다.
일반적으로, 매체 객체들의 식별은 클라이언트-생성(client-generated) "트 레이스들"을 알려진 식별의 저장되고, 미리 계산된 트레이스들(여기서는 클라이언트-생성 트레이스들과 구별하기 위해 "핑거프린트들"이라 함)의 대규모 데이터베이스와 비교함으로써 개개의 클라이언트들에게 제공된다. 이들 클라이언트가 생성한 트레이스들은 매체 스트림의 샘플들로부터 진행 과정에 따라(on an ongoing basis) 각각의 클라이언트에 의해 계산되어 식별을 위해 서버에 송신된다.
또한, 매체 스트림의 수가 한정되고 클라이언트의 수가 그보다 훨씬 많을 경우, 서버에 송신되는 트레이스들의 다수가 거의 동일하기 쉽다. 그 이유는 클라이언트들의 다수가 동일한 매체 스트림을 동시에 모니터링할 것이기 때문이다. 이러한 관찰은 특정 트레이스들을 식별하고 따라서 이들 트레이스들과 관련된 매체 객체들을 식별하기 위해 필요한 데이터베이스 쿼리들의 수를 제한하기 위해 검색 가능한 다이내믹 트레이스 캐시의 생성에 이용된다. 데이터베이스보다는 트레이스 캐시를 검색하는 것의 하나의 이점은 작업 가능한 핑거프린트들의 데이터베이스는 전형적으로 수백만의 엔트리들을 포함하겠지만, 트레이스 캐시는 전형적으로 여러 크기 차수만큼(by orders of magnitude) 더 작을 것이라는 점이다.
트레이스 캐시는, 긍정이건 부정이건, 데이터베이스 검색 결과들과 함께 각종 클라이언트들에 의해 송신된 최근의 트레이스들의 한 카피만을 캐싱한다. 환언하면, 아래에서보다 상세히 설명되는 바와 같이, 클라이언트들 중 하나에 의해 송신되고 캐시 내에 현재 존재하지 않는 임의의 트레이스가 캐시 내에, 적어도 일시적으로, 저장될 것이다. 그러므로, 트레이스 캐시는 데이터베이스 쿼리를 행하기 전에 검색된다. 그 후 데이터베이스는 단지 트레이스 캐시와 매칭하는 트레이스가 없을 때 새로운 클라이언트 생성 트레이스를 식별하기 위해 쿼리된다. 또한, 트레이스 캐시에 저장된 트레이스들은 시간의 함수로서 제거된다. 일 실시예에서, 이것은 단순히 미리 설정된 "수명"(lifetime)이지만, 관련 실시예에서 이 생존 시간은 최종의 매칭하는 트레이스가 어떤 클라이언트에 의해 서버에 송신된 때로부터의 기간에 기초한다. 환언하면, 캐시 엔트리들은 단순히 그것들이 매칭하는 트레이스들의 적중(hits)이 없이 노화(age)할 때 캐시로부터 제거된다.
이들 일반적인 개념들은 도 2의 예시적인 구조적 시스템 도에 의해 예시되어 있는데, 도 2는 매체 식별기를 구현하기 위한 컴포넌트들 간의 일반적인 기능적 관계를 예시한다. 특히, 도 2는 복수의 클라이언트들(200) 각각이 매체 방송 스트림(210)을 수신하는 것을 보여준다. 본 명세서에서 더 상세히 논의되겠지만, 라디오 스테이션 방송, 텔레비전 또는 케이블 방송, 네트워크 기반 스트리밍 매체 등과 같은, 이용 가능한 매체 스트림들(210)의 세계는 잠재적인 클라이언트들(200)의 수보다 적다. 따라서, 대부분의 매체 스트림들(210)은 2 이상의 클라이언트(200)에 의해, 잠재적으로는 수백, 수천, 또는 심지어는 수백만의 클라이언트들에 의해 동시에 모니터될 것이다. 그러나 모든 매체 스트림들(210)이 모든 클라이언트들(200)에게 이용 가능하지는 않을 것임을 주목해야 할 것이다. 왜냐하면, 매체 스트림들은 지역적으로 이용 가능한 방송들을 포함하고, 클라이언트들은 인터넷(220) 또는 다른 네트워크를 통하여 서버(230)와 통신하면서 세계의 어디에나 위치할 수 있기 때문이다.
그 후 클라이언트들(200)은 모니터 된 매체 스트림(210)을 샘플링하고 계산 된 트레이스들을 네트워크 또는 인터넷(220)을 통하여 서버(230)(또는 서버들의 뱅크)에 송신한다. 그 후 서버(230)는 그로부터 트레이스가 생성된 매체 객체들을 식별하기 위한 시도로, 트레이스 캐시(240), 및, 만일 필요하다면, 핑거프린트 데이터베이스(250)를 검사한다. 만일 식별되면, 특정 트레이스들에 대응하는 매체 식별 정보가 서버(230)에 의해 네트워크(220)를 통해 송신 측 클라이언트(200)에 반환된다.
2.1 시스템 개관:
위에서 언급한 바와 같이, 여기에서 설명된 매체 식별기는, 예를 들어, 라디오, 텔레비전, 또는 인터넷 방송과 같은 스트리밍 매체 방송에 포함된 매체 객체들의 실시간 서버 측 식별을 클라이언트들에게 제공한다. 일반적으로, 매체 식별기는 매체 스트림의 샘플링된 부분들로부터 각각의 클라이언트에 의해 계산된 "트레이스들"을 알려진 핑거프린트들의 데이터베이스와 비교함으로써 개개의 클라이언트들에게 방송 매체 스트림 내의 매체 객체들의 실시간 식별을 제공하는 적어도 하나의 서버를 제공함으로써 동작한다. 일반적으로, 계산된 트레이스들은 각각의 클라이언트에 의해 서버에 송신되고, 알려진 식별의 저장되고 미리 계산된 트레이스들의 대규모 데이터베이스와 대조하여 직접, 또는 서버 측 트레이스 캐시를 통하여 비교된다.
각각의 클라이언트마다, 서버는 트레이스들 중 임의의 것이 데이터베이스 내의 핑거프린트들 중 임의의 것과 어떤 임계치 또는 허용 오차 내에서 매칭하는지를 판정하기 위해 부정확한 매칭(inexact matching)을 이용한다. 그러한 부정확한 매 칭 기법의 사용은 정확한 매칭 기법보다 바람직한데, 그 이유는 상이한 클라이언트들 중 임의의 것에 의해 계산된 트레이스들은 그 트레이스들이 명목상 매체 스트림의 동일한 부분들로부터 계산되는 경우라도 노이즈, 간섭, 신호 감쇠 등으로 인해 얼마간 변할 수 있기 때문이다. 또한, 부정확한 매칭의 사용은 또한 그로부터 트레이스들이 계산된 매체 스트림의 샘플링된 부분들의 작은 시간 오프셋들(temporal offsets)을 규명한다.
하나의 클라이언트로부터의 트레이스가 핑거프린트(트레이시 캐시 내 또는 핑거프린트 데이터베이스 내의 어느 쪽이든)와 매칭할 때마다, 서버는 해당 클라이언트에게 해당 트레이스에 대응하는 특정 매체 객체의 식별 정보(identity)를 알려준다. 노래와 같은 매체 객체들의 경우에, 이 식별 정보는 전형적으로, 예를 들어, 아티스트, 노래 제목, 앨범 명, 장르 등과 같은 정보를 포함한다. 명백히, 알려진 매체 객체가 주어지면, 임의의 원하는 정보가 해당 매체 객체를 식별하기 위해 사용되는 데이터베이스 내의 핑거프린트들과 관련될 수 있다.
그러나, 서버에 송신되는 모든 트레이스들마다 핑거프린트 데이터베이스의 맹목적인 강제 검색을 제공하기보다는, 여기에서 설명된 매체 식별기는, 유한 개수의 매체 스트림들이 있고, 또한 전형적으로 임의의 주어진 시간에 동일한 매체 스트림을 수신하는 다수의 사용자가 있다고 가정할 때, 임의의 주어진 시간에, 사용자 생성 트레이스들의 다수가 거의 동일할 것이라는 사실을 이용(leverage)하는 별도의 서버 측 캐시를 도입한다. 환언하면, 임의의 주어진 시점에, 특정 라디오, 텔레비전, 또는 인터넷 방송과 같은 동일한 매체 스트림을 청취하는 사람이 다수, 잠재적으로는 수만에서 심지어 수백만까지 있을 수 있다. 이러한 관찰은 수신되는 트레이스들 및 매칭하는 핑거프린트들에 대한 데이터베이스 검색 결과들 양쪽 모두를 캐싱하는 서버 측 캐시의 생성을 가능케 한다.
특히, 각각의 클라이언트로부터의 각각의 수신되는 트레이스는 먼저 어떤 개수의 트레이스들을 포함하고 있는 트레이스 캐시와 비교된다. 만일 그 트레이스가 트레이스 캐시에 있지 않다면, 그것은 거기에 저장되고, 전체 데이터베이스 검색이 행해진다. 해당 데이터베이스 검색의 결과들은, 긍정이건 부정이건, 클라이언트에 의해 송신된 트레이스와 함께 트레이스 캐시에 저장된다. 캐시 및 데이터베이스 양쪽 모두에서의 검색은, 예를 들어, 베일링(bailing)(선형 스캔을 이용한 거리 비교의 속도를 증진시키는 공지의 방법)에 의한 선형 스캔(즉, 순차적으로)과 같은 종래의 기법들을 이용하여 성취될 수 있다.
또 다른 실시예에서, 데이터베이스에서의 검색은, 2003년 6월 23일자로 출원되고 일련 번호 10/602,438이 부여된, "Multidimensional Data Object Searching Using Bit Vector Indices"라는 제명의 동시 계류중인 미국 특허 출원에 기재된 바와 같이, 비트 벡터 인덱싱(bit vector indexing)을 이용하여 가속화된다. 상기 출원의 주제는 본 명세서에 참고로 통합된다. 이 비트 벡터 인덱싱 방법은 2003년 10월 28일자 마이크로소프트 기술 보고서 MSR-TR-2003-38에 개시된 Jonathan Goldstein, John C. Platt, 및 Christopher J. C. Burges의, "Indexing High Dimensional Rectangles for Fast Multimedia Identifier"라는 제명의 간행물에도 기재되어 있다. 상기 간행물의 주제는 본 명세서에 참고로 통합된다.
일반적으로, 상기 미국 특허 출원 및 대응하는 마이크로소프트 기술 보고서에 기재된 비트 벡터 인덱싱 방법들은 고차원 영역들과 대조한 포인트 쿼리들(point queries)을 신속히 수행하는 문제를 다룬다. 그러한 쿼리들은, 서로 다른 데이터베이스 엔트리들이 유사성에 대한 서로 다른 척도를 갖는 경우에, 멀티미디어 식별 및 검색의 점점 더 중요한 문제들에서 유용하다. 고차원의 가장 가까운 이웃 및 엡실론 범위 쿼리들(high-dimensional nearest neighbor and epsilon range queries)에 대한 인덱싱에 초점을 맞추는 전형적인 데이터베이스 인덱싱과 대조적으로, 고차원 영역들과 대조한 포인트 쿼리들에 대한 인덱싱은 현저한 성능 증진을 성취하기 위해 리던던시 및 비트 벡터 인덱싱의 조합에 의존하는 효율적인 인덱싱 방법을 제공한다. 그러한 방법들은 실사회 선형 스캔들에 비하여 현저한 성능 증가를 제공하는 것으로 관찰되었다.
전술한 데이터베이스 검색 실시예들 각각에서, 데이터베이스 검색의 부정적 결과들, 즉 트레이스가 데이터베이스 내의 핑거프린터들와 대조하여 매칭하지 않는 것은 클라이언트에게 송신되지 않는다. 데이터베이스 검색의 긍정적 결과들, 즉 트레이스와 핑거프린트 간에 매칭하는 것은 클라이언트에게 송신되어 트레이스가 계산된 매체 객체를 식별하게 된다. 위에서 언급한 바와 같이, 핑거프린트 데이터베이스를 검색하기 전에 매칭하는 트레이스들을 식별하기 위해 캐시가 검색된다. 따라서, 캐시에 저장된 트레이스들과 대조하여 매칭하는 것이 발견된다면, 더 이상 데이터베이스 검색이 필요치 않다. 그 이유는 캐시 내의 트레이스는 관련 매체 객체의 식별 정보를 포함하거나, 또는 단순히 매칭하는 핑거프린트가 없다는 것을 나 타낼 것이기 때문이다. 트레이스가 데이터베이스 내의 핑거프린트와 매칭하는 경우에는, 그 매칭하는 핑거프린트와 관련된 임의의 식별 정보가 클라이언트에게 송신될 것이다.
2.2 시스템 아키텍처 개관:
위에서 요약 설명한 프로세스들은 도 3의 일반적인 시스템 도에 의해 예시된다. 특히, 도 3의 시스템 도는 여기에서 설명된 매체 식별기를 구현하기 위한 프로그램 모듈들 간의 상호 관계들을 예시한다.
일반적으로, 매체 식별기는 각각의 클라이언트(200)에 대하여 동작을 시작하여, 각각의 클라이언트가 매체 스트림을 수신하기 위한 매체 스트림 캡처 모듈(305)을 이용하여 매체 스트림들(210) 중 하나를 수신하게 한다. 매체 스트림들(210)은 오디오 스트림, 비디오 스트림, 또는 양자의 혼합일 수 있음을 주목한다. 그 후 클라이언트들(200)은 수신되는 매체 스트림들을 매체 스트림 샘플링 모듈을 이용하여 실시간으로 샘플링한다. 그 후 샘플링된 매체 스트림으로부터 트레이스들을 연속적으로 생성하기 위해 각각의 클라이언트에 의해 트레이스 계산 모듈(315)이 이용된다. 각각의 클라이언트에 의해 생성되는 트레이스들의 수 및 빈도수는 아래 3절에서 더 상세히 설명된다. 생성된 트레이스들은 그 후 트레이스 송신 모듈(320)에 제공되고, 이 트레이스 송신 모듈은 트레이스들을 네트워크 또는 인터넷(220)을 통하여 서버(230)에 송신한다.
서버(230)는 그 후 여러 클라이언트들(200)로부터 송신된 트레이스들을 수신하기 위해 트레이스 수신 모듈을 이용한다. 서버(230)가 여러 클라이언트들(200) 로부터 트레이스들을 수신하기 시작하자마자, 그 트레이스들은 트레이스 검색 모듈(335)에 제공되고, 이 트레이스 검색 모듈은 먼저 매칭하는 트레이스들을 찾기 위해 트레이스 캐시(240)를 검색한다. 만일 트레이스 캐시 내에 매칭하는 트레이스가 없다면, 트레이스는 트레이스 캐시에 저장되고 트레이스 검색 모듈(335)에 의해 핑거프린트 데이터베이스(250)의 검색이 수행된다.
마지막으로, 캐시 유지 모듈(345)은 일반적인 캐시 클린업 동작들을 제공한다. 특히, 위에서 언급한 바와 같이, 서버(230)에 의해 수신되고 트레이스 캐시(240)에서 찾을 수 없는 모든 트레이스들은 대응하는 데이터베이스 검색의 결과(긍정이건 부정이건)와 함께 캐시에 부가된다. 그러나 이 프로세스에 대한 어떠한 제한도 없으면, 트레이스 캐시(240)는 신속히 오버플로우(overflow) 될 것이다. 그러므로 3절에서 더 상세히 설명하겠지만, 시간의 함수로서 오래된 트레이스들이 트레이스 캐시에서 소거된다. 구체적으로, 일 실시예에서, 캐시 유지 모듈(345)은 어떤 소정의 기간보다 오래된 트레이스들은 어떤 것이든 캐시로부터 삭제한다. 대안적으로, 캐시 유지 모듈(345)은 어떤 소정의 시간 기간 동안 트레이스 검색 모듈(335)에 의해 수신되는 트레이스들과 매칭되지 않은 트레이스들은 어떤 것이든 삭제한다. 또 다른 실시예들에서, 트레이스 유지 모듈(345)은 긍정 데이터베이스(250) 적중 및 부정 데이터베이스 적중들을 갖는 트레이스들에 대하여 이들 트레이스 수명들의 조합, 또는 다른 트레이스 수명들을 사용한다.
3.0 동작 개관:
상술한 프로그램 모듈들은 매체 식별기를 구현하기 위해 채용된다. 위에서 요약 설명한 바와 같이, 매체 식별기는 라디오 또는 인터넷 방송과 같은 모니터되는 매체 스트림에 포함된 매체 객체들의 실시간 식별을 개개의 클라이언트들에게 제공한다. 다음의 절들은 매체 식별기의 동작, 및 도 2 및 도 3과 관련하여 2절에서 설명된 프로그램 모듈들을 구현하기 위한 예시적인 방법들에 대한 상세한 논의를 제공한다. 게다가, 아래 3.1 절에서 제공되는 매체 식별기 동작에 대한 상세한 설명에 이어서, 도 4와 관련하여 매체 식별기의 전체 동작을 그 상세한 설명에 비추어 요약 설명하는 동작 흐름도가 제시된다.
3.1. 매체 식별기의 동작 상세:
다음의 단락들은 여기서 설명되는 매체 식별기의 특정 동작 및 대안 실시예들을 상술한다. 특히, 다음의 단락들은 트레이스들의 계산 및 핑거프린트 데이터베이스의 구성; 트레이스 캐시 내의 트레이스들의 수명; 트레이스 캐시의 검색; 데이터베이스 검색; 핑거프린트 데이터베이스의 다운로드된 서브세트들을 이용한 로컬 클라이언트 데이터베이스 검색의 이용; 및 마지막으로, 클라이언트에게 매체 객체 식별을 제공하는 것을 설명한다.
3.1.1 트레이스 계산 및 핑거프린트 데이터베이스 구성:
매체 식별에 사용하기 위한 오디오 스트림의 샘플들로부터 또는 오디오 신호로부터 트레이스들 또는 "핑거프린트들"을 계산하는 것은 숙련된 당업자들에게 잘 이해되는 개념이다. 일반적으로, 그러한 시스템들은 흔히 수신되는 매체 스트림을 샘플링하고 이 샘플링된 신호로부터 콤팩트한 특징 벡터들(compact feature vectors)(즉, "트레이스들")을 계산함으로써 동작한다. 이들 콤팩트한 특징 벡터 들은 저차원 벡터들을 포함할 수 있고 또는 그것들은 바이너리 해시 키들(binary hash keys)을 포함할 수 있다. 샘플링된 매체 스트림들로부터 트레이스를 계산하는 것은 숙련된 당업자들에게 공지되어 있으므로, 이 주제는 여기에서 상세히 설명하지 않겠다.
매체 식별기와 관련하여, 매체 스트림으로부터 트레이스들을 계산하는 것은 다수의 종래의 기법들 중 임의의 것을 이용하여 달성된다. 예를 들면, 매체 식별기의 테스트 된 실시예에서 사용되는 하나의 트레이스 계산 기법은 "SYSTEM AND METHOD FOR NOISE-ROBUST FEATURE EXTRACTION"이라는 제명의 미국 특허 출원 공개 번호 US 2003/0236661에 기술되어 있고, 상기 출원의 주제는 본 명세서에 참고로 통합된다.
상기 미국 특허 출원 공개 번호 US 2003/0236661에 의해 기술된 시스템은, 일반적으로 특징 추출기의 파라미터들을 정의하기 위해 "왜곡 판별 분석"(DDA : Distortion Discriminant Analysis)을 이용하여 인공의 및/또는 실세계 신호들의 혼합에 대해 트레이닝 되는 "특징 추출기"를 이용하여 오디오 신호들로부터 특징들을 계산하거나 추출함으로써 동작한다. 설명된 특징 추출기는 시간 또는 공간적 구조로 하나 이상의 차원을 갖는 신호들을 수신하고, 그 신호의 제한된 영역들에 지향 주 성분 분석(OPCA : oriented principal component analysis)을 적용하고, 공간적으로 또는 시간적으로 인접해 있는 다수의 OPCA들의 출력을 모으고, 그 모여진 것에 OPCA를 적용한다. 인접한 OPCA 출력들을 모으고 그 모여진 값들에 OPCA를 적용하는 단계들은 오디오 신호, 이미지, 비디오 데이터, 또는 임의의 다른 시간 또는 주파수 도메인 신호를 포함하는 신호들로부터 저차원의 노이즈에 강한 특징들을 추출하기 위해 1회 이상 수행된다. 일단 트레이닝 되면, 특징 추출기는 그 후 단순히 여기서 설명된 매체 식별기에 의해 사용되는 트레이스들(및 핑거프린트들)을 생성하기 위해 사용된다.
그러나 위에서 언급한 바와 같이, 위에서 식별된 "특징 추출기"는 분명히 트레이스들 또는 핑거프린트들을 계산하기 위한 유일한 방법이 아니다. 트레이스들 또는 핑거프린트들이 어떻게 계산되는지와는 관계없이, 기본적인 개념은 각각의 클라이언트마다 수신되는 매체 스트림의 고정 길이 세그먼트들의 콤팩트한 "트레이스들"을 계산하는 것이다. 테스트된 실시예에서, 그러한 트레이스들은 약 6초 정도의 매체 스트림의 샘플들로부터 1초에 약 6회 정도로 각각의 클라이언트에 의해 계산되고 송신되었다. 명백히, 보다 길거나 보다 짧은 샘플 기간들을 사용하여, 보다 많거나 보다 적은 트레이스들이 사용될 수 있고, 이들 파라미터들은 전형적으로 트레이스 계산을 위해 사용되는 특정 기법들에 좌우된다.
핑거프린트 데이터베이스를 포함하는 핑거프린트들은 일반적으로 트레이스들과 동일한 방식으로 동일한 알고리즘을 이용하여 계산되어, 각각의 클라이언트에 의해 계산된 트레이스들과 핑거프린트 데이터베이스를 채우기(populate) 위해 사용된 핑거프린트들 간에 명백한 대응이 있게 된다. 그러나, 매체 스트림이 진행하면서 연속적으로 계산되는 트레이스들과는 달리, 핑거프린트들은 알려진 매체 객체들에 대응하는 핑거프린트들을 데이터베이스에 채우기 위하여 알려진 매체 객체 내의 하나 이상의 샘플들로부터, 한 번만 계산된다. 각각의 매체 객체마다 계산되는 핑 거프린트들의 수는 원하는 만큼 적거나 많을 수 있다. 그러나, 테스트된 실시예에서는, 매체 객체마다 수 개의 핑거프린트들을 제공하는 것으로 강건한 매체 객체 식별을 제공하기에 충분하다는 것이 관찰되었다.
일단 생성되면, 핑거프린트 데이터베이스는, 여기에서 설명된 바와 같이, 알려진 매체 객체들에 대한 핑거프린트들을 다시 계산할 필요가 없이, 간단히 서버에 의해 액세스된다. 그러나 알려진 핑거프린트들의 데이터베이스는 그 후 새로운 매체 객체들(노래 등)이 생성될 때 새로운 핑거프린트들로 업데이트될 수 있다. 그러므로 알려진 핑거프린트들의 데이터베이스는 바람직하게는 임의의 트레이스 계산 알고리즘들을 이용하여 오프라인으로 생성되고 클라이언트들이 트레이스들을 계산하는 데 사용되고, 그 후 간단히 서버에 제공되어 여기에서 설명된 매체 식별기에 의해 수행되는 매체 식별 동작 중에 서버에서의 부가적인 계산 부하를 제거하게 될 것이다.
3.1.2. 트레이스 캐시 수명:
매체 식별기에 의해 제공되는 서버 측 트레이스 캐시의 한 가지 이점은 캐시의 사이즈가 비교적 작아서 캐시 검색이 매우 신속히 이루어진다는 점이다. 특히, 캐시 사이즈는 각각의 클라이언트들로부터의 요구들 간의 최대 기대 지연, 및 식별 서비스가 제공되고 있는 유일의 매체 스트림들의 수의 함수이다. 또한, 캐시 사이즈는 트레이스 식별 요구들로 서버에 액세스하는 개개의 클라이언트들 또는 사용자들의 수의 함수가 아니라는 점을 주목해야 할 것이다.
특히, 각각의 특정 매체 방송 스트림은 그 특정 매체 스트림을 수신하고 있 는 각각의 클라이언트에 대해 대략 동기화된다. 예를 들면, 동일한 라디오 스테이션을 수신하는 임의의 2 이상의 클라이언트들은 약 1초 내외 정도의 매우 짧은 시간적 오프셋 내에서 동일한 신호를 수신할 것 같다. 이것은 또한 매체를 스트리밍하는 대부분의 인터넷 또는 네트워크 방송들에 대해서도 마찬가지이다.
그러므로 매체 캐시 내의 트레이스들을 최대 기대 클라이언트 간 지연 시간의 어떤 작은 배수보다 더 긴 시간 동안 유지할 필요가 없다(상기 지연 시간은 또한 각각의 클라이언트가 트레이스를 계산하고 그 트레이스를 서버에 송신하기 위한 최대 기대 지연을 포함한다). 환언하면, 이 지연은 단순히 서버가 특정 매체 객체의 주어진 섹션에 대한 제1 트레이스를 수신하는 것과, 서버가 동일 매체 객체의 해당 섹션에 대한 마지막 트레이스(가장 느린 클라이언트로부터)를 수신하는 것 간의 최대 시간이다. 따라서, 트레이스들은 몇 초 정도의 짧은 기간 동안만 유지될 필요가 있다. 그 결과, 유일의 수신되는 트레이스들(unique incoming traces) 모두를 저장하기 위한 큰 캐시가 필요 없다.
관련 실시예에서, 캐시에서의 트레이스 수명들을 설정하기 위한 최대 지연 시간들을 결정하거나 추정하려고 하기보다는, 보다 간단한 해법은 캐시 내의 트레이스들이 약 1초 내의 정도의 어떤 짧은 시간 동안 어떠한 수신되는 트레이스들과도 매칭하지 않은 후에 단순히 그 트레이스들을 캐시로부터 제거하는 것이다. 또 다른 대안 실시예들에서는, 예를 들면, 종래의 LRU(least recently used: 최근 최소 사용) 로직에 기초하여 트레이스들을 탈락시키는 고정 캐시 사이즈의 사용을 포함하는 다른 캐싱 방식들이 사용될 수도 있다.
3.1.3. 트레이스 캐시 검색:
위에서 언급한 바와 같이, 서버가 임의의 트레이스들을 수신하기 시작하자마자, 트레이스 캐시가 즉시 검색되어 트레이스 캐시 내에 매칭하는 트레이스가 있는지 여부가 결정된다. 그 후, 매칭하는 것이 있으면, 그 매칭하는 트레이스가 임의의 관련 매체 객체 식별 정보를 갖는지 여부, 또는 그것이 데이터베이스에서 발견되지 않은 트레이스인지 여부에 대한 판정이 행해진다. 다시, 트레이스 캐시에서 발견되지 않은 트레이스들은 트레이스 캐시에 부가되고, 그 후 데이터베이스가 즉시 검색되어 그 트레이스가 데이터베이스에 존재하는지 여부가 결정된다.
수신되는 트레이스들이 트레이스 캐시 내의 임의의 캐시들과 매칭하는지 여부에 대한 판정은 종래의 신호 비교 기법들을 이용하여 행해진다. 그러한 기법들은, 예를 들면, 종래의 상호 상관(cross correlations), 및 수신되는 트레이스의 포인트들을 트레이스 캐시 내의 트레이스들 각각에 직접 비교하는 선형 스캔을 포함한다. 어느 경우이든, 매칭은 위에서 언급한 바와 같이 부정확한 것이 바람직하다. 왜냐하면, 상이한 클라이언트들 중 임의의 것에 의해 계산된 트레이스들은 그 트레이스들이 명목상 매체 스트림의 동일한 부분들로부터 계산되는 경우라도 노이즈, 간섭, 신호 감쇠 등으로 인해 얼마간 변할 수 있기 때문이다. 정확한 매칭이 사용될 수도 있지만, 그것은 매칭하는 트레이스들을 정확하게 식별하는 데 있어서 덜 효과적인 것으로 입증되었다. 일 실시예에서, 부정확한 매칭은 당 기술 분야에 공지되어 있는 바와 같이, 정확도를 향상시키기 위해, 2003년 5월, 음성 및 오디오 처리에 관한 IEEE 학회지, 제11권, 제3호, 165-174페이지에 있는, Christopher J. C. Burges, John C. Platt, 및 Soumya Jana의 "Distortion Discriminant Analysis for Audio Fingerprinting"이라는 제명의 간행물에 개시된 것과 같은 핑거프린트 특정 환치 계산법(fingerprint-specific renormalization)을 이용한다. 상기 간행물의 주제는 본 명세서에 참고로 통합된다.
부정확한 매칭의 경우, 어떤 거리 척도 f와 대응하는 임계치 θ와 관련하여 결정된다. 예를 들면, 만일 트레이스들이 저차원 벡터들이라면, 수신되는 트레이스 X를 캐싱된 트레이스들 Y의 세트와 직접 비교하기 위하여, 트레이스들 간에 비교를 행하는 한 가지 간단한 방법은, 다음 수학식 1에서, j로 인덱싱된 각각의 트레이스마다 1회씩, 제곱 유클리드 거리(squared Euclidean distance)를 간단히 구하는 것이다.
Figure 112005051012165-pat00001
여기서 xi는 트레이스의 i번째 엘리먼트이고, yij는 j번째 캐싱된 트레이스의 i번째 엘리먼트이고, n은 트레이스 벡터의 성분들의 수이고, θj는 j번째 캐싱된 트레이스와 관련된 거리 임계치이다.
위에서 설명한 비교 방법은 신호들 또는 트레이스들을 비교하기 위한 매우 많은 수의 종래의 기법들 중 하나일 뿐임을 주목해야 할 것이다. 그러한 방법들은 숙련된 당업자들에게 잘 알려져 있으므로, 여기에서는 설명하지 않겠다. 그러나 2개의 신호들 또는 트레이스들을 비교하기 위한 임의의 종래의 기법은 여기에서 설 명된 매체 식별기와 관련하여 사용하기 위해 적용될 수 있고, 또한 매체 식별기는 위에서 설명한 간단한 선형 스캔의 사용에 제한되도록 의도되어 있지 않다는 점을 이해해야 할 것이다. 또한, 매칭하는 신호들 또는 트레이스들에 대한 검색을 가속화하기 위한 종래의 기법들도 다수 있다. 한 가지 간단한 방법은 단순히 이전의 매칭하는 것들의 빈도수 순으로 캐시를 검색하는 것이다. 다른 종래의 검색 가속화 방식들이 있는 것이 명백하고, 이들 중 어느 것이든 여기에서 설명된 매체 식별기와 관련하여 사용하기 위해 적용될 수 있다.
3.1.4. 데이터베이스 검색:
위에서 언급한 바와 같이, 데이터베이스 검색은 특정 수신되는 트레이스가 트레이스 캐시 내의 트레이스들의 어느 것과도 매칭하지 않는 경우에만 행해진다. 핑거프린트 데이터베이스의 실제 검색은 트레이스 캐시 내의 매칭하는 것드에 대한 검색과 거의 동일한 방법으로 달성된다. 사실상, 트레이스 캐시 검색과 관련하여 위에서 설명한 동일한 타입의 트레이스 비교들이 수신되는 트레이스들을 핑거프린트 데이터베이스 내의 핑거프린트들과 비교하기 위해 이용된다. 그러나, 핑거프린트 데이터베이스는 트레이스 캐시보다 현저히 클 것으로 기대된다는 점을 주목해야 할 것이다. 사실상, 노래 핑거프린트들(song fingerprints)만을 포함하는 매체 객체 데이터베이스는 전 세계에 스트리밍되거나 방송되고 있는 음악의 이용 가능한 스펙트럼을 완전히 표현하려면 수백만의 엔트리들을 쉽게 가질 것으로 기대될 수 있다. 따라서, 데이터베이스 검색을 가속화하기 위한 방법들은 트레이스 캐시 검색의 가속보다 상당히 더 중요한 경향이 있다.
이와 관련하여, 인기나 빈도수 순으로 검색하는 것은 상당한 성능 증대를 제공하는 경향이 있다. 왜냐하면 매우 인기 있는 노래가 알려지지 않은 아티스트에 의한 어떤 오래된 노래보다 하나 이상의 매체 스트림들에서 스트리밍될 가능성이 상당히 더 크기 때문이다. 빈도수를 측정하는 것은 쉽게 달성되는 작업이다. 특히, 한 가지 간단한 방법은 특정 매체 객체가 상이한 스트림들에서 어떤 기간 동안 상이한 횟수로 식별되는 횟수를 단순히 카운트하는 것이다(트레이스 캐시 적중 및 데이터베이스 매치하는 것들을 카운트함으로써). 검색을 목적으로, 핑거프린트 데이터베이스 내의 엔트리들은 그 후 빈도수 순으로 순서화될 수 있다. 또한, 위에서 언급한 바와 같이, 매칭하는 신호들 또는 트레이스들에 대한 검색을 가속화하기 위한 종래의 기법들이 다수 있고, 이들 중 어느 것이든 여기에서 설명된 매체 식별기와 관련하여 사용하기 위해 적용될 수 있다.
3.1.5. 로컬 데이터베이스 검색:
일 실시예에서, 전체 핑거프린트 데이터베이스(및 트레이스 캐시의 가능한 어떤 부분도 함께)의 어떤 소부분 또는 서브세트을 하나 이상의 로컬 클라이언트들에 자동으로 업로딩함으로써 서버 부하가 더욱 저감된다. 전형적으로, 개개의 클라이언트들에 업로딩되는 트레이스들 및/또는 핑거프린트들은 가장 빈번히 관찰되는 것들(즉, 가장 인기 있는 매체 객체들에 대응하는 트레이스들/핑거프린트들)이어야 한다.
이 실시예에서는, 모든 계산된 트레이스마다 서버에 즉시 송신하기보다는, 핑거프린트 데이터베이스 및/또는 트레이스 캐시의 서브세트(즉, "로컬 트레이스 서브세트")를 갖는 각각의 클라이언트는 임의의 계산된 트레이스를 식별 목적으로 서버에 송신하기 전에 먼저 로컬 트레이스 서브세트를 쿼리할 것이다. 만일 임의의 계산된 트레이스가 로컬 트레이스 서브세트 내의 트레이스들 중 임의의 것과 매칭한다면, 로컬 트레이스 서브세트 내의 매칭하는 트레이스와 관련된 임의의 식별 정보가 계산된 트레이스에 할당되고, 계산된 트레이스는 그 후 서버에 송신되지 않는다. 이런 식으로, 매체 식별 부하 중 적어도 일부가 서버로부터 로컬 클라이언트들 중 하나 이상의 것에 오프로드(offload)될 수 있다.
로컬 트레이스 서브세트 내의 트레이스들은 전체 서버 데이터베이스 내의 것들보다 노래마다 더 많은 핑거프린트들을 포함할 수 있다는 것을 주목해야 할 것이다. 왜냐하면, 노래와 같은, 현재 인기 있는 매체 객체들의 수는 매체 객체들의 전체 개체수에 비하여 비교적 적기 때문이다. 이것은 서버에 송신되는 트레이스들의 수를 더욱 줄이는 부가적인 이점을 갖는다. 왜냐하면 매칭이 행해지자마자, 현재 재생되는 매체 객체는 그 매체 객체가 재생되는 한은 그 매체 객체에 대한 핑거프린트들의 로컬 저장소와 국부적으로 대조되기 때문이다. 예를 들면, 만일 한 노래에 대하여 매 5초마다 핑거프린트가 계산된다면, 클라이언트는 매 5초마다 기대되는 매칭을 찾는 한은 서버에 어떠한 트레이스도 송신할 필요가 없을 것이다.
또 다른 실시예에서, 클라이언트는 긍정적 매칭이 식별되자마자, 노래 S와 같은 식별된 매체 객체의 나머지의 지속 기간 동안, 서버에 트레이스들을 송신하는 것을 단순히 중지한다. 이 지속 기간 정보는, 긍적적인 매치가 발견되는 경우, 다른 식별 정보와 함께, 서버로부터 클라이언트로 송신될 수 있다. 이것은 서버/캐 시 시스템의 부담을 더욱 경감하는 간단한 방법이기는 하지만, 그것은 만일 사용자가, 예를 들어, 전술한 식별된 노래 S가 끝나기 전에 매체 스트림을 스위칭할 경우 거짓 부정을 초래할 수 있다(즉, 식별되었어야 하지만 그렇지 않은 매체 객체). 그러나, 이것은 단순히 클라이언트가 스트림을 스위칭하는 때를 계속해서 추적하고, 그 후 스트림 스위칭이 일어날 때마다, 즉시 다시 서버에 트레이스를 송신하기 시작함으로써(먼저 로컬 트레이스 서브세트와 대조한 후에, 하나가 존재한다면) 방지될 수 있다.
3.1.6. 매체 객체 식별:
위에서 언급한 바와 같이, 매체 객체들의 식별은 로컬 클라이언트에 의해 계산된 트레이스를 서버에 의해 유지된 트레이스 또는 핑거프린트와 매칭시킴으로써 달성된다(위에서 설명한 바와 같이, 로컬 트레이스 서브세트를 검색하는 경우는 제외하고). 서버가 관련 매체 객체 식별 정보를 갖는 트레이스 또는 핑거프린트에의 매치를 식별할 때마다, 상술한 바와 같이, 그 매체 객체 정보는 즉시 서버로부터 그 특정 매칭하는 트레이스를 서버에 송신한 특정 클라이언트에 송신된다.
일단 매체 객체 식별 정보가 클라이언트에 의해 수신되면, 클라이언트는 그 정보를 어떻게든 원하는 대로 이용할 수 있다. 예를 들면, 가장 간단한 경우로, 클라이언트는 단순히 그 매체 객체 정보를 실시간으로 디스플레이함으로써 사용자에게 매체 스트림에서 현재 어떤 매체 객체가 재생되고 있는지를 알려줄 수 있다. 매체 객체 식별 정보의 다른 용도들은 각 개개의 클라이언트에 의해 모니터되는 스트림들 중 임의의 것에서 식별된 매체 객체의 로컬 기록(local historical record) 을 제공하는 로컬 재생목록(local playlists)을 구성하는 것이다.
3.2 매체 식별기 동작:
도 2 및 도 3과 관련하여 위에서 설명한 프로세스들은 도 4의 일반적인 동작 흐름도에 의해 예시되어 있다. 일반적으로, 도 4는 매체 식별기의 몇몇 동작 실시예들을 보여주는 예시적인 동작 흐름도를 예시한다. 도 4에서 임의의 박스들 및 파선 또는 점선들로 표현되어 있는 박스들 간의 상호 연결들은 여기에서 설명된 매체 식별기의 대안 실시예들을 나타내고, 후술하는 바와 같이, 이들 대안 실시예들의 임의의 것 또는 전부는 본 명세서의 전반에 걸쳐서 설명되어 있는 다른 대안 실시예들과 조합하여 사용될 수 있다는 것을 주목해야 할 것이다. 또한, 아래 논의에서, 시스템은 일반적으로 단일 서버와 함께 동작하는 단일 클라이언트에 대하여 설명된다는 것을 주목해야 할 것이다. 그러나, 이전의 논의에 비추어, 여기에서 설명된 매체 식별기는 대단히 많은 수의 클라이언트들 및 임의의 원하는 수의 서버들과 함께 충분히 동작 가능하다는 것이 명백할 것이다.
특히, 도 4에 의해 예시된 바와 같이, 매체 식별기의 동작은 클라이언트(200)가 매체 스트림(210)을 캡처하는(405) 것으로 시작한다. 매체 스트림의 캡처는, 예를 들면, 단순히 라디오 또는 텔레비전 방송에 동조(tuning in)하거나, 또는 인터넷과 같은 네트워크를 통하여 스트리밍 매체 방송 또는 동시 방송(simulcast)에 가입하는 것을 포함하는, 종래의 방법들을 이용하여 달성된다. 매체 스트림(210)이 캡처될 때(405), 클라이언트는 매체 스트림의 샘플들로부터 실시간 트레이스들을 생성한다(410). 이들 실시간 매체 트레이스들은 그 후 종래의 네트워크 전 송 프로토콜들을 이용하여 서버(230)에 송신된다(415). 매체 트레이스들의 계산 및 송신은 매체 스트림이 수신되는 동안은, 그리고 클라이언트가 매체 스트림에 포함된 매체 객체들에 대한 식별 정보를 갖기를 원하는 동안은 계속된다.
그러나, 위에서 언급한 바와 같이, 일 실시예에서, 클라이언트는 서버로부터 매체 객체 식별 정보를 수신한 이후에 트레이스들의 생성 및 서버로의 송신을 일시적으로 중지할 것이다. 예를 들면, 위에서 언급한 바와 같이, 핑거프린트 데이터베이스에 대해 계산된 핑거프린트들은 알려진 매체 객체들 내의 알려진 위치들로부터 계산된다. 따라서, 그 매체 객체들의 나머지 길이 또는 지속 기간은 계산된 트레이스와 관련하여 알려질 것이다(서버에 트레이스를 송신하고 서버로부터 매체 객체 식별 정보를 수신하는 것으로부터의 지연 시간보다 작다). 그러므로, 이 실시예에서, 이 지속 기간 정보가 매체 객체 식별 정보와 함께 제공되는 한은, 현재 재생 중인 매체 객체의 기대 종점 후까지 클라이언트가 어떠한 부가적인 트레이스들도 계산하거나 서버에 송신할 필요가 없을 것이다. 그러나, 클라이언트가 상이한 매체 스트림을 캡처링하기 시작하는 경우에는(예컨대 라디오 스테이션을 스위칭함으로써) 트레이스 계산 및 송신이 즉시 재개될 것이다. 이 실시예는 성공적인 매체 객체 식별이 클라이언트에 반환된 후에 서버에 송신되는 트레이스들의 수를 극적으로 감소시킴으로써 서버 부하를 현저히 감소시킬 수 있다는 것이 명백할 것이다.
일단 서버(230)가 클라이언트들(200)로부터 송신된 트레이스들을 수신하면(420), 서버는 즉시 트레이스 캐시(240)를 검사하여 캐시 내에 매칭하는 트레이스 가 있는지를 판정한다(430). 만일 트레이스 캐시 내에 매칭하는 트레이스가 있다면, 그 캐시 내의 매칭하는 트레이스를 검사하여 그것이 긍정적 데이터베이스 적중(positive database hit)과 관련되어 있는지를 판정한다(435). 만일 매칭하는 트레이스가 긍정적 데이터베이스 적중과 관련되어 있다면, 그 매칭하는 트레이스와 관련된 매체 식별 정보는 즉시 클라이언트(200)에 송신된다(460).
반대로, 트레이스 캐시(240)가 매칭하는 트레이스를 포함하고 있지 않을 경우, 다음 단계는 매칭하는 핑거프린트를 찾아내기 위한 시도로 핑거프린트 데이터베이스(250)를 검사하는(440) 것이다. 만일 데이터베이스 매치(445)가 있다면, 트레이스는 트레이스 캐시(240)에 저장되고(450), 매칭하는 트레이스와 관련된 매체 식별 정보는 즉시 클라이언트(200)에 역으로 송신된다(460). 데이터베이스 매치(445)가 없는 경우에는, 트레이스는 다시 트레이스 캐시(240)에 부정 적중(negative hit)으로서 저장된다(450).
어느 쪽의 경우든, 일단 매칭(430)이 트레이스 캐시(240)에서 발견되거나 또는 그렇지 않거나, 또는 매칭(445)이 데이터베이스에서 찾아지거나 또는 그렇지 않거나, 그리고 임의의 관련 매체 객체 식별 정보가 클라이언트에 송신되면(460), 서버는 단순히, 각각, 트레이스 캐시(240) 및/또는 핑거프린트 데이터베이스(250) 내의 트레이스들 및/또는 핑거프린트들과의 비교를 위하여 클라이언트로부터 송신될 다음 트레이스를 기다린다. 또한, 위에서 언급한 바와 같이, 트레이스 캐시(240)는 그 수명이 끝난 트레이스 엔트리들을 제거하기 위해 진행 과정에 따라(on an ongoing basis) 관리된다(455).
일단 클라이언트(200)가 임의의 매체 객체 식별 정보를 수신하면, 그 정보는 클라이언트에 의해 처리되어(465) 원하는 대로 사용자에게 제공된다. 예를 들면, 일 실시예에서, 매체 객체 식별 정보는 매체 스트림이 수신되고 재생될 때 사용자에게 현재의 매체 객체 식별 정보 표시를 제공하기 위해 사용된다. 대안적으로, 매체 객체 식별 정보는 재생목록 생성, 매체 스트림 특성, 매체 스트림의 통계적 분석 등을 포함하면서도 그에 한정되지 않는 다른 목적들을 위해 사용될 수 있다.
마지막으로, 다른 실시예에서는, 핑거프린트 데이터베이스(250)(및/또는 트레이스 캐시(240))의 서브세트가 서버(230)로부터 클라이언트(200)에 의해 다운로드(470)되어 로컬 핑거프린트 데이터베이스로서 기능한다. 위에서 언급한 바와 같이, 이 서브세트는 또한, 위에서 설명한 바와 같이, 적용 범위(coverage)를 증대시키기 위하여, 서버 자신이 검색용으로 이용하지 않는 부가적인 핑거프린트들을 포함할 수 있다(예를 들면, 클라이언트는 노래마다 수 개의 핑거프린트들을 검사할 수 있다). 특히, 상대적으로 더 인기 있는(또는 보다 빈번히 관찰되는) 매체 객체들에 대해서는 서버에 의해 각 매체 객체마다 부가적인 핑거프린트들이 계산되고 서버 호출을 더 줄이기 위하여 클라이언트들에 다운로드되는 핑거프린트들의 서브세트에 포함된다. 위에서 설명한 바와 같이, 이 로컬 데이터베이스는 그 후 클라이언트가 임의의 트레이스들을 서버(230)에 송신하기 전에 클라이언트에 의해 검색된다(475). 이 로컬 데이터베이스의 검색에서 트레이스 매치가 찾아지는 경우에는, 대응하는 트레이스는 위에서 설명한 바와 같이 처리하기 위해 서버(230)에 송신되지 않는다.
매체 식별기에 대한 전술한 설명은 예시와 설명을 목적으로 제시되어 있다. 그것은 빠짐없이 논하거나 또는 발명을 개시된 바로 그 형태로 제한하기 위해 의도되어 있지 않다. 상기 교시 내용에 비추어 많은 수정 및 변형이 가능하다. 또한, 앞에서 언급한 대안 실시예들 중 임의의 것 또는 전부가 원하는 임의의 조합으로 이용되어 매체 식별기의 부가적인 혼합 실시예들을 형성할 수 있다. 따라서 본 발명의 범위는 이 상세한 설명에 의해 제한된다기보다는, 오히려 여기에 부속된 청구항들에 의해 제한될 것이다.
본 발명에 따르면, 예를 들어 라디오, 텔레비전, 또는 인터넷 방송과 같은 스트리밍 매체 방송에 포함된 매체 객체들의 실시간 서버 측 식별을 개개의 클라이언트들에게 제공하는 시스템 및 방법이 제공된다. 또한, 그러한 시스템 및 방법은 다수의 동시 사용자들에게 매체 객체 식별 서비스를 효율적으로 제공함과 동시에 서버 부하 및 데이터베이스 검색을 최소화할 수 있다. 또한, 그러한 시스템 및 방법은 복수의 클라이언트 컴퓨터들 각각에 의해 해당 작업이 수행되도록 요구함으로써 매체 스트림의 샘플들로부터 트레이스들을 계산하는 부담을 제거함으로써 서버 부하를 최소화할 수 있다.

Claims (27)

  1. 클라이언트에 의해 모니터되는 매체 방송 스트림(client-monitored media broadcast streams)에 포함된 매체 객체들의 식별을 복수의 클라이언트 컴퓨터 각각에게 제공하는 방법으로서, 컴퓨팅 디바이스를 이용하여,
    복수의 클라이언트 컴퓨터 각각으로부터, 클라이언트에 의해 생성되는 매체 스트림 트레이스들(client-generated media stream traces)을 서버 컴퓨터로 송신하는 단계;
    상기 서버 컴퓨터에 의해 수신되는 각각의 송신된 매체 스트림 트레이스에 대해, 상기 서버 컴퓨터를 이용하여 상기 매체 스트림 트레이스와 매칭하는 트레이스를 찾기 위해 트레이스 캐시를 검색하는 단계 - 상기 트레이스 캐시 내의 각각의 트레이스는 미리 결정된 수명(lifetime)을 포함하고, 만료된 수명을 갖는 임의의 트레이스는 임의의 연관된 매체 객체 식별 정보와 함께 상기 트레이스 캐시로부터 제거됨 - ;
    상기 트레이스 캐시가 매칭하는 트레이스를 포함하는 경우, 상기 매칭하는 트레이스와 연관된 임의의 매체 객체 식별 정보를 상기 서버 컴퓨터로부터 대응하는 클라이언트 컴퓨터로 송신하는 단계;
    상기 트레이스 캐시가 매칭하는 트레이스를 포함하지 않는 경우, 핑거프린트 데이터베이스(fingerprint database)를 검색하여 매체 스트림 트레이스와 매칭하는 임의의 핑거프린트들이 있는지를 판정하고 상기 송신된 매체 스트림 트레이스를 상기 데이터베이스 검색의 결과와 함께 상기 트레이스 캐시에 저장하는 단계;
    상기 핑거프린트 데이터베이스가 매칭하는 핑거프린트를 포함하는 경우, 상기 서버 컴퓨터로부터 상기 대응하는 클라이언트 컴퓨터로 상기 핑거프린트와 연관된 매체 객체 식별 정보를 송신하는 단계; 및
    상기 서버 컴퓨터로부터 하나 이상의 상기 클라이언트 컴퓨터들로, 상기 핑거프린트 데이터베이스로부터의 하나 이상의 핑거프린트들과 상기 트레이스 캐시로부터의 0개 이상의 트레이스들의 서브세트를 업로드하고 또한 상기 업로드된 핑거프린트들 및 트레이스들과 연관된 임의의 매체 객체 식별 정보를 업로드하는 단계
    를 수행하고,
    각각의 클라이언트 컴퓨터 상의 핑거프린트들 및 트레이스들의 상기 서브세트는, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들을 상기 서버 컴퓨터로 송신하기 전에, 상기 대응하는 클라이언트 컴퓨터에 의해 생성되는 각각의 매체 스트림 트레이스와 매칭하는 것을 찾기 위해 검색되고, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들이 상기 서브세트 내의 핑거프린트들 및 트레이스들 중 임의의 엔트리들과 매칭하는 경우, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들은 상기 서버 컴퓨터로 보내지지 않는,
    매체 객체 식별 제공 방법.
  2. 제1항에 있어서, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들은 각각의 클라이언트 컴퓨터에 의해 주기적으로 계산되고 상기 서버 컴퓨터로 송신되는, 매체 객체 식별 제공 방법.
  3. 제1항에 있어서, 상기 미리 결정된 수명은 연관된 매체 객체 식별 정보를 갖지 않은 트레이스들에 대해서 보다 연관된 매체 객체 식별 정보를 갖는 트레이스들에 대해 더 긴, 매체 객체 식별 제공 방법.
  4. 제1항에 있어서, 상기 트레이스 캐시 내의 트레이스에 대한 상기 미리 결정된 수명에서 남아 있는 시간은, 상기 트레이스 캐시 내의 상기 트레이스가 매체 스트림 트레이스와 매칭할 때, 상기 미리 결정된 수명으로 리셋되는, 매체 객체 식별 제공 방법.
  5. 제1항에 있어서, 매체 스트림 트레이스들과 미리 결정된 횟수보다 많이 매칭되는 상기 트레이스 캐시 내의 트레이스들은 상기 미리 결정된 수명에 관계없이 상기 트레이스 캐시 내에 계속 유지되는, 매체 객체 식별 제공 방법.
  6. 제1항에 있어서, 상기 트레이스 캐시 내의 각각의 트레이스는 미리 결정된 시간 기간 동안 임의의 송신된 매체 스트림 트레이스들과도 매칭되지 못한 후에는 상기 각각의 트레이스와 연관된 임의의 매체 객체 식별 정보와 함께 상기 트레이스 캐시로부터 제거되는, 매체 객체 식별 제공 방법.
  7. 제1항에 있어서, 상기 트레이스 캐시는 고정된 사이즈를 갖고, 상기 트레이스 캐시 내의 가장 오래된 트레이스는 송신된 매체 스트림 트레이스가 상기 트레이스 캐시에 저장될 때마다 상기 가장 오래된 트레이스와 연관된 임의의 매체 객체 식별 정보와 함께 상기 트레이스 캐시로부터 제거되는, 매체 객체 식별 제공 방법.
  8. 삭제
  9. 제1항에 있어서, 각각의 대응하는 클라이언트 컴퓨터로 송신되는 상기 매체 객체 식별 정보는 클라이언트에 의해 모니터되는 매체 방송 스트림에 포함된 현재 스트리밍 중인 매체 객체의 남아 있는 지속 기간(duration)을 포함하고, 그러한 정보를 수신하는 임의의 클라이언트 컴퓨터는 상기 현재 스트리밍 중인 매체 객체의 상기 남아 있는 지속 기간 동안 클라이언트에 의해 생성되는 매체 스트림 트레이스들을 상기 서버 컴퓨터로 송신하는 것을 일시적으로 중지시키는, 매체 객체 식별 제공 방법.
  10. 제9항에 있어서, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들의 상기 서버 컴퓨터로의 송신은 사용자가 상이한 스트림으로 스위칭한 것을 시스템이 검출하자마자 재개되는, 매체 객체 식별 제공 방법.
  11. 매체 방송 스트림들에 포함된 매체 객체들의 식별을 복수의 클라이언트 컴퓨터 각각에게 제공하는 시스템으로서,
    복수의 클라이언트 컴퓨터 각각에서 복수의 매체 스트림 방송 중 임의의 하나를 모니터하기 위한 수단;
    상기 클라이언트 컴퓨터들 각각에서 모니터되는 상기 매체 스트림 방송들의 샘플들로부터 실시간 트레이스들을 생성하기 위한 수단;
    각각의 실시간 트레이스를 각각의 클라이언트 컴퓨터로부터 하나 이상의 서버 컴퓨터의 서버 뱅크로 송신하기 위한 수단;
    상기 서버 뱅크에 의해 수신된 각각의 실시간 트레이스에 대해, 상기 서버 뱅크를 이용하여 상기 실시간 트레이스와 매칭하는 것을 찾기 위해 서버 기반 트레이스 캐시(server-based trace cache)를 검색하고, 매칭하는 트레이스와 연관된 임의의 매체 객체 식별 정보를 상기 트레이스 캐시로부터 상기 클라이언트 컴퓨터들 중 대응하는 하나로 송신하기 위한 수단 - 상기 트레이스 캐시 내의 각각의 트레이스는 미리 결정된 수명을 포함하고, 만료된 수명을 갖는 임의의 트레이스는 임의의 연관된 매체 객체 식별 정보와 함께 상기 트레이스 캐시로부터 제거됨 - ; 및
    상기 트레이스 캐시가 상기 실시간 트레이스와 매칭하는 것을 포함하지 않는 경우에는, 상기 서버 뱅크를 이용하여 상기 실시간 트레이스와 매칭하는 핑거프린트를 찾기 위해 서버 기반 핑거프린트 데이터베이스를 검색하고, 매칭하는 핑거프린트와 연관된 임의의 매체 객체 식별 정보를 상기 핑거프린트 데이터베이스로부터 상기 대응하는 클라이언트 컴퓨터로 송신하고, 상기 실시간 트레이스를 상기 데이터베이스 검색의 결과와 함께 상기 트레이스 캐시에 저장하기 위한 수단; 및
    상기 서버 컴퓨터로부터 하나 이상의 상기 클라이언트 컴퓨터들로, 상기 핑거프린트 데이터베이스로부터의 하나 이상의 핑거프린트들과 상기 트레이스 캐시로부터의 0개 이상의 트레이스들의 서브세트를 업로드하고 또한 상기 업로드된 핑거프린트들 및 트레이스들과 연관된 임의의 매체 객체 식별 정보를 업로드하기 위한 수단
    을 포함하고,
    각각의 클라이언트 컴퓨터 상의 핑거프린트들 및 트레이스들의 상기 서브세트는, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들을 상기 서버 컴퓨터로 송신하기 전에, 상기 대응하는 클라이언트 컴퓨터에 의해 생성되는 각각의 매체 스트림 트레이스와 매칭하는 것을 찾기 위해 검색되고, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들이 상기 서브세트 내의 핑거프린트들 및 트레이스들 중 임의의 엔트리들과 매칭하는 경우, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들은 상기 서버 컴퓨터로 보내지지 않는,
    매체 객체 식별 제공 시스템.
  12. 제11항에 있어서, 상기 미리 결정된 수명은 연관된 매체 객체 식별 정보를 갖지 않은 트레이스들에 대해서 보다 연관된 매체 객체 식별 정보를 갖는 트레이스들에 대해 더 긴, 매체 객체 식별 제공 시스템.
  13. 제11항에 있어서, 상기 트레이스 캐시 내의 트레이스에 대한 상기 미리 결정된 수명에서 남아 있는 시간은, 상기 트레이스 캐시 내의 상기 트레이스가 매체 스트림 트레이스와 매칭할 때, 상기 미리 결정된 수명으로 리셋되는, 매체 객체 식별 제공 시스템.
  14. 제11항에 있어서, 매체 스트림 트레이스들과 미리 결정된 횟수보다 많이 매칭되는 상기 트레이스 캐시 내의 트레이스들은 상기 미리 결정된 수명에 관계없이 상기 트레이스 캐시 내에 계속 유지되는, 매체 객체 식별 제공 시스템.
  15. 제11항에 있어서, 상기 트레이스 캐시 내의 각각의 트레이스는 미리 결정된 시간 기간 동안 임의의 송신된 매체 스트림 트레이스들과도 매칭되지 못한 후에는 상기 각각의 트레이스와 연관된 임의의 매체 객체 식별 정보와 함께 상기 트레이스 캐시로부터 제거되는, 매체 객체 식별 제공 시스템.
  16. 제11항에 있어서, 각각의 대응하는 클라이언트 컴퓨터로 송신되는 상기 매체 객체 식별 정보는 각각의 대응하는 클라이언트 컴퓨터에 의해 모니터되는 상기 매체 방송 스트림에 포함된 현재 스트리밍 중인 매체 객체의 남아 있는 지속 기간을 포함하고, 그러한 정보를 수신하는 임의의 클라이언트 컴퓨터는 상기 현재 스트리밍 중인 매체 객체의 상기 남아 있는 지속 기간 동안 실시간 트레이스들을 상기 서버 뱅크로 송신하는 것을 일시적으로 중지시키는, 매체 객체 식별 제공 시스템.
  17. 매체 객체 식별을 복수의 클라이언트 컴퓨터에게 제공하기 위한 컴퓨터 실행 가능 명령들을 갖는 컴퓨터 판독가능 저장매체로서, 상기 컴퓨터 실행가능 명령들은 컴퓨터로 하여금,
    복수의 클라이언트 컴퓨터를 이용하여 각각의 클라이언트 컴퓨터에 의해 모니터되고 있는 캡처된 매체 스트림들의 샘플들로부터 순차적 실시간 트레이스들을 생성하는 단계;
    상기 생성된 트레이스들을 서버 컴퓨터로 송신하는 단계;
    각각의 송신된 트레이스에 대해, 상기 서버 컴퓨터를 이용하여,
    상기 서버 컴퓨터에 의해 액세스 가능한 트레이스 캐시를 검색하여 상기 트레이스 캐시가 매칭하는 트레이스를 포함하는지를 판정하는 단계 - 상기 트레이스 캐시 내의 각각의 트레이스는 미리 결정된 수명을 포함하고, 만료된 수명을 갖는 임의의 트레이스는 임의의 연관된 매체 객체 식별 정보와 함께 상기 트레이스 캐시로부터 제거됨 - ;
    상기 트레이스 캐시가 매칭하는 트레이스를 포함하는 경우, 상기 매칭하는 트레이스가 임의의 연관된 매체 객체 식별 정보를 포함하는지를 판정하게 하고, 만일 그렇다면, 상기 매체 객체 식별 정보를 상기 서버 컴퓨터로부터 대응하는 클라이언트 컴퓨터로 송신하는 단계;
    상기 트레이스 캐시가 매칭하는 트레이스를 포함하지 않는 경우, 핑거프린트 데이터베이스를 검색하여 임의의 매칭하는 핑거프린트들이 있는지를 판정하게 하고 상기 송신된 트레이스를 상기 데이터베이스 검색의 결과와 함께 상기 트레이스 캐시에 저장하는 단계;
    상기 핑거프린트 데이터베이스가 매칭하는 핑거프린트를 포함하는 경우, 상기 핑거프린트와 연관된 매체 객체 식별 정보를 상기 서버 컴퓨터로부터 상기 대응하는 클라이언트 컴퓨터로 송신하는 단계;
    상기 서버 컴퓨터로부터 하나 이상의 상기 클라이언트 컴퓨터들로, 상기 핑거프린트 데이터베이스로부터의 하나 이상의 핑거프린트들과 상기 트레이스 캐시로부터의 0개 이상의 트레이스들의 서브세트를 업로드하고 또한 상기 업로드된 핑거프린트들 및 트레이스들과 연관된 임의의 매체 객체 식별 정보를 업로드하는 단계를 수행하게 하며,
    각각의 클라이언트 컴퓨터 상의 핑거프린트들 및 트레이스들의 상기 서브세트는, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들을 상기 서버 컴퓨터로 송신하기 전에, 상기 대응하는 클라이언트 컴퓨터에 의해 생성되는 각각의 매체 스트림 트레이스와 매칭하는 것을 찾기 위해 검색되고, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들이 상기 서브세트 내의 핑거프린트들 및 트레이스들 중 임의의 엔트리들과 매칭하는 경우, 상기 클라이언트에 의해 생성되는 매체 스트림 트레이스들은 상기 서버 컴퓨터로 보내지지 않는,
    컴퓨터 판독가능 저장매체.
  18. 제17항에 있어서, 상기 트레이스 캐시 내의 트레이스에 대한 상기 미리 결정된 수명에서 남아 있는 시간은, 상기 트레이스 캐시 내의 상기 트레이스가 매체 스트림 트레이스와 매칭할 때, 상기 미리 결정된 수명으로 리셋되는, 컴퓨터 판독가능 저장매체.
  19. 제17항에 있어서, 송신된 트레이스들과 미리 결정된 횟수보다 많이 매칭되는 상기 트레이스 캐시 내의 트레이스들은 상기 미리 결정된 수명에 관계없이 상기 트레이스 캐시 내에 계속 유지되는, 컴퓨터 판독가능 저장매체.
  20. 제17항에 있어서, 상기 트레이스 캐시 내의 각각의 트레이스는 미리 결정된 시간 기간 동안 임의의 송신된 트레이스들과도 매칭되지 못한 후에는 상기 각각의 트레이스와 연관된 임의의 매체 객체 식별 정보와 함께 상기 트레이스 캐시로부터 제거되는, 컴퓨터 판독가능 저장매체.
  21. 제17항에 있어서, 상기 트레이스 캐시는 고정된 사이즈를 갖고, 송신된 트레이스가 상기 트레이스 캐시에 저장될 때마다 상기 트레이스 캐시 내의 가장 오래된 트레이스는 상기 가장 오래된 트레이스와 연관된 임의의 매체 객체 식별 정보와 함께 상기 트레이스 캐시로부터 제거되는, 컴퓨터 판독가능 저장매체.
  22. 제17항에 있어서, 각각의 대응하는 클라이언트 컴퓨터에 송신되는 상기 매체 객체 식별 정보는 각각의 클라이언트 컴퓨터에 의해 모니터되는 캡처링된 매체 스트림에 포함된 현재 스트리밍 중인 매체 객체의 남아 있는 지속 기간을 포함하고, 그러한 정보를 수신하는 임의의 클라이언트 컴퓨터는 상기 현재 스트리밍 중인 매체 객체의 상기 남아 있는 지속 기간 동안 송신하는 트레이스들을 상기 서버 컴퓨터에 송신하는 것을 일시적으로 중지시키는, 컴퓨터 판독가능 저장매체.
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
KR1020050085003A 2004-11-02 2005-09-13 다중 동기화된 데이터 스트림들에 대한 데이터베이스 검색속도를 증진하기 위한 시스템 및 방법 KR101143115B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/980,684 2004-11-02
US10/980,684 US7574451B2 (en) 2004-11-02 2004-11-02 System and method for speeding up database lookups for multiple synchronized data streams

Publications (2)

Publication Number Publication Date
KR20060051233A KR20060051233A (ko) 2006-05-19
KR101143115B1 true KR101143115B1 (ko) 2012-05-08

Family

ID=35810153

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050085003A KR101143115B1 (ko) 2004-11-02 2005-09-13 다중 동기화된 데이터 스트림들에 대한 데이터베이스 검색속도를 증진하기 위한 시스템 및 방법

Country Status (13)

Country Link
US (1) US7574451B2 (ko)
EP (1) EP1653381A3 (ko)
JP (1) JP5031217B2 (ko)
KR (1) KR101143115B1 (ko)
CN (1) CN100507911C (ko)
AU (1) AU2005209695B2 (ko)
BR (1) BRPI0504265A (ko)
CA (1) CA2519828C (ko)
MX (1) MXPA05010665A (ko)
MY (1) MY147083A (ko)
RU (1) RU2422891C2 (ko)
TW (1) TWI390924B (ko)
ZA (1) ZA200507924B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101456926B1 (ko) 2013-06-14 2014-10-31 (주)엔써즈 핑거프린트에 기반한 광고 검출 시스템 및 방법

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005173938A (ja) * 2003-12-10 2005-06-30 Pioneer Electronic Corp 曲検索装置、曲検索方法及び曲検索用プログラム並びに情報記録媒体
WO2006050731A2 (en) * 2004-11-09 2006-05-18 Bang & Olufsen A/S A procedure and apparatus for generating automatic replay of recordings
US7886068B1 (en) * 2005-10-27 2011-02-08 Network Appliance, Inc. Management of streaming media playlists
US8239327B2 (en) * 2005-11-02 2012-08-07 Jump Technologies, Inc. System and method for user logging of audio and video broadcast content
US7872574B2 (en) * 2006-02-01 2011-01-18 Innovation Specialists, Llc Sensory enhancement systems and methods in personal electronic devices
US8495075B2 (en) * 2006-03-08 2013-07-23 Apple Inc. Fuzzy string matching of media meta-data
WO2007127881A2 (en) * 2006-04-26 2007-11-08 Business Controls, Inc. Anonymous reporting system
ES2433966T3 (es) * 2006-10-03 2013-12-13 Shazam Entertainment, Ltd. Método para caudal alto de identificación de contenido de radiodifusión distribuido
US7707224B2 (en) 2006-11-03 2010-04-27 Google Inc. Blocking of unlicensed audio content in video files on a video hosting website
WO2008058093A2 (en) * 2006-11-03 2008-05-15 Google Inc. Content management system
US7945540B2 (en) * 2007-05-04 2011-05-17 Oracle International Corporation Method to create a partition-by time/tuple-based window in an event processing service
EP2162818A1 (en) * 2007-05-25 2010-03-17 Bang & Olufsen A/S System and a method for providing events to a user
EP2198376B1 (en) * 2007-10-05 2016-01-27 Dolby Laboratories Licensing Corp. Media fingerprints that reliably correspond to media content
ES2326019B1 (es) * 2008-03-26 2010-07-07 Tuylek, S.L. "equipo multifuncion de medicion de datos vitales dotado de un sistema de tratamiento de datos centralizado".
JP5204893B2 (ja) * 2008-03-31 2013-06-05 ドルビー ラボラトリーズ ライセンシング コーポレイション 分散型媒体フィンガープリントリポジトリ
CN101610281B (zh) * 2008-06-19 2012-11-21 华为技术有限公司 一种数据指纹保存方法和装置
US20100023328A1 (en) * 2008-07-28 2010-01-28 Griffin Jr Paul P Audio Recognition System
US8972410B2 (en) * 2008-07-30 2015-03-03 Hewlett-Packard Development Company, L.P. Identifying related objects in a computer database
WO2010022303A1 (en) 2008-08-22 2010-02-25 Dolby Laboratories Licensing Corporation Content identification and quality monitoring
US9390167B2 (en) * 2010-07-29 2016-07-12 Soundhound, Inc. System and methods for continuous audio matching
US20100198926A1 (en) * 2009-02-05 2010-08-05 Bang & Olufsen A/S Method and an apparatus for providing more of the same
US9633014B2 (en) 2009-04-08 2017-04-25 Google Inc. Policy based video content syndication
US8738354B2 (en) * 2009-06-19 2014-05-27 Microsoft Corporation Trans-lingual representation of text documents
US20110041154A1 (en) * 2009-08-14 2011-02-17 All Media Guide, Llc Content Recognition and Synchronization on a Television or Consumer Electronics Device
US8161071B2 (en) 2009-09-30 2012-04-17 United Video Properties, Inc. Systems and methods for audio asset storage and management
US8677400B2 (en) 2009-09-30 2014-03-18 United Video Properties, Inc. Systems and methods for identifying audio content using an interactive media guidance application
US8594392B2 (en) * 2009-11-18 2013-11-26 Yahoo! Inc. Media identification system for efficient matching of media items having common content
US8682145B2 (en) 2009-12-04 2014-03-25 Tivo Inc. Recording system based on multimedia content fingerprints
US20110258211A1 (en) * 2010-04-18 2011-10-20 Kalisky Ofer System and method for synchronous matching of media samples with broadcast media streams
US9275141B2 (en) * 2010-05-04 2016-03-01 Shazam Entertainment Ltd. Methods and systems for processing a sample of a media stream
KR101582436B1 (ko) * 2010-05-04 2016-01-04 샤잠 엔터테인먼트 리미티드 미디어의 동기화 방법 및 시스템
US20120191231A1 (en) * 2010-05-04 2012-07-26 Shazam Entertainment Ltd. Methods and Systems for Identifying Content in Data Stream by a Client Device
US20120136701A1 (en) * 2010-11-26 2012-05-31 Rohan Relan Method and system for faciliating interactive commercials in real time
US8935300B1 (en) * 2011-01-03 2015-01-13 Intellectual Ventures Fund 79 Llc Methods, devices, and mediums associated with content-searchable media
US8643703B1 (en) 2011-03-30 2014-02-04 Amazon Technologies, Inc. Viewer tracking image display
US9035163B1 (en) 2011-05-10 2015-05-19 Soundbound, Inc. System and method for targeting content based on identified audio and multimedia
CA2837725C (en) * 2011-06-10 2017-07-11 Shazam Entertainment Ltd. Methods and systems for identifying content in a data stream
KR101828342B1 (ko) * 2011-08-10 2018-02-12 삼성전자 주식회사 방송수신장치, 방송신호 관련 연관정보 제공방법 및 서버
US8560719B2 (en) 2011-09-14 2013-10-15 Mobitv, Inc. Fragment server directed device fragment caching
KR101873364B1 (ko) 2011-09-27 2018-08-03 삼성전자 주식회사 방송수신장치, 방송신호 관련 연관정보 제공방법
US9852135B1 (en) * 2011-11-29 2017-12-26 Amazon Technologies, Inc. Context-aware caching
US9223902B1 (en) 2011-11-29 2015-12-29 Amazon Technologies, Inc. Architectures for content identification
US9292894B2 (en) * 2012-03-14 2016-03-22 Digimarc Corporation Content recognition and synchronization using local caching
KR101404596B1 (ko) * 2012-05-03 2014-06-11 (주)엔써즈 이미지에 기반하여 동영상 서비스를 제공하는 시스템 및 방법
KR101396413B1 (ko) * 2012-05-07 2014-05-19 주식회사 마크애니 디지털 핑거프린팅을 이용한 정보 제공 시스템 및 방법
US8843952B2 (en) 2012-06-28 2014-09-23 Google Inc. Determining TV program information based on analysis of audio fingerprints
US9113203B2 (en) 2012-06-28 2015-08-18 Google Inc. Generating a sequence of audio fingerprints at a set top box
WO2014004914A1 (en) * 2012-06-28 2014-01-03 Google Inc. Generating a sequence of audio fingerprints at a set top box
CN102880973A (zh) * 2012-09-05 2013-01-16 常州嘴馋了信息科技有限公司 网页广告播放管理系统
US9661361B2 (en) 2012-09-19 2017-05-23 Google Inc. Systems and methods for live media content matching
GB2506897A (en) * 2012-10-11 2014-04-16 Imagination Tech Ltd Obtaining stored music track information for a music track playing on a radio broadcast signal
EP2750055A1 (en) * 2012-12-27 2014-07-02 Magix AG System and method for content recognition in portable devices
US20140188592A1 (en) * 2012-12-27 2014-07-03 Magix Ag Content recognition based evaluation system in a mobile environment
US9792350B2 (en) * 2013-01-10 2017-10-17 International Business Machines Corporation Real-time classification of data into data compression domains
US9053121B2 (en) 2013-01-10 2015-06-09 International Business Machines Corporation Real-time identification of data candidates for classification based compression
US9564918B2 (en) 2013-01-10 2017-02-07 International Business Machines Corporation Real-time reduction of CPU overhead for data compression
KR101462113B1 (ko) * 2013-01-16 2014-11-17 네이버 주식회사 방송의 멀티미디어 유전자를 통한 그룹핑 시스템, 장치, 방법 및 컴퓨터 판독 가능한 기록 매체
US9009103B2 (en) * 2013-03-15 2015-04-14 Microsoft Technology Licensing, Llc Fingerprint-based, intelligent, content pre-fetching
US9906575B2 (en) 2013-08-15 2018-02-27 Comcast Cable Communications, Llc Media fling system
US9552205B2 (en) * 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
TWI526966B (zh) 2013-11-25 2016-03-21 財團法人資訊工業策進會 資料處理裝置及資料處理方法
US9749416B2 (en) * 2013-11-26 2017-08-29 International Business Machines Corporation Managing inventory data for a distributed cache provided by a plurality of wireless mobile devices
US20150193199A1 (en) * 2014-01-07 2015-07-09 Qualcomm Incorporated Tracking music in audio stream
US9430474B2 (en) * 2014-01-15 2016-08-30 Microsoft Technology Licensing, Llc Automated multimedia content recognition
KR102166423B1 (ko) * 2014-03-05 2020-10-15 삼성전자주식회사 디스플레이 장치, 서버 장치 및 디스플레이 장치의 이벤트 정보 제공 방법
US9710220B2 (en) * 2014-10-24 2017-07-18 Sony Corporation Context-sensitive media classification
KR102217191B1 (ko) * 2014-11-05 2021-02-18 삼성전자주식회사 단말 장치 및 그 정보 제공 방법
US9946489B2 (en) * 2016-07-27 2018-04-17 Western Digital Technologies, Inc. Multi-stream journaled replay
RU172737U1 (ru) * 2017-04-18 2017-07-21 Общество с ограниченной ответственностью "ДЖЕНТ КЛАБ" Устройство для идентификации музыкальных произведений
US10972203B2 (en) 2017-06-12 2021-04-06 Gracenote, Inc. Detecting and responding to rendering of interactive video content
KR102546026B1 (ko) 2018-05-21 2023-06-22 삼성전자주식회사 전자 장치 및 그의 컨텐츠 인식 정보 획득
GB201810202D0 (en) * 2018-06-21 2018-08-08 Magus Communications Ltd Answer machine detection method & apparatus
KR102599951B1 (ko) 2018-06-25 2023-11-09 삼성전자주식회사 전자 장치 및 그의 제어방법
KR20200080387A (ko) 2018-12-18 2020-07-07 삼성전자주식회사 디스플레이 장치 및 그 제어 방법
US11334746B2 (en) * 2019-05-01 2022-05-17 EMC IP Holding Company LLC Facial recognition for multi-stream video using high probability group
CN111966887A (zh) * 2019-05-20 2020-11-20 北京沃东天骏信息技术有限公司 动态缓存方法及装置、电子设备、存储介质
CN110647077B (zh) * 2019-09-26 2020-12-25 珠海格力电器股份有限公司 一种工控装置的控制方法、系统、存储介质及工控装置
US20210200741A1 (en) * 2019-12-30 2021-07-01 Imperva, Inc. Passive classification of data in a database based on an event log database
CN116825129B (zh) * 2023-05-09 2024-02-09 广东保伦电子股份有限公司 一种音频流精确分发的方法、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020053979A (ko) * 2000-12-26 2002-07-06 오길록 내용 기반의 음악 자료 검색 시스템 및 그 방법
KR20040084421A (ko) * 2003-03-28 2004-10-06 주식회사 프리챌 P2p서비스 방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958008A (en) * 1996-10-15 1999-09-28 Mercury Interactive Corporation Software system and associated methods for scanning and mapping dynamically-generated web documents
US5944815A (en) * 1998-01-12 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US6721740B1 (en) 1998-05-29 2004-04-13 Sun Microsystems, Inc. Method and apparatus of performing active update notification
US7174293B2 (en) * 1999-09-21 2007-02-06 Iceberg Industries Llc Audio identification system and method
US6952737B1 (en) * 2000-03-03 2005-10-04 Intel Corporation Method and apparatus for accessing remote storage in a distributed storage cluster architecture
US6990453B2 (en) * 2000-07-31 2006-01-24 Landmark Digital Services Llc System and methods for recognizing sound and music signals in high noise and distortion
DE60236161D1 (de) * 2001-07-20 2010-06-10 Gracenote Inc Automatische identifizierung von klangaufzeichnungen
KR100961461B1 (ko) * 2001-07-31 2010-06-08 그레이스노트 아이엔씨 기록의 다단계 식별
US20030055910A1 (en) * 2001-09-19 2003-03-20 International Business Machines Corporation Method and apparatus to manage data on a satellite data server
US7509393B2 (en) * 2001-12-19 2009-03-24 International Business Machines Corporation Method and system for caching role-specific fragments
WO2003067467A1 (en) * 2002-02-06 2003-08-14 Koninklijke Philips Electronics N.V. Fast hash-based multimedia object metadata retrieval
US20040003101A1 (en) * 2002-06-26 2004-01-01 Roth David J. Caching control for streaming media
US7089396B2 (en) 2002-10-10 2006-08-08 International Business Machines Corporation Method and profiling cache for management of virtual memory
WO2004040416A2 (en) * 2002-10-28 2004-05-13 Gracenote, Inc. Personal audio recording system
US20040260682A1 (en) * 2003-06-19 2004-12-23 Microsoft Corporation System and method for identifying content and managing information corresponding to objects in a signal

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020053979A (ko) * 2000-12-26 2002-07-06 오길록 내용 기반의 음악 자료 검색 시스템 및 그 방법
KR20040084421A (ko) * 2003-03-28 2004-10-06 주식회사 프리챌 P2p서비스 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101456926B1 (ko) 2013-06-14 2014-10-31 (주)엔써즈 핑거프린트에 기반한 광고 검출 시스템 및 방법
WO2014200137A1 (ko) * 2013-06-14 2014-12-18 (주)엔써즈 핑거프린트에 기반한 광고 검출 시스템 및 방법

Also Published As

Publication number Publication date
TWI390924B (zh) 2013-03-21
MXPA05010665A (es) 2006-05-04
RU2005132924A (ru) 2007-04-27
JP2006146883A (ja) 2006-06-08
AU2005209695B2 (en) 2011-02-10
AU2005209695A1 (en) 2006-05-18
RU2422891C2 (ru) 2011-06-27
MY147083A (en) 2012-10-31
CN100507911C (zh) 2009-07-01
TW200627884A (en) 2006-08-01
CN1770156A (zh) 2006-05-10
CA2519828A1 (en) 2006-05-02
BRPI0504265A (pt) 2006-06-27
ZA200507924B (en) 2007-12-27
US7574451B2 (en) 2009-08-11
KR20060051233A (ko) 2006-05-19
US20060106867A1 (en) 2006-05-18
EP1653381A3 (en) 2006-09-13
EP1653381A2 (en) 2006-05-03
JP5031217B2 (ja) 2012-09-19
CA2519828C (en) 2013-06-25

Similar Documents

Publication Publication Date Title
KR101143115B1 (ko) 다중 동기화된 데이터 스트림들에 대한 데이터베이스 검색속도를 증진하기 위한 시스템 및 방법
US10025841B2 (en) Play list generation method and apparatus
US7877438B2 (en) Method and apparatus for identifying new media content
KR100988996B1 (ko) 반복 미디어 객체의 범위 결정 방법, 및 컴퓨터 판독가능 기록매체
EP1474760B1 (en) Fast hash-based multimedia object metadata retrieval
US7788696B2 (en) Inferring information about media stream objects
US6766523B2 (en) System and method for identifying and segmenting repeating media objects embedded in a stream
EP1485815B1 (en) Method and apparatus for cache promotion
US7653921B2 (en) System and method for providing user control over repeating objects embedded in a stream
US20040260682A1 (en) System and method for identifying content and managing information corresponding to objects in a signal
US7333864B1 (en) System and method for automatic segmentation and identification of repeating objects from an audio stream
US20140161263A1 (en) Facilitating recognition of real-time content
EP2437255A2 (en) Automatic identification of repeated material in audio signals
CN116319467B (zh) 基于idc机房双向流量的深度合成音频检测方法及系统

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee