以下では、まず本発明の実施形態が前提とする2方式の音声認識誤り修正装置について説明し、その後に、本発明の複数の実施形態を説明する。
[方式1:前提とする音声認識誤り修正装置の形態]
以下、本形態の音声認識誤り修正装置について詳細に説明する。
図1に示す音声認識誤り修正装置100は、原稿テキスト集合200に含まれる原稿201を読み上げた発話音声を認識する音声認識装置220が出力する認識結果の単語列(認識単語列)を入力として受け付け、予め記憶した対応原稿の単語列を推定することで、認識単語列に含まれる誤りを修正するものである。ここで、音声認識誤り修正装置100が推定処理のために予め記憶した情報は、原稿テキスト集合200を予め読み込んで構築された対応原稿の集合であって、状態を表すノードとノード間の状態遷移を表す枝とをネットワークとして有した重み付き有限状態トランスデューサー(Weighted Finite State Transducers:以下、WFSTという)で表された対応原稿集合である。この音声認識誤り修正装置100は、WFSTのネットワーク上で最良仮説を逐次調べ、WFST上の対応原稿の単語列と認識単語列との編集距離を基準に、全ての単語の入力を待たずに最終最良仮説を近似して部分的に修正結果を逐次確定する。
図1に示した例は、地方放送局発のニュース番組に音声認識を用いて字幕を付与する場合に適用するための音声認識誤り修正装置100を含むシステム全体を模式的に示している。このような番組の発話音声は、概ね事前に用意された原稿テキストに基づいているという特徴がある。また、大規模なキー放送局は、音声認識結果に含まれる認識誤りを人手で修正するためのオペレーターを配置しているが、地方放送局は、現状では前記オペレーターを配置することが難しいことから、このような例を示した。本実施形態によれば、地方放送局のオペレーター配置の課題を解決することができる。
図1に示す原稿テキスト集合200は、人が話す予定の内容をテキストに書き起こしたものの全体を表している。原稿テキスト集合200は、例えば文、文章、段落といった単語列の区切りの単位や、そのテーマやトピック等の内容分類に応じて、多数の細分化された個別の内容に分けられる。このような個別の内容を、以下では単に原稿と呼ぶ。また、単語列の単位が一例として文であるものとして説明する。
なお、原稿テキスト集合200は、原稿テキスト記憶部に記憶されている。原稿テキスト記憶部は、例えば、磁気ディスク装置や半導体メモリを用いて構成される。
本実施形態では、例えば下記(A1)〜(A7)の条件を前提としている。
(A1)原稿テキスト集合200内の複数の原稿文が音声認識対象として読まれる。
(A2)例えば1つのニュース項目に関する原稿といっても、いくつかの更新された版(バージョン)が用意されていて、どのバージョンの原稿が何時のニュース番組で読まれるのか事前には分かっていない。
(A3)複数の原稿文がどのような順番で読まれるのか事前には分かっていない。
(A4)原稿テキスト集合200に含まれる原稿文には、読まれないものもある。
(A5)読む人物によっては、原稿通りに読まずに、敢えて言い回しを変えてしまう場合や、言い誤りが生じる場合がある。
(A6)音声認識装置220の認識誤りのため意昧不明になった字幕を送出して視聴者に誤解を与えたり不快にさせたりすることを回避することを大前提とする。そのため、意味不明な認識結果の場合には送出せず、代わりに、事前に編集者により校正され内容が確認されている、発話内容に最も近いと自動推定された原稿(事前原稿)を字幕として送出する。
(A7)インタビュー部分などであって認識結果に対応する原稿が元々存在しない場合、自動推定は不可能なので、元原稿が無いインタビュー部分などについては字幕を送出しない。
原稿テキスト集合200は、記者が例えばニュース番組用に入稿した原稿の電子データの集合であって、例えばハードディスク等の一般的な記憶装置やネットワーク上の記憶手段に記憶されている。この原稿テキスト集合200は、対応原稿集合のWFSTを事前に構築するためにも利用される。
音声認識装置220は、生の音声データが入力された場合に、隠れマルコフモデル(HMM)による音響モデル、言語モデルを利用して、音声データを認識し、その認識した結果を認識単語列として生成するものである。本実施形態において、音声認識装置220は、特に限定されず、従来公知のものを採用することができる。
なお、前記(A2)の条件に示す通り、各ニュース項目に対して複数のバージョンの原稿が入稿されており、どのバージョンをどの順番で放送するのかは事前に確定できない。そのような状況で、音声認識装置220は、音声認識を行い、その発話音声に対して、そもそも、対応する原稿が存在するのか否かを即座に調べなければならない。そのため、音声認識に用いる言語モデルは、高精度に音声認識結果と原稿との対応をとるために、原稿テキスト集合200を用いて適応化しておき、原稿通りに読み上げた場合の認識精度が高くなるようにしておくことが好ましい。
トランスデューサー構築装置240は、音声認識誤り修正装置100で利用する対応原稿の集合(対応原稿集合)としてWFSTを構築するものである。
トランスデューサー構築装置240は、音声認識の対象となる読み上げ原稿、つまり、原稿テキスト集合200に含まれる原稿文から、音声認識誤り修正装置100で利用するWFSTを事前に構築する。WFSTは、入力シンボルと出力シンボル、遷移重みを有する有限状態機械であり、単語と文などの異なる粒度の入出力を効率よく扱うことができる。このWFSTの構築については後記する。
音声認識誤り修正装置100は、音声認識装置220から認識結果の単語が入力される度に、WFSTを用いて、入力単語を受理可能な遷移を求めてそのスコアを計算し、累積スコアに対する閾値を用いて枝刈りを行いながら、従来公知のビタビアルゴリズム(Viterbi Algorithm)による探索(ビタビ探索)を用いることを前提としている。なお、ビタビアルゴリズムとは、受信系列に対して送信符号に最も近い、即ち尤度を最大にする符号系列を推定する際に、最大尤度の符号系列を、トレリス線図を用いて効果的に探索する方法である。
通常のビタビ探索では、全ての入力が観測されてから、最もスコアが良くなるパスをトレースバックして最良仮説を出力する。そのため、通常の探索方法では、全ての入力が観測され終わる前に、古い入力から順に逐次修正結果を出力するといったことはできない。例えば、テレビ放送番組の放送音声を認識した結果から字幕を制作してリアルタイムでテレビ画面の画像に重畳する場合を想定すると、通常のビタビ探索による最尤系列は番組の最後まで単語を入力しないと確定することができない。これでは番組が終了してしまうことになるので、このような運用に対して通常のビタビ探索は不適である。
一方、音声認識誤り修正装置100は、ビタビ探索を用いつつも、最尤系列を逐次近似してトレースバックする。すなわち、予め定められた処理開始条件が満たされる度に、その時点で最もスコアが良くなるパスをトレースバックして、確定できる出力遷移を決定するので、修正結果を逐次出力することができる。ここでトレースバックされるパスは、最良仮説の近似であるが、各出力遷移に対応する入力単語列と、原稿の単語列との編集距離を信頼度の基準にして同パスを確定するか否かを決定して近似精度の向上をはかる。なお、詳細は後記する。
[構築されたWFSTの例]
図2は、トランスデューサー構築装置240で構築されたWFSTの例である。WFSTは、状態を表すノードと、状態遷移を表す枝と、を有する。なお、状態遷移のことを単に遷移という場合もある。本実施形態では、入力シンボルを単語、出力シンボルを所定の単語列とする、WFSTを構築する。所定の単語列を文として説明する。
この例では、楕円形の各ノードに、識別するため3桁の数字を付している。始点ノードはノード001であり、終点ノードはノード008である。この例では、始点と終点との間には、ノード002〜ノード007が直線状に並べられている。また、始点と終点との間には、並列に、ノード010〜ノード015が直線状に並べられている。さらに、始点と終点との間には、並列に、ノード018〜ノード023が直線状に並べられている。また、この例では、状態(ノード)と状態(ノード)との間に、遷移(枝)が設定されている。ここで、ノードとノードとの間という場合、自ノード間も含まれている。各遷移には、単語が記載されているか、または、記号として<S>、<I>、<D>、<EmiX(ここでXは1〜3の1つ)>および<eps>のうちのいずれかが記載されている。
まず、図2のすべての遷移について一般化して説明すると、このWFSTは、状態と状態間の各遷移に、(Si/So:ω)のパラメーターが設定されている。ここで、Siとは同遷移が受理する単語入力を表し、Soとは同遷移が出力する所定の単語列(文)を表し、ωは遷移重み(状態遷移重み)を表す。つまり、各遷移には、3つ組のパラメーターが設定されている。ただし、図2では紙面の都合上、パラメーターをすべての遷移に記載しているわけではなく、単語が記載された合計18の遷移に、3つ組のパラメーターのうちのSi、Soのいずれかのみが記載されている。
ここで、図2に記載された単語を一般化して単語sと表記する。なお、アルファベットの大文字と小文字とを区別している。図2において、単語sは、原稿の単語列が含んでいる単語を表す。単語sが記載された各遷移は、当該遷移に記載された単語sと同じ単語が入力されたときのみ遷移可能なことを表している。つまり、原稿の単語列が含んでいるある単語sの位置に対応する認識単語列の位置に入力した単語が、原稿のある単語sと同じ単語であれば、状態遷移することができる。要するに、単語sが記載された各遷移は、音声認識された単語を受理して進む遷移である。このようにここで構築するWFSTは、全ての原稿文を自由に接続できるネットワークである。
図2において、単語sが記載された遷移についてのパラメーターは、(s/ε:0.0)で表される。ここで、sは同遷移が受理できる単語入力を表し、εはこの遷移で出力は無いことを意昧する。また、0.0は遷移重みの1つであって、この遷移に対して単語sと同じ単語が入力されたときには、ペナルティが課されないことを意味する。例えば、図2で「先月」が記載された遷移は、3つ組のパラメーターで表すと、(先月/ε:0.0)のことである。
図2において、<S>が記載された遷移は、置換単語を受理するための遷移である。つまり、原稿の単語列が含んでいるある単語sの位置に対応する認識単語列の位置に入力した単語が、原稿のある単語sとは異なる任意の単語に置換されていたときに、その置換単語を受理するための遷移である。以下、原稿の単語列が含んでいるある単語sの位置において、この単語sとは異なる任意の単語のことを、任意の単語*と表記する。この置換には、例えば「再開」が同音異義語の「再会」に翻字されて認識された場合も含まれる。
図2において、<S>が記載された遷移は、任意の単語*を受理可能である。この<S>が記載された遷移についてのパラメーターは(*/ε:ωs)で表される。ここで、*は同遷移が受理できる任意の単語入力を表し、εはこの遷移で出力は無いことを意昧する。また、ωsは遷移重みの1つであって、この遷移に対して単語sとは異なる任意の単語*が入力されたときに課すペナルティ(以下、置換ペナルティという)を意味する。この置換ペナルティωsは、ノードスコアを下げる数値で表され、例えば-1.0を用いる。例えば、図2で<S>が記載された遷移は、3つ組のパラメーターで表すと、(*/ε:-1.0)のことである。
図2において、<I>が記載された遷移は、挿入単語を受理するための遷移である。つまり、発話者に起因して、発話内容に情報の追加や言いよどみによる分節などの繰り返しがあった場合、原稿どおり又は置換されたと認識された単語列に続く位置に挿入された単語を受理するための遷移である。また、音声認識装置220に起因して、原稿通りならば1単語と認識すべきところを、複数単語として認識するような認識誤りで生じて、原稿通りの1単語に続く位置に挿入された単語を受理するための遷移である。
図2において、<I>が記載された遷移は、任意の単語*を受理可能である。この<I>が記載された遷移についてのパラメーターは(*/ε:ωi)で表される。ここで、*は同遷移が受理できる任意の単語入力を表し、εはこの遷移で出力は無いことを意昧する。また、ωiは遷移重みの1つであって、この遷移に対して任意の単語*が入力されたときに課すペナルティ(以下、挿入ペナルティという)を意味する。この挿入ペナルティωiは、ノードスコアを下げる数値で表され、例えば-1.0を用いる。例えば、図2で<I>が記載された遷移は、3つ組のパラメーターで表すと、(*/ε:-1.0)のことである。
図2において、<D>が記載された遷移は、脱落単語を受理するための遷移である。つまり、発話者に起因して、発話内容の一部に句などの脱落があった場合、認識単語列において原稿から脱落した単語の位置を特定するための遷移である。また、音声認識装置220に起因して、原稿通りならば複数単語と認識すべきところを、単語が削除されて1単語として認識するような認識誤りで生じて、認識単語列において原稿から脱落した単語の位置を特定するための遷移である。
図2において、<D>が記載された遷移は、単語の入力が無くても遷移可能である。この<D>が記載された遷移についてのパラメーターは(ε/ε:ωd)で表される。ここで、はじめのεはこの遷移で単語の入力が無いことを意昧し、次のεはこの遷移で出力が無いことを意昧する。また、ωdは遷移重みの1つであって、この遷移で単語が脱落したときに課すペナルティ(以下、脱落ペナルティという)を意味する。この脱落ペナルティωdは、ノードスコアを下げる数値で表され、例えば-1.0を用いる。例えば、図2で<D>が記載された遷移は、3つ組のパラメーターで表すと、(ε/ε:-1.0)のことである。
図2において、<EmiX>が記載された遷移は、所定の単語列として文Lを出力するための遷移であり、修正結果を出力するための遷移である。この<EmiX>が記載された遷移についてのパラメーターは(ε/L:0.0)で表される。ここで、εはこの遷移において単語の入力が無いことを意昧する。また、Lはこの遷移で出力される単語列(文)を意昧する。例えば、図2で<Emi1>が記載された遷移は、3つ組のパラメーターで表すと、(ε/先月の関東甲信地方は…:0.0)のことである。つまり、この場合、Lは、始点ノード001からノード002を経由してノード007に至る各遷移に並べられた単語列「先月 の 関東甲信 地方 は …」をすべて順番に繋げた単語列となる。なお、パラメーター0.0は遷移重みの1つであって、この遷移に対して文を出力するときには、ペナルティが課されないことを意味する。
図2において、<eps>が記載された遷移は、終点ノードと始点ノードを連結する遷移であり、イプシロン遷移(ε遷移)と呼ばれている。<eps>が記載された遷移は、原稿テキスト集合に含まれる所定の単語列(文)が、連続して発話されるという拘束を与える遷移である。<eps>が記載された遷移についてのパラメーターは(ε/ε:ωu)で表される。はじめのεはこの遷移で単語の入力が無いことを意昧し、次のεはこの遷移で出力が無いことを意昧する。また、ωuは遷移重みの1つであって、適切な重み(数値)を与えることにより、WFSTは、より長く一致する文のスコアを高くすることができるようになる。
[WFSTの構築方法]
トランスデューサー構築装置240によるWFSTの構築方法について説明する。
予めWFSTにおいて出力遷移(<EmiX>が記載された遷移)を配置するための単語列の単位を決定しておく。これは、必要とする誤り修正能力に応じて設定することができる。出力遷移を配置する位置は、原稿テキスト集合200に含まれる原稿の単位を1つの区切りとすることができる。出力遷移を配置する位置は、文章単位、句単位、あるいは、記者が原稿の読み易さのために配置した改行単位などが利用可能である。ここで、長い単位を設定すると修正精度は高くなるが、送出する字幕単語列の確定が遅くなる。逆に、短い単位を設定すると、送出する字幕単語列の確定は速くなるが修正精度が低下する。よって、どのような単位を利用するかについては、期待される音声認識の認識精度と、原稿と読み上げ音声の一致度合いと、に応じて適宜設計すればよい。
本実施形態では、WFSTにおいて出力遷移を配置する位置は、一例として文を単位に決定されていることとしている。別の観点では、図2のWFSTは、文(所定単位の単語列)毎に始点ノード001と終点ノード008との間に文を構成する各単語の入力遷移を表す枝(図2において単語sが記載された遷移)と出力遷移を表す枝(図2において<EmiX>が記載された遷移)とを含んでいる。
WFSTの構築は、まず、WFSTの始点から始めて、原稿テキスト集合200に含まれる原稿テキストを一単語ずつ読み込む度に、同単語を受理する重み0の遷移と新たなノードとを順次作成していく。ここで、重み0の遷移とは3つ組のパラメーターで表すと、(s/ε:0.0)のことである。そして、前記した予め決定された単位になったら、出力遷移を追加してWFSTの終点ノードに連結する。まだ原稿が残っていたら、再び始点から始めて、原稿テキストを一単語ずつ読み込む度に、同単語を受理する重み0の遷移と新たなノードとを順次作成していく。そして、前記した予め決定された単位になったら、出力遷移を追加してWFSTの終点ノードに連結する。以下、同様に繰り返す。
原稿テキスト集合200から、すべての原稿テキストを読み込み終えたならば、最後に、終点ノードと始点ノードとをε遷移で連結する。ここで、ε遷移とは3つ組のパラメーターで表すと、(ε/ε:ωu)のことである。ここで、遷移重みωuに適切な重みを与える。これにより、WFSTはより長く一致する文のスコアを高くすることができるようになり、他の文の接頭辞と一致する文が原稿中に存在する場合にも、適切に動作できるようになる。最後に、各単語の遷移に、置換、脱落、挿入を受理する遷移を追加する。
[トランスデューサー構築装置の構成例]
図1に示す例では、トランスデューサー構築装置240は、単語ネットワーク登録手段241と、編集ネットワーク登録手段242と、を備えている。
単語ネットワーク登録手段241は、原稿テキスト集合200に含まれる原稿テキストにおける予め定められた所定単位(例えば文単位)毎に次の一連の処理を行う。すなわち、単語ネットワーク登録手段241は、一連の処理として、原稿テキスト集合200に含まれる原稿テキストに含まれる単語列の単語を読み込む度に、WFSTのネットワークの始点ノードから、単語を受理する入力遷移の枝と新たなノードとを、読み込んだ単語列が予め定められた所定単位(例えば文単位)になるまで順次作成する。そして、WFSTのネットワークにおいて、読み込んだ単語列の出力遷移の枝を追加して終点ノードに連結する。
編集ネットワーク登録手段242は、単語ネットワーク登録手段241で作成されたWFSTのネットワークのノード間に、単語の置換に対応して任意の単語を受理する状態遷移を表す枝と、単語の挿入に対応して任意の単語を受理する状態遷移を表す枝と、単語の削除に対応して入力が無くても出力側に遷移する状態遷移を表す枝とを追加するものである。
[音声認識誤り修正装置の構成例]
図1に示す例では、音声認識誤り修正装置100とは別にトランスデューサー構築装置240を設けたが、図3に示すように、例えば音声認識誤り修正装置100がトランスデューサー構築装置240を備えるようにしてもよい。この音声認識誤り修正装置100は、図3に示すように、WFST記憶手段(対応原稿集合記憶手段)110と、ノードデータ更新手段120と、ノードデータ記憶手段130と、原稿探索手段140と、原稿出力手段150と、を備えている。
WFST記憶手段(対応原稿集合記憶手段)110は、原稿テキスト集合200を用いて予め構築されたWFST(対応原稿集合)を記憶している。このWFST(対応原稿集合)は、トランスデューサー構築装置240が構築したものである。よって、WFSTについては、図2を参照して説明したものと同じなので重複を避けるため説明を省略する。
ノードデータ更新手段120は、音声認識装置220が出力する認識単語列の単語の入力を受け付ける時刻毎に、WFSTのネットワーク上を遷移可能な状態のスコアをノードデータとして計算および更新するものである。ノードデータ更新手段120は、例えば認識単語が1単語入力するたびに、WFST記憶手段110に記憶されたWFSTを参照して逐次的にビタビ探索を行い、ノードデータを更新する。
ノードデータ更新手段120は、認識単語列として入力する単語が、対応原稿と同じ単語である場合、スコアに「0」を加算し、入力する単語が対応原稿と異なる単語である場合、スコアにペナルティの「−1」を加算する。
例えば、図2に示す例において、認識単語列として入力する単語列が、対応原稿と全く同じ単語列である場合、始点ノード001から、単語「先月」を受理して対応原稿の単語に対応する遷移を通ってノード002に進むので、ノードデータ更新手段120は、スコアに「0」を加算する。その後、例えば、「の」を受理してノード003に進むと、スコアに「0」を加算する。同様に、「関東甲信」、…を受理していくと、スコアに「0」ずつ足していくことになる。
一方、例えば、図2に示す例において、認識単語列として入力する単語列が、対応原稿と異なる単語列である場合、始点ノード001から、単語「先週」を受理すると、対応原稿の単語「先月」が置換されているので、置換に対応する遷移を通ってノード002に進む。この場合、ノードデータ更新手段120は、スコアにペナルティの「−1」を加算する。また、挿入誤りや脱落誤りに対応する遷移を通った際も、同様にノードデータ更新手段120は、スコアにペナルティの「−1」を加算する。
このように、入力する認識単語がWFSTにおける単語sと同じであった場合に、そのパスのスコアが最良となる。一方、置換、挿入、削除の編集があった場合、スコアが悪化する。例えば<D>が記載された遷移は、入力が無くても遷移できるが、<D>が記載された遷移だけを通るパスの場合、出力遷移に近づくほど、スコアが低くなっている。WFSTは、認識単語列に、誤りや言い変えが含まれると、その分だけスコアが悪くなるというネットワークとして作成されている。
ノードデータ記憶手段130は、ノードデータ更新手段120によって計算されたノードデータを更新時刻毎に記憶するものであり、例えばメモリやハードディスク等の一般的な記憶手段である。
原稿探索手段140は、最終最良仮説を確定するための全原稿についての全認識単語列の認識結果の入力を待たずに予め定められた処理開始条件が満たされる度に、その時点で記憶されているノードデータに基づいてWFSTのネットワーク上をトレースバックしながら、最終最良仮説を部分的に近似した仮説を誤り修正結果として逐次確定するものである。
原稿探索手段140は、WFST(対応原稿集合)に含まれる対応原稿の単語列と、入力された認識単語列との編集距離に基づいて最終最良仮説を近似する。原稿探索手段140は、WFSTのネットワーク上で予め定められた範囲毎に区切ったパス間において、その先頭から末尾までのパス区間での編集距離がある程度小さければ、そのパス区間が信頼できるものとして確定して出力する。ここで、編集距離が短いということは、認識単語列と原稿の単語列とがほとんどマッチしているパスを通ってきたことを意味する。逆に、編集距離が長いパス区間は信頼度が低いので、その時点では確定せずに、次回のトレースバックのときにも利用する。いつまでも信頼度が低いパス区間は、原稿には元々記載されていない違うことを話した区間である、と推定される。よって、信頼度が低いパス区間を出力しない。以下では、WFSTのネットワーク上で予め定められた範囲のパス区間を、一例として、WFSTのネットワーク上の2つの出力遷移間に挟まれたパス区間であるものとして説明する。
前記処理開始条件が満たされるとは、例えば、発話音声がない無音期間が所定の期間に達した場合、または、音声認識装置220が出力する認識単語列としての単語の入力数が所定の単語数に達した場合等を意味する。所定の期間は特に限定されないが一例として3秒間を挙げることができる。また、所定の単語数は特に限定されないが一例として20単語を挙げることができる。このときの起動信号は、例えば音声認識装置220に自動的に出力させるようにしてもよいし、操作者がポーズだと認識したときや、所定の単語数になったと認識したときに、手動で入力するようにしてもよい。これによれば、認識単語の入力毎に探索処理を開始する場合に比べて処理負荷を低減できる。また、例えば無音期間が所定の期間だけあれば、その間、認識結果の逐次受信が停止しているので、その時点のノードスコアを容易に比較することができる。
上記機能を実現するために、本実施形態では、原稿探索手段140は、一例として図3に示すように、最大スコアノード検出手段141と、トレースバック手段142と、原稿分割手段143と、出力候補記憶手段144と、編集距離算出手段145と、編集距離判別手段146と、確定出力記憶手段147と、確定時刻記憶手段148と、を備えることとした。
最大スコアノード検出手段141は、予め定められた処理開始条件が満たされた場合、その時点で記憶されているノードデータにおいてスコアが最大のノードを検出するものである。例えば、発話音声がない無音期間(ポーズ)が所定の期間に達した場合、または、認識結果としての単語の入力数が所定の単語数に達する度に、その旨を示す起動信号が、最大スコアノード検出手段141に入力する。
トレースバック手段142は、最大スコアノード検出手段141で検出されたノードから、当該ノードに到達したパスについてWFSTのネットワークを下流から上流に向かってたどり、前回のトレースバックで確定し、出力された単語系列の最後の入力単語に対応した時刻までトレースバックするものである。
図4は、図2に示したWFSTにパスP1を付加した模式図である。図4において、スコアが最大のノードがノード020であるものとする。また、前回のトレースバックで確定された最後の入力単語に対応したノードがノード007であったものとする。この場合、トレースバック手段142は、星印で示す位置から、パスP1をノード020、ノード019、ノード018の順番に逆向きにたどり、始点ノード001へ達すると、さらに終点ノード008に戻る。次に、2本目のツリーの出力遷移<Emi2>を経てノード015に達する。続いて、トレースバック手段142は、図5において、ノード015、ノード014、…の順番に逆向きにたどり、始点ノード001へ達すると、パスP2で示すように終点ノード008に戻る。次に、1本目のツリーの出力遷移<Emi1>を経てノード007に達する。
図3に戻って、原稿探索手段140の説明を続ける。
原稿分割手段143は、今回トレースバックするパスの中で、2つの出力遷移間に挟まれたパス区間毎にWFST(対応原稿集合)に含まれる対応原稿の単語列を切り出すものである。図4及び図5を用いて説明した例の場合、出力遷移<Emi1>と出力遷移<Emi2>との間に挟まれたパス区間が、原稿分割手段143により分割される。
出力候補記憶手段144は、原稿分割手段143で分割されたパス区間に対応した出力遷移の出力シンボル(切り出された原稿)を、出力候補として記憶するものであり、例えばメモリやハードディスク等の一般的な記憶手段である。図4及び図5を用いて説明した例の場合、「今週 も まとまった 雨 は …」が、出力候補として記憶される。
編集距離算出手段145は、原稿分割手段143で切り出された対応原稿毎に、入力された認識単語列との編集距離を算出するものである。本実施形態では、編集距離は、当該パス区間についての挿入、置換、削除に係る編集操作回数を、当該パス区間の単語数で除した値で定義される。ここで、認識単語列の単語の置換、挿入、削除の編集操作回数をeとし、出力遷移が対応する原稿の単語数をNrとすると、編集距離は、原稿の単語数Nrに対する、認識単語列の単語の編集操作回数eの割合(e/Nr)で表される。
具体的には、図2に示す例において、WFST上のパス区間が「ノード007→ノード008→ノード001→ノード0010→ノード0011→ノード0012→ノード0013→ノード0014→ノード0015」である場合を想定する。このパス区間は、6単語からなるものとし、単語「今週」が「今月」に置換されて認識されていた場合、編集距離は1/6となる。
編集距離判別手段146は、WFSTのネットワークを下流から上流に向かってパス区間を選択しながら、算出された編集距離が所定の閾値以下であるか否かを順次判別し、閾値以下である場合、WFSTのネットワーク上の当該パス区間の出力遷移を確定し、その出力シンボルを誤り修正結果として確定するものである。ここで、編集距離(e/Nr)が閾値T以下である場合、つまり、e/Nr≦T を満たすとき、出力遷移の出力シンボルを修正結果として確定する。また、編集距離判別手段146は、編集距離(e/Nr)が閾値Tより大きい場合、その出力シンボルを採用しない。つまり、閾値より大きな編集距離を有したパス区間の出力遷移の出力は、一旦保留され、このパス区間以降に確定された出力遷移があった場合には棄却される。なお、編集距離(e/Nr)がその定義から0〜1の範囲の値なので、閾値は0<T<1の関係を満たす。
確定出力記憶手段147は、編集距離判別手段146にて編集距離が所定の閾値以下であると判定された場合、当該所定パス区間における出力遷移の出力シンボルを誤り修正結果として記憶するものであり、例えばメモリやハードディスク等の一般的な記憶手段である。確定出力記憶手段147の記憶構造は、スタックであり、データを後入れ先出しの構造で保持する。
確定時刻記憶手段148は、今回のトレースバック処理で確定した確定時刻を記憶するものであり、例えばメモリやハードディスク等の一般的な記憶手段である。確定時刻記憶手段148は、今回トレースバックする全パス区間(切り出された全ての原稿)について編集距離判別手段146による判別処理が終了した時点で、スタックに積まれた出力シンボルに対応する最新の確定単語の時刻を確定時刻として記憶する。
原稿出力手段150は、原稿探索手段140によって誤り修正結果として確定された対応原稿を逐次出力するものである。原稿出力手段150は、WFSTのネットワークを今回トレースバックするパスの中で、切り出されたすべての対応原稿の各パス区間に対して算出された編集距離についての判定処理が全て終了するまでに確定され、スタックに積まれた出力シンボルのデータをスタックが空になるまで出力する。
この音声認識誤り修正装置100による修正出力は、間違いを正すことと、間違いを出力しないこと、の両方の意味を含んでいる。つまり、音声認識誤り修正装置100による修正結果を、仮に事前に人が見ることができたとしたときに、「これでは文章として成立していない」、「意味が異なっている」と感じるほどの間違い部分を、音声認識誤り修正装置100がその処理の中で検出し、その検出部分を出力しないという動作も、広義の誤り修正として含んでいる。
[音声認識誤り修正装置の動作]
本形態に係る音声認識誤り修正装置100による処理の流れについて図6を参照(適宜図3参照)して説明する。
(前提1)認識結果の単語入力を{ω0,ω1,…,ωk,…,ωj,…}とする。
(前提2)前回のトレースバックにより確定した部分の最後の入力単語をωkとし、そのときの出力遷移をap(時間軸に沿ったP番目の出力遷移)とする。
(前提3)認識結果の単語ωjが入力された後、所定の無音が続いたことをトリガに、逐次確定を行う場合を考える。
(前提4)ノードデータ更新手段120は、無音になる前に最後に入力した単語ωjを受理して遷移できるノードを全て計算する。
所定の無音が続いたことをトリガに、最大スコアノード検出手段141は、現時点で記憶されているノードデータにおいて最もスコアの高いノードを検出する(ステップS1)。この検出ノードで表される状態は、トレースバック開始時点の最尤状態である。そして、トレースバック手段142は、検出されたノードから、当該ノードに到達したパスについてWFST上の単語履歴を逆向きにたどり、前回のトレースバックで確定し、出力された単語系列の最後の入力単語ωk(WFSTの遷移が受理した単語がωkである遷移)に対応した確定時刻までトレースバックする(ステップS2)。ここで、前回のトレースバックで確定し、出力された単語系列の最後の入力単語ωkに対応した確定時刻としては、確定時刻記憶手段148に格納されている確定時刻を用いる。なお、単語がωkである遷移の代わりに、出力遷移aPにたどり着くまでトレースバックするようにしてもよい。
そして、原稿分割手段143は、今回トレースバックするパスの中で、2つの出力遷移間に挟まれたパス区間毎に原稿を分割し、出力候補として出力候補記憶手段144に格納する(ステップS3)。ここで、出力遷移aPにたどり着くまで逆向きに進みながら、出力可能な出力遷移aL(時間軸に沿ったL番目(ただしL>P)の出力遷移)を通過する度に原稿を分割してもよいし、出力遷移aPの側から出力可能な出力遷移aLを通過する度に原稿を分割してもよい。また、出力可能な出力遷移aLとは、出力遷移のシンボルが出力候補になるものであるが、後に編集距離判別手段146により棄却され出力されない出力遷移も含んでいる。このような出力候補の編集距離をDと表記する。
そして、編集距離算出手段145は、出力候補の編集距離Dを算出する(ステップS4)。具体的には、出力遷移aLの出力シンボルに対応する区間、すなわち、WFST上を出力遷移aLから逆向きに進んだときの直前の出力遷移aL-1と当該出力遷移aLとの間に挟まれたパス区間、についての編集操作回数(つまり、<S>、<D>、<I>を通った回数)を、同区間の単語数で割った値を、当該出力遷移aLにおける編集距離DLとして算出する。すなわち、同区間の編集操作回数をeLとし、同区間の単語数をNL rとすると、出力遷移aLにおける編集距離DLは、eL/NL rで表される。
そして、編集距離判別手段146は、所定の出力候補を選択し、算出された編集距離Dが閾値T以下であるか否かを判別する(ステップS5)。編集距離Dが閾値T以下である場合(ステップS5:Yes)、編集距離判別手段146は、WFST上の当該パス区間の出力遷移を確定し、その出力シンボルを誤り修正結果として確定する(ステップS6)。さらに、編集距離判別手段146は、今回確定した出力シンボルのデータを、確定出力記憶手段147に記憶されたスタックに積み(ステップS7)、ステップS8に進む。
そして、編集距離判別手段146は、前方に依然として選択すべき出力候補がある場合(ステップS8:No)、前記ステップS5に戻る。一方、すべての出力候補選択が選択された場合(ステップS8:Yes)、すなわち、切り出されたすべての原稿に対応した各パス区間に対して算出された編集距離についての判定処理が終了した場合、原稿出力手段150は、その時点でスタックに積まれている出力シンボルのデータをスタックが空になるまで順次出力する(ステップS9)。これにより、前方側に配置された原稿から順に出力される。
ここで、編集距離判別手段146は、すべての出力候補選択を選択した場合(ステップS8:Yes)、スタックに積まれた出力シンボルに対応する確定単語の時刻が最も新しいものを今回のトレースバック処理で確定した確定時刻として確定時刻記憶手段148に格納する。
また、前記ステップS5において、編集距離Dが閾値Tより大きい場合(ステップS5:No)、データをスタックに積むことなくステップS8に進む。
つまり、原稿出力手段150は、毎回のトレースバック処理でスタックに積んだデータを、確定された原稿として逐次出力する。この際に、音声認識結果のうち、所定のパス区間の編集距離Dが閾値Tより大きい場合、信頼度が低いパスなので、当該パス区間の出力遷移の出力シンボルは、誤り修正結果としては採用されず、出力もされない。
[編集距離の閾値Tの決め方]
音声認識の認識精度が90%くらいならば、編集距離の値も90%くらいになる可能性がある。判別に用いる編集距離の閾値Tとしては、音声認識の認識精度よりも充分低いところ、例えば単語一致率の信頼度分だけ下方にマージンを取って設定することが好ましい。ここで、単語一致率の信頼度は、WFSTのネットワークの2つの出力遷移間の単語数に依存する。
その他の要因としては、原稿テキスト集合200に含まれる原稿の候補の文章としての重なりがどのくらいの割合であるのかという点も考慮して閾値Tを決めることが好ましい。例えば、下記(E1)〜(E3)に示す文の場合、文章としての重なりが80%くらいの割合で含まれている。
(E1) 今日 の 天気 は 晴れ です
(E2) 今日 の 天気 は 雨 です
(E3) 今日 の 天気 は 曇り です
このような場合、編集距離の閾値も80%くらいに設定してしまったとしたら所望の動きが実現できない。なお、ニュース原稿の一文ごとに出力遷移を配置し、閾値Tを50%とした条件で実験した場合、問題なく動作することが確認できた。
[WFSTのオプション]
<オプション1:言い換えを受理するWFSTの構築>
WFSTの情報源となる原稿には、それが読まれるときに、読み飛ばされる句や、言い換えられる句、補足される句が含まれている場合がある。これらの一部には、定型で高い頻度で起こるものがある。例えば、ニュース番組の原稿では、取材元を表す「警視庁によりますと、」などの句は、読み飛ばされやすい定型句である。ただし、これを読み飛ばしたとしても、ニュース主文(5W1H)の文意に変わりはなく、実用上の問題はない。
オプション1では、このような定型の言い回しをWFSTに追加しておくことで、精度よく修正結果を出力できるようにしたものである。WFSTは、従来公知のように、音声認識デコーダや機械翻訳などに用いられており、種々の演算アルゴリズムが知られている。例えば、合成(図7(a)参照)、最小化(図7(b)参照)、決定化(図7(c)参照)を行うアルゴリズムを適用することができ、効率よい状態遷移機械を構成できるという特徴がある。上記の言い回しの追加については、原稿から構築したWFSTとは別に、言い回しを追加するためのWFSTを別途構築しておき、原稿から構築したWFSTと合成することにより、効率よく実現できる。
例えば、言い換え例については、過去の同種の番組の原稿と、実際に読み上げられた単語列と、の差分から、頻度が高く、同言い換えによって文意に変更がないものを選別して用意しておく。この選別された言い換え例ごとに、言い換えを合成するためのWFSTを構築しておき、原稿から構築したWFSTと合成演算を施すことにより、言い換えに対応可能なWFSTを構築することができる。ここで、WFSTの合成について図7(a)を参照して説明する。
図7(a)では、ノードを円形で示している。図7(a)の左側の上の図は、原稿から構築したWFSTの一例の模式図であり、図7(a)の左側の下の図は、追加されるWFSTの一例の模式図である。図7(a)の右側の図は、原稿から構築したWFSTと、追加されるWFSTとを合成した後のWFSTの模式図である。
<オプション2:WFSTを作成する際のオプションA>
WFSTを作成する際に、必要があればWFSTの最小化を行ってもよい。ここで、WFSTの最小化について図7(b)を参照して説明する。図7(b)の左側の図は、原稿から通常の手法で構築されたWFSTの一例を示す模式図である。ここで、a1〜a6は異なる単語を示す。
図7(b)の右側の図は、原稿から通常の手法で構築されたWFSTを最小化した後のWFSTの模式図である。最小化した後のWFSTには、元のWFSTの3つの単語列において共通する接頭辞(単語a1,a2)について、配列順序(単語位置)を考慮してノード(状態)を集約し、最小個数の枝(遷移)が配置されている。
WFSTの最小化によれば、同じ接頭辞を有する単語列(文)を同一の遷移で共有できるので、演算量を削減することができる。
<オプション3:WFSTを作成する際のオプションB>
また、WFSTを作成する際に、必要があればWFSTの決定化を行ってもよい。ここで、WFSTの決定化について図7(c)を参照して説明する。図7(c)の左側の図は、図7(b)の右側に示すWFSTと同じ形状のWFSTの模式図である。ただし、図7(b)において単語a4が記載されていた遷移には、代わりに出力文o1が記載されている。同様に、単語a5が記載されていた遷移には、代わりに出力文o2が記載され、単語a6の代わりに出力文o3が記載されている。
図7(c)の右側の図は、元とするWFSTを決定化した後のWFSTの模式図である。決定化した後のWFSTでは、元のWFSTと比べて、出力文o3が1つ前(1つ左側)の遷移に記載されている点が異なっている。
元のWFSTには、左から2番目のノードから次のノードへ状態遷移する際に分岐があり、この2番目のノードから図中下のノードに遷移した時点で、出力文がo1やo2ではなくo3になることが決定的であることが分かる。そこで、少しでも早く推定結果を出力するために、決定化した後のWFSTでは、出力文の位置を変更したものである。
WFSTの決定化によれば、出力文を、接頭辞がユニークとなる遷移に移動して、出力文を旱期に確定できるようになるなどの利点がある。ただし、WFSTを作成する際にWFSTの決定化を行った場合、原稿探索手段140による最尤仮説の探索処理でも対応できるように設定変更が必要である。つまり、WFSTの決定化を行わない場合に比べて、編集距離を計算するためのパス区間を出力遷移の前後にシフトさせる必要がある。加えて、前後のパス区間の伸縮分を吸収できるように、閾値Tをより厳しい値(小さい値)に設定する必要がある。
[他のオプション]
本形態は、多言語字幕の生成にも応用可能である。例えば図2に示すWFSTのノード015の次の<Emi2>が記載された出力遷移に、ノード010〜015までの和文に対応した英文を出力シンボルとすることにより、日本語の音声入力に対応した英語の字幕を生成することができる。また、日英の字幕を同時に生成する必要がある場合には、「今週 も まとまった 雨 は …」にその英訳文を併記したものを利用することができる。
以上説明したように、本実施形態に係る音声認識誤り修正装置100は、原稿中の文が、任意の順番で連続して発声されるという拘束のもと、文境界を固定せずに、認識結果と原稿との対応を単語単位でとることで、従来のブロック照合方式の自動修正誤りを解消する。一方で、より精度の高い修正出力を得るためには、出力は、文、又はそれに準じる単位があった方が望ましい。この二律背反を解消して両立させるため、音声認識誤り修正装置100は、認識結果と原稿との対応を、重み付き有限状態トランスデューサー(WFST)を用いて求めている。
そして、音声認識誤り修正装置100は、認識単語の単語列が原稿の単語列と比較して、どこと一番マッチしているのかを、従来のブロック照合方式(特許文献1の技術)の長さN(単語数N)の単語連鎖ブロックより長い範囲で照合している。従来のブロック照合方式と比べると、認識単語の単語列と原稿の単語列とを照合するための区間を、単語連鎖ブロックに相当する区間だけではなく、原稿の文章を遡っていった、もっと長い文章全体で照合する。そのため、どこでマッチさせるのがよいのかが従来よりも明白に分かり、自動修正誤りを従来よりも低減できる。
以上、実施形態に基づいて本形態に係る音声認識誤り修正装置について説明したが、本形態はこれらに限定されるものではない。例えば、発話音声の認識単語に対する推定対応原稿の信頼度が高いか否かを編集距離を用いて判別することとしたが、編集距離のほか、原稿と認識結果の一致率、一致精度、脱落率、挿入率を利用したり、それらを併用したりしてもよい。
また、例えば図2に示すWFSTの<EmiX>が記載された出力遷移に、音声認識の結果では得られない「、」や「。」、記号なども原稿の表記に従って出力シンボルに埋め込むことができる。この場合、より読みやすい字幕を生成することができる。
本形態において、字幕を付けることは必須ではない。また、音声認識の対象となる話す予定の内容がある程度決まっていて、その内容を事前に入手できるようであれば、必ずしも放送番組の音声を前提とするものでなくてもよい。
以上、説明した方式1の構成を整理すると次の通りである。
[1−1]原稿テキスト集合に含まれる原稿を読み上げた発話音声を認識する音声認識装置が出力する認識単語列を入力として受け付け、予め記憶した対応原稿集合の中から対応原稿の単語列を推定することで、前記認識単語列に含まれる誤りを修正する音声認識誤り修正装置であって、前記原稿テキスト集合を予め読み込んで構築された前記対応原稿集合であって状態を表すノードとノード間の状態遷移を表す枝とをネットワークとして有した重み付き有限状態トランスデューサで表された前記対応原稿集合を記憶する対応原稿集合記憶手段と、前記認識単語列の単語の入力を受け付ける時刻毎に、前記重み付き有限状態トランスデューサのネットワーク上を遷移可能な状態のスコアをノードデータとして計算および更新するノードデータ更新手段と、前記計算されたノードデータを更新時刻毎に記憶するノードデータ記憶手段と、最終最良仮説を確定するための全原稿についての全認識単語列の認識結果の入力を待たずに予め定められた処理開始条件が満たされる度に、その時点で記憶されている前記ノードデータに基づいて前記ネットワーク上をトレースバックしながら、前記最終最良仮説を部分的に近似した仮説を誤り修正結果として逐次確定する原稿探索手段と、前記誤り修正結果として確定された対応原稿を逐次出力する原稿出力手段と、を備えることを特徴とする音声認識誤り修正装置。
[1−2]対応原稿集合記憶手段に記憶された前記対応原稿集合として予め構築された重み付き有限状態トランスデューサは、前記ネットワークとして、前記対応原稿集合に含まれる対応原稿毎に始点ノードと終点ノードとの間に前記対応原稿の単語列を構成する各単語の入力遷移をそれぞれ表す枝と前記単語列の出力遷移を表す枝とを含み、前記終点ノードから前記始点ノードに遷移する状態遷移を表す枝とを備えると共に、単語の置換に対応して任意の単語を受理する状態遷移を表す枝と、単語の挿入に対応して任意の単語を受理する状態遷移を表す枝と、単語の削除に対応して入力が無くても出力側に遷移する状態遷移を表す枝と、のうちの少なくとも1つを備えることを特徴とする前記[1−1]の音声認識誤り修正装置。
[1−3]前記原稿探索手段は、前記対応原稿集合に含まれる対応原稿の単語列と、入力された前記認識単語列との編集距離として、前記重み付き有限状態トランスデューサのネットワーク上で予め定められた範囲のパス区間の対応原稿の単語列についての挿入、置換、削除に係る編集操作回数を、当該パス区間の単語数で除した値を算出し、前記パス区間毎に算出された前記編集距離を所定の閾値と比較することで、前記最終最良仮説を近似することを特徴とする前記[1−2]の音声認識誤り修正装置。
[1−4]前記原稿探索手段は、前記編集距離が前記閾値以下である対応原稿の単語列が確定された時点で、前記重み付き有限状態トランスデューサのネットワークにおいて当該対応原稿のパス区間以前に逐次出力が確定された対応原稿までさかのぼって、前記編集距離が前記閾値以下となったすべてのパス区間の対応原稿を前記原稿出力手段によってネットワークの上流から順次出力させ、前記編集距離が閾値より大きなすべてのパス区間の対応原稿を出力させないことを特徴とする前記[1−3]の音声認識誤り修正装置。
[5]対応原稿集合記憶手段に記憶された前記対応原稿集合として予め構築された重み付き有限状態トランスデューサは、前記ネットワークとして、前記原稿テキスト集合に含まれる単語列と同様の意味を有する予め定められた言い換え候補の単語列を受理する枝、または/および、前記原稿テキスト集合に含まれる単語列であって前記音声認識装置が出力する認識単語列において脱落する可能性があるものとして予め定められた単語列を受理する枝を、さらに備えていることを特徴とする前記[1−1]から[1−4]に記載の音声認識誤り修正装置。
[6]前記原稿探索手段は、前記発話音声がない無音期間が所定の期間に達した場合、または、前記音声認識装置が出力する認識単語列としての単語の入力数が所定の単語数に達した場合、前記処理開始条件が満たされたものとして、前記重み付き有限状態トランスデューサのネットワーク上をトレースバックすることを特徴とする前記[1−1]から[1−5]に記載の音声認識誤り修正装置。
[方式2:前提とする音声認識誤り修正装置の形態]
本形態について、図面を参照しながら説明する。本形態は、音声認識結果などの誤りの混入が不可避な単語列と、その単語列の情報源となった原稿などの対応を早期に確定する技術を用いる。これにより、音声認識結果に含まれる誤りを自動修正する。
[1.本形態を適用したシステムの構成]
図8は、本形態に係る音声認識誤り修正装置を含むシステムの構成の概略を示すブロック図である。図示するように、当該システムは、音声認識誤り修正装置100と、原稿テキスト記憶装置700と、音声認識装置720と、トランスデューサー構築装置740とを含んで構成される。
同図に示すシステムは、放送局におけるニュース番組に音声認識を用いて字幕を付与する場合に適用するための音声認識誤り修正装置600を含む。このような番組における発話音声は、概ね事前に用意された原稿テキストに基づいているという特徴がある。ところで、大規模なキー放送局では、字幕を放送するために、音声認識結果に含まれる認識誤りを人手で修正するためのオペレーターを配置している場合がある。一方で、地方放送局では、様々な事情によりそのようなオペレーターを配置することが難しいことが多い。本形態によれば、そのような地方放送局においても、オペレーターを配置することなく、音声認識謝りの修正を行うことができるようになる。
音声認識誤り修正装置600は、音声認識装置720が出力する認識結果の単語列(認識単語列)を入力として受け付け、予め記憶した対応原稿の単語列を推定することで、認識単語列に含まれる誤りを修正するものである。
ここで、音声認識誤り修正装置600が推定処理のために予め記憶した情報は、原稿テキスト記憶装置700に記憶されている原稿テキストを予め読み込んで構築された対応原稿の集合である。この対応原稿の集合は、状態を表すノードと、ノード間の状態遷移を表す枝(アーク)とをネットワーク(有向グラフ)として有する重み付き有限状態トランスデューサー(Weighted Finite State Transducer:以下、「WFST」、または単に「有限状態トランスデューサー」という)で表される。
音声認識誤り修正装置600は、WFSTのネットワーク上で最良(最尤)仮説を逐次調べ、WFST上の対応原稿の単語列と認識単語列との編集距離を基準に、全ての認識結果の単語列の入力を待たずに最終最良仮説を近似して部分的に修正結果を逐次確定する。
音声認識誤り修正装置600は、音声認識装置720から認識結果の単語が入力されるのに対応して、WFSTを用いて、入力単語を受理可能な遷移を求めてそのスコアを計算し、累積スコアに対する閾値を用いて枝刈りを行いながら、ビタビアルゴリズム(Viterbi Algorithm)による探索(ビタビ探索)を用いる。なお、ビタビアルゴリズムは、既存の技術であり、受信系列に対して送信符号に最も近い符号系列、即ち最大尤度の符号系列を推定する際に、トレリス線図を用いた探索を行う、効果的な方法である。
通常のビタビ探索では、全ての入力が観測されてから、最もスコアが良くなるパスをトレースバックして最良仮説を出力する。そのため、通常の探索方法では、全ての入力が観測され終わる前に、古い入力から順に逐次修正結果を出力するといったことはできない。例えば、テレビ放送番組の放送音声を認識した結果から字幕を制作してリアルタイムでテレビ画面の画像に重畳する場合を想定すると、通常のビタビ探索による最尤系列は番組の最後まで単語を入力しないと確定することができない。これでは番組が終了してしまうことになるので、このような運用に対して通常のビタビ探索は不適である。
一方、本形態による音声認識誤り修正装置600は、ビタビ探索を用いつつも、適時に、最尤系列を逐次近似してトレースバックする。すなわち、予め定められた処理開始条件が満たされる度に、その時点で最もスコアが良くなるパスをトレースバックして、確定できる出力遷移を決定するので、修正結果を逐次出力することができる。ここでトレースバックされるパスは、最良仮説の近似であるが、各出力遷移に対応する入力単語列と、原稿の単語列との編集距離を信頼度の基準にして同パスを確定するか否かを決定して近似精度の向上をはかる。なお、その詳細については後で説明する。
原稿テキスト記憶装置700は、原稿テキストのデータを記憶する。原稿テキストは、複数の記事を含む。各記事は、複数の文を含む。
原稿テキスト記憶装置700は、人が話す予定の内容をテキストに書き起こしたものの全体を記憶する。原稿テキスト記憶装置700は、例えば文、文章、段落といった単語列の区切りの単位や、そのテーマやトピック等の内容分類に応じて、多数の細分化された個別の内容を表すテキストを記憶する。このような個別の内容を、以下では単に原稿と呼ぶ。また、単語列の単位は一例として文である。
原稿テキスト記憶装置700は、例えばハードディスク装置や半導体メモリ等の一般的な記憶手段を用いて構築されている。原稿テキスト記憶装置700は、いわゆるクラウドサービスとして、通信ネットワーク等を通してアクセスされるものであっても良い。
音声認識装置720は、原稿テキスト記憶装置700に含まれる原稿701を人(アナウンサー等)が読み上げた発話音声を認識し、認識結果の単語列を出力する。
音声認識装置720は、生の音声データが入力された場合に、隠れマルコフモデル(HMM)による音響モデルと、言語モデルとを利用して、音声データを認識し、その認識した結果を認識単語列として生成するものである。本形態において、音声認識装置720は、特に限定されず、公知の技術を用いたものを採用することができる。
なお、後述するように、放送におけるニュース番組では、各ニュース項目に対して複数のバージョンの原稿が入稿されており、どのバージョンをどの順番で放送するのかは事前に確定できない。そのような状況で、音声認識装置720は、音声認識を行い、その発話音声に対して、そもそも、対応する原稿が存在するのか否かを即座に調べることが求められる。そのため、音声認識に用いる言語モデルは、高精度に音声認識結果と原稿との対応をとるために、原稿テキスト記憶装置700に記憶されているテキストデータを用いて予め適応化しておき、原稿通りに読み上げた場合の認識精度が高くなるようにしておくことが好ましい。
トランスデューサー構築装置740は、音声認識誤り修正装置600で利用する対応原稿の集合(対応原稿集合)としてWFSTを構築するものである。トランスデューサー構築装置740は、音声認識の対象となる読み上げ原稿、つまり、原稿テキスト記憶装置700に含まれる原稿文から、音声認識誤り修正装置600で利用するためのWFSTを事前に構築する。WFSTは、入力シンボルと出力シンボル、遷移重みを有する有限状態機械であり、単語と文などの異なる粒度の入出力を効率よく扱うことができる。このWFSTの構築については後で説明する。
トランスデューサー構築装置740は、図示するように、単語ネットワーク登録部741と、編集ネットワーク登録部742とを含んで構成される。
単語ネットワーク登録部741は、原稿テキスト記憶装置700に含まれる原稿テキストを読み出し、予め定められた所定単位(例えば文単位)ごとに、以下に述べる一連の処理を行う。即ち、単語ネットワーク登録部741は、WFSTのネットワークの始点ノードから開始して、原稿テキスト記憶装置700から原稿テキストに含まれる単語を読み込む度に、その単語を受理するための状態遷移(入力遷移)の枝と新たなノードとを作成する。単語ネットワーク登録部741は、原稿内の所定単位(例えば文単位)の最後に至るまで、順次、読み込んだ各単語について上記の枝とノードの作成を行う。
そして、WFSTのネットワークにおいて、読み込んだ単語列の出力遷移の枝を追加して終点ノードに連結する。
編集ネットワーク登録部742は、単語ネットワーク登録部741で作成されたWFSTのネットワークのノード間に、単語の置換に対応して任意の単語を受理する状態遷移を表す枝と、単語の挿入に対応して任意の単語を受理する状態遷移を表す枝と、単語の削除に対応して入力が無くても出力側に遷移する状態遷移を表す枝とを追加するものである。
なお、本形態では、システムは、例えば下記の(A1)〜(A7)の条件下で動作する。
(A1)原稿テキスト記憶装置700に記憶されている原稿文のうちの複数の原稿文が音声認識対象として読みあげられる。
(A2)1つのニュース項目に対するニュース原稿も、いくつかの更新された版(バージョン)が用意されていて、どのバージョンの原稿が何時のニュース番組で読まれるのかを事前に確定することはできない。
(A3)複数の原稿文がどのような順番で読まれるのか事前には分かっていない。
(A4)原稿テキスト記憶装置700に含まれる原稿文の中には、読みあげられずにスキップされるものもある。
(A5)読む人(アナウンサー、キャスター、記者等)によっては、元の原稿をそのまま忠実に読むのではなく、視聴者への伝わりやすさ等を考慮して敢えて言い回しを変えてしまう場合や、読み誤りが生じる場合などがある。
(A6)音声認識装置720の認識誤りに起因する意昧不明な字幕を送出して視聴者に誤解を与えたり不快にさせたりすることを回避することを優先課題としたい。そのため、意味不明な認識結果の場合には送出せず、代わりに、事前に編集者により校正され内容が確認されている、発話内容に最も近いと自動推定された原稿(事前原稿)を字幕として送出する。
(A7)インタビュー部分などであって認識結果に対応する原稿が元々存在しない場合、自動推定は不可能なので、元原稿が無いインタビュー部分などについては字幕を送出しない。
[2.一般的なWFSTの例]
図9は、一般的なWFSTの例を示す概略図である。WFSTは、状態遷移の定義として表現される。状態遷移は、状態を表すノードと、状態遷移を表す枝と、を有する。なお、状態遷移のことを単に遷移という場合もある。図示するWFSTでは、入力シンボルを単語、出力シンボルを所定の単語列とする。また、この所定の単語列は、文である。同図において、ノードは楕円形で示している。また、枝は矢印付きの線で表している。つまり、枝は、方向を有している。
同図では、楕円形の各ノードに、ノードを識別するための3桁の数字を付している。始点ノードはノード001であり、終点ノードはノード008である。この例では、始点と終点との間には、ノード002〜ノード007が直線状に並べられている。また、始点と終点との間には、上記のノード002〜ノード007の系列とは並列に、ノード010〜ノード015が直線状に並べられている。さらに、始点と終点との間には、上記のノード002〜ノード007の系列およびノード010〜ノード015の系列とは並列に、ノード018〜ノード023が直線状に並べられている。また、状態遷移を表す枝は、単語または<S>、<I>、<D>、<Emi1>、<Emi2>、<Emi3>、<eps>といった記号が付されている。また、状態遷移を表す枝は、遷移元のノードから遷移先のノードに向かって伸びている。
図示する状態遷移について一般化して説明すると、このWFSTにおいては、各遷移に、(Si/So:ω)のパラメーターが設定されている。ここで、Siは、その状態遷移が受理する単語入力を表す。また、Soは、その状態遷移が出力する単語列を表す。出力される単語列は、文または文の一部である。また、ωは状態遷移重みを表す。つまり、各遷移には、3つ組のパラメーターが設定されている。なお、図9では、便宜上、状態遷移が有するパラメーターのすべてを示しているわけではなく、各状態遷移に対応して、3つ組のパラメーターのうちのSiまたはSoのいずれかのみを示している。
ここで、同図上に記載された単語を一般化して単語sと表記する。なお、アルファベットの大文字と小文字とを区別している。同図において、単語sは、原稿の単語列が含んでいる単語である。ある状態遷移に単語sが付加されているとき、当該状態遷移はその単語sが入力されたときにのみ起こることを表している。つまり、ある状態において、その状態を遷移元とする状態遷移に単語sが付されているとき、認識単語列の中の単語として単語sが入力された場合にのみその状態遷移が起こる。つまり、単語sが記載された状態遷移は、音声認識された単語sを受理して進む遷移である。なお、状態遷移が起こるとその遷移先の状態が次の状態となる。
図示する状態遷移において、ノード002〜ノード007の系列は、「先月/の/関東甲信/地方/は/・・・」という単語列に対応する。但し、ここで、スラッシュ「/」は単語の区切りである。また、ノード010〜ノード015の系列は、「今週/も/まとまった/雨/は/・・・」という単語列に対応する。また、ノード018〜ノード023の系列は、「気象庁/に/より/ます/と/・・・」という単語列に対応する。このように、ここで構築するWFSTは、全ての原稿文を自由に接続できるネットワークである。
同図において、単語sが記載された遷移についてのパラメーターは、(s/ε:0.0)で表される。つまり、この3つ組のパラメーターは、単語sを入力として受理し、出力がないことを表す。εは、単語がないことを表す記号である。つまり、出力他の語列が空である。また、3つ組のパラメーターは、遷移重みの値が0.0であることを表す。重みの値の設定方法はさまざまであるが、一例としては、ペナルティがない場合に遷移重みの値として0.0を用い、負の値の重みをペナルティとして用いることができる。状態遷移の定義に基づいて例えば現状態を推定する場合に、この遷移重みの値の所定の系列における総計をスコアとして用いることができる。一例として、同図において単語「先月」が付された状態遷移は、3つ組のパラメーターとしては、(先月/ε:0.0)で表される。
同図において、<S>が付された状態遷移は、置換単語を受理するための遷移である。つまり、原稿の単語列が含んでいるある単語sの位置に対応する認識単語列の位置に入力した単語が、原稿のある単語sとは異なる任意の単語に置換されていたときに、その置換単語を受理するための遷移である。以下、原稿の単語列が含んでいるある単語sの位置において、この単語sとは異なる任意の単語のことを、任意の単語*と表記する。アスタリスクは、ワイルドカードを表す表記である。この置換には、例えば「再開」が同音異義語の「再会」に翻字されて認識された場合も含まれる。
同図において、<S>が付された状態遷移は、任意の単語*を受理可能である。この<S>が記載された遷移についてのパラメーターは(*/ε:ωs)で表される。この3つ組表現においては、*は同遷移が受理できる任意の単語入力を表し、εはこの遷移で出力は無いことを意昧する。また、ωsは遷移重みの1つであって、この遷移に対して単語sとは異なる任意の単語*が入力されたときに課すペナルティ(以下、置換ペナルティという)を意味する。この置換ペナルティωsは、ノードスコアを下げる数値で表され、例えば−1.0を用いる。例えば、<S>が付された状態遷移は、3つ組のパラメーターとしては、 (*/ε:−1.0)と表すことができる。
同図において、<I>が付された状態遷移は、挿入単語を受理するための遷移である。つまり、発話者に起因するなどして、発話内容に情報の追加や言いよどみによる分節などの繰り返しがあった場合、原稿どおり又は置換されたと認識された単語列に続く位置に挿入された単語を受理するための遷移である。また、音声認識装置220に起因して、原稿通りならば1単語と認識すべきところを、複数単語として認識するような認識誤りで生じて、原稿通りの1単語に続く位置に挿入された単語を受理するためにも、<I>が付された状態遷移を用いることができる。
同図において、<I>が付された状態遷移は、任意の単語*を受理可能である。この<I>が記載された遷移についてのパラメーターは、3つ組による表現で、(*/ε:ωi)で表される。ここで、*は任意の単語入力を表し、εは空の単語を表す。つまり、この状態遷移は、任意の単語を受理し、出力単語を持たない。また、ωiは遷移重みの1つであって、この遷移に対して任意の単語*が入力されたときに課すペナルティ(以下、挿入ペナルティという)を意味する。この挿入ペナルティωiは、ノードスコアを下げる数値で表され、例えば−1.0を用いる。例えば、<I>が付された状態遷移は、3つ組のパラメーターで表すと、(*/ε:−1.0)である。
なお、<I>が付された状態遷移における遷移先の状態は、同遷移における遷移元の状態と同じである。
同図において、<D>が付された状態遷移は、脱落単語を受理するための遷移である。つまり、発話者に起因するなどして、発話内容の一部に句などの脱落があった場合、認識単語列において原稿から脱落した単語の位置を特定するための遷移である。また、音声認識装置220に起因して、原稿通りならば複数単語と認識すべきところを、単語が削除されて1単語として認識するような認識誤りで生じて、認識単語列において原稿から脱落した単語の位置を特定するための遷移である。
同図において、<D>が付された状態遷移は、単語の入力が無くても起こり得る遷移である。この<D>が記載された遷移についての3つ組のパラメーターは、(ε/ε:ωd)で表される。ここで、スラッシュの前のεは、この遷移で受理する入力が無いことを表す。また、スラッシュの後のεは、この遷移で出力が無いことを意昧する。また、ωdは遷移重みの1つであって、この遷移で単語が脱落したときに課すペナルティ(以下、脱落ペナルティという)を意味する。この脱落ペナルティωdは、ノードスコアを下げる数値で表され、例えば−1.0を用いる。例えば、図9で<D>が記載された遷移は、3つ組のパラメーターで表すと、(ε/ε:−1.0)である。
なお、<D>が付された状態遷移における遷移元および遷移先の状態は、脱落する単語に関する状態遷移と同じである。例えば、ノード002からノード003への、<D>が付された状態遷移は、並列する単語「の」が脱落したときにもノード002からノード003へ遷移を可能とする(ただし、上記の脱落ペナルティを伴う)ものである。
同図において、<Emi1>や<Emi2>や<Emi3>が付された状態遷移は、所定の単語列として文を出力するための遷移である。ここで出力される文が、音声認識処理によって認識された単語列の修正結果である。これらの<Emi1>や<Emi2>や<Emi3>が付された遷移についてのパラメーターは(ε/L:0.0)で表される。ここで、εはこの遷移において単語の入力が無いことを表す。また、Lはこの遷移で出力される単語列(文)がLであることを表す。
例えば、<Emi1>が付された状態遷移は、3つ組のパラメーターで表すと、(ε/先月の関東甲信地方は…:0.0)である。つまり、この場合、Lは、始点ノード001からノード002を経由してノード007に至る各遷移に並べられた単語列「先月/の/関東甲信/地方/は/…」をすべて順番に(直列に)繋げた単語列である。なお、パラメーターにおける0.0は遷移重みの1つであって、この遷移に対して文を出力するときには、ペナルティが課されないことを意味する。なお、<Emi2>が付された状態遷移のパラメーターは、同様に、(ε/今週もまとまった雨は…:0.0)である。また、なお、<Emi3>が付された状態遷移のパラメーターは、同様に、(ε/気象庁によりますと…:0.0)である。
同図において、<eps>が記載された遷移は、終点ノードと始点ノードを連結する遷移であり、イプシロン遷移(ε遷移)と呼ばれている。<eps>が付された状態遷移は、原稿テキスト集合に含まれる所定の単語列(文)が、連続して発話されるという拘束を与える遷移である。<eps>が付された状態遷移についてのパラメーターは(ε/ε:ωu)で表される。ここで、スラッシュの前のεは、この遷移で単語の入力が無いことを表す。また、スラッシュの後のεは、この遷移で出力が無いことを表す。また、ωuは遷移重みの1つであって、適切な重み(数値)を与えることにより、WFSTは、より長く一致する文のスコアを高くすることができるようになる。
[3.本形態におけるWFST]
図10は、本形態において用いるWFSTの例を示す概略図である。図9を用いて説明した一般的なWFSTと、本形態で用いるWFSTの違いを中心に、以下、説明する。
図10に示すWFSTもまた、ノード(状態)と枝(状態遷移)から成る状態遷移図で表される。同図では、ノードを黒丸または黒四角の記号で表し、枝を矢印付きの線で表す。各ノードには、ノードを識別するための3桁の整数を付している。同図に示す状態遷移図においても、始点のノード601と終点のノード608が存在する。そして、例示する状態遷移図においては、始点のノード601から終点のノード608へ、並列する2本の系列が存在する。その第1の系列は、始点のノード601から、ノード602〜ノード607を経て、終点のノード608に至る。また第2の系列は、始点のノード601から、ノード612〜ノード617を経て、終点のノード608に至る。これらの各系列が、原稿テキストにおける文に対応する。ここでは、簡単のために2文のみを示しているが、現実には文の数に制約はない。そして、終点ノード608から始点ノード601に戻るための枝(前述の、イプシロン遷移)が存在する。
各々の状態遷移は、遷移元の状態と、遷移先の状態と、入力記号(単語)と、出力記号(単語列)と、遷移重みの値で定義される。一例として、同図において、ノード602からノード603への状態遷移は、受理する入力単語がW2であり、出力する記号はε(つまり、出力単語はない)である。また別の例として、同図において、ノード614からノード615への状態遷移は、受理する記号がε(つまり受理する単語はない)であり、出力する記号はC3という単語列である。
なお、同図においては、状態遷移の重みの表示を省略している。また、同図においては、音声認識誤りを受理するための遷移を省略している。つまり、置換単語を受理するための状態遷移や、挿入単語を受理するための状態遷移や、脱落を許容するための状態遷移の表示を省略している。
同図に示すWFSTの特徴は、原稿文をチャンク(chunk,かたまり)に分割し、チャンクの切れ目における状態遷移として出力遷移を配置した構成としている点である。なお、出力遷移とは、出力シンボルが空ではない状態遷移である。つまり、文の最後だけではなく、文の途中における状態遷移でも単語列を出力する場合がある。同図における具体例としては、原稿文(W1,W2,W3,W4,W5)を、o1とo2という複数のチャンクに分割している。チャンクo1は単語列(W1,W2,W3)であり、チャンクo2は単語列(W4,W5)である。そして、チャンクo1とo2との間に、入力記号がε(つまり、入力単語がない)であり出力記号がC1という出力遷移を設けている。なお、ノード607からノード608への状態遷移は、文末での出力遷移であり、その出力記号はC2である。同様に、原稿文(W6,W7,W8,W9,W10)もまた、o3(不図示)とo4(不図示)という複数のチャンクに分割している。チャンクo3は単語列(W6,W7,W8)であり、チャンクo4は単語列(W9,W10)である。そして、チャンクo3の後には、単語列C3を出力する出力遷移が設けられている。また、チャンクo4の後には、単語列C4を出力する出力遷移が設けられている。
上記のように、本形態では、文をチャンクに分割し、チャンクの終端に出力遷移を設けている。なお、文のチャンクへの分割のしかたは任意である。文中の文法的にあるいは意味的に切れ易い箇所でチャンクへの分割を行っても良いし(例えば、構文上の句の単位できるなど)、所定の単語数で機械的に複数のチャンクへの分割を行っても良い。また、読みやすさのために記者またはアナウンサーが改行している箇所で分割しても良い。また、原稿中の文の重複度と必要とする認識誤りの訂正能力に応じて適切な長さのチャンクに分割しても良い。また、許容される字幕の表示遅れに応じて、適切な長さのチャンクに分割しても良い。長い単語列をチャンクとして設定すると、修正精度は高くなるが、送出する字幕単語列の確定が遅くなる。短い単語列をチャンクとして設定すると、送出する字幕単語列の確定は早く行うことができるようになるが、修正精度は低下する。また、期待される音声認識の認識精度と原稿と読み上げ音声の一致度合いに応じて適切な長さのチャンクへの分割を行うようにしても良い。
[4.WFSTの構築方法]
次に、トランスデューサー構築装置740によるWFSTの構築方法について説明する。トランスデューサー構築装置740がWFSTを構築するに当たり、原稿テキスト記憶装置700に含まれる原稿テキストは、予め文に分割しておく。なお、文の最後は句点によって区切られる場合には、句点を目印に分割することができる。また、原稿テキストの構文解析を行うことによって、構文ルールから文の切れ目を検出して文への分割を行うようにしても良い。また、人手によって目印がつけられた箇所で文への分割を行うようにしたりしても良い。
本形態では、原稿テキスト記憶装置700に記憶されているテキストは、ニュース番組で取り上げられる可能性のある読み原稿である。ここで用意される原稿は、複数のニュース項目のための原稿を含む。また、各ニュース項目は、複数の文を含む。本形態では、ニュース項目が読まれる順番、あるいは文が読まれる順番を予め特定しておく必要がない。読まれる可能性のある原稿をすべて用意して、原稿テキスト記憶装置700に記憶させておけばよい。また、それらの原稿のうち、結果的に読まれないニュース項目や読まれない文があっても良い。
なお、WFSTの構築に先立って予め人手により原稿を整形しておくようにする。この整形により、必ず連続して読み上げられる単語列(文)を一つの文の単位としてまとめる。また、この整形により、原稿中において読み飛ばされる可能性のある部分を別の文として切り離しておく。
また、文は、予めチャンクに分割しておく。チャンク(即ち、出力遷移を行うまでの単語列の単位)を長く設定すると修正精度は高くなるが、出力する単語列の確定が遅くなる。逆に、チャンクを短く設定すると、送出する字幕単語列の確定は速くなるが修正精度が低下する。よって、どのような単位を利用するかについては、期待される音声認識の認識精度と、原稿と読み上げ音声の一致度合いと、に応じて適宜設計すればよい。いかなる方法で文のチャンクへの分割を行うにしても、チャンクは、文よりは短い単位である。
そして、トランスデューサー構築装置740は、チャンクを受理した直後に出力遷移を配置するように、WFSTを構成する。
トランスデューサー構築装置740による具体的なWFST構築手順は、次の通りである。WFSTの構築は、まず、WFSTの始点から開始される。
トランスデューサー構築装置740は、原稿テキスト記憶装置700から一単語ずつ読み込む度に、同単語を受理する重み0の遷移と新たなノードとを順次作成していく。ここで、重み0の遷移とは3つ組のパラメーターで表すと、(s/ε:0.0)のことである。なお、sは単語である。そして、チャンクを一単位として、そのチャンクの後に出力遷移を追加してから、次のチャンクに含まれる各単語について同様の処理を繰り返す。なお、チャンクの終端が文の終端である場合には、最後のチャンクに関する出力遷移をWFSTの終点ノードに連結する。即ち、最後のチャンクに関する出力遷移の遷移先状態を、その終点ノードとする。
まだ更なる文が残っていたら、再び始点から始めて、上記の処理を繰り返す。
以下、原稿テキスト記憶装置700に含まれる全ての文についての処理を終えるまで、同様に繰り返す。
原稿テキスト記憶装置700からすべての原稿テキストを読み込み終えた後、次に、トランスデューサー構築装置740は、終点ノードと始点ノードとをイプシロン遷移で連結する。既に述べたように、イプシロン遷移とは、3つ組のパラメーターで表すと(ε/ε:ωu)という状態遷移ことである。なお、トランスデューサー構築装置740は、このイプシロン遷移のための重みωuとして適切な値を与える。これにより、WFSTは、より長く一致する文のスコアを高くすることができるようになる。またこれにより、WFSTは、他の文の接頭辞と一致する文が原稿中に存在するような場合にも、適切に動作できるようになる。そして、最後に、トランスデューサー構築装置740は、各単語の遷移に、置換、脱落、挿入を受理する遷移を追加する。なお、図10では、置換、脱落、挿入のための状態遷移を省略している。
[5.音声認識の適応化]
原稿をもとに読み上げられる音声を音声認識装置720が実際に認識するにあたり、予め、この原稿に含まれる単語列をもとに音声認識の言語モデルを適応化しておくことが望ましい。これにより、原稿通りに読み上げられた場合の音声認識の精度を高くすることができる。
[6.出力遷移からのトレースバック]
本形態では、トレースバックを開始するノードを、出力遷移の直前のノードのみに限定する。つまり、図10に例示したWFSTの状態遷移図において、トレースバックの対象となるノードは黒四角の記号で示したノードのみである。そして、黒丸の記号で示しているノードをトレースバックの対象としない。つまり、トレースバックの対象となるノードは、各チャンクの終端に当たるノードのみである。
WFSTのすべてのノードを対象としてその最尤ノード(時刻tにおいてすべてのノードの中で最もスコアの高いノード)からトレースバックを行うのと比べて、本形態の上記の方法では、出力の遅延を短縮することができる。つまり、本形態では、音声認識処理の結果に応じた修正後の字幕の表示の遅延を短縮することができる。
なお、既に述べたWFSTの構築方法においては、文を予めチャンクに分割しておき、各チャンクの終端に続いて出力遷移を設けた。しかしながら、文をチャンクに分割しないようにして(言い換えれば、1文を1チャンクとして)、トレースバックを開始するノードを出力遷移の直前のノードのみに限定することも可能である。そしてこのような場合にも、すべてのノードを対象としてその最尤ノードからトレースバックを行うのと比べて、出力の遅延を短縮することができる。
[7.字幕文出力の確定方法]
音声認識誤り修正装置600が、出力する単語列を確定するための方法について説明する。
時刻tにおける出力遷移の直前の最尤ノード(言い換えれば、チャンクの終端に当たるノードの中の最尤ノード)であるn(チルダ)(t)は、下の式(1)で表される。
式(1)において、Qは、トレースバックの対象となるノードの集合である。つまり、Qは、出力遷移の直前のノードの集合である。nは、集合Qに属するノードである。そして、Ln(t)は、時刻tにおけるノードnのスコアである。なお、このスコアLn(t)は、下の式(2)で表される。
式(2)において、eは状態遷移であり、efおよびetは、それぞれ、状態遷移eの遷移元および遷移先のノードである。またewは、状態遷移eの状態遷移重みの値である。また、eiは、状態遷移eの入力記号である。そして、eiは、単語W、ε(空入力)、*(いずれの入力にもマッチするワイルドカード)のいずれかである。つまり、式(2)に示すとおり、時刻tにおけるノードnのスコア(尤度)は、ノードnを遷移先ノードとするすべての状態遷移の中で、時刻t−1におけるその状態遷移eの遷移元ノードefのスコアに、その状態遷移eの重み値ewを加算したものである。
上記の式(1)による最尤ノードを求めるために、音声認識誤り修正装置600は、スコアLn(t)に関して、閾値による枝刈りを行いながら、効率的なビタビ探索を行う。
そして、音声認識誤り修正装置600は、式(1)により求められた最尤ノードにたどり着くまでに通過した状態遷移eを、順次トレースバックして、状態遷移の系列を得る。既に出力済みの単語の時刻t−t´までトレースバックした結果はht−t´は、下の式(3)で表される。
式(3)において、{et−t´,・・・}は、WFSTの始端を含まない状態遷移の集合である。また、{・・・,et}は、WFSTの終端を含まない状態遷移の集合である。そして、O(チルダ)tは、下の式(4)で表されるように、始端と終端とに挟まれた区間lt k(つまり、lt kは文)の列である(k=1,2,・・・)。
式(4)において、rtは、O(チルダ)tに含まれる区間lt k(文)の数である。さらに、このlt kは、下の式(5)に示すように、チャンクの列である。
式(5)において、mt,kは、区間lt kに含まれるチャンクの数である。
音声認識誤り修正装置600は、この区間lt kごとに下の式(6)で表されるチャンクの列を出力する。つまり、下の式(6)で表されるものが、音声認識誤り修正装置600によって出力される字幕文である。
式(6)において、E(チルダ)(ot,k u)は、誤り率に基づく誤りスコアである。また、Tは、誤りスコアに関する閾値であり、0<T<1である。誤りスコアE(チルダ)(ot,k u)は、下の式(7)によって求められる。
式(7)において、2入力の関数E(チルダ)(o1,o2)は、下の式(8)に示すように、E(チルダ)(o1)とE(チルダ)(o2)の、単語数の重みを付けた平均である。
式(8)において、N1とN2は、それぞれ、チャンクo1とo2に含まれる単語の数である。また、E(チルダ)(o)は、チャンクoにおける受理単語数Nrと、誤りを受理したことによる遷移の通過数Neとから求めた誤り率(編集距離)であり、下の式(9)で表される。
つまり、式(7)に示した通り、区間lt kに含まれるチャンクot,k uの誤りスコアであるE(チルダ)(ot,k u)は、次に述べるように定義される。即ち、E(チルダ)(ot,k u)は、チャンクot,k uにおいて式(9)で計算される誤り率と、ひとつ前のチャンクot,k u−1で計算される誤りスコアとの単語数による重み付き平均の値に基づく。ただし、その単語数による重み付き平均の値が所定の閾値Tよりも小さい場合には、E(チルダ)(ot,k u)の値はゼロである(式(7)の右辺上段のケース)。一方、その単語数による重み付き平均の値が閾値T以上の場合にはその重み付き平均の値をそのままE(チルダ)(ot,k u)の値とする(式(7)の右辺下段のケース)。このように、E(チルダ)(ot,k u)の値は、ひとつ前のチャンクot,k u−1についてのE(チルダ)(ot,k u−1)の値に依存して定義されており、式(7)で再帰的に計算することにより出力を確定できる。
なお、式(7)において場合分けして、閾値Tよりも低い場合の誤りスコアをカットオフして0にしていることにより、前のチャンクにおける誤りの程度が小さい場合には、後ろの方のチャンクまでその誤りスコアを波及させないようにしている。
なお、式(6)や式(7)に示した閾値Tの具体的な値は適宜定めればよいが、例えばT=0.5とする、あるいは0.4≦T≦0.6の範囲内の値とすることが好適である。Tの値が大きすぎると(1に近づくと)高い誤り率を許容してしまうという不都合がある。他方で、Tの値が小さすぎると誤りに対して厳格になりすぎて、本来読み上げられている原稿に対して出力できる字幕の密度が低くなり過ぎるという不都合がある。したがって、前記の0.4≦T≦0.6の範囲が好適であり、特にT=0.5とすることが好適である。
[8.音声認識誤り修正装置の構成]
次に、音声認識誤り修正装置の構成について説明する。
図11は、音声認識誤り修正装置600の概略機能構成を示す機能ブロック図である。図示するように、音声認識誤り修正装置600は、WFST記憶部610と、ノードデータ更新部620と、ノードデータ記憶部630と、原稿探索部640と、出力部650とを含んで構成される。
WFST記憶部610(有限状態トランスデューサー情報記憶部)は、原稿テキストに対応して、音声認識結果として入力される単語を順次受理しながら状態遷移していく有限状態トランスデューサーであって、音声認識結果に含まれる単語の誤りをも受理しながら状態遷移していく有限状態トランスデューサーの、状態に関する情報、および状態遷移に関して遷移元状態と遷移先状態と入力シンボルと出力シンボルと遷移重みとを含む情報、とを記憶する。そして、WFST記憶部610は、出力シンボルが空でない状態遷移であるところの出力遷移を状態遷移の一部として含んで記憶している。また、原稿テキストに含まれる文を複数のチャンクに分割し、チャンクに含まれる単語を入力シンボルとして受理する状態遷移のパスの後に出力遷移を設けたWFSTの、状態に関する情報および状態遷移に関する情報を記憶する。
具体的には、WFST記憶部610は、原稿テキスト記憶装置700(図8)に基づいて予めトランスデューサー構築装置740が構築したWFSTを記憶している。具体的には、WFST記憶部610は、状態遷移図(ネットワーク)と等価な情報を記憶する。その情報とは、状態(ノード)の識別情報およびその状態の属性情報と、状態遷移(枝)の識別情報およびその状態遷移の属性情報である。状態遷移の属性情報は、遷移元状態の識別情報と、遷移先状態の識別情報と、遷移に関する重みの値とを少なくとも含む。
ノードデータ更新部620は、原稿テキストに対応する音声の認識結果である認識単語の入力を外部から受け付けるとともに、受け付けた認識単語に応じて、WFSTにおける状態ごとの当該時刻(その時刻)でのスコアを算出し、算出された前記スコアを用いてノードデータ記憶部630を更新する。
具体的には、ノードデータ更新部620は、音声認識装置720が出力する認識単語列に含まれる単語の入力を受け付ける時刻毎に、WFSTのネットワーク上を遷移可能な状態のスコアをノードデータとして計算および更新するものである。ノードデータ更新部620は、例えば、音声認識装置720から認識単語を1単語受け付ける都度、WFST記憶部610に記憶されたWFSTを参照して逐次的にビタビ探索を行い、ノードデータ記憶部630に記憶されているノードデータを更新する。
ノードデータ更新部620は、認識単語列の一部として入力される単語に応じて、状態遷移した場合のスコアを計算する。ノードデータ更新部620は、状態遷移の重みの値に基づいて、スコアを計算する。WFSTの例として述べたように、対応原稿と一致する単語が原稿通りの順で入力された場合には、重みの値として「0」をスコアに加算する。対応原稿と異なる単語が入力された場合、重みの値として「−1]をスコアに加算する。この「−1」はペナルティの意味を有する。
例えば、図9に示した例において、認識単語列として入力する単語列が、対応原稿と全く同じ単語列である場合、始点ノード001から、単語「先月」を受理して対応原稿の単語に対応する遷移を通ってノード002に進む。そして、この状態遷移に対応して、ノードデータ更新部620は、スコアに「0」を加算する。次に、ノード002から、例えば単語「の」を受理してノード003に進む。そして、この状態遷移に対応して、ノードデータ更新部620は、スコアに「0」を加算する。同様に、「関東甲信」、…を順次受理していくと、スコアには、各単語に対応する状態遷移の重みの値である「0」ずつ足していくことになる。
しかし他方で、例えば図9に示した例において、認識単語列として入力する単語列が、対応原稿と異なる単語列である場合、異なる状態遷移をする。つまり、始点ノード001から、例えば単語「先週」を受理すると、対応原稿の単語「先月」が置換されているので、置換に対応する遷移を通ってノード002に進む。この場合、ノードデータ更新部620は、スコアにその状態遷移の重みの値である「−1」(ペナルティ)を加算する。また、挿入誤りや脱落誤りに対応する遷移を通った場合にも、同様にノードデータ更新部620は、スコアにペナルティの「−1」を加算する。
このように、入力される認識単語がWFSTにおける状態遷移で受理する単語sと同じであった場合に、その遷移におけるスコアが最良となる。一方、置換、挿入、削除の編集に相当する状態遷移は、スコアが悪化する要因となる。ここで「編集」とは、本来あるべき単語を置換したり、削除したり、本来あるべき単語ではないものを挿入したりすることによって得られる結果を言う。例えば<D>が記載された状態遷移は、マッチする入力単語が無くても遷移できるが、<D>が記載された遷移だけを通るパスの場合、その遷移の数が多いほど、ペナルティが加算され、スコアが低くなる。WFSTは、認識単語列に、誤りや言い変えが含まれると、その分だけスコアが悪くなるという結果を生む。
ノードデータ記憶部630は、WFSTにおける状態の尤度を表すスコアを記憶する。つまり、ノードデータ記憶部630は、ノードデータ更新部620によって計算されるノードデータを記憶するものである。ノードデータ更新部620は、上述した計算結果に基づき、ノードデータ記憶部630をタイムリーに更新する。ノードデータ記憶部630は、例えば、半導体メモリやハードディスク装置等の一般的な記憶手段を用いて構成される。
原稿探索部640は、処理開始を示す起動信号を外部から受け付けると、ノードデータ記憶部630を参照することにより、その時点における最尤ノードを決定するとともに、WFST記憶部610とノードデータ記憶部630とを参照して、最尤ノードから状態遷移を遡ることにより、状態遷移が確定済みの所定の時刻までのトレースバック処理を行い、当該トレースバック処理した状態遷移のパスを出力候補とするとともに、出力候補となったパスに関して、当該パスに誤りに関する状態遷移が含まれる割合に応じた誤りスコアを算出し、算出された誤りスコアに基づいて誤りの度合いが所定の閾値より小さい場合に当該パスの出力候補を、確定出力とする。また、原稿探索部640は、チャンクごとに誤りスコアを算出するとともに、チャンクごとの誤りスコアに基づいて誤りの度合いが所定の閾値より小さい場合に、当該チャンクに対応する出力遷移の出力シンボルを、確定出力とするものであり、且つ、原稿探索部640は、チャンクごとの誤りスコアを算出する際に、当該チャンクと当該チャンクの直前のチャンクの区間に関して誤りに関する状態遷移が含まれる割合に応じた誤りスコアを、当該チャンクの誤りスコアとして算出する。
また、原稿探索部640は、出力遷移の遷移元状態に対応するノードの中で最尤であるノードをその時点における最尤ノードとして決定する。言い換えれば、原稿探索部640は、出力遷移の遷移元状態ではない状態に関しては、最尤ノードであるか否かを考慮しない。
具体的には、原稿探索部640は、最終最良仮説を確定するための全原稿についての全認識単語列の認識結果の入力を待たず、予め定められた処理開始条件が満たされる都度、最尤の修正結果を求めるものである。原稿探索部640は、処理開始条件が満たされると、その時点でノードデータ記憶部630に記憶されているノードデータに基づいて、WFSTのネットワーク上をトレースバックしながら、最終最良仮説を部分的に近似した仮説を誤り修正結果として逐次確定する。
原稿探索部640は、WFSTに含まれる対応原稿の単語列と、入力された認識単語列との編集距離に基づいて最終最良仮説を近似する。原稿探索部640は、WFSTのネットワーク上で予め定められた範囲毎に区切ったパス間において、その先頭から末尾までのパス区間での編集距離がある程度小さければ、そのパス区間が信頼できるものとして確定して出力する。ここで、編集距離が短いということは、認識単語列と原稿の単語列とがほとんどマッチしているパスを通ってきたことを意味する。逆に、編集距離が長いパス区間は信頼度が低いので、その時点では確定せずに、次回のトレースバックのときにも利用する。いつまでも信頼度が低いパス区間は、原稿には元々記載されていない違うことを話した区間である、と推定される。よって、信頼度が低いパス区間を出力しない。
原稿探索部640における処理開始条件とは、例えば、発話音声がない無音期間が所定の期間に達した場合、または、音声認識装置720が出力する認識単語列としての単語の入力数が所定の単語数に達した場合等である。上記の所定の期間は、特に限定されないが一例として3秒間とする。また、上記の所定の単語数は、特に限定されないが一例として20単語とする。原稿探索部640に入力される起動信号は、上記の処理開始条件が成立したことを示す信号である。このときの起動信号は、例えば音声認識装置720が自動的にonするようにしてもよいし、操作者による手動の操作によってonするようにしても良い。この操作者は、ポーズ(所定の長さの無音)を認識したときや、所定の単語数を音声認識装置720が出力した認識したときに、起動信号をonする操作を行う。音声認識装置720が自動的に起動信号をonする場合には、音声認識の結果を利用してポーズを検出したり、音声認識結果として出力する単語の数をカウントしたりすることにより、起動信号を切り替えるきっかけとする。この構成により、認識単語が一単語入力される度に探索処理を開始する場合に比べて、処理負荷を低減できる。また、無音期間が所定の期間だけ継続していれば、その間、認識結果の単語が音声認識装置720側から渡されてこないので、装置の処理の負荷がその時点に集中することなく、ノードスコアを容易に比較することができる。
上記の機能を実現するために、原稿探索部640は、さらに次の構成を有する。即ち、原稿探索部640は、最尤ノード検出部641と、トレースバック部642と、原稿分割部643と、出力候補記憶部644と、誤りスコア算出部645と、誤りスコア判別部646と、確定出力記憶部647と、確定時刻記憶部648とを含んで構成される。
最尤ノード検出部641は、外部から受信する起動信号をトリガーとして動作し、その時点で記憶されているノードデータにおいてスコアが最大のノードを検出するものである。この起動信号は、上で述べたとおり、予め定められた処理開始条件が満たされたときに外部から供給されるものである。
トレースバック部642は、最尤ノード検出部641で特定されたノードから、当該ノードに到達するまでのパスについて、WFSTのネットワークを下流から上流に向かってたどる。このとき、トレースバック部642は、前回のトレースバックで確定した箇所まで、ネットワークを遡る。つまり、トレースバック部642は、前回確定して出力された単語系列の最後の入力単語に対応した時刻までトレースバックする。
原稿分割部643は、トレースバックするパスの中で、出力遷移に対応する区間ごとに単語列を切り出す。ここで、出力遷移とは、既に説明したように記号の出力を伴う状態遷移である。トランスデューサー構築装置740がWFSTを構築するときに、チャンクの終端の直後に、出力遷移が設けられている。つまり、原稿分割部643によって分割された結果の区間は、前述のチャンクの単位である。原稿分割部643は、トレースバックされた結果得られるパス全体を分割し、分割した結果得られる各々の単語列を出力する。
出力候補記憶部644は、原稿分割部643が分割した結果得られたパス区間に対応した出力遷移の出力シンボル(切り出された原稿)を、出力候補として記憶する。出力候補記憶部644は、例えば、半導体メモリやハードディスク装置等の一般的な記憶手段を用いて構成される。
誤りスコア算出部645は、原稿分割部643によって分割して切り出された区間(チャンク)毎に、誤りスコアを算出する。誤りスコア算出部645は、既に説明した式(7)を用いて誤りスコアを算出する。
誤りスコア判別部646は、誤りスコア算出部645によって算出された誤りスコアが所定の閾値Tより小さいか否かを判定する。つまり、誤りスコア判別部646は、既に説明した式(6)に含まれる条件に基づいて判別する。
確定出力記憶部647は、誤りスコア判別部646による判定結果に基づいて確定された出力(確定出力と呼ぶ)を記憶する。具体的には、誤りスコア判別部646によって誤りスコアが閾値Tより小さいと判定された場合、確定出力記憶部647は、当該所定パス区間における出力遷移の出力シンボルを誤り修正結果として記憶する。その他の場合、確定出力記憶部647は、当該所定パス区間における出力遷移の出力シンボルを誤り修正結果として記憶しない。なお、確定出力記憶部647は、例えば半導体メモリやハードディスク装置等の一般的な記憶手段を用いて構成される。また、確定出力記憶部647の記憶構造はスタックであり、確定出力記憶部647は後入れ先出し(LIFO)の構造でデータを保持する。
確定時刻記憶部648は、最新のトレースバック処理で確定した確定時刻を記憶する。確定時刻記憶部648は、例えば半導体メモリやハードディスク装置等の一般的な記憶手段である。確定時刻記憶部648は、今回トレースバックする全パス区間(切り出された全ての原稿)について、誤りスコア判別部646による判別処理が終了した時点で、スタックに積まれた出力シンボルに対応する最新の確定単語の時刻を確定時刻として記憶する。
出力部650は、原稿探索部640によって誤り修正結果として確定された対応原稿(つまり、確定出力)を逐次出力するものである。出力部650は、WFSTのネットワークを今回トレースバックするパスの中で、切り出されたすべての対応原稿の各パス区間に対して算出された誤りスコアについての判定処理が全て終了するまでに確定された出力シンボルのデータを出力する。具体的には、出力部は、確定出力記憶部647のスタックに積まれている出力シンボルのデータを、そのスタックが空になるまで出力する。
この音声認識誤り修正装置600は、間違って音声認識された単語を修正して出力するとともに、大幅に間違った認識結果を出力しない、という動作を行う。つまり、音声認識誤り修正装置600による修正結果を、仮に事前に人が見ることができたとしたときに、「これでは文章として成立していない」、「意味が異なっている」と感じるほどの間違い部分を、音声認識誤り修正装置600がその処理の中で検出し、その検出部分を出力しないという動作も、広義の誤り修正として含んでいる。これは、誤りスコアを算出し、その誤りスコアに基づく判別を行っていることによるものである。
[9.音声認識誤り修正装置の動作手順]
図12は、音声認識誤り修正装置600による処理の手順を示すフローチャートである。なお、このフローチャートの処理の前提は、次の4点である。
(前提1)認識結果の単語入力を{ω0,ω1,…,ωk,…,ωj,…}とする。
(前提2)前回のトレースバックにより確定した部分の最後の入力単語をωkとし、そのときの出力遷移をaP(時間軸に沿ったP番目の出力遷移)とする。
(前提3)認識結果の単語ωjが入力された後、所定の無音が続いたことをトリガーに、逐次確定を行う場合を考える。
(前提4)ノードデータ更新部620は、無音になる前に最後に入力した単語ωjを受理して遷移できるノードを全て計算する。
以下では、このフローチャートを参照しながら、音声認識誤り修正装置600による処理の流れについて説明する。
まずステップS501において、外部からの起動信号の入力をトリガーとして、最尤ノード検出部641は、その時点で記憶されているノードデータにおいて最もスコアの高いノードを、最尤ノードとして検出する。この検出ノードで表される状態は、トレースバック開始時点の最尤状態である。
次にステップS502において、トレースバック部642は、ステップS501において検出された最尤ノードから、前回のトレースバック処理で確定された時刻まで、トレースバックする。具体的には、トレースバック部642は、検出された最尤ノードに到達したパスについてWFST上の単語履歴を逆向きに(時間をさかのぼる方向に)たどり、前回のトレースバックで確定し、出力された単語系列の最後の入力単語ωkを求める。また、トレースバック部642は、対応する状態遷移(受理する単語がωkである状態遷移)を求める。そして、それらの単語および状態遷移に対応する確定時刻までトレースバックする。なお、トレースバック部642は、確定時刻記憶部648を参照し、その確定時刻記憶部648に格納されている確定時刻を、上記の最後の入力単語ωkに対応した確定時刻とする。
なお、受理単語がωkである状態遷移の代わりに、出力遷移aPにたどり着くまでトレースバックするようにしてもよい。
次にステップS503において、原稿分割部643は、原稿を分割し、分割結果として得られた単語列をそれぞれ出力候補とする。具体的には、原稿分割部643は、今回トレースバックするパスの中で、2つの出力遷移間に挟まれたパス区間毎に原稿を分割する。そして、原稿分割部643は、得られたそれぞれの出力候補を、出力候補記憶部644に格納する。
なお、ここでの処理の方法として、出力遷移aPにたどり着くまで逆向きに(つまり、時間を遡る方向に)進みながら、出力可能な出力遷移aL(時間軸に沿ったL番目(ただしL>P)の出力遷移)を通過する度に原稿を分割してもよい。また、出力遷移aPの側から出力可能な出力遷移aLを通過する度に原稿を分割してもよい。
なお、出力可能な出力遷移aLとは、出力遷移のシンボルが出力候補になるものであるが、後に、誤りスコア判別部646によって棄却される出力遷移(つまり、出力部650からは結局出力されない出力遷移)をも含んでいる。
次にステップS504において、誤りスコア算出部645は、出力候補の誤りスコアを算出する。具体的には、誤りスコア算出部645は、式(7)によってチャンクot,k uの誤りスコアE(チルダ)(ot,k u)を算出する。
次にステップS505において、誤りスコア判別部646は、出力候補のうちの一つを選択し、その出力候補に関して算出された誤りスコアが閾値T未満であるか否かを判別する。誤りスコアが閾値T未満である場合(ステップS505:YES)には、次のステップS506に進む。誤りスコアが閾値T以上である場合(ステップS505:NO)には、ステップS508に飛ぶ。
次にステップS506に進んだ場合、誤りスコア判別部646は、WFSTのネットワーク上の当該パス区間(チャンク)の出力遷移を確定し、その出力シンボルを誤り修正結果として確定する。
次にステップS507において、誤りスコア判別部646は、今回確定した出力シンボルのデータを、確定出力記憶部647に書き込む。前述のとおり、確定出力記憶部647は後入れ先出しの構造を有するスタックである。
これらのステップS506およびS507の処理は、ステップS505における分岐制御により、現在のチャンクの誤りスコアが閾値T未満である場合のみに実行される。
次にステップS508に進むと、誤りスコア判別部646は、すべての出力候補を判別し終えたか否かを判断する。すべての出力候補の判別が終了している場合(ステップS508:YES)、次のステップS509に進む。すべての出力候補の判別が終了していない場合、すなわち依然として選択すべき出力候補がある場合(ステップS508:NO)、ステップS505に戻って次の出力候補を選択する。
つまり、切り出されたすべての原稿に対応した各パス区間に対して算出された誤りスコアについての判定処理が終了した場合に、次のステップS509に進む。
ステップS509において、誤りスコア判別部646は、確定時刻記憶部648を更新する。つまり、誤りスコア判別部646は、スタックに積まれた出力シンボルに対応する確定単語の時刻が最も新しいものを今回のトレースバック処理で確定した確定時刻として確定時刻記憶部648に格納する。
次にステップS510において、出力部650は、その時点で確定出力記憶部647に書き込まれている出力シンボルのデータを、確定出力記憶部647が空になるまで順次読み出し、出力する。これにより、スタックに積まれていたすべての出力データは、出力される。なお、出力部650は、WFSTのネットワークの前方側に配置された原稿から順に(つまり、時刻の早い側から順に)出力する。
つまり、出力部650は、毎回のトレースバック処理でスタックに積んだデータを、確定された原稿として逐次出力する。このとき、音声認識結果のうち、所定のパス区間の誤りスコアが閾値T以上である場合、信頼度が低いパスなので、当該パス区間の出力遷移の出力シンボルは、誤り修正結果としては採用されない。したがって、出力部650は、そのような信頼度の低いパス区間の出力シンボルを、出力しない。
ステップS10の処理が終了すると、音声認識誤り修正装置100は、このフローチャート全体の処理を終了する。
[10.字幕文出力の具体例と評価]
以上、説明したように、本形態による音声認識誤り修正装置600の処理の特徴は、(1)文をチャンクに分割すること、(2)チャンクの終端に出力遷移を設けること、(3)出力遷移の箇所からトレースバックすること、である。このような特徴的な処理をすることによる作用を、具体的な処理例とともに、次に説明する。
図13は、本形態による字幕文出力の確定方法の実例を示す概略図である。同図の(A)および(B)は、それぞれ、入力される認識結果の単語列と、それらの単語に対応するWFSTの状態遷移と、その結果としての出力シンボルとの関係を示し、また算出される誤りスコアを付記している。
まず、同図(A)の例において、入力される単語列は「今日/の/関東/地域/は」である。これらの単語を受け付けると、WFSTは、次のように遷移する。即ち、始端からスタートして、入力単語「今日」は、対応する原稿内の「今日」にマッチして、ペナルティの無い状態遷移が起こる。次の単語「の」は、対応する原稿内の「の」にマッチして、ペナルティの無い状態遷移が起こる。次の単語「関東」は、対応する原稿内の「関東」にマッチして、ペナルティの無い状態遷移が起こる。次の単語「地域」は、発話者による読み替えまたは音声認識装置720による認識誤りにより入力された単語である。したがって、対応する原稿内の「地方」にはマッチせず、置換の状態遷移が起こる。次の単語「は」は、対応する原稿内の「は」にマッチして、ペナルティの無い状態遷移が起こる。そして、「晴れ」と「です」は入力されていないが、脱落の状態遷移が起こると、黒四角で示すチャンクの終端の状態にたどり着く。そして、出力遷移における出力シンボルである「今日の関東地方は晴れです。」が、出力候補となる。ここで、このチャンクに関する誤り率は3/7である。即ち、誤りスコアは、3/7である。閾値Tを0.5とする場合、この誤りスコアは閾値Tよりも小さい。そして、音声認識誤り修正装置600は、出力候補である「今日の関東地方は晴れです。」の出力を確定することができる。
次に、同図(B)の例で示すWFSTのネットワークにおいては、一連の区間が、abcdefのチャンクと、ghijkのチャンクとに分割されている。そして、各チャンクの終端に、出力遷移が設けられている。そして、入力される単語列はabcxeyghである。これらの単語を受け付けると、WFSTは、次のように遷移する。即ち、始端からスタートして、入力単語a,b,cのそれぞれは、対応する原稿内のa,b,cにマッチして、これらの単語の各々に関するペナルティの無い状態遷移が起こる。次の入力単語xについては、原稿内の単語dの置換の状態遷移が起こる。次の入力単語eは、原稿内のeにマッチして、ペナルティの無い状態遷移が起こる。そして、次の入力単語yについては、原稿内の単語fの置換の状態遷移が起こる。その遷移先がチャンクの終端の状態であり、その次の出力遷移における出力シンボルがabcdefである。ここまでのチャンクの誤りスコアは、2/6である(正常な状態遷移が4つで、置換の状態遷移が2つなので、2/(4+2))。
続いて同図(B)内で、入力単語g,hのそれぞれは、対応する原稿内のg,hにマッチして、これらの単語の各々に関するペナルティの無い状態遷移が起こる。ここで入力単語列は終わるが、対応する原稿内のi,j,kについては脱落の状態遷移が起こり得る。ここで、原稿内のghijkの列の区間だけについて謝り率は3/5であり、閾値T(=0.5)を超えている。何故なら、g,hが入力にマッチして、i,j,kが脱落しているからである。しかしながら、式(9)によって計算される誤りスコアは、前のチャンクにおける誤りスコアとの加重平均(チャンク内の単語数による加重平均)をとって、5/11である。この誤りスコア5/11は閾値Tより小さい。したがって、音声認識誤り修正装置100は、出力候補abcdefを出力するとともに、次のチャンクに対応する出力候補ghijkをも出力する。
同図(A)の例によって示した通り、音声認識誤り修正装置600は、単語「は」より後の入力単語が仮にすべて誤っていた(音声認識装置720による認識誤りなど)としても、早期に対応する字幕文を出力することができる。これは、単語「は」より後の入力単語がすべて誤っていたとしても誤りスコアが閾値Tより小さいためである。
また、同図(B)の例によって示した通り、予めチャンクを分割しておいた場合には、式(9)の作用で、現在着目するチャンクの、前方の確定済のチャンクの誤りスコアを利用することによって、さらに早期に、現在着目するチャンクの出力を確定できる。
[11.誤りスコアに関する閾値Tの決め方]
もし音声認識装置の認識精度が90%くらいであれば、誤りスコアの基礎となる単語の誤り率は10%程度になる可能性がある。本形態で誤りスコア判別部646による判別に用いるための閾値Tとしては、音声認識の認識精度に応じて、単語一致率の信頼度分だけマージンを取って設定することが好ましい。ここで、単語一致率の信頼度は、WFSTのネットワークの2つの出力遷移間の単語数に依存する。
閾値Tを設定するためのその他の要因としては、原稿テキスト記憶装置700に記憶される原稿の候補の文章としての重なりがどのくらいの割合であるのかという点がある。例えば、下記(E1)〜(E3)に示す文の場合、文章としての重なりが80%くらいの割合で含まれている。
(E1) 今日 の 天気 は 晴れ です
(E2) 今日 の 天気 は 雨 です
(E3) 今日 の 天気 は 曇り です
このような場合、閾値Tも80%くらいに設定してしまうと、所望の動きが実現できない。
なお、ニュース原稿の文を適切にチャンクに分割して出力遷移を配置し、閾値Tを50%とした条件で実験した場合、良好に動作することが確認できた。
以上説明したように、本形態に係る音声認識誤り修正装置600は、文の順序は変わり得るとは言え、原則として、原稿テキストに含まれる文が連続して発声されるという拘束を利用して、認識結果と原稿テキストとを対応付けることで、認識誤りを修正することができる。つまり、従来技術によるブロック照合方式の自動修正誤りを解消する。
また、本形態による音声認識誤り修正装置600は、認識単語の単語列が原稿テキスト内に含まれる単語列のどこと一番マッチしているのかを、従来技術による方式より長い範囲で照合している。つまり、従来のブロック照合方式が単語連鎖ブロックに相当する区間だけを照合するのに対して、音声認識誤り修正装置600は、原稿の文章を遡りながらもっと長い文章全体で照合する。そのため、どこでマッチさせるのがよいのかが従来よりも明白に分かり、自動修正誤りを従来よりも低減できる。
本形態による音声認識誤り修正装置600は、文を複数のチャンクに分割し、チャンクの終端に出力遷移を設けている。これにより、文の途中であっても、確定させた単語列を出力することができる。
また、本形態による音声認識誤り修正装置600は、出力遷移が存在する箇所のみからトレースバックするように限定した。これにより、計算量を抑制することができる。
以上、前提となる形態を説明したが、本形態はさらに次のような変形例でも実施することが可能である。また、複数の変形例を組み合わせて実施しても良い。
[変形例1]音声認識誤り修正装置の構成
音声認識誤り修正装置600が、内部にトランスデューサー構築装置740を備えるようにしてもよい。
[変形例2]言い換えを受理するWFSTの構築
WFSTの情報源となるアナウンス用原稿には、それが読まれるときに、読み飛ばされる句や、言い換えられる句、補足される句が含まれている場合がある。これらの一部には、定型で高い頻度で省略/言い換え/補足が行われる。例えば、ニュース番組の原稿では、取材元を表す「警視庁によりますと」などといった句は、読み飛ばされやすいことの多い句である。このような句が読み飛ばされたとしても、ニュース主文の文意に変わりはなく、言い換えればいわゆる5W1Hに関する変化はなく、ニュース番組としての実用上の問題はない。
本変形例では、このような定型的な言い回しのバリエーションをWFSTに追加しておくことで、精度よく修正結果を出力できるようにする。上記の言い回しのバリエーションの追加は、原稿から構築したWFSTとは別に、言い回しのバリエーションを追加するための別のWFSTを構築しておき、原稿から構築したWFSTと合成することにより、効率よく行うことができる。なお、WFSTの合成や、最小化や、決定化などを行うための公知のアルゴリズムを適用することができる。
上記のような言い換え例を含んだWFSTを構築するためには、過去の同種の番組の原稿テキストと、実際に読み上げられた単語列との差分を分析し、頻度が高く、且つ言い換えによって文意に変更がないものを予め選別して収集しておく。そして、この選別された言い換え例ごとに、言い換えを合成するためのWFSTを構築しておき、原稿から構築したWFSTと、言い換え例のWFSTとを合成する演算(既存技術による演算)を施すことにより、言い換えに対応可能なWFSTを構築することができる。
[変形例3]認識結果への付加
音声認識の結果では得られない記号等(句点や、読点や、その他の記号等)を、出力状態遷移における出力シンボル内に含めるようにしても良い。例えば、ニュース原稿に予めそれらの記号等を含めておき、そのニュース原稿に基づいてWFSTを構築するときに、出力シンボル内にそれらの記号等が残るようにする。そのようなWFSTを用いて音声認識誤り修正装置100を稼働させることにより、それらの記号等を含んだ読みやすい字幕を出力することができる。
[変形例4]認識結果に対応するその他の出力(多言語字幕)
上記の変形例3に加え、出力遷移における出力シンボルとして、原稿のテキストを他国語等に翻訳した結果の単語列を用いても良い。これにより、読み上げられた元の原稿とは異なる言語での字幕を出力することができる。また、複数のWFSTを同時に並行して稼働させることにより、複数ヶ国語の字幕を出力することもできる。また、出力遷移における出力シンボルとして、番組の進行をコントロールするためのキューに相当する記号を含めるようにしても良い。このキューが出力されることをトリガーとして、ハイブリッドキャストなどの番組連動サービスに対して、起動や場面転換等の指示情報を与えることもできる。これにより、より多彩な放送サービスを実現することができる。
[変形例5]WFSTの最小化
本変形例では、WFSTを作成する際に、可能であればWFSTの最小化を行う。WFSTの最小化とは、与えられた状態遷移図において、集約可能な複数の状態(ノード)を集約したり、集約可能な複数の状態遷移(枝)を集約したりすることである。WFSTを集約すること自体は、既存技術によって行うことができる。WFSTの最小化の一例は次の通りである。即ち、WFSTのネットワークにおいて、共通する複数の部分ネットワークを同一の状態遷移の列として構成し直す。このようなWFSTの最小化を用いることにより、共通する単語列についての状態遷移を削減することができる。例えば、同じ接頭辞を有する単語列(文)を同一の遷移で共有できる。これにより、演算量を削減することができる。
[変形例6]WFSTの決定化
WFSTを作成する際に、必要があればWFSTの決定化を行う。具体的には、WFSTのネットワークにおいて、状態遷移の途中で、出力シンボルが決定する場合には、少しでも早く推定結果を出力するために、出力文の位置を前のほうに変更する。WFSTの決定化を行うことにより、例えば、接頭辞がユニークとなる遷移に出力文を移動する。これにより、出力文を旱期に確定できるようになるなどの利点がある。ただし、WFSTを作成する際にWFSTの決定化を行った場合、原稿探索部640による最尤仮説の探索処理でも対応できるように設定変更が必要である。つまり、WFSTの決定化を行わない場合に比べて、誤りスコアを計算するためのパス区間を出力遷移の前後にシフトさせる必要がある。加えて、前後のパス区間の伸縮分を吸収できるように、閾値Tをより厳しい値(誤り率がより小さい値)に設定する必要がある。
[変形例7]誤りスコアの求め方
本形態では、式(9)に示した誤り率(編集距離)に基づいて誤りスコアを計算した。これに限らず、原稿と認識結果の一致率、一致精度、脱落率、挿入率を利用したり、それらを併用したりすることによって、誤りスコアを算出するようにしても良い。
以上、説明した方式2の構成を整理すると次の通りである。
[2−1]原稿テキストに対応して、音声認識結果として入力される単語を順次受理しながら状態遷移していく有限状態トランスデューサーであって、前記音声認識結果に含まれる単語の誤りをも受理しながら状態遷移していく前記有限状態トランスデューサーの、状態に関する情報、および状態遷移に関して遷移元状態と遷移先状態と入力シンボルと出力シンボルと遷移重みとを含む情報、とを記憶する有限状態トランスデューサー情報記憶部と、前記有限状態トランスデューサーにおける前記状態の尤度を表すスコアを記憶するノードデータ記憶部と、前記原稿テキストに対応する音声の認識結果である認識単語の入力を外部から受け付けるとともに、受け付けた前記認識単語に応じて、前記有限状態トランスデューサーにおける前記状態ごとの当該時刻でのスコアを算出し、算出された前記スコアを用いて前記ノードデータ記憶部を更新するノードデータ更新部と、処理開始を示す起動信号を外部から受け付けると、ノードデータ記憶部を参照することにより、その時点における最尤ノードを決定するとともに、前記有限状態トランスデューサー情報記憶部と前記ノードデータ記憶部とを参照して、前記最尤ノードまでの状態遷移を遡ることにより、状態遷移が確定済みの所定の時刻までのトレースバック処理を行い、当該トレースバック処理した状態遷移のパスを出力候補とするとともに、出力候補となった前記パスに関して、当該パスに前記誤りに関する状態遷移が含まれる割合に応じた誤りスコアを算出し、算出された前記誤りスコアに基づいて誤りの度合いが所定の閾値より小さい場合に当該パスの出力候補を、確定出力とする原稿探索部と、前記原稿探索部によって求められた前記確定出力を出力する出力部と、を具備する音声認識誤り修正装置であって、前記有限状態トランスデューサー情報記憶部は、出力シンボルが空でない状態遷移であるところの出力遷移を前記状態遷移の一部として含んで記憶しており、前記原稿テキストに含まれる文を複数のチャンクに分割し、前記チャンクに含まれる単語を入力シンボルとして受理する状態遷移のパスの後に前記出力遷移を設けた前記有限状態トランスデューサーの、前記状態に関する情報および前記状態遷移に関する情報を記憶する、ことを特徴とする音声認識誤り修正装置。
[2−2]前記原稿探索部は、前記チャンクごとに前記誤りスコアを算出するとともに、前記チャンクごとの前記誤りスコアに基づいて誤りの度合いが所定の閾値より小さい場合に、当該チャンクに対応する前記出力遷移の出力シンボルを、前記確定出力とするものであり、且つ、前記原稿探索部は、前記チャンクごとの前記誤りスコアを算出する際に、当該チャンクと当該チャンクの直前のチャンクの区間に関して前記誤りに関する状態遷移が含まれる割合に応じた誤りスコアを、当該チャンクの誤りスコアとして算出する、ことを特徴とする前記[2−1]の音声認識誤り修正装置。
[2−3]原稿テキストに対応して、音声認識結果として入力される単語を順次受理しながら状態遷移していく有限状態トランスデューサーであって、前記音声認識結果に含まれる単語の誤りをも受理しながら状態遷移していく前記有限状態トランスデューサーの、状態に関する情報、および状態遷移に関して遷移元状態と遷移先状態と入力シンボルと出力シンボルと遷移重みとを含む情報、とを記憶する有限状態トランスデューサー情報記憶部と、前記有限状態トランスデューサーにおける前記状態の尤度を表すスコアを記憶するノードデータ記憶部と、前記原稿テキストに対応する音声の認識結果である認識単語の入力を外部から受け付けるとともに、受け付けた前記認識単語に応じて、前記有限状態トランスデューサーにおける前記状態ごとの当該時刻でのスコアを算出し、算出された前記スコアを用いて前記ノードデータ記憶部を更新するノードデータ更新部と、処理開始を示す起動信号を外部から受け付けると、ノードデータ記憶部を参照することにより、その時点における最尤ノードを決定するとともに、前記有限状態トランスデューサー情報記憶部と前記ノードデータ記憶部とを参照して、前記最尤ノードまでの状態遷移を遡ることにより、状態遷移が確定済みの所定の時刻までのトレースバック処理を行い、当該トレースバック処理した状態遷移のパスを出力候補とするとともに、出力候補となった前記パスに関して、当該パスに前記誤りに関する状態遷移が含まれる割合に応じた誤りスコアを算出し、算出された前記誤りスコアに基づいて誤りの度合いが所定の閾値より小さい場合に当該パスの出力候補を、確定出力とする原稿探索部と、前記原稿探索部によって求められた前記確定出力を出力する出力部と、を具備する音声認識誤り修正装置であって、前記有限状態トランスデューサー情報記憶部は、出力シンボルが空でない状態遷移であるところの出力遷移を前記状態遷移の一部として含んで記憶しており、前記原稿探索部は、前記出力遷移の遷移元状態に対応するノードの中で最尤であるノードをその時点における前記最尤ノードとして決定する、ことを特徴とする音声認識誤り修正装置。
次に、上述した、前提となる形態の音声認識誤り修正装置(方式1および方式2)に基づいて、本発明の複数の実施形態を説明する。
[第1実施形態]
第1実施形態による音声認識誤り修正装置は、上述した方式1の音声認識誤り修正装置に、さらに、原稿テキストの前処理を行う機能を有する前処理部を設けたものである。
図14は、本実施形態による音声認識誤り修正装置の概略機能構成を示すブロック図である。同図に示すように、本実施形態による音声認識誤り修正装置800は、既に説明した音声認識誤り修正装置100(前提形態の方式1,図3)が備える構成に加えて、前処理部811を含んで構成される。
前処理部811は、記憶手段に記憶されている原稿テキスト集合200のデータを解析し、警告状況を検知した場合には、警告情報を出力する。警告状況とは、原稿探索手段140の動作において、誤りが生じやすいような原稿テキストが含まれている状況である。また、前処理部811は、警告状況を解消するための修正案を生成し、出力する。オペレーターは、前処理部811から提示された修正案にしたがって、あるいはその修正案を参考として、原稿テキストを修正する操作を行う。
仮に、トランスデューサ構築装置240が、警告状況にある原稿テキストに基づいてそのままトランスデューサーを構築してしまうと、原稿探索手段140の動作で誤りが生じ、音声認識誤りを正しく修正できない可能性がある。しかしながら、前処理部811の処理によって適切に原稿テキストを前処理段階で修正することにより、原稿探索手段140での誤りを防ぐことができる。
なお、具体的な警告状況の例や、それらの警告状況を解消するための前処理部811の処理については後で詳述する。
[第2実施形態]
第2実施形態による音声認識誤り修正装置は、上述した方式2の音声認識誤り修正装置に、さらに、原稿テキストの前処理を行う機能を有する前処理部を設けたものである。
図15は、本実施形態による音声認識誤り修正装置の概略機能構成を示すブロック図である。同図に示すように、本実施形態による音声認識誤り修正装置900は、既に説明した音声認識誤り修正装置600(前提形態の方式2,図11)が備える構成に加えて、原稿テキスト記憶装置700(原稿テキスト記憶部)と、トランスデューサー構築装置740と、前処理部911とを含んで構成される。
前処理部911は、原稿テキスト記憶装置700に記憶されている原稿テキストのデータを解析し、警告状況を検知した場合には、警告情報を出力する。警告状況とは、原稿探索部640の動作において、誤りが生じやすいような原稿テキストが含まれている状況である。また、前処理部911は、警告状況を解消するための修正案を生成し、出力する。オペレーターは、前処理部911から提示された修正案にしたがって、あるいはその修正案を参考として、原稿テキストを修正する操作を行う。
仮に、トランスデューサー構築装置740が、警告状況にある原稿テキストに基づいてそのままトランスデューサーを構築してしまうと、原稿探索部640の動作で誤りが生じ、音声認識誤りを正しく修正できない可能性がある。しかしながら、前処理部911の処理によって適切に原稿テキストを前処理段階で修正することにより、原稿探索部640での誤りを防ぐことができる。
なお、具体的な警告状況の例や、それらの警告状況を解消するための前処理部911の処理については後で詳述する。
[第1実施形態および第2実施形態における前処理部(811または911)の動作]
前提となる形態(方式1、方式2)において述べたように、音声認識誤り修正装置(800または900)は、次の式(10)を満たす修正結果を確定させ、出力する。
式(10)において、Otはトレースバックにより確定する候補となった文またはチャンクの集合である。また、oはOtに属する区間である。また、Eoは区間o内において誤りを受理する遷移の重みの合計から求めた誤り率である。なお例えば、Eoが区間o内において誤りを受理する遷移の通過回数から求めるようにしてもよい。また、Tは前記誤り率に関する閾値である。閾値Tは、許容する原稿と認識結果との不一致の度合いと、原稿がない発話(原稿に含まれていなかった単語列が実際に発話され認識されたもの)と原稿との一致度合いに基づき、適宜設定する。例えば、T=0.5程度(0.4≦T≦0.6 を満たす所定のT)とすると、認識誤りの良好な修正結果が得られる。しかしながら、原稿内に、互いの類似度が0.5以上(言い換えれば、編集距離が0.5以下)の類似文の対があった場合には、適切な結果を得ることが困難となる。
前処理部(811または911)は、原稿テキスト記憶部に記憶された原稿テキストに含まれる言語要素(単語、文字、音素等)の系列に関して、複数の系列間の類似度を表す距離を算出するとともに、算出された距離が所定の閾値を下回るか否かによって類似の系列を検出し、類似の系列が検出された場合には警告情報を出力し、検出された類似の系列のうちの少なくともいずれかについて原稿テキストを操作することによって類似を解消するための修正の提案を出力するとともに、外部から入力された指示にしたがって原稿テキストを修正する。
つまり、前処理部(811または911)は、事前に原稿中の警告状況を発見し、警告情報を発する機能を有する。また、前処理部(811または911)は、発見した警告状況に関して修正案を提示する機能を有する。また、前処理部(811または911)は、修正案を提示した後、オペレーターの操作等に基づき原稿を修正する。もっとも典型的な場合においては、前処理部(811または911)が提示した修正案をオペレーターが承諾し、オペレーターが承諾を表す操作を行うと、前処理部(811または911)は提示した修正案にしたがって原稿を修正する。また、オペレーターの判断により、前処理部(811または911)が提示した修正案とは異なる修正を行うことも可能である。いずれにしても、前処理部(811または911)による原稿の解析と修正により、原稿中に含まれていた警告状況は解消される。
警告状況の具体例は、次の4つである。
[1]重複項目の存在
[2]類似文の存在
[3]短文(短すぎる文)の存在
[4]文頭における類似チャンクの存在
これらの警告状況の各々の詳細については後述する。
また、ここで、原稿の構成を形式的に定義する。
処理対象の原稿全体をMとする。原稿Mの構成を、下の式(11)のように定義する。
式(11)において、d1,d2,・・・は、ニュース項目である。なおnMは、原稿Mに含まれるニュース項目の数である。つまり、原稿Mは、nM個のニュース項目di(1≦i≦nM)で構成されている。
そして、ニュース項目diの構成は、下の式(12)の通りである。
式(12)において、l1,l2,・・・は、文である。なお、式(12)において、niは、ニュース項目diに含まれる文の数である。つまり、ニュース項目diは、ni個の文lj(1≦j≦ni)で構成されている。
そして、文ljの構成は、下の式(13)の通りである。
式(13)において、cj 1,cj 2,・・・は、チャンクである。なお、式(13)において、njは、文ljに含まれるチャンクの数である。つまり、文ljは、nj個のチャンクcj 1,cj 2,・・・で構成されている。
つまり、以上説明したように、原稿テキストの構成は次の通りである。即ち、原稿テキストの全体は、1つまたは複数の項目で構成される。ここで項目は、例えばニュース番組におけるニュース項目である。また、項目は、1つまたは複数の文で構成される。通常の文は、言語(日本語等)の文法に従って構文をなす1つのまとまりである。日本語の場合には、通常、文は、句点で区切られる。しかし、本実施形態において、文法上の複数の文を、便宜上、1つの文のまとまりと同等のものとして扱っても良い。例えば、後述するように、文を連結する場合がある。また、文は、1つまたは複数のチャンクで構成される。また、チャンクは、1つまたは複数の単語の列として構成される。単語は、1つまたは複数の文字からなる。なお、「系列」とは、言語要素の系列である。ここで述べた項目、文、チャンクは、いずれも系列である。
原稿テキストは、このような論理的構造を有するデータとして、記憶手段に格納されている。また、処理により、論理的構造を適宜変更することができるようになっている。論理的構造の変更とは、例えば、文を連結したり、チャンクの範囲を変更したりすることである。
[1.前処理部による重複項目の検出]
第1の警告状況は、重複項目が存在することである。
このため、前処理部(811または911)は、項目間の距離が所定の閾値を下回る場合には、項目が重複していることを示す警告情報を出力する。具体的には次の通りである。
ニュース項目diの文の単語列を全て連結した単語列をd(ハット)iとして、その集合M(ハット)は、次の式(14)で表される。
前処理部(811または911)この集合M(ハット)を用いて、次の式(15)および式(16)により、類似度の高い項目の対を検出する。また、前処理部(811または911)は、その検出された対における項目間の距離を算出する。
なお、式(15)、式(16)において、xとyはそれぞれ集合M(ハット)の要素であるところの、ニュース項目の単語列である。また、L(x,y)は、系列間の編集距離である。なお、この編集距離としては、例えば、レーベンシュタイン距離(Levenshtein distance)の改良版を用いる。このレーベンシュタイン距離の改良版については後述する。
式(15)に示すDdは、集合M(ハット)に含まれるニュース項目の単語列(x,y)間における相互の距離の最小値である。また、式(16)に示すPdは、そのような最小の距離をなすニュース項目の単語列の対である。
前処理部(811または911)は、集合Mにおいて、Ddが所定の閾値(例えば、0.5)を下回った場合に、その距離Ddをなすニュース項目対Pdについての警告を出力する。閾値の設定が適切であれば、この警告は、原稿内に同一のニュース項目が存在することを表す。Ddが上記の閾値を下回るような事象が生じる要因は、ニュース原稿のエラー、あるいはニュース原稿の整理が完了していない状況である。つまり、例えば、あるニュース項目の原稿文に修正が加えられたときに、その修正の前後の原稿が、集合M内に残ってしまっている場合などである。
前処理部(811または911)から出力された上記警告に基づき、音声認識誤り修正装置(800または900)のオペレーターは、例えば、ニュース項目対Pdのうちのいずれか一方を削除するなどといった適切な処置を行う。
また、処置後の(つまり更新された)新たな集合Mについても、前処理部(811または911)は、同様の処理を行い、DdおよびPdを求める。そして、Ddが上記閾値を下回った場合、上と同様に、警告を出力する。
そして、前処理部(811または911)は、Ddが閾値を下回らなくなるまで、重複項目の検出と削除を繰り返し行う。
図16は、前処理部(811または911)によって検出される重複項目の第1の例を示す概略図である。同図において、「doc=323」および「doc=222」で識別されるニュース項目の対が、両者間の距離に基づき重複項目であるとして検出されたものである。「doc=323」の項目は、文324から327までの4文を含んでいる。「doc=222」の項目は、文223から229までの7文を含んでいる。両項目において、次の通り、文対が類似関係(同一関係にある場合も「類似」に含む)にある。即ち、文324と文223の類似度が高い。また、文325と文224の類似度が高い。また、文326と文225の類似度が高い。また、文327と、文227における「招致/推進部/は/2020/年/夏/の」以後の部分の類似性が高い。つまり、意味をも考慮すると、この項目対は、同一のニュースを表す重複項目であると考えられる。
図17は、前処理部(811または911)によって検出される重複項目の第2の例を示す概略図である。同図において、「doc=81」と「doc=112」と「doc=99」で識別されるニュース項目が、各々の相互間の距離に基づき重複項目であるとして検出されたものである。「doc=81」の項目は、文82から84までの3文を含んでいる。「doc=112」の項目は、文113から115までの3文を含んでいる。「doc=99」の項目は、文100から102までの3文を含んでいる。これら項目において、次の通り、文同士が類似関係(同一関係にある場合も「類似」に含む)にある。即ち、文82と文113と文100の類似度が高い。また、文83と文114と文101の類似度が高い。また、文84と文115と文102の類似度が高い。また、各項目の文章の意味を考慮しても、これら3つの項目は、同一のニュースを表す重複項目であると考えられる。
[2.前処理部による類似文の検出]
第2の警告状況は、原稿中に類似文が存在することである。
このため、前処理部(811または911)は、文間の距離が所定の閾値を下回る場合には、文が類似していることを示す警告情報を出力するとともに、類似している文のいずれかを、当該文の前の文または当該文の後の文に連結する修正の提案を出力する。具体的には次の通りである。
前処理部(811または911)は、異なるニュース項目対の中に含まれる類似文を検出する。
文ljに含まれるチャンクの単語列をすべて連結してなる単語列をl(チルダ)jとする。そして、M(チルダ)は、そのようなl(チルダ)jを要素とする集合である。つまり、集合M(チルダ)は、下の式(17)で表される。
集合M(チルダ)は、すべてのニュース項目に含まれる各文に対応する単語列を要素として有する。前処理部(811または911)は、この集合M(チルダ)をもとに、次の式(18)および式(19)により、類似度の高い文対を検出する。また、前処理部(811または911)は、検出された文対における文間の距離を求める。
なお、式(18)、式(19)において、xとyはそれぞれ集合M(チルダ)の要素であるところの、文の単語列である。また、L(x,y)は、系列間の編集距離であり、一例としてレーベンシュタイン距離の改良版を用いる。
式(18)に示すDlは、集合M(チルダ)に含まれる文の単語列(x,y)間における相互の距離の最小値である。また、式(19)に示すPlは、そのような最小の距離をなす文の対である。
前処理部(811または911)は、Dlが所定の閾値(例えば、0.5)を下回った場合に、その距離Dlをなす文対Plについての警告を出力する。この警告は、ニュース原稿内に類似の文の対があることを示すものである。なお、その対をなす各文は、同一のニュース項目に属している場合もあり、また、異なるニュース項目に属している場合もある。
前処理部(811または911)によって検出された文対Plは、オペレーターの操作、あるいは機械による自動的な操作等に基づき、これらのいずれかの文、あるいは両方の文を、その前後の文と連結することにより、類似度を低めることができる。つまり、そのような連結により、対として検出された文間で充分な異なり(距離)を取ることができるようになる。そのような文の連結の方法として、良好な一例を次に説明する。
文l(チルダ)xと文l(チルダ)yがともに集合M(チルダ)の要素であり、Pl=(l(チルダ)x,l(チルダ)y)である場合の文の連結方法を説明する。つまり、文l(チルダ)xと文l(チルダ)yとが集合M(チルダ)内での最少距離をなす。文l(チルダ)xまたは文l(チルダ)yのいずれかについて文を連結する方法は、次の4通りがある。
(1)l(チルダ)x−1とl(チルダ)xを連結して新たな文とする。この連結後の文の集合をM(チルダ)0とする。
(2)l(チルダ)xとl(チルダ)x+1を連結して新たな文とする。この連結後の文の集合をM(チルダ)1とする。
(3)l(チルダ)y−1とl(チルダ)yを連結して新たな文とする。この連結後の文の集合をM(チルダ)2とする。
(4)l(チルダ)yとl(チルダ)y+1を連結して新たな文とする。この連結後の文の集合をM(チルダ)3とする。
なお、l(チルダ)x−1およびl(チルダ)x+1は、それぞれ、原稿内において文l(チルダ)xの1つ前の文および1つ後の文である。
前処理部(811または911)は、これらにより、4通りの文集合であるM(チルダ)0,M(チルダ)1,M(チルダ)2,M(チルダ)3を候補として生成する。前処理部(811または911)は、これら4通りの候補の文集合のそれぞれについて、式(18)によるDlを計算する。そして、前処理部(811または911)は、M(チルダ)0,M(チルダ)1,M(チルダ)2,M(チルダ)3の中で、Dlを最大とする連結方法を採用する。なお、放送において読み上げられる項目の順序に変更がある場合や、項目を単位とした原稿の差し替えが行われ得る場合には、前処理部(811または911)は、項目をまたいだ文の連結を行わないような制約の下で、上記の操作を行う。その場合には、つまり、前処理部(811または911)は、項目をまたがない文の連結のみを候補とする。
また、あるDlの値を与える文対が複数存在した場合には、前処理部(811または911)は、次のような処理を行う。
即ち、前処理部(811または911)は、その複数の文対のうちの一つ(この対を、l(チルダ)xとl(チルダ)yとする)について、l(チルダ)xとl(チルダ)yを含む項目のみで集合M(チルダ)を構成する。そして、前処理部(811または911)は、そのM(チルダ)の中で最適な文の連結を探す。文の連結のしかた自体は、上述した通りである。
そして、前処理部(811または911)は、そのような操作を、上記複数の文対の各々について繰り返す。
前処理部(811または911)は、集合M(チルダ)に関するDlが閾値を下回らないようになるまで、上述した文連結の操作を繰り返す。前処理部(811または911)は、文連結した結果による原稿の修正についての提案を出力する。そして、オペレーターからの操作に基づき、前処理部(811または911)は、原稿を修正し、類似文を解消する。
以上説明したように、前処理部(811または911)は、連結後の集合内最少距離が連結前よりも大きくなるよう、文同士を連結する操作を行う。
図18は、前処理部(811または911)によって検出された文対の例と、その文の一方を他の文と連結させる例を示す概略図である。同図に示すように、文1から11までが、ひとつの項目に含まれている。この項目は、似ている文を含む項目の例である。そして、前処理部(811または911)が、式(18)と式(19)により、似ている文対として抽出したものが、文2と文3の対である。このような文対を含む原稿に基づいて音声認識誤り修正の処理を行った場合、文2に相当する一連の状態遷移と、文3に相当する一連の状態遷移とで、実際の正解の文が最尤として認定されない可能性がある。具体的には、文2と文3では、文頭からの「関東/から/の/代表/8/校/の/初戦/の/対戦」の単語列が共通である。前処理部(811または911)は、文2と文3が類似であるということを検出した後、前述の通り、複数の連結方法を候補とする。つまり、文1と文2を連結する場合と、文2と文3を連結する場合と、文3と文4を連結する場合である。前処理部(811または911)は、それらそれぞれの場合における集合M(チルダ)についてDlを計算し、Dlの値が最も高くなる連結のしかたを採用し、これを提案として出力する。同図において、出力されている提案は、元の文1と文2とを連結して新たな文1とするものである。連結後の文1は、「今月6日に甲子園球場で開幕する夏の全国高校野球、きょうは組み合わせ抽選が行われました。関東からの代表8校の初戦の対戦相手が決まりました。」である。
[3.前処理部による短文の検出]
第3の警告状況は、原稿中に短文(短すぎる文)が存在することである。
このため、前処理部(811または911)は、文に含まれる単語数が所定の閾値より小さい場合には、文が短すぎることを示す警告情報を出力する。具体的には次の通りである。
前処理部(811または911)は、各文に含まれる単語数をカウントする。そして、集合Mに含まれる各文の単語数のうち、最も少ない単語数が予め定めた閾値を下回る場合に、その文に関する警告を出力する。それとともに、前処理部(811または911)は、その文を、前または後の文と連結する操作を行うことを提案として出力する。前の文と連結するか後の文と連結するかについては、連結後の集合Mにおける文のうちで最も少ない単語数が、より大きくなる方を採用する。また、ここでも、前述の通り、前処理部(811または911)は、項目の順序が入れ替えられたり項目自体が差し替えられたりする可能性がある場合には、項目をまたぐ文連結を行わないようにする。前処理部(811または911)は、オペレーターからの指示にしたがい、必要な修正を行う。
集合M内で最も単語数の少ない文が、閾値以上の単語数を有するようになるまで、前処理部(811または911)は、上記の短文検出と修正の処理を繰り返す。これにより、短すぎる文が存在することによるエラーを防ぐことができる。
[4.前処理部による類似文頭チャンクの検出]
第4の警告状況は、原稿中に類似の文頭チャンクが存在することである。
このため、前処理部(811または911)は、文の先頭に位置する文頭チャンク間の距離が所定の閾値を下回る場合には、文頭チャンクが類似していることを示す警告情報を出力するとともに、類似している前記文頭チャンクの少なくともいずれかを後方に延長する修正の提案を出力する。具体的には次の通りである。
文をチャンクに分割して扱う場合、文の一番目のチャンク同士が文間で類似している場合も、認識結果の修正を謝る要因となり得る。ここで、集合Mに含まれる各文の一番目のチャンクの集合を対象として、前処理部(811または911)は、以下の操作を行う。
各文の一番目のチャンクの集合は、下の式(20)で表される。
そして、前処理部(811または911)は、下の式(21)と式(22)によるDcおよびPcを求める。
Dcは各文の第1チャンク間での距離の最小値である。また、PcそのようなDcをなす第1チャンクの対である。そして、Dcが予め定めた閾値(例えば、0.5)を下回った場合に、前処理部(811または911)は、チャンク対Pcに関する警告を出力する。
また、前処理部(811または911)は、上で警告を発した対象のチャンク対について、修正するための案を作成する。そのための処理を次に説明する。
チャンク対Pcに含まれるチャンクxおよびyに関して、x’およびy’は、それぞれ、xおよびyを後ろ方向に1単語伸ばして得られるチャンクである。そして、前処理部(811または911)は、これらx’とy’を用いて、次の式(23)を求める。
そして、前処理部(811または911)は、式(23)の値を実現するよう、x’またはy’のいずれかを採用する。つまり、L(x’,y)>L(x,y’)のときはx’を採用し、L(x’,y)<L(x,y’)のときはy’を採用する。なお、L(x’,y)=L(x,y’)であった場合には、短いほう(単語数の少ないほう)のチャンクを伸ばす。前処理部(811または911)は、文頭における類似チャンクを解消するための提案を出力する。そして、前処理部(811または911)は、オペレーターからの指示にしたがい、必要な修正を行う。
そして、前処理部(811または911)は、所定の条件を満たすようになるまで、上記の操作を繰り返し、チャンクを伸ばしていく。所定の条件とは、例えば、Dcが閾値を下回らない状況になることである。前処理部(811または911)は、その条件を満たすようになると、延長されたチャンクを修正案として出力する。このような操作により、前処理部(811または911)は、文間の第1チャンク同士の類似を解消する。
図19は、前処理部(811または911)によって検出された類似チャンクの例と、そのチャンクの延長を提案した例を示す概略図である。図示する例では、チャンク386と392が類似(同一である場合を含む)である。これらのチャンクは、異なる文に属するものである。この例では、このチャンク386と392は、同一の単語列であり、「今回の中間指針で群馬県の観光業が風評被害の対象として認められたことに」である。そして、前処理部(811または911)が上述した方法によって1単語ずつ伸ばしていき、両者の距離Dcが閾値を下回らなくなったときの状態が、図内に示す「提案されたチャンクの延長」である。このように、前処理部(811または911)が文頭のチャンクの違いが充分に出るようにチャンクを延長することによって、音声認識誤り修正におけるエラーを防ぐことができる。
[5.系列間の編集距離]
上述したように、前処理部(811または911)による処理においては、編集距離L(x,y)を算出する。この編集距離としては、レーベンシュタイン距離の改良版を用いる。本実施形態で用いる改良版は、系列間の編集距離のしかたに特徴がある。具体的には、この改良版は、系列末における挿入と削除をカウントしない。これは、本実施形態においては、系列の先頭部分に近いところの一致度合いを如何に低減させるかが重要であり、系列の後半の一致度合いの低減はそれほど重要ではないためである。
図20は、系列間におけるレーベンシュタイン距離の改良版を算出するための計算手順を示すプログラムの疑似コードである。この疑似コードにおいて、文字列「//」から行末まではプログラムのコメントであり、実行コードに影響を与えない。ソースコードの第1行目で定義している関数LevenshteinDistance()は、2つの文字列型パラメーターstr1およびstr2を入力とする。関数LevenshteinDistance()は整数値を返す。返される関数値は改良版のレーベンシュタイン距離の値である。lenStr1およびlenStr2は、それぞれ、入力パラメーターである文字列の長さである。なお、lenStr1≦lenStr2である。コードの第4行目は、作業領域として用いる整数型配列dの宣言である。dのサイズは、第1次元(行)が(lenStr1+1)であり、第2次元(列)が(lenStr2+1)である。コードの第6行目は、整数型変数の宣言である。変数i1とi2は、それぞれ、文字列str1とstr2を数え上げるためのものである。変数costは、両文字列間において対比する文字が一致するか否かに依るコストを一時的に格納するためのものである。なお、文字が一致するならばコスト0とし、不一致ならばコスト1とする。第7行目から第8行目までのfor文によるループと、第9行目から第10行目までのfor文によるループは、配列dを初期化するものである。具体的には、配列dを第0行・第0列から始まる行列と見たとき、第0行目の各要素と、第0列目の各要素を初期化している。第11行目から始まる、二重にネストされたfor文は、文字列str1とstr2の各要素である文字同士を比較しながら、レーベンシュタイン距離を求めるためのテーブル(配列d)に値を埋めていくものである。第13行目のif文は、対応する文字同士が同一である場合には当該位置間のコストを0とし、不一致の場合には同コストを1とする。第15行目の代入文の右辺のminimum()関数は、パラメーターの中の最小値を返す関数である。この代入文により、両文字列間の比較において文字が挿入されている場合または文字が削除されている場合には、編集距離を1だけ増加(カウントアップ)させる。また、文字が置換されているか否かは、上記のコスト(変数cost)が表しており、その変数値を加算している。この配列dは、最小のコスト(編集操作)による文字列間の差異を表している。言い換えれば、この配列は、両文字列間を一致させるためのエネルギー最小のパスを示している。最後の行のreturn文は、改良されたレーベンシュタイン距離の値を返す。このプログラムが通常のレーベンシュタイン距離を算出するプログラムと異なる点は、系列末の挿入と削除をカウントしないことである。なお、ここで説明したアルゴリズムは、文字列だけでなく単語列にも同様に適用できる。
図21は、上記のプログラムによって、改良版のレーベンシュタイン距離を算出した実行例を示す概略図である。この実行例は、文字の系列を処理対象とするもので、ありseq1=adcefg、seq2=abcdefghijとし、これら2系列間の距離を求めるものである。同図に示す実行例は、ビタビノードのスコア行列である。つまり、図21は、図20に示した関数の処理を終えたときの配列dが格納している値を行列形式で示す。図20に示したコードでは、「thisrow」の不要部分を取り除いて表示する。通常のレーベンシュタイン距離の算出では、図21に示す行列の右下の値(つまり、「5」)が算出される。本実施形態で用いる改良版の距離の算出では、図示する行列の最下行における最小値(つまり、「2」)が算出される。これは、改良版の距離の算出におおいて、系列末の挿入を無視しているためである。
なお、上記の第1実施形態および第2実施形態を、次のように変形しても良い。
前処理部(811または911)が、必ずしも、上で説明した4種類の警告状況(重複項目の存在、類似文の存在、短文(短すぎる文)の存在、文頭における類似チャンクの存在)のすべてに対応する必要はない。これらの一部のみに前処理部(811または911)が対応するようにしても良い。
また、必ずしも単語を言語単位としなくても良い。代わりに、文字や音素などを言語単位とし、このような言語単位の系列間の距離に基づいて同様の処理を行っても良い。
また、上で、いくつかの閾値(系列間の距離の閾値等)に言及した。これらの閾値は、すべて同じ値であっても良いし、それぞれが異なる値であっても良い。
なお、上述した各実施形態における各装置の全部または一部の機能をコンピューターで実現するようにしても良い。その場合、それらの機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。