(57)【要約】  音声データ検索装置（１０）は、音声データベース（１）、音声認識部（２）、コンフュージョンネットワーク生成部（３）、転置索引テーブル生成部（４）、クエリ入力部（６）、クエリ変換部（７）、ラベル列照合部（８）を備える。音声認識部（２）は、音声データベース（１）から音声データを読み出し、読み出された音声データに対して音声認識処理を実行して、音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力する。コンフュージョンネットワーク生成部（３）は、出力されたラティスに基づいてコンフュージョンネットワークを生成して、音声認識処理の結果をコンフュージョンネットワークとして出力する。転置索引テーブル生成部（４）は、出力されたコンフュージョンネットワークに基づいて転置索引テーブルを生成する。クエリ入力部（６）は、ユーザにより入力されたクエリを受け付けて、受け付けたクエリに対して音声認識処理を実行して、音声認識処理の結果を文字列として出力する。クエリ変換部（７）は、出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換する。ラベル列照合部（８）は、ラベル列を転置索引テーブルと照合して、ラベル列と音声データベースの両方に含まれる音声データを検索する。
2010522923.tif 000002
【特許請求の範囲】
【請求項１】
複数の音声データを記憶する音声データベースと、
前記音声データベースから音声データを読み出し、前記読み出された音声データに対して音声認識処理を実行して、前記音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力する音声認識部と、
前記音声認識部から出力されたラティスに基づいてコンフュージョンネットワークを生成して、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力するコンフュージョンネットワーク生成部と、
前記コンフュージョンネットワーク生成部から出力された前記コンフュージョンネットワークに基づいて転置索引テーブルを生成する転置索引テーブル生成部と、
ユーザにより入力されたクエリを受け付けて、前記受け付けたクエリに対して音声認識処理を実行して、音声認識処理の結果を文字列として出力するクエリ入力部と、
前記クエリ入力部から出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換するクエリ変換部と、
前記クエリ変換部から読み出したラベル列を前記転置索引テーブル生成部から読み出した転置索引テーブルと照合して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索して、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力するラベル列照合部と、
を備えることを特徴とする音声データ検索装置。
【請求項２】
前記ラベル列照合部は、前記転置索引テーブルを参照して、前記ラベル列に含まれる１つ以上のラベルに割り当てられた１つ以上のアークによって構成される部分コンフュージョンネットワークを生成し、前記ラベル列を１次元配列のグラフで表し、自身のノードに戻るアークを前記１次元配列のグラフの各ノードに付与してクエリのグラフを生成し、前記部分コンフュージョンネットワークと前記クエリのグラフとの間でインターセクションを計算することを特徴とする請求項１に記載の音声データ検索装置。
【請求項３】
複数の音声データを記憶する音声データベースと、
２つ以上の音声認識部と、
各音声認識部は、前記音声データベースから音声データを読み出し、前記読み出された音声データに対して音声認識処理を実行して、前記音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力し、
ある音声認識部から出力されるあるラティスの基本単位は、他の音声認識部から出力される他のラティスの基本単位とは異なり、
前記２つ以上の音声認識部にそれぞれ接続された２つ以上のコンフュージョンネットワーク生成部と、
各コンフュージョンネットワーク生成部は、前記各音声認識部から出力されたラティスに基づいてコンフュージョンネットワークを生成して、前記音声認識処理の結果をコンフュージョンネットワークとして出力し、
前記２つ以上のコンフュージョンネットワーク生成部にそれぞれ接続された２つ以上の転置索引テーブル生成部と、
各転置索引テーブル生成部は、前記各コンフュージョンネットワーク生成部から出力された前記コンフュージョンネットワークに基づいて転置索引テーブルを生成し、
ユーザにより入力されたクエリを受け付けて、前記受け付けたクエリに対して音声認識処理を実行して、音声認識処理の結果を文字列として出力するクエリ入力部と、
２つ以上のクエリ変換部と、
各クエリ変換部は、前記クエリ入力部から出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換し、
あるクエリ変換部で変換されるあるラベル列の基本単位は、他のクエリ変換部で変換される他のラベル列の基本単位とは異なり、
前記２つ以上の転置索引テーブル生成部及び前記２つ以上のクエリ変換部にそれぞれ接続された２つ以上のラベル列照合部と、
各ラベル列照合部は、前記各クエリ変換部から読み出したラベル列を前記各転置索引テーブル生成部から読み出した転置索引テーブルと照合して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索し、
前記２つ以上のラベル列照合部から検索結果を読み出して、前記読み出された検索結果を統合して検索結果リストを生成して、前記検索結果リストに含まれる音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力する前記検索結果統合部と、
を備えることを特徴とする音声データ検索装置。
【請求項４】
複数の音声データを記憶する音声データベースと、
２つ以上の音声認識部と、
各音声認識部は、前記音声データベースから音声データを読み出し、前記読み出された音声データに対して音声認識処理を実行して、前記音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力し、
ある音声認識部から出力されるあるラティスの基本単位は、他の音声認識部から出力される他のラティスの基本単位とは異なり、
前記２つ以上の音声認識部にそれぞれ接続された２つ以上のコンフュージョンネットワーク生成部と、
各コンフュージョンネットワーク生成部は、前記各音声認識部から出力されたラティスに基づいてコンフュージョンネットワークに生成して、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力し、
前記２つ以上のコンフュージョンネットワーク生成部から出力されたコンフュージョンネットワークを結合して、結合ネットワーク生成し、前記結合ネットワークを出力するコンフュージョンネットワーク結合部と、
前記コンフュージョンネットワーク結合部から出力された結合ネットワークに基づいて転置索引テーブルを生成する転置索引テーブル生成部と、
ユーザにより入力されたクエリを受け付けて、前記受け付けたクエリに対して音声認識処理を実行して、音声認識処理の結果を文字列として出力するクエリ入力部と、
前記クエリ入力部から出力された文字列を、音素、音節、及び単語のうち２つ以上を基本単位とするラベル列に変換するクエリ変換部と、
前記クエリ変換部から読み出したラベル列を前記転置索引テーブル生成部から読み出した転置索引テーブルと照合して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索して、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力するラベル列照合部と、
を備えることを特徴とする音声データ検索装置。
【請求項５】
複数の音声データを記憶した音声データベースから音声データを読み出し、
前記読み出された音声データに対して音声認識処理を実行し、
前記音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力し、
前記出力されたラティスに基づいてコンフュージョンネットワークに生成し、
前記音声認識処理の結果を前記コンフュージョンネットワークとして出力し、
前記出力されたコンフュージョンネットワークに基づいて転置索引テーブルを生成し、
ユーザにより入力されたクエリを受け付けて、
前記受け付けたクエリに対して音声認識処理を実行し、
音声認識処理の結果を文字列として出力し、
前記出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換し、
前記ラベル列を前記転置索引テーブルと照合し、
前記ラベル列と前記音声データベースの両方に含まれる音声データを検索し、
前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力することを特徴とする音声データ検索方法。
【請求項６】
コンピュータに対して、複数の音声データを記憶した音声データベースから音声データを読み出させる第１音声データ検索プログラムコードと、
前記コンピュータに対して、前記読み出された音声データに対して音声認識処理を実行させる第２音声データ検索プログラムコードと、
前記コンピュータに対して、音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力させる第３音声データ検索プログラムコードと、
前記コンピュータに対して、前記出力されたラティスに基づいてコンフュージョンネットワークに生成させる第４音声データ検索プログラムコードと、
前記コンピュータに対して、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力させる第５音声データ検索プログラムコードと、
前記コンピュータに対して、前記出力されたコンフュージョンネットワークに基づいて転置索引テーブルを生成させる第６音声データ検索プログラムコードと、
前記コンピュータに対して、ユーザにより入力されたクエリを受け付けさせる第７音声データ検索プログラムコードと、
前記コンピュータに対して、前記受け付けたクエリに対して音声認識処理を実行させる第８音声データ検索プログラムコードと、
前記コンピュータに対して、音声認識処理の結果を文字列として出力させる第９音声データ検索プログラムコードと、
前記コンピュータに対して、前記出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換させる第１０音声データ検索プログラムコードと、
前記コンピュータに対して、前記ラベル列を前記転置索引テーブルと照合させる第１１音声データ検索プログラムコードと、
前記コンピュータに対して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索させる第１２音声データ検索プログラムコードと、
前記コンピュータに対して、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力させる第１３音声データ検索プログラムコードと、
を備えることを特徴とする音声データ検索プログラム。
【請求項７】
コンピュータが読み取り可能な音声データ検索プログラムを内蔵する前記コンピュータが使用可能な媒体であって、前記音声データ検索プログラムは、
コンピュータに対して、複数の音声データを記憶した音声データベースから音声データを読み出させる第１音声データ検索プログラムコードと、
前記コンピュータに対して、前記読み出された音声データに対して音声認識処理を実行させる第２音声データ検索プログラムコードと、
前記コンピュータに対して、音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力させる第３音声データ検索プログラムコードと、
前記コンピュータに対して、前記出力されたラティスに基づいてコンフュージョンネットワークに生成させる第４音声データ検索プログラムコードと、
前記コンピュータに対して、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力させる第５音声データ検索プログラムコードと、
前記コンピュータに対して、前記出力されたコンフュージョンネットワークに基づいて転置索引テーブルを生成させる第６音声データ検索プログラムコードと、
前記コンピュータに対して、ユーザにより入力されたクエリを受け付けさせる第７音声データ検索プログラムコードと、
前記コンピュータに対して、前記受け付けたクエリに対して音声認識処理を実行させる第８音声データ検索プログラムコードと、
前記コンピュータに対して、音声認識処理の結果を文字列として出力させる第９音声データ検索プログラムコードと、
前記コンピュータに対して、前記出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換させる第１０音声データ検索プログラムコードと、
前記コンピュータに対して、前記ラベル列を前記転置索引テーブルと照合させる第１１音声データ検索プログラムコードと、
前記コンピュータに対して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索させる第１２音声データ検索プログラムコードと、
前記コンピュータに対して、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力させる第１３音声データ検索プログラムコードと、
を備えることを特徴とする媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声データベースに登録された複数の音声データから、ユーザから入力されたクエリに対応する音声データを検索する、音声データ検索装置、音声データ検索方法、音声データ検索プログラム、及びコンピュータが読取可能な音声データ検索プログラムを内蔵したコンピュータが使用可能な媒体に関する。
【背景技術】
【０００２】
テキストを検索する方法の１つとして、転置索引テーブルを構築する方法が従来から知られている。単語を検索単位とする場合、転置索引テーブルは次のステップで構築される：（１）検索対象の単語を含んだ１つ以上の文書に割り当てられた1つ以上の文書ＩＤ番号が検索対象の単語に対応付けられる；（２）検索対象の単語と１つ以上の文書ＩＤ番号のリストの組がデータベースに記録される。転置索引テーブルが音声データ検索装置に予め記憶されている場合、ユーザが、クエリとして、ある検索対象の単語を音声データ検索装置に入力すると、音声データ検索装置は、転置索引テーブルを参照して、入力された検索対象の単語を含んだ１つ以上の文書に割り当てられた１つ以上の文書ＩＤ番号を瞬時に取得して、当該１つ以上の文書ＩＤ番号をユーザに提示することができる。
【０００３】
図１に示すように、転置索引テーブルは複数のデータ組からなる。各データ組は単語と文書ＩＤ番号のリストを含む。例えば、単語“Osaka”は２つの文書“２”，“８”に含まれている。
【０００４】
ユーザが、クエリとして、ある単語列を音声データ検索装置に入力すると、音声データ検索装置は、入力された単語列を複数の単語に分割して、全ての単語を含んだ１つ以上の文書に割り当てられた１つ以上の文書ＩＤ番号を検索する。それから、音声データ検索装置は、単語間の隣接性を確認するために、転置索引テーブルを参照して、入力された単語列中の単語の配列どおりに単語が並んでいる１つ以上の文書に割り当てられた1つ以上の文書ＩＤ番号を取得して、当該１つ以上の文書ＩＤ番号をユーザに提示する。なお、音声データ検索装置が単語間の隣接性を簡単に確認するために、文書ＩＤ番号と一緒に、検索対象の単語列における各単語の出現位置を、転置索引テーブルに記録してもよい。
【０００５】
図２に示すように、転置索引テーブルは複数のデータ組からなる。各データ組は、単語と、文書ＩＤ番号と単語の出現位置の組とを含む。例えば、単語“Osaka”は文書“２”の１１番目と文書“８”の１４番目に出現している。単語列“Tokyo Osaka”を含んだ１つ以上の文書を検索する場合、音声データ検索装置は、転置索引テーブルを参照して、“Tokyo”と“Osaka”の両単語を含んだ１つ以上の文書を検索して、各検索された文書に対して、単語“Tokyo”の出現位置が単語“Osaka”の出現位置に隣接するか否かを照合する。具体的には、音声データ検索装置は、転置索引テーブルを参照して、“Tokyo”と“Osaka”の両単語を含んだ文書“２”，“８”を検索する。そして、音声データ検索装置は、文書“２”では、単語“Tokyo”は１０番目に出現し、かつ、単語“Osaka”は１１番目に出現し、文書“８”では、単語“Tokyo”は１６番目に出現し、かつ、単語“Osaka”は１４番目に出現していることから、単語列“Tokyo Osaka”を含んだ文書は文書“２”であると判断する。
【０００６】
非特許文献１（M. Saraclar and R. Sproat “Lattice-Based Search for Spoken Utterance Retrieval” Proc. HLT-NAACL, 2004) は、転置索引テーブルを使用して、音声データを検索する方法を開示している。具体的には、非特許文献１は、音声データを高速で検索するために、音声認識の結果として生成された発話のラティスを用いて、転置索引テーブルを構築する方法を記述している。この方法では、検索対象の単語を含んだ文書として、発話が仮定されている。もちろん、この方法では、単語を検索単位と設定する代わりに、音素又は音節を検索単位と設定してもよい。
【０００７】
ラティスは、発話された文を構成する可能性のある１つ以上の単語、音素、又は音節を、有向グラフとして表現したグラフである（図３参照）。なお、図３に示した、数字“０”乃至“１１”はノード番号を表しており、アーク“Ａ”乃至“Ｊ”は、単語、音素、又は音節などのアークのラベルを表している。左端の開始ノードから右端の終了ノードまでの１つの経路上の複数のアークにそれぞれ割り当てられた複数のラベルの系列が、音声認識の結果として生成された、発話された文の１つの仮説を表す。各アークには、ラベルの他に、そのラベルの尤もらしさを表す重みと、そのラベルに対応する音声区間の開始時刻と終了時刻が付与される。図３に示したラティスは、図４に示すような表形式のデータとして、音声データ検索装置に記憶される。図４に示した表は、図３に示したラティスのノードとアークの結合関係を表している。
【０００８】
非特許文献１の方法では、音声データ検索装置は、ラベルと、そのラベルに対応する全てのアークのリストとの組を含んだ転置索引テーブルを構築する（図５参照）。例えば、音声データ検索装置は、アークeがラティスに存在する場合、データ組(id[e], k[e], n[e], p(e|k[e]), f(k[e])) を転置索引テーブルのラベルl[e]に対応するアークのリストに記録する。ここで、id[e]はアークeが含まれるラティスに割り当てられた発話ID番号、k[e]はアークeの前に位置する先行ノードの番号、n[e]はアークeの後に位置する後続ノードの番号、p(e|k[e])はノードk[e]から出て行く複数のアークからアークeが選ばれる確率、f(k[e])はラティスの全ての経路にノードk[e]が出現する確率をそれぞれ表す。
【０００９】
確率p(e|k[e])及びf(k[e])の値は、ラティス内のアークの重みに基づいて計算される。ラティスの一方のノードから他方のノードへの経路に対する重みを、その経路上に存在する複数のアークの重みの積によって与える場合、確率f(k[e])の値は、ラティスの始端ノードからノードk[e]を経由して終端ノードへ到る複数の経路の重みの総和を、ラティスの始端ノードから終端ノードへ到る全ての経路の重みの総和で割ることで求められる。確率p(e|k[e])の値は、ノードk[e]からアークeを通って終端ノードまで到る複数の経路の重みの総和を、ノードk[e]から終端ノードに到る全ての経路の重みの総和で割ることで求められる。
【００１０】
重み付き非巡回有向グラフにおいて、グラフの始端ノードから任意のノードvに到る全ての経路の重みの総和α(v)はForwardアルゴリズムによって効率的に求められる。グラフの任意のノードvから終端ノードに到る全ての経路の重みの総和β(v)はBackwardアルゴリズムによって効率的に求められる。
【００１１】
最初に、Forwardアルゴリズムを説明する。音声データ検索装置は、Forwardアルゴリズムに従って、グラフGの始端ノードから任意のノードvに至る全ての経路の重みの総和α(v)を求めると同時に、グラフGの始端ノードから終端ノードに至る全ての経路の重みの総和αも求める。Forwardアルゴリズムは、次のとおりである。
【００１２】
Forward (G)
1  S←I
2  Q←I
3  for each q∈I do
4        α(q)=1
5  while S≠Φ do
6       q←HEAD(S)
7       DEQUEUE(S)  
8               for each e∈E[q] do
9                 α(n[e])←α(n[e])+f(q)*w(e)
10               If not n[e]∈Q then
11                Q←Q∪{n[e]}
12                        ENQUEUE(S, n[e])
13  α←0
14  for each q∈F do
15      α←α+α(q)
ここで、グラフGは、ノードの集合V、アークの集合E、始端ノードの集合I、終端ノードの集合Fを有し、アークの集合E(v)はノードvから出て行くアークの集合、k[e]はアークeの先行ノード、n[e]はアークeの後続ノード、l[e]はアークeのラベル、w[e]はアークeの重み、HEAD(S)は待ち行列Sの先頭の要素を返す関数、DEQUEUE(S)は待ち行列Sの先頭の要素を削除する関数、ENQUEUE(S, x)は待ち行列Sの最後に要素xを挿入する関数である。
【００１３】
次に、Backwardアルゴリズムを説明する。音声データ検索装置は、Backwardアルゴリズムに従って、グラフGの任意のノードvから後続ノードに至る全ての経路の重みの総和β(v)を求めると同時に、グラフGの始端ノードから終端ノードに至る全ての経路の重みの総和βも求める。Backwardアルゴリズムは、次のとおりである。
【００１４】
Backward (G)
1  S←F
2  Q←F
3  for each q∈F do
4      β(q)=1
5  while S≠Φ do
6     q←HEAD(S)
7     DEQUEUE(S)    
8     for each e∈H[q] do
9              β(k[e])←β(k[e])+w(e)*β(q)
10            if not k[e]∈Q then
11                    Q←Q∪{k[e]}
12            ENQUEUE(S, k[e])
13  β←0
14  for each q∈I do
15     β←β+β(q)
ここで、グラフGは、ノードの集合V、アークの集合H、始端ノードの集合I、終端ノードの集合Fを有し、アークの集合H(v)はノードvに入ってくるアークの集合、k[e]はアークeの先行ノード、n[e]はアークeの後続ノード、l[e]はアークeのラベル、w[e]はアークeの重み、HEAD(S)は待ち行列Sの先頭の要素を返す関数、DEQUEUE(S)は待ち行列Sの先頭の要素を削除する関数、ENQUEUE(S, x)は待ち行列Sの最後に要素xを挿入する関数である。
【００１５】
このように、始端ノードからノードk[e]を経由して終端ノードへ到る複数の経路の重みの総和はα(k[e])×β(k[e])で与えられる。始端ノードから終端ノードへ到る全ての経路の重みの総和はβ(始端ノード)で与えられる。ノードk[e]からアークeを通って終端ノードに到る複数の経路の重みの総和はw[e]×β(n[e])で与えられる。ノードk[e]から終端ノードに到る全ての経路の重みの総和はβ(k[e])で与えられる。それゆえ、上述の値を用いて、確率p(e|k[e])及びf(k[e])の値は次の式に従って計算される。
【００１６】
f(k[e])= α(k[e])×β(k[e])／β(始端ノード)
p(e|k[e])= w[e]×β(n[e])／β(k[e])
ある発話のラティスにおいて、クエリのラベル列L1,L2,…,LMに対応するアーク列e1,e2,…,eMが見付かると、出現確率は次の式に従って計算される。
【００１７】
P(e1,e2,…,eM)=f(k[e1])×p(e1|k[e1])×p(e2|k[e2])×・・・×p(eM|k[eM])
出現確率P(e1,e2,…,eM)は、ノードk[e1]が出現し、かつ、アーク列e1,e2,…,eMが、k[e1]からアークe1を通り、k[e2]からアークe2を通り、…、k [eM]からアークeMを通る確率である。ただし、アーク列e1,e2,…,eMにおいて、n[em-1]はk[em]であり、l[em]はLmである(1≦m≦M)。ある発話のラティスにおいて、クエリのラベル列に対応する全てのアーク列の出現確率の総和は、その発話におけるクエリのラベル列の出現確率になる。
【００１８】
音声データ検索装置は、あるクエリのラベル列に対応するアーク列を検索する処理において、発話ＩＤ番号のリストの各発話ＩＤ番号を、その各発話ＩＤ番号に関連付けられた発話における、クエリのラベル列に対応するアーク列の出現確率に付与して、付与された出現確率を基準にして、発話ＩＤ番号のリストをソートしても良い。また、音声データ検索装置は、相対的に低い出現確率が付与された発話の発話ＩＤ番号を発話ＩＤ番号のリストから削除しても良い。
【００１９】
次に、図６を参照して、検索対象とする全ての発話に対して、Ｎ個のラティスG1,…,GNに基づいて転置索引テーブルを構築する方法を説明する。
【００２０】
ステップＳ１において、音声データ検索装置は、引数i, j に１を代入する。ステップＳ２において、音声データ検索装置は、Forwardアルゴリズムに従って、ラティスGiに含まれるアークejの始端ノードから先行ノードk[ej]に至る全ての経路の重みの総和α(k[ej])を求め、かつ、Backwardアルゴリズムに従って、ラティスGiの先行ノードk[ej]から終端ノードに至る全ての経路の重みの総和β(k[ej])を求める。ステップＳ３において、音声データ検索装置は、ラティスGiに含まれるアークejについて、データ組(id[ej], k[ej], n[ej], p(ej|k[ej]), f(k[ej]))を求める。ステップＳ４において、音声データ検索装置は、データ組(id[ej], k[ej], n[ej], p(ej|k[ej]), f(k[ej]))を、ラティスGiの転置索引テーブルのラベルl[ej]に対応付けられたアークのリストE(l[ej])に記録する。ステップＳ５において、音声データ検索装置は、引数jの値がラティスGiに含まれるアークの総数Mに等しいか否かを判断する。引数jの値がアークの総数Mに等しくない場合には、音声データ検索装置はステップＳ６の処理を行う。引数jの値がアークの総数Mに等しい場合には、音声データ検索装置はステップＳ７の処理を行う。ステップＳ６において、音声データ検索装置は、引数jの値を１つ増加させて、ステップＳ２の処理に戻る。ステップＳ７において、音声データ検索装置は、引数iの値がラティスの総数Nに等しいか否かを判断する。引数iの値がラティスの総数Nに等しくない場合には、音声データ検索装置はステップＳ８の処理を行う。引数iの値がラティスの総数Nに等しい場合には、音声データ検索装置は一連の処理を終了する。ステップＳ８において、音声データ検索装置は、引数iの値を１つ増加させて、引数jに１を代入して、ステップＳ２の処理に戻る。
【００２１】
上述の方法に従って、音声データ検索装置は、例えば、図３に示したラティスから、図５に示した転置索引テーブルを構築する。
【００２２】
次に、図７及び８を参照して、ラティスG1,…,GN に対して、クエリのラベル列L1,…,LMに一致するアーク列を含む１つ以上のラティスに割り当てられた１つ以上の発話ＩＤ番号のリストを、転置索引テーブルから効率的に検索する方法を説明する。最初に、図７を参照して、クエリのラベル列L1,…,LMを構成する全てのラベルを含む１つ以上のラティスを検索し、検索された１つ以上のラティスに割り当てられた１つ以上の発話ＩＤ番号のリストを求める方法を説明する。なお、この方法では、ラベルの出現順序は考慮されていない。
【００２３】
ステップＳ１１において、音声データ検索装置は、引数i, j, k に１，１，２を代入する。ステップＳ１２において、音声データ検索装置は、ラベルLiについて、転置索引テーブルからアークのリストE(Li)を取得する。ステップＳ１３において、音声データ検索装置は、アークのリストE(Li)から、j番目のデータ組に含まれるアークejに対応付けられた発話ＩＤ番号id[ej]を読み込み、リストRij(1≦j≦S：SはアークのリストE(Li)に含まれるデータ組の総数)に記録する。なお、音声データ検索装置は、リストRijの中で重複した発話ＩＤ番号を削除する。ステップＳ１４において、音声データ検索装置は、引数jの値が、アークのリストE(Li)に含まれるデータ組の総数Sに等しいか否かを判断する。引数jの値がデータ組の総数Sに等しくない場合には、音声データ検索装置はステップＳ１５の処理を行う。引数jの値がデータ組の総数Sに等しい場合には、音声データ検索装置はステップＳ１６の処理を行う。ステップＳ１５において、音声データ検索装置は、引数jの値を１つ増加させて、ステップＳ１３の処理に戻る。ステップＳ１６において、音声データ検索装置は、引数iの値がラベルの総数Mに等しいか否かを判断する。引数iの値がラベルの総数Mに等しくない場合には、音声データ検索装置はステップＳ１７の処理を行う。引数iの値がラベルの総数Mに等しい場合には、音声データ検索装置はステップＳ１８の処理を行う。ステップＳ１７において、音声データ検索装置は、引数iの値を１つ増加させて、引数jに１を代入して、ステップＳ１２の処理に戻る。
【００２４】
ステップＳ１８において、音声データ検索装置は、リストR1j (1≦j≦S) に記録された１つ以上の発話ＩＤ番号を出力リストCに記録する。ステップＳ１９において、音声データ検索装置は、引数iの値が１であるか否かを判断する。引数iの値が１である場合には、音声データ検索装置は一連の処理を終了する。引数iの値が１でない場合には、音声データ検索装置はステップＳ２０の処理を行う。ステップＳ２０において、音声データ検索装置は、リストRkj (1≦j≦S) において、出力リストCに含まれる１つ以上の発話ＩＤ番号に一致する１つ以上の発話ＩＤ番号が存在するか否かを判断する。出力リストCに含まれる１つ以上の発話ＩＤ番号に一致する１つ以上の発話ＩＤ番号が存在しない場合には、音声データ検索装置はステップＳ２１の処理を行う。出力リストCに含まれる１つ以上の発話ＩＤ番号に一致する１つ以上の発話ＩＤ番号が存在する場合には、音声データ検索装置はステップＳ２２の処理を行う。ステップＳ２１において、音声データ検索装置は、出力リストCの中身を空にして、一連の処理を終了する。ステップＳ２２において、音声データ検索装置は、出力リストCから、リストRkjに含まれるいずれの発話ＩＤ番号とも一致しない発話ＩＤ番号を削除する。ステップＳ２３において、音声データ検索装置は、引数kの値がラベルの総数Mに等しいか否かを判断する。引数kの値がラベルの総数Mに等しくない場合には、音声データ検索装置はステップＳ２４の処理を行う。引数kの値がラベルの総数Mに等しい場合には、音声データ検索装置は一連の処理を終了する。ステップＳ２４において、音声データ検索装置は、引数kの値を１つ増加させて、ステップＳ２０の処理に戻る。
【００２５】
次に、図８を参照して、図７に示した手順に従って検索されたラベルの出現順序が、クエリのラベル列L1,…,LMを構成する全てのラベルを含むラティスの各々ごとに、クエリのラベルの出現順序に一致するか否かを判断する方法を説明する。なお、この方法では、ラベルの出現順序がクエリのラベルの出現順序に一致する結果として取得されるアーク列の出現確率の総和も同時に求められる。具体的には、この方法は、このようなアーク列が存在しない場合には、出現確率の総和は０になることを利用している。
【００２６】
ステップＳ３１において、音声データ検索装置は、引数i, j, mに１，１，１を代入する。ステップＳ３２において、音声データ検索装置は、出力リストＣに含まれる発話ＩＤ番号に対して、“１”から順に割り当てられた登録番号jに対応するアークのリストEj(Li)を出力リストＣから読み込む。ステップＳ３３において、音声データ検索装置は、引数iの値がラベルの総数Mに等しいか否かを判断する。引数iの値がラベルの総数Mに等しくない場合には、音声データ検索装置はステップＳ３４の処理を行う。引数iの値がラベルの総数Mに等しい場合には、音声データ検索装置はステップＳ３５の処理を行う。ステップＳ３４において、音声データ検索装置は、引数iの値を１つ増加させて、ステップＳ３２の処理に戻る。ステップＳ３５において、音声データ検索装置は、アークのリストEj(Lm)の各データ組に含まれるアークejmに対して、
【数１】
2010522923.tif 000003
【００２７】
を計算する。ステップＳ３６において、音声データ検索装置は、引数mの値がラベルの総数Mに等しいか否かを判断する。引数mの値がラベルの総数Mに等しい場合には、音声データ検索装置はステップＳ３７の処理を行う。引数mの値がラベルの総数Mに等しくない場合には、音声データ検索装置はステップＳ３９の処理を行う。ステップＳ３７において、音声データ検索装置は、引数jの値が登録番号の最大値Ｔに等しいか否かを判断する。引数ｊの値が登録番号の最大値Ｔに等しくない場合には、音声データ検索装置はステップＳ３８の処理を行う。引数jの値が登録番号の最大値Ｔに等しい場合には、音声データ検索装置はステップＳ４２の処理を行う。ステップＳ３８において、音声データ検索装置は、引数jの値を１つ増加させて、ステップＳ３２の処理に戻る。ステップＳ３９において、音声データ検索装置は引数mの値を１つ増加させる。ステップＳ４０において、音声データ検索装置は、アークのリストEj(Lm)の各データ組に含まれるアークejmに対して、
【数２】
2010522923.tif 000004
【００２８】
を計算する。ただし、Fm-1が未計算の場合には、音声データ検索装置はFm-1(e)=0として上述の式を計算する。ステップＳ４１において、音声データ検索装置は、引数mの値がラベルの総数Mに等しいか否かを判断する。引数mの値がラベルの総数Mに等しくない場合には、音声データ検索装置はステップＳ３９の処理を行う。引数ｍの値がラベルの総数Mに等しい場合には、音声データ検索装置はステップＳ４２の処理を行う。ステップＳ４２において、音声データ検索装置は、ラベル列L1,…,LMが発話jに含まれる確率
【数３】
2010522923.tif 000005
【００２９】
を計算する。ステップＳ４３において、音声データ検索装置は確率P(L1,…,LM)が０より大きいか否かを判断する。確率P(L1,…,LM)が０より大きい場合には、音声データ検索装置はステップＳ４４の処理を行う。確率P(L1,…,LM)が０より大きくない場合には、音声データ検索装置はステップＳ４５の処理を行う。ステップＳ４４において、音声データ検索装置は、発話ID番号と確率P(L1,…,LM)の組をリストＳに記録する。ステップＳ４５において、音声データ検索装置は、引数jの値が登録番号の最大値Ｔに等しいか否かを判断する。引数ｊの値が登録番号の最大値Ｔに等しくない場合には、音声データ検索装置はステップＳ３８の処理を行う。引数jの値が登録番号の最大値Ｔに等しい場合には、音声データ検索装置は一連の処理を終了する。
【先行技術文献】
【非特許文献】
【００３０】
【非特許文献１】M. Saraclar and R. Sproat “Lattice-Based Search for Spoken Utterance Retrieval” Proc. HLT-NAACL, 2004
【発明の概要】
【発明が解決しようとする課題】
【００３１】
従来の音声データを検索する方法では、音声データ検索装置は、音声認識の結果として、音声データベースに記録された複数の音声データに基づいて取得されるラティスを用いて、転置索引テーブルを構築している。しかしながら、この方法では、ラティスは冗長なアークを含んでいるため、転置索引テーブルのファイルサイズが大きくなるという問題が存在する。また、候補単語に関して、ラティスは、音声認識に用いられた言語モデルによって許される単語間の接続のみを含んでいるので、音声データ検索装置は、その言語モデルによって許されない単語間の接続を含んだ単語列を検索することは不可能である。それゆえ、従来の方法では、検索性能が劣化するという問題が存在する。
【課題を解決するための手段】
【００３２】
本発明の第１目的は、転置索引テーブルのファイルサイズを抑えることを可能とする音声データ検索装置、音声データ検索方法、音声データ検索プログラム、及びコンピュータが読取可能な音声データ検索プログラムを内蔵したコンピュータが使用可能な媒体を提供することにある。
【００３３】
本発明の第２目的は、音声認識に用いられる言語モデルに拘束されない、高精度な検索を可能とする音声データ検索装置、音声データ検索方法、音声データ検索プログラム、及びコンピュータが読取可能な音声データ検索プログラムを内蔵したコンピュータが使用可能な媒体を提供することにある。
【００３４】
本発明の第３目的は、転置索引テーブルのファイルサイズを抑えるために構築されるコンフュージョンネットワークを利用する際に、転置索引テーブルを効率的に検索することを可能とする音声データ検索装置、音声データ検索方法、音声データ検索プログラム、及びコンピュータが読取可能な音声データ検索プログラムを内蔵したコンピュータが使用可能な媒体を提供することにある。
【００３５】
上記の課題を解決するために、本発明は、複数の音声データを記憶する音声データベースと、前記音声データベースから音声データを読み出し、前記読み出された音声データに対して音声認識処理を実行して、前記音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力する音声認識部と、前記音声認識部から出力されたラティスに基づいてコンフュージョンネットワークを生成して、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力するコンフュージョンネットワーク生成部と、前記コンフュージョンネットワーク生成部から出力された前記コンフュージョンネットワークに基づいて転置索引テーブルを生成する転置索引テーブル生成部と、ユーザにより入力されたクエリを受け付けて、前記受け付けたクエリに対して音声認識処理を実行して、音声認識処理の結果を文字列として出力するクエリ入力部と、前記クエリ入力部から出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換するクエリ変換部と、前記クエリ変換部から読み出したラベル列を前記転置索引テーブル生成部から読み出した転置索引テーブルと照合して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索して、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力するラベル列照合部と、を備えることを特徴とする音声データ検索装置を提供する。
【００３６】
本発明によれば、音声データ検索装置は、従来の音声データ検索装置と比較して、転置索引テーブルのファイルサイズを抑えることができる。また、音声データ検索装置は、従来の音声データ検索装置と比較して、音声認識に用いられる言語モデルに拘束されない、高精度な検索を行うことができる。
【００３７】
本発明の好適な実施形態にあっては、前記ラベル列照合部は、前記転置索引テーブルを参照して、前記ラベル列に含まれる１つ以上のラベルに割り当てられた１つ以上のアークによって構成される部分コンフュージョンネットワークを生成し、前記ラベル列を１次元配列のグラフで表し、自身のノードに戻るアークを前記１次元配列のグラフの各ノードに付与してクエリのグラフを生成し、前記部分コンフュージョンネットワークと前記クエリのグラフとの間でインターセクションを計算する。
【００３８】
本実施形態によれば、音声データ検索装置は、転置索引テーブルのファイルサイズを抑えるために構築されたコンフュージョンネットワークを利用する際に、有効な転置索引テーブルの検索を行うことができる。
【００３９】
上記の課題を解決するために、本発明は、複数の音声データを記憶する音声データベースと、２つ以上の音声認識部と、各音声認識部は、前記音声データベースから音声データを読み出し、前記読み出された音声データに対して音声認識処理を実行して、前記音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力し、ある音声認識部から出力されるあるラティスの基本単位は、他の音声認識部から出力される他のラティスの基本単位とは異なり、前記２つ以上の音声認識部にそれぞれ接続された２つ以上のコンフュージョンネットワーク生成部と、各コンフュージョンネットワーク生成部は、前記各音声認識部から出力されたラティスに基づいてコンフュージョンネットワークを生成して、前記音声認識処理の結果をコンフュージョンネットワークとして出力し、前記２つ以上のコンフュージョンネットワーク生成部にそれぞれ接続された２つ以上の転置索引テーブル生成部と、各転置索引テーブル生成部は、前記各コンフュージョンネットワーク生成部から出力された前記コンフュージョンネットワークに基づいて転置索引テーブルを生成し、ユーザにより入力されたクエリを受け付けて、前記受け付けたクエリに対して音声認識処理を実行して、音声認識処理の結果を文字列として出力するクエリ入力部と、２つ以上のクエリ変換部と、各クエリ変換部は、前記クエリ入力部から出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換し、あるクエリ変換部で変換されるあるラベル列の基本単位は、他のクエリ変換部で変換される他のラベル列の基本単位とは異なり、前記２つ以上の転置索引テーブル生成部及び前記２つ以上のクエリ変換部にそれぞれ接続された２つ以上のラベル列照合部と、各ラベル列照合部は、前記各クエリ変換部から読み出したラベル列を前記各転置索引テーブル生成部から読み出した転置索引テーブルと照合して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索し、前記２つ以上のラベル列照合部から検索結果を読み出して、前記読み出された検索結果を統合して検索結果リストを生成して、前記検索結果リストに含まれる音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力する前記検索結果統合部と、を備えることを特徴とする音声データ検索装置を提供する。
【００４０】
本発明によれば、音声データ検索装置は、従来の音声データ検索装置と比較して、複数のラベル体系を用いた音声データ検索を並列に処理することができる。
【００４１】
上記の課題を解決するために、本発明は、複数の音声データを記憶する音声データベースと、２つ以上の音声認識部と、各音声認識部は、前記音声データベースから音声データを読み出し、前記読み出された音声データに対して音声認識処理を実行して、前記音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力し、ある音声認識部から出力されるあるラティスの基本単位は、他の音声認識部から出力される他のラティスの基本単位とは異なり、前記２つ以上の音声認識部にそれぞれ接続された２つ以上のコンフュージョンネットワーク生成部と、各コンフュージョンネットワーク生成部は、前記各音声認識部から出力されたラティスに基づいてコンフュージョンネットワークを生成して、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力し、前記２つ以上のコンフュージョンネットワーク生成部から出力されたコンフュージョンネットワークを結合して、結合ネットワークを生成し、前記結合ネットワークを出力するコンフュージョンネットワーク結合部と、前記コンフュージョンネットワーク結合部から出力された結合ネットワークに基づいて転置索引テーブルを生成する転置索引テーブル生成部と、ユーザにより入力されたクエリを受け付けて、前記受け付けたクエリに対して音声認識処理を実行して、音声認識処理の結果を文字列として出力するクエリ入力部と、前記クエリ入力部から出力された文字列を、音素、音節、及び単語のうち２つ以上を基本単位とするラベル列に変換するクエリ変換部と、前記クエリ変換部から読み出したラベル列を前記転置索引テーブル生成部から読み出した転置索引テーブルと照合して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索して、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力するラベル列照合部と、を備えることを特徴とする音声データ検索装置を提供する。
【００４２】
本発明によれば、音声データ検索装置は、従来の音声データ検索装置と比較して、クエリに登録単語と未登録単語の両方が含まれていても音声データを検索することができる。
【００４３】
上記の課題を解決するために、本発明は、複数の音声データを記憶した音声データベースから音声データを読み出し、前記読み出された音声データに対して音声認識処理を実行し、前記音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力し、前記出力されたラティスに基づいてコンフュージョンネットワークを生成し、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力し、前記出力されたコンフュージョンネットワークに基づいて転置索引テーブルを生成し、ユーザにより入力されたクエリを受け付けて、前記受け付けたクエリに対して音声認識処理を実行し、音声認識処理の結果を文字列として出力し、前記出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換し、前記ラベル列を前記転置索引テーブルと照合し、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索し、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力することを特徴とする音声データ検索方法を提供する。
【００４４】
本発明によれば、音声データ検索方法は、従来の音声データ検索方法と比較して、転置索引テーブルのファイルサイズを抑えることができる。また、音声データ検索方法は、従来の音声データ検索方法と比較して、音声認識に用いられる言語モデルに拘束されない、高精度な検索を行うことができる。
【００４５】
上記の課題を解決するために、本発明は、コンピュータに対して、複数の音声データを記憶した音声データベースから音声データを読み出させる第１音声データ検索プログラムコードと、前記コンピュータに対して、前記読み出された音声データに対して音声認識処理を実行させる第２音声データ検索プログラムコードと、前記コンピュータに対して、音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力させる第３音声データ検索プログラムコードと、前記コンピュータに対して、前記出力されたラティスに基づいてコンフュージョンネットワークを生成させる第４音声データ検索プログラムコードと、前記コンピュータに対して、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力させる第５音声データ検索プログラムコードと、前記コンピュータに対して、前記出力されたコンフュージョンネットワークに基づいて転置索引テーブルを生成させる第６音声データ検索プログラムコードと、前記コンピュータに対して、ユーザにより入力されたクエリを受け付けさせる第７音声データ検索プログラムコードと、前記コンピュータに対して、前記受け付けたクエリに対して音声認識処理を実行させる第８音声データ検索プログラムコードと、前記コンピュータに対して、音声認識処理の結果を文字列として出力させる第９音声データ検索プログラムコードと、前記コンピュータに対して、前記出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換させる第１０音声データ検索プログラムコードと、前記コンピュータに対して、前記ラベル列を前記転置索引テーブルと照合させる第１１音声データ検索プログラムコードと、前記コンピュータに対して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索させる第１２音声データ検索プログラムコードと、前記コンピュータに対して、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力させる第１３音声データ検索プログラムコードと、を備えることを特徴とする音声データ検索プログラムを提供する。
【００４６】
本発明によれば、音声データ検索プログラムは、従来の音声データ検索プログラムと比較して、コンピュータに対して、転置索引テーブルのファイルサイズを抑えることができる。また、音声データ検索プログラムは、従来の音声データ検索プログラムと比較して、コンピュータに対して、音声認識に用いられる言語モデルに拘束されない、高精度な検索を行わせることができる。
【００４７】
上記の課題を解決するために、本発明は、コンピュータが読み取り可能な音声データ検索プログラムを内蔵する前記コンピュータが使用可能な媒体であって、前記音声データ検索プログラムは、コンピュータに対して、複数の音声データを記憶した音声データベースから音声データを読み出させる第１音声データ検索プログラムコードと、前記コンピュータに対して、前記読み出された音声データに対して音声認識処理を実行させる第２音声データ検索プログラムコードと、前記コンピュータに対して、音声認識処理の結果を、音素、音節、又は単語を基本単位とするラティスとして出力させる第３音声データ検索プログラムコードと、前記コンピュータに対して、前記出力されたラティスに基づいてコンフュージョンネットワークを生成させる第４音声データ検索プログラムコードと、前記コンピュータに対して、前記音声認識処理の結果を前記コンフュージョンネットワークとして出力させる第５音声データ検索プログラムコードと、前記コンピュータに対して、前記出力されたコンフュージョンネットワークに基づいて転置索引テーブルを生成させる第６音声データ検索プログラムコードと、前記コンピュータに対して、ユーザにより入力されたクエリを受け付けさせる第７音声データ検索プログラムコードと、前記コンピュータに対して、前記受け付けたクエリに対して音声認識処理を実行させる第８音声データ検索プログラムコードと、前記コンピュータに対して、音声認識処理の結果を文字列として出力させる第９音声データ検索プログラムコードと、前記コンピュータに対して、前記出力された文字列を、音素、音節、又は単語を基本単位とするラベル列に変換させる第１０音声データ検索プログラムコードと、前記コンピュータに対して、前記ラベル列を前記転置索引テーブルと照合させる第１１音声データ検索プログラムコードと、前記コンピュータに対して、前記ラベル列と前記音声データベースの両方に含まれる音声データを検索させる第１２音声データ検索プログラムコードと、前記コンピュータに対して、前記検索された音声データが記憶された前記音声データベース内のアドレスを示すポインタのリストを出力させる第１３音声データ検索プログラムコードと、を備えることを特徴とする媒体を提供する。
【００４８】
本発明によれば、音声データ検索プログラムは、従来の音声データ検索プログラムと比較して、コンピュータに対して、転置索引テーブルのファイルサイズを抑えることができる。また、音声データ検索プログラムは、従来の音声データ検索プログラムと比較して、コンピュータに対して、音声認識に用いられる言語モデルに拘束されない、高精度な検索を行わせることができる。
【図面の簡単な説明】
【００４９】
【図１】図１は、単語と文書ＩＤ番号のリストを含んだ複数のデータ組からなる従来の転置索引テーブルである。
【図２】図２は、単語と、文書ＩＤ番号と単語の出現位置の組を含んだ複数のデータ組からなる従来の転置索引テーブルである。
【図３】図３は、発話文を構成する１つ以上の候補である１つ以上の単語、音素、又は音節を有向グラフとして表した従来のラティスである。
【図４】図４は、図３に示したラティスにおけるノードとアークとの間の結合関係を表した表形式のデータである。
【図５】図５は、非特許文献１の方法に従って、図３に示したラティスに基づいて構築された転置索引テーブルである。
【図６】図６は、N個のラティスに基づいて転置索引テーブルを構築する従来の方法を示したフローチャートである。
【図７】図７は、クエリのラベル列を構成する全てのラベルを含む１つ以上のラティスを検索し、検索された１つ以上のラティスに割り当てられた１つ以上の発話ＩＤ番号のリストを検索する従来の方法を示したフローチャートである。
【図８】図８は、図７に示した手順で検索されたラベルの出現順序が、クエリのラベル列を構成する全てのラベルを含むラティスの各々ごとに、クエリのラベルの出現順序に一致するか否かを判断する従来の方法を示したフローチャートである。
【図９】図９は、本発明の第１実施形態に係る音声データ検索装置の構成図である。
【図１０】図１０は、本発明の第１実施形態に係る、図３に示したラティスに基づいて構築されるコンフュージョンネットワークである。
【図１１】図１１は、図１０に示したコンフュージョンネットワークにおけるノードとアークとの間の結合関係を表した表形式のデータである。
【図１２】図１２は、図１０に示したコンフュージョンネットワークに基づいて構築された転置索引テーブルである。
【図１３Ａ】図１３Ａは、図１０に示したコンフュージョンネットワークから抽出された、クエリのラベル列を構成するラベルと特殊ラベルからなる部分コンフュージョンネットワークである。
【図１３Ｂ】図１３Ｂは、クエリのグラフである。
【図１３Ｃ】図１３Ｃは、図１３Ａに示した部分コンフュージョンネットワークと図１３Ｂに示したクエリのグラフとの間のインターセクションの結果として構築されたグラフを示した図である。
【図１４】図１４は、本発明の第１実施形態に係る、クリエのラベル列に基づいて、このラベル列の発話ＩＤ番号と出現確率の組を取得する方法を示したフローチャートである。
【図１５】図１５は、本発明の第１実施形態に係る音声データ検索方法を示したフローチャートである。
【図１６】図１６は、本発明の第１実施形態に係る転置索引テーブルの削減効果及び音声データの検索性能を表した表形式のデータである。
【図１７】図１７は、本発明の第２実施形態に係る音声データ検索装置の構成図である。
【図１８】図１８は、本発明の第２実施形態に係る音声データ検索方法を示したフローチャートである。
【図１９】図１９は、本発明の第３実施形態に係る音声データ検索装置の構成図である。
【図２０】図２０は、本発明の第３実施形態に係る結合ネットワークを構築する方法を示したフローチャートである。
【図２１Ａ】図２１Ａは、本発明の第３実施形態に係る音素コンフュージョンネットワークである。
【図２１Ｂ】図２１Ｂは、本発明の第３実施形態に係る単語コンフュージョンネットワークである。
【図２１Ｃ】図２１Ｃは、本発明の第３実施形態に係る単語−音素結合ネットワークである。
【図２２Ａ】図２２Ａは、本発明の第３実施形態に係る第１有限状態変換器である。
【図２２Ｂ】図２２Ｂは、本発明の第３実施形態に係る第２有限状態変換器である。
【図２２Ｃ】図２２Ｃは、本発明の第３実施形態に係る第３有限状態変換器である。
【図２３】図２３は、本発明の第３実施形態に係る音声データ検索方法を示したフローチャートである。
【発明を実施するための形態】
【００５０】
以下、図９乃至２３を参照して、本発明の第１乃至３実施形態を説明する。従来の音声データ検索装置は、音声認識部から出力されるラティスに基づいて転置索引テーブルを構築していた。これに対して、本発明に係る音声データ検索装置は、音声認識部から出力されるラティスをコンフュージョンネットワークに変換して、このコンフュージョンネットワークに基づいて転置索引テーブルを構築する。このように、本発明に係る音声データ検索装置は、ラティスではなくコンフュージョンネットワークに基づいて転置索引テーブルを構築するので、ラベル列照合部で行われるラベル照合方法は、従来のラベル照合方法と異なる。
【００５１】
（第１実施形態）
図９乃至１６を参照して、本発明の第１実施形態を説明する。
【００５２】
図９に示すように、音声データ検索装置１０は、音声データベース１、音声認識部２、コンフュージョンネットワーク生成部３、転置索引テーブル生成部４、転置索引テーブル記憶部５、クエリ入力部６、クエリ変換部７、ラベル列照合部８、検索結果出力部９を備えている。
【００５３】
音声データベース１は、検索対象である複数の音声データを含んでいる。各音声データは様々なファイルから取得される。例えば、音声データは、テレビ番組、映画などの音声トラックファイル、インターネット上の音声ファイル、又はインターネット上の音声付動画ファイルから取得される。なお、各音声データは、音声信号の無音区間を自動的に検出する手段を用いて、より細かい発話単位に分割されても良い。
【００５４】
音声認識部２は、音声データベース１から複数の音声データを読み込み、音声認識処理を実行する。それから、音声認識部２は、１つの音声認識結果の候補、又は、音素ラティス、音節ラティス、単語ラティスなどの有向グラフ型のデータ構造で複数の音声認識結果の候補をコンフュージョンネットワーク生成部３に出力する。本実施形態では、音声認識部２は、有向グラフ型のデータ構造で複数の音声認識結果の候補をコンフュージョンネットワーク生成部３に出力する。
【００５５】
音声認識処理では、一般的に、音響モデル、発音辞書、及び言語モデルが利用される。音響モデルは、音声認識の基本単位（例えば音素）ごとに、音響パターンの特徴を保持している。音声認識の基本単位が音素である場合、音響モデルは、基本単位を複数のサブ単位に区分したうちの１つのサブ単位である時間区間（例えば、前半部、中間部、後半部の３つの時間区間）ごとに認識された平均的な音響パターンを保持している。発音辞書は、単語とその単語の音素列の間の関係を示す表を保持している。発音辞書は、音声認識処理に使用される処理ステップやメモリ量を抑えるために、一般的に数万程度の単語からなる。言語モデルは、２つ以上の単語を接続する規則と、単語間の接続の尤もらしさを表す重みとを有した有向グラフとして表される。
【００５６】
次に、１つの音声認識結果の候補を生成して、コンフュージョンネットワーク生成部３に出力する過程を説明する。
【００５７】
音声認識部２は、発話音声の音響パターン系列を、言語モデルによって許容される各単語列に対応する音素列の音響パターン系列と比較して、２つの音響パターン系列の音響的類似度を計算する。それから、音声認識部２は、計算された音響的類似度に、言語モデルによって許容される単語間の接続の尤もらしさを表す重みを加えることにより、スコアを計算する。音声認識部２は、上述の処理を繰り返した後、複数の計算されたスコアの中から、最も高い値を有するスコアを選択する。
【００５８】
具体的には、音声認識処理は次の過程をとる。音声認識部２は、発話の始端から一定の時間間隔（例えば１０ミリ秒ごと）で音響パターン（例えばMel-Frequency Cepstrum Coefficient: MFCC）を計算して、音響パターン系列を生成する。それから、音声認識部２は、音響パターン系列から最初の音響パターンを読み込んで、最初の音響パターンが、言語モデル（例えばN-gramモデル）によって文の最初に位置することが許容される各単語の最初の音素の１番目の音響パターンに類似する音響的類似度を計算する。音声認識部２は、時刻“１”の仮説として、計算された音響的類似度を登録する。
【００５９】
次に、音声認識部２は、音響パターン系列から２番目の音響パターンを読み込んで、時刻“１”の音響パターンが継続する可能性と、各単語の音素列に従って時刻“１”の音響パターンが変化する可能性とを考慮して、時刻“１”の仮説に続く時刻“２”の仮説として２つの仮説を生成する。具体的には、音声認識部２は、（１）２番目の音響パターンが、時刻“１”の音響パターンに一致する、各単語の最初の音素の２番目の音響パターンに類似する音響的類似度と、（２）時刻“１”の音響パターンと異なる、各単語の最初の音素の２番目の音響パターンに類似する音響的類似度を計算する。それから、音声認識部２は、時刻“１”の仮説として登録された音響的類似度に、計算された各音響的類似度を加えて、新規の２つの音響的類似度を生成する。音声認識部２は、時刻“２”の仮説として、新規の２つの音響的類似度を登録する。
【００６０】
このように、音声認識部２は、時刻を１つずつ進めて、音響パターン系列から音響パターンを順番に読み込んで、前時刻の仮説として登録された各音響的類似度に、現時刻で計算された各音響的類似度を加えて、前時刻の仮説に続く現時刻の仮説として、計算された音響的類似度を登録する。なお、前時刻の音響パターンが単語の最後の音響パターンである場合には、音声認識部２は、前時刻の音響パターンが継続する可能性と、前時刻の音響パターンが、言語モデルによって、その単語の次に位置することが許容される単語の最初の音素の１番目の音響パターンに変化する可能性を考慮して、現時刻の仮説としてM＋１個（M：言語モデルによって、その単語の次に位置することが許容される単語の数）の仮説を生成する。単語が変化する場合には、音声認識部２は、言語モデルによって許容される単語間の接続の尤もらしさを表す重みを、前時刻の仮説として登録された音響的類似度に加えることにより、スコアを計算する。
【００６１】
音声認識部２は、音響パターン系列から最後の音響パターンを読み込んで、現時刻の複数の仮説を生成した後、言語モデルによって文の最後に位置することが許容される単語の最後の音素の最後の音響パターンに対応する、現時刻の複数の仮説の中から、最も高いスコアを有する仮説を選ぶ。そして、音声認識部２は、選ばれた仮説に対応する単語列（又は音素列）を音声認識結果の候補としてコンフュージョンネットワーク生成部３に出力する。
【００６２】
音声認識処理において、各時刻の２つ以上の音響パターンが、同じ単語列（又は同じ音素列）における音響パターン列の始端から数えて同じ位置に出現する場合には、音声認識部２は、その時刻の２つ以上の仮説の中から、最も高いスコアを有する仮説だけを残して、他の仮説を削除しても良い。この場合、音声認識部２は、その時刻の２つ以上の仮説の中から、ある閾値以下のスコアを有する１つ以上の仮説を削除しても良い。
【００６３】
次に、複数の音声認識結果の候補を生成して、コンフュージョンネットワーク生成部３に出力する過程を説明する。
【００６４】
音声認識部２は、先に説明したように、音響パターン系列から最後の音響パターンを読み込んで、現時刻の複数の仮説を生成した後、有向グラフ型のデータ構造で、生成された複数の仮説に対応する単語列（又は音素列）を複数の音声認識結果の候補としてコンフュージョンネットワーク生成部３に出力する。このデータ構造は、グラフのアークとして、単語名（又は音素名）、開始時刻、終了時刻、スコア情報を有する。各アークは、注目した単語（又は音素）の後に位置可能な１つ以上の単語（又は音素）の中から選択された単語（又は音素）に関する、単語名（又は音素名）、開始時刻、終了時刻、スコア情報を有しており、先行ノードを後続ノードに接続する。この作業により、複数の音声認識結果の候補を表す有向グラフが生成される。この有向グラフはラティスと呼ばれる。各アークが１つの単語を表す場合には、この有向グラフは単語ラティスと呼ばれる。また、各アークが１つの音素を表す場合には、この有向グラフは音素ラティスと呼ばれる。
【００６５】
ラティスは、音声認識処理に用いられた言語モデルによって許容される単語間の接続を有した単語列のみを含んでいる。また、ラティスは、複数の単語が互いに同じ単語であっても、複数の単語の開始時刻や終了時刻が互いに異なると、複数の単語は互いに異なるアークとして記録されるので、冗長なアークを含んでいる。
【００６６】
コンフュージョンネットワーク生成部３は、音声認識部２から出力された音素ラティス、音節ラティス、又は単語ラティスなどの有向グラフ型のデータ構造をコンフュージョンネットワークに変換する。図１０は、図３に示したラティスから得られるコンフュージョンネットワークを示している。なお、図１０に示した、アーク“Ａ”，“Ｂ”，“Ｃ”，“Ｄ”，“Ｅ”，“Ｆ”，“Ｇ”，“Ｈ”，“Ｉ”，“Ｊ”は、音素、音節、又は単語などのラベルを表している。記号“＠”は、対応するラベルがなく、先行ノードと後続ノードの間をスキップする特殊ラベルを表している。図１１は、図１０に示したコンフュージョンネットワークの表形式のデータを示している。
【００６７】
コンフュージョンネットワークは、ラティスと同様に、複数の音声認識結果の候補をグラフ型のデータ構造で表している。コンフュージョンネットワークの左端の始端ノードから右端の終端ノードまでの１つのラベル列が１つの音声認識結果の候補を表している。コンフュージョンネットワーク生成部３は、ラティス内で近い時間帯に属する同一のラベルを１つのラベルに縮約し、かつ、ラティス内で近い時間帯に属する異なるラベルを集めて１つの対立候補グループを生成することにより、図３に示したラティスを図１０に示したコンフュージョンネットワークに変換する。ここで、ラベルの組｛＠，Ｂ，Ｃ｝、｛Ａ，Ｄ｝、｛＠，Ｅ，Ｆ｝、｛Ｇ，Ｈ｝、｛Ｉ，Ｊ｝は対立候補グループを表している。これらの対立候補グループが、この順番で接続されて、コンフュージョンネットワークを形成している。ここで、記号“＠”は、対応するラベルがないことを表す特殊ラベルである。例えば、図３に示したラティスでは、ノード“０”からラベル“Ａ”を通る経路が存在するが、図１０に示したコンフュージョンネットワークでは、特殊ラベル“＠”によってラベル“Ｂ”や“Ｃ”をスキップして、ノード“０”からラベル“Ａ”を通る経路が存在する。このように、コンフュージョンネットワークは、コンパクトなデータ構造であり、かつ、多くの経路を有する（例えば、図３に示したラティスと比較して、ノード“０”からラベル“Ｄ”を通る経路が増えている）ので、より多くの音声認識結果の候補を含むことができる。
【００６８】
ラティスをコンフュージョンネットワークに変換するためのアルゴリズムは、非特許文献２（L. Mangu, E. Brill, and A. Stolcke, “Finding consensus in speech recognition: word error minimization and other applications of confusion networks,” Computer Speech and Language, 14, pp. 373-400, 2000）に明記されている。コンフュージョンネットワーク生成部３は、ラティスをコンフュージョンネットワークに変換するために、まず、ラティス上の各アークに対して、アークの重みをアークの事後確率に変換する。例えば、ラティスＧにおけるアークｅの事後確率P(e|G)の値は、ラティスＧの始端ノードからアークｅを通って終端ノードへ至る経路の重みの総和を、ラティスＧの始端ノードから終端ノードへ至る全ての経路の重みの総和で割ることにより求められる。すなわち、事後確率P(e|G)の値は、下記の式に従って計算される。
【００６９】
P(e|G)=α(k[e])×w[e]×β(n[e])／β(始端ノード)  
それから、コンフュージョンネットワーク生成部３は、アーク間の類似度が一定値以上の値を有する２つ以上のアーク、又はアーク間の類似度が最も高い値を有する２つのアークを縮約して、１つのアークを生成する。なお、アーク間の類似度は、時間区間の重複度や発音の類似度などに基づいた尺度である。２つ以上のアーク（又は２つのアーク）を縮約するとき、コンフュージョンネットワーク生成部３は、２つ以上のアーク（又は２つのアーク）の事後確率を加えた値を、縮約されたアークの事後確率とする。
【００７０】
次に、コンフュージョンネットワーク生成部３は、残ったアークをそれぞれ含んだ複数の対立候補グループを生成して、対立候補グループ間の類似度が一定値以上の値を有する２つ以上の対立候補グループ、又は対立候補グループ間の類似度が最も高い値を有する２つの対立候補グループを縮約して、１つの対立候補グループを生成する（ラベル間クラスタリング）。対立候補グループ間の類似度は、一方のグループに含まれるアークの時間区間と他方のグループに含まれるアークの時間区間との間の重複度、一方のグループに含まれるアークの発音と他方のグループに含まれるアークの発音の間の類似度などに基づいた尺度である。コンフュージョンネットワーク生成部３は、２つ以上の対立候補グループ（又は２つの対立候補グループ）を縮約して、１つの対立候補グループに生成するとき、ラティスにおけるアークの順序関係を壊さないように、ラティスの始端ノードから終端ノードに至る全ての経路の中で、残ったアークを経由する１つ以上の経路が存在すれば、残ったアークを含んだ２つ以上の対立候補グループ（又は２つの対立候補グループ）を縮約しない。
【００７１】
コンフュージョンネットワーク生成部３は、オリジナルのラティスにおけるアークの時間的前後関係に従って、残った対立候補グループを一列に並べて、各隣接する２つの対立候補グループの間に１つのノードを置いて、各対立候補グループ内の各アークを２つの隣接したノードに結ぶ。これにより、図１０に示したコンフュージョンネットワークが構築される。ただし、対立候補グループ内に含まれるアークの事後確率の総和が１に満たない場合には、これは、オリジナルのラティスの始端ノードから終端ノードに至る全ての経路の中で、その対立候補グループに含まれるアークを通らない経路が存在することを意味している。このような経路に対応するラベル列を表現するために、コンフュージョンネットワーク生成部３は、その対立候補グループをスキップできることを意味する特殊ラベル＠を有するアークを、その対立候補グループ内に追加する（図１１参照）。追加されたアークの事後確率は、下記の式に従って計算される。
【００７２】
1 − (対立候補グループに含まれるアークの事後確率の総和)
転置索引テーブル生成部４は、コンフュージョンネットワーク生成部３から出力された各コンフュージョンネットワークの各アーク情報を、各アークに付与されたラベルごとに分類して、転置索引テーブルを構築する。コンフュージョンネットワークに基づいて転置索引テーブルを構築する手順は、ラティスに基づいて転置索引テーブルを構築する手順と同じである。
【００７３】
コンフュージョンネットワークでは、始端ノードから終端ノードに到る経路はすべてのノードを通るので、ノードの出現確率f(k[e])は常に“１”となる。したがって、転置索引テーブルにノードの出現確率f(k[e])の値を記録する必要はない。また、ノード番号を始端ノードから順にノードに付与することで、先行ノードと後続ノードの番号の間には、次の関係が成立する。
【００７４】
k[e]（先行ノード番号） ＝ n[e]（後続ノード番号）−１
この関係から、転置索引テーブル生成部４は、先行ノード番号k[e]と後続ノード番号n[e]の両方ではなく、先行ノード番号k[e]だけを転置索引テーブルに登録しておけばよい。すなわち、ラティスをコンフュージョンネットワークに変換することにより、転置索引テーブルに登録するアークの数を削減でき、かつ、アークの情報を削減できる。
【００７５】
図１２は、図１０に示したコンフュージョンネットワークに基づいて構築された転置索引テーブルを示している。転置索引テーブルに登録された各アークは、データ組（発話ＩＤ番号id[e]、先行ノード番号k[e]、事後確率P(e|G)）を有する。転置索引テーブル生成部４は、構築された転置索引テーブルをファイルに書き出して、転置索引テーブル記憶部５に出力する。なお、転置索引テーブル生成部４は、構築された転置索引テーブルを直接ラベル列照合部８に出力しても良い。
【００７６】
クエリ入力部６は、ユーザからのクエリの入力を受け付ける。クエリの入力は、キーボードによる文字列入力や、ユーザによる音声入力である。音声入力の場合には、クエリ入力部６は、音声認識処理を行って、音声入力を文字列に変換する。
【００７７】
クエリ変換部７は、クエリとして入力された文字列を、音素、音節、又は単語を単位とするラベル列に変換する。文字列を単語を単位とするラベル列に変換する場合、クエリ変換部７は、単語名と単語間の隣接のしやすさ（連接尤度）に関する情報を利用して、文字列を単語単位に分割した際の隣接する単語間の連接尤度の総和が最大となる単語列を選んで、選ばれた単語列をラベル列とする。文字列を音素又は音節を単位とするラベル列に変換する場合、クエリ変換部７は、単語とその単語の発音表記（音素列又は音節列）の情報を記録した辞書を利用して、文字列に含まれる単語を発音表記に置き換えて、音素列又は音節列を求めて、求められた音素列又は音節列をラベル列とする。なお、この辞書は、音声認識部２で使用される発音辞書とは異なり、英語辞書などの網羅的な辞書であり、一般的に数十万程度の単語を含んでいる。
【００７８】
ラベル列照合部８は、クエリ変換部７から読み込んだラベル列を、転置索引テーブル生成部４から出力された転置索引テーブル又は転置索引テーブル記憶部５に記憶されたファイルから読み込んだ転置索引テーブルと照合して、そのラベル列に含まれる音声データ（発話）の集合を取得する。
【００７９】
コンフュージョンネットワークにおいて、２つのラベル間の隣接性を調べるのは、従来の方法と比較して複雑である。ラティスの場合には、２つのラベル間の隣接性を調べるために、ラベル列照合部は、一方のラベルを有するアーク“e”と他方のラベルを有するアーク“r”に対して、“n[e]=k[r]”が成立しているか否かを調べるだけでよかった。これに対して、コンフュージョンネットワークの場合には、コンフュージョンネットワークが特殊ラベル＠を有するので、２つのラベル間の隣接性を調べるために、ラベル列照合部８は、“n[e]=k[r]”が成立しているか否か、アーク“e”とアーク“r”の間に特殊ラベル“＠”を有するアークがあるか否か、アーク“e”とアーク“r”の間に特殊ラベル“＠”だけを有するアークを通過する経路があるか否かを、調べる必要がある。
【００８０】
本実施形態では、ラベル列照合部８は、クエリのラベル列を１次元配列のグラフで表し、そのクエリのグラフの各ノードに、先行ノードに戻ることを意味する特殊ラベル“＠”を有したアークを付与する。それから、ラベル列照合部８は、クエリのグラフとコンフュージョンネットワークの間でインターセクションを計算する。インターセクションの結果として生じたグラフが、空のグラフ、又は始端ノードから終端ノードに到る経路が存在しないグラフであれば、クエリのラベル列はコンフュージョンネットワークに含まれない。ただし、ラベル列照合部８は、インターセクションを計算するときに、クエリのラベル列に出現するラベルを有するアークのみを使用して部分コンフュージョンネットワークを構築して、クエリのグラフと部分コンフュージョンネットワークの間でインターセクションを計算する。部分コンフュージョンネットワークのサイズは、コンフュージョンネットワークのサイズより小さいので、計算量を抑えることができる。
【００８１】
例えば、ラベル列照合部８が、図１０に示したコンフュージョンネットワークに、クエリのラベル列“ＡＨ”が出現するか否かを調べて、ラベル列“ＡＨ”の出現確率を求める場合を考える。ラベル列照合部８は、まず、ラベル“Ａ”、ラベル“Ｈ”、特殊ラベル“＠”に対応付けられたアークだけからなる部分コンフュージョンネットワークを構築する（図１３Ａ参照）。次に、ラベル列照合部８は、クエリのラベル列“ＡＨ”に関して、ノード“１”を介して、ラベル“Ａ”を有するアークをラベル“Ｈ”を有するアークに接続して、ラベル“Ａ”とラベル“Ｈ”に始端ノード“０”と終端ノード“２”をそれぞれ付与する。それから、ラベル列照合部８は、各ノードに特殊ラベル“＠”を有するアークを付与して、クエリのグラフを生成する（図１３Ｂ参照）。最後に、ラベル列照合部８は、クエリのグラフと部分コンフュージョンネットワークの間でインターセクションを計算して、インターセクションの結果として生じたグラフを取得する（図１３Ｃ参照）。なお、インターセクションの結果として生じたグラフにおいて、各ノードに割り当てられた２つの番号（i, j）は、部分コンフュージョンネットワークのノード番号とクエリのグラフのノード番号にそれぞれ対応する。インターセクションの結果として生じたグラフが、空ではなく、かつ、少なくとも１つの始端ノードから終端ノードに到る経路を有していれば、クエリのラベル列はコンフュージョンネットワークに含まれる。
【００８２】
ここで、２つのグラフG1, G2の間のインターセクションを計算して、計算結果を１つのグラフGに返すアルゴリズムを説明する。このアルゴリズムは次のとおりである。
【００８３】
Intersection (G1, G2)
1  V←I1 × I2
2  S←I1 × I2
3  while S≠Φ do
4      (v1, v2)←HEAD(S)
5      DEQUEUE(S)
6       if (v1, v2) ∈ I1 × I2 then
7              I←I∪{(v1, v2)}
8      if (v1, v2) ∈ F1 × F2 then
9              F←F∪{(v1, v2)}                
10         for each (e1, e2)∈E[v1] × E[v2] such that l[e1]  =l[e2] do
11                      if not (n[e1], n[e2]) ∈ V then
12                            V←V∪{(n[e1], n[e2])}
13                            ENQUEUE(S, (n[e1], n[e2]))
14            E←E∪{((v1,v2),(n[e1],n[e2]),l[e1],w[e1]×w[e2])}
15  return G
ここで、グラフGは、ノードの集合V、アークの集合H、始端ノードの集合I、終端ノードの集合Fを有し、アークの集合H(v)はノードvに入ってくるアークの集合、k[e]はアークeの先行ノード、n[e]をアークeの後続ノード、l[e]をアークeのラベル、w[e]をアークeの重み、HEAD(S)は待ち行列Sの先頭の要素を返す関数、DEQUEUE(S)は待ち行列Sの先頭の要素を削除する関数、ENQUEUE(S, x)は待ち行列Sの最後に要素xを挿入する関数である。なお、２つのグラフG1, G2に対応するノードとアークを区別するために、各アルファベットに添え字“1”，“2”を付している。
【００８４】
ラベル照合列部８は、インターセクションの結果として生じたグラフにおいて、始端ノードから終端ノードに到る全ての経路の出現確率の総和をForwardアルゴリズムに従って求め、求められた値をクエリのラベル列の出現確率とする。クエリのラベル列の出現確率が０より大きいならば、ラベル列照合部８は、このラベル列を含むコンフュージョンネットワークの転置索引テーブルから発話ＩＤ番号を読み取り、このラベル列の発話ＩＤ番号と出現確率の組を、検索結果リストに記録する。
【００８５】
図１４を参照して、クエリのラベル列に基づいて、このラベル列の発話ＩＤ番号と出現確率の組を取得する手順を説明する。
【００８６】
図７に示したフローチャートに従って出力リストＣを生成した状態で、ステップＳ５１において、ラベル列照合部８は、引数i, j に“１”，“１”を代入する。ステップＳ５２において、ラベル列照合部８は、クエリのラベル列L1…LMに対応するアークのリストE(L1)…E(LM)に共通して含まれる1つ以上の発話ＩＤ番号を出力リストＣから抽出して、１つ以上の発話ＩＤ番号に番号をつける（すなわち、1つ以上の発話ＩＤ番号に登録番号を順に割り当てる）。ステップＳ５３において、ラベル列照合部８は、登録番号jに対応する、アークのリストEj(Li)を転置索引テーブルから読み込む。ステップＳ５４において、ラベル列照合部８は、引数iの値がクエリのラベルの総数Mに等しいか否かを判断する。引数iの値がクエリのラベルの総数Mに等しくない場合には、ラベル列照合部８はステップＳ５５の処理を行う。引数iの値がクエリのラベルの総数Mに等しい場合には、ラベル列照合部８はステップＳ５６の処理を行う。ステップＳ５５において、ラベル列照合部８は、引数jの値を１つ増加させて、ステップＳ５３の処理に戻る。ステップＳ５６において、ラベル列照合部８は、登録番号jに対応するアークのリストEj(@)を転置索引テーブルから読み込む。ステップＳ５７において、ラベル列照合部８は、読み込んだアークのリストの集合{Ej(L1)…Ej(LM), Ej(@)}に含まれる全てのアークを用いて、部分コンフュージョンネットワークＤを構築する。ラベル列照合部８は、インターセクションの計算において、部分コンフュージョンネットワークＤに含まれる各ノードを始端ノード及び終端ノードと見なす。代わりに、ラベル列照合部８は、クエリの最初のラベルL1と同じラベルを有するアークの先行ノードのみを始端ノード、クエリの最後のラベルLMと同じラベルを有するアークの後続ノードのみを終端ノードと見なしても良い。
【００８７】
ステップＳ５８において、ラベル列照合部８は、クエリのラベル列L1…LMからクエリのグラフＱを構築する。具体的には、ラベル列照合部８は、クエリのラベル列L1…LMのラベルLi(1≦i≦M)を有するアークを用意して、クエリのラベル列L1…LMと同じ配列になるように、アークを並べる。そして、ラベル列照合部８は、隣接するアークをノードを介して接続して、クエリのグラフＱを構築する。ラベル列照合部８は、アークのリストEj(@)が空でなければ、クエリのグラフＱのノードに対して、先行ノードに戻るアークを用意して、そのアークにラベル“@”を割り当てる。なお、クエリのグラフＱにおいて、クエリの最初のラベルL1を有するアークの先行ノードを始端ノード、クエリの最後のラベルLMを有するアークの後続ノードを終端ノードとする。
【００８８】
ステップＳ５９において、ラベル列照合部８は、部分コンフュージョンネットワークＤとクエリのグラフＱとの間のインターセクションを計算して、計算結果をグラフＸに返すとともに、部分コンフュージョンネットワークＤとクエリのグラフＱの合成を計算して、計算結果をグラフＸに返す。具体的には、ラベル列照合部８は、インターセクションにおいて、部分コンフュージョンネットワークＤの始端ノードとクエリのグラフＱの始端ノードから出発して、部分コンフュージョンネットワークＤのラベルをクエリのグラフＱのラベルと比較して、部分コンフュージョンネットワークＤのラベルがクエリのグラフＱのラベルに一致するアークを検索する。ラベル列照合部８は、アークを検索するとき、部分コンフュージョンネットワークＤ（又はクリエのグラフＱ）のアークの後続ノードに進んで、後続ノードから出て行く各アークに対して、部分コンフュージョンネットワークＤのラベルをクエリのグラフＱのラベルと比較して、部分コンフュージョンネットワークＤのラベルがクエリのグラフＱのラベルに一致する次のアークを検索する。ラベル列照合部８は、上述の処理を繰り返して、検索されたアークと、検索されたアークの先行ノードと後続ノードとの１つ以上の組を取得する。それから、ラベル列照合部８は、１つ以上の組を接続して、新たなグラフＸを構築する。新たなグラフＸにおいて、検索されたアークを介して始端ノードから終端ノードに至る経路と、検索されたアークの先行ノードと後続ノードが存在すれば、ラベル列照合部８は、クエリのグラフＱに含まれるクエリのラベル列が部分コンフュージョンネットワークＤに含まれると判断する。
【００８９】
ステップＳ６０において、ラベル列照合部８は、グラフＸに終端ノードが存在するか否かを判断する。グラフＸに終端ノードが存在しない場合には、ラベル列照合部８はステップＳ６４の処理を行う。グラフＸに終端ノードが存在する場合には、ステップＳ６１の処理を行う。ステップＳ６１において、ラベル列照合部８は、グラフＸに含まれる経路の重みの総和の値P(L1…LM)をForwardアルゴリズムに従って求める。ステップＳ６２において、ラベル列照合部８は、重みの総和の値P(L1…LM)が０より大きいか否かを判断する。重みの総和の値P(L1…LM)が０より大きくない場合には、ラベル列照合部８はステップＳ６４の処理を行う。重み総和の値P(L1…LM)が０より大きい場合には、ラベル列照合部８はステップＳ６３の処理を行う。ステップＳ６３において、ラベル列照合部８は、発話ＩＤ番号と重みの総和の値P(L1…LM)の組を検索結果リストＳに記録する。ステップＳ６４において、ラベル列照合部８は、引数jの値が登録番号の最大値Tに等しいか否かを判断する。引数jの値が登録番号の最大値Tに等しくない場合には、ラベル列照合部８はステップＳ６５の処理を行う。引数jの値が登録番号の最大値Tに等しい場合には、ラベル列照合部８はステップＳ６６の処理を行う。ステップＳ６５において、ラベル列照合部８は、引数jの値を１つ増加させるとともに引数Iに“１”を代入して、ステップＳ５３の処理に戻る。ステップＳ６６において、ラベル列照合部８は、検索結果リストＳに基づいて、クエリのラベル列に対応する１つ以上の音声データが記憶された音声データベース１内のアドレスを示すポインタを求めて、求められたポインタのリストを検索結果出力部９に出力して、一連の処理を終了する。
【００９０】
検索結果出力部９は、ラベル列照合部８で得られたポインタのリストを読み込む。それから、検索結果出力部９は、読み込んだポインタのリストに基づいて、クエリのラベル列に対応する音声データの情報を音声データベース１から抽出して、抽出された音声データの情報をディスプレイに出力する。検索結果出力部９は、音声データのファイル名とその音声データの時間区間情報の組のリストをディスプレイに表示しても良い。また、ユーザが、ディスプレイに表示されたリストの項目をマウスでクリックすると、検索結果出力部９はクエリのラベル列に対応する音声データを再生しても良い。
【００９１】
次に、図１５を参照して、本実施形態の音声データ検索方法を、一例を挙げて説明する。この説明において、図３乃至５，１０乃至１３Ｃに示したアーク（ラベル）“Ａ”，“Ｂ”，“Ｃ”，“Ｄ”，“Ｅ”，“Ｆ”，“Ｇ”，“Ｈ”，“Ｉ”，“Ｊ”は、単語“Kyoto”，“to”，“at”，“Tokyo”，“the”，“this”，“Asian”，“ancient”，“capital”，“capacity”をそれぞれ表していると仮定する。
【００９２】
ステップＳ７１において、音声認識部２は、音声データベース１から音声データを読み込み、図３に示した有向グラフ型（単語ラティス）のデータ構造で、複数の音声認識結果の候補をコンフュージョンネットワーク生成部３に出力する。ステップＳ７２において、コンフュージョンネットワーク生成部３は、単語ラティスを、図１０に示したコンフュージョンネットワークに変換して、コンフュージョンネットワークを転置索引テーブル生成部４に出力する。ステップＳ７３において、転置索引テーブル生成部４は、コンフュージョンネットワークに基づいて図１２に示した転置索引テーブルを構築して、転置索引テーブルを転置索引テーブル記憶部５に出力する。ステップＳ７４において、クエリ入力部６は、ユーザからのクエリの入力（Kyoto ancient）を受け付ける。ステップＳ７５において、クエリ変換部７は、クエリとして入力された文字列 “Kyoto ancient” を、単語を単位とするラベル列 “Kyoto”，“ancient” に変換する。なお、ステップＳ７４，Ｓ７５の処理は、ステップＳ７１の処理前に行ってもよいし、ステップＳ７１乃至Ｓ７３の処理と同時に行ってもよい。
【００９３】
ステップＳ７６において、ラベル列照合部８は、クエリ変換部７から読み込んだクエリのラベル列 “Kyoto”，“ancient”と、転置索引テーブル記憶部５に記憶された転置索引テーブルを読み込む。ステップＳ７７において、ラベル列照合部８は、クエリのラベル列“Kyoto”，“ancient”と転置索引テーブルを参照して、ラベル“Kyoto”，ラベル“ancient”，特殊ラベル@に対応付けられたアークだけからなる、図１３Ａに示した部分コンフュージョンネットワークを構築する。ステップＳ７８において、ラベル列照合部８は、クエリのラベル列 “Kyoto”，“ancient” から、図１３Ｂに示したクエリのグラフを構築する。ステップＳ７９において、ラベル列照合部８は、クエリのグラフと部分コンフュージョンネットワークの間でインターセクションを計算して、図１３Ｃに示したグラフを生成する。ステップＳ８０において、ラベル列照合部８は、図１３Ｃに示したグラフにおいて、始端ノードから終端ノードに至る全ての経路に対する出現確率の総和を求めて、求められた値をクエリのラベル列の出現確率とする。ステップＳ８１において、ラベル列照合部８は、ラベル列 “Kyoto”，“ancient” を含むコンフュージョンネットワークの転置索引テーブルから発話ＩＤ番号を読み取り、ラベル列の発話ＩＤ番号と出現確率の組を検索結果リストに加える。ステップＳ８２において、ラベル列照合部８は、検索結果リストに基づいて、クエリのラベル列に対応する１つ以上の音声データが記録された音声データベース１内の1つ以上のアドレスを示す1つ以上のポインタを求めて、求められたポインタのリストを検索結果出力部９に出力する。ステップＳ８３において、検索結果出力部９は、ラベル列照合部８で得られたポインタのリストを読み込んで、クエリのラベル列に対応する音声データの情報を音声データベース１から抽出する。ステップＳ８４において、検索結果出力部９は、抽出された音声データの情報をディスプレイに出力する。
【００９４】
次に、本実施形態における転置索引テーブルの削減効果及び音声データ検索性能を説明する。
【００９５】
音声データベース１は、マサチューセッツ工科大学のコンピュータ科学の約６時間分の講義音声データからなる。音声認識処理は、単語をラベルとする単語ラティスを出力する連続単語認識システムと、音素をラベルとする音素ラティスを出力する連続音素認識システムを利用する。音声認識部２は、連続単語認識システムと連続音素認識システムを、任意のタイミングで切り替えることができる。また、音声認識部２は、信号のパワー情報などを利用して、講義音声データを３，４秒程度の発話に分割して、分割された発話ごとにラティスを生成する。コンフュージョンネットワーク生成部３は、各生成されたラティスをコンフュージョンネットワークに変換し、コンフュージョンネットワークを転置索引テーブル生成部４に出力する。転置索引テーブル生成部４は、コンフュージョンネットワークに基づいて転置索引テーブルを生成して、転置索引テーブル記憶部５に出力する。その後、音声データ検索装置１０はクエリの入力待ちの状態になる。
【００９６】
クエリ入力部６は、キーボード、又はキーワードを記録したデータファイルからクエリを受け付ける。クエリ変換部７は、音素をラベルとする場合には、予め用意した辞書を利用して、クエリの各単語を音素列に変換する。ラベル列照合部８は、クエリのラベル列と転置索引テーブルを照合して、クエリのラベル列を含む発話ＩＤ番号のリストをディスプレイに出力する。
【００９７】
図１６は、本実施形態における転置索引テーブルの削減効果及び音声データ検索性能を示す。無作為に設定した１１５個のクエリを用いた。１１５個のクエリは、音声認識部２で使用される発音辞書及び言語モデルに登録されていない未登録語である１５個のクエリを含んでいる。クエリの長さは平均２.３単語である。本発明の音声データ検索方法と従来の音声データ検索方法を比較するために、単語ラティスに基づいてクエリのラベル列を解析するシステムと、音素ラティスに基づいてクエリのラベル列を解析するシステムを構築した。
【００９８】
検索性能の評価にはＦ値という尺度を用いた。Ｆ値は、検索された音声データのうち、正しかった音声データの割合（適合率）と、実際に存在する音声データのうち、見付かった音声データの割合（再現率）の調和平均をとった値である。Ｆ値は０〜１００％の値をとる。Ｆ値が増加するにつれて、検索性能が向上する。
【００９９】
図１６に示すように、１つの音声認識候補（単語列）を用いる音声データ検索方法は、複数の音声認識候補（単語列又は音素列）を用いる他の音声データ検索方法と比較して、転置索引テーブルのファイルサイズは低く抑えられているが、Ｆ値は最も低い値を示している。単語コンフュージョンネットワークを用いる音声データ検索方法は、単語ラティスを用いる従来の音声データ検索方法と比較して、転置索引テーブルのファイルサイズは低く抑えられており、かつ、Ｆ値は比較的高い値を示している。音素コンフュージョンネットワークを用いる音声データ検索方法は、音素ラティスを用いる従来の音声データ検索方法と比較して、転置索引テーブルのファイルサイズは低く抑えられており、かつ、Ｆ値は比較的高い値を示している。特に、音素コンフュージョンネットワークを用いた音声データ検索方法は、音声認識部２において発音辞書及び言語モデルに登録されていない未登録語を含む未登録語クエリ（out-of-vocabulary word (OOV) query）におけるＦ値は比較的高い値を示しており、かつ、他の音声データ検索方法と比較して、Ｆ値は最も高い値を示している。
【０１００】
次に、音声データ検索装置１０の有利な特徴を説明する。
【０１０１】
音声データ検索装置１０が実行する音声データ検索方法は、ラティスを用いる従来の音声データ検索方法と比較して、転置索引テーブルのファイルサイズを抑えることができる。
【０１０２】
音声データ検索装置１０が実行する音声データ検索方法は、音素ラティスを用いる従来の音声データ検索方法と比較して、音声認識に用いられる言語モデルに拘束されない、高精度な検索を行うことができる。
【０１０３】
音声データ検索装置１０を使用した音声データ検索方法は、コンフュージョンネットワークに基づいて、クエリのラベル列に出現するラベルを有するアークだけからなる部分コンフュージョンネットワークを構築するので、コンフュージョンネットワークを利用する際に、有効な転置索引テーブルの検索を行うことができる。
【０１０４】
（第２実施形態）
図１７及び１８を参照して、本発明の第２実施形態を説明する。第１実施形態の音声データ検索装置１０は、１種類の有向グラフ（音素ラティス、音節ラティス、又は単語ラティス）を用いて音声データを検索している。これに対して、第２実施形態の音声データ検索装置３０は、N（Ｎ≧２）種類の有向グラフを用いて音声データを検索する。
【０１０５】
図１７に示すように、音声データ検索装置３０は、音声データベース１、音声認識部２１…２Ｎ、コンフュージョンネットワーク生成部３１…３Ｎ、転置索引テーブル生成部４１…４Ｎ、転置索引テーブル記憶部５１…５Ｎ、クエリ入力部６、クエリ変換部７１…７Ｎ、ラベル列照合部８１…８Ｎ、検索結果出力部９、検索結果統合部２０を備えている。
【０１０６】
音声認識部２ｉ（１≦ｉ≦Ｎ）は、音声データベース１に接続されている。コンフュージョンネットワーク生成部３ｉ（１≦ｉ≦Ｎ）は、音声認識部２ｉと転置索引テーブル生成部４ｉ（１≦ｉ≦Ｎ）に接続されている。転置索引テーブル記憶部５ｉ（１≦ｉ≦Ｎ）は、転置索引テーブル生成部４ｉとラベル列照合部８ｉ（１≦ｉ≦Ｎ）に接続されている。ラベル列照合部８ｉは、クエリ変換部７ｉ（１≦ｉ≦Ｎ）と検索結果統合部２０に接続されている。
【０１０７】
音声認識部２１…２Ｎの構成は、第１実施形態の音声認識部２の構成と同じである。音声認識部２１…２Ｎで使用されるＮ個の有向グラフは互いに異なっている。音声認識部２１…２Ｎは、音声データベース１から音声データを読み取り、音声認識処理を実行する。コンフュージョンネットワーク生成部３１…３Ｎの構成は、第１実施形態のコンフュージョンネットワーク生成部３の構成と同じである。コンフュージョンネットワーク生成部３１…３Ｎは、音声認識部２１…２Ｎから出力された音素ラティス、音節ラティス、又は単語ラティスなどのＮ個の有向グラフ型のデータ構造をコンフュージョンネットワークにそれぞれ変換する。転置索引テーブル生成部４１…４Ｎの構成は、第１実施形態の転置索引テーブル生成部４の構成と同じである。転置索引テーブル生成部４１…４Ｎは、コンフュージョンネットワーク生成部３１…３Ｎから出力された各コンフュージョンネットワークの各アーク情報を、各アークに付与されたラベルごとに分類して、Ｎ個の転置索引テーブルをそれぞれ構築する。転置索引テーブル記憶部５１…５Ｎの構成は、第１実施形態の転置索引テーブル記憶部５の構成と同じである。転置索引テーブル記憶部５１…５Ｎは、転置索引テーブル生成部４１…４Ｎから出力されたＮ個の転置索引テーブルをそれぞれ記憶する。
【０１０８】
クエリ変換部７１…７Ｎの構成は、第１実施形態のクエリ変換部７の構成と同じである。クエリ変換部７１…７Ｎは、クエリとして入力された文字列をＮ個のラベル列にそれぞれ変換する。ラベル列照合部８１…８Ｎの構成は、第１実施形態のラベル列照合部８の構成と同じである。ラベル列照合部８１…８Ｎは、クエリ変換部７１…７Ｎで生成されたラベル列のＮ個のグラフと、コンフュージョンネットワーク生成部３１…３Ｎで生成されたＮ個のコンフュージョンネットワークに基づいて構築されたＮ個の部分コンフュージョンネットワークの間でインターセクションを計算する。
【０１０９】
検索結果統合部２０は、ラベル列照合部８１…８Ｎで得られた１つ以上の検索結果リストを読み込んで、１つの検索結果リストに統合する。検索結果統合部２０は、２つ以上の検索結果リストを読み込んだ場合には、これらの検索結果リストを統合する過程において、同一のラベル列の発話ＩＤを有する２つ以上の組が存在するか否かを検索する。同一のラベル列の発話ＩＤを有する２つ以上の組が存在すれば、検索結果統合部２０は、ラベル列の出現確率が一番大きな値を有する組を残して、他の組を削除する。それから、検索結果統合部２０は、統合された検索結果リストに基づいて、クエリのラベル列に対応する１つ以上の音声データが記憶された音声データベース１内の１つ以上のアドレスを示す1つ以上のポインタを求めて、求められたポインタのリストを検索結果出力部９に出力する。検索結果出力部９は、検索結果統合部２０で得られたポインタのリストを読み込む。それから、検索結果出力部９は、読み込んだポインタのリストに基づいて、クエリのラベル列に対応する音声データの情報を音声データベース１から抽出して、抽出された音声データの情報をディスプレイに出力する。
【０１１０】
次に、図１８を参照して、本実施形態の音声データ検索方法を、一例を挙げて説明する。
【０１１１】
ステップＳ９１において、音声認識部２i（１≦ｉ≦Ｎ）は、音声データベース１から音声データを読み込み、音響モデル、発音辞書、及び言語モデルを参照して、音声認識部２iに対応する有向グラフ型のデータ構造で、複数の音声認識結果の候補をコンフュージョンネットワーク生成部３i（１≦ｉ≦Ｎ）に出力する。ステップＳ９２において、コンフュージョンネットワーク生成部３iは、音声認識部２iに対応する有向グラフをコンフュージョンネットワークに変換して、コンフュージョンネットワークを転置索引テーブル生成部４i（１≦ｉ≦Ｎ）に出力する。ステップＳ９３において、転置索引テーブル生成部４iは、コンフュージョンネットワークに基づいて転置索引テーブルを構築して、転置索引テーブルを転置索引テーブル記憶部５i（１≦ｉ≦Ｎ）に出力する。ステップＳ９４において、クエリ入力部６は、ユーザからのクエリの入力を受け付ける。ステップＳ９５において、クエリ変換部７i（１≦ｉ≦Ｎ）は、自身の辞書を参照して、クエリとして入力された文字列を、対応するラベル列に変換する。なお、ステップＳ９４，Ｓ９５の処理は、ステップＳ９１の処理前に行ってもよいし、ステップＳ９１乃至Ｓ９３の処理と同時に行ってもよい。
【０１１２】
ステップＳ９６において、ラベル列照合部８i（１≦ｉ≦Ｎ）は、クエリ変換部７iから読み込んだクエリのラベル列と、転置索引テーブル記憶部５iに記憶された転置索引テーブルを読み込む。ステップＳ９７において、ラベル列照合部８iは、クエリのラベル列と転置索引テーブルを参照して、クエリのラベル列を構成する１つ以上のラベル及び特殊ラベル@に対応付けられたアークだけからなる、部分コンフュージョンネットワークを構築する。ステップＳ９８において、ラベル列照合部８iは、クエリのラベル列に基づいてクエリのグラフを生成する。ステップＳ９９において、ラベル列照合部８iは、クエリのグラフと部分コンフュージョンネットワークの間でインターセクションを計算して、グラフを生成する。ステップＳ１００において、ラベル列照合部８iは、ステップＳ９９で生成されたグラフにおいて、始端ノードから終端ノードに至る全ての経路に対する出現確率の総和を求めて、求められた値をクエリのラベル列の出現確率とする。ステップＳ１０１において、ラベル列照合部８iは、クエリのラベル列を含むコンフュージョンネットワークの転置索引テーブルから発話ＩＤ番号を読み取り、ラベル列の発話ＩＤ番号と出現確率の組を検索結果リストに加える。ステップＳ１０２において、検索結果統合部２０は、ラベル列照合部８１…８Ｎで得られた１つ以上の検索結果リストを読み込んで、１つの検索結果リストに統合して、統合された検索結果リストに基づいて、クエリのラベル列に対応する１つ以上の音声データが記憶された音声データベース１内の１つ以上のアドレスを示す１つ以上のポインタを求めて、求められたポインタのリストを検索結果出力部９に出力する。ステップＳ１０３において、検索結果出力部９は、検索結果統合部２０で得られたポインタのリストを読み込んで、読み込んだポインタのリストに基づいてクエリのラベル列に対応する音声データの情報を音声データベース１から抽出する。ステップＳ１０４において、検索結果出力部９は、抽出された音声データの情報をディスプレイに出力する。
【０１１３】
次に、音声データ検索装置３０の有利な特徴を説明する。
【０１１４】
音声データ検索装置３０が実行する音声データ検索方法は、音声データ検索装置１０が実行する音声データ検索方法の有利な特徴に加えて、複数のラベル体系を用いた音声データ検索処理を並列に実行することができる。
【０１１５】
（第３実施形態）
図１９及び２３を参照して、本発明の第３実施形態を説明する。第２実施形態の音声データ検索装置２０は、ラベル体系ごとに独立して音声データを検索している。これに対して、本実施形態の音声データ検索装置５０は、全てのラベル体系を結合した結合ネットワークを用いて音声データを検索する。本実施形態の音声データ検索方法は、クエリとして入力される文字列が、音声認識部２で使用される発音辞書と言語モデルに登録されていない未登録単語を含む場合に有効である。
【０１１６】
図１９に示すように、音声データ検索装置５０は、音声データベース１、音声認識部２１…２Ｎ、コンフュージョンネットワーク生成部３１…３Ｎ、転置索引テーブル生成部４、転置索引テーブル記憶部５、クエリ入力部６、クエリ変換部７、ラベル列照合部８、検索結果出力部９、コンフュージョンネットワーク結合部４０を備えている。例えば、音声データ検索装置５０は、２種類の有向グラフ（音素ラティス及び単語ラティス）を用いて音声データを検索する場合には、音声認識部２１，２２及びコンフュージョンネットワーク生成部３１，３２を有する。
【０１１７】
音声認識部２ｉ（１≦ｉ≦Ｎ）は、音声データベース１に接続されている。コンフュージョンネットワーク生成部３ｉ（１≦ｉ≦Ｎ）は、音声認識部２ｉとコンフュージョンネットワーク結合部４０に接続されている。転置索引テーブル生成部４は、コンフュージョンネットワーク結合部４０と転置索引テーブル記憶部５に接続されている。
【０１１８】
音声認識部２１…２Ｎの構成は、第１実施形態の音声認識部２の構成と同じである。音声認識部２１…２Ｎで使用されるＮ個の有向グラフは互いに異なっている。音声認識部２１…２Ｎは、音声データベース１から音声データを読み取り、音声認識処理を実行する。コンフュージョンネットワーク生成部３１…３Ｎの構成は、第１実施形態のコンフュージョンネットワーク生成部３の構成と同じである。コンフュージョンネットワーク生成部３１…３Ｎは、音声認識部２１…２Ｎから出力された音素ラティス、音節ラティス、又は単語ラティスなどのＮ個の有向グラフ型のデータ構造をＮ個のコンフュージョンネットワークにそれぞれ変換する。
【０１１９】
コンフュージョンネットワーク結合部４０は、コンフュージョンネットワーク生成部３１…３Ｎから出力されたN個のコンフュージョンネットワークを結合して、１つの結合ネットワークを生成する。例えば、音声データ検索装置５０が、２種類の有向グラフ（音素ラティス及び単語ラティス）を用いて音声データを検索する場合、コンフュージョンネットワーク生成部３１から出力された音素コンフュージョンネットワーク（又は単語コンフュージョンネットワーク）と、コンフュージョンネットワーク生成部３２から出力された単語コンフュージョンネットワーク（又は音素コンフュージョンネットワーク）を結合して、単語−音素結合ネットワークを構築する。転置索引テーブル生成部４は、コンフュージョンネットワーク結合部４０から出力された結合ネットワークの各アーク情報を、各アークに付与されたラベルごとに分類して、転置索引テーブルを構築する。
【０１２０】
クエリ変換部７は、クエリとして入力された文字列をラベル列に変換する。例えば、音声データ検索装置５０が、２種類の有向グラフ（音素ラティス及び単語ラティス）を用いて音声データを検索する場合、クエリ変換部７は、最初に、辞書を利用して、クエリとして入力された文字列を単語列に変換する。それから、クエリ変換部７は、音声認識部２で使用される発音辞書と言語モデルに登録されている登録単語を単語として扱い、かつ、音声認識部２で使用される発音辞書と言語モデルに登録されていない未登録単語を音素列として扱うことにより、単語列を、音素と単語が混合したラベル列に変換する。
【０１２１】
ラベル列照合部８は、クエリ変換部７で生成されたラベル列のグラフと、コンフュージョンネットワーク結合部４０で生成された結合ネットワークから構築された部分コンフュージョンネットワークの間でインターセクションを計算する。そして、ラベル列照合部８は、検索結果リストＳに基づいて、クエリのラベル列に対応する１つ以上の音声データが記録された音声データベース１内の１つ以上のアドレスを示す１つ以上のポインタを求めて、求められたポインタのリストを検索結果出力部９に出力する。例えば、音声データ検索装置５０が２種類の有向グラフ（音素ラティス及び単語ラティス）を用いて音声データを検索する場合、ラベル列照合部８は、クエリ変換部７で生成されたラベル列のグラフと、コンフュージョンネットワーク結合部４０で生成された単語−音素結合ネットワークから構築された部分コンフュージョンネットワークの間でインターセクションを計算する。
【０１２２】
次に、図２０乃至図２２Ｃを参照して、コンフュージョンネットワーク結合部４０において結合ネットワークを生成する方法を、一例を挙げて説明する。ここで、コンフュージョンネットワーク結合部４０は、コンフュージョンネットワーク生成部３１から、図２１Ａに示した音素コンフュージョンネットワークを受け取り、かつ、コンフュージョンネットワーク生成部３２から、図２１Ｂに示した単語コンフュージョンネットワークを受け取る。なお、単語Aの発音表記は記号“a1”，“a2”，“ a3”であり、単語Bの発音表記は記号“b1”，“b2”であり、単語Cの発音表記は記号“c1”である。
【０１２３】
ステップＳ１１１において、コンフュージョンネットワーク結合部４０は、音素コンフュージョンネットワークの各音素ラベルを、入力ラベルと出力ラベルの組に変換して、音素コンフュージョンネットワークに基づいて第１有限状態変換器を生成する（図２２Ａ参照）。入力ラベルは、音素ラベルと、その音素ラベルが付与されたアークの始端ノードと終端ノードの番号からなる。出力ラベルは音素ラベルからなる。第１有限状態変換器は、各アークのラベルとして、入力ラベルと出力ラベルの組を有する有向グラフである。第１有限状態変換器は、第１有限状態変換器の始端ノードから終端ノードに至る実現可能な経路を表現した入力ラベル列を、その入力ラベル列に対応する出力ラベル列に置き換えるモデルとして、ラベル列の変換規則を表現している。例えば、図２１Ａに示した音素コンフュージョンネットワークにおいて、音素ラベル“a3”は、音素ラベル“a3”が付与されたアークの始端ノードの番号が“2”、終端ノードの番号が“3”であるため、入力ラベルと出力ラベルの組“a3(2-3):a3”に変換される。ただし、“:”は入力ラベルと出力ラベルを区切るための記号である。
【０１２４】
ステップＳ１１２において、コンフュージョンネットワーク結合部４０は、単語コンフュージョンネットワークの各単語ラベルとその単語ラベルのアークを、その単語の発音を表す音素列ラベルとその音素列ラベルを構成する１つ以上の音素ラベルが付与された１つ以上のアークに置き換える。音素ラベルが付与された２つの隣接したアークの間には、ノードが置かれる。さらに、コンフュージョンネットワーク結合部４０は、各音素ラベルを、入力ラベルと出力ラベルの組に変換して、単語コンフュージョンネットワークに基づいて第２有限状態変換器を生成する（図２２Ｂ参照）。入力ラベルは音素ラベルからなる。出力ラベルは、単語ラベルとその単語ラベルの位置情報（単語の最初の音素、単語の最後の音素、又は単語の最初又は最後以外の位置で出現する音素）からなる。例えば、単語“A”の最初の音素が音素“a1”である場合、第２有限状態変換器のアークは、音素“a1”が付与された入力ラベルと、単語“A”と単語“A”の最初を表す記号“_s”を結合した記号“A_s”が付与された出力ラベルの組“a1:A_s”で表現される。単語“A”の最後の音素が“a3”である場合、第２有限状態変換器のアークは、音素“a3”が付与された入力ラベルと、単語“A”と単語“A”の最後を表す記号“_e”を結合した記号“A_e”が付与された出力ラベルの組“a3:A_e”で表現される。単語“A”の最初又は最後以外の音素が音素“a2”である場合、第２有限状態変換器のアークは、音素“a2”を付与された入力ラベルと、記号“@”が付与された出力ラベルの組“a2:@”で表現される。単語“C”の最初かつ最後の音素が“c1”である（発音が一音素である）場合、第２有限状態変換器のアークは、音素“c1”が付与された入力ラベルと、単語“C”が付与された出力ラベルの組“c1:C”で表現される。また、コンフュージョンネットワーク結合部４０は、第２有限状態変換器の各ノードに、自身の先行ノードに戻るアークを加えて、加えられたアークにラベル“@:@”を付与する。
【０１２５】
ステップＳ１１３において、コンフュージョンネットワーク結合部４０は、２つのグラフの合成を計算するアルゴリズムに従って、第１有限状態変換器と第２有限状態変換器を合成して、第３有限状態変換器を生成する（図２２Ｃ参照）。具体的には、コンフュージョンネットワーク結合部４０は、第１有限状態変換器の出力ラベル列が第２有限状態変換器の入力ラベル列に一致するように、第１有限状態変換器の各経路を第２有限状態変換器の各経路に対応付けて、第１有限状態変換器と第２有限状態変換器を合成する。第３有限状態変換器において、各ノードは、第１有限状態変換器の対応するノードの番号と、第２有限状態変換器の対応するノードの番号の組を有する。また、第３有限状態変換器において、各アークは、音素の位置情報と単語の位置情報を組にしたラベルを有する。
【０１２６】
２つのグラフG1, G2の合成するアルゴリズムを説明する。このアルゴリズムは次のとおりである。
【０１２７】
Composition (G1, G2)
1  V←I1 × I2
2  S←I1 × I2
3  while S≠Φ do
4      (v1, v2)←HEAD(S)
5      DEQUEUE(S)
6       if (v1, v2) ∈ I1 × I2 then
7              I←I∪{(v1, v2)}
8      if (v1, v2) ∈ F1 × F2 then
9              F←F∪{(v1, v2)}                
10            for each (e1, e2)∈E[v1] × E[v2] such that o[e1] = i[e2] do
11                      if not (n[e1], n[e2]) ∈ V then
12                            V←V∪{(n[e1], n[e2])}
13                            ENQUEUE(S, (n[e1], n[e2]))
14                    E←E∪{((v1, v2),(n[e1],n[e2]), i[e1],o[e2])}
15  return G
ここで、グラフGは、ノードの集合V、アークの集合H、始端ノードの集合I、終端ノードの集合Fを有し、アークの集合H(v)はノードvに入ってくるアークの集合、k[e]はアークeの先行ノード、n[e]をアークeの後続ノード、i[e]をアークeの入力ラベル、o[e]をアークeの出力ラベル、HEAD(S)は待ち行列Sの先頭の要素を返す関数、DEQUEUE(S)は待ち行列Sの先頭の要素を削除する関数、ENQUEUE(S, x)は待ち行列Sの最後に要素xを加える関数である。なお、２つのグラフG1, G2は有限状態変換器を表している。２つのグラフG1, G2に対応するノードとアークを区別するために、各アルファベットに添え字“1”，“2”を付している。
【０１２８】
ステップＳ１１４において、コンフュージョンネットワーク結合部４０は、第３有限状態変換器に基づいて単語‐音素結合ネットワークを生成する（図２１Ｃ参照）。例えば、第３有限状態変換器のラベル“a1(0-1):A_s”は、音素“a1”が音素コンフュージョンネットワークのノード“０”とノード“１”の間に張られたアークのラベルであり、かつ、単語“Ａ”の最初の音素であることを表している。また、第３有限状態変換器のラベル“a3(2-3):A_e”は、音素“a3”が音素コンフュージョンネットワークのノード“２”とノード“３”の間に張られたアークのラベルであり、かつ、単語“A”の最後の音素であることを表している。それゆえ、単語コンフュージョンネットワークにおいて、コンフュージョンネットワーク結合部４０は、単語“A”のラベルが付与されたアークを、音素コンフュージョンネットワークのノード“０”とノード“３”の間に付与できる。さらに、第３有限状態変換器のラベル“c1(3-4):C”は、音素“c1”が音素コンフュージョンネットワークのノード“３”とノード“４”の間に張られたアークのラベルであり、かつ、単語“C”の最初かつ最後の音素であることを表している。それゆえ、コンフュージョンネットワーク結合部４０は、単語コンフュージョンネットワークにおいて、単語“C”のラベルが付与されたアークを、音素コンフュージョンネットワークのノード“３”とノード“４”の間に付与できる。このように、単語‐音素結合ネットワークでは、単語コンフュージョンネットワークのアークが、単語の順序関係を変えることなく、音素コンフュージョンネットワークに追加されており、各単語のアークの先行ノードと後続ノードの間に、各単語の発音（音素列）を表す経路が含まれている。
【０１２９】
音声データ検索装置５０が、クエリとして単語列“ＢＤ”を検索する場合を考える。なお、単語“Ｄ”は未登録単語であって、単語“Ｄ”の発音は“a3”，“c1”であると仮定する。ラベル列照合部８は、登録単語“Ｂ”を単語として扱い、未登録単語“Ｄ”を音素列“a3”，“c1”として扱う。ラベル列照合部８は、ラベル列“B”，“a3”，“c1”が図２１Ｃに示した単語‐音素結合ネットワークの経路に含まれるので、クエリとして単語列“ＢＤ”を検索することができる。
【０１３０】
次に、図２３を参照して、本実施形態の音声データ検索方法を、一例を挙げて説明する。
【０１３１】
ステップＳ１２１において、音声認識部２i（１≦ｉ≦Ｎ）は、音声データベース１から音声データを読み込み、音響モデル、発音辞書、及び言語モデルを参照して、音声認識部２iに対応する有向グラフ型のデータ構造で、複数の音声認識結果の候補をコンフュージョンネットワーク生成部３i（１≦ｉ≦Ｎ）に出力する。ステップＳ１２２において、コンフュージョンネットワーク生成部３iは、音声認識部２iに対応する有向グラフをコンフュージョンネットワークに変換して、コンフュージョンネットワーク結合部４０に出力する。ステップＳ１２３において、コンフュージョンネットワーク結合部４０は、コンフュージョンネットワーク生成部３１…３Ｎから出力されたN個のコンフュージョンネットワークを結合して、１つの結合ネットワークを生成して、結合ネットワークを転置索引テーブル生成部４に出力する。ステップＳ１２４において、転置索引テーブル生成部４は、結合ネットワークに基づいて転置索引テーブルを構築して、転置索引テーブルを転置索引テーブル記憶部５に出力する。ステップＳ１２５において、クエリ入力部６は、ユーザからのクエリの入力を受け付ける。ステップＳ１２６において、クエリ変換部７は、自身の辞書を参照して、クエリとして入力された文字列を、対応するラベル列に変換する。なお、ステップＳ１２５，Ｓ１２６の処理は、ステップＳ１２１の処理前に行ってもよいし、ステップＳ１２１乃至Ｓ１２４の処理と同時に行ってもよい。
【０１３２】
ステップＳ１２７において、ラベル列照合部８は、クエリ変換部７から読み込んだクエリのラベル列と、転置索引テーブル記憶部５に記憶された転置索引テーブルを読み込む。ステップＳ１２８において、ラベル列照合部８は、登録単語を単語として扱い、かつ、未登録単語を音素列として扱うことにより、クエリのラベル列と転置索引テーブルを参照して、クエリのラベル列を構成する１つ以上のラベル及び特殊ラベル“@”に対応付けられたアークだけからなる、部分コンフュージョンネットワークを生成する。ステップＳ１２９において、ラベル列照合部８は、登録単語を単語として扱い、かつ、未登録単語を音素列として扱うことにより、クエリのラベル列から、クエリのグラフを生成する。ステップＳ１３０において、ラベル列照合部８は、クエリのグラフと部分コンフュージョンネットワークの間でインターセクションを計算して、グラフを生成する。ステップＳ１３１において、ラベル列照合部８は、ステップＳ１３０で生成されたグラフにおいて、始端ノードから終端ノードに至る全ての経路に対する出現確率の総和を求めて、求められた値をクエリのラベル列の出現確率とする。ステップＳ１３２において、ラベル列照合部８は、クエリのラベル列を含むコンフュージョンネットワークの転置索引テーブルから発話ＩＤ番号を読み取り、ラベル列の発話ＩＤ番号と出現確率の組を検索結果リストに記録する。ステップＳ１３３において、ラベル列照合部８は、検索結果リストに基づいて、クエリのラベル列に対応する１つ以上の音声データが記録された音声データベース１内の１つ以上のアドレスを示す1つ以上のポインタを求めて、求められたポインタのリストを検索結果出力部９に出力する。ステップＳ１３４において、検索結果出力部９は、ラベル列照合部８で得られたポインタのリストを読み込んで、クエリのラベル列に対応する音声データの情報を音声データベース１から抽出する。ステップＳ１３５において、検索結果出力部９は、抽出された音声データの情報をディスプレイに出力する。
【０１３３】
次に、音声データ検索装置５０の有利な特徴を説明する。
【０１３４】
音声データ検索装置５０が実行する音声データ検索方法は、音声データ検索装置１０が実行する音声データ検索方法の有利な特徴に加えて、クエリに登録単語と未登録単語の両方が含まれていても音声データを検索することができる。
【０１３５】
単語をラベルとして音声認識を行う場合、クエリに未登録単語が含まれていると、未登録単語は、従来の音声データ検索装置では正しく認識されず、かつ、コンフュージョンネットワークの中にも出現しない。それゆえ、クエリに未登録単語が含まれていると、従来の音声データ検索装置は、その未登録単語により、音声データを検索することができない。一方、音素をラベルとして音声認識を行う場合、従来の音声データ検索装置は、クエリに含まれる全ての単語を音素列に変換してからラベル列の照合を行う。それゆえ、クエリに未登録単語が含まれていても、従来の音声データ検索装置は、音声データを検索することができる可能性がある。しかしながら、単語を音素列などの発音表記に変換すると、従来の音声データ検索装置は、同音異義語（発音は同じで表記が異なる単語）の区別ができなくなるので、登録単語に関する音声データ検索の精度が劣化する可能性がある。
【０１３６】
本実施形態のように、クエリに含まれる登録単語を単語として扱い、かつ、クエリに含まれる未登録単語を音素列として扱うことにより、上述の問題を解決することができる。
【産業上の利用可能性】
【０１３７】
本発明に係る音声データ検索装置、音声データ検索方法、及び音声データ検索プログラムは、次の有利な特徴を有している：（１）転置索引テーブルのファイルサイズを抑えることができる；（２）音声認識に用いられる言語モデルに拘束されない、高精度な検索ができる；（３）転置索引テーブルのサイズを抑えるために作成されるコンフュージョンネットワークを利用する際に、有効な転置索引テーブルの検索ができる。
【図１】
2010522923.tif 000006
【図２】
2010522923.tif 000007
【図３】
2010522923.tif 000008
【図４】
2010522923.tif 000009
【図５】
2010522923.tif 000010
【図６】
2010522923.tif 000011
【図７】
2010522923.tif 000012
【図８】
2010522923.tif 000013
【図９】
2010522923.tif 000014
【図１０】
2010522923.tif 000015
【図１１】
2010522923.tif 000016
【図１２】
2010522923.tif 000017
【図１３Ａ】
2010522923.tif 000018
【図１３Ｂ】
2010522923.tif 000019
【図１３Ｃ】
2010522923.tif 000020
【図１４】
2010522923.tif 000021
【図１５】
2010522923.tif 000022
【図１６】
2010522923.tif 000023
【図１７】
2010522923.tif 000024
【図１８】
2010522923.tif 000025
【図１９】
2010522923.tif 000026
【図２０】
2010522923.tif 000027
【図２１Ａ】
2010522923.tif 000028
【図２１Ｂ】
2010522923.tif 000029
【図２１Ｃ】
2010522923.tif 000030
【図２２Ａ】
2010522923.tif 000031
【図２２Ｂ】
2010522923.tif 000032
【図２２Ｃ】
2010522923.tif 000033
【図２３】
2010522923.tif 000034
【手続補正書】
【提出日】平成21年9月29日(2009.9.29)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2010522923.tif 000035
【国際調査報告】
2010522923.tif 000036
2010522923.tif 000037
2010522923.tif 000038