(57)【要約】【課題】  本発明の実施形態は、音響モデリングのための装置、方法、及びシステムを含む。【解決手段】  一実施形態において、特徴ベクトルとガウス確率分布ベクトルとの間の１次元スコアを計算するための演算論理ユニットが提供される。演算論理ユニットは、ガウス確率分布ベクトルの次元に関連付けられた平均値及び分散値並びに特徴ベクトルの次元に基づいた第１の値を計算するように構成された計算論理ユニットと、分散値に基づいた第２の値を出力するように構成されたルックアップテーブルモジュールと、第１の値及び第２の値を組み合わせて１次元スコアを生成するように構成された組み合わせモジュールと、を含む。【選択図】  図１８
2015501012.tif 000002
【特許請求の範囲】
【請求項１】
特徴ベクトルとガウス確率分布ベクトルとの間の１次元スコアを計算するための演算論理ユニットであって、
前記ガウス確率分布ベクトルの次元に関連付けられた平均値及び分散値並びに特徴ベクトルの次元に基づいた第１の値を計算するように構成された計算論理ユニットと、
前記分散値に基づいた第２の値を出力するように構成されたルックアップテーブルモジュールと、
前記第１の値及び前記第２の値を組み合わせて前記１次元スコアを生成するように構成された組み合わせモジュールと、
を備える、演算論理ユニット。
【請求項２】
前記第１の値及び前記第２の値が同一のビット数を用いて表される、請求項１に記載の演算論理ユニット。
【請求項３】
前記計算論理ユニットが、前記特徴ベクトルの前記１次元の値と前記平均値との間の差を計算するように構成された減算モジュールを備え、前記差が正である、請求項１に記載の演算論理ユニット。
【請求項４】
前記計算論理ユニットが、前記分散値に基づいた第３の値を出力するように構成されたルックアップテーブルを更に備える、請求項３に記載の演算論理ユニット。
【請求項５】
前記計算論理ユニットが、前記差の二乗及び前記第３の値の積として前記第１の値を計算するように構成される、請求項４に記載の演算論理ユニット。
【請求項６】
前記計算論理ユニットが、前記平均値、前記分散値、及び前記特徴ベクトルの前記次元の特定の値について前記第１の値を出力するように構成された例外処理モジュールを備える、請求項１に記載の演算論理ユニット。
【請求項７】
前記計算論理ユニットが、前記特徴ベクトルの前記次元を倍率でスケーリングするように構成された特徴ベクトル変換モジュールを備える、請求項１に記載の演算論理ユニット。
【請求項８】
前記組み合わせモジュールが、
前記第１及び前記第２の値の和を計算するように構成された加算器と、
前記和の小数点の右側にゼロビットが存在するように前記和をシフトさせるように構成されたシフトモジュールと、
を備える、請求項１に記載の演算論理ユニット。
【請求項９】
前記ルックアップテーブルモジュールが、
ｌｕｔｉｊ＝（ｌｎ（ｖａｒｉｊ）−Ｃ）×Ｍ１
によって与えられる値ｌｕｔｉｊを出力するように構成されたルックアップテーブルを備え、ここで、
ｖａｒｉｊは、ｊ番目のガウス確率分布ベクトルのｉ次元の分散値であり、
Ｍ１は倍率であり、
Ｃは定数である、請求項１に記載の演算論理ユニット。
【請求項１０】
前記第１の値が、
【数１】
2015501012.tif 000008
によって与えられ、ここで、
ｘｉは、ｉ番目の特徴ベクトル次元の値であり、
μｉｊは、ｊ番目のガウス確率分布ベクトルのｉ次元の平均値であり、
ｖａｒｉｊは、ｊ番目のガウス確率分布ベクトルのｉ次元の分散値であり、
Ｍ２は重み付け係数である、請求項１に記載の演算論理ユニット。
【請求項１１】
特徴ベクトルとガウス確率分布ベクトルとの間の１次元距離スコアを計算する方法であって、
前記ガウス確率分布ベクトルの次元に関連付けられた平均値及び分散値並びに特徴ベクトルの次元に基づいた第１の値を計算することと、
前記分散値に基づいた第２の値をルックアップテーブルモジュールから検索することと、
前記第１の値及び前記第２の値を組み合わせて前記１次元スコアを生成することと、
を有する、方法。
【請求項１２】
前記計算することが前記特徴ベクトルの前記次元と前記平均値との間の差を計算することを有する、請求項１１に記載の方法。
【請求項１３】
前記計算することが、前記分散値に基づいた第３の値を第２のルックアップテーブルから検索することを有する、請求項１１に記載の方法。
【請求項１４】
前記計算することが、前記差の二乗及び前記第３の値の積として前記第１の値を計算することを有する、請求項１１に記載の方法。
【請求項１５】
前記計算することの前に、その次元についての前記特徴ベクトルモジュールの前記値を、倍率を用いて変換することを更に有する、請求項１１に記載の方法。
【請求項１６】
前記ルックアップテーブルモジュールが、
ｌｕｔｉｊ＝（ｌｎ（ｖａｒｉｊ）−Ｃ）×Ｍ１
によって与えられる値ｌｕｔｉｊを出力するように構成されたルックアップテーブルを備え、ここで、
ｖａｒｉｊは、ｊ番目のガウス確率分布ベクトルのｉ次元の分散値であり、
Ｍ１は倍率であり、
Ｃは定数である、請求項１１に記載の方法。
【請求項１７】
前記第１の値が、
【数２】
2015501012.tif 000009
によって与えられ、ここで、
ｘｉは、ｉ番目の特徴ベクトル次元の値であり、
μｉｊは、ｊ番目のガウス確率分布ベクトルのｉ次元の平均値であり、
ｖａｒｉｊは、ｊ番目のガウス確率分布ベクトルのｉ次元の分散値であり、
Ｍ２は重み付け係数である、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本発明の実施形態は、一般に音声認識に関する。更に特定すれば、本発明の実施形態は、専用の処理ユニットにおける音響モデリングプロセスの実施に関する。
【背景技術】
【０００２】
[0002]  電子システムにおいて、データストリームを分析するために、リアルタイムのデータパターン認識がいっそういられるようになっている。数万語を超える語彙では、音声認識システムは精度の向上を達成しており、電子システムにとって魅力的な特徴（feature）となっている。例えば音声認識システムは、モバイルデバイス、サーバ、自動車、及びＰＣの市場等、データパターン認識の利用向けの消費者市場において、ますます一般的になっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]  音声認識システムの精度向上にもかかわらず、かなりのコンピューティングリソースが音声認識プロセスに専念し、このため、例えばマルチユーザ／マルチプログラミング環境等のコンピューティングシステムに対して大きな負荷がかかる。マルチプログラミングコンピューティングシステムは、様々なアプリケーションからのデータを同時に処理するので、音声認識プロセスによってこれらのコンピューティングシステムにかかる負荷は、コンピューティングシステムが、入来音声信号及び他のアプリケーションからのデータを処理することができる速度に影響を及ぼす。更に、（デスクトップコンピューティングシステムに比べて）通常メモリリソースが限られているハンドヘルドデバイスでは、音声認識の利用は、ハンドヘルドデバイスのコンピューティングリソースに大きな負荷をかけるだけでなく、ハンドヘルドデバイスのメモリリソースの大部分を消費する。上述の音声認識システムの処理能力、速度、及びメモリリソースの問題は、入来音声信号をリアルタイムで又は実質的にほぼリアルタイムで処理することへの要望によって更に悪化する。
【０００４】
[0004]  従って、コンピューティングシステムの処理能力、速度、及びメモリリソースに対して音声認識システムがかける負荷を改善することが必要とされている。
【課題を解決するための手段】
【０００５】
[0005]  本発明の一実施形態において、特徴ベクトルとガウス確率分布ベクトルとの間の１次元スコアを計算するための演算論理ユニットが提供される。演算論理ユニットは、ガウス確率分布ベクトルの次元に関連付けられた平均値及び分散値並びに特徴ベクトルの次元に基づいた第１の値を計算するように構成された計算論理ユニットと、分散値に基づいた第２の値を出力するように構成されたルックアップテーブルモジュールと、第１の値及び第２の値を組み合わせて１次元スコアを生成するように構成された組み合わせモジュールと、を含む。
【０００６】
[0006]  本発明の別の実施形態は、特徴ベクトルとガウス確率分布ベクトルとの間の１次元距離スコアを計算する方法を含む。この方法は、ガウス確率分布ベクトルの次元に関連付けられた平均値及び分散値並びに特徴ベクトルの次元に基づいた第１の値を計算することと、分散値に基づいた第２の値をルックアップテーブルモジュールから検索することと、第１の値及び第２の値を組み合わせて前記１次元スコアを生成することと、を含む。
【０００７】
[0007]  以下で添付図面を参照して、本発明の更に別の特徴及び利点について、本発明の様々な実施形態の構造及び動作と共に詳細に説明する。本発明は、本明細書に記載する特定の実施形態に限定されないことに留意すべきである。かかる実施形態は本明細書において単に例示の目的のためにのみ提示する。本明細書に包含される教示に基づいて、当業者には関連技術における追加の実施形態も明らかであろう。
【０００８】
[0008]  本明細書に組み込まれてその一部を形成する添付図面は、本発明の実施形態を例示し、記載部分と共に本発明の原理を説明し、更に当業者が本発明を生成及び使用することを可能とするように機能する。
【図面の簡単な説明】
【０００９】
【図１】[0009]  本発明の一実施形態による音声認識プロセスの一例のフローチャートの例示である。
【図２】[0010]  従来の音声認識システムの例示である。
【図３】[0011]  音声認識プロセスが個々の処理ユニットにより実行される従来の音声認識システムの例示である。
【図４】[0012]  音響処理ユニット（ＡＰＵ）及び中央処理装置（ＣＰＵ）により実行される音声認識プロセスの一実施形態の例示である。
【図５】[0013]  音声認識システムのためのペリフェラルコントローラインタフェース（ＰＣＩ：Peripheral Controller Interface）バスアーキテクチャの一実施形態の例示である。
【図６】[0014]  音声認識システムのためのＡＰＢ（Advanced Peripheral Bus）アーキテクチャの一実施形態の例示である。
【図７】[0015]  音声認識システムのための低電力ダブルデータレート（ＬＰＤＤＲ：Low Power Double Data Rate）バスアーキテクチャの一実施形態の例示である。
【図８】[0016]  音声認識システムのためのシステムレベルアーキテクチャの一実施形態の例示である。
【図９】[0017]  データパターン分析のための方法の一実施形態の例示である。
【図１０】[0018]  一体化された特定用途向け集積回路（ＡＳＩＣ）及びメモリデバイスを有する音声認識システムのためのシステムレベルアーキテクチャの一実施形態の例示である。
【図１１】[0019]  一体化された特定用途向け集積回路（ＡＳＩＣ）、揮発性メモリデバイス、不揮発性メモリデバイスを有する音声認識システムのためのシステムレベルアーキテクチャの一実施形態の例示である。
【図１２】[0020]  特定用途向け集積回路（ＡＳＩＣ）及び中央処理装置（ＣＰＵ）を含むシステムオンチップを有する音声認識システムのためのシステムレベルアーキテクチャの一実施形態の例示である。
【図１３】[0021]  特定用途向け集積回路（ＡＳＩＣ）及び中央処理装置（ＣＰＵ）を含むシステムオンチップを有する音声認識システムのためのシステムレベルアーキテクチャの別の実施形態の例示である。
【図１４】[0022]  音響処理ユニット（ＡＰＵ）の一実施形態の例示である。
【図１５】[0023]  音響処理ユニット（ＡＰＵ）のためのシノンスコアリングユニット（ＳＳＵ）コントローラの一実施形態の例示である。
【図１６】[0024]  音響処理ユニット（ＡＰＵ）のための距離算出部の一実施形態の例示である。
【図１７】[0025]  音響処理ユニット（ＡＰＵ）のための音響モデリングプロセスの方法の一実施形態の例示である。
【図１８】[0026]  本発明の一実施形態による演算論理ユニットの一実施形態の例示である。
【図１９】[0027]  本発明の一実施形態による、図１８に示した演算論理ユニットの一実施形態の例示である。
【図２０】[0028]  本発明の一実施形態による計算ユニットの一実施形態の例示である。
【図２１】[0029]  １次元距離スコアを計算するための方法の一実施形態の例示である。
【図２２】[0030]  音響処理システムの実施形態の例示である。
【図２３】[0030]  音響処理システムの実施形態の例示である。
【図２４】[0031]  ハードウェアアクセレレータの一実施形態の例示である。
【図２５】[0032]  ＡＰＵソフトウェアスタックを示すブロック図である。
【図２６】[0033]  同時処理の一実施形態の例示である。
【図２７】[0034]  音響処理の方法の一実施形態の例示である。
【図２８】[0035]  本発明の実施形態又はその一部をコンピュータ読み取り可能コードとして実施可能である一例のコンピュータシステムの一実施形態の例示である。
【発明を実施するための形態】
【００１０】
[0036]  以下の詳細な説明では、本発明に合致する例示的な実施形態を示す添付図面を参照する。本発明の趣旨及び範囲内で他の実施形態も可能であり、実施形態に対する変更も実施可能である。従って、詳細な説明は本発明の範囲を限定することは意図していない。本発明の範囲は添付の特許請求の範囲によって規定される。
【００１１】
[0037]  以下に記載するように、図面に示すソフトウェア、ハードウェア、ファームウェア、及び／又はエンティティの多くの異なる実施形態において本発明を実施可能であることは当業者には認められよう。このため、本明細書に提示するレベルの詳細が与えられれば実施形態の変更及び変形が可能であるという理解のもとに本発明の実施形態の動作挙動について記載する。
【００１２】
[0038]  本明細書は、本発明の特徴を組み込んだ１つ以上の実施形態を開示する。開示する実施形態は本発明を単に例示するだけである。本発明の範囲は開示する実施形態に限定されない。本発明は添付の特許請求の範囲によって規定される。
【００１３】
[0039]  記載する実施形態、及び本明細書における「一実施形態」「ある実施形態」「一例の実施形態」等の言及は、記載する実施形態が特定の特徴、構造、又は特性を含み得るが、全ての実施形態がその特定の特徴、構造、又は特性を必ずしも含むわけではないことを示す。また、かかる語句は必ずしも同一の実施形態を指すものではない。更に、特定の特徴、構造、又は特性をある実施形態に関連付けて記載する場合は、明示的に記載があるにせよないにせよ、かかる特徴、構造、又は特性を他の実施形態と関連付けて実施することが当業者の知識内であることは理解されよう。
【００１４】
[0040]  １．音声認識プロセス
図１は、本発明の一実施形態に従った音声認識プロセス１００の一例のフローチャートの例示である。音声認識プロセス１００は、信号処理段１１０、音響モデリング段１２０、音素評価段１３０、及び単語モデリング段１４０を含む。
【００１５】
[0041]  信号処理段１１０においては、入来音声信号１０５のアナログ信号表現をフィルタリングして、人の耳が聞くことができる周波数範囲の外側にある信号の高周波成分を除去することができる。次いで、フィルタリングした信号を、当業者に周知のサンプリング及び量子化技法を用いてデジタル化する。例えば線形予測符号化及び高速フーリエ変換等の技法を用いて、デジタル化波形から１つ以上のパラメトリックデジタル表現（本明細書では「特徴ベクトル１１５」とも称する）を抽出することができる。この抽出は、例えば約１０ｍｓの規則的な時間間隔又はフレームで行うことができる。
【００１６】
[0042]  音響モデリング段１２０においては、信号処理段１１０からの特徴ベクトル１１５を、メモリに記憶されている１つ以上の多変数ガウス確率分布（本明細書では「ガウス確率分布」とも称する）と比較する。メモリに記憶されている１つ以上のガウス確率分布は音響ライブラリの一部とすることができ、このライブラリ内ではガウス確率分布がシノン（senone）を表す。シノンとは、当業者によって理解されるように、対象言語の下位音声単位（sub-phonetic unit）を指す。個々のシノンは例えば８成分から成ることができ、各成分が３９次元のガウス確率分布を表すことができる。
【００１７】
[0043]  音響モデリング段１２０は、例えば１０００を超えるシノンを処理することができる。この結果、特徴ベクトルと１つ以上のガウス確率分布との比較は計算集約型タスクとなり得る。これは、時間間隔又はフレーム（例えば１０ｍｓ）ごとに、例えば数千のガウス確率分布を特徴ベクトル１１５と比較し得るからである。各特徴ベクトル１１５と１つ以上のガウス確率分布の各々とを比較した結果として、音響ライブラリに表される各シノンについてスコアセット（本明細書では「シノンスコア」とも称する）が得られる。音響モデリング段１２０は、シノンスコア１２５を音素評価段１３０に提供する。
【００１８】
[0044]  音素評価段１３０においては、隠れマルコフモデル（ＨＭＭ：Hidden Markov Model）を用いて、状態セット及び各状態間のアプリオリの遷移確率セットとして音素を特徴付けることができる。状態はシノンに関連付けられている。所与の観察されたシノンシーケンスについて、対応するＨＭＭにおける最尤状態シーケンスがある。この対応するＨＭＭは、観察された音素に関連付けることができる。ビタビアルゴリズムを用いて、音素に対応する各ＨＭＭの尤度を求めることができる。
【００１９】
[0045]  ビタビアルゴリズムが実行する計算は、時刻同期して第１のフレームから開始して一度に１つずつ以降のフレームに進む。考察対象のＨＭＭにおいて各シノンについて確率スコアを計算する。従って、ビタビアルゴリズムが連続するフレームを分析すると、あり得るシノンシーケンスの各々について累積確率スコアを連続的に計算することができる。音素評価段１３０は、音素尤度又は確率１３５（本明細書では「音素スコア」とも称する）を単語モデリング段１４０に提供する。
【００２０】
[0046]  単語モデリング段１４０においては、検索技法を用いて経時的な最尤音素ストリング及びその後の単語を決定する。例えばツリーベースのアルゴリズム等の検索技法を用いて、最尤音素ストリングを決定することができる。
【００２１】
[0047]  ２．従来の音声認識システム
図２は従来の音声認識システム２００の例示である。音声認識システム２００は、入力デバイス２１０、処理ユニット２２０、メモリデバイス２３０、及びデータバス２４０を含み、これらは全て別個の物理コンポーネントである。メモリデバイス２３０は、例えば処理ユニット２２０の外部にありデータバス２４０を介して処理ユニット２２０と通信状態にあるダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスとすることができる。また、入力デバイス２１０もデータバス２４０を介して処理ユニット２２０と通信状態にある。データバス２４０は、例えば８から３２ビットの典型的なバス幅を有する。
【００２２】
[0048]  入力デバイス２１０は、入来音声信号（例えば図１の入来音声信号１０５）を受信すると共に入来音声信号に関連付けられた音響振動をアナログ信号に変換するように構成されている。アナログ信号は、アナログデジタル変換器（図２には図示せず）を用いてデジタル化され、得られたデジタル信号はデータバス２４０を介して処理ユニット２２０に転送される。入力デバイス２１０は、例えばマイクロフォンとすることができる。
【００２３】
[0049]  処理ユニット２２０は、図１に関して上述した信号処理段１１０、音響モデリング段１２０、音素評価段１３０、及び単語モデル段１４０に従ってデジタル入力信号を処理するように構成されている。図３は、処理ユニット２２０が実行する音声認識モジュールを有する音声認識システム２００の例示である。処理ユニットは、信号処理モジュール３１０、音響モデリングモジュール３２０、音素評価モジュール３３０、及び単語モデリングモジュール３４０を含み、これらはそれぞれ、図１の信号処理段１１０、音響モデリング段１２０、音素評価段１３０、及び単語モデル段１４０と同様に動作する。
【００２４】
[0050]  図３を参照すると、信号処理モジュール３１０は、（例えば入力デバイス２１０からの）入来音声信号３０５のデジタル入力信号表現を１つ以上の特徴ベクトル３１５に変換することができる。音響モデリングモジュール３２０は、１つ以上の特徴ベクトル３１５を、メモリデバイス２３０内の音響ライブラリに記憶された１つ以上のガウス確率分布と比較する。すなわち、１つ以上の特徴ベクトル３１５と１つ以上のガウス確率分布との比較の各々について、処理ユニット２２０はデータバス２４０を介してメモリデバイス２３０にアクセスする。数千のシノンを有する音響ライブラリ（そのシノンの各々は複数のガウス確率分布から成る）では、音響モデリングモジュール３２０によって実行される比較は計算集約型であるだけでなく、音響モデリングモジュール３２０によるデータバス２４０を介したメモリデバイス２３０に対する数千回のアクセスも計算集約型であると共に長い時間がかかる。メモリデバイス２３０に対する数千回のアクセスは、データバス２４０のバス幅（例えば典型的には８から３２ビット）によって更に悪化し、各ガウス確率分布にアクセスするために音響モデリングモジュール３２０によってメモリデバイス２３０に多数回アクセスする必要があり得る。更に、データバス２４０に関連した相互接続寄生によって、メモリデバイス２３０と音響モデリングモジュール３２０との間のデータ転送が損なわれる恐れがある。
【００２５】
[0051]  音素評価モジュール３３０は、音響モデリングモジュール３２０からシノンスコア３２５を受信する。図１の音声認識プロセス１００に関して上述したように、ＨＭＭを用いて、状態セット及び各状態間のアプリオリの遷移確率セットとして音素を特徴付けることができる。状態はシノンのシーケンスから成る。音素評価モジュール３３０が用いる状態セット及びアプリオリの遷移確率セットはメモリデバイス２３０に記憶することができる。音素評価モジュール３３０は音素スコア３３５を単語モデリングモジュール３４０に提供する。
【００２６】
[0052]  単語モデリングモジュール３４０は、例えばツリーベースのアルゴリズム等の検索技法を用いて、経時的な最尤音素ストリング（例えば最尤音素３３５）及びその後の単語を決定する。
【００２７】
[0053]  図３の従来の音声認識システム３００に伴う問題は、とりわけ、音響モデリングプロセスのために処理ユニット２２０にかかる大きな負荷である。例えば、１つ以上の特徴ベクトル３１５とメモリデバイス２３０に記憶された１つ以上のガウス確率分布との各比較について、メモリデバイス２３０は処理ユニット２２０によってアクセスされる。この結果、著しいコンピューティングリソースが音響モデリングプロセスに専用となり、このため処理ユニット２２０に大きな負荷がかかる。音響モデリングプロセスによって処理ユニット２２０にかかる負荷は、処理ユニット２２０が入力デバイス２１０からのデジタル信号及び他のアプリケーションからのデータを処理することができる速度に影響を及ぼす（例えば処理ユニット２２０は複数のアプリケーションからのデータを同時に処理するマルチユーザ／マルチプログラミング環境において動作する場合がある）。更に、メモリリソースが限られているコンピューティングシステム（例えばハンドヘルドデバイス）では、音響モデリングプロセスは、処理ユニット２２０に大きな負荷をかけるだけでなく、メモリデバイス２３０の大部分及びデータバス２４０の帯域幅を消費する。とりわけ、処理能力、速度、及びメモリリソースに伴うこれらの問題は、多くの用途で入来音声信号をリアルタイムで又は実質的にほぼリアルタイムで処理することへの要望によって更に悪化する。
【００２８】
[0054]  ３．音響処理ユニットを用いた音声認識システム
本発明の実施形態は、図２及び図３の従来の音声認識システム２００及び３００に関して上述した問題に対処する。一実施形態において、音響モデリングプロセスは、専用の処理ユニット（本明細書では「音響処理ユニット」又は「ＡＰＵ」とも称する）によって実行する。ＡＰＵは、図３の処理ユニット２２０（本明細書では「中央処理装置」又は「ＣＰＵ」とも称する）と連動して動作する。例えばＡＰＵは、ＣＰＵから１つ以上の特徴ベクトル（例えば図３の特徴ベクトル３１５）を受信し、１つ以上のガウス確率分布に基づいてシノンスコア（例えば図３のシノンスコア３２５）を算出し、このシノンスコアをＣＰＵに出力する。一実施形態において、１つ以上のガウス確率分布はＡＰＵに記憶することができる。あるいは、別の実施形態では、１つ以上のガウス確率分布はＡＰＵの外部に記憶することができ、この場合ＡＰＵは外部のメモリデバイスから１つ以上のガウス確率分布を受信する。以下で詳述するＡＰＵのアーキテクチャに基づいて、シノンスコアの算出の高速化が達成される。
【００２９】
[0055]  本開示の一部は音声認識システムの文脈において記載するが、本明細書に記載する実施形態は、本明細書の記載に基づいたいかなるデータパターン認識用途にも適用可能であることは、当業者には認められよう。これらの他のデータパターン認識用途は、限定ではないが、画像処理、オーディオ処理、及び手書き文字認識を含む。これらの他のデータパターン認識用途は本明細書に開示する実施形態の趣旨及び範囲内である。
【００３０】
[0056]  図４は、ＡＰＵ及びＣＰＵが実行する音声認識プロセス４００の一実施形態の例示である。一実施形態において、ＣＰＵは、信号処理プロセス４１０、音素評価プロセス４３０、及び単語モデリングプロセス４４０を実行する。ＡＰＵは音響モデリングプロセス４２０を実行する。信号処理プロセス４１０、音響モデリングプロセス４２０、音素評価プロセス４３０、及び単語モデリングプロセス４４０は、本明細書にそれ以外の記載がある場合を除いて、それぞれ図１の信号処理段１１０、音響モデリング段１２０、音素評価段１３０、及び単語モデリング段１４０と同様に動作する。
【００３１】
[0057]  図４の実施形態を参照すると、フィードバック４５０は音声認識プロセス４００の任意選択的な特徴であり、本発明の一実施形態に従って、音素評価プロセス４３０がアクティブなシノンのリストを音響モデリングプロセス４２０に提供することができる。ＡＰＵは、１つ以上の特徴ベクトルを、アクティブなシノンのリストに示された１つ以上のシノンと比較することができる。かかるフィードバック４５０については以下で更に論じる。
【００３２】
[0058]  別の実施形態においては、音響モデリングプロセス４２０は、１つ以上の特徴ベクトルを、音響ライブラリに関連付けられた全てのシノンと比較することができる。この場合、フィードバック４５０は必要でなく、音素評価プロセス４３０は更に処理を行うためにＡＰＵからシノンスコアセット全体を受信する（例えば「全スコア」機能）。
【００３３】
[0059]  Ａ．音響処理ユニットを用いた音声認識システムのためのシステムバスアーキテクチャ
一実施形態において、ＡＰＵ及びＣＰＵは、ＳＰＩバス、ＰＣＩバス、ＡＰＩ（Application Programming Interface）バス、ＡＭＢＡ  ＡＨＢ（Advanced Microcontroller Bus Architecture High-Performance Bus)、APB(Advanced Peripheral Bus）、メモリバス、又は他のいずれかのタイプのバスを介して相互に通信状態とすることができる。図４の音声認識プロセス４００のためのシステムバスアーキテクチャの例示的かつ非限定的な実施形態について、以下で詳述する。
【００３４】
[0060]  図５は、音声認識システム５００のためのバスアーキテクチャの一実施形態の例示である。音声認識システム５００は、ＡＰＵ５１０、ＣＰＵ５２０、プロセッサ／メモリバス５３０、キャッシュ５４０、システムコントローラ５５０、メインメモリ５６０、複数のＣＰＩデバイス５７０１〜５７０Ｍ、入出力（Ｉ／Ｏ）バス５８０、及びＰＣＩブリッジ５９０を含む。キャッシュ５４０は、例えばスタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス上に実施された第２レベルのキャッシュとすることができる。更に、メインメモリ５６０は例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスとすることができる。音声認識システム５００は、本発明の一実施形態に従って、システムオンチップ（ＳＯＣ）として実施することができる。
【００３５】
[0061]  図５に示すように、ＡＰＵ５１０はＰＣＩブリッジ５９０を介してＩ／Ｏバス５８０に通信可能に接続される。Ｉ／Ｏバス５８０は例えばＰＣＩバスとすることができる。ＰＣＩブリッジ５９０及びＩ／Ｏバス５８０を介して、ＡＰＵ５１０はシステムコントローラ５５０及びＣＰＵ５２０に通信可能に接続される。別の実施形態（図５には図示せず）では、ＡＰＵ５１０はプロセッサ／メモリバス５３０に直接接続し、次いでＣＰＵ５２０に通信可能に接続することができる。
【００３６】
[0062]  図６は、音声認識システム６００のためのバスアーキテクチャの別の実施形態の例示である。音声認識システム６００は、ＡＰＵ５１０、ＣＰＵ５２０、キャッシュ５４０、ＡＨＢ６１０、システムコントローラ６２０、不揮発性メモリデバイス６３０、メインメモリ６４０、ＡＰＢブリッジ６５０、ＡＰＢ６６０、及び複数のデバイス６７０１〜６７０Ｍを含む。不揮発性メモリデバイス６３０は例えばフラッシュメモリデバイスとすることができる。メインメモリ６４０は例えばＤＲＡＭデバイスとすることができる。ＣＰＵ５２０は例えば（ARM Holdings plcにより開発された）ＡＲＭプロセッサとすることができる。音声認識システム６００は、本発明の一実施形態に従って、ＳＯＣとして実施することができる。
【００３７】
[0063]  図６に示すように、ＡＰＵ５１０は、ＡＰＢブリッジ６５０及びＡＰＢ６６０を介してシステムコントローラ６２０に通信可能に接続される。また、システムコントローラ６２０はＡＨＢ６１０を介してＣＰＵ５２０に通信可能に接続される。システムコントローラ６２０はＡＨＢ６１０を介してＣＰＵ５２０に通信可能に接続される。
【００３８】
[0064]  図７は、音声認識システム７００のためのバスアーキテクチャの別の実施形態の例示である。音声認識システム７００は、ＡＰＵ５１０、ＣＰＵ５２０、キャッシュ５４０、ＡＨＢ６１０、システムコントローラ６２０、不揮発性メモリデバイス６３０、低電力ダブルデータレート（ＬＰＤＤＲ）インタフェース７１０、ＬＰＤＤＲメモリバス７２０、及びメインメモリ７３０を含む。メインメモリ７３０は例えばＤＲＡＭデバイスとすることができる。ＣＰＵ５２０は例えば（ARM Holdings plcにより開発された）ＡＲＭプロセッサとすることができる。音声認識システム７００は、本発明の一実施形態に従って、ＳＯＣとして実施することができる。
【００３９】
[0065]  図７に示すように、ＡＰＵ５１０及びメインメモリ７３０は、ＬＰＤＤＲメモリバス７２０を介してＬＰＤＤＲインタフェース７１０に通信可能に接続される。ＡＰＵ５１０は、ＬＰＤＤＲメモリバス７２０及びＬＰＤＤＲインタフェース７１０を介してシステムコントローラ６２０に通信可能に接続される。更に、システムコントローラ６２０はＡＨＢ６１０を介してＣＰＵ５２０に通信可能に接続される。
【００４０】
[0066]  Ｂ．音響処理ユニットを用いた音声認識システムのためのシステムレベルアーキテクチャ
図８は、音声認識システム８００のためのシステムレベルアーキテクチャの一実施形態の例示である。音声認識システム８００は、ＡＰＵ８１０、メモリコントローラ８２０、不揮発性メモリデバイス８３０、及び揮発性メモリデバイス８４０を含む。メモリコントローラ８２０は、バス８１５を介してＡＰＵ８１０に通信可能に接続され、バス８２５（これはいくつかの実施形態において２つ以上のバスを表す場合がある）を介して不揮発性メモリデバイス８３０及び揮発性メモリデバイス８５０に接続される。一実施形態において、ＡＰＵ８１０及びメモリコントローラ８２０はシングルチップ上に集積される。あるいは、一実施形態において、ＡＰＵ８１０及びメモリコントローラ８２０は別個のチップ上に集積される。不揮発性メモリデバイス８３０は、ＮＡＮＤメモリモジュール、ＮＯＲメモリモジュール、又は別のタイプの不揮発性メモリデバイスとすることができる。一実施形態において、揮発性メモリデバイス８４０はＤＲＡＭデバイスとすることができる。更に、本発明の一実施形態に従って、ＡＰＵ８１０は、例えば図５から図７に関して上述したバスアーキテクチャの１つを用いて、ＣＰＵ（図８には図示せず）と通信を行うことができる。
【００４１】
[0067]  不揮発性メモリデバイス８３０は、音声認識プロセスにおいて用いられる音響ライブラリを記憶することができ、本発明の一実施形態に従って、音響ライブラリは１０００を超えるシノンを含むことができる。一実施形態においては、音声認識システム８００によってシノン要求が受信されると、メモリコントローラ８２０は不揮発性メモリデバイス８３０からバス８２５を介して揮発性メモリデバイス８４０に音響ライブラリをコピーする。不揮発性及び揮発性メモリデバイス間の音響ライブラリ転送プロセスは、例えば直接メモリアクセス（ＤＭＡ）動作を用いて実施可能である。
【００４２】
[0068]  一実施形態においては、シノンスコアリング要求を予想して音声認識システム８００を作動させることができる。電源投入の後、不揮発性メモリデバイス８３０からの音響ライブラリは直ちに揮発性メモリデバイス８４０にコピーされる。いったん揮発性メモリデバイス８４０が音響ライブラリを受信したら、ＡＰＵ８１０は、揮発性メモリデバイス８４０に記憶された音響ライブラリを用いてシノンスコアリング要求の処理（例えば図４の音響モデリングプロセス４２０）を開始する準備が整う。
【００４３】
[0069]  シノンスコアリング要求がＡＰＵ８１０によって受信されると、揮発性メモリデバイス８４０からメモリコントローラ８２０を介してＡＰＵ８１０に、音響ライブラリから選択されたシノンがコピーされる。ＡＰＵ８１０は、選択されたシノン及びＡＰＵ８１０が受信したデータストリーム（例えば図３の１つ以上の特徴ベクトル３１５）に基づいてシノンスコアを算出する。算出の完了後、ＡＰＵ８１０はシノンスコアを要求側のシステム（例えばＣＰＵ）に転送する。
【００４４】
[0070]  一実施形態においては、所定時間の非作動（例えばＡＰＵ８１０によるシノンスコアリング非作動）の後、揮発性メモリデバイス８４０の電源を切断することができる。この結果、揮発性メモリデバイス８４０内のメモリセルの定期的なリフレッシュが不必要であるので、音声認識システム８００における電力効率を向上させることができる。ここで、音響ライブラリは不揮発性メモリデバイス８３０に記憶されたままであり、揮発性メモリデバイス８４０の電源が切断されても音響ライブラリを保持することが可能となっている。当業者には理解されようが、揮発性メモリデバイス８４０の電源が切断されると、そこに記憶されていた内容（例えば音響ライブラリ）は失われる。一実施形態においては、揮発性メモリデバイス８４０の電源が切断された場合、音声認識システム８００の他のコンポーネントの電源も切断することができる。
【００４５】
[0071]  図９は、データパターン分析のための方法９００の一実施形態の例示である。例えば図８の音声認識システム８００を用いて方法９００のステップを実行することができる。一実施形態においては、方法９００を用いて図４の音響モデリングプロセス４２０を実行することができる。本明細書の記載に基づいて、例えば画像処理、オーディオ処理、及び手書き文字処理等の他のデータパターン認識用途において方法９００を使用可能であることは、当業者には認められよう。
【００４６】
[0072]  ステップ９１０において、不揮発性メモリデバイス（例えば図８の不揮発性メモリデバイス８３０）から揮発性メモリデバイス（例えば図８の揮発性メモリデバイス８４０）に、複数のデータパターンをコピーする。一実施形態において、複数のデータパターンは音響ライブラリに関連付けられた１つ以上のシノンとすることができる。
【００４７】
[0073]  ステップ９２０において、揮発性メモリデバイスからのデータパターンが、計算ユニット（例えば図８のＡＰＵ８１０）によって要求され、メモリコントローラ及びバス（例えば図８のメモリコントローラ８２０及びバス８２５）を介して計算ユニットに転送される。一実施形態において、要求されたデータパターンは、揮発性メモリデバイスに記憶された音響ライブラリからのシノンである。
【００４８】
[0074]  ステップ９３０において、要求されたデータパターンを受信した後、計算ユニット（例えば図８のＡＰＵ８１０）は、この計算ユニットが受信したデータストリームにデータパターン分析を実行する。一実施形態において、データパターン分析は、選択されたシノン及び計算ユニットが受信したデータストリーム（例えば図３の１つ以上の特徴ベクトル３１５）に基づいたシノンスコア算出である。データパターン分析の完了後、計算ユニットはデータパターン分析結果を要求側のシステム（例えばＣＰＵ）に転送する。
【００４９】
［００７５］  ステップ９４０において、揮発性メモリデバイスの電源を切断する。一実施形態においては、所定時間の非作動（例えば計算ユニットによるデータパターン分析の非作動）の後に揮発性メモリデバイスの電源を切断する。この結果、揮発性メモリデバイス内のメモリセルの定期的なリフレッシュが不必要であるので、電力効率を向上させることができる。一実施形態においては、揮発性メモリデバイスの電源が切断された場合、システムの他のコンポーネント（例えば音声認識システム８００の他のコンポーネント）の電源も切断することができる。
【００５０】
[0076]  図１０は、音声認識システム１０００のシステムレベルアーキテクチャの別の実施形態の例示である。音声認識システム１０００は、ＡＰＵ１０１０、ＳＯＣ１０４０、ＤＲＡＭデバイス１０６０、フラッシュメモリデバイス１０７０、及びＩ／Ｏインタフェース１０８０を含む。一実施形態において、ＡＰＵ１０１０は、音響ライブラリを記憶するように構成されたメモリデバイス１０２０と、音響モデリングプロセス（例えば図４の音響モデリングプロセス４２０）を実行するように構成された特定用途向け集積回路（ＡＳＩＣ）１０３０と、を含む集積チップである。別の実施形態においては、ＡＳＩＣ１０３０及びメモリデバイス１０２０を２つの別個のチップ上に集積することができる。ＳＯＣ１０４０は、本発明の一実施形態に従って、信号処理プロセス、音素評価プロセス、及び単語モデリングプロセス（例えば図４の信号処理プロセス４１０、音素評価プロセス４３０、及び単語モデリングプロセス４４０）を実行するように構成されたＣＰＵ１０５０を含む。一実施形態において、ＡＰＵ１０１０及びＳＯＣ１０４０は２つの別個のチップ上に集積される。
【００５１】
[0077]  図１１は、音声認識システム１１００のシステムレベルアーキテクチャの別の実施形態の例示である。音声認識システム１１００は、ＡＰＵ１１１０、ＳＯＣ１０４０、ＤＲＡＭデバイス１０６０、フラッシュメモリデバイス１０７０、及びＩ／Ｏインタフェース１０８０を含む。一実施形態において、ＡＰＵ１１１０は、ＡＳＩＣ１１２０、揮発性メモリデバイス１１３０、及び不揮発性メモリデバイス１１４０を含む集積チップである。別の実施形態においては、ＡＳＩＣ１１２０、揮発性メモリデバイス１１３０、及び不揮発性メモリデバイス１１４０を２つの別個のチップ上に集積することができる。例えばＡＳＩＣ１１２０及びメモリデバイス１１３０を１つのチップ上に、不揮発性メモリデバイス１１４０を別のチップ上に集積すること、ＡＳＩＣ１１２０を１つのチップ上に、揮発性メモリデバイス１１３０及び不揮発性メモリデバイス１１４０を別のチップ上に集積すること、又はＡＳＩＣ１１２０及び不揮発性メモリデバイス１１４０を１つのチップ上に、揮発性メモリデバイス１１３０を別のチップ上に集積することが可能である。更に別の実施形態では、ＡＳＩＣ１１２０、揮発性メモリデバイス１１３０、及び不揮発性メモリデバイス１１４０を各々、別個のチップすなわち３つの別個のチップ上に集積することができる。
【００５２】
[0078]  不揮発性メモリデバイス１１４０は、本発明の一実施形態に従って、ＡＰＵ１１１０の電源投入時に揮発性メモリデバイス１１３０にコピーされる音響モデルを記憶するように構成することができる。一実施形態において、不揮発性メモリデバイスはフラッシュメモリデバイスとすることができ、揮発性メモリデバイス１１３０はＤＲＡＭデバイスとすることができる。更に、ＡＳＩＣ１１２０は、本発明の一実施形態に従って、音響モデリングプロセス（例えば図４の音響モデリングプロセス４２０）を実行するように構成することができる。
【００５３】
[0079]  図１２は、音声認識システム１２００のシステムレベルアーキテクチャの別の実施形態の例示である。音声認識システム１２００は、ＤＲＡＭデバイス１０６０、フラッシュメモリデバイス１０７０、Ｉ／Ｏインタフェース１０８０、メモリデバイス１２１０、及びＳＯＣ１２２０を含む。一実施形態において、ＳＯＣ１２２０は、ＡＳＩＣ１２３０及びＣＰＵ１２４０を含む集積チップである。ＡＳＩＣ１２３０は、音響モデリングプロセス（例えば図４の音響モデリングプロセス４２０）を実行するように構成することができ、ＣＰＵ１２４０は、本発明の一実施形態に従って、信号処理プロセス、音素評価プロセス、及び単語モデリングプロセス（例えば図４の信号処理プロセス４１０、音素評価プロセス４３０、及び単語モデリングプロセス４４０）を実行するように構成することができる。
【００５４】
[0080]  メモリデバイス１２１０は、本発明の一実施形態に従って、音響ライブラリを記憶すると共に１つ以上のシノンをＩ／Ｏバス１２１５を介してＡＳＩＣ１２３０に転送するように構成することができる。一実施形態において、メモリデバイス１２１０はＤＲＡＭデバイス又はフラッシュメモリデバイスとすることができる。別の実施形態では、音響ライブラリは、メモリデバイス１２１０でなく、ＡＳＩＣ１２３０内に位置するメモリデバイス（図１２には図示せず）に記憶することができる。更に別の実施形態では、音響ライブラリは、ＳＯＣ１２２０のためのシステムメモリ（例えばＤＲＡＭデバイス１０６０）に記憶することができる。
【００５５】
[0081]  図１３は、音声認識システム１３００のシステムレベルアーキテクチャの実施形態の別の例示である。音声認識システム１３００は、ＤＲＡＭデバイス１０６０、フラッシュメモリデバイス１０７０、Ｉ／Ｏインタフェース１０８０、メモリデバイス１２１０、及びＳＯＣ１２２０を含む。ＤＲＡＭデバイス１０６０は、本発明の一実施形態に従って、音響ライブラリを記憶すると共に１つ以上のシノンをＩ／Ｏバス１３１５を介してＡＳＩＣ１２３０に転送するように構成することができる。
【００５６】
[0082]  ４．音響処理ユニットアーキテクチャ
図１４はＡＰＵ１４００の一実施形態の例示である。一実施形態において、ＡＰＵ１４００は、メモリモジュール１４２０及びシノンスコアリングユニット（ＳＳＵ）１４３０を含む集積チップである。別の実施形態においては、メモリモジュール１４２０及びＳＳＵ１４３０は２つの別個のチップ上に集積することができる。
【００５７】
[0083]  ＡＰＵ１４００は、Ｉ／Ｏ信号１４１０を介してＣＰＵ（図１４には図示せず）と通信状態にあり、ＡＰＵ１４００は、本発明の一実施形態に従って音響モデリングプロセス（例えば図４の音響モデリングプロセス４２０）を実行するように構成されている。一実施形態において、Ｉ／Ｏ信号１４１０は、特徴ベクトル情報のための入力特徴ベクトルデータライン、入力クロック信号、入力ＡＰＵイネーブル信号、シノンスコア情報のための出力シノンスコアデータライン、及びＡＰＵ１４００のための他のＩ／Ｏ制御信号を含むことができる。ＡＰＵ１４００は、本発明の一実施形態に従って、特徴ベクトルデータラインを介してＣＰＵから（ＣＰＵによって計算された）１つ以上の特徴ベクトルを受信すると共に、シノンスコアデータラインを介してＣＰＵにシノンスコアを更に処理するために送信するように構成することができる。一実施形態において、Ｉ／Ｏ信号１４１０は、例えばＳＰＩバス、ＰＣＩバス、ＡＰＩバス、ＡＨＢ、ＡＰＢ、メモリバス、又は他のいずれかのタイプのバスとして実施して、ＡＰＵ１４００とＣＰＵとの間の通信経路を提供することができる（例えば図５から図７及び関連する記載を参照のこと）。ＡＰＵ１４００とＣＰＵとの間のインタフェース及びこのインタフェースのための制御信号については以下で詳述する。
【００５８】
[0084]  一実施形態において、メモリモジュール１４２０及びＳＳＵ１４３０は２つの異なるクロックドメインで動作することができる。本発明の一実施形態に従って、メモリモジュール１４２０は、（例えばＩ／Ｏ信号１４１０からの）ＡＰＵ１４００に対する入力クロック信号に関連したクロック周波数で動作することができ、ＳＳＵ１４３０は、入力クロック信号に基づいて更に高速のクロック周波数で動作することができる。例えば、入力クロック信号に関連したクロック周波数が１２ＭＨｚである場合、ＳＳＵ１４３０は６０ＭＨｚのクロック分割周波数で動作することができ、これは入力クロック信号に関連したクロック周波数よりも５倍高速である。クロック分割を実施するための技法及び方法は当業者には既知である。以下で詳述するように、ＳＳＵ１４３０のアーキテクチャはこれが動作するクロックドメインに基づくものとすることができる。
【００５９】
[0085]  図１４を参照すると、メモリモジュール１４２０は、バスコントローラ１４２２、メモリコントローラ１４２４、メモリデバイス１４２６、及びブリッジコントローラ１４２８を含む。メモリデバイス１４２６は、音声認識プロセスにおいて用いられる音響モデルを記憶するように構成されている。一実施形態において、メモリデバイス１４２６は、例えばフラッシュメモリデバイス等の不揮発性メモリデバイスとすることができる。音響ライブラリは、ＡＰＵ１４００の動作に先立って（例えばＡＰＵ１４００の製造及び／又は試験中に）不揮発性メモリデバイスにプリロードすることができる。
【００６０】
[0086]  別の実施形態において、メモリデバイス１４２６は、例えばＤＲＡＭデバイス等の揮発性メモリデバイスとすることができる。一実施形態において、ＡＰＵ１４００によってシノン要求が受信されると、メモリコントローラ１４２４は、不揮発性メモリデバイス（ＡＰＵ１４００と同一のチップ上に集積されているか、又はＡＰＵ１４００の外部に位置している）から揮発性メモリデバイスに音響ライブラリをコピーすることができる。不揮発性及び揮発性メモリデバイスの間の音響ライブラリ転送プロセスは、例えばＤＭＡ動作を用いて実施することができる。
【００６１】
[0087]  バスコントローラ１４２２は、ＡＰＵ１４００と外部ＣＰＵとの間のデータ転送を制御するように構成されている。一実施形態において、バスコントローラ１４２２は、ＣＰＵからの特徴ベクトルの受信及びＡＰＵ１４００からＣＰＵへのシノンスコアの送信を制御することができる。一実施形態において、バスコントローラ１４２２は、ＣＰＵからの１つ以上の特徴ベクトルを、メモリモジュール１４２０とＳＳＵ１４３０との間のインタフェースとして機能するブリッジコントローラ１４２８に転送するように構成されている。次いでブリッジコントローラ１４２８は、１つ以上の特徴ベクトルを更に処理するためにＳＳＵ１４３０に転送する。シノンスコアを算出したら、本発明の一実施形態に従って、シノンスコアはＳＳＵ１４３０からブリッジコントローラ１４２８を介してメモリモジュール１４２０に転送される。
【００６２】
[0088]  一実施形態において、バスコントローラ１４２２は、アクティブなシノンのリストを提供する制御信号を（Ｉ／Ｏ信号１４１０を介して）受信することができる。一実施形態において、アクティブなシノンのリストは、ＣＰＵが実行した音素評価プロセス（例えば図４の音素評価プロセス４３０）の結果としてＡＰＵ１４００に転送することができる。すなわち、一実施形態において、ＡＰＵ１４００が実行する音響モデリングプロセスとＣＰＵが実行する音素評価プロセスとの間でフィードバックプロセスを行うことができる（例えば図４のフィードバック４５０）。本発明の一実施形態に従って、アクティブなシノンのリストは、ＡＰＵ１４００に入来する特徴ベクトルについてのシノンスコア算出において用いることができる。
【００６３】
[0089]  アクティブなシノンのリストは、シノンスコア算出において用いられるメモリデバイス１４２６内に記憶された１つ以上のシノンを示す。一実施形態において、アクティブなシノンのリストは、メモリデバイス１４２６のアドレス空間に関連付けられたベースアドレス及びメモリデバイス１４２６内で１つ以上のシノンが位置するベースアドレスに関係付けたインデックスのリストを含むことができる。バスコントローラ１４２２は、アクティブなシノンのリストを、ブリッジコントローラ１４２８を介してＳＳＵ１４３０に送信することができる。ＳＳＵ１４３０は、アクティブなシノンのリストに関連付けられた１つ以上のシノンにアクセスするために、メモリデバイス１４２６と（メモリコントローラ１４２４を介して）通信状態にある。
【００６４】
[0090]  別の実施形態においては、バスコントローラ１４２２は、音響ライブラリに含まれるシノンの全てを用いてシノンスコア算出を実行する（例えば「全スコア」機能）ようにＡＰＵ１４００に命令する制御信号を（Ｉ／Ｏ信号１４１０を介して）受信することができる。バスコントローラ１４２２は、「全スコア」命令を、ブリッジコントローラ１４２８を介してＳＳＵ１４３０に送信する。ＳＳＵ１４３０は、音響ライブラリに関連付けられたシノンの全てにアクセスするために、メモリデバイス１４２６と（メモリコントローラ１４２４を介して）通信状態にある。
【００６５】
[0091]  従来の音声認識システムは、典型的に、ＣＰＵ内に音響モデリングモジュール及び音素評価モジュール（例えば図３の音響モデリングモジュール３２０及び音素評価モジュール３３０）間のフィードバックループを組み込んで、シノンスコア算出において用いるシノン数を制限する。その理由は、図３の音声認識システム３００に関して上述したように、数千のシノンを特徴ベクトルと比較する場合にかなりのコンピューティングリソースが音響モデリングプロセスに専念するからである。これによって、ＣＰＵ及び、メモリデバイス（例えば図３のメモリデバイス２３０）からＣＰＵにシノンを転送するデータバスの帯域幅（例えば図３のデータ２４０）に、大きな負担がかかる。このように従来の音声認識システムでは、アクティブなシノンのリストを用いて、ＣＰＵに対する音響モデリングプロセスの影響を限定する。しかしながら、ＣＰＵがアクティブなシノンのリストを用いることにより、入来音声信号をリアルタイムで又は実質的にほぼリアルタイムで処理することへの要望が制約されることがある。
【００６６】
[0092]  ＡＰＵ１４００の「全スコア」機能は、ＣＰＵ及びデータバスの帯域幅にかかる負荷を軽減するだけでなく、入来音声信号をリアルタイムで又は実質的にほぼリアルタイムで処理する。以下で詳述するように、例えば図１４のデータバス１４２７のバス幅及び距離算出部１４３６のアーキテクチャ等のＡＰＵ１４００の特徴は、リアルタイム又は実質的にほぼリアルタイムの音声認識のためのシステムを提供する。
【００６７】
[0093]  図１４を参照すると、ＳＳＵ１４３０は、出力バッファ１４３２、ＳＳＵ制御モジュール１４３４、特徴ベクトル行列モジュール１４３５、距離算出部１４３６、及び加算モジュール１４３８を含む。ＳＳＵ１４３０は、本発明の一実施形態に従って、１つ以上の特徴ベクトルとメモリデバイス１４２６に記憶された１つ以上のシノンとの間のマハラノビス距離を算出するように構成されている。１つ以上の特徴ベクトルの各々はＮ次元から成ることができ、ここでＮは例えば３９に等しくすることができる。一実施形態において、１つ以上の特徴ベクトルにおけるＮ次元の各々は１６ビット平均値とすることができる。
【００６８】
[0094]  更に、メモリデバイス１４２６に記憶された１つ以上のシノンの各々は１つ以上のガウス確率分布から成り、１つ以上のガウス確率分布の各々は、１つ以上の特徴ベクトルの各々と同一の次元数を有する（例えばＮ次元）。メモリデバイス１４２６に記憶された１つ以上のシノンの各々は、例えば３２のガウス確率分布を有することができる。
【００６９】
[0095]  上述のように、メモリモジュール１４２０及びＳＳＵ１４３０は２つの異なるクロックドメインにおいて動作することができる。一実施形態において、ＳＳＵ制御モジュール１４３４は、ブリッジコントローラ１４２８を介してメモリモジュール１４２０からクロック信号を受信するように構成されている。本発明の一実施形態によれば、ＳＳＵ制御モジュール１４３４が受信するクロック信号の周波数は、ＡＰＵ１４００に対する入力クロック信号（例えばＩ／Ｏ信号１４１０からの入力クロック信号）に関連付けられたクロック周波数と同一又は実質的に同一とすることができる。
【００７０】
[0096]  一実施形態において、ＳＳＵ制御モジュール１４３４はその入来クロック信号の周波数を分割し、その分割クロック信号をＳＳＵ１４３０の他のコンポーネント、例えば出力バッファ１４３２、特徴ベクトル行列モジュール１４３５、距離算出部１４３６、及び加算モジュール１４３８に配信して、これらの他のコンポーネントをクロック分割周波数で動作させることができる。例えば、（例えばＩ／Ｏ信号１４１０からの）入力クロック信号に関連付けられたクロック周波数が１２ＭＨｚである場合、ＳＳＵ制御モジュール１４３４は、ブリッジコントローラ１４２８から同一又は実質的に同一のクロック信号を受信し、既知のクロック分割技法及び方法を用いてそのクロック周波数を例えば６０ＭＨｚの周波数に分割することができる。ＳＳＵ制御モジュール１４３４は、このクロック分割信号をＳＳＵ１４３０の他のコンポーネントに配信して、これらの他のコンポーネントを例えば６０ＭＨｚで動作させることができる。これは、入力クロック信号に関連付けられたクロック周波数よりも５倍高速である。
【００７１】
[0097]  簡略化の目的のため、ＳＳＵ制御モジュール１４３４からＳＳＵ１４３０の他のコンポーネントに配信されるクロック信号は図１４に示さない。参照を容易にするため、このクロック信号に関連付けられた周波数を本明細書において「ＳＳＵクロック周波数」とも称する。更に、参照を容易にするため、ＳＳＵ制御モジュール１４３４に対する入力クロック信号に関連付けられた周波数を本明細書において「メモリモジュールクロック周波数」とも称する。
【００７２】
[0098]  図１５は、ＳＳＵ制御モジュール１４３４の一実施形態の例示である。ＳＳＵ制御モジュール１４３４は、入力バッファ１５１０及び制御ユニット１５２０を含む。ＳＳＵ制御モジュール１４３４は、メモリモジュール１４２０からブリッジコントローラ１４２８を介して１つ以上の制御信号を受信するように構成されている。一実施形態において、１つ以上の制御信号は、Ｉ／Ｏ信号１４１０及びメモリデバイス１４２６によって出力されたガウス確率分布に関連付けられた制御情報に関連付けることができる。Ｉ／Ｏ信号１４１０に関連付けられた制御信号は、例えばアクティブなシノンのリスト及び「全スコア」機能を含むことができる。ガウス確率分布に関連付けられた制御情報は、例えば、メモリデバイス１４２６が出力する以降のガウス確率分布に関連付けられたアドレス情報を含むことができる。
【００７３】
[0100]  図１４を参照すると、一実施形態において、バスコントローラ１４２２がＩ／Ｏ信号１４１０を介してアクティブなシノンのリストを受信すると、メモリデバイス１４２６のアドレス空間に関連付けられたベースアドレス及びメモリデバイス１４２６内で１つ以上のシノンが位置するベースアドレスに関係付けたインデックスのリストを、図１５の入力バッファ１５１０に記憶することができる。制御ユニット１５２０は入力バッファ１５１０と通信状態にあり、シノンスコア算出において図１４の距離算出部１４３６が適用するシノンのリストを監視する。
【００７４】
[0101]  例えば、アクティブなシノンのリストは、メモリデバイス１４２６のアドレス空間に関連付けられたベースアドレスと、メモリデバイス１４２６に記憶された１００のシノンを指し示す１００のインデックスと、を含むことができる。当業者には理解されようが、これらのインデックスは、メモリデバイス１４２６のアドレス空間に関連付けられたベースアドレスを基準としたポインタ又はメモリアドレスのオフセットを表すことができる。更に、上述のようにシノンは１つ以上のガウス確率分布から成ることができ、１つ以上のガウス確率分布の各々は、ＡＰＵ１４００が受信した１つ以上の特徴ベクトルの各々と同一の次元数（例えばＮ次元）を有する。説明の目的のため、この例では、メモリデバイス１４２６に記憶された各シノンは３２のガウス確率分布から成ると仮定する。本明細書における記載に基づいて、各シノンが３２よりも多いか又は少ないガウス確率分布から成る場合があることは当業者には理解されよう。
【００７５】
[0102]  一実施形態においては、アクティブなシノンのリストにおける第１のシノンについて、制御ユニット１５２０は図１４のメモリコントローラ１４２４と通信を行い、アクティブなシノンのリストに含まれたベースアドレス及び第１のインデックス情報に基づいて、メモリデバイス１４２６内の第１のシノンにアクセスする。本発明の一実施形態によれば、第１のインデックスに関連付けられたシノンは、そのシノンに関連付けられた最初の２つのガウス確率分布のメモリアドレス情報を含むことができる。次いでメモリデバイス１４２６は、第１のシノンに関連付けられた２つのガウス確率分布に、例えば逐次的にアクセスする。例えばメモリデバイス１４２６は、第１のガウス確率分布にアクセスし、このガウス確率分布を、データバス１４２７を介して距離算出部１４３６に出力する。メモリデバイス１４２６が第１のガウス確率分布を出力する際に、メモリデバイス１４２６は第２のガウス確率分布にもアクセスすることができる。
【００７６】
[0103]  一実施形態において、第２のガウス確率分布は、メモリデバイス１４２６によってアクセスされる第３のガウス確率分布のためのメモリアドレス情報を含むことができる。メモリデバイス１４２６は、このメモリアドレス情報を、図１４のブリッジコントローラ１４２８を介して図１５の制御ユニット１５２０に伝達することができる。次いで制御ユニット１５２０は、図１４のメモリコントローラ１４２４と通信を行って第３のガウス確率分布にアクセスする。一実施形態においては、第３のガウス確率分布がメモリデバイス１４２６によってアクセスされている間に、第２のガウス確率分布を、データバス１４２７を介して距離算出部１４３６に出力することができる。現在のガウス確率分布を出力する間に以降のガウス確率分布にアクセスするこの繰り返しの重複処理を、シノンに関連付けられた全てのガウス確率分布について（例えばシノンに関連付けられた３２のガウス確率分布の全てについて）実行する。繰り返しの重複（又は並列）処理の利点は、とりわけ、シノンスコア算出において高速性能が得られることである。
【００７７】
[0104]  本発明の一実施形態に従って、図１５の制御ユニット１５２０は、メモリデバイス１４２６から距離算出部１４３６へのガウス確率分布の転送プロセスを監視して、メモリアクセス及び転送プロセスがパイプラインで行われるようにする。第１のシノンに関連付けられた３２のガウス確率分布が図１４の距離算出部１４３６に出力された後、制御ユニット１５２０はアクティブなシノンのリスト内の１つ以上の残りのシノンについて上述の処理を反復する。
【００７８】
[0105]  現在の特徴ベクトルのためのシノンスコア算出においてアクティブなシノンのリスト内のシノンを用いた後、本発明の一実施形態に従って、メモリモジュール１４２０は、以降の特徴ベクトルのためのシノンスコア算出において現在の特徴ベクトルからのアクティブなシノンのリストを用いるべきであることを示す制御信号を、Ｉ／Ｏ信号１４１０を介して受信することができる。メモリモジュール１４２０からブリッジコントローラ１４２８を介してこの制御信号を受信すると、ＳＳＵ制御モジュール１４３４は、以降の特徴ベクトルのためのシノンスコア算出において現在の特徴ベクトルからの同一のアクティブなシノンのリストを用いる。特に、図１５の制御ユニット１５２０は、入力バッファ１５１０に記憶された同一のベースアドレス及びベースアドレスに関係付けたインデックスのリストを、以降の特徴ベクトルに適用する。図１５の制御ユニット１５２０は、アクティブなシノンのリストの例について上述したものと同様に、以降の特徴ベクトルについて、メモリデバイス１４２６から距離算出部１４３６へのガウス確率分布の転送プロセスを監視する。
【００７９】
[0106]  別の実施形態において、メモリモジュール１４２０は、「全スコア」動作を示す制御信号を、Ｉ／Ｏ信号１４１０を介して受信することができる。上述のように、「全スコア」機能は、メモリデバイス１４２６に記憶された音響ライブラリに含まれる全てのシノンを特徴ベクトルと比較する動作を指す。一実施形態において、図１５の制御ユニット１５２０は、図１４のメモリコントローラ１４２４と通信を行って、メモリデバイス１４２６内の第１のシノンにアクセスする。第１のシノンは例えば、メモリデバイス１４２６のアドレス空間に関連付けられた開始メモリアドレスに位置することができる。上述のアクティブなシノンのリストの例と同様に、本発明の一実施形態によれば、メモリアドレス１４２６内の第１のシノンは、そのシノンに関連付けられた最初の２つのガウス確率分布のメモリアドレス情報を含むことができる。次いでメモリデバイス１４２６は、第１のシノンに関連付けられた２つのガウス確率分布に、例えば逐次的にアクセスする。
【００８０】
[0107]  一実施形態においては、上述のアクティブなシノンのリストの例と同様に、第２のガウス確率分布は、メモリデバイス１４２６によってアクセスされる第３のガウス確率分布に関するメモリアドレス情報を含むことができる。メモリデバイス１４２６は、このメモリアドレス情報を、図１４のブリッジコントローラ１４２８を介して図１５の制御ユニット１５２０に伝達することができる。次いで制御ユニット１５２０は、図１４のメモリコントローラ１４２４と通信を行って第３のガウス確率分布にアクセスする。一実施形態において、第３のガウス確率分布がメモリデバイス１４２６によってアクセスされている間に、第２のガウス確率分布を、データバス１４２７を介して距離算出部１４３６に出力することができる。現在のガウス確率分布を出力する間に以降のガウス確率分布にアクセスするこの繰り返しの重複処理を、シノンに関連付けられた全てのガウス確率分布について（例えばシノンに関連付けられた３２のガウス確率分布の全てについて）実行する。
【００８１】
[0108]  本発明の一実施形態に従って、図１５の制御ユニット１５２０は、メモリデバイス１４２６から距離算出部１４３６へのガウス確率分布の転送プロセスを監視して、メモリアクセス及び転送プロセスがパイプラインで行われるようにする。第１のシノンに関連付けられた３２のガウス確率分布が図１４の距離算出部１４３６に出力された後、制御ユニット１５２０は音響ライブラリ内の１つ以上の残りのシノンについて上述の処理を反復する。
【００８２】
[0109]  図１４を参照すると、ＡＰＵ１４００において話者適応のために特徴ベクトル行列モジュール１４３５が用いられる。一実施形態において、特徴ベクトル行列モジュール１４３５は、ＣＰＵからＩ／Ｏ信号１４１０を介して特徴ベクトル変換行列（ＦＶＴＭ）を受信する。ＦＶＴＭは、例えば発声当たり１回等、定期的に特徴ベクトル行列モジュール１４３５にロードすることができる。一実施形態において、ＦＶＴＭは、特徴ベクトル行列モジュール１４３５内に位置するスタティックランダムアクセスメモリ（ＳＲＡＭ）デバイスに記憶することができる。
【００８３】
[0110]  本発明の一実施形態によれば、メモリデバイス１４２６内の各シノンについて記憶された平均値及び分散値と共に、各シノンについてインデックスを記憶することができる。このインデックスはＦＶＴＭ内の行を指し示す。ＦＶＴＭ内の行数は様々である場合があり（例えば１０、５０、又は１００行）、ＡＰＵ１４００を実施する音声認識システムに特定的とすることができる。ＦＶＴＭ内の各行は、特徴ベクトルの次元数Ｎ（例えば３９）と等しい数のエントリを有することができる。本発明の一実施形態によれば、各エントリは、新しい特徴ベクトルを生成するためにその対応する特徴ベクトル次元と乗算される倍率である。ＦＶＴＭからの選択された行（例えば３９倍率の行）は、データバス１４３９を介して距離算出部１４３６に転送され、距離算出部１４３６は乗算動作を実行して新しい特徴ベクトルを生成する。これについては以下で詳述する。
【００８４】
[0111]  一実施形態において、ＳＳＵ制御モジュール１４３４は、ＣＰＵから受信した特徴ベクトル及びシノンに関連付けられたインデックスを特徴ベクトル行列モジュール１４３５に提供する。インデックスは、特徴ベクトルをスケーリングするためのＦＶＴＭ内の特定の行を示す。例えば、ＦＶＴＭは１００行を有し、インデックスは１０に等しくすることができる。ここで、３９次元を有する特徴ベクトルでは、ＦＶＴＭの１０番目の行が３９の倍率を含み、この倍率の行を距離算出部１４３６に転送して新しい特徴ベクトルを生成する。
【００８５】
[0112]  図１４を参照すると、距離算出部１４３６は、メモリデバイス１４２６に記憶されたシノンの１つ以上の次元と特徴ベクトルの対応する１つ以上の次元との間の距離を算出するように構成されている。図１６は距離算出部１４３６の一実施形態の例示である。距離算出部１４３６は、データパスマルチプレクサ（ＭＵＸ）１６１０、特徴ベクトルバッファ１６２０、演算論理ユニット（ＡＬＵ）１６３０１〜１６３０８、及びアキュムレータ１６４０を含む。
【００８６】
[0113]  データパスＭＵＸ１６１０は、図１４のメモリデバイス１４２６からデータバス１４２７を介してガウス確率分布を受信するように構成されている。一実施形態において、データバス１４２７の幅は１つのガウス確率分布に関連付けられたビット数に等しい。例えば、１つのガウス確率分布が７６８ビットである場合、データバス１４２７の幅も７６８ビットである。複数のガウス確率分布次元について、ガウス確率分布に関連付けられた７６８ビットを、ガウス確率分布次元当たり１６ビット平均値、１６ビット分散値、及び他の属性に割り当てることができる。上述のように、ガウス確率分布は、例えば３９次元等の特徴ベクトルと同一の次元数を有することができる。別の実施形態では、データバス１４２７の幅は２５６ビットよりも大きくすることができる。
【００８７】
[0114]  更に、一実施形態において、メモリデバイス１４２６及び距離算出部１４３６を同一のチップ上に集積することができ、この場合データバス１４２７はこのチップ上に集積された（上述の幅の）幅広いバスであり、メモリデバイス１４２６から距離算出部１４３６へのガウス確率分布のデータ転送を提供する。別の実施形態では、メモリデバイス１４２６及び距離算出部１４３６を２つの別個のチップ上に集積することができ、この場合データバス１４２７をこれら２つのチップ間に緊密に接続された（上述の幅の）幅広いデータバスとすることで、ノイズ及び相互接続寄生効果によるデータの劣化を最小限に抑える。以下で論じるように、（上述の幅の）幅広いデータバス１４２７の利点は、とりわけ、シノンスコアの算出においてＡＰＵ１４００の性能を向上させることである。
【００８８】
[0115]  また、データパスＭＵＸ１６１０は、ＳＳＵ制御モジュール１４３４からデータバス１４３７を介して１つ以上の制御信号及び特徴ベクトルを、更に特徴ベクトルバッファ１６２０から特徴ベクトル倍率を受信するように構成されている。一実施形態において、特徴ベクトルバッファ１６２０は、特徴ベクトル行列モジュール１４３５からデータバス１４３９を介して転送された（ＦＶＴＭの選択された行に関連付けられた）倍率を記憶するように構成することができる。別の実施形態では、特徴ベクトルバッファ１６２０はＦＶＴＭを記憶するように構成することができる。ここで、ＳＳＵ制御モジュール１４３４からデータバス１４３７を介して受信された１つ以上の制御信号は、ＦＶＴＭの行を選択するために用いることができる。データパスＭＵＸ１６１０は、特徴ベクトル、ＦＶＴＭから選択された特徴ベクトル倍率、及びガウス確率分布情報を、更に処理するためにデータバス１６１２を介してＡＬＵ１６３０１〜１６３０８に出力する。
【００８９】
[0116]  一実施形態において、データパスＭＵＸ１６１０は、ＳＳＵ制御モジュール１４３４からデータバス１４３７を介して１つ以上の制御信号からのガウス重み付け係数も受信するように構成されている。データパスＭＵＸ１６１０は、ガウス重み付け係数を更に処理するためにアキュムレータ１６４０に出力するように構成されている。
【００９０】
[0117]  図１６を参照すると、本発明の一実施形態に従って、ＡＬＵ１６３０１〜１６３０８の各々は、ＳＳＵクロックサイクル当たりの、データパスＭＵＸ１６１０から受信したガウス確率分布の次元と特徴ベクトルの対応する次元との間の距離スコアを算出するように構成されている。一実施形態において、ＡＬＵ１６３０１〜１６３０８は、ＳＳＵクロック周波数（例えばメモリモジュールクロック周波数よりも５倍高速）で動作して、（例えばガウス確率分布を距離算出部１４３６に転送するための）図１４のメモリデバイス１４２６からの読み取り動作ごとに、ガウス確率分布に関連付けられた距離スコア（本明細書では「ガウス距離スコア」とも称する）を、距離算出部１４３６から加算モジュール１４３８に出力することができる。
【００９１】
[0118]  一実施形態において、データパスＭＵＸ１６１０は、一次元に関連付けた特徴ベクトル情報、ガウス確率分布の対応する次元に関連付けた平均値、ガウス確率の対応する次元に関連付けた分散値、及び特徴ベクトル倍率を、ＡＬＵ１６３０１〜１６３０８の各々に配信するように構成されている。各ＡＬＵに割り当てた特徴ベクトル情報及び特徴ベクトル倍率に基づいて、ＡＬＵ１６３０１〜１６３０８の各々は、特徴ベクトルの次元に各倍率を乗算することで新しい特徴ベクトルを生成させるように構成されている。
【００９２】
[0119]  一実施形態において、特徴ベクトル次元と対応する倍率との乗算は「その場で（on-the-fly）」実行される。これが意味するのは、乗算動作が距離スコア算出中に実行されるということである。これは、乗算動作がＦＶＴＭの各行について実行されて、乗算動作の結果が後にＡＬＵ１６３０１〜１６３０８によりアクセスされるメモリに記憶されるのとは対照的である。「その場の」乗算動作の利点は、とりわけ、ＦＶＴＭのインデックスなしの（又は選択されていない）行に関連付けられた乗算動作の結果にはメモリ記憶が必要ないことである。これによって、インデックスなしの行に関連付けられた特徴ベクトルスケーリング結果をメモリに記憶するために追加のクロックサイクルが必要でないので新しい特徴ベクトルの生成が高速化すると共に、ＡＬＵ１６３０１〜１６３０８のためのダイサイズ領域が小さくなる。
【００９３】
[0120]    各ＡＬＵについて、新しい特徴ベクトル、平均値、及び分散値に基づいて、ＡＬＵ１６３０１〜１６３０８の各々は、本発明の一実施形態に従って、ＳＳＵクロックサイクル当たりの特徴ベクトル次元及び対応するガウス確率分布次元に基づいた距離スコアを算出するように構成されている。累積的に、１クロックサイクルにおいて、ＡＬＵ１６３０１〜１６３０８は８次元についての距離スコアを生成する（すなわちＡＬＵ当たり１次元の算出）。ＡＬＵのアーキテクチャ及び動作については以下で詳述する。
【００９４】
[0121]  本発明の一実施形態によれば、距離算出部１４３６におけるＡＬＵの数は上述のＳＳＵクロック周波数及びメモリモジュールクロック周波数に依存し、メモリデバイス１４２６に対する読み取りアクセスごとに距離算出部１４３６が１つのガウス確率分布についての距離スコアを出力することを可能とする。例えば、メモリモジュールクロック周波数は１２ＭＨｚの動作周波数を有することができ、この場合メモリデバイス１４２６も１２ＭＨｚで動作する（例えば約８３ｎｓの読み取りアクセスについて）。ＳＳＵ１４３０は、例えば６０ＭＨｚのＳＳＵクロック周波数を有し、メモリモジュールクロック周波数よりも５倍高速で動作することができる。３９次元の特徴ベクトル及び８個のＡＬＵによって、５ＳＳＵクロックサイクル又は１メモリモジュールクロックサイクルで１つのガウス確率分布についてのガウス距離スコアを算出することができる。従って、意図的に、５ＳＳＵクロックサイクルは１メモリモジュールクロックサイクルに相当する所定数のクロックサイクルであり、この場合、１つのガウス確率分布がメモリデバイスから１メモリモジュールクロックサイクルで読み取られる際に、別のガウス確率分布についてのガウス距離スコアがアキュムレータ１６４０によって算出される。
【００９５】
[0122]  一実施形態において、ＡＬＵ１６３０１〜１６３０８の一部はＳＳＵクロックサイクルの立ち上がりで活性化することができ、ＡＬＵ１６３０１〜１６３０８の残り部分はＳＳＵクロックサイクルの立ち下がりで活性化することができる。例えば、ＡＬＵ１６３０１〜１６３０４をＳＳＵクロックサイクルの立ち上がりで活性化することができ、ＡＬＵ１６３０５〜１６３０８をＳＳＵクロックサイクルの立ち下がりで活性化することができる。ＡＬＵ１６３０１〜１６３０８の活性化をずらすことの結果として、距離算出部１４３６によって生成するピーク電流（及びピーク電力）を最小限とすることができ、このため距離算出部１４３６において信頼性の問題が生じる可能性を抑えることができる。
【００９６】
[0123]  本明細書における記載に基づいて、距離算出部１４３６のアーキテクチャが上述の例に限定されないことは当業者には認められよう。当業者によって理解されるように、距離算出部１４３６は６０ＭＨｚよりも高いか又は低いクロック周波数で動作することができ、更に距離算出部１４３６は８個よりも多いか又は少ないＡＬＵを含むことができる。
【００９７】
[0124]  図１６を参照すると、アキュムレータ１６４０は、ＡＬＵ１６３０１〜１６３０８の各々からの出力及び（データバス１６１４を介して）データパスＭＵＸ１６１０からのガウス重み付け係数を受信するように構成されている。上述のように一実施形態においては、ＳＳＵクロックサイクルごとに、ＡＬＵ１６３０１〜１６３０８の各々によって、ガウス確率分布次元についての距離スコアが出力される。ＡＬＵ１６３０１〜１６３０８の各々からのこれらの距離スコアは、アキュムレータ１６４０によって記憶され蓄積されて、ガウス確率分布次元についての距離スコアすなわちガウス距離スコアを生成する。例えばアキュムレータ１６４０は、ＳＳＵクロックサイクル当たりのＡＬＵ１６３０１〜１６３０８が算出した各距離スコアを加算する。
【００９８】
[0125]  アキュムレータ１６４０においてガウス確率分布次元の全て（例えば３９次元）に関連付けられたガウス距離スコアを蓄積した後、アキュムレータ１６４０はこの合計をガウス重み付け係数と乗算して重み付けしたガウス距離スコアを生成する。一実施形態において、ガウス重み付け係数は任意選択的であり、この場合アキュムレータ１６４０はガウス距離スコアを出力する。別の実施形態では、ガウス重み付け係数は各ガウス分布に特定的であり、メモリデバイス１４２６に記憶されている。
【００９９】
[0126]  加算モジュール１４３８は、１つ以上のガウス距離スコア（又は重み付けしたガウス距離スコア）を加算してシノンスコアを生成するように構成されている。上述のように、各シノンは１つ以上のガウス確率分布から成ることができ、各ガウス確率分布はガウス距離スコアに関連付けることができる。複数のガウス確率分布（例えば３２のガウス確率分布）を有するシノンでは、加算モジュール１４３８は、ガウス確率分布の全てに関連付けられたガウス距離スコアを合計してシノンスコアを生成する。一実施形態において、加算モジュール１４３８は、対数領域において合計動作を実行してシノンスコアを生成するように構成されている。
【０１００】
[0127]  出力バッファ１４３２は、加算モジュール１４３８からのシノンスコアを受信してこのシノンスコアをブリッジコントローラ１４２８に転送するように構成されている。次いでブリッジコントローラ１４２８はシノンスコアを、バスコントローラ１４２２を介して外部のＣＰＵに転送する。一実施形態において、出力バッファ１４３２は複数のメモリバッファを含むことができ、第１のメモリバッファ内の第１のシノンスコアをブリッジコントローラ１４２８に転送している間に、加算モジュール１４３８が生成した第２のシノンスコアを、後でブリッジコントローラ１４２８に転送するために第２のメモリバッファに転送することができる。
【０１０１】
[0128]  図１７は、音響モデリングのための方法１７００の一実施形態の例示である。方法１７００のステップは、例えば図１４のＡＰＵ１４００を用いて実行することができる。
【０１０２】
[0129]  ステップ１７１０において、少なくとも１つのガウス確率分布の幅を有するデータバスを介して複数のガウス確率分布を受信し、外部コンピューティングデバイスから特徴ベクトルを受信する。ガウス確率分布は、例えば７６８ビットから成ることができ、この場合データバスの幅は少なくとも７６８ビットである。更に、図１４のＡＰＵ１４００は、外部コンピューティングデバイス（例えば図１４のＩ／Ｏ信号１４１０を介してＡＰＵ１４００と通信状態にあるＣＰＵ）から特徴ベクトルを受信することができる。
【０１０３】
[0130]  一実施形態においては、特徴ベクトルの複数の次元に関連付けられた情報、少なくとも１つのガウス確率分布の対応する複数の次元に関連付けられた複数の平均値、及び少なくとも１つのガウス確率分布の対応する複数の次元に関連付けられた複数の分散値を、例えば演算論理ユニット（例えば図１６のＡＬＵ１６３０１〜１６３０８）に配信する。
【０１０４】
[0131]  ステップ１７２０において、特徴ベクトルの複数の次元及び少なくとも１つのガウス確率分布の対応する複数の次元に基づいて、複数の次元距離スコアを算出する。一実施形態において、距離スコアの算出は、アクティブなシノンのリストからの少なくとも１つのシノンに基づいている。アクティブなシノンのリストは、メモリデバイスのアドレス空間に関連付けられたベースアドレス及びメモリデバイス内で少なくとも１つのシノンが位置するベースアドレスに関係付けた１つ以上のインデックスを含むことができる。更に、特徴ベクトルの複数の次元についての複数の倍率を記憶する。複数の倍率は、複数の次元距離スコアの算出中に特徴ベクトルの複数の次元に適用される。ステップ１７２０は、例えば図１４の距離算出部１４３６によって実行することができる。
【０１０５】
[0132]  ステップ１７３０において、複数の次元距離スコアを合計して、少なくとも１つのガウス確率分布についてのガウス距離スコアを生成する。一実施形態において、ガウス距離スコアは、所定数のシノンスコアリングユニット（ＳＳＵ）クロックサイクルにわたって生成される。所定数のＳＳＵクロックサイクルは、メモリデバイスからの少なくとも１つのガウス確率分布の読み取りアクセス時間に等しくすることができる。ステップ１７３０は、例えば図１４の距離算出部１４３６によって実行することができる。
【０１０６】
[0133]  ステップ１７４０において、複数のガウス確率分布に対応する複数のガウス距離スコアを合計してシノンスコアを生成する。ステップ１７４０は、例えば図１４の距離算出部１４３６によって実行することができる。
【０１０７】
[0134]  本発明の実施形態は、図３の従来の音声認識システム２００に関して上述した問題に対処しこれらを解決する。まとめると、音響モデリングプロセスは、例えば図１４のＡＰＵ１４００によって実行される。ＡＰＵはＣＰＵと連動して動作し、この場合、ＡＰＵはＣＰＵから１つ以上の特徴ベクトル（例えば図３の特徴ベクトル３１５）を受信し、１つ以上のガウス確率分布に基づいてシノンスコア（例えば図３のシノンスコア３２５）を算出し、このシノンスコアをＣＰＵに出力することができる。一実施形態において、１つ以上のガウス確率分布はＡＰＵに記憶することができる。あるいは、別の実施形態では、１つ以上のガウス確率分布はＡＰＵの外部に記憶することができ、この場合ＡＰＵは外部メモリデバイスから１つ以上のガウス確率分布を受信する。上述のＡＰＵアーキテクチャの実施形態に基づいて、シノンスコアの算出の高速化が達成される。
【０１０８】
[0135]  ５．演算論理ユニットアーキテクチャ
図１８は、本発明の一実施形態に従ったＡＰＵ１８００のブロック図である。一実施形態では、図１８のアーキテクチャに従ってＡＬＵ１６３０１〜１６３０８の１つ以上を実施可能である。ＡＬＵ１８００は、特徴ベクトルとガウス確率分布ベクトルとの間の一次元距離スコアを計算するように構成されている。例えばＡＬＵ１８００は、以下のように一次元距離スコアを計算するように構成することができる。
【０１０９】
【数１】
2015501012.tif 000003
【０１１０】
ここで、
Δｉｊ＝ｘｉ−μｉｊであり、
ｖａｒｉｊは、ｊ番目のガウス確率分布ベクトルのｉ次元の分散値であり、
Ｍ１及びＭ２は倍率であり、
Ｃは定数であり、
ｘｉはｉ次元における特徴ベクトルの値であり、
μｉｊは、ｊ番目のガウス確率分布ベクトルのｉ次元の平均値である。
【０１１１】
[0136]  従って、一実施形態において、所与の次元及び所与のガウス確率分布について、ＡＬＵ１８００が出力する一次元距離スコアは、３つの変数すなわちｘｉ、μｉｊ、及びｖａｒｉｊに依存する。ソフトウェアにおいてこの等式を実施するための１つの技法は、これらの３つの変数でインデックスを付けたルックアップテーブル（ＬＵＴ）を生成することである。更に、スコアはｘｉ及びμｉｊの値に特定的に依存せずにそれらの値の差すなわちΔｉｊに依存するので、このＬＵＴを更に簡略化して、Δｉｊ及びｖａｒｉｊによりインデックスを付けた２次元ＬＵＴとすることができる。このように、２次元ＬＵＴを用いてＡＬＵ１６３０１〜１６３０８を実施することができる。
【０１１２】
[0137]  しかしながら、２次元ＬＵＴは、図１６のハードウェア実施においてＡＬＵ１６３０１〜１６３０８を実施するために用いられると大きな欠点を有する場合がある。特に、例えば８個のＡＬＵ１６３０１〜１６３０８があり、各々が一次元距離スコアを算出するので、この２次元ＬＵＴの８個のコピーが存在しなければならない。一実施形態において、かかる２次元ＬＵＴは約３２Ｋバイトであるが、他の実施形態及び用途ではもっと大きいＬＵＴが必要となり得る。このように、かかる実施形態では、３２ＫバイトＬＵＴの８個のコピーが必要となる。このように実施された場合、ＳＳＵのための全基板空間のうち大部分が８個の２次元ＬＵＴに対してのみ割り当てられることになる。この問題は、もっと大きいＬＵＴが必要であるか又は望ましい場合には更に悪化する。
【０１１３】
[0138]  一実施形態において、ＡＬＵ１８００は、計算論理及び一次元ＬＵＴの組み合わせを用いたスコアリング機能を実施することによって、２次元ＬＵＴのこの欠点を克服する。重要なことに、等式（１）は２つの部分に分割可能である。すなわち、ａｌｕｉｊ部分及びＬＵＴｉｊ部分であり、各々は以下のように特定される。
【０１１４】
【数２】
2015501012.tif 000004
【０１１５】
【数３】
2015501012.tif 000005
【０１１６】
[0139]  従って、ＡＬＵ１８００はａｌｕｉｊを計算し、この計算と並行してＬＵＴｉｊを検索する。次いでａｌｕｉｊ及びＬＵＴｉｊを組み合わせて距離スコアを形成する。具体的には、図１８に示すように、ＡＬＵ１８００は計算論理ユニット１８０２及びＬＵＴモジュール１８０４を含む。以下で詳述するように、計算論理ユニット１８０２は値ａｌｕｉｊを計算することができ、ＬＵＴモジュール１８０４は値ＬＵＴｉｊを検索するために用いることができる。更に、ＡＬＵ１８００は組み合わせモジュール１８０６も含む。組み合わせモジュール１８０６は、計算ユニット１８０２及びＬＵＴモジュール１８０４の出力を組み合わせ、距離スコアを出力する。
【０１１７】
[0140]  計算論理ユニット１８０２及びＬＵＴモジュール１８０４は、それぞれの値を求めるために必要な入力を受信するだけである。具体的には、上述のように、ａｌｕｉｊは３つの変数すなわちｘｉ、μｉｊ、及びｖａｒｉｊに依存する。このため図１８に示すように、計算論理ユニット１８０２はこれらの３つの値を入力として受信する。更に、ＬＵＴモジュール１８０４から検索される値は、値ｖａｒｉｊのみを用いてインデックスを付ける。従って、図１８に示すように、ＬＵＴモジュール１８０４は値ｖａｒｉｊを受信するだけである。
【０１１８】
[0141]  図１９は、本発明の一実施形態に従ったＡＬＵ１８００の詳細ブロック図を示す。図１９の実施形態において、計算論理ユニット１８０２は、減算モジュール１９１０、二乗モジュール１９１２、ＬＵＴ１９１４、マルチプレクサ１９１６、及びフォーマッティングモジュール１９１８を含む。減算モジュール１９１０は、ｘｉとμｉｊとの間の差を計算する。すなわち、減算モジュール１９１０はΔｉｊを計算する。二乗モジュール１９１２は、減算モジュール１９１０が出力した差を二乗して、Δ２ｉｊを表す整数を生成する。
【０１１９】
[0142]  一実施形態において、ＬＵＴ１９１４は、
【数４】
2015501012.tif 000006
に相当する値を出力する。マルチプレクサ１９１６は、２つの項、すなわち（１）ＬＵＴ１９１４から検索された値、及び（２）二乗モジュール１９１２が出力した二乗の積を算出する。従って、マルチプレクサ１９１６の出力は、
【数５】
2015501012.tif 000007
である。この積の値はフォーマッティングモジュール１９１８により受信され、これはこの結果をＵＴモジュール１８０４の出力と効果的に組み合わせることができるようにフォーマットする。
【０１２０】
[0143]  図１９に示すように、ＬＵＴモジュール１８０４はＬＵＴ１９２０及びフォーマッティングモジュール１９２２を含む。ＬＵＴ１９２０は、等式（３）で表されるようなＬＵＴｉｊに相当する値を記憶し、ｖａｒｉｊを用いてインデックスを付ける。ＬＵＴ１９２０から検索された値はフォーマッティングモジュール１９２２によって受信される。フォーマッティングモジュール１９２２は、ＬＵＴ１９２０の出力を計算論理ユニット１８０２の出力と効果的に組み合わせることができるようにフォーマットする。
【０１２１】
[0144]  計算ユニット１８０２及びＬＵＴモジュール１８０４からの出力は、組み合わせモジュール１８０６において受信される。組み合わせモジュール１８０６は、加算器１９３０、シフトモジュール１９３２、丸めモジュール１９３４、及び飽和モジュール１９３６を含む。加算器１９３０は、２つの受信した値の和を計算してこの和を出力する。シフトモジュール１９３２は、加算器１９３０が出力した和の小数部を除去するように構成されている。丸めモジュール１９３４は、シフトモジュール１９３４の出力の端数を切り捨てるように構成されている。飽和モジュール１９３６は、端数を切り捨てた和を受信してこの値を特定のビット数に飽和させるように構成されている。このため、飽和モジュール１９３６の出力は、一次元距離スコアを表す特定のビット数を有する値である。
【０１２２】
[0145]  図２０は、本発明の別の実施形態に従った計算ユニット１８０２のブロック図である。図２０に示す実施形態は図１９の実施形態と同様であるが、図２０の実施形態は更に変換モジュール２００２、例外処理モジュール２０１２、フォーマッティングモジュール２０１４、及びマルチプレクサ２０１８を含む点が異なる。
【０１２３】
[0146]  変換モジュール２００２は、マルチプレクサ２０２０、スケールビットモジュール２０２２、及び飽和モジュール２０２４を含む。上述のように、特徴ベクトルの値は、特徴ベクトル変換行列の各エントリによって、例えば話者の学習された特徴を考慮するために変換することができる。一実施形態において、変換モジュール２００２は、個々の特徴ベクトルの値ｘｉを対応する変換値αｉによってスケーリングするように構成することができる。具体的には、マルチプレクサ２０２０は、特徴ベクトルの値ｘｉ及び対応する変換値αｉの積を計算し、スケールビットモジュール２０２２に値を出力する。スケールビットモジュール２０２２は、右にシフトし、この結果得られた整数を飽和モジュール２０２４に出力する。飽和モジュール２０２４は、図１９を参照して説明した飽和モジュール１９３６と同様であり、受信した値を特定のビット数に飽和させる。このため、飽和モジュール２０２４の出力は、スケーリングした特徴ベクトル値を表す値である。
【０１２４】
[0147]  例外処理モジュール２０１２及びマルチプレクサ２０１８は、ＬＵＴ１９１４に存在する特定のエラーに対応するように構成されている。例えば、空間を節約するための取り組みとしてＬＵＴ１９１４のサイズを縮小することができる。サイズ縮小によって、ＬＴＵ１９１４の特定の値がエラーを有する場合がある。かかる実施形態では、例外処理モジュール２０１２は、ＬＵＴ１９１４の出力がそれらの値の１つであるか否かを認識し、正しい値を出力することができる。換言すると、例外処理モジュール２０１２は、サイズ制限のためにエラーを有することがあるＬＵＴ１９１４の各エントリについてのエントリを含むＬＵＴとして機能することができる。ＬＵＴ１９１４はｖａｒｉｊに基づいてインデックスを付けるので、例外処理モジュール２０１２は、ＬＵＴ１９１４の出力をｖａｒｉｊの値に基づいて補正する必要があるか否かを認識することができる。
【０１２５】
[0148]  更に別の実施形態では、例外処理モジュール２０１２は、Δｉｊも受信する２次元ＬＵＴとして機能することができる。かかる実施形態では、例外処理モジュール２０１２は、（例えばＬＵＴ１９１４からの対応するエントリとは対照的に）ａｌｕｉｊの特定の値を出力することができる。ＬＵＴ１９１４におけるこれらの起こり得るエラーの数は比較的少ないので、例外処理モジュール２０１２は、他のもっと大きい２次元ＬＵＴのように大きな空間量を占めることはない。更に、符号ビットモジュール１９１８の出力でなく例外処理モジュール２０１２の出力を出力するようにマルチプレクサ２０１８を制御することで、例外処理モジュール２０１２は、ＬＵＴ１９１４の誤った出力を用いて算出したａｌｕｉｊの値でなく記憶されたａｌｕｉｊの値を最終的に組み合わせモジュール１８０６に出力することを保証する。
【０１２６】
[0149]  フォーマッティングモジュール２０１４は、マルチプレクサ１９１６が計算した積を受信する。一実施形態において、フォーマッティングモジュール２０１４は、この結果におけるビット数を削減するように構成されている。必須ではないが、この動作は、出力におけるビット数を削減することによって空間及び電力を節約することができる。
【０１２７】
[0150]  更に、図２０の実施形態は、減算モジュール１８１０がマルチプレクサ２００４及び２００６、比較モジュール２００８、及び減算器２０１０を含むものとして示す。一実施形態において、二乗モジュール１９１２は、明らかに正の値を二乗するように構成することも可能である。このため、かかる実施形態における減算モジュール１９１０の出力は正でなければならない。この結果を達成するため、２つのオペランド、すなわち特徴ベクトルの値（任意選択的に変換値αｉでスケーリングされる）及び平均値μｉｊを、比較モジュール２００８によって比較することができる。次いで比較モジュール２００８は、制御信号をマルチプレクサ２００４及び２００６に出力して、減算器２０１０に対する第１のオペランドが少なくとも第２のオペランドと同じ大きさであることを保証する。
【０１２８】
[0151]  図２１は、１次元距離スコアを計算するための方法２１００の一実施形態の例示である。方法２１００のステップは、例えば図１８に示すＡＬＵ１８００を用いて実行可能である。ステップ２１０２において、特徴ベクトル次元を変換値によってスケーリングする。ステップ２１０４において、特徴ベクトル値並びにガウス確率分布ベクトルに関連付けられた平均値及び分散値に基づいて、第１の値を計算する。ステップ２１０６において、分散値に基づいて第２の値を検索する。例えば図１９において、ＬＵＴモジュール１８０４を用いて分散値を検索することができる。ステップ２１０８において、第１及び第２の値を組み合わせて１次元スコアを生成する。
【０１２９】
[0152]  ６．音響処理ユニットインタフェース
Ａ．システムの概要
図２２は、本発明の一実施形態に従った音響処理システム２２００のブロック図である。音響処理システムは、中央処理装置（ＣＰＵ）２２１０及び音響処理ユニット（ＡＰＵ）２２２０を含む。ＣＰＵ２２１０上で実行しているのは、アプリケーション２２１２、音声認識エンジン２２１４、及びＡＰＩ２２１６である。音声認識エンジン２２１４は、少なくとも２つのスレッドすなわちサーチスレッド２２５０及び距離スレッド２２６０を含むプロセスである。
【０１３０】
[0153]  ＡＰＵ２２２０は、音響モデルメモリ２２２２、第１のバス２２２４、メモリバッファ２２２６、第２のバス２２２８、及びシノンスコアリングユニット２２３０を含む。音響モデルメモリ２２２２は、複数のシノンを記憶するように構成することができ、これらは共に１つ以上の音響モデルを形成する。第１のバス２２２４は、音響モデルメモリがガウス確率分布ベクトル全体をメモリバッファ２２２６に出力することを可能とするように構成された幅広のバスである。シノンスコアリングユニット２２３０は、ＣＰＵ２２１０から受信した特徴ベクトルに対してシノンスコアを生成する。シノンスコアリングユニット２２３０は、上述のように実施することができる。例えば、シノンスコアリングユニットは図１５に示したように実施することができる。シノンスコアリングユニット２２３０についての更に詳しい情報は先の第４節を参照のこと。
【０１３１】
[0154]  メモリバッファ２２２６は、シノンスコアリングユニット２２３０がガウス確率分布ベクトルについてのガウス距離スコアを計算する準備が整うまでガウス確率分布ベクトルを保持することができる。すなわち、シノンスコアリングユニット２２３０が、ガウス確率分布ベクトルｑに対してＣＰＵ２２１０から受信した特徴ベクトルのスコアを生成している場合、メモリバッファ２２２６は、スコアを生成する次のガウス確率分布ベクトルすなわちベクトルｑ＋１を保持することができる。
【０１３２】
[0155]  図２２に示すように、ＡＰＵ２２２０に対する入力は、特定のシノンに対する参照（シノン＃）及び特徴ベクトルを含む。シノン＃入力は、音響モデルメモリ内でのその特定のシノンに対応する記憶されたベクトル情報をアドレス指定する。ＡＰＵ２２２０の出力はシノンスコアであり、これは、参照されたシノンが所与の時間フレームにおいて特徴ベクトルを発する確率を表す。一実施形態において、音響モデルメモリ２２２２は、並列読み取りアーキテクチャ及び極めて大きい内部帯域幅バス２２２４を利用する。並列に読み取るビット数は２５６よりも大きい（例えば７６８ビット幅であり、これは一度にガウス確率分布ベクトル全体をロードするのに充分である）。次いで、極めて大きい帯域幅バス２２２４を用いて、音響モデルメモリ２２２２から読み取った値をメモリバッファ２２２６にラッチする。メモリバッファ２２２６からの出力及び観察ベクトル情報は双方ともシノンスコアリングユニット２２３０に入力され、これがシノンスコアを計算するために必要な乗算及び加算を実行する。メモリバッファ２２２６がシノンスコアリングユニット２２３０と通信を行うバス２２２８は、バス２２２４と実質的に同様である。
【０１３３】
[0156]  上述のように、シノンスコアの計算は、次元ＮのＪ個のガウス確率分布ベクトルのスコアを計算し、次いでそれらを合計して合計スコアを得ることによって行われる。しかしながら、いくつかのスコアリングアルゴリズムでは、計算において最も大きいガウス確率分布ベクトルのみを用いることで計算速度を上げる。ガウス確率分布ベクトルの部分的なセットに基づいたアルゴリズムを用いる場合、音響モデルメモリからシノンスコアリングユニット２２３０に転送しなければならないのは、必要なガウス確率分布ベクトルに関連付けられたビットのみである。換言すると、シノンスコアリングユニット２２３０が常に必要とするメモリ内の連続ビットの最大数は、単一のガウス確率分布ベクトルのスコアを生成するために用いられるビット数に等しい。メモリバスの帯域幅要件及び並列に読み取る必要があるビット数は、各転送において単一のガウス確率分布ベクトルを含むビットのみを転送することによって最小限に抑えられる。転送当たりこのビット数を用いることで、ＡＰＵ２２２０の電力要件を低減することができ、シノンスコアリングユニット２２３０に対する必要なデータの転送レートを向上させ、この結果、システム性能全体が改善する。換言すると、転送当たりのビット数を削減することで、ＡＰＵ２２２０の電力要件を低減することができ、シノンスコアリングユニット２２３０に対する必要なデータの転送レートを向上させることができ、この結果、システム性能全体が改善する。
【０１３４】
[0157]  上述のように、音響モデリングは、多くのタイプの音声認識システム（すなわちキーボード認識又は大きな語彙の連続音声認識）において大きなボトルネックの１つである。多数回の比較及び計算のため、高性能及び／又は並列マイクロプロセッサが一般的に用いられ、音響モデルを記憶するメモリとプロセッサとの間に高帯域バスが必要とされる。図２２の実施形態において、音響モデルメモリ２２２２はＡＰＵ２２２０に組み込むことができ、シノンスコアリングユニット２２３０と共に単一のダイに一体化され、これらは双方とも幅広い高帯域内部バス２２２４及び２２２８を用いて接続されてデータ転送レートを向上させる。しかしながら、転送当たりのビット数の増大はデータ転送レートを向上させるものの、常にシステム全体の性能を改善するわけではない。
【０１３５】
[0158]  また、転送当たりのビット数は、音響モデリングに用いられるアルゴリズムの関数とすることができる。ガウスベクトルの部分的なセットに基づいたスコアリングアルゴリズムを用いる（すなわちガウスベクトル選択）場合、転送当たりのビット数は、このアルゴリズムによって用いられるガウスベクトルのサイズと等しくすることができる。転送当たりのビット数が減ると、ガウスベクトルを含むデータを転送するために多数のサイクルが必要となるが、転送当たりのビット数が増えると、データの非局在性のために非効率となる。
【０１３６】
[0159]  一実施形態において、用いるスコアリングアルゴリズムが少なくとも部分的にガウスベクトルの部分的なセットに基づいている（すなわちガウスベクトル選択）場合、音響モデリングハードウェアアクセレレータのためのアーキテクチャが用いられる。この最適化アーキテクチャの結果として、他のアーキテクチャに比べてシステム性能全体が著しく改善される。
【０１３７】
[0160]  図２３は、本発明の一実施形態に従った音響処理システム２３００のブロック図である。音響処理システム２３００は、プロセッサ２３１０、専用ＤＲＡＭモジュール２３０２、ＤＲＡＭモジュール２３０４、及び不揮発性メモリモジュール２３０６を含む。不揮発性メモリモジュール２３０６は、例えば埋め込みフラッシュメモリブロックとして実施可能である。プロセッサ２３１０は、ＣＰＵ２３１２、ハードウェアアクセレレータ２３１４、及びメモリインタフェース２３１６を含む。ハードウェアアクセレレータ２３１４はシノンスコアリングユニット２３３０を含む。シノンスコアリングユニット２３３０は上述のように実施することができる。例えば、シノンスコアリングユニットは図１５に示すように実施することができる。
【０１３８】
[0161]  一実施形態において、専用ＤＲＡＭモジュール２３０２は、例えばシノンを記憶するためのシノンスコアリングユニット２３２０に専用である。このため、メモリインタフェース２３１６は、シノンスコアリングユニット２３２０を専用ＤＲＡＭ２３０２に接続することができる。
【０１３９】
[0162]  図２４は、本発明の一実施形態に従ったハードウェアアクセレレータ２４００のブロック図である。ハードウェアアクセレレータ２４００は、プロセッサ２４０２及び専用ＤＲＡＭモジュール２４０４を含む。プロセッサ２４０２は、シリアルペリフェラルインタフェース（ＳＰＩ）バスインタフェースモジュール２４１２、シノンスコアリングユニット２４１４、及びメモリインタフェース２４１６を含む。シノンスコアリングユニット２４１４は上述のように（例えば図１５に示すように）実施することができる。図２４に示すように、専用ＤＲＡＭモジュール２４０４は１つ以上の音響モデルを記憶する。これに対して、代替的な実施形態では、ＤＲＡＭモジュール２４０４は、例えばフラッシュメモリモジュールのような不揮発性メモリモジュールとすることができる。更に別の実施形態では、ＤＲＡＭモジュール２４０４は、揮発性メモリモジュール（例えばＤＲＡＭ）及び不揮発性メモリモジュール（例えばフラッシュ）を含むメモリモジュールとすることができる。かかる実施形態では、音響モデルは最初に不揮発性メモリモジュールに記憶し、シノンスコアリングのために揮発性メモリモジュールにコピーすることができる。
【０１４０】
[0163]  ＳＰＩインタフェースモジュール２４１２は、ＳＰＩバスに対するインタフェースを提供することができ、このＳＰＩバスはハードウェアアクセレレータ２４００をＣＰＵに接続することができる。メモリインタフェース２４１５は、シノンスコアリングユニット２４１４を専用ＤＲＡＭモジュール２４０４に接続する。一実施形態において、音声認識システムはクラウドベースのソリューションで実施可能であり、この場合、音声認識のために必要なシノンスコアリング及び処理はクラウドベースの音声認識アプリケーションで実行される。
【０１４１】
[0164]  Ｂ．ソフトウェアスタック
図２５は、本発明の一実施形態に従ったＡＰＵソフトウェアスタック２５００を示すブロック図である。ソフトウェアスタック２５００は、例えば図２２を参照して説明した音響処理システム２２００のような音響処理システムのコンポーネント間の通信を概念的に説明するために用いることができる。スタック２５００は、アプリケーション２５０２、音声認識エンジン２５０４、アプリケーションプログラミングインタフェース（ＡＰＩ）２５５０、ＳＰＩバスコントローラ２５１２、ＳＰＩバス２５１４、及びＡＰＵ２５１６を含む。ＡＰＩ２５５０は、汎用ＤＣＡ２５０６、ローレベルドライバ（ＬＬＤ）２５０８、及びハードウェア抽象レイヤ（ＨＡＬ）２５１０を含む。一実施形態において、アプリケーション２５０２、音声認識エンジン２５０４、ＡＰＩ２５５０、及びＡＰＵ２５１６は、それぞれ図２２のアプリケーション２２１２、音声認識エンジン２２１４、ＡＰＩ２２１６、及びＡＰＵ２２２０に対応することができる。
【０１４２】
[0165]  ソフトウェアスタック２５００において、アプリケーション２５０２は音声認識エンジン２５０４と通信を行い、音声認識エンジン２５０４は汎用ＤＣＡ２５０６と通信を行う。一実施形態において、音声認識エンジン２５０４はＤＣＡ  ＡＰＩを介して汎用ＤＣＡ２５０６に接続されている。汎用ＤＣＡ２５０６はＬＬＤ  ＡＰＩを介してＬＬＤ２５０８に接続することができる。ＬＬＤ２５０８はＨＡＬ  ＡＰＩを介してＨＡＬ２５１０に接続することができる。ＨＡＬ２５１０はＳＰＩバスコントローラ２５１２に通信可能に接続され、ＳＰＩバスコントローラ２５１２はＳＰＩバス２５１４に通信可能に接続されている。ＡＰＵ２５１６は、ＳＰＩバス２５１４に通信可能に接続され、バスコントローラ２５１２及びＳＰＩバス２５１４を介してＨＡＬ２５１０に通信可能に接続されている。
【０１４３】
[0166]  一実施形態において、ソフトウェアスタック２５００は、ＡＰＵ２５１６とアプリケーション２５０２（例えば音声認識を採用するアプリケーション）との間のソフトウェアインタフェースを提供する。特に、アプリケーション２５０２及び音声認識エンジン２５０４は「ハードウェア非依存型（hardware-agnostic）」である。すなわち、アプリケーション２５０２及び音声認識エンジン２５０４は、距離又はシノンのスコアリングが実行されているか否かについての詳細な知識なしで各動作を完了することができる。
【０１４４】
[0167]  汎用ＤＣＡ２５０６、ＬＬＤレイヤ２５０８、及びＨＡＬレイヤ２５１０は、ハードウェアに特定的なＡＰＩ呼び出しを含む。一実施形態において、ＨＡＬ２５１０のＡＰＩ呼び出しは、これが接続されているコントローラのタイプに依存する。一実施形態において、ＡＰＵ２５１６のためのバスインタフェースは、異なるバス及びコントローラの組み合わせで、異なるＨＡＬ（異なるＡＰＩ呼び出しを用いる）を必要とする場合がある。
【０１４５】
[0168]  汎用ＤＣＡ２５０６は距離計算ＡＰＩである。ＤＣＡはソフトウェア開発者によって定義することができる。一実施形態において、ＤＣＡ  ＡＰＩは、音声認識エンジン２５０４等の音声認識エンジンをサポートするために明確に定義される。また、汎用ＤＣＡ２５０６はＡＰＵ２５１６に対して専用に実施することができる。更に、ＬＬＤ２５０８は、シノンスコアリングユニットコアンドの関数抽象とすることができ、シノンスコアリングユニットコマンドに対する１対１のマッピングとすることができる。図２５に示すように、ローレベルドライバ２５０８はＨＡＬ２５１０に接続されている。
【０１４６】
[0169]  ＤＣＡ  ＡＰＩは、以下の５つの機能を含むことができる。すなわち、生成、閉鎖、特徴設定、距離スコアの計算、及びスコア供給である。一実施形態において、生成機能は、どの音響モデルを用いるかを指定する。メモリには１つ以上の音響モデルが記憶されている場合がある（例えば各言語について１つ以上の音響モデル）。例えば図２２を参照して上述したように、ＡＰＵの専用の音響モデルメモリ２２２２は音響モデルを記憶することができる（例えばシノンライブラリ（複数のライブラリ））。更に、音響モデル（例えば様々なシノンに対応する音声のガウス分布を記憶するシノンのライブラリ）及び特徴ベクトルが与えられると、生成機能は特徴ベクトルにおける次元数を指定することができる。一実施形態において、英語の場合、特徴ベクトルは３９次元を有することができる。別の実施形態において、他の言語の場合、特徴ベクトルは別の数の次元を有することができる。更に一般的には、次元数は、音声認識処理に選択した特定の話される言語に依存して変動する場合がある。このように生成機能は、選択された音響モデル、次元数、及びシノン数を指定する。閉鎖機能は、ハードウェアアクセレレータ（例えばＡＰＵ２５１６）に対する特徴ベクトル、オーディオサンプル部分、及びシノンスコアリング要求の送出を終了させる機能である。
【０１４７】
[0170]  一実施形態において、特徴設定機能は、特定のフレームＩＤ、パスＩＤ、及び特徴ベクトルを渡すことによって各フレーム内にシノンスコアリング要求を設定するために用いられる。上述のように、入力オーディオ信号は（例えば音声認識エンジン２５０４によって）フレームに分解することができる。例示的なフレームは、オーディオ入力信号の一部のスペクトル特性を含む。一実施形態において、１フレームは１２ミリ秒（ｍｓ）長である。特徴設定機能は、各フレームを３９次元（例えば３９の８ビット値）に変換することができる。特徴設定機能は、特定のフレームのＩＤ及び関連する特徴ベクトルを指定することができる。
【０１４８】
[0171]  一実施形態において、距離計算スコア機能はシノンスコア（例えばガウス確率）を算出する。これは上述のように距離算出として実施することができる。この機能を用いてシノンスコアリングを開始し準備することができる。例えば、特徴ベクトルをＡＰＵ２５１６に入力することができ、ＡＰＵ２５１６は、音響モデルに記憶された全てのシノン又は少なくとも選択された一部のシノンに対してスコアを生成する。このスコアは次いで上位レイヤに戻される。一実施形態において、距離計算スコア機能は、シノンスコアリングのために音響モデルの一部又は全体を用いることを指定することができる。
【０１４９】
[0172]  一実施形態において、スコア供給機能は、シノンスコアリング結果を取得し、これを、アプリケーション２５０２及び音声認識エンジン２５０４を含む上位のソフトウェアレイヤに戻す。
【０１５０】
[0173]  一実施形態において、音声認識エンジン２５０４は、例えばパターン認識のために隠れマルコフモデルを用いるパターン認識形態等、いずれかの形態のパターン認識に用いることができる。別の実施形態では、別の形態のパターン認識もガウスベクトル計算を用いる。パターン認識の例は、限定ではないが、音声認識、画像処理、及び手書き文字認識のための上述のシノンスコアリングを含むことができる。
【０１５１】
[0174]  上述のように、アプリケーション２５０２及び音声認識エンジン２５０４は、シノンスコアを求めるために用いるいずれのハードウェアに対しても非依存的である。一実施形態において、アプリケーション２５０２及び音声認識エンジン２５０４が知ることも影響されることもなく、特定のＡＰＵを異なるハードウェアのために交換することができる。アプリケーション２５０２及び音声認識エンジン２５０４がシノンスコアのために用いるいずれかのタイプのハードウェアに対しても非依存的である場合、第１のハードウェアアクセレレータを異なる設計の第２のハードウェアアクセレレータで置換することができ、この際にアプリケーション２５０２及び音声認識エンジン２５０４の再設計は必要ない。換言すると、本明細書で論じるように、ＡＰＵライブラリ呼び出しは用いるハードウェアアクセレレータのタイプ及び設計に特定的であるが、汎用ＤＣＡライブラリ呼び出しはハードウェアに特定的ではない。
【０１５２】
[0175]  一実施形態において、図２５に示すようなソフトウェアアーキテクチャは、図２５に示したソフトウェアスタックを通るデータ及び制御フローを記述することで説明することができる。アプリケーション２５０２は、音声認識エンジンを用いるいずれかのアプリケーションとすることができる。一実施形態において、音声認識エンジンを２５０４は、Nuance, Inc.によって提供されるVocon Engineである。代替的な実施形態では、確率推定のために混合ガウスモデル（ＧＭＭ：Gaussian Mixture Model）を利用する他の音声認識エンジン又はパターン認識エンジンを用いることも可能である。
【０１５３】
[0176]  一実施形態において、ＡＰＵ２５１６は混合ガウスモデルを用いてシノンスコアを計算する。ＡＰＵ２５１６は、埋め込みプロセッサ（例えばｃｏｒｔｅｘ  Ａ８埋め込みプロセッサ）よりも大幅に（例えば一桁）高速でこれらのスコアを計算することができるので、ＡＰＵ２５１６を用いたオンボードの音声認識システムにおいて音声認識がいっそう実用的となる。シノンスコアリング（又は距離計算）の負担をＡＰＵ２５１６に課すことは、（計算待ち時間を短縮することによって）ユーザ経験を改善するだけでなく、ＣＰＵ２２１０がシステムの他のタスクに関与することを可能とする。ソフトウェアアーキテクチャは、ＣＰＵの負荷及び待ち時間の軽減において重要な役割を果たす。
【０１５４】
[0177]  一実施形態において、音声認識エンジン２５０４は直接ＡＰＵ２５１６を認識しない。例えば音声認識エンジン２５０４は、汎用ＤＣＡ  ＡＰＩ２５０６を用いて距離（シノンスコアとも称する）を計算することができる。ここで論じる汎用ＤＣＡライブラリの具体的な実施は、ＡＰＵ２５１６の使用に対して専用に設計されており、以下で論じるようにＡＰＵに対する複数の機能呼び出しを用いる。これは、汎用ＤＣＡライブラリの完全にソフトウェアの実施とは異なる。この具体的な実施では、汎用ＤＣＡライブラリ呼び出しをＡＰＵライブラリ呼び出しのシーケンスに変換する。この実施の詳細については以下で説明する。ＡＰＵライブラリの定義及び実施は、ＡＰＵの現在の実施に特定的であり、これについても以下で説明する。
【０１５５】
[0178]  一実施形態において、汎用ＤＣＡ２５０６は、音声認識エンジン２５０４とＡＰＵ２５１６との間のインタフェースとして動作する。例えば音声認識エンジン２５０４は、汎用ＤＣＡに対する汎用ＡＰＩ呼び出しを用いてシノンスコアリングを要求することができる。次いで汎用ＤＣＡ２５０６は、以下で更に説明するＡＰＩ呼び出しのＡＰＵに特定的なライブラリを利用して、要求されたシノンスコアリングを実行するようにＡＰＵハードウェアアクセレレータに指示する。音声認識エンジン２５０４はＡＰＵ２５１６を認識していないので、音声認識エンジン２５０４は以下の利点を得ることができる。例えば音声認識エンジン２５０４は、ＡＰＵ２５１６のメッセージ伝達フォーマットを知っているだけで良い。また、音声認識エンジン２５０４はＡＰＵ２５１６によって実行されるタスクを知っている必要はない。更に、交換の利点がある。すなわち、音声認識エンジン２５０４を再設計する必要なく、ＡＰＵ２５１６を置換又は再設計することができる。音声認識エンジン２５０４とＡＰＵ２５１６との間の必要な相互運用性を保証するために、この実施形態では汎用ＤＣＡ２５０６であるインタフェースだけが、ハードウェアに特定的なＡＰＩ呼び出しを用いる必要がある。
【０１５６】
[0179]  １つの例示的な実施形態において、汎用ＤＣＡライブラリは以下の関数リストを含む。
【０１５７】
[0180]  関数名：distance_computation_create
【０１５８】
[0181]    入力パラメータ：
【０１５９】
[0182]  ・音響モデル
【０１６０】
[0183]  ・特徴ベクトルにおける次元数
【０１６１】
[0184]  ・音響モデルにおけるシノンの合計数
【０１６２】
[0185]  記述：これらのパラメータを距離計算の状態の一部として記憶する
【０１６３】
[0186]  関数名：distance_computation_setfeature
【０１６４】
[0187]  ・入力パラメータ：
【０１６５】
[0188]  〇フレームＩｄ
【０１６６】
[0189]  〇特徴ベクトル
【０１６７】
[0190]  記述：フレームＩｄに対応する特徴ベクトルを記憶する
【０１６８】
[0191]  関数名：distance_computation_computescores
【０１６９】
[0192]  ・入力パラメータ：
【０１７０】
[0193]  〇フレームＩｄ
【０１７１】
[0194]  〇スコアを生成するシノンのリスト
【０１７２】
[0195]  記述：所与のフレームについてスコアを生成するシノンを指定する
【０１７３】
[0196]  関数名：distance_computation_fillscores
【０１７４】
[0197]  ・入力パラメータ：
【０１７５】
[0198]  〇スコアを含むバッファ
【０１７６】
[0199]  記述：シノンスコアをバッファに記憶する
【０１７７】
[0200]  関数名：distance_computation_setfeaturematrix
【０１７８】
[0201]  〇入力パラメータ：
【０１７９】
[0202]  〇ｐ行列
【０１８０】
[0203]  記述：ＡＰＵに「ｐ行列」で与えられる特徴ベクトル変換行列を記憶する
【０１８１】
[0204]  distance_computation_setfeaturematrix関数は、認識を特定の話者に適応させるために発声間で呼び出される。次の発声のためのシノンスコアを計算する場合、ＡＰＵはこの行列を用いる。
【０１８２】
[0205]  一実施形態において、「distance_computation_computescores」及び「distance_computation_fillscores」は、計算待ち時間及びＣＰＵ負荷を最小限に抑えるように実施することができる。例えばこれらの関数は、図２６に具現化する並行動作を達成するように実施可能である。
【０１８３】
[0206]  １つの例示的な実施形態において、ＡＰＵライブラリは以下の関数をサポートする。
【０１８４】
[0207]  関数名：apu_set_acoustic_model
【０１８５】
[0208]  ・入力パラメータ：
【０１８６】
[0209]    〇音響モデル
【０１８７】
[0210]  ・記述：シノンスコアリングのために用いる音響モデルを設定する
【０１８８】
[0211]  関数名：apu_loac_feature_vector
【０１８９】
[0212]  ・入力パラメータ：
【０１９０】
[0213]    〇特徴ベクトル
【０１９１】
[0214]  ・記述：特徴ベクトルをＡＰＵにロードする
【０１９２】
[0215]  関数名：apu_score_senone_chunk
【０１９３】
[0216]  ・入力パラメータ：
【０１９４】
[0217]    〇シノンリスト
【０１９５】
[0218]  ・記述：スコアリングのためＡＰＵにシノンリストをロードする
【０１９６】
[0219]  関数名：apu_score_range
【０１９７】
[0220]  ・入力パラメータ：
【０１９８】
[0221]    〇第１及び最後のインデックスにより指定されるシノンの範囲
【０１９９】
[0222]  ・記述：範囲内の全シノンのスコアを生成するようＡＰＵに命令する
【０２００】
[0223]  関数名：apu_read_senone_scores
【０２０１】
[0224]  ・入力パラメータ：
【０２０２】
[0225]    〇読み取るスコア数
【０２０３】
[0226]    〇宛先バッファ
【０２０４】
[0227]  ・記述：スコアを読み取って宛先バッファに記憶する
【０２０５】
[0228]  関数名：apu_check_score_ready_status
【０２０６】
[0229]  ・入力パラメータ：
【０２０７】
[0230]    〇なし
【０２０８】
[0231]  ・記述：スコアがＡＰＵから読み取られる準備ができているか否かをチェックする
【０２０９】
[0232]  関数名：apu_read_score_length
【０２１０】
[0233]  ・入力パラメータ：
【０２１１】
[0234]    〇なし
【０２１２】
[0235]  ・記述：ステータスレジスタを読み取って利用可能なスコアエントリ数を検出する
【０２１３】
[0236]  関数名：apu_read_status
【０２１４】
[0237]  ・入力パラメータ：
【０２１５】
[0238]    〇レジスタインデックス
【０２１６】
[0239]  ・記述：レジスタインデックスにより指定されるステータスレジスタを読み取る
【０２１７】
[0240]  関数名：apu_read_configuration
【０２１８】
[0241]  ・入力パラメータ：
【０２１９】
[0242]    〇なし
【０２２０】
[0243]  ・記述：コンフィギュレーションレジスタを読み取る
【０２２１】
[0244]  関数名：apu_write_configuration
【０２２２】
[0245]  ・入力パラメータ：
【０２２３】
[0246]    〇コンフィギュレーションデータ
【０２２４】
[0247]  ・記述：コンフィギュレーションレジスタに書き込む
【０２２５】
[0248]  一実施形態において、ＡＰＵは、所与の発声の各フレームについてシノンのスコアを生成するために使用可能である。選択された音響モデルを、関数distance_computation_createの一部の開始時にＡＰＵに伝達する。所与のフレームの特徴ベクトルを、関数distance_computation_setfeatureによってＡＰＵに渡す。所与のフレームについてスコア生成するシノンを、関数distance_computation_computescoresによってＡＰＵに渡す。ＡＰＵによって計算される実際のスコアは、関数distance_computation_fillscoresによって音声認識エンジンに戻すことができる。
【０２２６】
[0249]  制御は、図２５に示したスタック２５００の上から下に流れる。全ての関数は同期しており、関数distance_computation_computescoresを除いて、戻る前に完了する。上記のように、スコアリングを別個のスレッドとして実施して、上述のように距離計算及びサーチの同時性を最大化することができる。ＣＰＵがＡＰＵ２２２０による距離計算の完了を待っている場合はいつでも、このスレッドによってＣＰＵは音声認識エンジン２２１４の残り部分に与えられる。この非同期の計算は、待ち時間及びＣＰＵ負荷を最小限に抑えるために重要である。
【０２２７】
[0250]  Ｃ．並行サーチ及び距離スコア計算
一実施形態において、アプリケーション２５０２又は音声認識エンジン２５０４によって実行されているスレッドとは別個のスレッド（例えば実行可能プロセス）を、ＡＰＵ２５１６のために生成することができる。別個のスレッドのため、依存性（第１の動作主（ａｃｔｏｒ）の別のアクションが第２の動作主のアクションに依存すること）は存在してはならない。アプリケーション２５０２及び音声認識エンジン２５０４とＡＰＵ２５１６との間の依存性をなくすことによって、アプリケーション２５０２及び音声認識エンジン２５０４はＡＰＵ２５１６と並列に動作することができる。１つの例示的な実施形態において、アプリケーション２５０２及び音声認識エンジン２５０４とＡＰＵ２５１６との間の依存性は、例えば約１０〜１２ｍｓ継続するフレームの使用によって回避することができる（が、本発明はこの実施形態に限定されない）。例えばアプリケーション２５０２はフレームｎについてのシノンスコアを用いているが、ＡＰＵ２５１６はフレームｎ＋１についてのシノンスコアを実行している場合がある。
【０２２８】
[0251]  更に具体的には、音声認識動作は２つの個別の動作を必要とする。すなわち、スコアリング及びサーチ（searching）である。上述のように、スコアリング動作は、シノンのガウス確率分布ベクトルと特定のフレームに対応する特徴ベクトルとの比較を伴う。一実施形態において、ソフトウェアスタック２５００は、これらの２つの動作が並列して実行されるように構成することができる。特に、図２２に示すように、音声認識エンジン２２１４はサーチスレッド２２５０及び距離スレッド２２６０を含むことができる。距離スレッド２２６０はＡＰＵ２２２０で完了した距離計算を管理することができ、サーチスレッド２２５０は距離計算の結果を用いてどの音声が受信されたかを判定することができる（例えばシノンスコアライブラリをサーチしてベストマッチを決定することによって）。サーチスレッド２２５０よりも距離スレッド２２６０を高い優先度に設定することで、距離スレッド２２６０はＡＰＵ２２２０でスコアリング動作を開始するために必要な動作を実行することができる。次いで距離スレッド２２６０をスリープ状態に置くことができる。このスリープ中に、サーチスレッド２２５０を活性化することができ、最新の距離動作の結果を用いてサーチを実行することができる。距離計算を完了するために必要な時間長は比較的予測可能であるので、距離スレッドを所定時間量だけスリープ状態に置くことができる。代替的な実施形態では、距離スレッド２２６０は無期限にスリープ状態に置くことができ、ＡＰＵ２２２０からの割り込みを用いて距離スレッド２２６０を起こすことができる。この場合、ＡＰＵ２２２０を用いてフレームｎ＋１についての距離スコアを計算することができ、その間、ＣＰＵ２２１０はフレームｎについて以前に算出したスコアを用いてサーチ動作を実行する。
【０２２９】
[0252]  いずれの所与のフレームについても、図２６に示すように、サーチは距離計算の後に行うことができる。特に、フレーム（ｉ＋１）についての距離計算は、フレームｉについてのサーチを実行中に行うことができる。従って図２６に示すように、ＡＰＵが実行する距離計算は、ＣＰＵが実行するサーチ機能と同時に実行可能である。一実施形態において、ＤＣＡライブラリに対する呼び出しシーケンスは、この動作を実施するように構成されている。更に別の実施形態では、汎用ＤＣＡは、サーチ計算及び距離計算の同時性が最大限となるように実施される。一実施形態において、汎用ＤＣＡライブラリの実施は、ＡＰＵライブラリが提供するＡＰＩを用いる。
【０２３０】
[0253]  図２７は、音響処理のための方法２７００の一実施形態の例である。方法２７００のステップは、図２５に示したソフトウェアスタック２５００と共に、例えば図２２に示す音響処理システム２２００を用いて実行することができる。
【０２３１】
[0254]  ステップ２７０２において、受信したオーディオ信号をフレームに分割する。例えば図２２において、音声認識エンジン２２１４は、受信したオーディオ信号を、例えば１０〜１２ｍｓ長のフレームに分割することができる。
【０２３２】
[0255]  ステップ２７０４において、サーチスレッド及び距離計算スレッドを生成する。例えば図２２において、音声認識エンジン２２１４はサーチスレッド２２５０及び距離スレッド２２６０を生成することができる。
【０２３３】
[0256]  ステップ２７０６において、ＡＰＵを用いて距離スコアを計算する。例えば図２２において、距離スレッド２２６０の指示で、ＡＰＵ２２２０のシノンスコアリングユニット２２３０は、フレームに対応する特徴ベクトルとガウス確率分布ベクトルとの間の距離スコアを計算することができる。
【０２３４】
[0257]  ステップ２７０８において、フレームについて計算したスコアを用いてサーチ動作を実行する。例えば図２２において、サーチスレッド２２５０は、ステップ２７０６で計算した距離スコアを用いて異なるシノンをサーチし、フレームにどの音声が含まれたかを判定することができる。
【０２３５】
[0258]  ステップ２７１０において、このフレームがオーディオ信号の最後のフレームであったか否かを判定する。そうである場合、方法２７００は終了する。そうでない場合、方法２７００はステップ２７１２に進む。
【０２３６】
[0259]  ステップ２７１２において、ステップ２７０８のサーチ動作と同時に、ＡＰＵを用いて次のフレームの距離スコアを計算する。例えば図２２において、サーチスレッド２２５０がフレームｉについての距離スコアを用いてサーチ動作を実行するのと同時に、ＡＰＵ２２２０を用いてフレームｉ＋１についての距離スコアを計算することができる。
【０２３７】
[0260]  ７．例示的なコンピュータシステム
本発明の様々な態様は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせにおいて実施することができる。図２８は、本発明の実施形態又はその一部をコンピュータ読み取り可能コードとして実施可能である一例のコンピュータシステム２８００の例示である。例えば、図９のフローチャート９００によって示した方法、図１７のフローチャート１７００によって示した方法、図２１のフローチャート２１００によって示した方法、図２５に示したソフトウェアスタック２５００、及び／又は図２７のフローチャート２７００によって示した方法を、システム２８００において実施可能である。本発明の様々な実施形態は、この例示のコンピュータシステム２８００の観点で説明している。この記載を読んだ後、他のコンピュータシステム及び／又はコンピュータアーキテクチャを用いてどのように本発明の実施形態を実施するかについても当業者に明らかとなるであろう。
【０２３８】
[0261]  本発明の様々な実施形態のシミュレーション、合成、及び／又は製造は、コンピュータ読み取り可能コードの使用によって部分的に達成可能であることに留意すべきである。このコードは、汎用プログラミング言語（Ｃ又はＣ＋＋等）、例えばVerilog HDL、ＶＨＤＬ、Altera HDL（ＡＨＤＬ）等のハードウェア記述言語（ＨＤＬ）、又は他の利用可能なプログラミング及び／又は回路図キャプチャツール（回路キャプチャツール等）を含む。このコンピュータ読み取り可能コードは、半導体、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）を含むいずれかの既知のコンピュータ使用可能媒体に配置することができる。このため、コードはインターネットを含む通信ネットワークを介して伝送することができる。上述のシステム及び技法によって達成される機能及び／又は提供される構造は、プログラムコードに埋め込まれたコア（例えばＡＰＵコア）において表現することができ、集積回路の製造の一部としてハードウェアに変換することが可能であることは理解されよう。
【０２３９】
[0262]  コンピュータシステム２８００は、プロセッサ２８０４等の１つ以上のプロセッサを含む。プロセッサ２８０４は、例えば図４のＡＰＵ及びＣＰＵ等の特殊用途プロセッサ又は汎用プロセッサとすれば良い。プロセッサ２８０４は通信インフラストラクチャ２８０６（例えばバス又はネットワーク）に接続されている。
【０２４０】
[0263]  また、コンピュータシステム２８００は、好ましくはランダムアクセスメモリ（ＲＡＭ）であるメインメモリ２８０８も含み、更に二次メモリ２８１０も含む場合がある。二次メモリ２８１０は、例えばハードディスクドライブ２８１２、着脱可能記憶ドライブ２８１４、及び／又はメモリスティックを含むことができる。着脱可能記憶ドライブ２８１４は、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等を含むことができる。着脱可能記憶ドライブ２８１４は、周知の方法で着脱可能記憶ユニット２８１８からの読み取り及び／又はこれへの書き込みを行う。着脱可能記憶ユニット２８１８は、着脱可能記憶ドライブ２８１４によって読み取り及び書き込みが行われるフロッピー（登録商標）ディスク、磁気テープ、光ディスク等を含むことができる。当業者には認められるであろうが、着脱可能記憶ユニット２８１８は、コンピュータソフトウェア及び／又はデータが記憶されたコンピュータ使用可能記憶媒体を含む。
【０２４１】
[0264]  コンピュータシステム２８００は、（任意選択肢として）ディスプレイインタフェース２８０２（これはキーボード、マウス等の入出力デバイスを含むことができる）を含み、これは、通信インフラストラクチャ２８０６からの（又は図示しないフレームバッファからの）グラフィック、データ、及び他のデータを、ディスプレイユニット２８３０に表示するために転送する。
【０２４２】
[0265]  代替的な実施において、二次メモリ２８１０は、コンピュータシステム２８００にコンピュータプログラム又は他の命令をロードすることを可能とするための他の同様のデバイスを含むことができる。かかるデバイスは、例えば着脱可能記憶ユニット２８２２及びインタフェース２８２０を含むことができる。かかるデバイスの例は、プログラムカートリッジ及びカートリッジインタフェース（ビデオゲームデバイスにおいて見られるもの等）、着脱可能メモリチップ（例えばＥＰＲＯＭ又はＰＲＯＭ）及び付属のソケット、並びに、着脱可能記憶ユニット２８２２からコンピュータシステム２８００にソフトウェア及びデータを転送することを可能とする他の着脱可能記憶ユニット２８２２及びインタフェース２８２０を含むことができる。
【０２４３】
[0266]  また、コンピュータシステム２８００は通信インタフェース２８２４も含むことができる。通信インタフェース２８２４は、コンピュータシステム２８００と外部デバイスとの間でソフトウェア及びデータを転送可能とする。通信インタフェース２８２４は、モデム、ネットワークインタフェース（イーサネット（登録商標）カード等）、通信ポート、ＰＣＭＣＩＡスロット及びカード等を含むことができる。通信インタフェース２８２４を介して転送されるソフトウェア及びデータは、電子、電磁、光、又は通信インタフェース２８２４によって受信可能な他の信号であり得る信号の形態である。これらの信号は通信経路２８２６を介して通信インタフェース２８２４に提供される。通信経路２８２６は、信号を搬送し、ワイヤ又はケーブル、光ファイバ、電話線、セル式電話リンク、ＲＦリンク、又は他の通信チャネルを用いて実施可能である。
【０２４４】
[0267]  この文書において、「コンピュータプログラム媒体」及び「コンピュータ使用可能媒体」という言葉は、着脱可能記憶ユニット２８１８、着脱可能記憶ユニット２８２２、及びハードディスクドライバ２８１２にインストールされたハードディスク等の媒体を一般的に示すために用いられる。また、コンピュータプログラム媒体及びコンピュータ使用可能媒体は、メモリ半導体（例えばＤＲＡＭ等）とすることができるメインメモリ２８０８及び二次メモリ２８１０等のメモリを指すことができる。これらのコンピュータプログラム製品は、コンピュータシステム２８００にソフトウェアを提供する。
【０２４５】
[0268]  メインメモリ２８０８及び／又は二次メモリ２８１０に、コンピュータプログラム（コンピュータ制御論理とも称する）が記憶されている。コンピュータプログラムは通信インタフェース２８２４を介して受信することも可能である。かかるコンピュータプログラムは、実行された場合、本明細書において論じた本発明の実施形態をコンピュータシステム２８００が実施することを可能とする。具体的には、コンピュータプログラムは、実行された場合、図９のフローチャート９００及び図１７のフローチャート１７００によって示した方法、図２１のフローチャート２１００によって示した方法、図２７のフローチャート２７００によって示した方法におけるステップ、及び／又は図２５に示したソフトウェアスタック２５００における関数等、本発明の実施形態のプロセスをプロセッサ２８０４が実施することを可能とする。従って、かかるコンピュータプログラムはコンピュータシステム２８００のコントローラを表す。本発明の実施形態がソフトウェアを用いて実施された場合、このソフトウェアをコンピュータプログラム製品に記憶し、着脱可能記憶ドライブ２８１４、インタフェース２８２０、ハードドライブ２８１２、又は通信インタフェース２８２４を用いて、コンピュータシステム２８００にロードすることができる。
【０２４６】
[0269]  また、本発明の実施形態は、いずれかのコンピュータ使用可能媒体に記憶されたソフトウェアを含むコンピュータプログラム製品を対象とする。かかるソフトウェアは、１つ以上のデータ処理デバイスにおいて実行された場合、データ処理デバイス（複数のデバイス）を本明細書に記載したように動作させる。本発明の実施形態は、現在既知であるか又は将来のいずれかのコンピュータ使用可能又は読み取り可能媒体を採用する。コンピュータ使用可能媒体の例は、限定ではないが、一次記憶デバイス（例えばいずれかのタイプのランダムアクセスメモリ）、二次記憶デバイス（例えばハードドライブ、フロッピー（登録商標）ディスク、ＣＤ  ＲＯＭ、ＺＩＰディスク、テープ、磁気記憶デバイス、光記憶デバイス、ＭＥＭＳ、ナノテクノロジー記憶デバイス等）、及び通信媒体（例えば有線及び無線通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、イントラネット等）を含む。
【０２４７】
[0270]  ８．結論
特許請求の範囲の解釈に用いることが意図されるのは、「発明の概要」及び「要約書」の節でなく「発明を実施するための形態」の節であることは認められよう。「発明の概要」及び「要約書」の節が説明し得るのは、本発明者等が想定する本発明の例示的な実施形態の１つ以上であるが全てではなく、従ってこれらの節はいかなる点でも本発明及び添付の特許請求の範囲を限定することは意図していない。
【０２４８】
[0271]  本発明の実施形態について、明記した機能の実施及びそれらの関係を例示する機能構築ブロックを用いて上述した。これらの機能構築ブロックの境界は、記載の便宜上、本明細書では任意に画定している。明記した機能及びそれらの関係が適切に実行される限り、代替的な境界を画定することも可能である。
【０２４９】
[0272]  特定の実施形態の前述の記載によって、本発明の一般的な性質が充分に明らかとなろう。すなわち、他の者が、関連技術の能力内の知識を適用することによって、必要以上の実験作業なしで、本発明の一般的な概念から逸脱することなく、様々な用途のために、かかる具体的な実施形態を容易に変更及び／又は適合することが可能であるということである。従って、かかる適合及び変更は、本明細書に提示した教示及び指導に基づいて、開示した実施形態の均等物の意味及び範囲内であることが意図される。本明細書における語句及び専門用語は限定でなく記載の目的のためのものであるので、本明細書の専門用語又は語句は当業者によって本教示及び指導を考慮して解釈されることは理解されよう。
【０２５０】
[0273]  本発明の広さ及び範囲は、上述の例示的な実施形態のいずれかによって限定されるものではなく、以下の特許請求の範囲及びその均等物に従ってのみ規定されるものである。
【図１】
2015501012.tif 000010
【図２】
2015501012.tif 000011
【図３】
2015501012.tif 000012
【図４】
2015501012.tif 000013
【図５】
2015501012.tif 000014
【図６】
2015501012.tif 000015
【図７】
2015501012.tif 000016
【図８】
2015501012.tif 000017
【図９】
2015501012.tif 000018
【図１０】
2015501012.tif 000019
【図１１】
2015501012.tif 000020
【図１２】
2015501012.tif 000021
【図１３】
2015501012.tif 000022
【図１４】
2015501012.tif 000023
【図１５】
2015501012.tif 000024
【図１６】
2015501012.tif 000025
【図１７】
2015501012.tif 000026
【図１８】
2015501012.tif 000027
【図１９】
2015501012.tif 000028
【図２０】
2015501012.tif 000029
【図２１】
2015501012.tif 000030
【図２２】
2015501012.tif 000031
【図２３】
2015501012.tif 000032
【図２４】
2015501012.tif 000033
【図２５】
2015501012.tif 000034
【図２６】
2015501012.tif 000035
【図２７】
2015501012.tif 000036
【図２８】
2015501012.tif 000037
【国際調査報告】
2015501012.tif 000038
2015501012.tif 000039