IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 独立行政法人情報通信研究機構の特許一覧

特開2023-28902音声認識装置及び方法、並びにコンピュータプログラム
<>
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図1
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図2
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図3
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図4
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図5
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図6
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図7
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図8
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図9
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図10
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図11
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図12
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図13
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図14
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図15
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図16
  • 特開-音声認識装置及び方法、並びにコンピュータプログラム 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023028902
(43)【公開日】2023-03-03
(54)【発明の名称】音声認識装置及び方法、並びにコンピュータプログラム
(51)【国際特許分類】
   G10L 15/10 20060101AFI20230224BHJP
   G10L 15/32 20130101ALI20230224BHJP
   G10L 15/04 20130101ALI20230224BHJP
【FI】
G10L15/10 500Z
G10L15/32 220Z
G10L15/04 300Z
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021134879
(22)【出願日】2021-08-20
(71)【出願人】
【識別番号】301022471
【氏名又は名称】国立研究開発法人情報通信研究機構
(74)【代理人】
【識別番号】100099933
【弁理士】
【氏名又は名称】清水 敏
(72)【発明者】
【氏名】沈 鵬
(72)【発明者】
【氏名】河井 恒
(57)【要約】
【課題】多言語でのリアルタイムの音声認識を、高精度でかつ低レイテンシで行える多言語ライブ音声認識システムを提供する。
【解決手段】音声認識装置50は、音声信号の発話区間の開始及び終了を検出する発話区間検出手段72と、発話区間検出手段72により検出された発話区間の終了後、所定時間以上の無音区間があったことに応答して、発話区切りを示す発話区分信号を出力するための発話区切り検出手段76と、発話区分信号に応答して、直前の発話区間の発話の言語を識別し言語の識別子を出力するための言語識別手段78と、発話区間検出手段72により発話区間の開始が検出されたことに応答して、当該発話区間の音声信号に対する音声認識をそれぞれ行うための、互いに異なる複数の言語のための複数の音声認識手段と、識別子に応答して、複数の音声認識手段のうち、当該識別子の示す言語の音声認識手段の出力を選択して出力するための選択手段80とを含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
音声信号の発話区間の開始及び終了を検出する発話区間検出手段と、
前記発話区間検出手段により検出された発話区間の終了後、所定時間以上の無音区間があったことに応答して、発話区切りを示す発話区分信号を出力するための発話区切り検出手段と、
前記発話区分信号に応答して、直前の発話区間の発話の言語を識別し言語の識別子を出力するための言語識別手段と、
前記発話区間検出手段により発話区間の開始が検出されたことに応答して、当該発話区間の音声信号に対する音声認識をそれぞれ行うための、互いに異なる複数の言語のための複数の音声認識手段と、
前記識別子に応答して、前記複数の音声認識手段のうち、当該識別子の示す言語の音声認識手段の出力を選択して出力するための選択手段とを含む、音声認識装置。
【請求項2】
前記言語識別手段は、
前記発話区間検出手段により発話区間の終了が検出されたことに応答して、当該発話区間の音声信号から、所定長で所定シフト量の部分区間の音声信号を生成する部分区間信号生成手段と、
前記部分区間の各々の前記音声信号を受け、当該部分区間が前記複数の言語のいずれに相当するかを表す情報を出力する言語識別モデルと、
前記言語識別モデルが出力する前記情報に応答して、前記発話区間の音声信号の言語を決定し当該言語の識別子を出力する言語決定手段とを含む、請求項1に記載の音声認識装置。
【請求項3】
前記複数の音声認識手段の各々は、
当該音声認識手段の言語の音声認識を個別に行う複数の同一言語音声認識手段と、
前記発話区分信号に応答して、前記複数の言語の音声認識手段の各々について、前記複数の同一言語音声認識手段の中でアイドル状態である前記同一言語音声認識手段に音声認識を開始させるための切替手段とを含む、請求項1又は請求項2に記載の音声認識装置。
【請求項4】
前記発話区間検出手段は、
前記音声信号を所定長の対象区間に分割する分割手段と、
前記対象区間の各々に対して、その直前に少なくとも第1の所定長の無音区間を含む付加信号を付加する信号付加手段と、
前記信号付加手段により前記付加信号が付加された前記対象区間に含まれる有音区間を無音区間と区別して検出するための有音区間検出手段と、
前記有音区間検出手段により検出された前記有音区間の中で、前記付加信号に対応する有音区間を削除することにより前記有音区間を補正するための補正手段とを含む、請求項1から請求項3のいずれか1項に記載の音声認識装置。
【請求項5】
コンピュータを、
音声信号の発話区間を検出する発話区間検出手段と、
前記発話区間検出手段により発話区間が検出されたことに応答して、当該検出された発話区間に対して当該区間の発話の言語を識別するための言語識別手段と、
前記発話区間検出手段により発話区間が検出されたことに応答して、当該発話区間の音声信号に対する音声認識をそれぞれ行うための、互いに異なる複数の言語のための複数の音声認識手段と、
前記言語識別手段による識別結果に応答して、前記複数の音声認識手段のうち、当該識別結果の示す言語の音声認識手段の出力を選択して出力するための選択手段として機能させる、コンピュータプログラム。
【請求項6】
コンピュータが、音声信号の発話区間の開始及び終了を検出するステップと、
コンピュータが、前記検出された発話区間の終了後、所定時間以上の無音区間があったことに応答して、発話区切りを示す発話区分信号を出力するステップと、
コンピュータが、前記発話区分信号に応答して、直前の発話区間の発話の言語を識別し言語の識別子を出力するステップと、
コンピュータが、前記発話区間の開始が検出されたことに応答して、当該発話区間の音声信号に対する音声認識を、互いに異なる複数の言語のための複数の音声認識手段により開始させるステップと、
コンピュータが、前記識別子に応答して、前記複数の音声認識手段のうち、当該識別子の示す言語の音声認識手段の出力を選択して出力するステップとを含む、音声認識方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は音声認識装置に関し、特に、多言語の発話の音声認識装置に関する。
【背景技術】
【0002】
音声認識技術の普及により、音声の言語が予め分かっている場合、発話単位なら音声をほぼ同時に高い精度を持ってテキストに変換できる技術が存在する。発話単位ではなく、音声の言語が予め分かっていない複数の発話の音声認識をする場合には、さらに音声がどの言語によるものかを自動的に判定する言語識別技術が必要である。例えば後掲の特許文献1には、発話の開始とともに言語の識別を開始し、発話の先頭の短い期間のみを使用して言語の識別を行う技術が開示されている。また、従来は、そのように発話と同時に音声認識を行うシステムの評価は、単語誤り率(WER(Word Error Rate))及びリアルタイムファクター(RTF(Real Time Factor))が広く使用されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2020-160374号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
最近、政治、学術及びビジネスの領域において国際的な会議、講演、質疑応答などが一般的になっている。いわゆるビデオ会議により、複数の国を結び、複数の話者が複数の言語により会議を行う機会も増えている。そうした場を有意義なものにするためには、同時通訳を自動翻訳を使用して行うことが必須である。
【0005】
自動翻訳をする前提として、各話者の発話を正確に音声認識する必要がある。会議などにおいては発話が長時間に及ぶことが多い。しかしそれだけでなく、長い発話と短い発話とが交互に出現したり、短い発話が続いたりする場合も多い。使用される言語も話者も複数ありそれが頻繁に切り替わる。そのような状況においては、単独の話者の発話を音声認識する場合と異なり、発話区間検出、言語の判別、及び自動翻訳を短時間の間に正確に行わなければならないという制約がある。さらに長時間の音声の場合は発話中に非音声が挿入されることも多く、処理をさらに難しくなる。こうした状況は、同時通訳を行う場合だけではなく、会議の議事録の作成、字幕の作成などにおいても同様に生じる。
【0006】
使用される言語が切り替わったとき(話者が交代したとき)には、短い時間の間に言語を識別する必要がある。しかし既存の言語識別技術によっては、発話の先頭という限られた情報から正確に言語を識別することが難しいという問題がある。多言語を連続的に処理する音声認識装置では、話者が発話している間に言語を識別し、言語を識別した後に素早く音声認識の結果を表示したり、翻訳などの後処理に渡したりする。また、多言語の発話の言語識別及び音声認識を精度よく認識、識別するため、発話区間を高い精度で検出することが必要になる。既存の発話区間検出技術は、短い発話に対しては精度が低いという問題があり、発話の切り替えをうまく検出できないことが多い。
【0007】
また、このように発話をリアルタイムで音声認識するシステムを評価する際に、従来のようにWER及びRTFを使用することが適切かという問題もある。
【0008】
したがってこの発明の目的は、多言語でのリアルタイムの音声認識を、高精度でかつ低レイテンシで行える多言語ライブ音声認識システムを提供することである。
【0009】
この発明の他の目的は、多言語ライブ音声認識システムを適切に評価する指標を提供することである。
【課題を解決するための手段】
【0010】
この発明の第1の局面に係る音声認識装置は、音声信号の発話区間の開始及び終了を検出する発話区間検出手段と、発話区間検出手段により検出された発話区間の終了後、所定時間以上の無音区間があったことに応答して、発話区切りを示す発話区分信号を出力するための発話区切り検出手段と、発話区分信号に応答して、直前の発話区間の発話の言語を識別し言語の識別子を出力するための言語識別手段と、発話区間検出手段により発話区間の開始が検出されたことに応答して、当該発話区間の音声信号に対する音声認識をそれぞれ行うための、互いに異なる複数の言語のための複数の音声認識手段と、識別子に応答して、複数の音声認識手段のうち、当該識別子の示す言語の音声認識手段の出力を選択して出力するための選択手段とを含む。
【0011】
好ましくは、言語識別手段は、発話区間検出手段により発話区間の終了が検出されたことに応答して、当該発話区間の音声信号から、所定長で所定シフト量の部分区間の音声信号を生成する部分区間信号生成手段と、部分区間の各々の音声信号を受け、当該部分区間が複数の言語のいずれに相当するかを表す情報を出力する言語識別モデルと、言語識別モデルが出力する情報に応答して、発話区間の音声信号の言語を決定し当該言語の識別子を出力する言語決定手段とを含む。
【0012】
より好ましくは、複数の音声認識手段の各々は、当該音声認識手段の言語の音声認識を個別に行う複数の同一言語音声認識手段と、発話区分信号に応答して、複数の言語の音声認識手段の各々について、複数の同一言語音声認識手段の中でアイドリング中である同一言語音声認識手段に音声認識を開始させるための切替手段とを含む。
【0013】
さらに好ましくは、発話区間検出手段は、音声信号を所定長の対象区間に分割する分割手段と、対象区間の各々に対して、その直前に少なくとも第1の所定長の無音区間を含む付加信号を付加する信号付加手段と、信号付加手段により付加信号が付加された対象区間に含まれる有音区間を無音区間と区別して検出するための有音区間検出手段と、有音区間検出手段により検出された有音区間の中で、付加信号に対応する有音区間を削除することにより有音区間を補正するための補正手段とを含む。
【0014】
この発明の第2の局面に係るコンピュータプログラムは、コンピュータを、音声信号の発話区間を検出する発話区間検出手段と、発話区間検出手段により発話区間が検出されたことに応答して、当該検出された発話区間に対して当該区間の発話の言語を識別するための言語識別手段と、発話区間検出手段により発話区間が検出されたことに応答して、当該発話区間の音声信号に対する音声認識をそれぞれ行うための、互いに異なる複数の言語のための複数の音声認識手段と、言語識別手段による識別結果に応答して、複数の音声認識手段のうち、当該識別結果の示す言語の音声認識手段の出力を選択して出力するための選択手段として機能させる。
【0015】
この発明の第3の局面に係る音声認識方法は、コンピュータが、音声信号の発話区間の開始及び終了を検出するステップと、コンピュータが、検出された発話区間の終了後、所定時間以上の無音区間があったことに応答して、発話区切りを示す発話区分信号を出力するステップと、コンピュータが、発話区分信号に応答して、直前の発話区間の発話の言語を識別し言語の識別子を出力するステップと、コンピュータが、発話区間の開始が検出されたことに応答して、当該発話区間の音声信号に対する音声認識を、互いに異なる複数の言語のための複数の音声認識手段により開始させるステップと、コンピュータが、識別子に応答して、複数の音声認識手段のうち、当該識別子の示す言語の音声認識手段の出力を選択して出力するステップとを含む。
【図面の簡単な説明】
【0016】
図1図1は、この発明の第1実施形態に係る多言語ライブ音声認識装置の機能的ブロック図である。
図2図2は、図1に示す多言語ライブ音声認識装置を実現するコンピュータの外観を示す図である。
図3図3は、図2に示すコンピュータのハードウェア構成を示すブロック図である。
図4図4は、この発明の第1実施形態における発話区間検出の方法を説明するための模式図である。
図5図5は、この発明の第1実施形態において検出された発話区間の補正方法を説明するための模式図である。
図6図6は、この発明の第1実施形態における言語識別方法を説明するための模式図である。
図7図7は、第1実施形態における発話区切りの検出方法を説明するための模式図である。
図8図8は、第1実施形態に係る多言語ライブ音声認識装置が実行する多言語ライブ音声認識処理を実現するコンピュータプログラムの制御構造を示すフローチャートである。
図9図9は、VAD(Voice Activity Detection)の前処理を実現するプログラムの制御構造を示すフローチャートである。
図10図10は、VAD出力の補正を実現するプログラムの制御構造を示すフローチャートである。
図11図11は、ASR(Automatic Speech Recognition)の切替を実現するプログラムの制御構造を示すフローチャートである。
図12図12は、LID(Language Identification)の制御を実現するプログラムの制御構造を示すフローチャートである。
図13図13は、表示の更新処理を実現するプログラムの制御構造を示すフローチャートである。
図14図14は、クライアント・サーバシステムによる多言語ライブ音声認識の際のタイムチャートを示す図である。
図15図15は、第1実施形態によるレイテンシの計算方法を示す図である。
図16図16は、第1実施形態の実験で用いたテスト発話を示す図である。
図17図17は、実験に使用したASR単体の評価と実施形態に係る多言語ライブ音声認識の評価とを対比して示す図である。
【発明を実施するための形態】
【0017】
以下の説明及び図面では、同一の部品には同一の参照番号を付してある。したがって、それらについての詳細な説明は繰返さない。
【0018】
第1 第1実施形態
1. 構成
(1) 全体構成
図1にこの出願の第1実施形態に係る多言語ライブ音声認識装置50の概略の機能構成をブロック図形式で示す。図1を参照して、この多言語ライブ音声認識装置50は、例えばリモートからの音声信号である入力52を受けてその発話区間を検出し、発話区間ごとにその言語を識別して音声認識し、音声認識の結果を表示54として出力する機能を持つ。
【0019】
多言語ライブ音声認識装置50は、入力52を受けて蓄積する、FIFO(First-In,First-Out)形式のバッファ70と、このバッファ70から音声信号を読み出し、発話区間を検出するための発話区間検出部72とを含む。入力52は音声サンプル列を含み、各サンプルにはある時刻を基準とした時間情報が付されている。発話区間検出部72は、この音声サンプル列に含まれる音声区間を検出し、(開始時刻、終了時刻)のペアからなる発話区間検出信号を出力するためのものである。
【0020】
多言語ライブ音声認識装置50はさらに、発話区間検出部72の出力に基づいて、無音区間が所定の長さ(例えば0.5秒を使用するがこれに限定されるわけではなく、これより長くても短くてもよい。)以上継続したときを発話区切りとみなして発話区切りを示す発話区分信号を出力するための発話区切検出部76と、入力される音声信号の先頭部分を用いてその音声の言語を識別し、言語の識別子を出力するためのLID78と、複数の言語の音声の音声認識を並列して実行可能で、LID78の出力する言語の識別子に対応する音声認識結果を選択して出力するための多言語ASR処理部80と、バッファ70に記憶された音声データのうち、VAD102からの音声区間を示す情報により特定される位置の音声データを読み出してLID78及び多言語ASR処理部80に与えるための制御部74と、多言語ASR処理部80の出力する音声認識結果を受け、LID78によりLID判別結果が出力されたことに応答して、多言語ASR処理部80からの音声認識結果を出力し表示54を行ったり、自動翻訳装置に出力したりするための結果表示制御部82とを含む。なおここでいう「発話区切り」とは、単なる1発話の終了を示すというだけのものではなく、発話者が交代する可能性があることまで前提とした発話の区切りのことをいう。したがって、発話区切りが検出されたことを契機として、音声データの入力先であるASRスレッド(後述)が切り替えられる。発話の言語の識別処理も一旦停止された上で次の発話に対して再開される。
【0021】
発話区間検出部72は、バッファ70から読み出した音声データに対して、発話区間を精度高く認識するための所定の前処理を行うための前処理部100と、前処理部100により前処理された音声データに基づいて音声区間の開始時刻及び終了時刻を検出して発話区間検出信号を出力するためのVAD102とを含む。
【0022】
(2) ハードウェア構成
図2は、図1に示す多言語ライブ音声認識装置50を実現するためのコンピュータの外観を示す。図3は、図2に示すコンピュータのハードウェアをブロック図形式で示す。
【0023】
図2を参照して、この多言語ライブ音声認識装置50、DVD(Digital Versatile Disc)ドライブ182、及びUSB(Universal Serial Bus)メモリポート186を有するコンピュータ150と、いずれもコンピュータ150に接続された、ユーザと対話するためのキーボード154、マウス156、及びモニタ152とを含む。もちろんこれらはユーザ対話が必要となったときのための構成の一例であって、ユーザ対話に利用できる一般のハードウェア及びソフトウェア(例えばタッチパネル、ポインティングデバイス一般)であればどのようなものも利用できる。
【0024】
図3を参照して、コンピュータ150は、DVDドライブ182及びUSBメモリポート186に加えて、CPU(Central Processing Unit)170と、GPU(Graphics Processing Unit)172と、CPU170、GPU172、DVDドライブ182に接続されたバス190と、バス190に接続され、コンピュータ150のブートアッププログラムなどを記憶するROM(Read-Only Memory)176と、バス190に接続され、プログラムを構成する命令、システムプログラム、及び作業データなどを記憶するRAM(Random Access Memory)178と、バス190に接続された不揮発性メモリであるSSD(Solid State Drive)180とを含む。SSD180は、CPU170及びGPU172が実行するプログラム、並びにCPU170及びGPU172が実行するプログラムが使用するデータなどを記憶するためのものである。コンピュータ150はさらに、他端末との通信を可能とするネットワーク166への接続を提供するネットワークI/F(Interface)188とを含む。USBメモリポート186にはUSBメモリ164が着脱可能で、USBメモリ164とコンピュータ150内の各部との通信を提供する。
【0025】
上記実施形態では、図1に示すVAD102、LID78、多言語ASR処理部80の主要部は訓練済モデル、ニューラルネットワーク及びプログラムからなる。
【0026】
このコンピュータ150を、図1に示す多言語ライブ音声認識装置50のバッファ70、制御部74、発話区切検出部76、LID78、多言語ASR処理部80,前処理部100、VAD102及び補正部104として機能させるためのプログラム及びそれらプログラムが使用するパラメータは、DVDドライブ182に装着されるDVD158に記憶され、DVDドライブ182からSSD180に転送される。又は、これらのプログラムはUSBメモリ164に記憶され、USBメモリ164をUSBメモリポート186に装着し、プログラムをSSD180に転送する。又は、このプログラムはネットワーク166を通じてコンピュータ150に送信されSSD180に記憶されてもよい。
【0027】
プログラムは実行のときにRAM178にロードされる。もちろん、キーボード154、モニタ152及びマウス156を用いてソースプログラムを入力し、コンパイルした後のオブジェクトプログラムをSSD180に格納してもよい。スクリプト言語の場合には、キーボード154などを用いて入力したスクリプトをSSD180に格納してもよい。仮想マシン上で動作するプログラムの場合には、仮想マシンとして機能するプログラムを予めコンピュータ150にインストールしておく必要がある。ただし、複数のASRスレッドによる推論には大量の計算が伴うため、スクリプト言語ではなくコンピュータのネイティブなコードからなるオブジェクトプログラムとして本発明の実施形態の各部を実現する方が好ましい。
【0028】
CPU170は、その内部のプログラムカウンタと呼ばれるレジスタ(図示せず)により示されるアドレスに従ってRAM178からプログラムを読み出して命令を解釈する。CPU170はさらに、命令の実行に必要なデータを命令により指定されるアドレスに従ってRAM178、SSD180又はそれ以外の機器から読み出して命令により指定される処理を実行する。CPU170は、実行結果のデータを、RAM178、SSD180、CPU170内のレジスタなど、プログラムにより指定されるアドレスに格納する。このとき、プログラムカウンタの値もプログラムに従って動作するCPU170により更新される。コンピュータプログラムは、DVD158から、USBメモリ164から、又はネットワークを介して、RAM178に直接にロードしてもよい。なお、CPU170が実行するプログラムの中で、一部のタスク(主として並列実行可能な数値計算)については、プログラムに含まれる命令により、又はCPU170による命令実行時の解析結果に従って、GPU172により実行される。
【0029】
コンピュータ150により上記した実施形態に係る各部の機能を実現するプログラムは、それら機能を実現するようコンピュータ150を動作させるように記述され配列された複数の命令を含む。この命令を実行するのに必要な基本的機能のいくつかはコンピュータ150上で動作するオペレーティングシステム若しくはサードパーティのプログラム、又はコンピュータ150にインストールされる各種ツールキットのモジュールにより提供され、実行時にダイナミックリンクによりオブジェクトプログラムにリンクされる。したがって、このプログラムはこの実施形態のシステム及び方法を実現するのに必要な機能全てを必ずしも含まなくてよい。このプログラムは、命令の中で、所望の結果が得られるように制御されたやり方で適切な機能又は「プログラミング・ツール・キット」の機能を呼出すことにより、上記した各装置及びその構成要素としての動作を実行する命令のみを含んでいればよい。そのためのコンピュータ150の動作方法は周知であるので、ここでは繰返さない。
【0030】
なお、GPU172は並列処理を行うことが可能であり、ニューラルネットワークによる処理に伴う多量の計算を同時並列的又はパイプライン的に実行できる。例えばプログラムのコンパイル時にプログラム中で発見された並列的計算要素、又はプログラムの実行時に発見された並列的計算要素は、随時、CPU170からGPU172に対して発行され、実行され、その結果が直接に、又はRAM178の所定アドレスを介してCPU170に返され、プログラム中の所定の変数に代入される。
【0031】
(3) 処理の概略
ア. 発話区間の検出
図4を参照して、前処理部100、VAD102及び補正部104が行う前処理、発話区間の検出、及び検出された発話区間の補正処理について説明する。
【0032】
図4(A)に示すように、入力音声が発話200及び202を持つものとする。図4(A)及び後続する同種の各グラフにおいて、縦線は発話の1秒ごとの区切りを示す。すなわち図4(A)には、連続する5つの期間210、212、214、216及び218が示されており、これら期間はいずれも1秒の長さを持つ。ただし対象とする期間は1秒に限らず、これより長くても短くてもよい。図4(A)によれば、発話200の先頭が例えば0秒であるものとすると、発話200は1.3秒程度の期間だけ継続している。発話202は1.8秒頃から開始し、4.3秒程度まで継続している。
【0033】
図4(B)に示すように、発話200のうち、期間210には1秒分の有音部分220が存在している。この実施形態では、処理の開始後の先頭の発話区間検出を行う場合図4(C)に示すように、その期間の音声信号の先頭に0.1秒分の無音部分222を付加して発話区間検出の対象とする。すなわち図4(C)に示す例では、有音部分220の先頭に無音部分222が付加されて発話区間検出処理が行われる。このように先頭に0.1秒分の無音部分をつけることで有音区間の検出の精度が高くなるという効果が得られる。ただしこの付加部分の長さは0.1秒に限るわけではなく、これより長くてもよいし、多少短くてもよい。
【0034】
続いて、図4(D)に示すように、入力音声に対する期間212の処理では、この期間の音声信号230が発話区間検出の対象となる。音声信号230は有音部分232(発話200の末尾)と有音部分234(発話202の先頭)、及びその間の無音部分を含む。この実施形態では、発話区間検出処理の2番目以降の期間、すなわち期間212以後では、発話区間検出の対象となる期間の音声信号、図4(D)の場合には音声信号230の先頭に、直前の期間(すなわち期間210の後半の音声信号のうち、後半の0.5秒分の音声信号236(この例では音声信号236は有音区間の一部である。))を付加し、さらにその前に無音部分238を付加する。すなわち、2回目の発話区間検出は、音声信号230、音声信号236、及び無音部分238を連結した音声信号となる。ただし、対象区間の直前に付加する前区間の音声信号は対象区間の1/2に相当する値に限定されない。より短くてもよいしより長くてもよい。短ければ後述するレイテンシは短くなる。しかし有音区間の検出精度は少し下がることが予想される。長ければ有音区間の検出精度は高くなるがレイテンシは長くなる。
【0035】
以後、同様の処理が行われる。すなわち、図4(E)を参照して、期間214に対する処理では、音声信号のうち期間214の部分である音声信号240(発話202のうち期間214内の部分)と、直前の期間212の音声信号230のうち、後半の0.5秒分である付加区間242と、その直前に付加される無音部分244とが処理対象となる。図4(F)を参照して、期間216に対する処理では、音声信号のうち期間216の部分(発話202の期間216内の音声信号250)と、直前の音声信号240のうち、後半の0.5秒分である付加区間252と、さらにその直前に付加される無音部分254とが処理対象となる。図4(G)を参照して、期間218に対する処理では、音声信号のうち期間218の部分(発話202の末尾と後続する無音部分からなる音声信号260)と、直前の期間216における音声信号250の後半の0.5秒分である付加区間262と、さらにその直前に付加される無音部分264とを含む。
【0036】
すなわちこの実施形態では、1回目の処理を除いてVAD前に、音声信号の中で発話区間検出の対象となる期間だけではなく、直前の期間の音声信号の後半部分と、一定音の無音部分とを付加する。そしてその音声信号をVADに供する。後述するようにこうすることで短いレイテンシで発話区間を精度高く検出できるようになる。1回目には直前の対象区間が存在しないので、対象区間に無音区間のみを付加して処理対象とする。
【0037】
この実施形態では、直前の処理対象の音声信号のうち、後半の0.5秒分を処理対象の音声信号の先頭に付加する。しかしこれはこの発明を限定しない。付加される音声信号の長さは一定である必要はない。さらに先頭に付加される無音部分の長さも一定である必要もない。ただし、実装の容易さに鑑みると、この実施形態のようにこれらの長さを一定とすることが望ましい。また付加される音声信号の長さも0.5秒に限定されるわけではない。ここで、付加される音声信号が0秒より長ければ、何も付加しない場合より精度が向上することが見込めるが、0.5秒より長くても精度の向上には限度があると考えられる。さらに対象となる音声によってもこの長さは変化すると考えられる。したがって、付加される音声信号の長さは0秒より大きく0.5秒以下、望ましくは0.1秒より大きく0.45秒以下、さらに望ましくは0.2秒より大きく0.4秒以下とすることが望ましい。また、先頭に付加される無音部分の長さも0.1秒には限定されず、それより大きくても小さくてもよい。ただし付加される無音部分は0秒より大きくする必要がある。無音部分の長さがあまりに長くなるとレイテンシが大きくなるため、0.2秒より長くすることは望ましくない。したがって先頭に付加される無音部分は、0秒より長く0.2秒以下、望ましくは0.05秒より長く0.15秒以下とすることが望ましい。また付加される無音部分は、直前の音声信号のうち対象区間の先頭に付加される部分の長さより短いことが望ましい。なおこの前処理については後述する。
【0038】
こうして期間210及び212及びそれ以後の各期間の音声信号に対して前処理を行った上で有音区間の検出を行う。この有音区間の検出処理自体は既存の方法のいずれを用いてもよい。
【0039】
以上のように前処理をした音声信号に対する有音区間の検出を行った場合、本来の対象区間に含まれる有音区間より長い有音区間が検出される可能性がある。したがってLIDを行うに先立ち、余分に検出された有音区間を削除する必要がある。その方法について図5を参照して説明する。
【0040】
図5(A)は図4(A)に示した音声信号と同じ音声信号の期間212から216を示す。以下、期間214及び216に関する発話区間の補正処理について説明する。図5(B)及び図5(C)を参照して、期間214での有音区間の検出対象は、音声信号の期間214の部分(音声信号240)である。前述したとおり、音声信号240における有音区間の検出のための前処理として、期間212における音声信号230の付加区間242を音声信号240の先頭に付加する。さらにその直前には無音部分244を付加して有音区間の検出を行う。さらに図5(D)を参照して、期間216における音声信号250については、音声信号240の後半部分である付加区間252を付加し、さらにその前に無音部分254を付加して有音区間の検出を行う。したがって、期間214の場合、図5(F)に示されるように、検出される有音部分300は、音声信号240に対応する有音部分302に加え、期間212の末尾の有音部分234(図5(B))に対応する有音部分304を含むことがある。補正では、1秒前の音声信号に対する処理において有音部分234として検出され既に制御部74及び発話区切検出部76に送信済であれば、有音部分304を送信せず、図5(G)に示すように有音部分302のみを制御部74及び発話区切検出部76に送信する。有音部分304が1秒前の音声信号に対する処理において検出されておらず、制御部74及び発話区切検出部76に送信されていなければ、有音部分304と有音部分302とが制御部74及び発話区切検出部76に送信される。
【0041】
同様に、期間216の場合、図5(H)に示すように、検出される有音部分310は、音声信号250に含まれる有音部分312だけでなく、期間214の末尾の有音部分314も含む。したがって、この有音部分314についても有音部分304と同様の処理を行う。すなわち、1秒前の処理で有音部分314が検出され制御部74及び発話区切検出部76に送信されていれば、補正では、図5(I)に示すように、有音部分310から有音部分314を削除して有音部分312のみとする。1秒前の処理で有音部分314が制御部74及び発話区切検出部76に送信されていなければ、有音部分314が有音部分312とともに制御部74及び発話区切検出部76に送信される。この例では、図5(G)に示すように、有音部分314に相当する部分が有音部分として検出され送信済である。したがって、有音部分314は削除され、有音部分312のみが送信される。
【0042】
この補正を行うためのプログラム構成については後述する。
【0043】
イ. LIDによる処理
図6を参照して、この実施形態における言語識別処理(LID)について説明する。ここでも、図6(A)に示すように、期間210、212、214及び216を例とする。
【0044】
図6(A)に示すような処理をした結果、図6(B)に示すように、発話200及び202に対応する有音部分350及び352が検出される。この実施形態では、有音部分350が検出されると、それに対応する発話200の音声信号のうち、先頭から所定の長さ、例えば1.5秒及び音声信号の終端のいずれかが検出されると、先頭からそこまでの音声信号が図1に示すLID78に投入される。図6(A)に示す例では発話200は1.5秒より短い。したがって発話200に対応する音声信号360(図6(C))の終端が検出されるとその全体がLID78に投入される。言語の判別自体はそれほど時間を必要としない。したがって、音声信号360がLID78に投入された後、わずかな時間遅れで言語の判別が行われ、図6(G)に示すように発話200の開始時を基準とすると約1.5秒経過した時点でLID判別結果362が得られる。
【0045】
一方、発話200に続く無音区間の後、発話202に対応する有音部分352として検出が開始されると、図6(D)に示されるように、発話202に対応する音声信号のうち、先頭から1.5秒又は音声信号の終端のいずれか早く検出されるまでの音声信号370がLID78に投入される。この例では発話202に対応する音声信号の先頭から1.5秒分が、LID78に投入される。この結果、発話200の開始時を基準とすると約3.5秒が経過した時点でLID判別結果372が得られる。
【0046】
さらに、図6(E)を参照して、発話202の先頭から0.75秒が経過した時(説明を簡潔にするために「0.75秒経過時」という。以下同様)にまで発話202が終端に達していないと、その0.75秒経過時から1.5秒及び音声信号の終端までのいずれか早い方が検出されると、0.75秒経過時からそこまでの音声信号の全体がLID78に投入される。この例では0.75秒経過時から1.5秒経過した時点では発話202の終端には達していない。したがって0.75秒経過時から2.25秒経過時までの音声信号380がLID78に投入される。その結果、発話200の開始時刻を基準として約4.2秒経過したときに図6(G)に示すようにLID判別結果382が得られる。最後に、図6(F)を参照して、1.5秒経過時から1.5秒又は発話202の終端までのいずれか早いほうが検出されると、1.5秒経過時からその時点(この例では発話202の終端)までの音声信号390がLID78に投入される。その結果、発話200の開始時を基準として4.3秒が経過したときに図6(G)に示すようにLID判別結果392が得られる。
【0047】
このようにこの実施形態では、発話区間のうち先頭から初めて一定時間間隔(この例では0.75秒間隔)を起点として、その時点から所定時間(この例では1.5秒)又は発話区間の終端までのいずれか早く方が検出されるまでの音声信号をLID78に投入し、その結果を得る。その結果、発話が1.5秒程度かそれより短いときにはその発話の終了とほぼ同時にその発話の言語の判別結果が得られ、1.5秒より長いときには、その発話の先頭から1.7秒程度経過したときに最初の言語の判別結果が得られ、その後は0.75秒程度おきに、判別結果が得られる。ただし発話の終端ではより短い間隔で判別結果が得られることが多い。
【0048】
このように1発話について言語の判別結果が複数個得られるため、判別結果が互いに矛盾する場合があり得る。そうしたときでも言語を判別する必要がある。そのためにはたとえば判別結果の多数決により最終結果を決定したり、ニューラルネットワークの出力として判別結果とともに得られるスコア(又は確率)の最も高いもの、又は同種のものが複数個ある場合にはその平均が最も高いものを最終結果として決定したりしてもよい。この実施形態では各発話に対して言語ごとに得られるスコアの平均スコアが最も高い言語を最終結果とする。具体的な例については図7を参照して後述する。
【0049】
ウ. 音声認識装置の切替
前述したように、図1に示す多言語ASR処理部80は、複数の言語に対する音声認識処理を並列で実行可能である。しかしそれだけではなく、多言語ASR処理部80は、各言語についても複数の音声認識処理を実行可能であり、それらを適宜切り替えて動作させる。なぜなら、音声認識処理は多量の計算を必要として時間を要するため、ある発話の音声認識を実行中に、続く発話についても音声認識を並列で実行する必要が生じる可能性があるためである。特にこの実施形態では、ある発話について、複数の音声認識処理部がそれぞれ別の言語とみなして音声認識処理を実行する。音声認識処理では、正しい言語での音声認識でもかなりの演算処理が必要とされ、誤った言語での音声認識ではさらに演算量が増加する。そのため、各言語の音声認識処理部が限定された数しかないと、必要なときに必要な音声認識処理部のいずれかがビジーとなり音声認識処理が実行できなくなる可能性がある。そこでこの実施形態では、音声認識処理部として各言語について3個の音声認識処理部を設け、これらの中でアイドリング中のものを選択して音声認識処理を実行させる。
【0050】
例えば、図7(A)に示す発話200及び202に対して図7(B)に示す有音部分350及び352が検出されたものとする。図6を用いて説明したように、発話200の終了後にLID判別結果362が得られる。発話202については、LID判別結果372、382及び392がこの順序で得られる。発話200と発話202とが同じ言語の発話であることは一般的に全く保証されない。ここにおいて示す例でも図7(C)に示すように発話200に対するLID判別結果362は日本語(JA)であり、発話202に対するLID判別結果372、382及び392はそれぞれ日本語、英語(EN)、英語である。当該発話区間の既に処理をした部分の平均スコアにより発話202の言語は最終的に英語と判別されるが、いずれにせよ発話200に対する言語の判別結果と発話202に対する言語の判別結果との関係は不確実である。したがって、発話200に対する音声認識と発話202に対する音声認識とで、その言語を適切に切り替える必要がある。この実施形態では、図7(D)に示すように、前の発話(例えば発話200)の終端が検出された後、0.5秒の無音区間422が検出された時点を発話の切替時点である発話区切り420とみなし、この前後で使用する音声認識処理部を各言語について切り替える。したがって発話200及び202の言語が仮に同じ言語であっても、間に0.5秒以上の無音区間が存在すれば音声認識処理部は切り替えられる。こうすることで、例えば発話200に対する音声認識処理に時間がかかったとしても、有音部分352が検出されると同時に後続する発話202に対する各言語での音声認識処理を開始できるという効果がある。なお、発話後に0.5秒未満の無音区間を挟んで次の発話が開始されたときは、これら2つの発話は一つの発話とみなし、各言語について同一の音声認識処理部が音声認識処理を行う。ここで使用する音声認識処理は、音声認識の結果を逐次的に出力するものである。
【0051】
なお、図7(C)に示すような例では、発話202の言語の判別結果としてLID判別結果372、382及び392の3つが得られる。LID判別結果372が得られた時点ではLID判別結果382及び392はまだ得られていない。したがって、例えばLID判別結果372により表される言語に対応する音声認識結果が出力される。仮にLID判別結果382が得られたときにその結果が他の言語であり、かつそのスコアがLID判別結果372のスコアより高い場合には、発話202の言語が変化することになる。そうした場合には、LID判別結果372を使用して選択した音声認識結果から、LID判別結果382を使用して選択した音声認識結果に途中で出力(画面表示の場合には表示されるテキスト)の言語が変化することになる。LID判別結果392が得られたときも同様である。
【0052】
より具体的には、言語の判別は以下のようにして行われる。例えば判別対象の言語が10言語であるものとする。図7(C)を参照して、発話202に対するLID判別結果372が得られた時点では、10言語の各々に対してスコアが1個ずつ得られる。1言語に対するスコアが1個だけなので、ここではそのスコアが最大の言語(例えば日本語(JA))が選択される。その結果、LID判別結果372のときにそれまでの日本語の途中の音声認識結果が得られていれば、LID判別結果372の時点で日本語の音声認識結果が出力される。LID判別結果372の時点で日本語の音声認識結果が得られていなければ、得られた時点でその音声認識結果が出力される。
【0053】
一方、LID判別結果382が得られた時点では、各言語について、LID判別結果372で得られたスコアとLID判別結果382で得られたスコアという2個のスコアが存在する。この実施形態では、各言語についてこのように得られた2個のスコアについて言語ごとに平均をとり、その値が最も高い言語を選択する。例えば、LID判別結果372の時点では日本語のスコアが最も高かったとしても、LID判別結果382の時点で算出された平均スコアでは英語ENが最も高ければ、発話202に対する言語の識別結果は日本語から英語に切り替わる。したがって、LID判別結果382が得られたときに、音声認識結果は日本語から英語に切り替わる。
【0054】
発話202に対する最終的なLID判別結果392の時点でも同様である。LID判別結果392が得られた時点では、各言語について3個のスコアが得られる。各言語について、それら3個のスコアの平均値が算出される。そして平均スコアが最も高い言語が選択される。図7(C)に示すようにLID判別結果372、382、及び392により各言語について得られた平均スコアによる判定結果も英語であるとすれば、英語の音声認識結果が引き続いて出力され、途中の音声認識結果が得られるごとに出力が更新される。
【0055】
(4) プログラム構成
ア. 全体制御構造
以上に説明したように機能するよう、コンピュータを動作させるためのコンピュータプログラムの制御構造を以下に説明する。図8にその全体構成を示す。なお、以下に示すのは上記した多言語ライブ音声認識装置50の全体をコンピュータハードウェア及びコンピュータプログラムにより実現するものだが、これらの一部又は全体を専用のハードウェアで実現することも可能である。また汎用コンピュータを以下に説明する制御構造に従って動作するようプログラミングすることにより、汎用コンピュータが専用の多言語ライブ音声認識装置として機能する。
【0056】
図8を参照して、このプログラムは、VADスレッド、LIDスレッド及び複数言語の各々について複数設けられる音声認識スレッドの各々を起動するステップ450と、これら各スレッドとのコネクションを確立するステップ452と、音声認識の対象となる音声信号の入力を開始するステップ454とを含む。ここでいうスレッドとは、1つのプロセス配下において、アドレス空間を共有して動作する複数のプログラムのことをいう。
【0057】
このプログラムはさらに、入力された音声信号をバッファに蓄積し、所定量(この実施形態では1秒分)の音声信号がバッファに蓄積されるたびに、その音声信号に図4を参照して前述したような前処理を行ってVADスレッドに出力する処理を実行するステップ456と、ステップ456に続き、VADの出力から図5を参照して前述したような有音区間の補正処理を行って有音区間の判別出力を得るステップ458と、ステップ458により得られた有音区間の判別出力に基づいて、有音区間の終了後、0.5秒以上の無音区間があればそれを発話区切りとして検出するステップ460と、ステップ460における処理の結果に応じて制御の流れを分岐させるステップ462と、ステップ462の判定が肯定のときに、各言語のASRについて、その中でアイドリング中のスレッドを次の有音区間の音声信号の音声認識用に切り替えるステップ466とを含む。
【0058】
このプログラムはさらに、ステップ462の判定が否定のとき、及びステップ462の判定が肯定でかつステップ466の処理が終了したときに実行され、多言語ASR処理部80の中で切り替えられたASRスレッドの各々、及びLID78に音声データを提供するステップ468と、ステップ468の後、ASRの各スレッド及びLID78でそれぞれの処理を実行するステップ470と、LID78による言語識別の結果が得られるまで待機するステップ472と、言語識別の結果が得られた後、各言語のASRの各スレッドの出力のうち、LID78により識別された言語のASRのスレッドによる音声認識結果をそれまでの表示に変えて表示して制御をステップ456に戻すステップ474とを含む。
【0059】
イ. VAD
(ア) 前処理
図9は、VADのうちの前処理を実現するプログラムの制御構造を示すフローチャートである。図9を参照して、このプログラムは、変数iにゼロを代入するステップ500と、入力データを読みバッファ[i]に蓄積するステップ502と、ステップ502の結果、バッファに蓄積された音声データが1秒分になるまでステップ502を繰り返すステップ504とを含む。この実施形態では、バッファとしてバッファ[0]及びバッファ[1]の2つを少なくとも準備し、iの値が偶数のとき(i%2=0)のときにはバッファ[0]に、iの値が奇数のとき(i%2=1)のときにはバッファ[1]に、それぞれ音声データを蓄積する。もちろんこのような方法ではなく他の方法で音声データの蓄積を行ってもよい。例えばリングバッファに音声データを蓄積し、そのうちの1秒分の音声データをその開始位置から読み出すようにしてもよい。音声データがリングバッファの容量を超えるときには、リングバッファ内に蓄積されている音声データを上書きしていけばよい。なお記号「%」はモジュロ演算子を表す。
【0060】
このプログラムはさらに、ステップ504の判定が肯定になったこと、すなわち1秒分の音声データがバッファに蓄積されたことに応答して実行され、その音声データの先頭に0.1秒分の無音区間を付加するステップ506と、ステップ506により処理された音声データをVADに提供するステップ508と、変数iの値に1を加算するステップ510と、入力される音声データを読み、バッファ[i%2]に蓄積するステップ512と、バッファ[i%2]に1秒分の音声データが蓄積されるまでステップ512を繰り返すステップ514とを含む。ステップ512及び514は、ステップ502及び504の処理と実質的に同じものである。ただしステップ502ではバッファ[0]にデータが蓄積されるのに対し、ステップ512では変数iの値が奇数か偶数かによりバッファ[1]とバッファ[0]とが切り替えて使用される。
【0061】
このプログラムはさらに、ステップ514においてバッファ[i%2]に1秒分の音声データが蓄積されたと判定されたときに、バッファ[(i-1)%2]の後半の0.5秒分の音声データをバッファ[i%2]の音声データの先頭に付加するステップ516と、さらにその先頭にステップ506と同様に0.1秒分の無音区間を付加するステップ518と、ステップ516及び518において処理されたバッファ[i%2]の音声データをVADに提供し、制御をステップ510に戻すステップ520とを含む。VADは、この音声データが提供されたことに応答して、音声データの先頭から有音区間の検出を行う。有音区間は[開始時刻、終了時刻]のペアとしてVADから出力される。
【0062】
(イ) 補正
VADの出力は、図9により示されるような前処理を行った後の音声データに対するものである。その音声データには、最初の1秒分の音声データを除き、本来の対象区間の音声データだけではなく、直前の対象区間の後半の0.5秒分の音声データが付されている。さらにその音声データの先頭には0.1秒の無音区間が付されている。したがって、本来の対象区間の有音区間以外の有音区間がVADの出力に含まれている可能性がある。そのような区間は、既にその有音区間が処理用のバッファに送信済なら、以下に述べる補正処理においてVADの出力から取り除かれ、そうでない場合はそのまま制御部74及び発話区切検出部76に送信される。
【0063】
図10を参照して、このプログラムは、VAD出力を受けるステップ550と、ステップ550で受けたVAD出力により示される有音区間が、対象となる1秒より前の部分(0.1秒の無音部分)にあればその部分を削除するステップ552と、ステップ552の処理が終了した後のVADによる有音区間の先頭時刻及び終了時刻のペアを出力するステップ554とを含む。具体的にはステップ552では、付加された0.1秒の無音区間内に仮に有音区間があればそれを削除する。付加された無音区間から1秒の対象区間まで続く有音区間があれば、有音区間の開始時刻を対象の1秒の先頭に修正する。そして、1秒の対象区間内に0.5秒未満の無音区間があれば、それを有音区間とみなす。
【0064】
このプログラムはさらに、ステップ554の後、ステップ550と同様にVAD出力を受けるステップ556と、ステップ556で受けたVAD出力を補正するステップ558と、ステップ558により補正されたVADによる有音区間の検出データを出力して制御をステップ556に戻すステップ560とを含む。ステップ558では、対象となる1秒の区間前に付加された直前の0.5秒分の音声データで検出された有音区間のうち、前回の処理で既に制御部74及び発話区切検出部76に送信済のものを削除する。さらにその直前に付加された0.1秒分の無音区間の間に検出された有音区間も削除する。
【0065】
このような補正を行うことにより、音声データの1秒ずつの区間の各々について、有音区間を検出できる。
【0066】
ウ. ASRの切替
この実施形態では、音声認識の対象となる各言語について複数のASRスレッドを起動する。それらASRスレッドを発話ごとに切り替えて音声認識を行うことで、1つの発話に対する音声認識処理が長引いても、次の発話の音声認識を並列して実行できる。特に音声データの言語に対応しない言語の音声認識の場合には、処理が長くなることが予測される。したがって、この実施形態のように複数の言語の各々について複数のASRスレッドを準備しておき、発話の切れ目で切り替えることが望ましい。この実施形態では、有音区間の後、0.5秒以上の無音区間がVADで検出されたときに、その時点でASRスレッドを切り替え、次の音声データからは切替後のASRスレッドに与える。
【0067】
図11を参照して、ASRの切替のためのプログラムは、処理の対象となり得る言語の各々に対して以下に説明するステップ602を実行するステップ600を含む。
【0068】
ステップ602は、その言語について前回選択したASRスレッドの次のASRスレッドを選択するステップ610と、選択されたASRがアイドリング中か否かを判定し、判定に従って制御の流れを分岐させるステップ612と、ステップ612の判定が否定のときに次のASRスレッドの選択を試みるステップ616と、選択対象となるスレッドの中に空いているスレッドがあるか否かに従って制御の流れを分岐させるステップ618と、ステップ618の判定が否定のとき、すなわち空いているスレッドがこれ以上存在しないときに、新しいスレッドを生成するステップ620と、この新たに生成したASRスレッドに音声データの入力先を切り替えるステップ621とを含む。ステップ618の判定が肯定のときにはそのスレッドを選択して制御をステップ612に戻す。ステップ621の後には、制御は後述するステップ622に進む。
【0069】
このプログラムはさらに、ステップ612の判定が肯定のときには選択したASRスレッドに音声データの入力先を切り替えるステップ614と、ステップ614の後、及びステップ620の後に実行され、切り替えたASRスレッドのスレッドIDをそのASRスレッドに入力している音声データの発話と関係付けて記憶するステップ622と、ステップ622で切り替えた先のASRスレッドの状態をビジーに変更するステップ624とを含む。
【0070】
ある言語についてのASRスレッドの数は少なくとも2個、望ましくは3個以上起動することが望ましい。ASRスレッドが少なくとも2個あればそれら2個のASRスレッドを交互に動作させることができる。この場合、先行する2つの発話に対する音声認識が2個のASRスレッドで行われているときに次の発話の音声認識を開始する必要が生じたときには、新たなASRスレッドが生成され、そのASRスレッドが新たな音声データに対する音声認識に割り当てられる。3個以上のASRスレッドがビジーになった場合には、さらに追加のスレッドを起動すればよい。
【0071】
なお、各言語で起動するASRスレッドの数の上限、及び対象となる言語の数の上限はこのプログラムが動作するコンピュータの性能にも依存するので、一概に限定はできない。
【0072】
エ. LIDの制御
この実施形態では、LIDは以下のような制御に従って行われる。LIDの処理自体は既に述べたように訓練済のニューラルネットワークからなる言語識別モデルにより行われる。ここでは、このニューラルネットワークに、いつ、どのような音声データを入力してLIDの結果を得るかを実現するプログラムの制御構造を説明する。
【0073】
図12を参照して、このプログラムは、処理対象となる有音区間が検出されるまで待機し、有音区間が検出されると有音区間のデータをメモリから読み出すステップ700と、音声データの読み出し開始位置をステップ700で読み出した音声データの先頭に設定するステップ702と、読み出し開始位置から1.5秒と有音区間の末尾までの時間とのいずれか短い方の期間の音声データを読み出すステップ704と、読み出した音声データを言語識別モデルに投入するステップ706と、読み出し開始位置を0.7秒進めるステップ708と、ステップ708で設定された読み出し開始位置が有音区間の終了時刻より前か否かを判定し、判定が肯定なら制御をステップ704に戻すステップ710と、ステップ710の判定が否定のとき、すなわち処理中の有音区間の末尾まで処理が終わったときに、処理対象を次の有音区間に進めて制御の流れをステップ700に戻すステップ712とを含む。
【0074】
オ. 表示の更新
音声認識結果は以下のような制御構造を持つプログラムにより表示される。図13を参照して、このプログラムは、LIDによる言語識別結果の出力があったか否かに従って制御の流れを分岐させるステップ750と、ステップ750の判定が肯定のときに、LIDの出力により示される言語の言語IDを、現在の言語を表す情報としてメモリに記憶するステップ752と、ステップ752の後、及びステップ750の判定が否定のときの双方において、現在の発話に対応して動作している複数のASRスレッドの中で、現在の言語IDに対応するものから出力されている認識結果を表示して制御をステップ750に戻すステップ754とを含む。
【0075】
2. 動作
(1) 起動
図8を参照して、ステップ450において、VADスレッド、LIDスレッド及び複数言語の各々について複数設けられる音声認識スレッドの各々が起動される。これらは図1に示す発話区間検出部72、LID78及び多言語ASR処理部80にそれぞれ相当する。ステップ452において、メインルーチン(図1の制御部74に相当)が、これら各スレッドとのコネクションを確立する。
【0076】
ステップ454において音声データである入力52が与えられると、バッファ70がその音声データの蓄積を開始する。ステップ456では図9に示す処理が実行される。すなわち、バッファ[0]に音声データを蓄積(ステップ502)する。
【0077】
(2) 最初の入力に対する前処理
最初の1秒分の音声データが蓄積されると(ステップ504の判定が肯定)、その音声データの先頭に0.1秒分の無音区間を付加し(ステップ506)、その音声データをVADに投入する(ステップ508)。VAD102はこの入力に応答して、有音区間を表す情報(開始時刻及び終了時刻のペア)の出力を開始する。
【0078】
ステップ510ではバッファ[1]に音声データの蓄積先を変更する。以下、2番目以降の入力に対する処理が実行される。
【0079】
(3) 2番目以降の入力に対する前処理
2番目以降の入力に対しては、ステップ512でバッファ[0]又はバッファ[1]に入力された音声データが蓄積される。1秒分の音声データが蓄積されると(ステップ514の判定が肯定)、ステップ516において、現在蓄積に使用されているバッファ(バッファ[i%2])と別のバッファ(バッファ[(i-1)%2]に蓄積されている音声データのうち後半の0.5秒分の音声データをバッファ[i%2]に蓄積されている音声データの先頭に付加する。ステップ518でさらにその先頭に0.1秒分の無音区間を付加する。ステップ520でこの音声データをVADに投入する。
【0080】
以後、音声データの入力がある限りこの動作を繰り返す。
【0081】
(4)VAD出力の補正
図1に示すVAD102は、前処理部100により前処理がされた音声データの入力を受けて、その音声データの中の有音区間を示す[開始時刻、終了時刻]のペアの出力を行う。この出力には、前処理で付加された無音区間及び直前の期間の音声データの後ろ半分で検出された有音区間があり得る。補正部104は図10に制御構造を示すプログラムを実行することにより、この有音区間のうち、既に制御部74及び発話区切検出部76に送信済の有音区間があればそれを削除する。
【0082】
(5)LIDの制御及びASRの切替
図1を参照して、制御部74は、VAD102により検知された有音区間の音声データをLID78と多言語ASR処理部80との双方に与える。LID78は、図12に示す制御構造を持つプログラムにより制御され、入力された有音区間の各々について、1.5秒の長さでかつ0.7秒のシフト長で音声データを読み出し、言語識別モデルに投入する。この処理は各有音区間について、有音区間の終了まで行われる。なおここで言語識別モデルに投入される音声の長さは、1.5秒が最大であり、それより前に発話が終了するときはその発話の末尾までの長さとなる。
【0083】
言語識別モデルは、上記した1.5秒の音声データに対する言語識別処理を行い、結果が得られるとそれを出力する。言語識別モデルは、さらに有音区間の入力があれば、その音声データに対する処理を開始する。こうした処理が繰り返されるため、図6に示すように、各有音区間について少なくとも1回、有音区間が長ければ2回以上、言語識別の結果が出力される。多言語ASR処理部80はこの言語識別の結果を受けて、言語識別の結果に対応する言語の音声認識結果を表示する。
【0084】
多言語ASR処理部80は以下のように動作する。この実施形態では、ASRスレッドは、各言語について3個が生成されている。制御部74は、音声データを多言語ASR処理部80内の各言語のASR処理部(ASRスレッドに相当)に入力する。プログラムの開始時にはそれらの中のいずれかのASRスレッドが音声データの入力先として選択されている。つまり、最初の有音区間は、各言語について入力先として選択されたASRスレッドにより処理される。この時点では音声が表す言語は不明である。音声データを受けたASRスレッドは、それぞれその音声データが自己の担当している言語のものとして音声認識を行う。言語識別の結果が得られると、多言語ASR処理部80は、複数の言語のASRスレッドの出力の中で、言語識別の結果により特定される言語のためのASRスレッドの出力を選択する。結果表示制御部82は、LID78からLID判別結果が出力されたことに応答して、そのときに多言語ASR処理部80から出力されている音声認識結果を図1の表示54として表示装置に表示したり、又は遠隔のコンピュータにテキストデータとして送信したりする。
【0085】
言語識別の結果は、有音区間が長いと図6(C)から(G)に示すように何回か出力されることがある。ASRスレッドは音声認識結果を逐次的に出力するので、そのたびに出力が更新される。図7(C)の有音部分352に対する言語判別結果のように、複数回の言語識別の結果が互いに異なっている場合には、多数決又は最も信頼度が高い判別結果により選択された言語の音声認識結果が出力される。例えば多数決により言語を決定するときには、図7(C)に示す例では最初に日本語で音声認識結果が表示されるが、途中で英語に切り替わるということになる。
【0086】
図1に示す発話区切検出部76は、有音区間の後に0.5秒の無音区間が検出されると、発話区切りの検出信号を多言語ASR処理部80に与える。多言語ASR処理部80はこの発話区切りの検出信号を受けると、各言語について、音声データの入力先をそれまで稼働していたASRスレッドから、別のアイドリング中のASRスレッドに切り替える。この時点で2つのASRスレッドが稼働している可能性が高い。しかし、先行するASRスレッドは音声認識が完了するとアイドリング中に移行する。このようにして、各言語の複数のASRスレッドにおいて、音声信号の入力先のASRスレッドが発話区切りをトリガーとして切り替えられていく。
【0087】
第2 評価
(1) レイテンシの算出方法
上記実施形態のように、発話をその直後にテキスト化して表示したり自動翻訳に入力したりするためには、発話がされた時刻からその発話が音声認識されテキストに変換されるまでの時間、すなわちレイテンシをできるだけ短くする必要がある。しかし、従来の音声認識システムの評価は、発話単位でのレイテンシ、精度(単語誤り率:WER)、速度(実時間係数:RTF)などによるものであった。こうした評価尺度は音声認識システムの性能の評価尺度として有用だが、連続する複数の発話をそれらの発話と並列に連続的に音声認識する、いわゆるライブ音声認識処理の評価尺度としては不十分なものであった。
【0088】
例えば発話単位でレイテンシを評価する場合、発話長が長ければレイテンシも長くなるため、発話長の影響を除去する必要がある。また発話の音声データとそのトランスクリプションとを事前にアライメントしておき、その音声データに対する音声認識の結果と事前のアライメントとを比較して評価尺度とする場合、誤認識などの影響で計算の誤差が大きくなってしまうという問題がある。
【0089】
ライブ音声認識の場合、低レイテンシが重要な目標である。セグメンテーション、言語識別、話者識別、及び音声認識などに要する時間がいずれもレイテンシに影響し、その影響は複合的である。システムの評価及び各技術の改善などの影響を反映するため、この実施形態では、音声認識の処理中に音声認識エンジンから出力される音声結果の一時出力を利用して、単語ベースでのレイテンシの算出を行う。ここでいう音声結果の一時出力とは、音声認識エンジンが一定時間長の音声信号に対する音声認識を行ったときに外部に出力する一時的な音声認識結果である。
【0090】
例えば、図14を参照して、クライアント800からの音声信号をサーバ802でライブ音声認識する場合を考える。まずライブ音声認識処理の最初に、クライアント800からサーバ802に対してポーズを表すポーズ信号810が送信され、それに引き続きデータ812、814、816及び820が一定時間ごとにサーバ802に送信される。サーバ802はこのデータに対する音声認識を行い、処理対象の音声信号のうち、一定時間長の音声信号に対する音声認識を行うたびに、一時認識結果818、822、826及び834をクライアント800に送信する。図14に示す例ではサーバ802はさらに、認識が終了すると最終認識結果836をクライアント800に送信する。逆にクライアント800からは、データ820に引き続く発話の音声データがデータ828、830及び832としてサーバ802に送信される。ここで提案するレイテンシの計算には、一時認識結果818などの一時認識結果を使用する。
【0091】
なお、サーバ802は、一時認識結果818などの一時認識結果だけではなく、部分認識結果824と呼ばれるものをクライアント800に送信することもある。部分認識結果824とは、ここでは、一時認識結果818などと同様、一時的な認識結果の一種ではあるものの、外部からは制御不可能な内部条件を音声認識エンジンが満たしたときのみ出力される音声認識結果である。
【0092】
この実施形態では、このように音声認識の過程で音声認識エンジンから出力される認識結果を利用してライブ音声認識のレイテンシを測定する。なお以下の手法では、ASRの機能として、単語別の発話時間長が出力されることが前提となっており、これを利用して以下のようにしてレイテンシを算出する。
【0093】
(ア)一時的音声認識結果(一時認識結果)、及び部分音声認識結果で出力された単語の中から、前回の一時認識結果で認識されたものを除く。
【0094】
(イ)それらの単語の発話から認識結果出力までの時間を合計し、単語数で割る。
【0095】
(ウ)上記(イ)で得た値を音声認識の結果出力時間から減じた値をレイテンシとする。
【0096】
(2) 実験による評価
図15を参照して、「please wait here. I’m going to look for a rope or something.」という発話の音声認識を例としてレイテンシの計算方法を説明する。1回目のASR出力は「please wait here.」に対するものであって、先頭に無音区間と末尾の無音区間とを含め、各単語の発声時間はそれぞれ、0.00秒、0.60秒、0.81秒、1.17秒、及び1.35秒であり、音声認識の結果出力時間は3.50秒である。レイテンシの計算には、これらのうち二重下線で示す3個の単語の発話長(0.60秒、0.81秒、1.17秒)を加算し、その値を単語数(3)で割る。得られた値を音声認識の結果出力時間である3.50秒から減算する。その結果、2.64という値が得られる。これが第1の発話に対する音声認識処理の単語ベースのレイテンシである。
【0097】
2回目のASR出力は、ここでは先に挙げた発話の全体に対する音声認識結果である。結果出力時間は4.32秒である。この出力から、1回目に出力された、下線で示す単語を除いて、二重下線で示す残りの9個の単語の発話長を加算して得た値を単語数(9)で除算し、その値(約2.24)を結果出力時間である4.32から減算する。その結果、2.08という値が得られる。これが発話の2文目に対する単語ベースのレイテンシである。
【0098】
なお、ここでは一時的な認識結果のみを用いてレイテンシを計算している。しかし、最終的な認識結果を用いてレイテンシを計算してもよいことはいうまでもない。
【0099】
この方法により算出した方法を用いて評価した、上記実施形態に係るライブ音声認識処理を他の指標と対比して図17に示し、その測定に用いた発話の例を図16に示す。
【0100】
図17に示す表で、上段はASR単体に対する評価を示し、下段はライブ音声認識処理に対する評価を示す。LIDの値は精度を示す。英語、日本語における評価値(4箇所)はいずれもWERである。「レイテンシ」と記載された列の第2行は上記実施形態で測定されたものである。
【0101】
図17から分かるように、ライブ音声認識は、LIDにおいてASR単体を上回る精度を示す。またライブ音声認識では英語の場合も日本語の場合も、ライブ音声認識処理は言語判定の影響がないASR単体よりも若干下回る性能を示した。レイテンシはASR単体に対する評価では測定できず、ライブ処理の場合にのみ測定できる。
【0102】
第3 変形例
上記実施の形態では、各言語について使用するASRスレッドは同じ数であった。しかしこの発明はそのような実施形態には限定されない。言語ごとに異なる数のASRスレッドを生成してもよい。また各スレッドはプログラムの最初に生成している。しかしこれは限定的ではなく、各スレッドが必要となった時点で生成してもよい。例えばある言語で生成したスレッドの全てがビジーとなってしまったときに次の発話の音声認識をする必要が生じたときには、ビジーのスレッドのいずれかの処理を中断させるのではなく、新たなスレッドを生成するようにしてもよい。
【0103】
さらに上記実施の形態では、ライブ音声認識処理の結果は、発話に少し遅れて画面に表示される。しかしこの実施形態に発明が限定されるわけではない。例えば音声認識処理の結果を通信によりリモートのコンピュータに送信してもよいし、ライブの自動翻訳装置に入力して翻訳結果を何らかの形で出力してもよい。例えば複数の会場で得られる、多言語の複数の発話列を1つのサーバの上で動作する複数のプロセスで別々に処理し、結果をそれぞれ複数の言語に翻訳して出力することもできる。言語識別の部分と同じように、複数話者識別のモデルを導入することにより、音声認識結果に、言語のみではなく話者情報の付与もできる。
【0104】
上記実施の形態では、0.5秒以上の無音部分があったときに発話区切りを検出したものとしている。しかしこの発明はそのような実施形態には限定されない。例えば言語識別の結果に基づいて発話の言語の変化を検出したり、話者識別の結果を使用して話者の変化を検出したりしたときに発話区切りを検出したものとしてもよい。
【0105】
上記実施の形態では、単一のコンピュータシステムで、単一のCPUを用いて複数のスレッドを動作させている。しかしこの発明はそのような実施形態には限定されない。複数のコアを持つCPUであれば各コアで別々にスレッドを生成して上記処理を実現できる。さらに、互いに独立した複数のCPUを利用すれば、上記実施形態に係る多言語ライブ音声認識システムを分散システムとしても実現できる。
【0106】
[付記]
上記実施形態の他の局面について以下に付記する。
【0107】
(1)言語識別モデルが出力する情報は、部分区間の音声信号が複数の言語である確率をそれぞれ示す複数のスコアを含み、言語決定手段は、部分区間の各々について、言語識別モデルがスコアを出力したことに応答して、複数の言語のうち、スコアが所定の条件を満足する言語の識別子を出力する条件検証手段を含んでもよい。
【0108】
(2)条件検証手段は、部分区間の各々について言語識別モデルが出力するスコアが最大値となった回数が最も多い言語の識別子を出力してもよい。
【0109】
(3)条件検証手段は、部分区間の各々について言語識別モデルが出力するスコアの平均値が最も高い言語の識別子を出力するようにしてもよい。
【0110】
(4)信号付加手段は、対象区間のうち少なくとも直前の対象区間の末尾の第2の所定長を記憶するための末尾部分記憶手段と、対象区間のうち、最初の対象区間についてはその先頭に第1の所定長の無音区間を付加して出力するための先頭区間処理手段と、対象区間のうち、最初の対象区間より後の対象区間の各々について、当該対象区間の先頭に、末尾部分記憶手段に記憶されている直前の対象区間の末尾の第2の所定長を付加し、さらにその直前に第1の所定長の無音区間を付加して出力するための後続区間処理手段とを含んでもよい。第2の所定長は第1の所定長よりも長く、対象区間の長さよりも短くてもよい。
【0111】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内での全ての変更を含む。
【符号の説明】
【0112】
50 多言語ライブ音声認識装置
70 バッファ
72 発話区間検出部
74 制御部
76 発話区切検出部
78 LID
80 多言語ASR処理部
82 結果表示制御部
100 前処理部
102 VAD
104 補正部
200、202 発話
210、212、214、216、218 期間
220、232、234、300、302、304、310、312、314、350、352 有音部分
222、238、244、254、264 無音部分
230、236、240、250、260、360、370、380、390 音声信号
242、252、262 付加区間
362、372、382、392 LID判別結果
420 発話区切り
422 無音区間
812、814、816、820、828、830、832 データ
818、822、826、834 一時認識結果
824 部分認識結果
836 最終認識結果
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17