(57)【特許請求の範囲】
【請求項１】
文脈自由文法や有限状態オートマトンを、任意個のサブネットワーク文法（ルールと呼ぶ）から構成される文法にコンパイルし、かつ、コンパイルされたルールであるマスタールールに他のマスタールールが内部ルールとして埋め込まれている場合、内部ルールを持つマスタールールが、内部ルールへ仮説を出力するための内部ルールへの出力ノード及び内部ルールからの仮説を入力するための内部ルールからの入力ノードを持つようにコンパイルし、外部記憶装置やメモリに記録するコンパイル部と、
マスタールールを、必要に応じてメモリ上に展開し又は、メモリ上から削除して、マスタールールの管理を行なうマスター文法管理部と、
マスター構造体すなわちマスタールール、マスタールールに含まれるアーク（マスターアーク）及びノード（マスターノード）を、プロン構造体すなわちサーチ処理に適した形式に展開されたルール（プロンルール）、アーク（プロンアーク）及びノード（プロンノード）として、メモリ上で管理するプロン文法管理部と、
連続音声認識のサーチを制御するサーチ制御部と、
仮説を記憶する仮説記憶部と、
仮説の展開処理を行なう仮説展開部と、
マスターアーク、マスターノードをそれぞれプロンアーク、プロンノードに展開するアーク展開部と、
仮説が単語終端を通過した情報をメモリ又は外部記憶装置に記録、管理するワードエンド管理部と、
連続音声認識の結果をアプリケーションに通知する認識結果出力部とを有する連続音声認識装置。
【請求項２】
コンパイル時にルールを、ルールに応じた適切な形式に圧縮する前記コンパイル部を有する請求項１に記載の連続音声認識装置。
【請求項３】
ルールに含まれる、他のルールとの接続情報を持つ１つのノードに、複数種類の他のルールとの接続情報を持たせるようにすることで、圧縮を行なう前記コンパイル部を有する請求項２に記載の連続音声認識装置。
【請求項４】
マスタールール同士の接続関係を埋め込み型で管理する前記マスター文法管理部を有する請求項１に記載の連続音声認識装置。
【請求項５】
プロンルール同士の接続関係を木構造状に管理する前記プロン文法管理部を有する請求項１に記載の連続音声認識装置。
【請求項６】
不必要なマスター構造体を主記憶上から削除し、再度必要になった際に復旧を行なう前記マスター文法管理部を有する請求項４に記載の連続音声認識装置。
【請求項７】
不必要なプロン構造体を主記憶上から削除又は外部記憶上に退避し、再度必要になった際に復旧を行なう前記プロン文法管理部を有する請求項５に記載の連続音声認識装置。
【請求項８】
プロンルール単位で、プロンルール中のアーク、ノードを記憶、管理する前記プロン文法管理部を有する請求項７に記載の連続音声認識装置。
【請求項９】
別ルールに属するプロンアーク（プロンアークＡ）からの入力を持つプロンアーク（プロンアークＢ）を削除する際、プロンアークＡ又はプロンアークＡの属するプロンルールに、プロンアークＢの復旧のための情報を記録する前記プロン文法管理部を有する請求項７に記載の連続音声認識装置。
【請求項１０】
プロンルール単位で前記仮説展開部を呼び出す前記サーチ制御部を有する請求項１に記載の連続音声認識装置。
【請求項１１】
環境依存音素に展開されていない音素マスターアークを環境依存音素プロンアークに展開する際に、一度調べたルール遷移情報を記録し、その情報を用いることにより、ルール遷移のための処理を大幅に軽減する前記アーク展開部を有する請求項１に記載の連続音声認識装置。
【請求項１２】
一つ以上の異なるフォーマット形式のマスターアーク及びマスターノードを、統一された一つのプロン形式のプロンアーク及びプロンノードに展開する前記アーク展開部を有する請求項１に記載の連続音声認識装置。
【請求項１３】
一つ以上の異なるフォーマット形式のマスターアーク及びマスターノードを、マスターの形式に依存して最適化された個別の形式のプロンアーク及びプロンノードに展開する前記アーク展開部を有する請求項１に記載の連続音声認識装置。
【請求項１４】
一度展開され、削除されたプロンアークを、ルール遷移を行なわずに、復旧情報を使用して復旧する前記アーク展開部を有する請求項１１に記載の連続音声認識装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、連続音声認識装置に関し、特に文脈自由文法や統計言語モデルを用いた連続音声認識などを扱う際の省メモリ、省演算量、高機能を実現する連続音声認識装置に関する。
【０００２】
【従来の技術】
従来の連続音声認識装置の一例が、日本音響学会講演論文集 １９９７年 ３月及び１９９９年 ９月〜１０月の「住所認識のための辞書分割法の検討」と題された、岩崎知引、中島邦男らによる論文に掲載されている（図９）。
【０００３】
従来法では、全国住所タスク（住所を、県名、市名、町名の３階層に分けた住所認識タスク）に特化したアルゴリズムを用いており、以下のように動作する。
１：コンテキストコンテナー（以下、ＣＣ）に、後続のＣＣを直接指定して、単語の読み（音節情報）を記録する。
２：コンパイル部９１がＣＣを Container Werehouse９２というメモリ上又は外部記憶装置上に記録する。
３：サーチ制御部９３がサーチを開始する。
４：仮説展開部９４は、フレーム同期ビームサーチアルゴリズムに従い、ViterbiWork Memory９５に含まれる、音素片ネットワーク上の仮説展開を行なう。
５：４において、サーチ制御部９３は、サーチに必要なＣＣをメモリ上のContainer Shelf９６に読み込む。このとき、ＣＣの情報は、音節ネットワークとして表現される。
６：４において、サーチ制御部９３は、サーチに必要な Container Shelf９６の音節アーク情報を音節単位でViterbi Work Memory９５に読み込む。
７：６において、アーク展開部９８は、音素片ネットワークを構築する。
８：サーチ制御部９３は単語終端情報を Back Track Memory９７に記録する。
９：まだ音声フレームが残っている場合、４に戻る。
１０：Back Track Memory９７ の情報から、認識結果を返す。
【０００４】
【発明が解決しようとする課題】
従来の技術の第一の問題点は、ＣＣをコンパイルする際に、ＣＣの構造に応じた適切な形式に圧縮していないことと、これに対応して、異なる形式の Container Shelf の Viterbi Work Memory への展開をサポートしていないことである。
【０００５】
このため、ＣＣ及び Container Shelf の圧縮効率が高くない上、認識対象とするタスクの汎用性に欠ける。
【０００６】
従来の技術の第二の問題点は、ＣＣに直接、接続先のＣＣを記述するため、ＣＣの内部に（自己ＣＣを含めた）ＣＣを埋め込むことができないことである。
【０００７】
このため、同じ内容の音節ネットワークを有するＣＣで、別のＣＣへ接続するものが必要である場合、ＣＣを個別に複数個用意しなくてはならず、音節ネットワークの共有ができない。このため、メモリ効率が良くない上に、複雑な文法の記述も困難である。
【０００８】
従来の技術の第三の問題点は、仮説展開において、Container Shelf の特徴に依存した、最適な展開方法を複数使用しないことである。
【０００９】
このため、全国住所タスクなどの階層化された単純な文法を扱う場合のみ、メモリ量や処理量が効率的であり、他のタスクには通用しない。
【００１０】
従来の技術の第四の問題点は、不要な Viterbi Work Memory 上の音素片ネットワークを削除又は外部記憶上に退避できないことである。
【００１１】
このため、既に音声及びサーチの通り過ぎた、仮説の存在しない音素片ネットワークが無駄にメモリを消費している。
【００１２】
本発明の目的は、上記の従来技術の問題点を回避しつつ、省メモリ、省演算量、高い汎用性を持つ連続音声認識装置を提供することにある。
【００１３】
【課題を解決するための手段】
本発明の連続音声認識装置は、
文脈自由文法や有限状態オートマトンを、任意個のサブネットワーク文法（ルールと呼ぶ）から構成される文法にコンパイルし、かつ、コンパイルされたルールであるマスタールールに他のマスタールールが内部ルールとして埋め込まれている場合、内部ルールを持つマスタールールが、内部ルールへ仮説を出力するための内部ルールへの出力ノード及び内部ルールからの仮説を入力するための内部ルールからの入力ノードを持つようにコンパイルし、外部記憶装置やメモリに記録するコンパイル部と、コンパイルされたルール（マスタールール）を、必要に応じてメモリ上に展開し又は、メモリ上から削除して、マスタールールの管理を行なうマスター文法管理部と、マスター構造体すなわちマスタールール、マスタールールに含まれるアーク（マスターアーク）及びノード（マスターノード）を、プロン構造体すなわちサーチ処理に適した形式に展開されたルール（プロンルール）、アーク（プロンアーク）及びノード（プロンノード）として、メモリ上で管理するプロン文法管理部と、連続音声認識のサーチを制御するサーチ制御部と、仮説を記憶する仮説記憶部と、仮説の展開処理を行なう仮説展開部と、マスターアーク、マスターノードをそれぞれプロンアーク、プロンノードに展開するアーク展開部と、仮説が単語終端を通過した情報をメモリ又は外部記憶装置に記録、管理するワードエンド管理部と、連続音声認識の結果をアプリケーションに通知する認識結果出力部とを有し、省メモリ、省演算量、高い汎用性を実現する。
【００１４】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１５】
図１に、本発明の一実施の形態としての連続音声認識装置が示されている。
【００１６】
図１では、コンパイルなどのサーチ開始前に必要な処理、フレーム同期ビームサーチにおける１フレーム分の仮説展開の動作及びサーチ終了後に必要な処理を示す。その他の動作はフレーム同期ビームサーチに従うものとする。
【００１７】
なお、サーチ制御部３、ワードエンド管理部７、認識結果出力部８以外の全ての部分はサーチ方式には依存しないため、縦型探索方式にも適用が可能である。
【００１８】
図１において、コンパイル部１は、請求項２に記述の通り、ネットワーク形式で表現された文脈自由文法や有限状態オートマトンなどの文法を、複数のサブネットワーク文法（ルールと呼ぶ）に分割し、それぞれのルールを、それに適した形式にコンパイルし、さらに圧縮する。ルールは、アークを内部に持つことができるのと同様、ルールも内部に持つことができる。ルールＡにルールＢが埋め込まれている場合、ルールＢをルールＡの「内部ルール」と呼び、ルールＡをルールＢの「外部ルール」と呼ぶ。
【００１９】
ルールは、外部ルールから仮説を入力するための「始端入力ノード」、及び、外部ルールへ仮説を出力するための「終端出力ノード」を持つ。これらのノードを通してのみ外部ルールへの仮説の出力及び外部ルールからの仮説の入力が可能である。これらの入出力ノードの個数は任意である。
【００２０】
請求項１に記述のコンパイル部の、マスタールール同士の接続関係の管理方式の一例を挙げる。内部ルールを持つルールは、内部ルールへ仮説を出力するための「内部ルールへの出力ノード」及び、内部ルールからの（戻ってくる）仮説を入力するための「内部ルールからの入力ノード」を持つ（図５）。内部ルールＢへの”内部ルールへの出力ノード”の個数は、内部ルールＢの”始端入力ノード”の個数と一致していなくてはならない。また、内部ルールＢからの”内部ルールからの入力ノード”の個数は、内部ルールＢの”終端出力ノード”の個数に一致していなくてはならない。
【００２１】
以下では簡単のために、始端入力ノード、終端出力ノード、内部ルールへの出力ノード、内部ルールからの入力ノードを総称して「入出力ノード」と呼ぶこととする。入出力ノードは、ルール内のアークの後続ノードになることができ、又、ルール内のアークを後続アークとして持つ事ができる。つまり、入出力ノードは、ネットワーク中の普通のノードとしての機能も兼ね備える。
【００２２】
外部ルールＡは、内部ルールＢの”始端入力ノード”の個数及び”終端出力ノード”の個数を知っているだけで、ルールＢを内部ルールとして持つ事ができる。外部ルールＡは、内部ルールＢの内部構造を知る必要はない。このように、ルールをルール中に埋め込むことにより、ネットワーク文法記述のモジュール化を実現した。
【００２３】
ルール中には、統計言語モデルスコアも記述することができる。
【００２４】
図２に示されている、都道府県名、市名、町名の三階層に分割された全国住所タスクのコンパイルを例にして、コンパイル部の動作を説明する。このタスクでは各階層間や、文頭、文末には、「えーと」、「あー」などの付加語アーク、無音アーク（これらのアークをまとめたルールを「付加語ルール」と呼ぶ）やナルアークが挿入できることとする。
【００２５】
このタスクでは、１つの県の中にある市名の一覧を木構造化することができる。このタスクでは、地名のまとまりが語彙の大部分を占めるため、地名のまとまりを全て木構造化し、さらにそれらの木構造辞書を圧縮した方がメモリ効率がよい。木構造化できないルールは、異なる方法で圧縮、コンパイルする。
【００２６】
請求項２に記述の、木構造化の可能なルールのコンパイル、圧縮方法の一例を以下に挙げる。
１）木構造化の可能なルール中の全てのアークは、まず単語の読み情報を持つアークに変換される。
２）単語の読み情報を持つアークは、単語を音素表記で表したアークの連鎖に変換される。
３）全ての先頭の音素アークが束ねられ、音素アークで表現された木構造辞書が作成される。
【００２７】
木構造辞書を音素アークで表現するのは、木構造辞書をさらに圧縮するためである。例えば、木構造辞書を環境依存音素アークで表現すると、（ほとんどの環境依存音素セットは、環境依存音素の種類数が 256 以上、65536 個以下であるため）１つのアーク情報に 2 byte 必要になる。
【００２８】
この木構造辞書はさらに圧縮される。木構造辞書の特徴的な情報である、「分岐があるという情報」及び「このアークが単語終端アークであるという情報」は音素情報と共にまとめられ、全ての木構造辞書中の１アークが 1 byte で表現される。アークの 1 byte 情報の中には、「分岐の個数」や「それぞれの分岐先アークへのポインタ又は相対アドレス」という情報は含めることができないため、あらかじめ定められた木構造辞書の圧縮のフォーマットに従って適切な場所に記録される。
【００２９】
木構造辞書中に記述しなくてはならない他の情報として、「木構造辞書中の最初のアークである」という情報と、「木構造辞書中の最初から２番目のアークである」という情報がある。この情報は、アーク展開部６で必要な情報であるため、ここでは理由は述べない。
【００３０】
ユーザが木構造化できるルールを記述する際に、木構造ルールからの仮説の出力方式を選択することができる。出力方式としては、「単語毎に別々の終端ノードを持ち、仮説は各単語の終端ノードを通って出力される」、「全ての単語の終端ノードは１つに束ねられ、仮説はその終端ノードを通って出力される」、「全単語の最後の音素の種類数の終端ノードを持ち、仮説は単語の最後の音素で決定される終端ノードから出力される」又は「全単語の最後の音節の種類数の終端ノードを持ち、仮説は単語の最後の音節で決定される終端ノードから出力される」などの選択肢の中から任意の仮説の出力方法を選択することができる。なお、圧縮のために、木構造辞書の終端ノードは木構造ルール中には存在せず、上記の選択肢のうち、どれが選ばれたかという情報だけが木構造ルール中に記録される。マスター文法管理部２がこの情報を使用して、木構造ルール中にあたかも”終端出力ノード”があるかのようにサーチ制御部３及びプロン文法管理部２’に仮説の出力先情報を与える。
【００３１】
次に、木構造化できないルールのコンパイル、圧縮を考える。図２の全国住所タスクでは、木構造化できないルールは、各階層間に挿入される「付加語ルール」と、全てのルールの接続情報を管理するルール（以下では、ルール間接続管理ルールと呼ぶ）だけである。
【００３２】
木構造ルール以外のルールのコンパイル、圧縮手順の一例を以下に述べる。
１）単語ネットワークが音素ネットワークに展開される
２）音素ネットワークは環境依存音素ネットワークに展開される（図４）。但し、ルール始端アーク４１、ルール終端アーク４２、内部ルールへの出力アーク４３及び内部ルールからの入力アーク４４は、環境依存音素に展開する事ができない。これらのアークを「未展開音素アーク」と呼ぶ。環境依存音素に展開する事ができない理由は、外部ルール又は内部ルールの隣接するアークの音素が、コンパイル時には決定できないためである。
３）”未展開音素アーク”、”未展開音素アークの後続のアーク４５”及び”複数のアーク又はノードを入力として持つ環境依存音素アーク（以下では、複数入力を持つ環境依存音素アーク４６と呼ぶ）”に、ルール中での通し番号（アークＩＤ）をつける。これは、アーク展開部で必要な情報であるため、ここでは理由は述べない。
４）必要に応じて任意の方法で圧縮を行なう。圧縮が特に必要でない場合、圧縮を行なわなくても良い。
【００３３】
付加語ルールのコンパイル、圧縮について述べる。付加語ルールの例を図８に示す。図に示される付加語ルールは、単語のマージが発生するため木構造化ができない。仮に木構造化できるよう単語ネットワークを書き換えたとしても、語彙数が少ないため、木構造化のメリットが少ない。このため、付加語ルールは木構造化しない。また、付加語ルールは小さいため、圧縮も行なわない。
【００３４】
ルール間接続管理ルールのコンパイル、圧縮について述べる。ルール間接続管理ルールは、全国住所タスクにおけるサブネットワークであるルールを全て内部ルールとして保持し、それらの接続情報を管理する。そのため、内部ルールへの出力ノード及び内部ルールからの入力ノードが、ルール中の大部分を占める。以下では、入出力ノードの圧縮方法の一例を述べる。
【００３５】
請求項３に記述のコンパイル部は、一つの実体の入出力ノードに、複数の入出力ノードの機能、及び入出力ノードではない通常のノードとしての機能も付与する事ができる。例えば、ある１つの始端入力ノードは、２つの内部ルールへの出力ノードの機能、１つの内部ルールからの入力ノードの機能、１つの終端出力ノード及び通常のノードとしての機能も兼ね備える（図５）。このように、複数の入出力ノードの機能を有する入出力ノードの事を、「拡張入出力ノード」と呼ぶ。拡張入出力ノードを使用する事により、大幅にルールを記述するためのメモリを圧縮する事ができる。それは、図５を例にして説明すると、一つの実体の拡張入出力ノードへのポインタを、その拡張入出力ノードの使用される箇所に書き込むだけですむからである。図５において、拡張入出力ノードを使用せずに、同じネットワークを記述する場合、５つの入出力ノード、１つの通常ノード及び５つのナル遷移アークを用いなくてはならない。
【００３６】
請求項４に記述のマスター文法管理部２は、マスタールール同士の接続関係を、埋め込み型方式（図６）で管理する。これは、異なる複数箇所から呼び出され、異なる箇所へ接続される同一内容のネットワークを持つマスタールールを、ルール全体で共有し、実体を１つだけ保持することにより、省メモリが実現できるためである。例えば、全国住所タスクにおいて、付加語ルールは各階層間のいたる場所から呼び出され、それぞれ異なるルールへと接続される。この場合、ルール間接続管理ルール中の、付加語を埋め込みたい箇所で付加語ルール呼び出せば、それぞれの付加語ルールに入った仮説は、それぞれの付加語ルールから戻ってくるため、仮説は適切なルール間遷移をする。以上のように、付加語ルールはたった１つのマスタールールとして記録されるだけであり、付加語ルールの記述のために必要なメモリは、一箇所以上、何箇所で呼び出されていようと変わらない。
【００３７】
マスター文法管理部は、コンパイル部のコンパイル、圧縮したマスタールールを、外部記憶装置上、又はメモリ上のどこにあるかを管理する。プロンルール管理部からマスタールール取得要求があった時に、マスター文法管理部は以下のような動作を行なう。
Ａ）もし要求のあったマスタールールが外部記憶上にある場合、主記憶上に読み込む。
Ｂ）もし要求のあったマスタールールが、プロン文法管理部及びアーク展開部が直接解読できない形式に圧縮されている場合、その圧縮を展開する。プロン文法管理部及びアーク展開部が直接解読できる形式に圧縮されているなら、その圧縮は展開しない。つまり、圧縮を展開するかどうかは、プロン文法管理部及びアーク展開部のサポートする圧縮方式に依存する。
【００３８】
請求項６に記載のマスター文法管理部は、プロンルール制御部から、あるマスタールールが不要であると通知された時には、そのマスタールールをメモリ上から削除することができる。
【００３９】
プロン文法管理部２’は、プロンルールを生成し、プロンルール、プロンアーク及びプロンノードを主記憶上に記憶、管理する。
【００４０】
請求項８に記述のプロン文法管理部は、プロンアーク及びプロンノードを、それらの属するプロンアーク毎に管理する。このことにより、プロンアークやプロンノードは、自分がどのプロンルールに属するかという情報を個別に持つ必要がなくなり、省メモリが実現できる。
【００４１】
プロンアーク及びプロンノードは、アーク展開部がマスタールールを解読し、生成する。マスター文法管理部の説明で既に述べたが、複数のプロンルールは、同一のマスタールールを共有する事ができる。つまり、マスタールールＡが複数箇所で呼び出される場合、メモリ上に存在するマスタールールＡは１つだけである。これに対し、プロンルールはサーチ処理に必要になった箇所の数だけ生成される。
【００４２】
プロンルール同士の接続関係は、請求項５に記載のプロン文法管理部により、木構造状（図７）に管理される。木構造状のプロンルールの管理方法は、埋め込み型（図６）のマスタールールの管理方法と密接な関係がある。図６で外部ルールとして表されるルールは、図７で上位ルールとして表され、図６で内部ルールとして表されるルールは、図７で下位ルールとして表される。外部ルールの個数は、図６、７の両方において常に１つだけである。内部ルールの個数は、図６、図７の両方で一致する。
【００４３】
マスタールールにおける、埋め込み型のルール管理方式では、マスタールール同士の接続関係を全て保持する実体としての構造体は存在しない。つまり、マスタールールのルール同士の接続の管理は、各ルールの内部に、内部ルールの名前又は内部ルールへのポインタを埋め込む事によってのみ行なわれ、全体のマスタールールの接続関係を把握する構造体は実在しない。例えば、ルールＡが、ルールＡを内部ルールとして持つ時、全体のマスタールールの接続関係は無限の再帰となるので、埋め込み型の構造体によって実体として表す事はできない。
【００４４】
これに対し、木構造状のプロンルールの管理構造体は実体が存在する。プロンルールは、サーチ処理に必要なものだけが作成されるため、有限個しか存在しない。
【００４５】
以下では、プロンルール管理部における木構造状のプロンルールの管理構造体を、ルールツリーと呼ぶ。
【００４６】
プロンルールが生成される手順は以下の通りである。
１）仮説展開部５が、プロンルールＡに属する仮説を後続プロンアークに展開する処理を行おうとしたが、後続プロンアークが存在しなかった。
２）仮説展開部が、アーク展開部６に後続プロンアークの展開を要求する。
３）アーク展開部が、後続アークがマスターアークであり、未展開音素アーク（アークＡと呼ぶ）である事を発見する。このとき、アークＡは、必ず内部ルールへの出力アーク、ルール終端アークかのどちらか一方であるか、又は両方である。
４）アークＡを環境依存音素プロンアークに展開するために、さらに後続のアーク（アークＢと呼ぶ）の音素が必要となる。アークＡが内部ルールへの出力アークである場合は、５）を実行する。アークＡが終端出力アークである場合は、７）を実行する。アークＡが内部ルールへの出力アークであり、かつ終端出力アークでもある場合には５）及び７）を実行する。以上で、プロンルールの作成は終了する。アークＡのプロンアークへの展開方法は、アーク展開部の説明で述べる。
５）ルールツリーを調べ、プロンルールＡの内部ルールのうち、アークＡに接続する内部ルールであるプロンルール（プロンルールＢ）が生成されているかどうかを調べる。既にプロンルールＢが生成されている場合、重複してプロンルールＢを生成してはならないため、ここで内部プロンルールの作成処理は終了する。
６）プロンルールＡのマスタールール（マスタールールＡ）を調べ、マスター文法管理部からマスタールールＡの内部ルールのうち、アークＡの接続する内部ルール（マスタールールＢ）を取得する。マスタールールＢから、マスタールールＢに対応するプロンルールＢを生成し、ルールツリーにプロンルールＡの内部ルールとして登録する。これでプロンルールＢの生成は終了する。
７）ルールツリーを調べ、プロンルールＡの外部ルールであるプロンルール（プロンルールＢ）が生成されているかどうかを調べる。プロンルールＢが生成されている場合、重複してプロンルールＢを生成してはならないので、ここ外部プロンルールの作成処理は終了する。
８）ルールツリーを調べ、プロンルールＡの外部ルールであるマスタールール（マスタールールＢ）の取得要求をマスター文法管理部に出す。マスタールールＢから、マスタールールＢに対応するプロンルールＢを生成し、ルールツリーにプロンルールＡの外部ルールとして登録する。
【００４７】
以上が、プロンルールＢの生成手順である。
【００４８】
請求項７に記載のプロン文法管理部は、サーチ処理部が不必要であると判断し、削除するよう命令されたプロン構造体を削除、又は外部記憶上に退避する機能を備える。
【００４９】
請求項９に記載のプロン文法管理部は、プロンアークを削除する際に、その復旧情報を主記憶上に記録することができる。この復旧情報を記録することにより、請求項１１に記載のアーク展開部は迅速なプロンアークの復旧を実現する。復旧情報を記録しない場合、一度行なったプロンアークの生成処理を再び行なう必要が生じる。プロン文法管理部は、復旧情報を外部記憶装置に退避し、復旧情報が必要になった際に主記憶上にロードすることもできる。復旧情報としては、以下のものが挙げられる。
１）プロンルールが削除される場合、そのプロンルールのルールツリー上での位置
２）始端アーク又は内部ルールからの入力アークであるプロンアーク（プロンアークＡ）が削除される場合、プロンアークＡの属するプロンルール（プロンルールＡ）の、ルールツリー上での位置及び、プロンルールＡ上での位置（又はルール中での通しＩＤ）
上記の例、２）に記載のプロンアークＡを削除する際には、プロンアークＡを後続アークとして持つ全てのプロンアークに、プロンアークＡが削除されたことを通知する必要がある。通知しない場合、仮説展開部が既に存在しないプロンアークＡに仮説を展開しようとして、サーチ処理が正常に行なわれなくなる。
【００５０】
始端アーク又は内部ルールからの入力アーク以外のプロンアークは、他のプロンルールに属するプロンアークの後続アークにはなり得ないため、復旧情報を記録する必要はない。
【００５１】
サーチ制御部３は、フレーム同期ビームサーチに従って、仮説展開部５に仮説展開命令を出す。請求項１１に記載の仮説展開部は、仮説記憶部４から仮説を取得し、プロンルール単位で仮説展開を行なう。単語終端情報は、ワードエンド管理部７に記録する。
【００５２】
サーチ処理部は、サーチ処理に不必要なプロン構造体を削除するよう、プロン文法管理部に命令を出すことができる。以下に、どのようなプロン構造体が不必要であるかを判断する例を挙げる。
例１）仮説の存在しないプロンアーク。仮説の存在しないプロンアークは、既にサーチ処理に不必要である可能性があるため、削除することができる。
例２）仮説の存在しないプロンルール及びそのプロンルール中の全ての構造体。仮説の存在しないプロンルールはメモリを消費するだけであるので、削除することができる。
例３）プロンルール及びそのプロンルールの任意の階層の内部プロンルール（ルールツリーを用いて図３で示されるプロンルール）に仮説の存在しないプロンルール中の全てのプロン構造体。これは、例２）を改良したものである。例２）では、内部ルールに仮説が含まれている場合、その仮説が後に戻ってくる可能性がある。仮説が内部ルールから戻ってきた場合、削除したプロンルールを復旧する必要があり、効率がそれほど良くない。そのため、任意の階層の内部ルールを調べることにより、上記の現象を回避することができる。またプロン文法管理部は、展開されたプロンルールが全て削除されたマスタールールを削除するよう、マスター文法管理部に指示を出すことができる。
【００５３】
請求項１１に記載のアーク展開部６は、仮説展開部から、あるプロンアーク（プロンアークＡ）の後続のマスターアーク（マスターアークＢ）をプロンアーク（プロンアークＢ）に展開するよう指示されることにより、アークの展開を行なう。展開されたプロンアークＢは、プロン文法管理部に渡され、プロン文法管理部が記憶する。なお、既にプロンアークＢが存在する場合は、プロンアークＢを重複して展開することはしない。
【００５４】
プロンアークＡの後続アークの展開手順は、以下の通りである。
１）プロンアークＡに、後続アークが記録されているかどうかを調べる。
２）プロンアークＡに後続アークが記録されていない場合、３）を実行する。そうでない場合は、記録されている後続アークの中の全てのマスターアークについて、５）を実行する。
３）プロンアークＡのマスターアーク（マスターアークＡ）を調べる。
４）マスターアークＡの全ての後続マスターアーク（マスターアークＢ）をマスター文法管理部から取得する。マスターアークＢの取得にルール遷移が必要な場合は、プロン文法管理部にルール遷移を行なった後の、後続マスターアークの取得要求を出し、マスター文法管理部からマスターアークＢを取得する必要がある。全てのマスターアークＢについて、５）を実行する。
５）もし、マスターアークＢが、ルール中での通しＩＤを持つアークならば、後述する「ルール中での通しＩＤを持つマスターアークの展開手順」を実行して、マスターアークＢをプロンアーク（プロンアークＢ）に展開する。そうでない場合、マスターアークＢを環境依存音素プロンアーク（プロンアークＢ）として展開する。
６）プロンアークＢの管理をプロン文法管理部で行なうため、プロンアークＢをプロン文法管理部に渡す。もし、プロンアークＢが別のプロンルール（プロンルールＢ）上にある場合、プロンルールＢのルールツリー上での位置もプロン文法管理部に渡す。
７）プロンアークＢへのポインタを、プロンアークＡの後続アークとして、プロンアークＡに記録する。
８）もし、マスターアークＢがプロンアークＡの後続アークとして登録されているなら、後続アークのリストから削除する。
【００５５】
以上でマスターアークＢの展開は終了である。
【００５６】
ルール中での通しＩＤ（ＩＤ−Ｂ）を持つマスターアーク（マスターアークＢ）の展開手順は以下の通りである。なお、左音素を持つアークをプロンアークＡとする。
１）通しＩＤ（ＩＤ−Ｂ）を持つマスターアーク（マスターアークＢ）が環境依存音素マスターアークの場合、２）を実行する。そうでない場合、５）を実行する。
２）マスターアークＢの属するプロンルール（プロンルールＢ）を、プロン文法管理部から取得する。マスターアークＢは環境依存音素であるので、プロンルールＢは必ず存在する。
３）プロン文法管理部から、プロンルールＢ上のＩＤ−Ｂを持つプロンアークＢを取得する。
４）もし、プロンアークＢがまだ生成されていないために取得できない場合には、マスターアークＢは環境依存音素アークであるため、そのままプロンアークＢに展開できる。プロンアーク（プロンアークＢ）を生成して終了する。
５）マスターアークＢは、未展開音素アークである。プロンアークＡの音素を左音素として、今までにマスターアークＢが（複数の）環境依存音素プロンアークＢに展開されたことがある場合、再びプロンアークへの展開を行なう必要はない。過去の展開結果をそのまま利用する。ここで展開は終了する。
６）マスターアークＢが、今までに一度もプロンアークに展開されたことがない場合、８）を実行する。そうでなければ、７）を実行する。
７）過去にマスターアークが異なる左音素で展開された際の、全ての後続アークを取得する。１１）を実行する。
８）マスターアークＢの属するマスタールール（マスタールールＢ）をマスター文法管理部から取得する。
９）マスタールールＢのプロンルール（プロンルールＢ）を、プロン文法管理部から取得する。もしプロンルールＢがまだ作成されていなければ、プロン文法管理部はプロンルールＢを自動的に作成する。
１０）マスターアークＢの全ての後続アークを、マスタールールＢから取得する。もし後続アークがマスタールールＢ以外にも存在し、後続アークの取得にルール遷移が必要であれば、そのマスタールールをマスター文法管理部から取得する。
１１）取得した全ての後続アークに対し、未展開音素アークであるマスターアークＢを環境依存音素に変換する。
１２）１１）で求めた全ての環境依存音素に対して、プロンアーク（プロンアークＢ）を生成する。つまり、一つのマスターアークＢは複数のプロンアークＢに展開される。
１３）それぞれのプロンアークＢに、プロンアークＢの（複数個あるかもしれない）後続アークを記録する。
１４）全てのプロンアークＢを、プロンルールＢのルールツリー上での位置と共に、プロン文法管理部に通知し、記録する。
【００５７】
以上がマスターアークＢが、ルール中での通しＩＤを持つ場合の復旧手順である。
【００５８】
本発明では、未展開音素の存在ネットワーク文法及びアークの複数の入力を持つネットワーク文法のサーチ処理を正しく行なうため、未展開音素アーク及び複数の入力を持つアークに、ルール中での通しＩＤをつける。ルール中での通しＩＤを持つマスターアークに対応するプロンアークが既に存在するのに、それを調べずに、同じプロンアークを複数個生成すると、そのプロンアーク以降のネットワークは重複して生成され、サーチ処理が正常に動作しなくなる。
【００５９】
請求項１２に記載のアーク展開部は、マスタールールの形式には依存しない、統一されたプロンアーク、プロンノードを生成する。これによるメリットは、全てのプロンルール上の仮説に対して、仮説展開部が同じ方法で行なえるために、新しい形式のマスタールールの拡張が容易であり、汎用性に優れることである。
【００６０】
これに対し、請求項１３に記載のアーク展開部は、マスタールールの形式に依存した、最適化されたプロンアーク、プロンノードを生成する。これによるメリットは、各マスタールールの形式に特化したアルゴリズムを用いて、それぞれのプロンルール上の仮説展開が行なえるため、省メモリ、省演算量が実現できることである。
【００６１】
請求項１４に記載のアーク展開部は、プロン文法管理部によって削除されたプロンアーク（プロンアークＢ）を、請求項９に記載のプロン文法管理部が記録した復旧情報を使用することにより、少ない処理量で復旧することを可能とする。プロンアークＢのマスターアークをマスターアークＢとする。
【００６２】
マスターアークＢが環境依存音素アークである場合の復旧手順は以下の通りである。
１）マスターアークＢの環境依存音素を持つプロンアーク（プロンアークＢ）を作成する。
２）プロン文法管理部にプロンアークＢを記録する。この際、マスターアークＢが、ルール中での通しＩＤを持つ場合、そのＩＤと共にプロン文法管理部に記録する。
【００６３】
以上がマスターアークＢが、環境依存音素アークである場合の復旧手順である。
【００６４】
マスターアークＢが、未展開音素アークである場合の復旧手順は以下の通りである。未展開音素アークは必ずルール中での通しＩＤを持つ。
１）請求項１０に記載のプロン文法管理部が、プロンアークＢを削除した際に記録した後続アークの情報を、プロン文法管理部から取得する。後続アークが他のルール上にあれば、その後続アークの存在したルールの、ルールツリー上での位置も同時に取得する。
２）ルール中での通しＩＤ（ＩＤ−Ｂ）を持つマスターアーク（マスターアークＢ）の展開手順の、１１）を実行する。
【００６５】
以上がマスターアークＢが、未展開音素アークである場合の復旧手順である。
【００６６】
サーチ処理部が、全ての音声フレームについてサーチ処理を終了すると、認識結果出力部８は、ワードエンド管理部の情報から、N-best やワードグラフをアプリケーションに渡す。
【００６７】
【発明の効果】
以上説明したように、本発明は以下の効果を有する。
【００６８】
サブネットワーク文法（ルール）に分割した形でネットワーク状に記述された文脈自由文法を、ルールに適切な方法でコンパイルし、記録する手段と、コンパイルされたルール（マスタールール）を、サーチ処理の必要に応じてメモリ上に圧縮を展開し、マスタールール同士の接続関係を埋め込み型方式で管理する手段と、マスタールールを連続音声認識のサーチ処理に適した形式（プロンルール）に展開し、プロンルール、プロンルールに含まれるアーク（プロンアーク）及びノード（プロンノード）をメモリ上に記憶、削除し、プロンルール同士の接続関係を木構造上に管理する手段と、統一された形式、又はサーチに最適化された形式のプロンルール、プロンアーク等を用いてサーチを行なう手段と、マスタールールの形式の違いを吸収してプロンアークを展開し、さらに一度行なったルール遷移を二度と行なわずにルール間の音素アークを環境依存音素アークに展開する手段とを備えることにより、省メモリ、省演算量、高い汎用性を実現することができるという効果がある。
【図面の簡単な説明】
【図１】本発明の実施の形態の連続音声認識装置の構成を示す図である。
【図２】全国住所タスクを示す図である。
【図３】任意の階層の内部プロンルールを示す図である。
【図４】ルール中の各種アークを示す図である。
【図５】入出力ノード及び拡張入出力ノードを示す図である。
【図６】マスタールールの埋め込みの例を示す図である。
【図７】プロンルールの木構造上の接続関係を示す図である。
【図８】付加語ルールの一例を示す図である。
【図９】従来の連続音声認識装置の例の構成を示す図である。
【符号の説明】
１、９１    コンパイル部
２    マスター文法管理部
２’    プロン文法管理部
３、９３    サーチ制御部
４    仮説記憶部
５、９４    仮説展開部
６、９８    アーク展開部
７    ワードエンド管理部
８    認識結果出力部
３１    ルールＢの、任意の階層の内部プロンルール
４１    ルール始端アーク
４２    ルール終端アーク
４３    内部ルールへの出力アーク
４４    内部ルールからの入力アーク
４５    未展開音素アークの後続のアーク
４６    複数入力を持つ環境依存音素アーク
５１    始端入力ノード
５２    終端出力ノード
５３    内部ルールへの出力ノード
５４    内部ルールからの入力ノード
５５    拡張入出力ノード（●印）
９２    Container Werehouse
９５    Viterbi Work Memory
９６    Container Shelf
９７    Back Track Memory
【図１】
0004366557.tif 000002
【図２】
0004366557.tif 000003
【図３】
0004366557.tif 000004
【図４】
0004366557.tif 000005
【図５】
0004366557.tif 000006
【図６】
0004366557.tif 000007
【図７】
0004366557.tif 000008
【図８】
0004366557.tif 000009
【図９】
0004366557.tif 000010