JP2015121709A - デコーダ、デコード方法およびプログラム - Google Patents

デコーダ、デコード方法およびプログラム Download PDF

Info

Publication number
JP2015121709A
JP2015121709A JP2013266007A JP2013266007A JP2015121709A JP 2015121709 A JP2015121709 A JP 2015121709A JP 2013266007 A JP2013266007 A JP 2013266007A JP 2013266007 A JP2013266007 A JP 2013266007A JP 2015121709 A JP2015121709 A JP 2015121709A
Authority
JP
Japan
Prior art keywords
node
score
signal
token
decoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013266007A
Other languages
English (en)
Other versions
JP6315980B2 (ja
Inventor
学 永尾
Manabu Nagao
学 永尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013266007A priority Critical patent/JP6315980B2/ja
Priority to US14/574,892 priority patent/US9786272B2/en
Publication of JP2015121709A publication Critical patent/JP2015121709A/ja
Application granted granted Critical
Publication of JP6315980B2 publication Critical patent/JP6315980B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/29Graphical models, e.g. Bayesian networks
    • G06F18/295Markov models or related models, e.g. semi-Markov models; Markov random fields; Networks embedding Markov models
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/14Speech classification or search using statistical models, e.g. Hidden Markov Models [HMMs]
    • G10L15/142Hidden Markov Models [HMMs]
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L2015/081Search algorithms, e.g. Baum-Welch or Viterbi
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L2015/085Methods for reducing search complexity, pruning

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Acoustics & Sound (AREA)
  • Human Computer Interaction (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing (AREA)
  • Probability & Statistics with Applications (AREA)

Abstract

【課題】有向グラフの探索中の処理を軽減する。
【解決手段】実施形態のデコーダは、有向グラフを探索して、入力された信号列または信号の特徴量列に応じたラティスの一部または全部を生成する。デコーダは、トークン操作部と、ノード追加部と、接続検出部と、を備える。トークン操作部は、信号または特徴量を入力する毎に、探索中の経路の先頭の状態が割り当てられたオブジェクトである複数のトークンのそれぞれを、有向グラフに従って、空ではない入力記号が割り当てられている状態または遷移に達するまで移動させる。ノード追加部は、トークンを移動させる毎に、複数のトークンのそれぞれに割り当てられた状態に対応するノードをラティスに追加する。接続検出部は、i回目(iは1以上の整数)にラティスに追加したノードに接続された、i+1回目にラティスに追加したノードを、有向グラフを参照して検出する。
【選択図】図3

Description

本発明の実施形態は、デコーダ、デコード方法およびプログラムに関する。
入力される信号のパターンを認識して、入力された信号列を対応する記号列へと変換する技術が知られている。例えば、音声信号を認識する技術、文字が記載された画像から文字を認識するOCR(Optical Character Recognition)技術、手書き文字を認識する技術、または、画像からジェスチャまたは手話等を認識する技術等が知られている。また、このような技術を実現する装置として、有限状態オートマトンに出力記号を付加した有向グラフ(例えば、重み付き有限状態トランスデューサ)を探索するデコーダが知られている。
ところで、重み付き有限状態トランスデューサ等の有向グラフを探索するデコーダは、探索中にラティスを生成することもできる。しかし、このようなデコーダでは、探索が進むに従って、ラティスに多くのノードおよびアークを追加しなければならなかった。さらに、このようなデコーダでは、探索が進むに従って、ノード間の接続を示すポインタまたはアークが増加するので、これらを適宜に破棄しなければならなかった。このため、探索中にラティスを生成するデコーダでは、探索中における処理量が膨大となってしまっていた。
G. Saon, D. Povey, and G. Zweig, "Anatomy of an extremely fast LVCSR decoder," in Proceedings of INTERSPEECH, 2005, pp. 549-552. D. Povey, M. Hannemann, G. Boulianne, L. Burget, A. Ghoshal, M. Janda, M. Karafiat, S. Kombrink, P. Motlicek, Y.Qian, K. Riedhammer, K. Vesely, and N. T. Vu, "Generating exact lattices in the WFST framework," in Proceedings of the International Conference on Acoustics, Speech, and Signal Processing (ICASSP '12), 2012, pp. 4213-4216. S.J. Young, N.H. Russell and J.H.S. Thornton,"Token passing: A simple conceptual model for connected speech, recognition systems", Cambridge University Engineering Department, 1989 S. Phillips, "Parallel speech recognition", International Journal of Parallel Programming, Vol. 27, No. 4, 1999, pp. 257-288.
本発明が解決しようとする課題は、有向グラフの探索中の処理を軽減することにある。
実施形態のデコーダは、有向グラフを探索して、入力された信号列または前記信号の特徴量列に応じたラティスの一部または全部を生成する。前記有向グラフは、入力記号および出力記号が状態または遷移に割り当てられる。前記入力記号は、前記信号または前記特徴量から信号スコアを算出するためのアルゴリズムまたはデータの少なくとも一方を示すスコア識別子である。前記デコーダは、トークン操作部と、ノード追加部と、接続検出部と、を備える。前記トークン操作部は、前記信号または前記特徴量を入力する毎に、探索中の経路の先頭の状態が割り当てられたオブジェクトである複数のトークンのそれぞれを、前記有向グラフに従って、空ではない入力記号が割り当てられている状態または遷移に達するまで移動させる。前記ノード追加部は、トークンを移動させる毎に、前記複数のトークンのそれぞれに割り当てられた状態に対応するノードを前記ラティスに追加する。前記接続検出部は、i回目(iは1以上の整数)に前記ラティスに追加したノードに接続された、i+1回目に前記ラティスに追加したノードを、前記有向グラフを参照して検出する。
第1実施形態に係るパターン認識装置のブロック図。 第1実施形態に係るデコーダのブロック図。 第1実施形態に係るパターン認識装置の処理順序を示すフロー図。 第1実施形態に係るデコーダの処理を表す擬似コードを示す図。 第1実施形態に係るデコーダの処理を示す遷移図。 第1実施形態に係るパターン認識装置のハードウェアブロック図。 第2実施形態に係るデコーダのブロック図。 第2実施形態に係るデコーダの処理を表す擬似コードを示す図。 第2実施形態に係るデコーダの処理を表す擬似コードの変形例を示す図。 第3実施形態に係るデコーダのブロック図。 第3実施形態に係るデコーダの処理を表す擬似コードを示す図。 第4実施形態に係るデコーダのブロック図。 第4実施形態に係るデコーダのスレッドのブロック図。 メインスレッドが実行する処理を表す擬似コードを示す図。 ワーカースレッドが実行する処理を表す擬似コードを示す図。
<前提>
まず、本実施形態の前提となる技術について説明する。
(WFST)
本実施形態では、有向グラフの一例である重み付き有限状態トランスデューサ(WFST)を探索する。なお、本実施形態では、有向グラフとしてWFSTを用いる例を説明するが、入力記号および出力記号および重みが、状態または遷移の何れかに割り当てられていれば、割り当てパターンが異なる他の有向グラフを探索してもよい。また、重みの付いていない有向グラフ(すなわち、重みが0の場合と同様)を探索してもよい。
WFSTは、遷移に入力記号および出力記号が割り当てられ、遷移に重みが割り当てられる。WFSTは、状態の集合Q、遷移の集合E、入力記号の集合Σ、出力記号の集合Γ、重みの集合K、初期状態の集合I、終了状態の集合F、初期重み関数λ、および終了重み関数ρの9つの要素の組(Q,E,Σ,Γ,K,I,F,λ,ρ)で構成される。遷移は、5つの要素の組(前状態,次状態,入力記号,出力記号,重み)で構成される。
重みの集合Kは、一例として、整数全体の集合、実数全体の集合、複素数全体の集合、行列、ブーリアン(0および1)の集合等である。重みの集合Kは、正でない実数の集合または負でない実数の集合等であってもよい。初期状態q∈Iに対応する初期重みは、λ(q)である。終了状態q∈Fに対応する終了重みは、ρ(q)である。また、入力記号の集合Σおよび出力記号の集合Γは、空記号εを含んでもよい。
(音響モデル、信号スコア)
例えば、WFSTを用いて連続的に音声認識をする場合を考える。この場合、認識処理に先立って、まず、入力された音声信号の特徴量を音声を表す細かい単位(例えば音素)へと変換するための音響モデル、音声を表す細かい単位(例えば音素)を単語へと変換するためのレキシコン、および、単語の並びを制約するための言語モデルを準備する。続いて、これらのモデルのそれぞれをWFSTへと変換する。続いて、WFSTで表されたこれらのモデルを統合する。なお、これらのモデルを1つに統合してもよいし、一部を統合せず、音声認識時に動的に統合してもよい。
ここで、音響モデルは、入力された音声信号が、特定の音素またはその一部にどれだけ類似しているかを表すスコア(音響スコア、出力確率)を算出するためのモデルである。文字認識またはジェスチャの認識をする場合も同様に、このようなモデルを用いて類似度を表すスコアを算出して、パターン認識をする。本実施形態では、音声認識の場合も含めて、このようなモデルにより算出される値、すなわち、入力された信号が出力される記号等にどれだけ類似しているかを表す値を、信号スコアと呼ぶ。
(HMM、特徴量、スコア関数)
音声認識をする場合、音響モデルとして隠れマルコフモデル(HMM)が用いられる場合が多い。HMMをWFSTに変換する方法は、大きく2つ存在する。第1の方法は、WFSTの遷移の中にHMMが含まれているとして取り扱う方法である。第2の方法は、信号スコアを算出するためアルゴリズム(関数、プログラム、テーブルまたは行列等を含む)、データ(パラメータ等を含む)、または、アルゴリズムおよびデータの両方を特定するためのスコア識別子を、遷移の入力記号に割り当てる方法である。
本実施形態においては、第2の方法で変換されたWFSTを用いて探索する場合について説明するが、第1の方法で変換されたWFSTを用いることも可能である。
音響モデルから信号スコアを算出するためには、スコア識別子だけでなく、入力された信号列または入力された信号の特徴量も必要である。特徴量は、複数の値から構成される場合もある。この場合、複数の特徴量の組は、特徴ベクトルと呼ばれる。本実施形態では、複数の値から構成される場合も含めて特徴量と呼ぶ。
本実施形態においては、信号スコアを算出するためのアルゴリズムまたはデータとしてスコア関数を用いる。スコア関数は、信号または信号の特徴量、および、スコア識別子を引数にとって信号スコアを出力する関数である。音声認識をする場合には、このようなスコア関数は、例えば音響スコア関数と呼ばれる。また、この音響スコア関数を特定するスコア識別子は、音響スコア関数識別子と呼ばれる。また、音響スコア関数識別子は、確率分布関数識別子と呼ばれる場合もある。
スコア関数が信号スコアを算出する方法は、どのような方法であってもよい。例えば、音声認識をする場合、信号スコアを算出する方法は、適用するHMMの種類によって変わる。離散HMMであれば、スコア関数は、特徴量に対応する符号ベクトルとスコア識別子とに基づき、表または行列の形で記録されている信号スコアを取得する。また、連続HMMであれば、スコア関数は、スコア識別子から得られるガウス分布を表現するための複数のパラメータと、特徴量とに基づき、信号スコアを算出する。また、スコア関数は、ニューラルネットワークを用いるなど、ほかの方法を用いて信号スコアを算出してもよい。
なお、ここでは、信号スコアを算出するためのモデルとして、HMMを挙げて説明しているが、スコア識別子が状態または遷移に割り当てられている有向グラフであれば、HMMに限らず他のモデルであってもよい。例えば、HMMの代わりにテンプレートマッチングを用いることとし、テンプレートを有向グラフの形式で表現し、入力された特徴量とテンプレートとの距離を計算する関数をスコア関数としてもよい。
(探索)
WFSTを探索する処理とは、入力された信号列または信号の特徴値列に応じた信号スコアおよび重みを累積した値が、最良となる状態と遷移との系列(経路)を算出する処理である。この累積した値を、累積スコアと呼ぶ。WFSTに言語モデルも統合されている場合には、言語モデルから得られるスコアも累積スコアに含まれる。
累積スコアが最良となる経路は、一般に、ビタビアルゴリズムを用いて見つけ出される。また、最良の経路のみならず、最良からN番目までに良い経路を見つけ出す場合もある。
仮に、累積スコアを距離と考え、小さいほうが良いとする。この場合、累積スコアが最良となる経路を見つけ出す処理は、音声信号が入力される毎に、状態と遷移とが追加される非循環有向グラフ(directed acyclic graph)の最短経路を探索する処理と同様である。
(トークンパッシング)
HMMを変換したWFSTの経路を探索する処理では、トークンパッシングと呼ばれる技術を用いる場合が多い。この技術ではトークンと呼ばれるオブジェクトが用いられる。トークンには、探索中の経路の先頭の状態が割り当てられる。WFSTを探索する処理は、複数の経路を並行して探索するので、同時に複数のトークンが管理される。また、トークンは、経路の累積スコアを保持する。
トークンは、信号または特徴量が入力される毎に移動される。すなわち、トークンは、信号または特徴量が入力される毎に、割り当てられる状態が、WFSTの遷移に従って変更される。1つの状態から複数の出て行く遷移が存在する場合には、その1つの状態が割り当てられたトークンは、信号または特徴量が入力されると、出て行く遷移の数に複製される。また、1つの状態に複数のトークンが到達した場合には、原則的には、最良の累積スコアを保持する1つのトークンが残存し、残りは破棄される。
(ラティス)
本実施形態では、WFSTの探索中にラティスを生成する。本実施形態において、ラティスは、ノードを有するグラフ、または、ノードおよびアークを有する非循環有向グラフである。なお、探索対象となる有向グラフ(例えばWFST)の状態および遷移と区別するために、ノードおよびアークと表現している。
また、ラティスのノードまたはアークには、ラベルが割り当てられていてもよい。また、ラティスのノードまたはアークには、スコアが割り当てられていてもよい。
<第1実施形態>
(全体構成)
図1は、第1実施形態に係るパターン認識装置10の構成を示す図である。以下、第1実施形態に係るパターン認識装置10を説明する。
パターン認識装置10は、入力された信号のパターンを認識し、認識結果を出力する。パターン認識装置10に入力される信号は、パターンを表す信号であればどのような信号であってもよい。入力される信号は、一例として、音声信号、筆跡を表す信号、文字を表す画像信号または手話等のジェスチャを表す動画像信号等である。
パターン認識装置10は、特徴抽出部12と、デコーダ20と、記憶部22とを備える。
特徴抽出部12は、パターンを表す信号を入力して、一定時間毎に、信号の特徴量を取得する。そして、特徴抽出部12は、取得した信号の特徴量をデコーダ20に渡す。
特徴量は、デコーダ20が、その信号の区間毎の特徴を表す情報であり、信号スコアを算出するために用いられる。音声信号を入力する場合、特徴抽出部12は、一例として、10ミリ秒単位(フレーム)毎に、特徴量を取得する。
なお、特徴量を算出するために用いる信号の時間長と、特徴量を出力する期間は一致していなくてもよい。また、デコーダ20が信号そのものを用いて信号スコアを算出する場合には、特徴抽出部12は、一定時間毎に分割した信号をデコーダ20に渡してもよい。
デコーダ20は、特徴抽出部12から信号または信号の特徴量が入力される毎に、予め作成されたWFSTを探索する。デコーダ20は、探索中に、入力された信号列または信号の特徴量列に応じたラティスを生成する。そして、デコーダ20は、信号の入力が終了した後、探索中に生成したラティスおよびWFSTから、累積スコアが最良となる経路を検出し、その経路上の出力記号を接続した出力記号列を、認識結果として出力する。
デコーダ20は、出力記号列として、例えば、単語列を出力してもよいし、音素列を出力してもよいし、音素よりさらに細かい単位の記号列を出力してもよい。また、デコーダ20は、これらの組み合わせの記号列を出力してもよい。
なお、第1実施形態においては、デコーダ20は、有向グラフの探索中にアークを含まないラティスを生成する。
記憶部22は、予め作成されたWFSTを記憶している。デコーダ20は、記憶部22に予め記憶されているWFSTを常時参照して探索することができる。
記憶部22は、信号スコアを算出するために参照されるアルゴリズムまたはデータ、或いは、アルゴリズムおよびデータの両方を記憶している。本実施形態において、記憶部22は、スコア識別子と信号または特徴量とを引数として信号スコアを算出するためのスコア関数を記憶している。また、記憶部22は、データとして、WFSTの遷移に重みとして割り当てられなかったHMMの状態遷移スコアを、スコア関数とともに記憶しておいてもよい。なお、記憶部22は、WFSTに記憶されていない他の情報を、データとして記憶していてもよい。
ここで、デコーダ20は、トークンパッシングの手法で、WFSTを探索する。そして、WFSTの探索中において、デコーダ20は、WFSTから取得したスコア識別子と信号または信号の特徴量とを引数として、スコア関数を呼び出して、信号スコアを算出することができる。また、デコーダ20は、WFSTの重みを記憶部22から取得することができる。さらに、記憶部22にスコア関数とともに記憶されているHMMの状態遷移スコアがあれば、これも取得することができる。これにより、デコーダ20は、探索中の経路上の遷移の重みと信号スコアとを累積した累積スコアを算出することができる。HMMの状態遷移スコアがあれば、それについても累積スコアに累積することができる。
また、記憶部22に記憶されたWFSTは、入力記号に信号スコアを算出するためのスコア識別子が割り当てられている。さらに、このWFSTは、1つの状態に入ってくる遷移に割り当てられた入力記号が1種類となるように予め変換がされている。
(構成)
図2は、第1実施形態に係るデコーダ20のブロック図である。デコーダ20は、トークン記憶部31と、トークン操作部32と、スコア算出部33と、重複除去部34と、枝刈部35と、ラティス記憶部36と、ノード追加部37と、接続検出部38とを有する。
トークン記憶部31は、1または複数のトークンを記憶する。トークン記憶部31は、信号または信号の特徴量が入力される前においては、初期状態が割り当てられたトークンを記憶する。
複数のトークンのそれぞれは、割り当てられた状態を示す情報を保持する。なお、複数のトークンのそれぞれは、割り当てられた状態に関連付けてトークン記憶部31に記憶されていれば、割り当てられた状態とどのように関連付けられて記憶されていてもよい。
また、複数のトークンのそれぞれは、そのトークンが表す経路上のそれぞれの入力記号(スコア識別子)から算出された信号スコアと、経路上の遷移に割り当てられた重み(状態遷移スコア等)とを累積した累積スコアを保持する。なお、本実施形態では、トークンは入力記号を保持していない。後述するように、割り当てられた状態に入ってくる遷移を参照することで、入力記号を取得できるためである。
また、複数のトークンのそれぞれは、さらにコンテキスト情報を保持してもよい。コンテキスト情報には、一例として、2つのWFSTを動的に合成しながら探索する場合において、2つ目のWFSTの経路の先頭の状態を含む。また、コンテキスト情報は、一例として、通過した遷移に割り当てられた出力記号列が特徴量の一部として用いられる場合には、この出力記号列を含んでいてもよい。
WFSTのそれぞれの状態は、原則的に1つのトークンに割り当てられる。しかし、コンテキスト情報を含む場合には、割り当てられた状態とコンテキスト情報との2つの要素の組が1つのトークンに割り当てられる。従って、この場合には、WFSTのそれぞれの状態は、複数のトークンに割り当てられる可能性がある。
トークン操作部32は、信号または特徴量を入力する毎に、トークン記憶部31に記憶されている複数のトークンのそれぞれを、WFSTに従って、空ではない入力記号が割り当てられている遷移を通過するまで移動させる。ここで、トークンを移動させるとは、そのトークンに割り当てられている状態を、次の状態に変更することをいう。なお、状態に入力記号が割り当てられている有向グラフを探索する場合には、トークン操作部32は、空ではない入力記号が割り当てられている状態に達するまでトークンを移動させる。
この場合において、トークン操作部32は、トークンが割り当てられている状態から出て行く遷移が複数存在する場合には、複数の遷移のそれぞれに対応させてトークンを作成し、作成したそれぞれのトークンを対応する遷移に従って次の状態に移動させる。
スコア算出部33は、トークン操作部32がトークンを入力記号が空でない遷移を通過するまで移動させる毎に、複数のトークンのそれぞれに対して、信号スコア、および、累積スコアを算出する。より詳しくは、スコア算出部33は、複数のトークンのそれぞれに対して、直前の移動により通過した遷移に割り当てられた入力記号(スコア識別子)に対応するスコア関数を呼び出して、入力記号に基づく信号スコアを算出する。また、スコア算出部33は、複数のトークンのそれぞれに対して、そのトークンが表す経路上の重みおよび信号スコアを累積した累積スコアを算出する。そして、スコア算出部33は、算出した信号スコア、および、累積スコアを、トークン記憶部31に記憶された対応するトークンに保持させる。なお、重みの付いていない有向グラフを探索する場合には、スコア算出部33は、重みに関する処理を実行せずに、重みを0として累積スコアを算出する。
重複除去部34は、トークン操作部32がトークンを入力記号が空でない遷移を通過するまで移動させる毎に、トークンの重複を除去する。より詳しくは、重複除去部34は、割り当てられた状態が同一である2以上のトークンの重複を除去する。重複除去部34は、一例として、割り当てられた状態が同一である2以上のトークンのうち、累積スコアが良い1つのトークンを残存させ、残りのトークンを廃棄する。
なお、トークンがコンテキスト情報を保持する場合には、重複除去部34は、割り当てられた状態が同一であり、且つ、コンテキスト情報が同一である2以上のトークンの重複を除去する。これにより、例えば、2つのWFSTを動的に合成しながら探索する場合において、重複除去部34は、一方のWFSTに割り当てられた状態が同一であるが、他方のWFSTに割り当てられた状態が異なるトークンを残存させることができる。
枝刈部35は、トークン操作部32がトークンを入力記号が空でない遷移を通過するまで移動させる毎に、トークン記憶部31に記憶されている複数のトークンのうち、累積スコアが一定以上悪いトークンを除去する。枝刈部35は、一例として、複数のトークンのうちの最良の累積スコアから、一定値以上悪い累積スコアのトークンを除去する。
ラティス記憶部36は、ラティスを記憶する。ラティス記憶部36は、信号または信号の特徴量が入力される前においては、空のラティスを記憶する。そして、ラティス記憶部36は、特徴量の入力が継続している期間においては、途中段階のラティスを記憶する。
ノード追加部37は、トークン操作部32がトークンを入力記号が空でない遷移を通過するまで移動させる毎に、トークン記憶部31に記憶された複数のトークンのそれぞれに割り当てられた状態に対応するノードを、ラティス記憶部36に記憶されたラティスに追加する。この場合において、ノード追加部37は、ラティスへのトークンの追加回数(すなわち、信号または信号の特徴量が入力の入力回数)に対応させてノードを追加する。
また、ノード追加部37は、追加するノードのそれぞれに対して、(1)元となるトークンの累積スコア、(2)元となるトークンの信号スコアおよび、(3)元となるトークンが表す経路の先頭の状態を関連付ける。ノード追加部37は、それぞれのノードと、これらの情報とをどのような方法で関連付けてもよい。例えば、ノード追加部37は、これらの情報をノードに保持させてもよいし、別個のテーブル等に対応付け保存させてもよい。
接続検出部38は、ノードの追加が完了した後に(例えば、信号または信号の特徴量の入力が終了した後、または、一定数の信号または特徴量の入力が終了した後に)、ラティス記憶部36に記憶されたラティスおよびWFSTを参照して、初期状態から終了状態まで接続された経路における、累積スコアが最良となる経路を検出する。そして、接続検出部38は、最良の経路上における出力記号を連結した記号列を出力する。
より詳しくは、接続検出部38は、i回目(iは1以上の整数)にラティスに追加したノードに接続された、i+1回目にラティスに追加したノードを、WFSTを参照して検出する。すなわち、接続検出部38は、WFSTを参照して、i回目にラティスに追加したノードに対応するWFSTの状態から、i+1回目にラティスに追加した何れかのノードに対応するWFSTの状態へと向かう遷移が存在するか否かを判断する。WFSTに、このような遷移が存在する場合には、接続検出部38は、i回目にラティスに追加したノードに接続された、i+1回目にラティスに追加したノードが存在すると検出する。
さらに、i回目に追加したノードを第1のノードとし、第1のノードに接続されたi+1回目に追加したノードを第2のノードとする。この場合、接続検出部38は、第1のノードに関連付けられた累積スコアと第2のノードに関連付けられた信号スコアと第1のノードと第2のノードとを接続する経路上の重みとを加算した値が、第2のノードに関連付けられた累積スコアに一致する経路を検出する。なお、重みの付いていない有向グラフを探索する場合には、接続検出部38は、重みを0として経路を算出する。
さらに、接続検出部38は、最後に追加したノードのうち、累積スコアが最良のノードを検出する。このノードは、最良経路の終端のノードに対応する。これを第2のノードとして前記接続関係の検出処理を行い、最良経路上の第1のノードを検出する。次に、この第1のノードを第2のノードとして同様の処理を、1回目にラティスに追加したノードまで、順次に繰り下がりながら実行する。そして、接続検出部38は、初期状態に対応するノードから終了状態に対応するノードまでの最良の経路を検出し、検出した最良の経路上における出力記号を連結して出力する。なお、検出した最良の経路上における入力記号を連結して出力するよう構成してもよい。また、その両方を出力するよう構成してもよい。
(処理フロー)
図3は、第1実施形態に係るデコーダ20の処理順序を示すフローチャートである。まず、信号の入力が開始されると、特徴抽出部12が信号から特徴量を抽出してデコーダ20に供給する。そして、デコーダ20は、ステップS101から処理を開始する。
まず、ステップS101において、デコーダ20は、特徴抽出部12から特徴量を取得する。続いて、ステップS102において、デコーダ20は、特徴量の取得に成功したか否かを判断する。デコーダ20は、特徴量の取得に成功した場合には(ステップS102のYes)、処理を、ステップS103からステップS106までのループ処理に進める。なお、デコーダ20は、ステップS101の前に、ステップS102を実行してもよい。この場合、ステップS102において、デコーダ20は、次に特徴量を取得できるか否かを判断する。
ステップS103からステップS106のループ処理において、デコーダ20は、全てのトークンのそれぞれに対してステップS104およびステップS105の処理を実行する。ステップS104において、デコーダ20は、対応するトークンに割り当てられた状態を、WFSTに示された遷移に従って次の状態に移動させる。この場合において、デコーダ20は、入力記号が空でない遷移を通過するまでトークンを移動させる。続いて、ステップS105において、デコーダ20は、トークンが通過した遷移に割り当てられた重みを取得して、取得した重みをトークンの累積スコアに加算する。
ステップS103からステップS106のループ処理が完了すると、デコーダ20は、処理をステップS107に進める。ステップS107において、デコーダ20は、割り当てられた状態が同一である2以上のトークンが存在するかを検出する。そして、デコーダ20は、このような2以上のトークンが存在した場合には、最も累積スコアが良い1つのトークンを残して、残りのトークンを破棄する。
続いて、デコーダ20は、ステップS108からステップS110までのループ処理に進める。ステップS108からステップS110のループ処理において、デコーダ20は、全てのトークンのそれぞれに対してステップS109の処理を実行する。ステップS109において、デコーダ20は、対応するトークンの信号スコアを算出する。そして、デコーダ20は、対応するトークンに保持されている累積スコアに算出した信号スコアを加算することにより、累積スコアを更新する。
ステップS108からステップS110のループ処理が完了すると、デコーダ20は、処理をステップS111に進める。ステップS111において、デコーダ20は、累積スコアが一定以上悪いトークンを除去する。
ステップS111が完了すると、デコーダ20は、処理をステップS112に進める。ステップS112において、デコーダ20は、複数のトークンのそれぞれに割り当てられた状態に対応するノードを、ラティスに追加する。この場合において、デコーダ20は、追加したそれぞれのノードと、トークンの信号スコアおよび累積スコア、並びに、トークンが表す経路の先頭の状態とを関連付ける。
ステップS112が完了すると、デコーダ20は、処理をステップS101に戻す。そして、デコーダ20は、特徴量が入力される毎に、ステップS103からステップS112までの処理を繰り返して実行する。
一方、特徴量の取得に成功しなかった場合、すなわち、信号の入力が終了した場合には(ステップS102のNo)、デコーダ20は、処理をステップS113に進める。
ステップS113において、デコーダ20は、ラティス記憶部36に記憶されたラティスおよびWFSTを参照して、初期状態から終了状態まで接続された経路における、累積スコアが最良となる経路を検出する。そして、ステップS113を終えると、続くステップS114において、デコーダ20は、最良の経路上における出力記号を連結した記号列を認識結果として出力する。デコーダ20は、ステップS114の処理を完了すると、本フローを終了する。
(擬似コード)
図4は、第1実施形態に係るデコーダ20の処理内容を表す擬似コードを示す図である。つぎに、図4に示すデコーダ20により実行される擬似コードを参照して、デコーダ20の詳細な処理例を説明する。
tは、トークンを表す。Tは、トークンの集合を表す。Lは、ラティスを表す。fは、フレーム番号を表す。L[f]は、フレーム番号fのフレームで追加されたノードの集合を表す。
state(t)は、トークンtに割り当てられている状態を表す。tacc_score(t)は、トークンtが保持している累積スコアを表す。tam_score(t)は、トークンtが保持している信号スコアを表す。トークンtに割り当てられている状態、累積スコアおよび信号スコアの3つの要素は、(状態,累積スコア,信号スコア)と表す。
なお、本擬似コードにおいては、スコアは大きい方が良いとして処理を実行する。もっとも、擬似コード中の関数maxを関数minに変更し、スコアを比較する場合に大小関係を反転する等の変形をすれば、スコアは小さい方が良いとして処理を実行することができる。
beamは、枝刈りのための基準となるスコア差を表す。
εは、記号列が空であることを表す。入力記号がεである場合、入力記号にスコア識別子が割り当てられていないことを表す。同様に、出力記号がεである場合、単語等の認識結果として出力される情報が出力記号に割り当てられていないことを表す。
入力記号がεである遷移を、本実施形態においてはε遷移または空遷移と呼ぶ。eは、遷移を表す。n(e)は、遷移eの次状態を表す。input(e)は、遷移eの入力記号を表す。output(e)は、遷移eの出力記号を表す。w(e)は、遷移eの重みを表す。
通常、WFSTには初期重みがあるが、本実施形態では、WFSTの初期重みは0である。初期状態1つに対して、遷移と状態を1つずつ追加し、初期重みを追加した遷移に割り当てるように、WFSTを予め変形されていればよいためである。もっとも、初期重みを考慮した擬似コードとするには、1行目で作成するトークンの累積重みに、初期重みを追加すればよい。
以下、各行で行われる処理について説明する。デコーダ20は、図4に示される擬似コードの各行に示された処理を、1行目から順次に実行する。
1行目では、デコーダ20は、トークンの集合を初期化する。トークンの集合は、一例として、配列、単方向リストまたは二分木等で実現することができる。また、デコーダ20は、9行目で重複要素が存在しなくなるので、1行目では、重複要素の削除を行ってもよいし、行わなくてもよい。また、デコーダ20は、フレーム番号fを0に初期化する。
2行目では、デコーダ20は、信号の入力が終了したか否かを判定する。終了していれば、デコーダ20は、結果を出力するために16行目に処理を移す。まだ、処理すべき信号がある場合は、デコーダ20は、3行目から15行目の処理を行う。
3行目では、デコーダ20は、入力された信号の特徴量を特徴抽出部12から受け取る。デコーダ20は、受け取った特徴量をvに代入する。なお、疑似コードでは、特徴量を、feature vectorと記載している。
4行目では、デコーダ20は、Tを空集合で初期化する。
5行目は、L[f]に含まれるそれぞれのトークンについて、6行目から8行目の処理を行うことを示す。
6行目は、トークンtが割り当てられている状態から出ていく遷移について、7行目から8行目の処理を行うことを示す。
関数outgoingは、WFSTにε遷移が含まれていない場合、state(t)から出ていく遷移の集合を返す。
関数outgoingは、WFSTにε遷移が含まれている場合、state(t)から出ていくε遷移以外の遷移と、state(t)からε遷移を辿ることで到達できる入力記号がεでない遷移とを含む集合Eを返す。ただし、関数outgoingは、その遷移に至る経路が複数ある場合には、経路上の重みを累積した値が最も大きい経路のみを選択する。重みを累積した値が最も大きい経路の探索には例えばDijkstraのアルゴリズムやBellman‐Fordのアルゴリズムを用いればよい。
また、関数outgoingは、集合Eに含まれるそれぞれの遷移eの重みを、state(t)から遷移eまでに至る経路(遷移eを含む)上の重みを累積した値に変形する。また、関数outgoingは、集合Eに含まれるそれぞれの遷移eの出力記号を、state(t)から遷移eまでに至る経路(遷移eを含む)上の出力記号を繋ぎ合わせた記号列に変形する。
なお、遷移eに至る経路上の出力記号列が複数ある場合で、全ての出力記号列を残したい場合は、関数outgoingは、次のようにすればよい。ある経路の出力記号列をxとする。xと同じ出力記号列が割り当てられている経路上の重みのうち最も大きい重みと、遷移eの重みとを加算した値をwとする。関数outgoingは、処理結果として返す集合に、出力記号列がx、重みがw、それ以外の要素がeと同じである遷移を追加する。
7行目では、デコーダ20は、新しいトークンtnewを作成する。トークンtnewに割り当てられる状態は、eの次状態である。トークンtnewの累積スコアは、tの累積スコアにeの重みを加算した値である。トークンtnewの信号スコアは、0である。
8行目では、デコーダ20は、7行目で作成した新しいトークンtnewをトークンの集合Tに追加する。
9行目では、デコーダ20は、同じ状態が割り当てられているトークンが複数ある場合に、累積スコアが良い1つのトークンを残存させ、他を除去する。本例の場合には、累積スコアが最も良い1つのトークンを残存させる。9行目が完了すると、1つの状態が割り当てられているトークンは、最大でも1つとなる。
10行目は、Tに含まれるそれぞれのトークンtについて、11行目および12行目を処理することを示す。
11行目では、デコーダ20は、スコア関数am_scoreにより信号スコアを算出する。スコア関数am_scoreは、第1引数に特徴量、第2引数にスコア識別子をとり、信号スコアを返す。デコーダ20は、スコア関数am_scoreにより算出した値を、tの信号スコアtam_score(t)に代入する。
関数incomingは、state(t)に入ってくる遷移の集合を返す。なお、関数incomingで取得できる遷移は複数ある可能性があるが、本実施形態で使用しているWFSTでは、それらの遷移の入力記号は全て同じであるので、スコア関数には、1つの入力記号(スコア識別子)を渡す。なお、デコーダ20は、入ってくる遷移の入力記号を事前にそれぞれの状態に対応付けておけば、その対応付けを参照することでinput(incoming(状態))の処理を行わずに同じ結果を得ることができる。
12行目では、デコーダ20は、tの累積スコアtacc_score(t)に、11行目で算出した信号スコアtam_score(t)を加算する。
13行目および15行目は、トークンの枝刈りと、枝刈り後に残ったトークンをノードとしてラティスに追加することを示す。
13行目では、デコーダ20は、Tに含まれるトークンの累積スコアのうち、最も良い累積スコアをwmaxに代入する。
14行目では、デコーダ20は、フレーム番号fを1増加させる。
15行目では、デコーダ20は、wmaxからwbeamを引いた値以下の累積スコアを保持しているトークンをTから除去し、残ったトークンをノードとしてL[f]に追加する。wbeamには、事前に与えられる固定値を用いてもよいし、トークンの数が一定値以内に収まるように算出される値を用いてもよい。なお、トークンの数で枝刈りする方法は、ヒストグラム枝刈りと呼ばれる。本実施形態では、トークンとノードは同じオブジェクトとして取り扱っているが、先に記載したトークンに含まれる累積スコア、信号スコア、割り当てられている状態の3つの情報をノードが保持することができれば、トークンとノードとを同じオブジェクトとして扱わなくてもよい。
16行目から25行目は、1位結果をラティスから取得することを示す。
16行目では、デコーダ20は、入力記号列を保存するための変数xを空列で初期化する。
17行目では、デコーダ20は、L[f]に含まれるそれぞれノードtに対して次の処理を行い、その結果をΘに代入する。
まず、デコーダ20は、tが割り当てられている状態を引数として、関数epsを呼び出す。関数epsは、tが割り当てられている状態からε遷移のみを辿ることで到達できる状態qと、そこに至る経路のうち最も重みの大きい経路の重みwと、その経路の出力記号列oを見つけ、それらを3つの要素の組(q,w,o)として返す。関数epsが返す3つの要素の組の中には、tが割り当てられている状態を含む3つの要素の組も含まれる。qがtが割り当てられている状態である場合には、wは0、oはεである。デコーダ20は、関数epsから結果が返されると、qが終了状態である場合にのみ、3つの要素の組(t,w+ρ(q),o)をΘに追加する。全てのノードtについて処理を終えると、Θには、終了状態に到達するノードが3つの要素の組の一部として記録される。なお、関数eps内で終了状態か否かを判定し、関数epsが返す状態qは全て終了状態となるよう構成してもよい。
18行目では、デコーダ20は、Θが空集合か否かを判断する。Θが空集合である場合、終了状態に至る経路が無い。従って、この場合、19行目で、デコーダ20は、認識結果として空列を返し、本コードの処理を終了する。
Θが空集合ではない場合、デコーダ20は、処理を20行目へ進める。20行目では、デコーダ20は、Θに記録されているノードのうち、ノードが割り当てられている状態から終了状態までの最良経路の重みと、ノードの累積スコアとを加算した値が最も大きいノードをtbestに代入する。また、デコーダ20は、そのノードと同じ3つの要素の組に記録されている出力記号列、つまり、ノードが割り当てられている状態から終了状態までの最良経路の出力記号列を連結した出力記号列をxに代入する。
21行目は、fが0より大きい間は22行目から24行目までを繰り返して処理することを示す。
22行目では、デコーダ20は、fの値を1減らす。
23行目では、デコーダ20は、L[f]に含まれるノードをtとする場合、次の2つの条件を満たすノードtと遷移eとを、tbestとebestとに代入する。
1つ目の条件は、tが割り当てられている状態から関数outgoingを使って得られる遷移の次状態が、tbestが割り当てられている状態に一致する。
2つ目の条件は、関数outgoingを使って得られる遷移の重みとtの累積スコアとtbestの信号スコアとを加算した値が、tbestの累積スコアと等しい。言い換えると、デコーダ20は、7行目と12行目の計算を再度実行して、tbestを再現できるtとeとを探す。デコーダ20は、従来手法のようにバックポインタをそれぞれのノードが保持していないので、このような再計算処理が必要になる。以上の2つの条件を満たすノードと遷移とが複数存在する場合には、デコーダ20は、複数の何れを選択してもよい。何れを選択しても、累積スコアが最も良くなるためである。
24行目では、デコーダ20は、23行目で得られたebestの入力記号をxの前方に連結する。また、デコーダ20は、23行目で得られたebestの出力記号をxの前方に連結する。なお、24行目において、ドットを表す記号は、記号を前後に連結することを表す。
そして、デコーダ20は、f=0、つまり、最初のノードまで処理が終了した場合、処理を25行目に進める。25行目では、デコーダ20は、得られた入力記号列xと出力記号列xとを音声認識の結果として返す。なお、入力記号がHMMの状態であれば、xはHMMの状態列となる。
以上の擬似コードでは、フレーム番号fによってノードの集合をL[f]で特定した。しかし、フレーム番号を用いず、ノードの集合を要素とする単方向リストまたは双方向リスト等で保持してもよい。21行目から24行目の処理は、fを1減らしながら処理しているだけであるので、デコーダ20は、単方向リストまたは双方向リスト等を用いた場合、リストを1つ1つたどりながら処理すれば同様の処理ができる。
(動作例)
図5は、第1実施形態に係るデコーダ20の処理の一例を示す遷移図である。デコーダ20が図4の擬似コードに従って動作した場合に、ラティスをどのように作成するのか、ラティスを用いてどのように最良な経路を見つけて、結果を出力するのかについて、具体的に説明する。
図5の左側の破線で囲まれた部分は、デコーダ20が探索するWFSTを表した図である。丸が状態を表し、丸の中の数字が状態番号を表す。太線の丸は、初期状態を表す。二重線の丸は、終了状態を表す。矢印は、遷移を表す。矢印の付近に記載されている文字列は、:と/とで区切られている。:の左側の文字列は入力記号を表し、:と/との間の文字列は出力記号を表し、/の右側の文字列は重みを表す。
図5の右側の破線に囲まれていない部分は、特徴量を3回入力した結果として得られるラティスを表した図である。角が丸い長方形は、ノードを表す。それぞれのノードの左上には、n12等のラベルを記載している。ノードは、追加された順で左から右に描かれている。割り当てられている状態は、ノードの上下方向の位置で表されており、一番下から上に向けて順番に状態1から状態4までが対応している。
それぞれのノードの中に記載されているstaccは、累積スコアを表す。それぞれのノードの中に記載されているstamは、信号スコアを表す。ノードとしてラティスに追加される前のトークンをtとすると、staccは、tacc_score(t)に対応する。また、stamは、tam_score(t)に対応する。また、図5の例では、wbeam=5とする。
図4の疑似コードの1行目では、デコーダ20は、ノードn01をL[0]に追加する。このとき、累積スコアおよび信号スコアは、いずれも0である。3行目では、デコーダ20は、1回目の特徴量を受け取る。4行目では、デコーダ20は、空集合をTに追加する。従って、T={}となる。
5行目から8行目では、デコーダ20は、1回目に受け取った特徴量に応じて、トークンを移動させる。直前のトークンは、L[0]にノードとして格納されているので、ノードn01に対応する。従って、5行目から8行目では、トークンは、n01が割り当てられているWFSTの状態1から出ていく遷移を通り、状態2と状態3とに移動される。また、累積スコアには通過した遷移の重みが加算される。従って、状態2に割り当てられるトークンの累積スコアは0となる。また、状態3に割り当てられるトークンの累積スコアは−3となる。
9行目では、同じ状態に複数のトークンが割り当てられていないので、デコーダ20は、何も実行しない。
10行目から12行目では、デコーダ20は、信号スコアおよび累積スコアを算出して、トークンに格納する。1回目に受け取った特徴量から算出した信号スコアが、am_score(v,b)=−3、am_score(v,b)=−2であるとする。この場合、状態2に割り当てられているトークンの累積スコアは、−3となる。状態3に割り当てられているトークンの累積スコアは、−5となる。また、状態2に割り当てられているトークンの信号スコアは、−3である。状態3に割り当てられているトークンの信号スコアは、−2である。
13行目と15行目の一部では、デコーダ20は、トークンの枝刈りをする。wbeam=5であるので、現時点では、枝刈りされるトークンは存在しない。
15行目では、デコーダ20は、トークンをノードとしてLに追加する。従って、L[1]={(2,−3,−3),(3,−5,−2)}となる。図5中では、L[1]に追加されたノードは、n12およびn13である。
続いて、3行目に戻り、デコーダ20は、2回目の特徴量を受け取る。4行目から8行目では、デコーダ20は、2回目の特徴量に応じて、トークンを移動させる。L[1]に格納されているノードは、n12とn13であるので、これらがトークンとみなされる。トークンは、関数outgoingの処理に従って移動される。これにより、T={(2,−3,0),(3,−5,0),(4,−4,0),(4,−5,0)}となる。
9行目では、デコーダ20は、同じ状態が割り当てられているトークンが複数ある場合には最も累積スコアが大きいトークン以外を除去する。従って、T={(2,−3,0),(3,−5,0),(4,−4,0)}となる。
10行目から12行目では、デコーダ20は、信号スコアおよび累積スコアを算出して、トークンに格納する。2回目に受け取った特徴量から算出した信号スコアが、am_score(v,b)=−2、am_score(v,b)=−5、am_score(v,b)=−1であるとする。この場合、T={(2,−5,−2),(3,−10,−5),(4,−5,−1)}となる。
13行目では、デコーダ20は、トークンの枝刈りのために最大の累積スコアを算出する。ここでは、最大の累積スコアwmaxが−5であり、wmax−wbeamは−10となる。従って、トークン(3,−10,−5)は、15行目の条件を満たさず枝刈りされる。残存したトークンは、(2,−5,−2)と(4,−5,−1)の2つである。デコーダ20は、これら2つのトークンをノードとしてLに追加する。従って、L[2]={(2,−5,−2),(4,−5,−1)}となる。図5では、L[2]に追加されたノードは、n22およびn24である。
続いて、3行目に戻り、デコーダ20は、3回目の特徴量を受け取る。4行目から8行目では、デコーダ20は、3回目の特徴量に応じて、トークンを移動させる。状態4から入力記号がεの遷移が出ている。しかし、状態5から出ていく遷移が1つもないので、関数outgoingに状態4を渡したときに得られる遷移は、状態4の自己遷移のみである。従って、移動後のトークンは、T={(2,−5,0),(4,−6,0),(4,−5,0)}となる。
9行目では、状態4にはトークンが2つあるので、デコーダ20は、累積スコアが良い一方を残す。従って、T={(2,−5,0),(4,−5,0)}となる。
10行目から12行目では、信号スコアおよび累積スコアを算出して、トークンに格納する。3回目に受け取った特徴量から算出した信号スコアが、am_score(v,b)=−5、am_score(v,b)=−3であるとする。この場合、T={(2,−10,−5),(4,−8,−3)}となる。
13行目と15行目では、何れのトークンも枝刈りがされない。従って、残存した2つのトークンがノードとしてLに追加され、L[3]={(2,−10,−5),(4,−8,−3)}となる。図5では、L[3]に追加されたノードは、n32とn34である。
以上の処理により、3回の特徴量の入力が完了したので、デコーダ20は、次は認識結果を取得する。
17行目では、Θ={((4,−8,−3),−2,green)}となる。状態2は終了状態ではなく、ε遷移のみを通って終了状態に到達することもできない。従って、ノードn32は、Θには含まれない。Θが空でないので、20行目が処理される。しかし、Θが含んでいる要素は1つのみであるので、tbest=(4,−8,−3)、x=greenとなる。
今、f=3であるので、22行目では、f=2となる。23行目では、L[2]に含まれるノードからtbestにつながる遷移を出ていく遷移として持つノードを見つける。該当するのは、n24と状態4の自己遷移である。n(e)=状態4=state(tbest)であり、tacc_score(n24)+w(e)+tam_score(tbest)=−5+0−3=−8=tacc_score(tbest)である。従って、tbest=n24、ebest=状態4の自己遷移となる。従って、24行目では、x=b、x=greenとなる。
続いて、22行目に戻り、f=1となる。23行目では、tbest=n12、ebest=状態2から状態4への遷移となる。従って、24行目では、x=b、x=greenとなる。
続いて、22行目に戻り、f=0となる。23行目では、tbest=n01、ebest=状態1から状態2への遷移となる。従って、24行目では、x=b、x=blue greenとなる。
そして、25行目でデコーダ20は、最終的に得られたx=b、x=blue greenを認識結果として返す。
(ハードウェア構成)
図6は、第1実施形態に係るパターン認識装置10のハードウェアブロック図である。パターン認識装置10は、CPU(Central Processing Unit)101と、操作部102と、表示部103、マイクロフォン104と、ROM(Read Only Memory)105と、RAM(Random Access Memory)106と、記憶部107と、通信装置108と、バス109とを備える。各部は、バス109により接続される。
CPU101は、RAM106の所定領域を作業領域としてROM105または記憶部107に予め記憶された各種プログラムとの協働により各種処理を実行し、パターン認識装置10(特徴抽出部12およびデコーダ20)を構成する各部の動作を統括的に制御する。また、CPU101は、ROM105または記憶部107に予め記憶されたプログラムとの協働により、操作部102、表示部103、マイクロフォン104および通信装置108等を実現させる。
操作部102は、マウスやキーボード等の入力デバイスであって、ユーザから操作入力された情報を指示信号として受け付け、その指示信号をCPU101に出力する。
表示部103は、LCD(Liquid Crystal Display)等の表示装置である。表示部103は、CPU101からの表示信号に基づいて、各種情報を表示する。例えば、表示部103は、デコーダ20が出力する認識結果を表示する。なお、通信装置108または記憶部107等に認識結果を出力する場合には、パターン認識装置10は、表示部103を備えなくてもよい。
マイクロフォン104は、音声信号を入力するデバイスである。予め記録された音声信号または通信装置108から入力される音声信号のパターン認識をする場合、または、音声以外の信号のパターン認識をする場合には、パターン認識装置10は、マイクロフォン104を備えなくてもよい。
ROM105は、パターン認識装置10の制御に用いられるプログラムおよび各種設定情報等を書き換え不可能に記憶する。RAM106は、SDRAM(Synchronous Dynamic Random Access Memory)等の揮発性の記憶媒体である。RAM106は、CPU101の作業領域として機能する。具体的には、パターン認識装置10が用いる各種変数およびパラメータ等を一時記憶するバッファ等として機能する。
記憶部107は、フラッシュメモリ等の半導体による記憶媒体、磁気的または光学的に記録可能な記憶媒体等の書き換え可能な記録装置である。記憶部107は、パターン認識装置10の制御に用いられるプログラムおよび各種設定情報等を記憶する。また、記憶部107は、スコア関数のパラメータおよびWFSTに係る各種の情報等を予め記憶する。
通信装置108は、外部の機器と通信して、音声信号の入力および認識結果の出力等に用いられる。予め記録された音声信号またはマイクロフォン104から入力した音声信号のパターン認識をする場合であり、認識結果を表示部103または記憶部107に出力する場合には、パターン認識装置10は、通信装置108を備えなくてもよい。
なお、手書き文字のパターン認識を行う場合には、パターン認識装置10は、筆跡入力装置をさらに備える。また、OCRを行う場合には、パターン認識装置10は、スキャナまたはカメラ等をさらに備える。また、ジェスチャ認識、手信号の認識または手話認識を行う場合には、パターン認識装置10は、動画像信号を入力するビデオカメラをさらに備える。音声を利用しないこれらのパターン認識を行う場合には、パターン認識装置10は、マイクロフォン104を備えなくてもよい。
本実施形態のパターン認識装置10で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、本実施形態のパターン認識装置10で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態のパターン認識装置10で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、本実施形態のパターン認識装置10で実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
本実施形態のパターン認識装置10で実行されるプログラムは、上述した特徴抽出部12およびデコーダ20(トークン記憶部31、トークン操作部32、スコア算出部33、重複除去部34、枝刈部35、ラティス記憶部36、ノード追加部37、接続検出部38)を含むモジュール構成となっており、CPU101(プロセッサ)が記憶媒体等からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、特徴抽出部12およびデコーダ20(トークン操作部32、スコア算出部33、重複除去部34、枝刈部35、ノード追加部37、接続検出部38)が主記憶装置上に生成されるようになっている。なお、特徴抽出部12およびデコーダ20の一部または全部がハードウェアにより構成されていてもよい。
(効果)
以上のように、本実施形態に係るデコーダ20によれば、有向グラフ(例えばWFST)の探索が終了した後に、ラティスから累積スコアが最も良い経路を有向グラフを参照しながら見つけ出して出力記号列を生成する。従って、デコーダ20によれば、有向グラフの探索中に、ノード間の接続関係を示すバックポインタの生成および破棄をしなくてよいので、探索処理の計算コストを少なくし、バックポインタ等の管理のための記憶領域を削減することができる。
<第2実施形態>
図7は、第2実施形態に係るデコーダ40のブロック図である。なお、第2実施形態に係るデコーダ40は、第1実施形態のデコーダ20に代えて、パターン認識装置10に備えられる。デコーダ40を構成および実行するプログラムは、第1実施形態に係るデコーダ20と略同一であるので、同一の機能および構成については図面中に同一の符号を付して詳細な説明を省略し、相違点について説明する。
デコーダ40は、削除部41をさらに備える。デコーダ40は、経路の探索の途中において、枝刈りによって、適宜、累積スコアが一定以上悪いトークンを削除する。従って、ラティス記憶部36には、探索中において、対応するトークンが枝刈りにより既に削除されてしまったノードが残存する。すなわち、ラティス記憶部36に記憶されたラティスは、最終フレームで追加されるノードへと繋がらない経路上のノードも保持している。このため、削除部41は、予め定められた数の信号または特徴量が入力される毎に、ラティスから不要なノードを削除する。
具体的には、削除部41は、WFSTを参照して、i回目にラティスに追加したノードのうち、i+1回目にラティスに追加したノードの何れにも到達できないノードを削除する。なお、iは、1以上の整数である。これにより、削除部41は、次のラティスに含まれるノードへと繋がらないノード(すなわち、途中で途絶えた経路上のノード)を、ラティスから削除することができる。
また、i回目に追加したノードを第1のノードとし、第1のノードに接続されたi+1回目に追加したノードを第2のノードとする。この場合、削除部41は、第2のノードに関連付けられた累積スコアが、第1のノードに関連付けられた累積スコアと第2のノードに関連付けられた信号スコアと第1のノードと第2のノードとを接続する経路上の重みとを加算した値に一致する経路を除く経路上のノードを削除してもよい。これにより、削除部41は、次のラティスに含まれるノードへと繋がったとしても、最良の経路へとは繋がっていないノードを、ラティスから削除することができる。なお、重みの付いていない有向グラフを探索する場合には、削除部41は、重みに関する処理を実行せずに、重みを0として累積スコアを算出する。
また、削除部41は、一例として、信号特徴量が入力される毎に毎回、不要なノードを削除してもよい。これに代えて、削除部41は、予め定められた回数毎に不要なノードを削除してもよいし、記憶領域の空きが一定量以下となった場合に不要なノードを削除してもよい。
図8は、第2実施形態に係るデコーダ40における不要なノードの削除処理を表す関数prune(fbegin,fend)の擬似コードを示す図である。
第2実施形態に係るデコーダ40は、図4に示した擬似コードの3行目から15行目の処理中であって、以下の条件を満たす場合に、関数prune(fbegin,fend)を実行する。条件は、図4の3行目から15行目の処理を予め定められた回数繰り返したこと(1回のみも含む)、または、記憶領域の空きが一定量以下となったこと等である。
beginは、不要なフレームを削除するフレーム範囲における最初のフレーム番号を表す。fendは、不要なフレームを削除する範囲における最後のフレーム番号を表す。例えば、50フレーム分の特徴量を処理済みであり、30フレーム目から50フレーム目までの範囲における不要なノードを削除する場合には、デコーダ40は、関数prune(30,50)を呼び出す。なお、図4の3行目から15行目のどの時点で関数pruneを呼び出しても3行目から15行目の処理に影響はない。
1行目では、デコーダ40は、iをfend−1からfbeginまで順に1ずつ減らしていき、そのたびに2行目を処理することを表している。
2行目では、デコーダ40は、次の条件を満たすノードを含む集合でL[i]を更新する。
i番目(1以上の整数)のフレームの信号の特徴量の入力に応じてラティスに追加されたノードをt(第1のノード)とし、i+1番目のフレームの信号の特徴量の入力に応じてラティスに追加されたノードをt(第2のノード)とする。この場合、条件を満たすノードは、tに割り当てられている状態から出ていく遷移eの次状態が、tに割り当てられている状態のいずれかに一致し、且つ、tの累積スコアとeの重みとtの信号スコアとを加算した値がtの累積スコアと一致するノードである。
図9は、第2実施形態に係るデコーダ40における不要なノードの削除処理を表す関数prune(fbegin,fend)の2行目の変形例を示す図である。図8の疑似コードでは、デコーダ40は、最良経路の結果のみを返す場合に、不要なノードを削除することができる。しかし、最良経路以外の結果もラティスに含めて返す場合には、2行目を図9に示すような擬似コードとすればよい。すなわち、デコーダ40は、次の条件を満たすノードを含む集合でL[i]を更新する。
i番目のフレームの信号の特徴量の入力に応じてラティスに追加されたノードをt(第1のノード)とし、i+1番目のフレームの信号の特徴量の入力に応じてラティスに追加されたノードをt(第2のノード)とする。この場合、条件を満たすノードは、tに割り当てられている状態から出ていく遷移eの次状態が、tに割り当てられている状態のいずれかに一致するノードである。
以上のように、本実施形態に係るデコーダ40は、有向グラフの探索中に、ラティスに追加された不要なノードを削除する。これにより、本実施形態に係るデコーダ40によれば、有向グラフの探索中における記憶領域の使用量を削減することができる。
<第3実施形態>
図10は、第3実施形態に係るデコーダ50のブロック図である。なお、第3実施形態に係るデコーダ50は、第1実施形態のデコーダ20に代えて、パターン認識装置10に備えられる。デコーダ50を構成および実行するプログラムは、第1実施形態に係るデコーダ20と略同一であるので、同一の機能および構成については図面中に同一の符号を付して詳細な説明を省略し、相違点について説明する。
デコーダ50は、アーク追加部51をさらに備える。アーク追加部51は、ノード追加部37によるノードの追加が完了した後に、アークをラティスに追加する。すなわち、アーク追加部51は、WFSTの探索が完了した後に、アークをラティスに追加する。この場合、アーク追加部51は、i回目(iは1以上の整数)にラティスに追加したノードから、i+1回目にラティスに追加したノードへのアークを、ラティスに追加する。
アーク追加部51は、アークが追加されたラティスを外部へと出力する。これにより、アーク追加部51は、最良経路の取得以外にも利用が可能な認識結果を出力することができる。なお、デコーダ50は、図7に示す削除部41をさらに有する構成であってもよい。
図11は、第3実施形態に係るデコーダ50の処理内容を表す擬似コードを示す図である。図11の擬似コードは、図4の擬似コードの処理が実行された後に実行される。なお、デコーダ50は、図4の16行目から25行目の処理に代えて、図11の1行目から21行目の処理を実行してもよい。
Dは、アークを含むラティスのノードの集合を表す。Rは、アークの集合を表す。本実施形態では、ノードに累積スコアを割り当てる。また、アークに、1フレーム分を処理したときに通過したε遷移でない遷移の入力記号と、通過した遷移の出力記号を連結した出力記号列とを割り当てる。さらに、1フレーム分を処理したときに累積スコアに加えられた値、すなわち、通過した遷移の重みと信号スコアとを加えた値をアークに割り当てる。このスコアを差分スコアと呼ぶこととする。
アークは、5つの要素の組(前状態,次状態,入力記号,出力記号,差分スコア)で構成される。本実施形態では、ラティスLに含まれるノードを再利用する。Lのノードには、WFSTの状態が割り当てられている。WFSTの状態が必要なければ、ノードから、WFSTの状態を除去した新たなノードを作成してもよい。
図11の擬似コードの1行目では、デコーダ50は、図4の2行目から15行目の処理が終わった時点でのfの値で、fを初期化する。また、デコーダ50は、新しいノードtを作成する。tは、ラティスの終端を表す。つまり、tは、終了ノードを表す。
2行目では、デコーダ50は、ノードの集合Dを、空集合で初期化する。また、デコーダ50は、アークの集合Rを空集合で初期化する。
3行目では、デコーダ50は、図4の17行目と同一の処理を行う。
4行目では、デコーダ50は、Θが空集合でない場合には処理を6行目に進める。Θが空集合である場合には、デコーダ50は、5行目で空のラティスを認識結果として返す。なお、終了状態に達しているノードが1つも存在しなくてもアークを追加したラティスを生成する場合には、デコーダ50は、3行目の擬似コードに、Θを作成する条件であるq∈Fを含めなければよい。
6行目では、デコーダ50は、tに最良の累積スコアを割り当てる。本例では、最大の累積スコアが、最良の累積スコアである。
7行目では、デコーダ50は、tをDに追加する。
8行目は、Θのそれぞれ要素に対して9行目を処理することを示す。
9行目では、デコーダ50は、ノードtからノードtへのアークを作成する。そして、デコーダ50は、作成したアークをRに追加する。追加したアークは、入力記号が空列であり、出力記号列がoであり、差分スコアがwである。また、デコーダ50は、tをDに追加する。
10行目では、デコーダ50は、Θに含まれるノードをTに代入する。
11行目は、12行目から20行目までをfが0になるまで繰り返すことを示す。
12行目では、デコーダ50は、fを1減らす。
13行目では、デコーダ50は、L[f]に含まれるノードのうち、次の条件を満たすノードをTに代入する。条件を満たすノードは、L[f]に含まれるノードtのうち、tが割り当てられている状態を引数とする関数outgoingによって得られる遷移の次状態が、Tに含まれるノードが割り当てられている何れかの状態に一致するノードである。
14行目では、デコーダ50は、DにTを追加する。
15行目は、Tに含まれるそれぞれノードtについて、16行目から19行目を処理することを示す。
16行目は、tが割り当てられている状態を引数に取る関数outgoingによって得られるそれぞれの遷移eについて、17行目から19行目を処理することを示す。
17行目は、Tに含まれているノードが割り当てられている状態のいずれかにeの次状態が一致するか否かを判定し、一致する状態があれば18行目と19行目を処理することを示す。
18行目では、デコーダ50は、17行目で一致した状態が割り当てられていたノードをtに代入する。
19行目では、デコーダ50は、ノードtからノードtへのアークをRに追加する。追加したアークは、入力記号がeの入力記号であり、出力記号列がeの出力記号列であり、差分スコアがeの重みとtの信号スコアとを加算した値である。
20行目では、デコーダ50は、TをTに代入する。
21行目では、デコーダ50は、ノードの集合とアークの集合とをアーク付きのラティスとして返し、処理を終了する。
以上のように、本実施形態に係るデコーダ50は、有向グラフの探索が終了した後に、アークを生成してラティスに追加する。これにより、デコーダ50によれば、有向グラフの探索中においてアークの生成および破棄をする必要が無く、探索処理の計算コストを少なくすることができる。
<第4実施形態>
図12は、第4実施形態に係るデコーダ60のブロック図である。なお、第4実施形態に係るデコーダ60は、第1実施形態のデコーダ20に代えて、パターン認識装置10に備えられる。デコーダ60を構成および実行するプログラムは、第1実施形態に係るデコーダ20と略同一であるので、同一の機能および構成については図面中に同一の符号を付して詳細な説明を省略し、相違点について説明する。
第4実施形態に係るデコーダ60は、トークン記憶部31と、複数のトークン操作部32と、複数のスコア算出部33と、複数の重複除去部34と、複数の枝刈部35と、ラティス記憶部36と、ノード追加部37と、接続検出部38と、第1分割部61と、第1収集部62と、第2分割部63と、第2収集部64と、第3分割部65と、第3収集部66と、第4分割部67と、第4収集部68とを備える。
第1分割部61は、信号または信号の特徴量を入力する毎に、トークン記憶部31に記憶された複数のトークンを複数のトークン操作部32に対応した複数の小集合に分割する。そして、第1分割部61は、複数のトークン操作部32のそれぞれに、対応する小集合に含まれるトークンを分配する。複数のトークン操作部32のそれぞれは、受け取った小集合に含まれるトークンのそれぞれを、次の状態に移動させる。この場合において、複数のトークン操作部32は、互いに並行して処理を実行する。
第1収集部62は、複数のトークン操作部32により移動された複数のトークンを収集する。そして、第1収集部62は、収集した複数のトークンをトークン記憶部31に記憶させる。
第2分割部63は、第1収集部62により収集されトークン記憶部31に記憶された複数のトークンを、複数の重複除去部34に対応した複数の小集合に分割する。この場合において、第2分割部63は、同一の状態に到達したトークンを同一の小集合に含めるように分割する。そして、第2分割部63は、複数の重複除去部34のそれぞれに、対応する小集合に含まれるトークンを分配する。複数の重複除去部34のそれぞれは、受け取った小集合に含まれるトークンのそれぞれに関して、同一の状態に到達したトークンの重複を除去する。より具体的には、複数の重複除去部34は、同一の状態に到達した複数のトークンのうち累積スコアが最良のトークンを残存させる。この場合において、複数の重複除去部34は、互いに並行して処理を実行する。
第2収集部64は、複数の重複除去部34の除去の結果、残った複数のトークンを収集する。そして、第2収集部64は、収集した複数のトークンをトークン記憶部31に記憶させる。
第3分割部65は、第2収集部64により収集されトークン記憶部31に記憶された複数のトークンを、複数のスコア算出部33に対応した複数の小集合に分割する。そして、第3分割部65は、複数のスコア算出部33のそれぞれに、対応する小集合に含まれるトークンを分配する。複数のスコア算出部33は、受け取った小集合に含まれる複数のトークンのそれぞれに対応する信号スコアおよび累積スコアを算出する。この場合において、複数のスコア算出部33は、互いに並行して処理を実行する。
第3収集部66は、複数のスコア算出部33によりスコアが算出された複数のトークンを収集する。そして、第3収集部66は、収集した複数のトークンをトークン記憶部31に記憶させる。
第4分割部67は、第3収集部66により収集されトークン記憶部31に記憶された複数のトークンを、複数の枝刈部35に対応した複数の小集合に分割する。そして、第4分割部67は、複数の枝刈部35のそれぞれに、対応する小集合に含まれるトークンを分配する。複数の枝刈部35は、累積スコアが一定以上悪いトークンを除去する。この場合において、複数の枝刈部35は、互いに並行して処理を実行する。
第4収集部68は、複数の枝刈部35によりスコアが算出された複数のトークンを収集する。そして、第4収集部68は、収集した複数のトークンをトークン記憶部31に記憶させる。
なお、第4実施形態に係るデコーダ60は、図7に示す削除部41および図10に示すアーク追加部51をさらに備える構成であってもよい。
図13は、第4実施形態に係るデコーダ60のスレッドのブロック図である。第4実施形態に係るパターン認識装置10のハードウェア構成は、図6で示した構成に、1以上のCPU101を追加した構成である。
また、デコーダ60は、複数のCPU101により実現される複数のスレッドにより、タスクを実行する。デコーダ60は、一例として、メインスレッド71と、タスクキュー72と、結果キュー73と、複数のワーカースレッド74とを備える。
メインスレッド71は、タスクを生成してタスクキュー72に格納する処理、および、結果キュー73から結果を取得して結合する処理を実行する。ワーカースレッド74は、タスクキュー72からタスクを取得して実行する。デコーダ60は、並列して実行するタスクの数分、ワーカースレッド74を備える。デコーダ60は、一例として、複数のCPU101の数分のワーカースレッド74を備える。それぞれのワーカースレッド74は、タスクを実行することにより得られた結果を、結果キュー73に格納する。
タスクキュー72および結果キュー73は、排他制御されており、複数のワーカースレッド74およびメインスレッド71から同時にアクセスがされない。なお、CPU101が1つの場合には、デコーダ60は、ワーカースレッド74を備えずに、メインスレッド71がタスクを実行する。これにより、CPU101が1つの場合には、デコーダ60は、排他制御を実行しなくてよくなり、処理コストを削減できる。
図14は、第4実施形態に係るデコーダ60のメインスレッド71が実行する処理内容を表す擬似コードを示す図である。図15は、デコーダ60のワーカースレッド74が実行する処理内容を表す擬似コードを示す図である。
なお、図14の擬似コードの行番号と図15の擬似コードの行番号とを区別するため、図14の擬似コードの行番号を1行目から開始するコードとし、図15の擬似コードの行番号を101行目から開始するコードとする。
なお、Qtaskは、タスクキュー72を表す。Qresultは、結果キュー73を表す。
デコーダ60は、特徴量が入力される毎に、3行目から25行目までを繰り返し処理する。概略として、第1フェーズ(4行目から8行目)で、デコーダ60は、トークンを次の状態に移動させる。第2フェーズ(9行目から13行目)で、デコーダ60は、不要なトークンを取り除く。第3フェーズ(14行目から19行目)で、デコーダ60は、信号スコアおよび累積スコアを算出する。第4フェーズ(21行目から25行目)で、デコーダ60は、累積スコアが条件を満たさないトークンを枝刈りし、ラティスのノードとしてL[f]に残ったトークンを追加する。26行目以降は、第1実施形態で説明した図4の16行目以降と同一の処理である。
以下、各行において実行される処理を説明する。
図14の1行目では、メインスレッド71は、処理中のタスクの数を表す変数nを0に初期化する。他の処理は、図4の1行目と同様である。
2行目および3行目は、図4の2行目および3行目と同様である。
4行目では、メインスレッド71は、関数splitによってL[f]に記録されている複数のノードに対応する複数のトークンを分割し、1以上のトークンを含む小集合を要素とする集合を返す。その集合の要素をTsubとする。そして、メインスレッド71は、小集合毎に5行目の処理を実行する。
ここで、関数splitは、複数のトークンをどのように分割してもよい。関数splitは、一例として、ワーカースレッド74の数に複数のトークンを分割する。また、関数splitは、L[f]に含まれるノードの数で複数のトークンを分割してもよい。これにより、1タスクで1つのトークンに対する処理を実行させることができる。なお、細かく分割するほど並行度は上がるが、5行目や8行目のキューの操作の回数が増えるため、全体として処理速度が向上するとは限らない。
5行目では、メインスレッド71は、タスクをQtaskに追加する。タスクの名前は、phase1である。タスクに付随するデータは、Tsubである。メインスレッド71は、タスクを1つ追加したので、nを1増やす。
6行目では、メインスレッド71は、Tを空集合にする。
7行目は、全てのタスクが処理されるまで8行目を処理することを示す。8行目では、メインスレッド71は、Qresultから結果を取得する。得られた値は、移動後のトークンの集合である。メインスレッド71は、得られた値をTに追加する。また、結果が得られたということは1つのタスクが終了したということなので、メインスレッド71は、nを1減らす。Qresultに結果が1つも入っていない場合には、メインスレッド71は、結果が得られるまで待つ。
ワーカースレッド74は、5行目で追加されたタスクを、図15に示す疑似コードに従って処理する。図15の101行目は、処理を完了するまでの間、102行目から122行目までを繰り返し実行することを示す。102行目では、ワーカースレッド74は、Qtaskにタスクが追加されるまで待機し、Qtaskにタスクが追加されると、そのタスクを取り出す。取り出したタスクの名前をuname、データをudataとする。
103行目は、追加されたタスクの名前がphase1である場合、104行目から109行目を処理することを示す。104行目では、ワーカースレッド74は、udataからデータを取り出し、取り出したデータをTとする。また、ワーカースレッド74は、Tnewを空集合で初期化する。105行目は、106行目から108行目までをTに含まれるそれぞれのトークンについて処理することを示す。
106行目から108行目では、ワーカースレッド74は、トークンを追加する集合をTnewへ変更して、図4の6行目から8行目と同様に処理する。109行目では、ワーカースレッド74は、得られたトークンの集合TnewをQresultへ追加して、このタスクの処理を終了する。
図14の9行目では、メインスレッド71は、関数splitによって、トークンの集合を分割し、1以上のトークンを含む小集合を要素とする集合Tsubを返す。そして、メインスレッド71は、小集合毎に10行目の処理を実行する。
9行目の分割では、4行目の分割と異なり、メインスレッド71は、同じ状態が割り当てられているトークンを同じトークンの集合に含める、という条件に従って分割をする。分割後のトークンの小集合としてTとTがあり、これらに含まれているトークンの状態の集合をそれぞれstate(T)とstate(T)とする。この場合、state(T)とstate(T)との両方に同じ状態が含まれていてはならない。なお、デコーダ60は、状態とコンテキスト情報とが同一の複数のトークンのうち、最も累積スコアが良いトークンを残存させてもよい。この場合、メインスレッド71は、同一の状態に複数のトークンが割り当てられるので、9行目では、状態とコンテキスト情報とが同じトークンを同じトークンの集合に含める、という条件に従って分割をする。
10行目では、メインスレッド71は、タスクをQtaskに追加する。タスクの名前は、phase2である。付随するデータは、Tsubである。メインスレッド71は、タスクを1つ追加したので、nを1増やす。
11行目では、メインスレッド71は、Tを空集合にする。
12行目は、全てのタスクが処理されるまで13行目を処理することを示す。13行目では、メインスレッド71は、Qresultから結果を取得する。得られる値は、不要なトークンを除いたトークンの集合である。メインスレッド71は、得られた値をTに追加する。また、結果が得られたということは1つのタスクが終了したということなので、メインスレッド71は、nを1減らす。Qresultに結果が1つも入っていない場合には、メインスレッド71は、結果が得られるまで待つ。
ワーカースレッド74は、10行目で追加されたタスクを、図15に示す疑似コードに従って処理する。110行目は、追加されたタスクの名前がphase2である場合、111行目から112行目を処理することを示す。
111行目では、ワーカースレッド74は、udataからデータを取り出し、取り出したデータをTとする。112行目では、ワーカースレッド74は、図4の9行目と同様に処理する。すなわち、ワーカースレッド74は、Tに含まれるトークンのうち、割り当てられている状態が同じトークンが複数ある場合に累積スコアが最も大きいものを1つ残す。ワーカースレッド74は、残存したトークンの集合をQresultへ追加して、このタスクの処理を終了する。
図14の14行目では、メインスレッド71は、4行目と同様に、関数splitによってトークンの集合を分割し、1以上のトークンを含む小集合を要素とする集合を返す。そして、メインスレッド71は、小集合毎に15行目の処理を実行する。
15行目では、メインスレッド71は、タスクをQtaskに追加する。タスクの名前は、phase3である。付随するデータは、Tsubと特徴量vである。メインスレッド71は、タスクを1つ追加したので、nを1増やす。
16行目では、メインスレッド71は、Tを空集合にする。また、メインスレッド71は、wmaxをマイナス無限大に初期化する。実際には、メインスレッド71は、wmaxに設定できる最小値を設定する。
17行目は、全てのタスクが処理されるまで18行目から19行目を処理することを示す。18行目では、メインスレッド71は、Qresultから結果を取得する。メインスレッド71は、得られた値をTとwとする。また、結果が得られたということは1つのタスクが終了したということなので、メインスレッド71は、nを1減らす。Qresultに結果が1つも入っていない場合には、メインスレッド71は、結果が得られるまで待つ。
19行目では、メインスレッド71は、TをTに追加する。また、wがwmaxよりも大きい場合には、メインスレッド71は、wmaxをwに更新する。
ワーカースレッド74は、15行目で追加されたタスクを、図15に示す疑似コードに従って処理する。113行目は、追加されたタスクの名前がphase3である場合、114行目から119行目を処理することを示す。
114行目では、ワーカースレッド74は、udataからデータを取り出し、取り出したトークンの集合をTとし、特徴量をvとする。115行目から118行目では、ワーカースレッド74は、TをTに変更して、図4の10行目から13行目と同様に処理する。119行目では、ワーカースレッド74は、2つの要素の組(T,wmax)をQresultへ追加して、このタスクの処理を終了する。
図14の20行目では、メインスレッド71は、図4の14行目と同様に処理する。
21行目では、メインスレッド71は、4行目と同様に、関数splitによってトークンの集合を分割し、1以上のトークンを含む小集合を要素とする集合を返す。そして、メインスレッド71は、小集合毎に22行目の処理を実行する。
22行目では、メインスレッド71は、タスクをQtaskに追加する。タスクの名前は、phase4である。付随するデータは、Tsubと累積スコアの最大値wmaxである。メインスレッド71は、タスクを1つ追加したので、nを1増やす。
23行目では、メインスレッド71は、L[f]を空集合にする。
24行目は、全てのタスクが処理されるまで25行目を処理することを示す。25行目では、メインスレッド71は、Qresultから結果を取得する。得られる値は、枝刈りされたトークンを除いたトークンの集合である。メインスレッド71は、得られた結果をL[f]に追加する。また、結果が得られたということは1つのタスクが終了したということなので、メインスレッド71は、nを1減らす。Qresultに結果が1つも入っていない場合には、メインスレッド71は、結果が得られるまで待つ。
ワーカースレッド74は、22行目で追加されたタスクを、図15に示す疑似コードに従って処理する。120行目は、追加されたタスクの名前がphase4である場合、121行目から122行目を処理することを示す。
121行目では、ワーカースレッド74は、udataからデータを取り出し、トークンの集合をTとし、累積スコアの最大値をwmaxとする。122行目では、ワーカースレッド74は、図4の15行目と同様に処理する。すなわち、ワーカースレッド74は、wmaxから一定値wbeamを引いた値より累積スコアが小さいトークンを除去する。ワーカースレッド74は、残ったトークンの集合をQresultへ追加して、このタスクの処理を終了する。
そして、図14の26行目から35行目では、メインスレッド71は、図4の16行目から25行目と同様に処理する。
以上で説明したように、デコーダ60は、タスクキュー72と結果キュー73を用いて、メインスレッド71とワーカースレッド74との間でデータを受け渡す。このため、デコーダ60では、タスクキュー72と結果キュー73が排他制御されていれば、他の部分の排他制御をしなくてもよい。
なお、第2実施形態に係る関数pruneも、タスクの1つとしてワーカースレッド74に処理させることができる。この場合、図14の2行目から25行目のどの時点でも、タスクをQtaskに追加することができる。ただし、25行目の処理中に追加中のノードを含む範囲を関数pruneに渡すことはできない。その範囲を含まなければ図14の2行目から25行目までの処理中にラティスが変更されることはないため、互いに独立に処理を進めることができる。
また、メインスレッド71は、3行目の特徴量の取得を14行目の直前で実行してもよい。特徴量の取得を遅らせることにより、パターン認識装置10は、特徴量を算出する処理とトークンを進める処理とを並行して行うことができる。
以上のように、本実施形態に係るデコーダ60は、複数のCPU101を用いて並行に処理を実行することができるので、処理時間を短くすることができる。
<有向グラフの変形例>
以上の第1から第4実施形態では、探索する有向グラフとしてWFSTを用いた例を説明した。しかし、他の有向グラフを探索して同様にラティスを生成することもできる。他の有向グラフとは、入力記号、出力記号、および、重みの割り当て方が、WFSTと異なる有向グラフである。すなわち、入力記号、出力記号および重みが状態または遷移の何れかに割り当てられた有向グラフであれば、どのような有向グラフを用いてもよい。
このような有向グラフは、8種類存在する。これらの有向グラフは、互いに変換可能である。例えば、第1から第4実施形態では、入ってくる遷移の入力記号は全て同じであった。これは、入力記号が状態に割り当てられていることと同じである。すなわち、入ってくる遷移の入力記号を状態に割り当てなおしても、それぞれ経路上にある入力記号を繋げた入力記号列は、全て割り当てなおす前の入力記号列と同一である。
また、言語モデルおよびHMMの遷移確率等を用いない場合、有向グラフの重みは0となる。例えば、孤立単語認識を行う場合には、重みが0の有向グラフが用いられる。この場合、デコーダ20等は、記憶領域に重みを保持しなくてよく、さらに、重みに関する処理を全て実行しなくてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
10 パターン認識装置
12 特徴抽出部
20 デコーダ
22 記憶部
31 トークン記憶部
32 トークン操作部
33 スコア算出部
34 重複除去部
35 枝刈部
36 ラティス記憶部
37 ノード追加部
38 接続検出部
40 デコーダ
41 削除部
50 デコーダ
51 アーク追加部
60 デコーダ
61 第1分割部
62 第1収集部
63 第2分割部
64 第2収集部
65 第3分割部
66 第3収集部
67 第4分割部
68 第4収集部
71 メインスレッド
72 タスクキュー
73 結果キュー
74 ワーカースレッド
101 CPU
102 操作部
103 表示部
104 マイクロフォン
105 ROM
106 RAM
107 記憶部
108 通信装置
109 バス

Claims (20)

  1. 有向グラフを探索して、入力された信号列または前記信号の特徴量列に応じたラティスの一部または全部を生成するデコーダであって、
    前記有向グラフは、入力記号および出力記号が状態または遷移に割り当てられ、
    前記入力記号は、前記信号または前記特徴量から信号スコアを算出するためのアルゴリズムまたはデータの少なくとも一方を示すスコア識別子であり、
    前記デコーダは、
    前記信号または前記特徴量を入力する毎に、探索中の経路の先頭の状態が割り当てられたオブジェクトである複数のトークンのそれぞれを、前記有向グラフに従って、空ではない入力記号が割り当てられている状態または遷移に達するまで移動させるトークン操作部と、
    トークンを移動させる毎に、前記複数のトークンのそれぞれに割り当てられた状態に対応するノードを前記ラティスに追加するノード追加部と、
    i回目(iは1以上の整数)に前記ラティスに追加したノードに接続された、i+1回目に前記ラティスに追加したノードを、前記有向グラフを参照して検出する接続検出部と、
    を備えるデコーダ。
  2. i回目に前記ラティスに追加したノードから、i+1回目に前記ラティスに追加したノードへのアークを、前記ラティスに追加するアーク追加部をさらに備える
    請求項1に記載のデコーダ。
  3. 前記アーク追加部は、前記ノード追加部によるノードの追加が完了した後に、前記アークを前記ラティスに追加する
    請求項2に記載のデコーダ。
  4. 前記トークンを移動させる毎に、前記複数のトークンのそれぞれに対して、経路の先頭の状態または遷移に割り当てられた前記入力記号に応じた信号スコア、および、経路上の前記信号スコアを累積した累積スコアを算出するスコア算出部をさらに備える
    請求項1に記載のデコーダ。
  5. 前記ノード追加部は、追加する前記ノードのそれぞれに対して、
    元となる前記トークンの前記信号スコアおよび前記累積スコア、
    並びに、元となる前記トークンが表す経路の先頭の状態を関連付ける
    請求項4に記載のデコーダ。
  6. 前記接続検出部は、
    i回目に追加したノードを第1のノードとし、前記第1のノードに接続されたi+1回目に追加したノードを第2のノードとした場合、
    前記第2のノードに関連付けられた前記累積スコアが、前記第1のノードに関連付けられた前記累積スコアと前記第2のノードに関連付けられた前記信号スコアとを加算した値に一致する経路を検出する
    請求項5に記載のデコーダ。
  7. 前記有向グラフは、さらに、状態または遷移に重みが割り当てられており、
    前記スコア算出部は、前記複数のトークンのそれぞれに対して、前記信号スコア、および、前記トークンが表す経路上の前記重みと前記信号スコアとを累積した累積スコアを算出する
    請求項4に記載のデコーダ。
  8. 前記ノード追加部は、追加する前記ノードのそれぞれに対して、
    元となる前記トークンの前記信号スコアおよび前記累積スコア、
    並びに、元となる前記トークンが表す経路の先頭の状態を関連付ける
    請求項7に記載のデコーダ。
  9. 前記接続検出部は、
    i回目に追加したノードを第1のノードとし、前記第1のノードに接続されたi+1回目に追加したノードを第2のノードとした場合、
    前記第2のノードに関連付けられた前記累積スコアが、前記第1のノードに関連付けられた前記累積スコアと前記第2のノードに関連付けられた前記信号スコアと前記第1のノードと前記第2のノードとを接続する経路上の重みとを加算した値に一致する経路を検出する
    請求項8に記載のデコーダ。
  10. 予め定められた数の前記信号または前記特徴量が入力される毎に、前記ラティスから不要なノードを削除する削除部
    をさらに備える請求項1に記載のデコーダ。
  11. 前記削除部は、前記有向グラフを参照して、i回目に前記ラティスに追加したノードのうち、i+1回目に前記ラティスに追加したノードの何れにも到達できないノードを削除する
    請求項10に記載のデコーダ。
  12. 前記トークンを移動させる毎に、前記複数のトークンのそれぞれに対して、経路の先頭の状態または遷移に割り当てられた前記入力記号に応じた信号スコア、および、経路上の前記信号スコアを累積した累積スコアを算出するスコア算出部をさらに備え、
    前記削除部は、
    i回目に追加したノードを第1のノードとし、前記第1のノードに接続されたi+1回目に追加したノードを第2のノードとした場合、
    前記第2のノードに関連付けられた前記累積スコアが、前記第1のノードに関連付けられた前記累積スコアと前記第2のノードに関連付けられた前記信号スコアとを加算した値に一致する経路を除く経路上のノードを削除する
    請求項11に記載のデコーダ。
  13. 前記有向グラフは、さらに、状態または遷移に重みが割り当てられており、
    前記スコア算出部は、前記複数のトークンのそれぞれに対して、前記信号スコア、および、前記トークンが表す経路上の前記重みと前記信号スコアとを累積した累積スコアを算出し、
    前記削除部は、
    i回目に追加したノードを第1のノードとし、前記第1のノードに接続されたi+1回目に追加したノードを第2のノードとした場合、
    前記第2のノードに関連付けられた前記累積スコアが、前記第1のノードに関連付けられた前記累積スコアと前記第2のノードに関連付けられた前記信号スコアと前記第1のノードと前記第2のノードとを接続する経路上の重みとを加算した値に一致する経路を除く経路上のノードを削除する
    請求項12に記載のデコーダ。
  14. 前記デコーダは、
    互いに並行して処理を実行する複数の前記トークン操作部と、
    互いに並行して処理を実行する複数の前記重複除去部と、
    前記複数のトークンを前記複数のトークン操作部に対応した複数の小集合に分割して、前記複数のトークン操作部のそれぞれに、対応する小集合に含まれるトークンを分配する第1分割部と、
    前記複数のトークン操作部により移動された複数のトークンを収集する第1収集部と、
    前記第1収集部により収集された前記複数のトークンを前記複数の重複除去部に対応した複数の小集合に分割して、前記複数の重複除去部のそれぞれに、対応する小集合に含まれるトークンを分配する第2分割部と、
    前記複数の重複除去部による除去の結果、残った複数のトークンを収集する第2収集部と、
    をさらに備える
    請求項1に記載のデコーダ。
  15. 前記第2分割部は、同一の状態に到達したトークンを同一の小集合に含める
    請求項14に記載のデコーダ。
  16. 前記トークンが移動される毎に、前記トークンが表す経路の先頭の状態または遷移に割り当てられた前記入力記号に応じた信号スコア、および、前記トークンが表す経路上の前記信号スコアを累積した累積スコアを、互いに並行して算出する複数のスコア算出部と、
    前記複数のトークンを前記複数のスコア算出部に対応した複数の小集合に分割して、前記複数のスコア算出部のそれぞれに、対応する小集合に含まれるトークンを分配する第3分割部と、
    前記複数のスコア算出部により前記信号スコアおよび前記累積スコアが算出された複数のトークンを収集する第3収集部と、
    をさらに備える
    請求項1に記載のデコーダ。
  17. 累積スコアが一定以上悪いトークンを、互いに並行して除去する複数の枝刈部と、
    前記複数のトークンを前記複数の枝刈部に対応した複数の小集合に分割して、前記複数の枝刈部のそれぞれに、対応する小集合に含まれるトークンを分配する第4分割部と、
    前記複数の枝刈部による除去の結果、残った複数のトークンを収集する第4収集部と、
    をさらに備える請求項1に記載のデコーダ。
  18. 同一の状態に到達した複数のトークンのうち前記累積スコアが最良のトークンを残存させる重複除去部をさらに備える
    請求項16に記載のデコーダ。
  19. コンピュータにより、有向グラフを探索して、入力された信号列または前記信号の特徴量列に応じたラティスの一部または全部を生成するデコード方法であって、
    前記有向グラフは、入力記号および出力記号が状態または遷移に割り当てられ、
    前記入力記号は、前記信号または前記特徴量から信号スコアを算出するためのアルゴリズムまたはデータの少なくとも一方を示すスコア識別子であり、
    前記信号または前記特徴量を入力する毎に、探索中の経路の先頭の状態が割り当てられたオブジェクトである複数のトークンのそれぞれを、前記有向グラフに従って、空ではない入力記号が割り当てられている状態または遷移に達するまで移動させるトークン操作ステップと、
    トークンを移動させる毎に、前記複数のトークンのそれぞれに割り当てられた状態に対応するノードを前記ラティスに追加するノード追加部と、
    i回目(iは1以上の整数)に前記ラティスに追加したノードに接続された、i+1回目に前記ラティスに追加したノードを、前記有向グラフを参照して検出する接続検出ステップと、
    を含むデコード方法。
  20. コンピュータを、有向グラフを探索して、入力された信号列または前記信号の特徴量列に応じたラティスの一部または全部を生成するデコーダとして機能させるためのプログラムであって、
    前記有向グラフは、入力記号および出力記号が状態または遷移に割り当てられ、
    前記入力記号は、前記信号または前記特徴量から信号スコアを算出するためのアルゴリズムまたはデータの少なくとも一方を示すスコア識別子であり、
    前記コンピュータを、
    前記信号または前記特徴量を入力する毎に、探索中の経路の先頭の状態が割り当てられたオブジェクトである複数のトークンのそれぞれを、前記有向グラフに従って、空ではない入力記号が割り当てられている状態または遷移に達するまで移動させるトークン操作部と、
    トークンを移動させる毎に、前記複数のトークンのそれぞれに割り当てられた状態に対応するノードを前記ラティスに追加するノード追加部と、
    i回目(iは1以上の整数)に前記ラティスに追加したノードに接続された、i+1回目に前記ラティスに追加したノードを、前記有向グラフを参照して検出する接続検出部
    として機能させるプログラム。
JP2013266007A 2013-12-24 2013-12-24 デコーダ、デコード方法およびプログラム Active JP6315980B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013266007A JP6315980B2 (ja) 2013-12-24 2013-12-24 デコーダ、デコード方法およびプログラム
US14/574,892 US9786272B2 (en) 2013-12-24 2014-12-18 Decoder for searching a digraph and generating a lattice, decoding method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013266007A JP6315980B2 (ja) 2013-12-24 2013-12-24 デコーダ、デコード方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2015121709A true JP2015121709A (ja) 2015-07-02
JP6315980B2 JP6315980B2 (ja) 2018-04-25

Family

ID=53400689

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013266007A Active JP6315980B2 (ja) 2013-12-24 2013-12-24 デコーダ、デコード方法およびプログラム

Country Status (2)

Country Link
US (1) US9786272B2 (ja)
JP (1) JP6315980B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151413A (ja) * 2017-03-09 2018-09-27 株式会社東芝 音声認識装置、音声認識方法およびプログラム
US10109274B2 (en) 2014-11-28 2018-10-23 Kabushiki Kaisha Toshiba Generation device, recognition device, generation method, and computer program product
US10319373B2 (en) 2016-03-14 2019-06-11 Kabushiki Kaisha Toshiba Information processing device, information processing method, computer program product, and recognition system
US10452355B2 (en) 2014-09-18 2019-10-22 Kabushiki Kaisha Toshiba Automaton deforming device, automaton deforming method, and computer program product
US10572538B2 (en) 2015-04-28 2020-02-25 Kabushiki Kaisha Toshiba Lattice finalization device, pattern recognition device, lattice finalization method, and computer program product
US10600407B2 (en) 2016-07-20 2020-03-24 Kabushiki Kaisha Toshiba Generation device, recognition system, and generation method for generating finite state transducer
US10803858B2 (en) 2016-11-11 2020-10-13 Kabushiki Kaisha Toshiba Speech recognition apparatus, speech recognition method, and computer program product

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6315980B2 (ja) * 2013-12-24 2018-04-25 株式会社東芝 デコーダ、デコード方法およびプログラム
US10255358B2 (en) 2014-12-30 2019-04-09 Facebook, Inc. Systems and methods for clustering items associated with interactions
CN107205265B (zh) * 2016-03-16 2020-02-14 华为技术有限公司 一种无线保真wi-fi测距方法、相关设备及系统
CN105895081A (zh) * 2016-04-11 2016-08-24 苏州思必驰信息科技有限公司 一种语音识别解码的方法及装置
US10199037B1 (en) * 2016-06-29 2019-02-05 Amazon Technologies, Inc. Adaptive beam pruning for automatic speech recognition
US10664307B1 (en) * 2017-04-04 2020-05-26 Yellowbrick Data, Inc. System and method for assigning tasks to computer system elements
WO2018232591A1 (en) * 2017-06-20 2018-12-27 Microsoft Technology Licensing, Llc. SEQUENCE RECOGNITION PROCESSING
CN108899028A (zh) * 2018-06-08 2018-11-27 广州视源电子科技股份有限公司 语音唤醒方法、搜索方法、装置和终端
US11876969B2 (en) * 2022-02-11 2024-01-16 Qualcomm Incorporated Neural-network media compression using quantized entropy coding distribution parameters

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202384A (ja) * 1995-01-20 1996-08-09 Fuji Xerox Co Ltd 音声認識方法及び装置
JP2005215672A (ja) * 2004-01-05 2005-08-11 Toshiba Corp 音声認識システム及び方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4849905A (en) 1987-10-28 1989-07-18 International Business Machines Corporation Method for optimized RETE pattern matching in pattern-directed, rule-based artificial intelligence production systems
US7110621B1 (en) * 2000-05-19 2006-09-19 Xerox Corporation Assist channel coding using a rewrite model
JP4241771B2 (ja) 2006-07-04 2009-03-18 株式会社東芝 音声認識装置及びその方法
JP4956334B2 (ja) 2007-08-29 2012-06-20 株式会社東芝 オートマトンの決定化方法、有限状態トランスデューサの決定化方法、オートマトン決定化装置及び決定化プログラム
GB2453366B (en) 2007-10-04 2011-04-06 Toshiba Res Europ Ltd Automatic speech recognition method and apparatus
JP5572624B2 (ja) * 2008-07-03 2014-08-13 グーグル・インコーポレーテッド 機械翻訳に対するパラメータの最適化
JP5121650B2 (ja) 2008-09-26 2013-01-16 株式会社東芝 情報処理装置、情報処理方法及びプログラム
JP4977163B2 (ja) 2009-03-30 2012-07-18 株式会社東芝 有限状態トランスデューサ決定化装置及び有限状態トランスデューサ決定化方法
US8484154B2 (en) 2009-12-14 2013-07-09 Intel Corporation Methods and systems to traverse graph-based networks
JP5232191B2 (ja) 2010-03-19 2013-07-10 株式会社東芝 情報処理装置、情報処理方法およびプログラム
JP5467643B2 (ja) 2010-04-28 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 文書の類似度を判定する方法、装置及びプログラム。
JP5554304B2 (ja) 2011-09-16 2014-07-23 株式会社東芝 オートマトン決定化方法、オートマトン決定化装置およびオートマトン決定化プログラム
JP2013164572A (ja) 2012-01-10 2013-08-22 Toshiba Corp 音声特徴量抽出装置、音声特徴量抽出方法及び音声特徴量抽出プログラム
CN103971686B (zh) * 2013-01-30 2015-06-10 腾讯科技(深圳)有限公司 自动语音识别方法和系统
JP6315980B2 (ja) * 2013-12-24 2018-04-25 株式会社東芝 デコーダ、デコード方法およびプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202384A (ja) * 1995-01-20 1996-08-09 Fuji Xerox Co Ltd 音声認識方法及び装置
JP2005215672A (ja) * 2004-01-05 2005-08-11 Toshiba Corp 音声認識システム及び方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
LJOLJE, ANDREJ ET AL.: "Efficient General Lattice Generation and Rescoring", PROC. OF EUROSPEECH'99, JPN7017002552, 5 September 1999 (1999-09-05), pages 1251 - 1254 *
S.J. YOUNG ET AL.: "Token Passing: a Simple Conceptual Model for Connected Speech Recognition Systems", [ONLINE], JPN7017002553, 31 July 1989 (1989-07-31), pages 1 - 23, XP000571340 *
大西翼 他: "WFST音声認識デコーダの開発とその性能評価", 情報処理学会研究報告, vol. 2007, no. 103, JPN6017029623, 19 October 2007 (2007-10-19), pages 1 - 6 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452355B2 (en) 2014-09-18 2019-10-22 Kabushiki Kaisha Toshiba Automaton deforming device, automaton deforming method, and computer program product
US10109274B2 (en) 2014-11-28 2018-10-23 Kabushiki Kaisha Toshiba Generation device, recognition device, generation method, and computer program product
US10572538B2 (en) 2015-04-28 2020-02-25 Kabushiki Kaisha Toshiba Lattice finalization device, pattern recognition device, lattice finalization method, and computer program product
US10319373B2 (en) 2016-03-14 2019-06-11 Kabushiki Kaisha Toshiba Information processing device, information processing method, computer program product, and recognition system
US10600407B2 (en) 2016-07-20 2020-03-24 Kabushiki Kaisha Toshiba Generation device, recognition system, and generation method for generating finite state transducer
US10803858B2 (en) 2016-11-11 2020-10-13 Kabushiki Kaisha Toshiba Speech recognition apparatus, speech recognition method, and computer program product
JP2018151413A (ja) * 2017-03-09 2018-09-27 株式会社東芝 音声認識装置、音声認識方法およびプログラム

Also Published As

Publication number Publication date
US9786272B2 (en) 2017-10-10
US20150179166A1 (en) 2015-06-25
JP6315980B2 (ja) 2018-04-25

Similar Documents

Publication Publication Date Title
JP6315980B2 (ja) デコーダ、デコード方法およびプログラム
JP6404564B2 (ja) デコーダ、デコード方法およびプログラム
Hannun Sequence modeling with ctc
JP4977163B2 (ja) 有限状態トランスデューサ決定化装置及び有限状態トランスデューサ決定化方法
JP6301647B2 (ja) 探索装置、探索方法およびプログラム
JP5554304B2 (ja) オートマトン決定化方法、オートマトン決定化装置およびオートマトン決定化プログラム
JP6618884B2 (ja) 認識装置、認識方法およびプログラム
JP2011123494A (ja) グラフベースのネットワークを横断するための方法及びシステム
JP6301664B2 (ja) 変換装置、パターン認識システム、変換方法およびプログラム
JP6585022B2 (ja) 音声認識装置、音声認識方法およびプログラム
WO2018232591A1 (en) SEQUENCE RECOGNITION PROCESSING
JP5103907B2 (ja) 音声認識システム、音声認識方法及び音声認識プログラム
JP2020020872A (ja) 識別器、学習済モデル、学習方法
JP5447373B2 (ja) 言語モデルスコア先読み値付与装置およびその方法ならびにプログラム記録媒体
JP6562698B2 (ja) ラティス確定装置、パターン認識装置、ラティス確定方法およびプログラム
JP5113863B2 (ja) 用語抽出方法とその装置と、プログラム
JP6665029B2 (ja) 言語解析装置、言語解析方法、及びプログラム
JP2015153240A (ja) パターン認識装置、パターン認識方法およびプログラム
KR102386627B1 (ko) 음성 인식에 관한 빔 서치 방법 및 장치
JP5392780B2 (ja) コンテンツ構造化処理方法、コンテンツ構造化処理装置及びコンテンツ構造化処理プログラム
JP6569543B2 (ja) 短縮文生成装置、方法およびプログラム。
by Dr et al. Structured Discriminative Models for Sequential Data Classification
JP2012194364A (ja) 音声認識装置、音声認識方法及びプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170905

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180327

R151 Written notification of patent or utility model registration

Ref document number: 6315980

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

Free format text: JAPANESE INTERMEDIATE CODE: R313114

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350