JP6794990B2 - 楽曲検索方法および楽曲検索装置 - Google Patents

楽曲検索方法および楽曲検索装置 Download PDF

Info

Publication number
JP6794990B2
JP6794990B2 JP2017543101A JP2017543101A JP6794990B2 JP 6794990 B2 JP6794990 B2 JP 6794990B2 JP 2017543101 A JP2017543101 A JP 2017543101A JP 2017543101 A JP2017543101 A JP 2017543101A JP 6794990 B2 JP6794990 B2 JP 6794990B2
Authority
JP
Japan
Prior art keywords
pitch
music
query
search
input voice
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2017543101A
Other languages
English (en)
Other versions
JPWO2017056982A1 (ja
Inventor
秀樹 高野
秀樹 高野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Publication of JPWO2017056982A1 publication Critical patent/JPWO2017056982A1/ja
Application granted granted Critical
Publication of JP6794990B2 publication Critical patent/JP6794990B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/632Query formulation
    • 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/61Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/638Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、楽曲を検索する技術に関する。
データベースに記録された多くの楽曲の中からユーザが所望する楽曲を検索する技術が知られている。例えば特許文献1には、ユーザが指定した音符列に対応する音符列を含む楽曲を、音符の指定毎に順次に検索するインクリメンタルな楽曲検索装置が開示されている。特許文献2および非特許文献1は楽曲の検索に関するものではないが、これらの文献には、検索クエリと部分的に類似するシーケンスデータを検索する技術が開示されている。
特開2012−48619号公報 特開2008−134706号公報
櫻井保志、外2名、「ダイナミックタイムワーピング距離に基づくストリーム処理」、一般社団法人電子情報通信学会、電子情報通信学会論文誌D、J92-D(3)、338-350、2009年3月1日
特許文献1に記載の技術は、入力された音符列と合致する音符列を有する楽曲を検索結果として得るものであった。そのため、必ずしも所望の楽曲を正確に表していない歌唱音声を入力とした場合に適切な検索結果が得られないという問題があった。また、特許文献2および非特許文献1は楽曲検索を対象としたものではなかった。
これに対し本発明は、音声入力に基づいて所望の楽曲を迅速に検索する技術を提供する。
本発明は、ユーザからの入力音声における音高の時間変化を記号化し、データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得する楽曲検索方法を提供する。また、本発明は、ユーザからの入力音声における音高の時間変化を記号化する記号化部と、データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得する取得部とを有する楽曲検索装置としても把握される。
一実施形態に係る楽曲検索システム1の概要を例示する図 楽曲検索システム1の機能構成を例示する図 端末装置10のハードウェア構成を例示する図 サーバ装置20のハードウェア構成を例示する図 楽曲検索システム1の動作の概要を示すシーケンスチャート ステップS1の処理の詳細を示すフローチャート 入力音声における音高の差を例示する図 レーベンシュタイン距離を算出するための行列を例示する図 本実施形態に係るマッチング行列を例示する図 ステップS3の処理の詳細を示す図 ステップS5において表示される検索結果を例示する図 ステップS7の処理の詳細を示す図 類似度を算出する処理を例示する図 一実施形態に係るカラオケシステム5の構成を例示する図 カラオケシステム5の動作の概要を示すシーケンスチャート
1.構成
図1は、一実施形態に係る楽曲検索システム1の概要を例示する図である。楽曲検索システム1は、ユーザの歌唱音声を入力として、データベースに記録されている複数の楽曲の中から、その歌唱音声と類似した部分を持つ楽曲を検索するサービス(以下「楽曲検索サービス」という)を提供するシステムである。楽曲検索システム1は、端末装置10およびサーバ装置20を有する。端末装置10は、楽曲検索サービスにおけるクライアントとして機能する装置であり、楽曲検索装置の一例である。サーバ装置20は、楽曲検索サービスにおけるサーバとして機能する装置である。端末装置10およびサーバ装置20は、ネットワーク30を介して接続される。ネットワーク30は、例えば、インターネット、LAN(Local Area Network)、および移動通信網の少なくとも1つを含む。
図2は、楽曲検索システム1の機能構成を例示する図である。楽曲検索システム1は、音声入力部11、記号化部12、クエリ生成部13、記憶部14、検索部15、出力部16、修正部17、および取得部18を有する。この例では、音声入力部11、記号化部12、クエリ生成部13、出力部16、および取得部18が端末装置10に、検索部15および修正部17がサーバ装置20に、それぞれ実装されている。
音声入力部11は、ユーザが発した音声の入力を受け付ける。記号化部12は、音声入力部11が受け付けた音声における音高の時間変化を記号化する。クエリ生成部13は、記号化部12により記号化された入力音声を含む検索クエリを生成する。
記憶部14は、複数の楽曲に関する情報が記録されたデータベースを記憶している。検索部15は、記憶部14に記憶されているデータベースの中から、クエリ生成部13により生成された検索クエリと類似する部分を有する楽曲を検索する。検索部15は、編集距離に基づく部分シーケンスマッチングによる検索アルゴリズムを採用している。部分シーケンスマッチングとは、マッチング対象(この例では楽曲)のうち検索クエリと類似した部分を特定することをいう。この類似した部分を「類似区間」という。修正部17は、検索部15による検索結果において、類似度の高いものから順に上位の所定数の楽曲に対して、編集距離に基づく部分シーケンスマッチングとは異なる手法により、検索結果を修正する。修正部17は、オンセット時間差に基づいて検索結果を修正する。
出力部16は、検索部15による検索の結果および修正部17による検索の結果を出力する。
図3は、端末装置10のハードウェア構成を例示する図である。端末装置10は、例えば、タブレット端末、スマートフォン、携帯電話機、またはパーソナルコンピュータである。端末装置10は、CPU(Central Processing Unit)100、メモリ101、ストレージ102、入力装置103、表示装置104、音声出力装置105、および通信IF106を有するコンピュータ装置である。CPU100は、各種演算を行い、また他のハードウェア要素を制御する装置である。メモリ101は、CPU100が処理を実行する際に用いられるコードおよびデータを記憶する記憶装置であり、例えばROM(Read Only Memory)およびRAM(Random Access Memory)を含む。ストレージ102は、各種のデータおよびプログラムを記憶する不揮発性の記憶装置であり、例えばHDD(Hard Disk Drive)またはフラッシュメモリを含む。入力装置103は、CPU100に情報を入力するための装置であり、この例では少なくともマイクロフォンを含む。入力装置103は、さらに、例えばキーボード、タッチスクリーン、およびリモートコントローラの少なくとも1つを含んでもよい。表示装置104は、映像を出力する装置であり、例えば液晶ディスプレイまたは有機ELディスプレイを含む。音声出力装置105は、音声を出力する装置であり、例えばDAコンバーター、増幅器、およびスピーカを含む。通信IF106は、ネットワーク30を介して他の装置と通信を行うインターフェースである。
メモリ101およびストレージ102は、非一過性(non-transitory)の記録媒体であるとして観念される。ただし本明細書中において、「非一過性」の記録媒体とは、一過性の伝搬信号(transitory, propagating signal)を除く全てのコンピュータ読み取り可能な記録媒体を含み、揮発性の記録媒体を除外するものではない。
ストレージ102は、コンピュータ装置を楽曲検索サービスにおけるクライアント装置として機能させるためのアプリケーションプログラム(以下「クライアントプログラム」という)を記憶している。CPU100がクライアントプログラムを実行することにより、図2の機能が実装される。入力装置103(特にマイクロフォン)は、音声入力部11の一例である。クライアントプログラムを実行しているCPU100は、記号化部12、クエリ生成部13、および取得部18の一例である。表示装置104は、出力部16の一例である。
図4は、サーバ装置20のハードウェア構成を例示する図である。サーバ装置20は、CPU200、メモリ201、ストレージ202、および通信IF206を有するコンピュータ装置である。CPU200は、各種演算を行い、また他のハードウェア要素を制御する装置である。メモリ201は、CPU200が処理を実行する際に用いられるコードおよびデータを記憶する記憶装置であり、例えばROMおよびRAMを含む。ストレージ202は、各種のデータおよびプログラムを記憶する不揮発性の記憶装置であり、例えばHDD(Hard Disk Drive)またはフラッシュメモリを含む。通信IF206は、ネットワーク30を介して他の装置と通信を行うインターフェースである。
メモリ201およびストレージ202は、非一過性の記録媒体であるとして観念される。
ストレージ202は、コンピュータ装置を楽曲検索サービスにおけるサーバ装置として機能させるためのプログラム(以下「サーバプログラム」という)を記憶している。CPU200がサーバプログラムを実行することにより、図2の機能が実装される。ストレージ202は、記憶部14の一例である。サーバプログラムを実行しているCPU200は、検索部15および修正部17の一例である。
2.動作
2−1.概要
図5は、楽曲検索システム1の動作の概要を示すシーケンスチャートである。ステップS1において、端末装置10は、ユーザによる音声入力を受け付ける。ステップS2において、端末装置10は、入力された検索指示に基づいて生成された検索クエリを、サーバ装置20に送信する。検索クエリとは、検索エンジンに対する情報要求であり、検索キーを含む。ここで、検索キーは、記号化された入力音声を含む。ステップS3において、サーバ装置20は、与えられた検索クエリに従って楽曲を検索する。ここでは、編集距離に基づく部分シーケンスマッチング用検索アルゴリズムを用いた検索が行われる。ステップS4において、サーバ装置20は、検索結果を端末装置10に送信する。ステップS5において、端末装置10は、検索結果を表示する。この例で、検索はインクリメンタルに行われる。すなわち、所定のイベントを契機としてステップS1〜S5の処理は繰り返し実行される。すなわち、検索クエリの生成、楽曲の検索、および結果の出力は、音声入力と並行して繰り返し行われる。
ステップS6において、端末装置10は、サーバ装置20に対し、より詳細なマッチング(検索)を要求する。ステップS7において、サーバ装置20は、編集距離に基づく部分シーケンスマッチングによる検索により、類似度の高いものから順に上位の所定数の楽曲に対し、オンセット時間差に基づいて検索結果を修正する。ステップS8において、サーバ装置20は、修正された検索結果を送信する。ステップS9において、端末装置10は、検索結果を表示する。
2−2.音声入力の受け付け
図6は、ステップS1の処理の詳細を示すフローチャートである。図6のフローは、例えば、ユーザにより音声入力の開始が指示されたことを契機として開始される。音声入力の開始の指示は、例えば、入力装置103であるタッチスクリーンを介して入力される。なお以下の説明においてクライアントプログラム等のソフトウェアを処理の主体として記載することがあるが、これは、そのソフトウェアを実行しているCPU100等のプロセッサが他のハードウェア要素と協働して処理を実行することを意味する。
ステップS11において、クライアントプログラムは、入力音声の音高が安定したか判断する。入力音声とは、入力装置103であるマイクロフォンを介して入力されたユーザの歌唱音声をいう。入力音声がユーザ(人間)の歌唱音声であるため、その音高は種々の要因によって揺らぎ不安定となる。入力音声の音高が所定の安定条件を満たした場合、クライアントプログラムは、入力音声の音高が安定したと判断する。安定条件としては、例えば、音高の揺らぎの指標がしきい値より小さくなったという条件が用いられる。音高の揺らぎの指標としては、例えば、直近の所定期間における音高の分散または最大値と最小値との差が用いられる。入力音声の音高が安定したと判断された場合(S11:YES)、クライアントプログラムは、処理をステップS12に移行する。入力音声の音高が安定していないと判断された場合(S11:NO)、クライアントプログラムは、音高が安定するまで待機する。ステップS11の処理は、音声入力部11を用いて行われる。
ステップS12において、クライアントプログラムは、音高を数値化する。ここで数値化されるのは、ステップS11において安定したと判断された範囲の音、すなわち音高が同一と考えられる範囲において単一の音である。クライアントプログラムは、数値化された音高をメモリ101に記憶する。
ステップS13において、クライアントプログラムは、新たに数値化された音と、その1つ前に数値化された音との相対的な音高の差を計算する。音高の差ΔPは、新たに数値化された音(入力音声におけるi個目の音)の音高をP[i]と表すと、
ΔP=P[i]−P[i−1] …(1)
である。
ステップS14において、クライアントプログラムは、音高の差ΔPを記号化する。例えば、音高の差は、十二平均律における音程(相対音高)を基準とした数値に、変化の方向を表す符号(+または−)を付加して表される。記号化された音高の差ΔP[i]をS[i]と表す。例えば、P[i]とP[i−1]とが同じ音高(一度)である場合、S[i]=±0である。P[i]がP[i−1]よりも短三度高い場合、S[i]=+3である。P[i]がP[i−1]よりも完全五度低い場合、S[i]=−7である。ステップS12〜S14の処理は、記号化部12により行われる。
ステップS15において、クライアントプログラムは、検索クエリを生成する。検索クエリは、音声入力が開始されてからこの時点までに検知された音高の差を、時系列に含んでいる。例えば、入力音声においてi個目の音が検知されたときは、検索クエリは、S[2]〜S[i]までの(i−1)個の音高差を示す記号を含む。ステップS15の処理は、クエリ生成部13により行われる。
図7は、入力音声における音高の差を例示する図である。この図において、縦軸は音高を、横軸は時間を表している。期間D1〜D7は、音高が安定していると判断された期間を示している。時刻t1〜t7は、期間D1〜D7のそれぞれにおいて、音高が安定したと判断された時刻(すなわち、新たな音が検知された時刻)を示している。例えば時刻t2において新たな音が検知されているが、このとき1つ前の音(期間D1の音)との、記号化された音高の差は、S[t2]=+2である。
図6のフローでは、クライアントプログラムは、新たな音が検知されたことを契機として検索クエリを生成する。したがってこの例では、クライアントプログラムは、時刻t2〜t7においてそれぞれ検索クエリを生成する。各時刻において生成される検索クエリは、音声入力が開始されてからその時点までに検知された全ての音について、1つ前の音との音高の差を記号化した情報(すなわち音高の差の順列)を含んでいる。例えば時刻t3において生成される検索クエリQ(t3)は、記号化された音高の順列として、
Q(t3)=(+2,+1) …(2)
を含んでいる。また、時刻t7において生成される検索クエリQ(t7)は、記号化された音高の差の順列として、
Q(t7)=(+2,+1,±0,−1,+1,−2) …(3)
を含んでいる。
ここで、記号化された音高の差の順列は、音長すなわち各音の時間長に関する情報を含んでいない(時間長の情報が無視されている)。新たに検知された音の音長が十六分音符に相当しようが二分音符に相当しようが、それは音高の差の順列には影響しない。ただ1つ前の音との音高の差だけが情報として記録される。また、休符も音高の差の順列には影響しない。ある音とその次の音とが連続していようが休符を挟んでいようが、記号化されれば同じである。
再び図6を参照する。ステップS16において、クライアントプログラムは、音高が不安定になったか判断する。音高が不安定かどうかの判断基準は、例えばステップS11で用いられた基準と同じものが用いられる。音高が安定していると判断された場合(S16:NO)、クライアントプログラムは、音高が不安定化するまで待機する。音高が不安定になったと判断された場合(S16:YES)、クライアントプログラムは、処理をステップS11に移行する。こうして、音声入力が継続されている限り、検索クエリの生成は継続的に繰り返し行われる。クライアントプログラムは、例えば、ユーザがタッチスクリーンを介して音声入力終了の指示を入力したことを契機として音声入力の受け付けを終了する。あるいは、クライアントプログラムは、無音の期間がしきい値時間以上継続したことを契機として音声入力の受け付けを終了してもよい。
クライアントプログラムは、新たな検索クエリを生成する度に、生成された検索クエリをサーバ装置20に送信する(ステップS2)。検索クエリが生成されてから送信されるまでに要する時間を無視すると、図7の例では、時刻t1〜t7にそれぞれ検索クエリが送信される。
2−3.楽曲の検索
具体的な動作説明に先立ち、ここではまず検索アルゴリズムの概要を説明する。検索には、編集距離に基づく部分シーケンスマッチングが用いられる。本実施形態の検索アルゴリズムの説明に先立ち、編集距離に基づく部分シーケンスマッチングについて説明する。編集距離としては、一般に知られているレーベンシュタイン(Levenshtein)距離が用いられる。レーベンシュタイン距離とは、2つの記号列がどの程度異なっているかを示す距離であり、文字の挿入、削除、および置換によって、ある記号列を別の記号列に編集するのに必要な最小手順によって表される。レーベンシュタイン距離に基づく曖昧検索は、正規表現やN-gram類似度に基づく手法等の他の手法と比較して、部分的な間違い(歌い間違い)が起こりやすい音声入力による楽曲検索に適している。
図8は、レーベンシュタイン距離を算出するための行列を例示する図である。ここでは、マッチング対象(楽曲)の記号列が「GAHCDBC」であり、検索クエリの記号列が「ABC」である例を用いる。なお式(2)および(3)では数値に正負符号を付加した記号を用いる例を用いたが、図面等を簡単にするため、以下では、音高差がアルファベット1文字に記号化される例を用いる。また、この例では、編集距離(編集コスト)は、挿入、削除、および置換についていずれも等価であり「1」である。
まず、この行列のうち第i行第j列のセル(以下、セル(j,i)という)において、マッチング対象の第j番目までの記号列の後に検索クエリの第i番目以降の記号列を付加した記号列を考える。以下、この記号列を、各セルにおける「対象記号列」という。例えばセル(1,1)においては、マッチング対象の第1番目までの記号列「G」の後に検索クエリの第1番目以降の記号列「ABC」を付加した記号列「GABC」が対象記号列である。あるいは、セル(6,2)においては、マッチング対象の第6番目までの記号列「GAHCDB」に検索クエリの第2番目以降の記号列「BC」を付加した記号列「GAHCDBBC」が対象記号列である。図8においては、各セルにおける上段に対象記号列が記載されている。
次に、各セルの対象記号列につき、検索クエリとのレーベンシュタイン距離を算出する。例えば、セル(1,1)においては、検索クエリの先頭に「G」を挿入することにより対象記号列が得られるので、編集距離は「1」である。また、セル(6,2)においては、検索クエリの先頭に「G」を挿入し、検索クエリの1文字目「A」と2文字目「B」との間に「HCDB」を挿入することにより対象記号列が得られるので、編集距離は「5」である。図8においては、このようにして算出された編集距離が各セルにおける下段に記載されている。
一般にレーベンシュタイン距離を考える場合には、記号列が一致しているときは行列において右斜め下のセルに、記号列を追加するときは右のセルに、記号列を削除するときは下のセルに、それぞれ進んでいく。行列上をこのように進んでいくことにより、編集のための最適経路が得られる(図8に矢印で示した経路)。最適経路の終着点(図8の例ではセル(7,4))に記載されている編集距離が、検索クエリの記号列とマッチング対象の記号列とのレーベンシュタイン距離である(図8の例では「4」)。しかし、この手法には主に2つの問題点がある。第1には、2つの記号列の文字数の差に依存して編集距離が大きくなる点である。例えば検索クエリと完全に一致する部分を含む2つの楽曲があったとしても、これらの楽曲の長さが異なっていれば、楽曲が長い方がレーベンシュタイン距離は大きくなる。第2には、マッチング対象の楽曲うち検索クエリと類似した部分(類似区間)の検出には不向きである点である。すなわち、行列において最適経路すなわち最小の距離を与える経路をたどっていっても、当該経路が必ずしも類似区間とは対応していない。
そこで、本実施形態においては、特許文献2および非特許文献1に関連するSPRINGという手法が用いられる。この手法においては、検索クエリの先頭および末尾の行においてレーベンシュタイン距離dがゼロに設定される。
図9は本実施形態に係るマッチング行列を例示する図である。マッチング行列は、図8で示した編集距離を算出するための行列に対応するものであり、類似区間を特定するためのものである。まず対象記号列の考え方は、図8で説明したものと同様である。ここで、図9に示すように検索クエリの先頭にマッチング対象の第j列までの記号列(検索クエリにおいて星印で表している)が付加されているので、第1行の全てのセルにおいて、検索クエリは対象記号列と等しくなり、編集距離はゼロとなる。
第2行目以降のセル(j,i)において、編集距離D(j,i)は以下のとおり算出される。
D(j,i) = d(j,i) + min[D(j-1,i-1), D(j-1,i), D(j,i-1)]
…(4)
ここで、d(j,i)は、セル(j,i)における対象記号列と、検索クエリの第(i−1)番目以降の記号列の先頭にマッチング対象の第(j−1)番目までの記号列を付加した記号列とのレーベンシュタイン距離である。例えば、セル(5,3)においては、対象記号列が「GAHCDC」であり、検索クエリの第2番目以降の記号列「BC」の先頭にマッチング対象の第4番目までの記号列「GAHC」を付加した記号列が「GAHCBC」であるので、両者を対比してd(5,3)=1である。関数minは、引数のうち最小のものを表す。すなわち、上式の右辺第2項は、対象となっているセルの左斜め上、左隣、および上隣のセルの編集距離Dのうち最小値を示している。例えば、
D(5,3) = d(5,3) + min[D(4,2), D(4,3), D(5,2)]
= 1 + min[ 1, 2, 1 ]
= 1 + 1 = 2
…(5)
である。
マッチング行列のうち最下行(図9の例では第5行)は、そのセルの左斜め上、左隣、および上隣のセルの編集距離のうち最小値を示している。このことから、マッチング行列の右下端のセルに記録されている編集距離は、そのマッチング対象のうち検索クエリと最も類似している部分の編集距離、すなわち検索クエリとの最小距離を示している。マッチング対象が検索クエリと完全に一致する部分を含んでいる場合、検索クエリとの最小距離はゼロである。この手法によれば、マッチング行列は、マッチング対象の記号列の長さに依らず検索クエリとの最小距離を出力することが保証されている。以下、楽曲において検索クエリとの最小距離を「スコア」という。スコアは、楽曲が検索クエリと類似している程度(類似度)の高低を示す指標値である。この例ではスコアがゼロに近いほど、検索クエリと類似した部分を含んでいることが示される(類似度が高い)。単に検索クエリと類似した部分を含む楽曲を検索するだけであれば、計算したマッチング行列の編集距離を全て記憶している必要はなく、楽曲毎にスコアだけを記憶しておけばよい。またこの手法によれば、最適経路(ここでは、右隣、右下、および下隣のセルのうち最小距離のセルをたどる経路。同一距離のセルが複数ある場合は「より右」かつ「より下」のセルが優先。図9に矢印で示した経路)により1つの類似区間(図9の例では類似区間r2)を特定することができる。なお、ここでは最適経路を特定するため、「より右」かつ「より下」のセルが優先である例を説明したが、これらが等価なものとして扱われてもよい。この場合、編集距離が相互に等しい複数の類似区間(図9の例では類似区間r1およびr2)が特定される可能性がある。
図10は、ステップS3の処理の詳細を示す図である。ステップS3の処理は、検索部15により行われる。ステップS31において、サーバプログラムは、端末装置10から検索クエリを受信したか判断する。新たな検索クエリを受信したと判断された場合(S31:YES)、サーバプログラムは、処理をステップS32に移行する。新たな検索クエリを受信していないと判断された場合(S31:NO)、サーバプログラムは、検索クエリを受信するまで待機する。
ステップS32において、サーバプログラムは、記憶部14に記憶されているデータベースに記憶されている楽曲の中から、マッチング対象となる一の楽曲を所定の順序に従って特定する。データベースには、各楽曲に関する情報、具体的には、その楽曲の識別子等の属性情報、およびその楽曲を再生するための楽曲データ(例えばMIDI(Musical Instrument Digital Interface)データ、リニアPCM(Pulse Code Modulation)データ等の非圧縮音声データ、またはいわゆるMP3データ等の圧縮音声データ)が含まれる。さらに、このデータベースは、楽曲のうち主旋律(例えば歌唱楽曲であればメインボーカルの旋律)を記号化したデータを含んでいる。
ステップS33において、サーバプログラムは、マッチング対象の楽曲について、マッチング行列(具体的には、各セルにおける編集距離、および当該楽曲に対する検索クエリとの最小距離(すなわちスコア))を計算する。マッチング行列の計算方法は既に説明したとおりである。マッチング行列の計算に際し、サーバプログラムは、データベースからマッチング対象の楽曲が記号化されたデータを読み出して使用する。
ステップS34において、サーバプログラムは、マッチング対象の楽曲のスコアがしきい値よりも小さいか判断する。このしきい値は例えばあらかじめ設定されている。スコアがしきい値以上であると判断された場合(S34:NO)、サーバプログラムは、計算したマッチング行列をメモリ201から消去する(ステップS35)。スコアがしきい値よりも小さいと判断された場合(S34:YES)、サーバプログラムは、処理をステップS36に移行する。
ステップS36において、サーバプログラムは、マッチング対象の楽曲の識別子およびスコアを結果テーブルに記録する。結果テーブルは、類似度が高い(スコアがしきい値より小さい)楽曲に関する情報が記録されたテーブルである。結果テーブルはさらに、各楽曲において類似区間を特定する情報を含んでいる。
ステップS37において、サーバプログラムは、データベースに記録されている全ての楽曲についてマッチング行列の計算が完了したか判断する。まだマッチング行列を計算していない楽曲があると判断された場合(S37:NO)、サーバプログラムは、処理をステップS32に移行する。ステップS32では次の楽曲が新たなマッチング対象となり、新たなマッチング対象の楽曲についてステップS33〜S36の処理が行われる。全ての楽曲についてマッチング行列の計算が完了したと判断された場合(S37:YES)、サーバプログラムは、処理をステップS4に移行する。ステップS4において、サーバプログラムは、検索クエリの送信元の端末装置10に検索結果として結果テーブルを送信する。
2−4.検索結果の表示
図11は、ステップS5において表示される検索結果を例示する図である。端末装置10のクライアントプログラムは、サーバ装置20から受信した結果テーブルを用いて検索結果を表示する。表示される検索結果は、複数の楽曲について、楽曲の識別子(この例では曲名)およびスコアを含んでいる。複数の楽曲は、類似度が高い順(スコアの値が小さい順)に並べられている。
なお検索結果の表示方法は図11の例に限定されない。例えば、楽曲の識別子およびスコアに加えて、または代えて、類似区間を特定する情報(例えば類似区間の楽譜や歌詞)が表示されてもよい。また、複数の楽曲に関する情報ではなく、スコアが最高の単一の楽曲に関する情報のみが表示されてもよい。
なお既に説明したようにステップS1〜S5の処理は繰り返し行われるので、音声入力が継続している限り、検索結果は継続的に更新されていく。音声入力が開始して間もないうちは検索クエリが短いので検索結果にノイズが含まれる可能性が高いが、音声入力を継続して検索クエリが長くなるにつれ楽曲は絞り込まれノイズが落とされていくことが期待される。
2−5.検索結果の修正
詳細なマッチングを開始するための条件が満たされると、端末装置10は、サーバ装置20に対し、より詳細なマッチング、すなわち検索結果の高精度化を要求する(ステップS6)。詳細なマッチングを開始するための条件は、例えば、音声入力が終了した、または、ユーザから詳細なマッチングの明示的な指示が入力された、という条件である。この条件が満たされると、端末装置10は、詳細なマッチングの要求(以下「高精度化要求」という)を送信する。この高精度化要求は、詳細なマッチングの要求である旨の情報、検索クエリ、対象楽曲を特定する情報、および各楽曲において類似区間を特定する情報を含んでいる。対象楽曲を特定する情報は、ステップS4で受信した結果テーブルに含まれる楽曲の少なくとも一部の楽曲の識別子を含む。少なくとも一部の楽曲とは、例えば、結果テーブルにおいて類似度の最上位から所定順位まで(具体例としては1〜10位)の楽曲である。
この高精度化要求に含まれる検索クエリは、ステップS14およびS15で生成された検索クエリとは別の情報であり、各音の音長に関する情報を含んでいる。音長に関する情報には、例えばオンセット時間差を示す情報が含まれる。オンセット時間差とは、ある音の発音が開始されてからその次の音の発音が開始されるまでの時間長をいう。以下、ステップS6において送信される検索クエリをステップS14およびS15で生成された検索クエリと区別するときは、前者を「第1検索クエリ」といい、後者を「第2検索クエリ」という。第2検索クエリは、入力音声の波形を示す非圧縮音声データまたは圧縮音声データであってもよいし、入力音声をオンセット時間差も含めて記号化したデータであってもよい。クライアントプログラムは、入力音声をデータ化して記憶しておき、記憶しているデータを用いて第2検索クエリを生成する。第1検索クエリによる検索では発音の時間長が無視されるのに対し、第2検索クエリによる検索では、発音の時間長も加味して楽曲が絞り込まれる。
図12は、ステップS7の処理の詳細を示す図である。ステップS7の処理は、修正部17により行われる。ステップS71において、サーバプログラムは、高精度化要求に含まれる対象楽曲の中から、マッチング対象となる一の楽曲を所定の順序に従って特定する。
ステップS72において、サーバプログラムは、マッチング対象の楽曲のうち第1検索クエリとの類似区間と第2検索クエリとを比較し、両者の類似度を数値化する。類似度を数値化する際には、オンセット時間差が考慮される。なお、オンセット時間差に代えて、入力音声のうち有声音の区間の時間長(すなわち音高が検出された区間の時間長)を、第2検索クエリにおいて記号化することも可能である。
図13は、類似度を算出する処理を例示する図である。ここでは、マッチング対象として2つの楽曲(楽曲1および楽曲2)を考える。図13には、楽曲1および楽曲2のうち、第1検索クエリとの類似区間の譜面のみを示している。譜面から明らかなように両者は異なる楽曲であるが、ステップS14およびS15において記号化され音長の情報が削除されると、両者は同じ記号となる。ここでは例として「ABCABC」という記号を考える。記号が同じであるので、第1段階における検索では楽曲1のスコアと楽曲2のスコアとは同点である。
図13には第2検索クエリも併せて記載している。第1検索クエリは「ABCABC」である。オンセット時間差も含めて記号化すると、第2検索クエリは例えば「A(1)B(1)C(1)A(2)B(1)C(1)」と表せる。括弧内の数字は、その前の記号の音とその1つ前の音とのオンセット時間差を表している(この例では八分音符相当の時間長が「1」)。同様に楽曲1をオンセット時間差も含めて記号化すると「A(1)B(2)C(2/3)A(2/3)B(2/3)C(2)」と表せる。楽曲2をオンセット時間差も含めて記号化すると「A(1)B(1)C(1)A(2)B(1)C(1)」と表せる。なおここでは便宜的に第1音のオンセット時間差を1とした。
サーバプログラムは、まず楽曲1と検索クエリとのオンセット時間差を計算する。ここでは、音毎にオンセット時間差の二乗を求め、これを類似区間の全ての音について積算する。例えば、楽曲1と検索クエリとのオンセット時間差ΔL(1)は、
Figure 0006794990
同様に、例えば楽曲2と検索クエリとのオンセット時間差ΔL(2)は、
ΔL(2) = 0.0 ・・・(7)
である。オンセット時間差ΔLは、その値が小さいほど検索クエリと類似していることを示している。すなわちこの例では、楽曲2の方が楽曲1より検索クエリと類似していることが分かる(すなわち楽曲2との類似度が楽曲1との類似度よりも高い)。このように、オンセット時間差ΔLは、マッチング対象の楽曲と第2検索クエリとの類似度の高低を示す第2の指標値であるといえる(これに対し、スコアは、マッチング対象の楽曲と第1検索クエリとの類似度の高低を示す第1の指標値であるといえる)。
再び図12を参照する。ステップS73において、サーバプログラムは、マッチング対象の楽曲のスコアを、ステップS72において計算されたオンセット時間差を用いて修正する。例えば、サーバプログラムは、マッチング対象の楽曲のスコアに、計算されたオンセット時間差を加算または乗算する。
ステップS74において、サーバプログラムは、高精度化要求において指定された全てのマッチング対象楽曲についてスコアの修正が完了したか判断する。まだスコアの修正が終了していない楽曲があると判断された場合(S74:NO)、サーバプログラムは、処理をステップS71に移行する。ステップS71においてサーバプログラムは新たなマッチング対象の楽曲を特定し、以下ステップS72〜S73の処理を行う。全てのマッチング対象楽曲についてスコアの修正が完了したと判断された場合(S74:YES)、サーバプログラムは、修正されたスコアの一覧を高精度化要求の送信元の端末装置10に送信する(ステップS8)。端末装置10は、検索結果を表示する(ステップS9)。ここでの結果表示は、例えばステップS5における結果表示と同様に行われる。あるいは、この結果は、この結果が最終結果である(これ以上インクリメント検索が実行されない)ことを示す情報と共に表示されてもよい。
3.適用例
次に、楽曲検索システム1をカラオケ装置に適用した例を説明する。この例では、データベースに記録されているカラオケ楽曲の中から、ユーザの歌唱音声の入力を検索クエリとして楽曲が検索される。さらに、検索により特定された楽曲は、ユーザの歌唱音声に追従するように再生される。すなわちこのカラオケ装置によれば、ユーザがある楽曲をアカペラで歌い出すと、そのメロディに適合する楽曲が検索され、ユーザの歌に追従する形でカラオケ(伴奏)が演奏される。
図14は、一実施形態に係るカラオケシステム5の構成を例示する図である。カラオケシステム5は、カラオケ装置50およびサーバ装置60を有する。カラオケ装置50は、ユーザにより選択された楽曲を演奏(再生)する装置である。サーバ装置60は、カラオケ楽曲のデータを記憶しており、また、楽曲検索サービスを提供する。カラオケ装置50およびサーバ装置60は、インターネットまたは専用線を介して通信する。
カラオケ装置50は、音声入力部11、記号化部12、クエリ生成部13、出力部16、特定部51、通信部52、および再生部53を有する。カラオケ装置50は、楽曲検索システム1における端末装置10に相当(すなわち楽曲検索装置に相当)する。音声入力部11、記号化部12、クエリ生成部13、および出力部16については既に説明したとおりである。特定部51は、ユーザの歌唱による入力音声から、その歌唱におけるテンポおよびキーを取得する。通信部52は、サーバ装置60と通信する。この例で、通信部52は、クエリ生成部13により生成された検索クエリ、および一の楽曲の要求をサーバ装置60に送信し、楽曲データをサーバ装置60から受信する。再生部53は、サーバ装置60から受信した楽曲データに従って楽曲を再生する。再生部53は、例えばスピーカおよび増幅器を含む。
サーバ装置60は、記憶部14、検索部15、修正部17、および通信部61を有する。サーバ装置60は、楽曲検索システム1におけるサーバ装置20に相当する。記憶部14、検索部15、および修正部17については既に説明したとおりである。記憶部14に記憶されているデータベースは、カラオケ楽曲のデータベースである。通信部61は、カラオケ装置50と通信する。この例で、通信部61は、検索結果および楽曲データをカラオケ装置50に送信する。
図15は、カラオケシステム5の動作の概要を示すシーケンスチャートである。ステップS100において、カラオケ装置50は、音声入力を受け付ける。ステップS200において、カラオケ装置50は、検索クエリをサーバ装置60に送信する。ステップS300において、サーバ装置60は、検索クエリと類似する部分を有する楽曲を検索する。ステップS500において、カラオケ装置50は、検索結果を表示する。なお、ステップS100〜S500の処理の詳細は、楽曲検索システム1におけるステップS1〜S9の処理と同様である。
ステップS600において、カラオケ装置50は、検索結果として得られた複数の楽曲の中から一の楽曲を選択する。楽曲はユーザの指示入力により選択されてもよいし、ユーザの明示的な指示によらずカラオケ装置50により自動的に選択(例えば類似度が最高(スコアが最小)の楽曲を自動的に選択)されてもよい。
ステップS700において、カラオケ装置50は、選択された楽曲の要求をサーバ装置60に送信する。この要求は、選択された楽曲を特定する識別子を含んでいる。サーバ装置60は、要求された楽曲の楽曲データをカラオケ装置50に送信する。ステップS800において、カラオケ装置50は、サーバ装置60から楽曲データを受信する。
ステップS900において、カラオケ装置50は、受信した楽曲データに従って、カラオケ楽曲を再生する。このとき、カラオケ装置50は、ユーザの入力音声から抽出されたテンポおよびキーでカラオケ楽曲を再生する。カラオケ装置50は、ステップS100〜S800までのいずれかのタイミングで、歌唱の入力音声から、その歌唱のテンポおよびキーを抽出する。カラオケ装置50は、カラオケ楽曲を、入力音声から抽出されたテンポおよびキーに合わせて再生する。また、カラオケ装置50は、ユーザの歌唱に追従する再生位置(再生時刻)からカラオケ楽曲を再生する。ユーザの歌唱に追従する再生位置とは、選択されたカラオケ楽曲において検索クエリとの類似区間に応じて特定される再生位置をいう。例えば、カラオケ装置50がサーバ装置60に対して検索クエリを送信してから楽曲データの送信を要求し、さらにその楽曲データの受信が完了するまでの時間差がほぼゼロであるような理想的なシステムにおいては、カラオケ装置50は、類似区間の終了時点からそのカラオケ楽曲を再生する。この時間差が無視できない程度ある場合、カラオケ装置50は、類似区間の終了時点に、この時間差の予測値を付加した時刻からそのカラオケ楽曲を再生する。
カラオケシステム5によれば、ユーザは膨大な一覧の中から所望の楽曲を検索する手間を省くことができる。さらに、カラオケシステム5によれば、ユーザのアカペラ歌唱に追従する形でカラオケ楽曲(伴奏)が再生され、新たな楽しみ方を提供することができる。
なお、例えば検索結果として得られた複数の楽曲の何れかをユーザが選択した時点で検索を終了することも可能である。例えば、検索された複数の楽曲のリストが出力部16により表示される。具体的には、複数の楽曲の楽曲名をスコアの降順で配列したリストが表示される。スコアに応じて各楽曲の表示態様(例えば表示の色またはサイズ)を相違させることも可能である。
ユーザは、自身が意図した楽曲をリストから選択可能である。出力部16は、ユーザが選択した楽曲を強調表示する。例えば、ユーザが選択した楽曲がリストの最上位に移行され、他の楽曲とは異なる表示態様で(例えば異なる色で)で表示される。以上のように楽曲が選択されると、楽曲の検索が終了し、その時点の検索結果が最終的な結果として確定する。具体的には、ユーザによる楽曲の選択を契機として検索クエリの生成および送信が終了し、以降は楽曲の検索は実行されない。
4.変形例
本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち2つ以上のものが組み合わせて用いられてもよい。
4−1.変形例1
編集距離の算出方法は実施形態で例示したものに限定されない。例えば、挿入、削除、および置換の編集コストは等価ではなく、重みが付けられていてもよい。具体的には、置換の編集コストは、置換前後の音高の差に応じて編集コストが異なっていてもよい。例えば、置換前後の音高の差が小さいほど編集コストが小さくなるように設定されていてもよい。単純なレーベンシュタイン距離のみによれば音高の差は考慮されず、検索クエリと半音ずれているときでも5音ずれているときでも編集コストすなわちスコアは同じである。しかし、この例では音高差が小さいほど編集コストが小さいので、検索クエリとの音高差が小さいほどスコアの値が小さく(類似度が高く)なり、より詳細に類似度を判定できる。あるいは、挿入よりも削除の方が編集コストの方が大きいといったように、編集の種類毎に編集コストが異なっていてもよい。
4−2.変形例2
音高差または編集の種類に応じて編集コストを異ならせる場合、過去の検索クエリの履歴に応じて編集コストが決定されてもよい。例えば、ある楽曲の特定の部分について、過去の検索クエリにおいては特定の部分の音高が実際の楽曲よりも低くなる傾向が統計的に見られる場合がある。この場合、楽曲内の特定の部分の音高と比べて検索クエリ内の当該特定の部分の音高が低い場合の方が、音高が高い場合よりも編集コストが小さくなるように設定される。あるいは検索クエリにおいて音高差が特定の条件を満たすとき(例えば、前の音と次の音で1オクターブ以上音程が上がるとき)に特定の音高のずれが発生しやすい傾向が統計的に見られる場合、この傾向に応じて編集コストが設定される。
4−3.他の変形例
検索クエリを生成する契機となるイベントは、入力音声において新たな音が検出されたことに限定されない。音声入力中に検索クエリを直近に生成してから所定の時間が経過したことを契機として、検索クエリが生成されてもよい。また、特に音声入力が開始した直後においては、記号化された入力音声のデータ量がしきい値を超えたことを契機として、検索クエリが生成されてもよい。あるいは、入力音声において新たな音高差が所定数、検出されたことを契機として検索クエリが生成されてもよい。さらに別の例で、音声入力が終了したことを契機として検索クエリが生成されてもよい。この場合、インクリメンタルな検索は行われない。
編集距離に基づく部分シーケンスマッチングを行うための検索クエリは、オンセット時間差の情報を含んでいてもよい。すなわち、記号化部12は、オンセット時間差の情報を含めて音声を記号化してもよい。また、記号化部12は、音高の差ではなく、音高そのものを記号化してもよい。この場合、検索部15が、検索クエリに含まれる音高の推移を、音高の変化の推移に変換する。
音高差を記号化する手法は実施形態で例示したものに限定されない。十二平均律などの音階における音程によらない基準により記号化されてもよい。
検索結果を高精度化する手法は実施形態で例示したものに限定されない。編集距離に基づく部分シーケンスマッチングで用いられていない情報を用いるものであれば、どのような手法が採用されてもよい。
図2に例示した楽曲検索システム1の機能の一部は省略されてもよい。例えば、修正部17の機能、すなわちオンセット時間差に基づく検索結果の修正は省略されてもよい。
修正部17が検索結果の修正を行うタイミングは実施形態で例示したものに限定されない。例えば、図5のフローにおいて、ステップS5の結果表示およびステップS6の詳細な検索要求は省略されてもよい。サーバ装置20は、楽曲の検索(ステップS3)を行うと自動的に検索結果の修正(ステップS7)を行う。すなわち、サーバ装置20は、楽曲の検索および検索結果の修正を逐次的に行う。この場合、端末装置10は、ステップS2においてオンセット時間差に関する情報をサーバ装置20に送信する。サーバ装置20は、修正された検索結果を端末装置10に送信する。
楽曲検索システム1のハードウェア構成は図3および図4に例示したものに限定されない。要求される機能を実現できるものであれば、楽曲検索システム1はどのようなハードウェア構成を有していてもよい。また、機能とハードウェア要素との対応関係は実施形態で例示したものに限定されない。例えば、端末装置10が、検索部15および修正部17に相当する機能を有していてもよい。すなわち、サーバ装置20が検索を行うのではなく、端末装置10自身が検索を行ってもよい。この場合には、取得部18は自身の検索部15が行った部分シーケンスマッチングの結果を取得する。さらに端末装置10が、記憶部14に相当する機能を有していてもよい。すなわち、端末装置10自身がデータベースを記憶していてもよい。別の例で、端末装置10ではなくサーバ装置20が、記号化部12、クエリ生成部13、および取得部18を有していてもよい。すなわち、サーバ装置20も本発明の楽曲検索装置の一例であり、サーバ装置20の取得部18は自身の検索部15が行った部分シーケンスマッチングの結果を取得する。
ステップS72における類似度の算出方法は実施形態で例示したものに限定されない。入力音声におけるオンセット時間差を記号化する際、端末装置10は、入力音声を、その長さがマッチング対象の楽曲のうち入力音声に対応する部分の長さと等しくなるように伸張(すなわち入力音声の時間長を規格化)してから記号化してもよい。この方法によれば、テンポが違う曲でも、譜割りの違いによって類似度を見分けることができる。また、類似度の指標として、検索クエリにおける音とマッチング対象の楽曲における対応する音とのオンセット時間差の二乗和(式(6))に代わり、オンセット時間差の絶対値を音の数で平均した値が用いられてもよい。音数で平均することで、音の多さに依存しないオンセット時間差を評価することができる。なお検索クエリにおける音とマッチング対象の楽曲における対応する音とのオンセット時間差に代えて、または加えて、両者における相互に対応する音の音長の差が用いられてもよい。なお音長を用いるのであれば、休符も考慮する必要がある。
入力音声のうち音高が検出されない区間を検索クエリQに反映させることも可能である。音高が検出されない区間としては、音量の不足等の理由により音高を正確に検出できない区間(無音区間)と、調波構造を持たない子音が発音されている区間(子音区間)とが想定される。
例えば、無音区間または子音区間の直前の区間aと直後の区間bとで音高が同一である場合には、区間aとその直前の区間との音高差を表す記号と、区間bとその直前に音高が検出された区間aとの音高差(すなわちゼロ)を表す記号とが、検索クエリQに個別に含められる。無音区間または子音区間を、音高がない区間として記号化することも可能である。また、高精度化要求に含まれる検索クエリでは、子音区間を、当該子音に対応する直後の母音の区間に含めて、時間長(オンセット時間差)を決定することも可能である。
楽曲検索サービスを提供するためのソフトウェア構成は実施形態で例示したものに限定されない。単一のプログラムではなく、複数のソフトウェアコンポーネントの集合体が実施形態で説明した機能を提供してもよい。
楽曲検索サービスを提供するためのプログラム(例えばクライアントプログラムおよびサーバプログラム)は、光ディスク、磁気ディスク、半導体メモリなどの記憶媒体により提供されてもよいし、インターネット等の通信回線を介してダウンロードされてもよい。
楽曲検索システム1の適用例は、カラオケシステムに限定されない。例えば、ネットワークを介した楽曲配信サービスにおける楽曲検索、または音楽プレイヤーにおける楽曲検索に楽曲検索システムが適用されてもよい。
以上の説明から、以下に述べる各態様の発明が把握される。
すなわち、本発明の一態様にかかる楽曲検索方法は、ユーザからの入力音声における音高の時間変化を記号化し、データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得する。この態様によれば、音声入力に基づいて所望の楽曲を迅速に検索することができる。
好適な態様において、前記記号化は、前記入力音声における音高の時間変化を、相対音高の差として記号化してもよい。この態様においては、相対音高(例えば十二平均律における音程)の差として入力音声が記号化されるから、入力音声における音の音高が楽曲における音の音高と相違していても、入力音声における時系列の音の音高の推移(すなわちメロディ)に適合する楽曲を検索可能となる。
好ましくは、前記記号化は、前記入力音声における音の時間長の情報は無視して記号化してもよい。この態様によれば、ユーザから入力音声における音の時間長が楽曲における対応する音の時間長と相違している場合であっても、音高が一致する楽曲を検索可能となる。
好適な態様において、上記楽曲検索方法においては、前記入力音声の受け付けと並行して当該入力音声における音高の時間変化の前記記号化を繰り返し行い、入力音声の受け付けと並行して前記部分シーケンスマッチングの結果の前記取得を繰り返し行い、さらに、前記入力音声の受け付けと並行して前記結果の出力を繰り返し行ってもよい。この態様においては、入力音声の受付と並行して入力音声の記号化および部分シーケンスマッチングの結果の取得が実行されて結果が出力されるので、入力音声の受付に追従して検索結果が更新され得る。よって、ユーザは、歌唱音声の入力途中であっても、適合する楽曲の検索結果を知ることが可能となる。
好適な態様において、前記部分シーケンスマッチングにおいて、前記クエリの音高と前記データベースに記録されている楽曲における音高との差の大小に応じて、前記編集距離を算出する際の編集コストに重み付けがされていてもよい。この態様によれば、音高の差が小さいほど編集コストが小さいので、クエリとの音高の差が小さい楽曲ほどスコアの値が小さく(類似度が高く)なり、より詳細に類似度を判定できる。
好適な態様において、前記部分シーケンスマッチングの結果は、前記複数の楽曲の各々について前記クエリとの類似度の高低を示す指標値を含み、当該楽曲検索方法は、前記部分シーケンスマッチングの結果のうち、前記指標値が示す類似度の高いものから順に上位の所定数の楽曲に対して、前記クエリに含まれる音の時間長と当該楽曲において当該検索クエリに対応する音の時間長との差に基づいて、当該結果を修正するようにしてもよい。この態様によれば、音高の時間変化に加えて音の時間長を加味するから、検索結果の精度を高めることが可能となる。
また、本発明は、以上の各態様にかかる楽曲検索方法を実行する楽曲検索装置、当該各楽曲検索方法をコンピュータに実行させるプログラム、または、当該プログラムを記録した記録媒体としても把握される。これら楽曲検索装置、プログラム、または記録媒体によれば、前述と同様の効果が奏される。楽曲検索装置は端末装置10またはサーバ装置20によって実現されてもよく、これらの装置が協働することにより実現されてもよいことは前述のとおりである。
1…楽曲検索システム、10…端末装置、11…音声入力部、12…記号化部、13…クエリ生成部、14…記憶部、15…検索部、16…出力部、17…修正部、20…サーバ装置、30…ネットワーク、100…CPU、101…メモリ、102…ストレージ、103…入力装置、104…表示装置、105…音声出力装置、106…通信IF、200…CPU、201…メモリ、202…ストレージ、206…通信IF

Claims (9)

  1. ユーザからの入力音声における音高の時間変化を、相対音高の差として記号化し、
    データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得し、
    前記部分シーケンスマッチングにおいて、前記クエリの音高と前記データベースに記録されている楽曲における音高との差の大小に応じて、前記編集距離を算出する際の編集コストに重み付けがされている
    楽曲検索方法。
  2. 前記記号化は、前記入力音声における音の時間長の情報は無視して記号化する
    ことを特徴とする請求項1に記載の楽曲検索方法。
  3. 前記入力音声の受け付けと並行して当該入力音声における音高の時間変化の記号化を繰り返し行い、
    前記入力音声の受け付けと並行して前記部分シーケンスマッチングの結果の前記取得を繰り返し行い、
    当該楽曲検索方法は、さらに、
    前記入力音声の受け付けと並行して前記結果の出力を繰り返し行う
    ことを特徴とする請求項1または2に記載の楽曲検索方法。
  4. 前記部分シーケンスマッチングの結果は、前記複数の楽曲の各々について前記クエリとの類似度の高低を示す指標値を含み、
    当該楽曲検索方法は、
    前記部分シーケンスマッチングの結果のうち、前記指標値が示す類似度が高いものから順に上位の所定数の楽曲に対して、前記クエリに含まれる音の時間長と当該楽曲において当該クエリに対応する音の時間長との差に基づいて、当該結果を修正する
    ことを特徴とする請求項1ないしのいずれか一項に記載の楽曲検索方法。
  5. ユーザからの入力音声における音高の時間変化を記号化し、
    データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得し、
    前記部分シーケンスマッチングにおいて、前記クエリの音高と前記データベースに記録されている楽曲における音高との差の大小に応じて、前記編集距離を算出する際の編集コストに重み付けがされている
    楽曲検索方法。
  6. ユーザからの入力音声における音高の時間変化を記号化し、
    データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得し、
    前記部分シーケンスマッチングの結果は、前記複数の楽曲の各々について前記クエリとの類似度の高低を示す指標値を含み、
    前記部分シーケンスマッチングの結果のうち、前記指標値が示す類似度が高いものから順に上位の所定数の楽曲に対して、前記クエリに含まれる音の時間長と当該楽曲において当該クエリに対応する音の時間長との差に基づいて、当該結果を修正する
    楽曲検索方法。
  7. ユーザからの入力音声における音高の時間変化を、相対音高の差として記号化する記号化部と、
    データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得する取得部と、
    前記部分シーケンスマッチングにおいて、前記クエリの音高と前記データベースに記録されている楽曲における音高との差の大小に応じて、前記編集距離を算出する際の編集コストに重み付けをする重み付け部と
    を有する
    楽曲検索装置。
  8. ユーザからの入力音声における音高の時間変化を記号化する記号化部と、
    データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得する取得部と
    前記部分シーケンスマッチングにおいて、前記クエリの音高と前記データベースに記録されている楽曲における音高との差の大小に応じて、前記編集距離を算出する際の編集コストに重み付けをする重み付け部と
    を有する楽曲検索装置。
  9. ユーザからの入力音声における音高の時間変化を記号化する記号化部と、
    データベースに記録された複数の楽曲に対して前記記号化された入力音声を含む記号列をクエリとして行われた、編集距離に基づく部分シーケンスマッチングの結果を取得する取得部と、
    前記部分シーケンスマッチングの結果は、前記複数の楽曲の各々について前記クエリとの類似度の高低を示す指標値を含み、
    前記部分シーケンスマッチングの結果のうち、前記指標値が示す類似度が高いものから順に上位の所定数の楽曲に対して、前記クエリに含まれる音の時間長と当該楽曲において当該クエリに対応する音の時間長との差に基づいて、当該結果を修正する修正部と
    を有する楽曲検索装置。
JP2017543101A 2015-09-30 2016-09-14 楽曲検索方法および楽曲検索装置 Active JP6794990B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015192967 2015-09-30
JP2015192967 2015-09-30
PCT/JP2016/077041 WO2017056982A1 (ja) 2015-09-30 2016-09-14 楽曲検索方法および楽曲検索装置

Publications (2)

Publication Number Publication Date
JPWO2017056982A1 JPWO2017056982A1 (ja) 2018-07-19
JP6794990B2 true JP6794990B2 (ja) 2020-12-02

Family

ID=58423604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017543101A Active JP6794990B2 (ja) 2015-09-30 2016-09-14 楽曲検索方法および楽曲検索装置

Country Status (3)

Country Link
US (1) US20180210952A1 (ja)
JP (1) JP6794990B2 (ja)
WO (1) WO2017056982A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189828A1 (en) * 2017-01-04 2018-07-05 Criteo Sa Computerized generation of music tracks to accompany display of digital video advertisements
CN106971749A (zh) * 2017-03-30 2017-07-21 联想(北京)有限公司 音频处理方法及电子设备
CN108090210A (zh) 2017-12-29 2018-05-29 广州酷狗计算机科技有限公司 搜索音频的方法和装置
CN110858224A (zh) * 2018-08-15 2020-03-03 深圳富泰宏精密工业有限公司 数字内容管理系统及方法、电子装置
US11315585B2 (en) 2019-05-22 2022-04-26 Spotify Ab Determining musical style using a variational autoencoder
US11355137B2 (en) 2019-10-08 2022-06-07 Spotify Ab Systems and methods for jointly estimating sound sources and frequencies from audio
US11366851B2 (en) * 2019-12-18 2022-06-21 Spotify Ab Karaoke query processing system
CN111339352B (zh) * 2020-01-22 2024-04-26 花瓣云科技有限公司 一种音频生成方法、装置和存储介质
CN111881179B (zh) * 2020-07-20 2024-03-01 易通星云(北京)科技发展有限公司 数据匹配方法、装置及其设备、计算机存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2897659B2 (ja) * 1994-10-31 1999-05-31 ヤマハ株式会社 カラオケ装置
US5874686A (en) * 1995-10-31 1999-02-23 Ghias; Asif U. Apparatus and method for searching a melody
US8280640B2 (en) * 2003-08-11 2012-10-02 Eloret Corporation System and method for pattern recognition in sequential data
JP4872079B2 (ja) * 2006-05-19 2012-02-08 国立大学法人長岡技術科学大学 文章更新量評価プログラム
EP2122443A4 (en) * 2007-01-03 2013-01-23 Kannuu Pty Ltd METHOD AND DEVICE FOR SELECTION OF AN OBJECT FROM A DATABASE
CN102610222B (zh) * 2007-02-01 2014-08-20 缪斯亚米有限公司 音乐转录的方法,系统和装置
US7754955B2 (en) * 2007-11-02 2010-07-13 Mark Patrick Egan Virtual reality composer platform system
JP5678686B2 (ja) * 2011-01-25 2015-03-04 ヤマハ株式会社 端末装置、プログラムおよび楽曲検索方法
US9418152B2 (en) * 2011-02-09 2016-08-16 Nice-Systems Ltd. System and method for flexible speech to text search mechanism
JP5982980B2 (ja) * 2011-04-21 2016-08-31 ヤマハ株式会社 楽音発生パターンを示すクエリーを用いて演奏データの検索を行う装置、方法および記憶媒体
US9916538B2 (en) * 2012-09-15 2018-03-13 Z Advanced Computing, Inc. Method and system for feature detection
JP6056437B2 (ja) * 2011-12-09 2017-01-11 ヤマハ株式会社 音データ処理装置及びプログラム
JP6176055B2 (ja) * 2013-10-21 2017-08-09 富士通株式会社 音声検索装置及び音声検索方法

Also Published As

Publication number Publication date
WO2017056982A1 (ja) 2017-04-06
US20180210952A1 (en) 2018-07-26
JPWO2017056982A1 (ja) 2018-07-19

Similar Documents

Publication Publication Date Title
JP6794990B2 (ja) 楽曲検索方法および楽曲検索装置
JP5697860B2 (ja) 情報検索装置,情報検索方法及びナビゲーションシステム
US9117432B2 (en) Apparatus and method for detecting chord
US7488886B2 (en) Music information retrieval using a 3D search algorithm
JP2002055692A (ja) 音声出力のためのメッセージの構成方法
JP5326169B2 (ja) 音声データ検索システム及び音声データ検索方法
JPH1115468A (ja) 楽曲検索方法、楽曲検索装置、楽曲検索システム、及び記録媒体
JP2016033662A (ja) ターゲット文字列の推定
JP3597735B2 (ja) 音楽検索装置,音楽検索方法および音楽検索プログラムを記録した記録媒体
WO2019180830A1 (ja) 歌唱評価方法及び装置、プログラム
JP2002055695A (ja) 音楽検索システム
JPH11184467A (ja) 楽曲検索システム、楽曲検索方法及び記録媒体
JP2003131674A (ja) 楽曲検索システム
JP2015060200A (ja) 演奏データファイル調整装置、方法、およびプログラム
KR101546331B1 (ko) 음계를 이용한 음악 재생 방법 및 이를 이용한 음악 재생 장치
JPH08160975A (ja) カラオケ選曲装置
JP6459162B2 (ja) 演奏データとオーディオデータの同期装置、方法、およびプログラム
KR102605589B1 (ko) 음계를 이용한 음악 재생 방법 및 이를 이용한 음악 재생 장치
JP6439239B2 (ja) 演奏データファイル検索方法、システム、プログラム、端末装置、およびサーバ装置
KR101395135B1 (ko) 음악검색방법
JP4447540B2 (ja) カラオケ唱歌録音作品の鑑賞システム
KR20040101592A (ko) 멜로디 질의 기반 음악 검색 방법
JP6424907B2 (ja) 演奏情報検索方法を実現するためのプログラム、当該演奏情報検索方法および演奏情報検索装置
JP6842356B2 (ja) カラオケ装置
JP2022085723A (ja) カラオケ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200708

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200902

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20200902

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20200908

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20200915

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201013

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201026

R151 Written notification of patent or utility model registration

Ref document number: 6794990

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151