(57)【要約】【課題】語彙ネットワークの追加／削除を行う計算効率の良い方法を与える音声認識装置を提供すること。【解決手段】文法記憶部１１は、特定の単語又は文から特定の語頭側部分を除いた語中部を複数含んで構成される複数の語彙のデータと、複数の語彙に共通する語頭側部分を表現するために、ラベル付けされた複数の語頭部ノードを含む語頭部を記憶する。文法編集部１２は、対象とする語彙と処理が指示されると、語彙を追加する処理が指示された場合、語頭部と、指示された語彙と、該語彙に含まれる複数の語中部にそれぞれ対応する、当該語中部が複数の語頭部ノードのうち予め対応付けられた一つに接続されていることを示す語頭部側接続情報とを含む文法ネットワークを生成する。音声認識部１３は、生成された文法ネットワークを用いて音声認識を行う。【選択図】      図１
2009229529.tif 000002
【特許請求の範囲】
【請求項１】
音声認識対象となる単語又は文の集合を与える文法ネットワークを用いる音声認識装置であって、
特定の単語又は文から特定の語頭側部分を除いた語中部を複数含んで構成される複数の語彙と、複数の語彙に共通する語頭側部分を表現するために、ラベル付けされた複数の語頭部ノードを含む語頭部とを記憶する記憶部と、
前記複数の語彙のうちから、対象とする語彙の選択指示と、その語彙に対する処理の選択指示とを受け付ける指示受付部と、
選択指示された前記処理が、語彙を追加する処理である場合に、前記語頭部と、選択指示された前記語彙と、選択指示された前記語彙に含まれる複数の前記語中部にそれぞれ対応する、当該語中部が前記複数の語頭部ノードのうち予め対応付けられた一つに接続されていることを示す語頭部側接続情報とを含む文法ネットワークを生成する文法ネットワーク生成部と、
生成された前記文法ネットワークを用いて音声認識を行う音声認識部とを備えたことを特徴とする音声認識装置。
【請求項２】
前記文法ネットワーク生成部は、選択指示された前記処理が、語彙を削除する処理である場合に、前記文法ネットワークから、選択指示された前記語彙と、該語彙に係る前記語頭部側接続情報とを削除することを特徴とする請求項１に記載の音声認識装置。
【請求項３】
前記語中部は、ラベル付けされたノードの系列を含むネットワークにより構成され、
前記音声認識装置は、前記語中部に含まれる前記ラベル付けされたノードの数を削減するように前記語頭部を更新するとともに、該更新された語頭部に適合するように前記語中部を更新する更新部を更に備えたことを特徴とする請求項２に記載の音声認識装置。
【請求項４】
前記語頭部は、初期状態ノードをルートノードとした、ラベル付けされたノードを含むネットワークにより構成され、
前記語頭部の初期状態を、前記初期状態ノードのみを含むものとして、前記語頭部の更新及び前記語中部の更新を行うことを特徴とする請求項３に記載の音声認識装置。
【請求項５】
前記記憶部は、前記文法ネットワークにおいて語彙が可変である部分を少なくとも１個定義した、前記文法ネットワークの雛形である文法フレームを更に記憶し、
前記文法ネットワーク生成部は、前記文法フレームを雛形として、前記文法ネットワークを生成することを特徴とする請求項２に記載の音声認識装置。
【請求項６】
前記語中部は、ラベル付けされたノードの系列を含むネットワークにより構成され、
前記音声認識装置は、前記語中部に含まれる前記ラベル付けされたノードの数を削減するように前記語頭部を更新するとともに、該更新された語頭部に適合するように前記語中部を更新する更新部を更に備えたことを特徴とする請求項５に記載の音声認識装置。
【請求項７】
前記語頭部は、初期状態ノードをルートノードとした、ラベル付けされたノードを含むネットワークにより構成され、
前記語頭部の初期状態を、前記初期状態ノードのみを含むものとして、前記語頭部の更新及び前記語中部の更新を行うことを特徴とする請求項６に記載の音声認識装置。
【請求項８】
前記語中部は、特定の単語又は文から特定の語頭側部分及び特定の語尾側部分を除いたものであり、
前記記憶部は、複数の語彙に共通する語尾側部分を表現するために、ラベル付けされた複数の語尾部ノードを含む語尾部を更に記憶し、
前記文法ネットワーク生成部は、選択指示された前記処理が、語彙を追加する処理である場合に、前記語頭部と、前記語尾部と、選択指示された前記語彙と、該語彙に係る前記語頭部側接続情報と、該語彙に含まれる複数の前記語中部にそれぞれ対応する、当該語中部が前記複数の語尾部ノードのうち予め対応付けられた一つに接続されていることを示す語尾部側接続情報とを含む文法ネットワークを生成することを特徴とする請求項１に記載の音声認識装置。
【請求項９】
前記文法ネットワーク生成部は、選択指示された前記処理が、語彙を削除する処理である場合に、前記文法ネットワークから、選択指示された前記語彙と、該語彙に係る前記語頭部側接続情報及び前記語尾部側接続情報とを削除することを特徴とする請求項７に記載の音声認識装置。
【請求項１０】
前記語中部は、ラベル付けされたノードの系列を含むネットワークにより構成され、
前記音声認識装置は、前記語中部に含まれる前記ラベル付けされたノードの数を削減するように前記語頭部及び前記語尾部を更新するとともに、該更新された語頭部及び語尾部に適合するように前記語中部を更新する更新部を更に備えたことを特徴とする請求項９に記載の音声認識装置。
【請求項１１】
前記語頭部は、初期状態ノードをルートノードとした、ラベル付けされたノードを含むネットワークにより構成され、
前記語尾部は、最終状態ノードをリーフノードとした、ラベル付けされたノードを含むネットワークにより構成され、
前記語頭部及び語尾部の初期状態をそれぞれ前記初期状態ノードのみを含むもの及び前記最終状態ノードのみを含むものとして、前記語頭部及び語尾部の更新並びに前記語中部の更新を行うことを特徴とする請求項１０に記載の音声認識装置。
【請求項１２】
前記記憶部は、前記文法ネットワークにおいて語彙が可変である部分を少なくとも１個定義した、前記文法ネットワークの雛形である文法フレームを更に記憶し、
前記文法ネットワーク生成部は、前記文法フレームを雛形として、前記文法ネットワークを生成することを特徴とする請求項９に記載の音声認識装置。
【請求項１３】
前記語中部は、ラベル付けされたノードの系列を含むネットワークにより構成され、
前記音声認識装置は、前記語中部に含まれる前記ラベル付けされたノードの数を削減するように前記語頭部及び前記語尾部を更新するとともに、該更新された語頭部及び語尾部に適合するように前記語中部を更新する更新部を更に備えたことを特徴とする請求項１２に記載の音声認識装置。
【請求項１４】
前記語頭部は、初期状態ノードをルートノードとした、ラベル付けされたノードを含むネットワークにより構成され、
前記語尾部は、最終状態ノードをリーフノードとした、ラベル付けされたノードを含むネットワークにより構成され、
前記語頭部及び語尾部の初期状態をそれぞれ前記初期状態ノードのみを含むもの及び前記最終状態ノードのみを含むものとして、前記語頭部及び語尾部の更新並びに前記語中部の更新を行うことを特徴とする請求項１３に記載の音声認識装置。
【請求項１５】
前記文法ネットワーク生成部は、選択指示された前記処理が、語彙を追加する処理である場合に、初めて文法ネットワークを生成するときは、前記語頭部のみを含む状態の文法ネットワークを生成した後に、該文法ネットワークに、選択指示された前記語彙と、該語彙に係る前記語頭部側接続情報とを追加し、既に文法ネットワークが存在するときは、当該文法ネットワークに、選択指示された前記語彙と、該語彙に係る前記語頭部側接続情報とを追加することを特徴とする請求項１に記載の音声認識装置。
【請求項１６】
前記文法ネットワーク生成部は、選択指示された前記処理が、語彙を追加する処理である場合に、初めて文法ネットワークを生成するときは、前記語頭部及び前記語尾部のみを含む状態の文法ネットワークを生成した後に、該文法ネットワークに、選択指示された前記語彙と、該語彙に係る前記語頭部側接続情報及び前記語尾部側接続情報とを追加し、既に文法ネットワークが存在するときは、当該文法ネットワークに、選択指示された前記語彙と、該語彙に係る前記語頭部側接続情報及び前記語尾部側接続情報とを追加することを特徴とする請求項８に記載の音声認識装置。
【請求項１７】
記憶部と指示受付部と文法ネットワーク生成部と音声認識部とを備え且つ音声認識対象となる単語又は文の集合を与える文法ネットワークを用いる音声認識装置の文法ネットワーク生成方法であって、
前記記憶部が、特定の単語又は文から特定の語頭側部分を除いた語中部を複数含んで構成される複数の語彙と、複数の語彙に共通する語頭側部分を表現するために、ラベル付けされた複数の語頭部ノードを含む語頭部とを記憶し、
前記指示受付部が、前記複数の語彙のうちから、対象とする語彙の選択指示と、その語彙に対する処理の選択指示とを受け付け、
前記文法ネットワーク生成部が、選択指示された前記処理が、語彙を追加する処理である場合に、前記語頭部と、選択指示された前記語彙と、選択指示された前記語彙に含まれる複数の前記語中部にそれぞれ対応する、当該語中部が前記複数の語頭部ノードのうち予め対応付けられた一つに接続されていることを示す語頭部側接続情報とを含む文法ネットワークを生成し、
前記音声認識部が、生成された前記文法ネットワークを用いて音声認識を行うことを特徴とする文法ネットワーク生成方法。
【請求項１８】
音声認識対象となる単語又は文の集合を与える文法ネットワークを用いる音声認識装置としてコンピュータを機能させるためのプログラムであって、
特定の単語又は文から特定の語頭側部分を除いた語中部を複数含んで構成される複数の語彙と、複数の語彙に共通する語頭側部分を表現するために、ラベル付けされた複数の語頭部ノードを含む語頭部とを記憶する記憶部と、
前記複数の語彙のうちから、対象とする語彙の選択指示と、その語彙に対する処理の選択指示とを受け付ける指示受付部と、
選択指示された前記処理が、語彙を追加する処理である場合に、前記語頭部と、選択指示された前記語彙と、選択指示された前記語彙に含まれる複数の前記語中部にそれぞれ対応する、当該語中部が前記複数の語頭部ノードのうち予め対応付けられた一つに接続されていることを示す語頭部側接続情報とを含む文法ネットワークを生成する文法ネットワーク生成部と、
生成された前記文法ネットワークを用いて音声認識を行う音声認識部とをコンピュータを実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声認識装置及び音声認識方法に関する。
【背景技術】
【０００２】
音声認識装置に関する技術として、音声認識用の文法を生成する技術がある。ここで、文法とは、音声認識の対象とする語彙を与えるものを意味している。また、ここで、語彙とは、単語又は文の集合を意味している。音声認識装置は、音声認識を行う時点における文法が与える語彙を、音声認識の対象とすることになる。
【０００３】
文法生成技術の一つに、状況に応じて（例えば、装置の状態又はモードなど、に応じて）語彙を組み合わせることによって、文法を生成する方法がある。そのような方法の具体例として、カーナビゲーションシステムにおける、音声認識用文法の生成方法の一例について説明する。カーナビゲーションシステムにおいて、電源が入れられた直後のモード（すなわち、初期状態）では、文法は、単に、カーナビゲーション操作コマンドの語彙からなる。初期状態において、ユーザからのコマンド入力により他のモード（例えば、地図検索モード又は電話番号検索モードなど）が選択されて、その選択されたモードに移行した場合、初期状態の文法に対して、上記他のモードに固有の操作カテゴリの語彙が追加される。その後も、どのモードからどのモードに遷移したかに応じて、遷移前の文法に対して、必要な語彙が追加され及び／又は不要になった語彙が削除される。
【０００４】
上記例において、音声認識用文法は、単に、語彙の集合である。ここで、文法をＸとし、予め用意された語彙をＸ１〜Ｘｎとする。Ｘ１〜Ｘｎからｋ個の語彙｛Ｘｉ１，Ｘｉ２，…，Ｘｉｋ｝が選択された場合に、文法Ｘ＝Ｘｉ１＋Ｘｉ２＋…＋Ｘｉｋが生成される。また、状態遷移により、それらｋ個の語彙｛Ｘｉ１，Ｘｉ２，…，Ｘｉｋ｝のうちから、削除するｌ個の語彙｛Ｘｄ１，Ｘｄ２，…，Ｘｄｌ｝が選択された場合に、上記文法Ｘから、Ｘ←Ｘ−Ｘｄ１−Ｘｄ２−…−Ｘｄｌというような削除操作により、文法が更新されることもある。
【０００５】
より一般的なケースとして、予め文型が決まっており且つ文の一部分の語彙が可変である文法を考える。ここでは、「ＸのＹ」という文型を例にとって説明する。この「ＸのＹ」という文型の例では、Ｘ，Ｙには、任意の語彙が設定可能である。例えば、Ｘ＝｛関連会社、子会社｝、Ｙ＝｛住所、電話番号｝と設定すれば、４つの文「関連会社の住所」「関連会社の電話番号」「子会社の住所」「子会社の電話番号」を表現する文法が得られる。この例においても、上記のカーナビゲーションシステムの例と同様に、予め用意された語彙の中から幾つかの語彙を選択し、例えば、Ｘ＝Ｘｉ１＋Ｘｉ２＋…＋Ｘｉｍ，Ｙ＝Ｙｉ１＋Ｙｉ２＋…＋Ｙｉｎのように、選択した語彙を組み合わせる操作（追加する操作）によって、及び／又は、語彙を削除する操作によって、文法の生成及び更新が可能になる。
【０００６】
ところで、音声認識に用いられる語彙を表現する方法に、語彙をネットワークで表現する方法がある（例えば、非特許文献１参照）。語彙ネットワークを用いる場合にも、上記のように語彙の追加／削除が発生し得る。
【０００７】
語彙ネットワークの追加／削除を行う従来方法の一つに、複数の単語に共通する語頭部分／語尾部分のマージを考慮する方法がある。語頭部分／語尾部分のマージにより、メモリ量や計算量を削減することができる。しかしながら、この方法は、マージを考慮する処理に比較的多くの計算時間を要する問題がある。
【０００８】
一方、語彙ネットワークの追加／削除を行う他の従来方法に、複数の語彙ネットワークを単に並列に接続する方法がある。この方法は、処理は単純である反面、語頭部分／語尾部分のマージを考慮する場合に比較して、より多くのメモリ量や計算量を必要とする問題がある。
【非特許文献１】Stephen E. Levinson: “Structural Methods in Automatic Speech Recognition”, Proceedings of the IEEE, Vol.73, No.11, pp.1625-1650, November 1985
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来、語彙ネットワークの追加・削除とノードのマージを同時に効率良く行う方法がなかった。
【００１０】
本発明は、上記事情を考慮してなされたもので、語彙ネットワークの追加／削除を行う計算効率の良い方法を与える音声認識装置及び音声認識方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、音声認識対象となる単語又は文の集合を与える文法ネットワークを用いる音声認識装置であって、特定の単語又は文から特定の語頭側部分を除いた語中部を複数含んで構成される複数の語彙と、複数の語彙に共通する語頭側部分を表現するために、ラベル付けされた複数の語頭部ノードを含む語頭部とを記憶する記憶部と、前記複数の語彙のうちから、対象とする語彙の選択指示と、その語彙に対する処理の選択指示とを受け付ける指示受付部と、選択指示された前記処理が、語彙を追加する処理である場合に、前記語頭部と、選択指示された前記語彙と、選択指示された前記語彙に含まれる複数の前記語中部にそれぞれ対応する、当該語中部が前記複数の語頭部ノードのうち予め対応付けられた一つに接続されていることを示す語頭部側接続情報とを含む文法ネットワークを生成する文法ネットワーク生成部と、生成された前記文法ネットワークを用いて音声認識を行う音声認識部とを備えたことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、語彙ネットワークの追加／削除を行う計算効率の良い方法を与えることができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照しながら本発明の実施形態について説明する。
【００１４】
（第１の実施形態）
最初に、語彙をネットワークで表現する方法を説明し、更に、この表現方法に基づいて従来技術の問題点についてより詳細に説明する。
【００１５】
一般的に、音声認識に用いられる語彙を、ネットワークで表現する利点は、主に次の２つである。  
(i)共通の語頭部分を持つ単語間で、語頭部分のデータ（ネットワークのノード、アーク）を共有し、及び／又は、共通の語尾部分を持つ単語間で、語尾部分のデータを共有することができる。これによって、より少ないメモリ量で語彙を保持ができる。  
(ii)語頭部分及び／又は語尾部分の共有により、音声認識に必要な単語スコア計算も共有できる。これによって、より少ない計算量で単語スコアが計算できる。
【００１６】
なお、木構造により語彙を表現する方法においては、語頭部分が共有され且つ語尾部分が共有されない。よって、木構造はネットワークの一形態である。
【００１７】
ここで、図２７に、複数の単語を表現した語彙ネットワークの一例を示す。図２７は、「ｋａ−ｍａ−ｔａ」（「蒲田」）（図中、２０１の系列）、「ｋａ−ｗａ−ｓａ−ｋｉ」（「川崎」）（図中、２０２の系列）、「ｃｈｉ−ｇａ−ｓａ−ｋｉ」（「茅ヶ崎」）（図中、２０３の系列）の３つの単語が表現されている。図２７では、語頭部分「ｋａ」が共有されており、また、語尾部分「ｓａ−ｋｉ」が共有されている。
【００１８】
図２８に、語彙ネットワークの他の例を示す。図２８は、「ｉ−ｋｉ−ｓａ−ｋｉ」（ [行き先」）（図中、２０４の系列）、「ｋａ−ｋｕ−ｔｅ−ｉ」（「確定」）（図中、２０５の系列）、「ｓｅ−ｎ−ｔａ−ｋｕ」（「選択」）（図中、２０６の系列）の３つの単語が表現されている。図２８では、語頭部分／語尾部分の共有はない。
【００１９】
語彙がネットワークで表現される場合に、語彙の追加（語彙の組み合わせ）を実現する一つの従来方法は、既存の語彙ネットワークに、新たな語彙ネットワークを付け加え、更に語頭部分及び／又は語尾部分をマージする方法である。
【００２０】
例えば、図２７の語彙ネットワークに図２８の語彙ネットワークをマージすると、図２９に例示する語彙ネットワークが得られる。例えば、この語彙ネットワークが、音声認識用の文法（文法ネットワーク）を与える。なお、図２７〜図２９において、同じ参照番号が付された系列は、同じ単語を示している。
【００２１】
語彙の削除は、上記の逆で、例えば、図２９の語彙から図２８の語彙を削除することによって、図２７の語彙が得られる。
【００２２】
ところが、上記のように、語彙を追加し、語頭及び語尾のマージを行うには、比較的多くの計算時間を要するという問題点がある。また、一旦マージがなされると、今度は、マージされたネットワーク構造を維持したまま、不要な語彙を削除しなければならないため、計算時間が必要になってしまう。よって、このような語彙ネットワークの追加／削除方法は、単語数が多い場合或いは計算機の処理能力が低い場合には適していない。
【００２３】
一方、語彙がネットワークで表現される場合に、語彙の追加を実現するもう一つの従来方法は、予め複数の語彙ネットワークを用意しておき、それらから選択した２以上の語彙ネットワークを単に並列接続する方法である。図３０は、２つの語彙ネットワークが選択された場合を例示している。
【００２４】
例えば、図２７の語彙ネットワークと図２８の語彙ネットワークとが選択された場合、図３１に例示する語彙ネットワーク（あるいは、文法ネットワーク）が得られる。
【００２５】
上記方法は、語彙の追加／削除は、ネットワークに／から、操作対象となる語彙を追加／削除するだけであるので、高速に処理可能である（上記方法は、実用的にもよく用いられている）。
【００２６】
しかしながら、この方法では、語頭部分／語尾部分の共有は、予め用意された各々の語彙ネットワーク内に存在し得るだけである。よって、ネットワーク数が増加した場合或いは計算機の処理能力が低い場合においては、マージされていない部分のメモリの無駄或いは単語スコア計算にかかる時間の無駄が無視できなくなるという問題が生じる。
【００２７】
なお、上述のような問題は、単語の和集合でしかない文法の場合だけでなく、「XのＹ」のような文型構造を持つ文法の場合においても、ＸやＹに着目すれば、同様の問題が存在し、また、他の文法の場合においても同様である。
【００２８】
以下、本実施形態について詳しく説明する。
【００２９】
図１は、本実施形態に係る音声認識装置の構成例を示すブロック図である。
【００３０】
図１に示されるように、本実施形態の音声認識装置は、文法記憶部１１、文法編集部１２、音声認識部１３を備えている。
【００３１】
文法記憶部１１は、１個以上の語頭部（図中、１１２参照）、１個以上の語尾部（図中、１１４参照）、２個以上の語中部（図中、１１６参照）、１個以上の文法フレーム（図中、１１８参照）を記憶する。
【００３２】
語頭部は、詳しくは後述するが、少なくとも２個の語彙に共通する語頭部分を表現するものである。
【００３３】
語尾部は、詳しくは後述するが、少なくとも２個の語彙に共通する語尾部分を表現するものである。
【００３４】
語中部は、詳しくは後述するが、語頭部の適合する部分及び語尾部の適合する部分と組み合わせることにより、語彙を表現するものである。
【００３５】
語彙に含まれる個々の単語又は文の語中部は、詳しくは後述するが、当該単語又は文から語頭部分及び語尾部分を除いたものである。単語又は文の語頭部分は、当該単語又は文における語頭側の或る範囲内の部分（語頭側部分）であり、単語又は文の語尾部分は、当該単語又は文における語尾側の或る範囲内の部分（語尾側部分）である。
【００３６】
なお、語頭部の個数Ｎｈと語尾部の個数Ｎｂは、いずれも、語中部の個数Ｎｔより少ない。つまり、１≦Ｎｈ＜Ｎｂかつ１≦Ｎｔ＜Ｎｂである。
【００３７】
文法フレームは、語彙間の接続方法（文型）を定義するネットワークである。
【００３８】
図２に、本実施形態の文法編集部１２の内部構成の一例を示す。
【００３９】
なお、図３に、音声認識装置の文法編集部１２及び音声認識部１３による、文法ネットワークに対する語彙操作から文法ネットワークの登録までの、処理手順の一例を示す。
【００４０】
図２に示されるように、本実施形態の文法編集部１２は、指示受付部１２１、編集処理部１２２、出力部１２３を備えている。また、編集処理部１２２は、追加処理部１２２１、削除処理部１２２２を含む。
【００４１】
指示受付部１２１は、操作対象とする語彙を選択する語彙選択指示と、その語彙に対する操作の内容（すなわち、追加又は削除のいずれか）を選択する操作選択指示とを受ける（ステップＳ１）。なお、ユーザが所望の指示を入力し、指示受付部１２１がこれを受ける方法としては、例えば、ＧＵＩを利用するなど、どのような方法を用いても構わない。
【００４２】
そして、追加が指示された場合（ステップＳ２）、編集処理部１２２の追加処理部１２２１は、指示された語彙を対象として、その語彙の語中部を、語頭部の予め定められた部分及び語尾部の予め定められた部分に接続する（ステップＳ３）。一方、削除が指示された場合（ステップＳ４）、編集処理部１２２の削除処理部１２２２は、指示された語彙を対象として、その語彙の語中部と語頭部及び語尾部との接続を解除する（ステップＳ５）。これら語彙の追加及び／又は削除によって、文法ネットワークが生成（又は更新）される。
【００４３】
出力部１２３は、生成又は更新された文法ネットワークを、音声認識部１３に出力し、文法ネットワークを該音声認識部１３に登録する。
【００４４】
なお、指示受付部１２１への指示の入力は、一つの語彙ごとに行われても良いし、複数の語彙についてまとめて行われても良い。また、後者の場合に、１個以上の語彙の追加と１個以上の語彙の削除とが両方同時に指示されても良いし、複数の語彙の追加と複数の語彙の削除とのいずれか一方のみが同時に指示されても良い。
【００４５】
音声認識部１３は、文法編集部１２から文法ネットワークを受け取ると、これを最新の文法ネットワークとしてメモリ（図示せず）に登録する（ステップＳ６）。そして、音声認識部１３は、現在登録されている最新の文法ネットワークを用いて、入力音声に対する音声認識を実行して、その音声認識の結果を出力する。なお、音声認識部１３は、従来と同様の構成で構わない。
【００４６】
次に、図４〜図１１を参照しながら、本実施形態に係る音声認識装置の文法編集部１２の動作例について説明する。図４〜図８は、文法記憶部１１に記憶されるデータの概念図である。図９〜図１１は、文法編集部１２の動作例を示すフローチャートである。
【００４７】
ここでは、文法フレームは、音声認識装置が受理可能な文型を表すネットワークの雛形である。文法フレームは、少なくとも１個以上の「語彙が可変である部分」によって構成される。なお、文法フレームにおける「語彙が可変である部分」を、サブネットワークと呼ぶ。文法フレームは、更に、１個以上の「語彙が固定された部分」を含むこともできる。なお、文法フレームにおける「語彙が固定された部分」を語彙固定ノードと呼ぶものとする。
【００４８】
図４に、最もシンプルな文法フレームの例を示す。この文法フレームは、語彙がＸに設定されることを表している。なお、図４において、二重丸で図示された先頭のノード（図中、８１）は初期状態のノードを示し、二重丸で図示された末尾のノード（図中、８２）は最終状態のノードを示す。また、図４において、サブネットワークとノードとを区別するため、サブネットワーク（図中、８３）は破線で、ノード（図中、８１，８２）は実線で示す（なお、この点は、他の図においても同様である）。図４の例の場合、文法編集部１２は、サブネットワークＸに語彙を追加／削除することによって、文法ネットワークを生成する。
【００４９】
なお、文法フレームには種々の文型があり、例えば、後の説明で使用する図１４は、「Ｘ−no−Ｙ」（no：所有、所属、性質の状態などを表す格助詞「の」）という文型を表す文法フレームの例である。図１４の例の場合、文法編集部１２は、サブネットワークＸ，Ｙにそれぞれ語彙を設定することによって、文法ネットワークを定義する。
【００５０】
以下では、本実施形態の本質を明確にするために、語頭部が１個（すなわち、Ｎｈ＝１）であり、且つ、語尾部が１個（すなわちＮｔ＝１）であり、且つ、文法フレームが１個のサブネットワークＸを保持するものである場合を例にとって説明する。また、ノードラベルが日本語の仮名文字である場合を例にとって説明する。ただし、仮名文字については、ローマ字表記して説明するものとする。また、語彙が単語の集合を与える場合を例にとって説明するが、語彙が単語の集合又は単語・文の集合を与える場合も同様である。
【００５１】
ここで、図５に、一つの語頭部と一つの語尾部の例を示す。なお、図５において、先頭のノード（図中、１０１）は初期状態のノードを示し、末尾のノード（図中、１０２）は最終状態のノードを示す。また、図５において、初期状態ノードの５つの子ノード（図中、１０３参照）がラベル付けされた語頭部ノードであり、最終状態ノードの５つの親ノード（図中、１０４参照）がラベル付けされた語尾部ノードである。また、hidは語頭部ノード識別子を示し、tidは語尾部ノード識別子を示す。
【００５２】
図５から分かるように、語頭部は、木構造ネットワークである。一方、最終状態ノードからアークの向きを逆向きにすると、木構造ネットワークになるのであり、語尾部は、逆向きの木構造ネットワークである。
【００５３】
詳しくは後で説明するが、図６〜図８に、それぞれ、語彙ネットワークの例を示す。図６〜図８の例では、いずれの語彙ネットワークも、３つの単語を含んでいる。
【００５４】
さて、語中部は、接続すべき語頭部／語尾部のノードの情報と、語頭部／語尾部に含まれていないラベル（例えば、仮名文字列）の情報とを保持することで、単語（又は文）を与えるネットワークを構成する。
【００５５】
具体的には、例えば、一つの語中部は、その語彙ネットワークに属する一つの単語について、その単語の識別情報、接続可能な語頭部のノードの識別情報、接続可能な語尾部のノードの識別情報、語頭部／語尾部に含まれないラベルを表す１個のノード列（アークによって接続されたノードの系列）保持している。アークは、ノードの接続関係、つまり、ノードラベルの接続順序関係を表す。ただし、単語によっては、語頭部及び語尾部のみで構成されるために、ノード列が存在しない場合もある。また、各ノード列は、他のノード列へのアークは持たない直線的な構造である。なお、上記ノード列を「単語の語中部」と呼ぶものとする。
【００５６】
図６〜図８の各単語の語中部の構造において、先頭の矩形のノード（図中、１３１参照）は、接続可能な語頭部のノードの識別子hidを保持し、末尾の矩形のノード（図中、１３２参照）は、接続可能な語尾部のノードの識別子tidを保持する（図５参照）。ｗidは、その単語の識別子を示す。語頭部側の破線のアーク（図中、１３４参照）は、「そのアークが保持する単語識別子wid（図中、１３３参照）の単語において、そのアークの起点の先頭ノード（図中、１３１参照）が保持するhidが示す語頭部ノードから、そのアークの終点が示す語中部のノード（図中、１３５参照）への接続がなされる」ことを表す。語尾部側の破線のアーク（図中、１３６参照）は、「そのアークが保持する単語識別子wid（図中、１３３参照）の単語において、そのアークの起点が示す語中部のノード（図中、１３７参照）から、そのアークの終点の末尾ノード（図中、１３２参照）が保持するtidが示す語尾部ノードへの接続がなされる」ことを表す。上記両アーク（図中、１３４，１３６参照）で挟まれた部分（図中、１３５，１３７のノードと１３８のアークを参照）が、語中部を構成する、ラベル付けされたノードの系列である。なお、語中部の各ノードは、ノードの識別子nidを用いることによって識別することができる（図示せず）。
【００５７】
なお、図６〜図８において、先頭ノード（図中、１３１参照）及び末尾ノード（図中、１３２参照）並びに破線で表したアーク（図中、１３４，１３６参照）は、ネットワークのノード或いはアークそのものではなく、各単語の語中部に付属する情報（データ）である。よって、それらを（語頭部／語尾部との）「接続情報」と呼ぶものとする。
【００５８】
さて、図６に例示した語彙ネットワーク（１）は、「ｋａ−ｍａ−ｔａ」（「蒲田」）（ｗid＝１）、「ｋａ−ｗａ−ｓａ−ｋｉ」（「川崎」）（ｗid＝２）、「ｃｈｉ−ｇａ−ｓａ−ｋｉ」（「茅ヶ崎」）（ｗid＝３）を表現している。
【００５９】
図７に例示した語彙ネットワーク（２）は、「ｉ−ｋｉ−ｓａ−ｋｉ」（「行き先」）（ｗid＝４）、「ｋａ−ｋｕ−ｔｅ−ｉ」（「確定」）（ｗid＝５）、「ｓｅ−ｎ−ｔａ−ｋｕ」（「選択」）（ｗid＝６）を表現している。
【００６０】
図８に例示した語彙ネットワーク（３）は、例えば地名である「ｓｅ−ｔａ」（「瀬田」）（ｗid＝７）、「ａ」（「あ」）（ｗid＝８）、「ｎ」（「ん」）（ｗid＝９）を表現している。なお、これらは、語中部のノードが存在しない例、あるいは、語頭部又は語尾部の一部となる例である。図８の先頭ノード（図中、１４１）が保持する０は、語頭部の初期状態ノードを示し、図８の末尾ノード（図中、１４２）が保持する０は、語尾部の最終状態ノードを示す。
【００６１】
図５は、語頭部及び語尾部の一例である。なお、図５は、図６〜図８の例に対応する語頭部及び語尾部を例示している。
【００６２】
ここで、図５を参照すると、語頭部については、図６の語彙ネットワーク（１）と図７の語彙ネットワーク（２）に共通する語頭の仮名文字「ｋａ」と、図７の語彙ネットワーク（２）と図８の語彙ネットワーク（３）に共通する仮名文字「ｓｅ」と、それ以外に３つの語彙ネットワークに含まれる全単語の最初の１文字目を保持している。語尾部については、語彙ネットワーク（１）と語彙ネットワーク（２）に共通する仮名文字「ｋｉ」と、それ以外に３つの語彙ネットワークに含まれる全単語の最後の１文字目を保持している。
【００６３】
なお、図５の例では、語頭部／語尾部ともに、仮名文字１文字のみを保持している。しかし、語頭部／語尾部で保持する文字数は、１文字に制限されるものではない。例えば、語彙ネットワーク（１）と語彙ネットワーク（２）に共通する「ｓａ−ｋｉ」（すなわち、「ｋａ−ｗａ−ｓａ−ｋｉ」「ｃｈｉ−ｇａ−ｓａ−ｋｉ」「ｉ−ｋｉ−ｓａ−ｋｉ」に共通する「ｓａ−ｋｉ」）の２つの仮名文字の列を、語尾部に保持してもよい。
【００６４】
次に、図６〜図８を参照すると、例えば、語彙ネットワーク（１）の単語識別子ｗid＝１の語中部「ｍａ」については、hid＝３の語頭部ノード（図５の「ｋａ」でラベル付けされたノード）に接続し、tid＝４の語尾部ノード（図５の「ｔａ」でラベル付けされたノード）に接続することが表されている。したがって、この語中部をそれら語頭部／語尾部ノードに接続することによって、「ｋａ−ｍａ−ｔａ」という単語が、文法のネットワークに登録されることになる。
【００６５】
ただし、語彙ネットワーク（３）の単語のように、仮名文字数２文字以下の単語は、語頭部及び／又は語尾部に含まれてしまうため、語中部分の仮名文字が存在しない場合がある。このような場合、各単語の語中部分は、語頭部から語尾部へ至る接続情報のみとなる。例えば、ｗid＝７の単語については、hid＝４の語頭部ノード（図５の「ｓｅ」）と、tid＝４の語尾部ノード（図５の「ｔａ」）とを直接接続して、「ｓｅ−ｔａ」という単語が得られる。
【００６６】
なお、本具体例では、各ノードは、ノードラベルとして１個の仮名文字を持っている。しかし、これに制限されるものではなく、ノードラベルは１個の仮名文字でも良いし、１個の仮名文字より大きな単位（例えば、単語、単語列など）でも良いし、１個の仮名文字より小さな単位（例えば、音素、ＨＭＭの状態ＩＤなど）でも良いし、それらが混在していても良い。
【００６７】
次に、指示された語彙に対し、指示された操作（追加又は削除のいずれか一方）を行うことによって、文法フレーム、語頭部、語尾部、語中部から文法を生成する処理手順の一例について説明する。
【００６８】
図９〜図１１に、この場合のフローチャートの一例を示す。なお、図１０は、図９のステップＳ１５の追加ルーチンの処理手順の一例であり、図１１は、図９のステップＳ１６の削除ルーチンの処理手順の一例である。
【００６９】
入力は、サブネットワークＸ（図４参照）、そして、語彙Ｘｉと、その語彙Ｘｉに対する操作Ａｉとの組のリスト（Ｘｉ，Ａｉ）である。ここで、Ｎを語彙数として、ｉ＝１，２，…，Ｎである。
【００７０】
まず、初めての語彙操作のために、文法フレームのサブネットワークＸ＝φとなる場合、つまり、Ｘに単語が未登録の場合には（ステップＳ１１）、次の初期設定処理を行う（ステップＳ１２）。すなわち、初期設定処理においては、サブネットワークＸについて、語頭部の初期状態ノード（図５の１０１）を取り除き、その代わりに、文法フレームの初期状態ノード（図４の８１）と接続し、且つ、語尾部の最終状態ノード（図５の１０２）を取り除き、その代わりに、文法フレームの最終状態ノード（図４の８２）と接続し、これによって、２個の部分に分離したネットワークとする。
【００７１】
図１２は、この時点での文法フレームのネットワーク構造を表したものである。なお、図１２の破線部分（図中、８３）が、サブネットワークＸである。
【００７２】
なお、ステップＳ１２の初期設定処理のように、語頭部の初期状態ノード及び語尾部の最終状態ノードを取り除き、文法フレームの初期状態ノード及び最終状態ノードと接続するのは、語頭部及び語尾部を接続した際に、初期状態ノード及び最終状態ノードがそれぞれ重複するのを回避するためであり、本質的な操作ではない。
【００７３】
なお、ステップＳ１１でＮｏの場合には、ステップＳ１２をスキップする。
【００７４】
さて、次に、ステップＳ１３において、ｉを１に設定する。以降、Ｎ個の語彙をすべて処理するまで、繰り返し処理が行われる。
【００７５】
まず、ステップＳ１４では、ｉ番目の語彙Ｘｉに対する操作Ａｉを判定し、追加の場合は、ステップＳ１５で追加ルーチンを実行し、一方、削除の場合は、ステップＳ１６で削除ルーチンを実行する。そして、ステップＳ１７においてｉ＝Ｎでなければ、ステップＳ１８でｉを１増加し、ステップＳ１４に戻って次の語彙に対する操作を実行する。
【００７６】
最後に、ステップＳ１７でｉ＝Ｎであれば、操作を終了する。これによって、あらたなサブネットワークＸが生成される。
【００７７】
次に、図１０に示した追加ルーチン（図９のステップＳ１５）について説明する。
【００７８】
追加ルーチンでは、語彙Ｘｉに属する全ての単語の語中部分（ノード及びアークの構造）に対し、追加操作を行う。ここで、語彙Ｘｉに属する単語数をＮｉで表し、語彙Ｘｉに属する各単語をＷｉｊ（ｊ＝１，２，…，Ｎｉである）で表す。
【００７９】
まず、ステップＳ２１において、ｊを１に設定する。以降、Ｎｉ個の単語をすべて処理するまで、繰り返し処理が行われる。
【００８０】
ステップＳ２２において、ｊ番目の単語Ｗｉｊの先頭ノードに保持された語頭部識別子hidを持つ語頭部ノードから、単語Ｗｉｊの先頭ノードの次のノードへのアークを生成する。生成されるアークには、語中部が保持する単語識別子ｗidを割り当てる。
【００８１】
ステップＳ２３において、上記単語Ｗｉｊの末尾ノードの前のノードから、単語Ｗｉｊの末尾ノードに保持された語尾部識別子tidを持つ語尾部ノードへのアークを生成する。
【００８２】
なお、ステップＳ２２とステップＳ２３は、いずれを先に実行しても良いし、同時に実行しても良い。
【００８３】
そして、ステップＳ２４においてｊ＝Ｎｉでなければ、ステップＳ２５でｊを１増加し、ステップＳ２２に戻って次の単語に対する追加操作を実行する。
【００８４】
最後に、ステップＳ２４でｊ＝Ｎｉであれば、この追加ルーチンを終了する。
【００８５】
一例として、図１３に、語頭部／語尾部（図５参照）に対して、単語「ｋａ−ｗａ−ｓａ−ｋｉ」（川崎）、「ｓｅ−ｔａ」（瀬田）、“ａ”（あ）、“ｎ”（ん）（図６〜図８参照）を接続した状態における、文法フレームのネットワーク構造を示す。図１３において、太線部分（図中、１５１〜１５５）は、追加操作により生成されたアークを示している。
【００８６】
次に、図１１に示した削除ルーチン（図９のステップＳ１６）について説明する。
【００８７】
削除ルーチンでは、語彙Ｘｉに属する全ての単語Ｗｉｊの語中部分に対し、削除操作を行う。
【００８８】
まず、ステップＳ３１において、ｊを１に設定する。以降、Ｎｉ個の単語をすべて処理するまで、繰り返し処理が行われる。
【００８９】
ステップＳ３２において、ｊ番目の単語Ｗｉｊの先頭ノードに保持された語頭部識別子hidを持つ語頭部ノードから、単語Ｗｉｊの先頭ノードの次のノードへのアークを消去する。
【００９０】
ステップＳ３３において、上記単語Ｗｉｊの末尾ノードの前のノードから、単語Ｗｉｊの末尾ノードに保持された語尾部識別子tidを持つ語尾部ノードへのアークを消去する。
【００９１】
なお、ステップＳ３２とステップＳ３３は、いずれを先に実行しても良いし、同時に実行しても良い。
【００９２】
そして、ステップＳ３４においてｊ＝Ｎｉでなければ、ステップＳ３５でｊを１増加し、ステップＳ３２に戻って次の単語に対する削除操作を実行する。
【００９３】
最後に、ステップＳ３４でｊ＝Ｎｉであれば、この削除ルーチンを終了する。
【００９４】
以上の追加／削除処理により、文法フレームのサブネットワークＸが更新され、次回の追加／削除の際には、この更新されたサブネットワークＸに対して、更なる追加／削除操作が行われる。
【００９５】
以上の追加／削除処理により生成された文法フレームを、音声認識用の文法ネットワークとして、音声認識部１３に登録する。音声認識部１３は、この文法ネットワークを用いて、入力音声に対する音声認識を実行する。なお、文法ネットワークを用いた音声認識の具体的な方法については、ここでは省略するが、例えば非特許文献１に詳しく開示されている。
【００９６】
ところで、図６〜図８の例において、例えば、語彙として、語彙ネットワーク（１）と語彙ネットワーク（２）のみを使用する場合、図５の語頭部の「ａ」及び語尾部の「ｎ」に接続する語中部が存在しない（語頭部の「ａ」及び語尾部の「ｎ」は、語彙ネットワーク（３）を使用する場合に必要である）。このことから分かるように、語彙の組み合わせによっては、「そのノードから子ノードを順次辿っていっても、全く語中部のノードに達することが出来ないノード」が存在する。そのようなノードは音声認識時には不要なノードであるため、語頭部／語尾部の各ノードには、音声認識に必要か否かを示すフラグを用意し、音声認識に必要なノードは１、不要なノードに対しては０を設定する。そして、音声認識時には、フラグが１に設定されているノードのみを使用するようにしても良い。
【００９７】
以上のように、語頭部／語尾部を用いることにより、複数の語彙の共通部分がマージされ、各語彙は語中部のみを保持するので、従来法に比べて、語彙を記憶するのに要するメモリサイズが削減可能である。
【００９８】
また、語彙の追加は、語頭部／語尾部の適合する部分と語中部との接続だけであり、語彙の削除は、語頭部／語尾部と語中部との接続解除だけである。よって、比較的高速な語彙の追加／削除が可能である。
【００９９】
なお、本実施形態では、メモリ削減効果を示すことよりも本質を明確にすることを優先して、具体例として、単語数が少なく、また、語頭部／語尾部とも、仮名文字１文字分だけ持つ簡単な例を用いて説明を行ったが、語彙内の単語数が増加した場合、語頭部／語尾部に共有する文字数が増加した場合に、メモリ削減効果が如実に現れてくることは、言うまでもない。
【０１００】
このように本実施形態によれば、高速な語彙追加／削除操作を可能としながら、同時に、語彙ネットワーク間でのマージ（これによる必要なメモリサイズの削減）が可能となる。
【０１０１】
（第２の実施形態）
以下、第２の実施形態について、第１の実施形態と相違する点を中心に説明する。
【０１０２】
本実施形態は、独立したデータとしての文法フレームを備えなくても良い点が、第１の実施形態と相違する。
【０１０３】
第１の実施形態のように、文法フレームが、サブネットワークＸを１個だけしか含まないような単純な文型である場合、文法記憶部１１に文法フレームを記憶しておく必要はない。すなわち、文法フレームをデータとして記憶していなくても、語頭部／語尾部に対して、直接、語彙を追加／削除して文法ネットワークを生成することによって、文法フレームを用いる場合と同じ文法ネットワークが得られることは、これまでの説明から明らかであり、図９〜図１１と同様の処理手順によって、語彙の追加／削除が可能である。
【０１０４】
このように、本実施形態でも、第１の実施形態と同様、文法ネットワークの構築が可能であり、第１の実施形態と同様の効果を得ることができる。
【０１０５】
（第３の実施形態）
以下、第３の実施形態について、第１の実施形態と相違する点を中心に説明する。
【０１０６】
第１の実施形態は、文法フレームにおいて、語彙操作を行うサブネットワークが１個のみ存在する場合を例にとって説明したが、本実施形態では、サブネットワークを複数含む文法フレームを用いる場合について説明する。
【０１０７】
図１４に、サブネットワークを複数含む文法フレームの一例を示す。図１４は、「Ｘ−no−Ｙ」（no：「の」）という文型を表す文法フレームの例である。なお、本例は、語彙固定ノードを含む例でもある。
【０１０８】
図１４において、先頭のノード（図中、１６１）は初期状態ノードを示し、末尾のノード（図中、１６２）は最終状態ノードを示す。Ｘ（図中、１６３）とＹ（図中、１６５）がサブネットワークである。すなわち、この文法フレームは、ＸとＹのサブネットワークにそれぞれ語彙が設定されることを表している。また、「ｎｏ」（図中、１６４）が語彙固定ノードであり、この例では、ＸとＹの間が「ｎｏ」で接続されることが表されている。
【０１０９】
図１４の例の場合、文法編集部１２は、サブネットワークＸとサブネットワークＹに対して、それぞれ、語彙操作（追加操作／削除操作）を行うことになる。
【０１１０】
本実施形態においては、語頭部には、Ｘ用の語頭部とＹ用の語頭部が必要である。同様に、語尾部には、Ｘ用の語尾部とＹ用の語尾部が必要である。なお、語頭部／語尾部の構造は、図５と同じで良く、それぞれ２個以上の語彙に共通の語頭部分／語尾部分を含むネットワークの一部分である。
【０１１１】
語中部に関しては、図６〜図８に追加する点がある。すなわち、語彙には、ＸとＹの両方のサブネットワークに使用する語彙と、ＸとＹのいずれか一方のサブネットワークのみに使用する語彙とがあり得る。従って、本実施形態では、語中部の各単語を表すノード列の先頭ノード／末尾ノードは、それぞれ、第１の実施形態のように接続可能な語頭部ノードの識別子hid／接続可能な語尾部ノードの識別子tidを保持するのに加えて、それが接続可能なサブネットワークを識別する識別情報（sid）も保持する必要がある。
【０１１２】
図１４の例において、ある語彙がサブネットワークＸとＹの両方に使用可能な場合、語頭部／語尾部との接続を表す先頭ノード／末尾ノードには、サブネットワークＸに使用する場合に接続可能な語頭部ノード識別子hid／語尾部ノード識別子tidと、サブネットワークＹに使用する場合に接続可能な語頭部ノード識別子hid／語尾部ノード識別子tidとの両方を保持する。
【０１１３】
図１５に、この場合の語中部の単語構造の例を示す。
【０１１４】
図１５の例では、サブネットワークＸに使用する場合には、hid＝５の語頭部ノード、tid＝２の語尾部ノードと接続し、サブネットワークＹに使用する場合には、hid＝３の語頭部のノードとtid＝４の語尾部のノードに接続することを表している（図中、１７１，１７２参照）。
【０１１５】
文法編集部１２における文法生成手順については、入力は、図９〜図１１のような語彙と操作との組ではなく、語彙と接続すべきサブネットワーク（本例ではＸ又はＹ）と操作との三つ組（語彙、接続サブネットワーク、操作）が必要となる。
【０１１６】
次に、指示された語彙及び接続サブネットワークに対し、指示された操作（追加又は削除のいずれか一方）を行うことによって、文法フレーム、語頭部、語尾部、語中部から文法を生成する処理手順の一例について説明する。
【０１１７】
図１６〜図１８に、この場合のフローチャートの一例を示す。なお、図１７は、図１６のステップＳ１１５の追加ルーチンの処理手順の一例であり、図１８は、図１６のステップＳ１１６の削除ルーチンの処理手順の一例である。
【０１１８】
入力は、サブネットワークＸ，Ｙ（図１４参照）、そして、語彙Ｘｉと、その語彙を接続すべきサブネットワークＳｉと、その語彙Ｘｉに対する操作Ａｉとの組のリスト（Ｘｉ，Ｓｉ，Ａｉ）である。ここで、Ｎを語彙数として、ｉ＝１，２，…，Ｎである。
【０１１９】
図１６の流れは、図９の流れと、基本的には、同様である。ただし、ステップＳ１１２の初期設定処理が、次のようになる。すなわち、図１４の例の場合には、サブネットワークＸについて、語頭部の初期状態ノードを取り除き、その代わりに、文法フレームの初期状態ノード（図１４の１６１）と接続し、且つ、語尾部の最終状態ノードを取り除き、その代わりに、文法フレームの語彙固定ノード（図１４の１６４）と接続し、同様に、サブネットワークＹについて、語頭部の初期状態ノードを取り除き、その代わりに、文法フレームの語彙固定ノードと接続し、且つ、語尾部の最終状態ノードを取り除き、その代わりに、文法フレームの最終状態ノード（図１４の１６２）と接続する。もちろん、第１の実施形態と同様、この操作は、本質的な操作ではない。
【０１２０】
次に、図１７に示した追加ルーチン（図１６のステップＳ１１５）について説明する。
【０１２１】
図１７の追加ルーチンは、基本的には、図１０の追加ルーチンと同様である。ただし、図１７の追加ルーチンは、複数のサブネットワークのうちで、Ｓｉにより指示されたものを対象として、追加操作を行う。
【０１２２】
次に、図１８に示した削除ルーチン（図１６のステップＳ１１６）について説明する。
【０１２３】
図１８の削除ルーチンは、基本的には、図１１の削除ルーチンと同様である。ただし、図１８の削除ルーチンは、複数のサブネットワークのうちで、Ｓｉにより指示されたものを対象として、削除操作を行う。
【０１２４】
以上から分かるように、サブネットワークが１個存在する文法フレームを用いる場合だけでなく、サブネットワークが複数個存在する文法フレームを用いる場合も同様に、高速かつメモリ効率の良い文法ネットワークの生成が可能である。さらに、文法フレームを複数個持つ場合も同様に可能であり、また、この場合にも同様の効果を得ることができることは、明らかである。
【０１２５】
なお、本実施形態においても、文法は「Ｘ−no−Ｙ」という単純な文型であるので、第２の実施形態と同様、文法記憶部１１に文法フレームを記憶しておく必要はない。独立したデータとしての文法フレームを備えない場合、文法編集部１２において、ＸとＹのそれぞれを図１６〜図１８の処理手順に従って生成した後、ＸとＹを仮名文字「ｎｏ」を表す語彙固定ノードをサブネットワークＸとサブネットワークＹとの間に挿入することによって、文法ネットワークが生成される。このように文法ネットワークが規則的に生成できる場合には、文法フレームは不要である。
【０１２６】
（第４の実施形態）
以下、第４の実施形態について、第１〜第３の実施形態と相違する点を中心に説明する。
【０１２７】
一般に、音声認識において、語彙ネットワークに、木構造という特別なネットワークを使用する場合も多い。木構造ネットワークを用いる場合、語彙ネットワークは、複数の単語に共通する語頭部分は共有するが、語尾部分は共有しない、という構造になる。この場合、語尾部は不要になる。また、この場合、語彙に含まれる個々の単語又は文の語中部は、当該単語又は文から語頭部分（語頭側部分）を除いたものになる。
【０１２８】
図１９〜図２２に、図５〜図８の語彙を木構造ネットワークにより実現した例を示す。図１９は、語頭部の例であり、図２０〜図２２は、語彙ネットワークの例である。図１９〜図２２の例では、図５〜図８の例に比較して、語尾部が存在せず、その代わりに、語中部の語尾は最終状態ノード（図中、１８１参照）に接続される。
【０１２９】
なお、文法フレームについては、これまでの実施形態と同様で構わない（図４、図１４参照）。
【０１３０】
また、木構造を使う場合、これまでの実施形態において、語尾部に対する操作を行わないようにすれば、同様の処理により文法編集部１２での文法生成が可能であることは明らかである。具体的には、語彙の操作のフローチャートは、これまでの実施形態のフローチャートから、語尾部に対する操作（図１０のステップＳ２３／図１１のステップＳ３３、図１７のステップＳ１２３／図１８のステップＳ１３３）を取り除いたものとすれば良い。
【０１３１】
さらに、これまでの実施形態と同様、文法フレームが単純な文型である場合には、文法記憶部１１に文法フレームを記憶しておく必要はない。
【０１３２】
このように、木構造のように語尾部を持たない場合でも、語頭部を共有化することにより、これまでの実施形態と同様のメモリ削減効果が得られる。
【０１３３】
（第５の実施形態）
以下、第５の実施形態について、第１〜第５の実施形態と相違する点を中心に説明する。
【０１３４】
これまでの実施形態では、語彙ネットワークのノードの持つラベルが、仮名文字１文字である場合を例にとって説明してきたが、すでに言及しているように、これに制限されるものではなく、ノードラベルは、１個の仮名文字でも良いし、１個の仮名文字より大きな単位（例えば、単語、単語列など）でも良いし、１個の仮名文字より小さな単位（例えば、音素、ＨＭＭの状態ＩＤなど）でも良い。
【０１３５】
ここでは、これまでの実施形態において、語彙ネットワークのノードがＨＭＭの状態になる場合について説明する。
【０１３６】
さて、実用上は、語彙ネットワーク、文法ネットワークが、ＨＭＭ（隠れマルコフモデル）で構成されることが良くある。良く用いられる方法においては、単語は、音素ＨＭＭの連結により構成され、文法ネットワークの各ノードは、音素ＨＭＭの１状態を表す。この点について、具体的には、例えば参考文献“Lawrence Rabiner, Biing-Hwang Juang: “Fundamentals of Speech Recognition”, Prentice Hall International Editions, 1993”に詳しく開示されている。
【０１３７】
第１〜４の実施形態において、上記のようなネットワークを利用する場合、これまでの説明と本質的な相違はなく、これまでの説明において、ノードラベルを、仮名文字から音素ＨＭＭの状態に置き換えれば良い。したがって、本実施形態においても、これまでの実施形態と同様に、語頭部／語尾部、語中部を構成し、語彙の追加／削除を効率良く行うことが可能である。
【０１３８】
（第６の実施形態）
以下、第６の実施形態について、第１〜第５の実施形態と相違する点を中心に説明する。
【０１３９】
これまでの実施形態では、語頭部／語尾部は、予め定められており、固定されていた。
【０１４０】
ここで、第１の実施形態のような文法フレームを持つ音声認識装置において、実際にユーザが使用する際には、ユーザＡは、サブネットワークＸが語彙Ｘ１＋語彙Ｘ２である状況を多用し、ユーザＢは、サブネットワークＸが語彙Ｘ３＋語彙Ｘ４＋語彙Ｘ５である状況を多用する、という場合を考える。このような場合、予め与えられた語頭部／語尾部をそのまま使用するよりも、ユーザＡは、語彙Ｘ１＋語彙Ｘ２に適したノードの共有化を行った語頭部／語尾部を使用し、ユーザＢは、語彙Ｘ３＋語彙Ｘ４＋語彙Ｘ５に適したノードの共有化を行った語頭部／語尾部を使用する方が、語頭部／語尾部のメモリ効率が向上する。
【０１４１】
上記例に限らず、予め固定された語頭部／語尾部をそのまま使用するよりも、必要に応じて語頭部／語尾部のノードの共有化を使用語彙に適合したものに更新すると、さらにメモリ効率が良くなる。本実施形態では、このような語頭部／語尾部の更新方法について説明する。なお、語頭部／語尾部の更新処理は、適当なタイミング、例えば、音声認識装置に対してユーザが直接指示を出したとき、あるいは、音声認識装置が特定の状態になったときなどに、自動的に開始するようにしても良い。
【０１４２】
本実施形態に係る音声認識装置の構成例は、図１と同様である。
【０１４３】
図２３に、本実施形態の文法編集部１２の内部構成例を示す。本実施形態の文法編集部１２は、図２の構成において、編集処理部１２２が更に更新処理部１２２３を含むものである。
【０１４４】
以下、更新処理部１２２３において語頭部を更新する処理手順の一例について説明する。
【０１４５】
図２４〜図２６に、この場合のフローチャートの一例を示す。なお、図２５は、図２４のステップＳ２１７のマージルーチンの処理手順の一例であり、図２６は、図２５のステップＳ２２４のマージ実行ルーチンの処理手順の一例である。
【０１４６】
この処理を実行する際の前提として、文法フレームのサブネットワークＸは空（Ｘ≠φ）、つまり、語彙が設定されている状態とする。また、語頭部においては初期状態の語頭部ノード識別子hidを０とし、語頭部の初期状態以外の各ノードには、それぞれ、１から始まる通し番号によって語頭部ノード識別子hidが割り当てられているものとする。同様に、語尾部においては最終状態の語尾部ノード識別子tidを０とし、語尾部の初期状態以外の各ノードには、それぞれ、１から始まる通し番号によって語尾部ノード識別子tidが割り当てられているものとする。
【０１４７】
さて、図２４の処理手順において、入力は、サブネットワークである。
【０１４８】
最初に、ステップＳ２１１において、そのサブネットワークの語頭部のノードのうち、語中部と接続しているものをＢＡＧに登録する。なお、語中部と接続しているノードは、サブネットワークに接続している語中部に属す各単語の、語頭部との接続情報から取得できる。
【０１４９】
以降、ＢＡＧに登録した全てのノードを処理するまで（すなわち、ステップＳ２１８でＢＡＧが空（φ）になるまで）、繰り返し処理が行われる。
【０１５０】
まず、ステップＳ２１２において、ＢＡＧの中から任意のノードＶを１個取り出す。
【０１５１】
次に、ステップＳ２１３において、取り出したノードＶの全ての子ノードを取得し、それを集合Ｃとする。ステップＳ２１４ではＣが空か否か判定する。Ｃが空でなければ、ステップＳ２１５に進み、任意に１個のノードｎを取り出す。ステップＳ２１６では、ノードＶ，集合Ｃ、ノードｎを入力として、後述するマージルーチンを実行する。マージルーチンによって集合Ｃは更新される。ステップＳ２１７では、マージルーチンによって、新しく生成されたノードｘがあれば、それをＢＡＧに追加し、ステップＳ２１４に戻る。
【０１５２】
ステップＳ２１８では、ＢＡＧを調べ、ＢＡＧ＝φでなければ、ステップＳ２１２へ戻って次のノードＶに対する操作を実行する。
【０１５３】
最後に、ステップＳ２１８においてＢＡＧ＝φであれば、この語頭部の更新処理を終了する。
【０１５４】
なお、実用的には、ステップＳ２１６においてＢＡＧが空になるまで処理を繰り返すと、膨大な計算時間を要し、その間、ユーザは音声認識装置を利用できない、という不都合が生じる可能性がある。そのため、ステップＳ２１８の停止条件としては、「ステップＳ２１２からステップＳ２１７までを所定の回数繰り返した場合には、ＢＡＧが空でなくとも終了する」、あるいは、「語頭部の更新処理を開始してからＸ秒以上経過した場合には、ＢＡＧが空（φ）でなくとも終了する」という条件を用いても良い。
【０１５５】
次に、図２５に示したマージルーチン（図２４のステップＳ３２７）について説明する。
【０１５６】
図２５の処理手順において、入力は、ノードＶと、ノード集合Ｃ、およびノードｎである。
【０１５７】
最初にステップＳ２１１において、ＸをＣの中でｎと同じノードラベルを持つ全てのノードの集合として、  
Ｓ←｛ｎ｝＋Ｘ  
Ｃ←Ｃ−Ｘとする。
【０１５８】
ステップＳ２２２において、ノードnと同じノードラベルを持つノードがない場合、つまり、Ｓ＝｛ｎ｝である場合には、ステップＳ２２３に進む。ステップＳ２２３おいては、出力ｘとして、ノードがないことを示すφを設定する。
【０１５９】
ステップＳ２２２において、Ｓ≠｛ｎ｝である場合、すなわち、ｎと同じノードラベルを持つノードが存在する場合には、ステップＳ２２４に進む。ステップＳ２２４においては、マージ実行ルーチンを実行し、その出力としてノードｘを得る。
【０１６０】
次に、マージ実行ルーチン（図２５のステップＳ２２４）について説明する。
【０１６１】
図２６の処理手順では、ステップＳ２３１において、新しく、語頭部のノードｘを生成し、ノードｘからＳのノード達の親ノードであるＶからｘへのアークを生成する。また、ステップＳ２３１において、ノードｘのノード識別子hidを、語頭部のノード数＋１とする。
【０１６２】
以降、Ｓの全てのノードを処理するまで（すなわち、ステップＳ２３６でＳが空（φ）になるまで）、繰り返し処理が行われる。
【０１６３】
まず、ステップＳ２３２において、Ｓから１個、任意のノードｙを取り出す。Ｖは語頭部のノードであり、ｙはある単語の語中部のノードであるので、Ｖからｙへのアークは、図１３に太線で示したアーク（図１３の１５１〜１５５参照）のように単語識別子ｗｉｄを持つ。したがって、この単語識別子ｗｉｄからその単語の語中部を取得することができる。また、ノードｙは、その単語の語中部の先頭のノードである。
【０１６４】
次に、ステップＳ２３４において、Ｖからｙへのアークを削除し、そのアークが保持する単語識別子ｗｉｄを参照し、その単語の語中部を取得する。
【０１６５】
次に、ステップＳ２３５において、語中部の先頭のノードｙを削除する。
【０１６６】
そして、ステップＳ２３６において、その単語の語頭部との接続情報を更新する。すなわち、語中部にノードｙの子ノードがある場合には、語中部の語頭部との接続情報を、語頭部からの接続を、新ノードｘからのｙの子ノードへの接続に変更する。語中部にノードｙの子ノードがない場合（つまり、語中部はｙのみである場合）には、その語中部の語尾部との接続情報を参照し、新ノードｘから語尾部へ直接接続するように、語頭部との接続情報を更新する（図８の語彙ネットワーク（３）の「ｓｅ−ｔａ」（瀬田）の例を参照）。
【０１６７】
そして、ステップＳ２３６においてＳ＝φでなければ、ステップＳ２３２に戻って次のノードに対する処理を実行する。
【０１６８】
最後に、ステップＳ２３６においてＳ＝φであれば、このマージ実行ルーチンを終了する。
【０１６９】
以上のようにすれば、語中部のうち、同じノードラベルを持つノード同士がマージされ、語頭部のノード（ステップＳ２３１のノードｘ）として集約されるので、メモリ効率が向上する。
【０１７０】
以上は１個のサブネットワークに対する処理であったが、サブネットワークが複数個存在する場合には、個々のサブネットワークについてそれぞれ同じ処理を施せばよい。
【０１７１】
語頭部の更新を実行するタイミングについて言うと、サブネットワークに利用頻度が高い語彙の組み合わせが設定されているときに、語頭部の更新を行うのが好ましい。そこで、例えば、文法編集部１２において、サブネットワークごとに、語彙の組み合わせ方と、その使用頻度とを記録しておき、あるサブネットワークにおいて、語彙の組み合わせが所定の回数を超えた場合に、語頭部を更新するという工夫などを施すようにしても良い。
【０１７２】
なお、以上は語頭部に関する更新処理であったが、語尾部についても同様に更新可能であることは明らかであり、ここでの詳細な説明は省略する。
【０１７３】
このように本実施形態では、必要に応じて語頭部／語尾部の最適化を行うことにより、さらに効率のよいネットワークが実現できる。
【０１７４】
（第７の実施形態）
以下、第７の実施形態について、第６の実施形態と相違する点を中心に説明する。
【０１７５】
第６の実施形態に示した更新処理手順から分かるように、この更新処理手順において、語頭部／語尾部は、最初はそれぞれ初期状態／最終状態のみからスタートし、更新処理によって、語頭部／語尾部を生成するようにしてもよい。この方法は、語頭部／語尾部を予め作成しておく必要がないため、簡便な方法である。
【０１７６】
なお、この音声認識装置は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも、実現することが可能である。すなわち、文法編集部及び音声認識部は、上記コンピュータ装置に搭載されたプロセッサに、プログラムを実行させることにより、実現することができる。このとき、音声認識装置は、上記プログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶してあるいはネットワークを介して上記プログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで、実現してもよい。また、文法記憶部１１は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【０１７７】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１７８】
【図１】本発明の一実施形態に係る音声認識装置の構成例を示す図
【図２】文法編集部の内部構成例を示す図
【図３】語彙操作から登録までの処理手順例を示すフレーチャート
【図４】文法フレームの例を示す図
【図５】語頭部及び語尾部の例を示す図
【図６】語彙ネットワークの例を示す図
【図７】語彙ネットワークの例を示す図
【図８】語彙ネットワークの例を示す図
【図９】文法ネットワーク生成の処理手順例を示すフローチャート
【図１０】図９における追加ルーチンの処理手順の一例
【図１１】図９における削除ルーチンの処理手順の一例
【図１２】初期設定処理された文法フレームのネットワーク構造の例を示す図
【図１３】追加ルーチンを実施された文法フレームのネットワーク構造の例を示す図
【図１４】文法フレームの例を示す図
【図１５】２つのサブネットワークにと使用可能な語中部の構造例を示す図
【図１６】文法ネットワーク生成の処理手順例を示すフローチャート
【図１７】図１６における追加ルーチンの処理手順の一例を示すフローチャート
【図１８】図１６における削除ルーチンの処理手順の一例を示すフローチャート
【図１９】語頭部の例を示す図
【図２０】語彙ネットワークの例を示す図
【図２１】語彙ネットワークの例を示す図
【図２２】語彙ネットワークの例を示す図
【図２３】文法編集部の内部構成例を示す図
【図２４】語頭部更新の処理手順例を示すフローチャート
【図２５】図２４におけるマージルーチンの処理手順の一例を示すフローチャート
【図２６】図２５におけるマージ実行ルーチンの処理手順の一例を示すフローチャート
【図２７】従来の語彙ネットワークの追加操作／削除操作について説明するための図
【図２８】従来の語彙ネットワークの追加操作／削除操作について説明するための図
【図２９】従来の語彙ネットワークの追加操作／削除操作について説明するための図
【図３０】従来の語彙ネットワークの追加操作／削除操作について説明するための図
【図３１】従来の語彙ネットワークの追加操作／削除操作について説明するための図
【符号の説明】
【０１７９】
１１…文法記憶部、１２…文法編集部、１３…音声認識部、１２１…指示受付部、１２２…編集処理部、１２３…出力部、１２２１…追加処理部、１２２２…削除処理部、１２２３…更新処理部
【図１】
2009229529.tif 000003
【図２】
2009229529.tif 000004
【図３】
2009229529.tif 000005
【図４】
2009229529.tif 000006
【図５】
2009229529.tif 000007
【図６】
2009229529.tif 000008
【図７】
2009229529.tif 000009
【図８】
2009229529.tif 000010
【図９】
2009229529.tif 000011
【図１０】
2009229529.tif 000012
【図１１】
2009229529.tif 000013
【図１２】
2009229529.tif 000014
【図１３】
2009229529.tif 000015
【図１４】
2009229529.tif 000016
【図１５】
2009229529.tif 000017
【図１６】
2009229529.tif 000018
【図１７】
2009229529.tif 000019
【図１８】
2009229529.tif 000020
【図１９】
2009229529.tif 000021
【図２０】
2009229529.tif 000022
【図２１】
2009229529.tif 000023
【図２２】
2009229529.tif 000024
【図２３】
2009229529.tif 000025
【図２４】
2009229529.tif 000026
【図２５】
2009229529.tif 000027
【図２６】
2009229529.tif 000028
【図２７】
2009229529.tif 000029
【図２８】
2009229529.tif 000030
【図２９】
2009229529.tif 000031
【図３０】
2009229529.tif 000032
【図３１】
2009229529.tif 000033