JP2015501011A - 音響処理ユニットインタフェース - Google Patents

音響処理ユニットインタフェース Download PDF

Info

Publication number
JP2015501011A
JP2015501011A JP2014547556A JP2014547556A JP2015501011A JP 2015501011 A JP2015501011 A JP 2015501011A JP 2014547556 A JP2014547556 A JP 2014547556A JP 2014547556 A JP2014547556 A JP 2014547556A JP 2015501011 A JP2015501011 A JP 2015501011A
Authority
JP
Japan
Prior art keywords
apu
score
chinon
function
processing unit
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.)
Pending
Application number
JP2014547556A
Other languages
English (en)
Inventor
ナタラジャン,ベンカタラマン
ロスナー,ステファン
Original Assignee
スパンション エルエルシー
スパンション エルエルシー
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 スパンション エルエルシー, スパンション エルエルシー filed Critical スパンション エルエルシー
Publication of JP2015501011A publication Critical patent/JP2015501011A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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
    • 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/28Constructional details of speech recognition systems
    • 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/02Feature extraction for speech recognition; Selection of recognition unit
    • 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]
    • 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/18Speech classification or search using natural language modelling
    • G10L15/183Speech classification or search using natural language modelling using context dependencies, e.g. language models
    • G10L15/187Phonemic context, e.g. pronunciation rules, phonotactical constraints or phoneme n-grams

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)
  • Machine Translation (AREA)
  • User Interface Of Digital Computer (AREA)
  • Artificial Intelligence (AREA)
  • Telephone Function (AREA)

Abstract

【課題】 本発明の実施形態は、音響モデリングのための装置、方法、及びシステムを含む。【解決手段】 一実施形態において、音声認識システムが提供される。このシステムは、受信したオーディオ信号を、各フレームベクトルを有する連続フレームに分割するように構成された処理ユニットと、音響処理ユニット(APU)と、処理ユニット及びAPUを接続するデータバスと、を含む。APUは、複数のシノンを記憶するローカルな不揮発性メモリと、メモリに接続されたメモリバッファであって、音響処理ユニットが、メモリに記憶された少なくとも1つのガウス確率分布ベクトルをメモリバッファ内にロードするように構成された、メモリバッファと、メモリバッファ内にロードされたガウス確率分布ベクトルの複数の次元を、処理ユニットから受信されたフレームベクトルの各次元と同時に比較すると共に、対応するスコアを処理ユニットに出力するように構成された、スコアリングユニットと、を含む。処理ユニットが第2のフレームに対応するスコアを用いたサーチ動作を実行する間にAPUが第1のフレームを用いた比較を実行するように構成され、第2のフレームは第1のフレームの直前にある。【選択図】 図27

Description

[0001] 本発明の実施形態は、一般に音声認識に関する。更に特定すれば、本発明の実施形態は、専用の処理ユニットにおける音響モデリングプロセスの実施に関する。
[0002] 電子システムにおいて、データストリームを分析するために、リアルタイムのデータパターン認識がいっそう用いられるようになっている。数万語を超える語彙では、音声認識システムは精度の向上を達成しており、電子システムにとって魅力的な特徴(feature)となっている。例えば音声認識システムは、モバイルデバイス、サーバ、自動車、及びPCの市場等、データパターン認識の利用向けの消費者市場において、ますます一般的になっている。
[0003] 音声認識システムの精度向上にもかかわらず、かなりのコンピューティングリソースが、音声認識プロセスに専念し、このため、例えばマルチユーザ/マルチプログラミング環境等のコンピューティングシステムに対して大きな負荷がかかる。マルチプログラミングコンピューティングシステムは、様々なアプリケーションからのデータを同時に処理するので、音声認識プロセスによってこれらのコンピューティングシステムにかかる負荷は、コンピューティングシステムが、入来音声信号及び他のアプリケーションからのデータを処理することができる速度に影響を及ぼす。更に、(デスクトップコンピューティングシステムに比べて)通常メモリリソースが限られているハンドヘルドデバイスでは、音声認識の利用は、ハンドヘルドデバイスのコンピューティングリソースに大きな負荷をかけるだけでなく、ハンドヘルドデバイスのメモリリソースの大部分を消費する。上述の音声認識システムの処理能力、速度、及びメモリリソースの問題は、入来音声信号をリアルタイムで又は実質的にほぼリアルタイムで処理することへの要望によって更に悪化する。
[0004] 従って、コンピューティングシステムの処理能力、速度、及びメモリリソースに対して音声認識システムがかける負荷を改善することが必要とされている。
[0005] 一実施形態において、音声認識システムが提供される。このシステムは、受信したオーディオ信号を、各フレームベクトルを有する連続フレームに分割するように構成された処理ユニットと、音響処理ユニット(APU)と、処理ユニット及びAPUを接続するデータバスと、を含む。APUは、複数のシノンを記憶するローカルな不揮発性メモリと、メモリに接続されたメモリバッファであって、音響処理ユニットが、メモリに記憶された少なくとも1つのガウス確率分布ベクトルをメモリバッファ内にロードするように構成された、メモリバッファと、メモリバッファ内にロードされたガウス確率分布ベクトルの複数の次元を、処理ユニットから受信されたフレームベクトルの各次元と同時に比較すると共に、対応するスコアを処理ユニットに出力するように構成された、スコアリングユニットと、を含む。処理ユニットが第2のフレームに対応するスコアを用いたサーチ動作を実行する間にAPUが第1のフレームを用いた比較を実行するように構成され、第2のフレームは第1のフレームの直前にある。
[0006] 本発明の別の実施形態は、音響処理のための方法を含む。この方法は、処理ユニットを用いて、受信したオーディオ信号を複数のフレームに分割することと、音響処理ユニット(APU)を用いて、複数のフレームの第1のフレームに関連付けられた特徴ベクトルをガウス確率分布ベクトルと比較してスコアを発生することと、この比較と同時に、処理ユニットを用いて音響処理ユニット(APU)から受信された複数のフレームの第2のフレームに関連付けられた特徴ベクトルに対応するスコアを用いてサーチ動作を実行することと、を含む。第2のフレームは第1のフレームの直前にあり、処理ユニット及びAPUはデータバスを介して接続されている。
[0007] 更に別の実施形態は、音響処理方法を実行するために1つ以上のプロセッサにより実行される1つ以上の命令の1つ以上のシーケンスを記憶するコンピュータ読み取り可能媒体を含む。この方法は、処理ユニットを用いて、受信したオーディオ信号を複数のフレームに分割することと、音響処理ユニットを用いて、複数のフレームの第1のフレームに関連付けられた特徴ベクトルを出力することであって、音響処理ユニットが第1のフレームをガウス確率分布ベクトルと比較してスコアを発生するように構成されている、ことと、APUでの比較と同時に、処理ユニットを用いて音響処理ユニット(APU)から受信された複数のフレームの第2のフレームに関連付けられた特徴ベクトルに対応するスコアを用いてサーチ動作を実行することと、を含む。第2のフレームは第1のフレームの直前にあり、処理ユニット及びAPUはデータバスを介して接続されている。
[0008] 以下で添付図面を参照して、本発明の更に別の特徴及び利点について、本発明の様々な実施形態の構造及び動作と共に詳細に説明する。本発明は、本明細書に記載する特定の実施形態に限定されないことに留意すべきである。かかる実施形態は本明細書において単に例示の目的のためにのみ提示する。本明細書に包含される教示に基づいて、当業者には関連技術における追加の実施形態も明らかであろう。
[0009] 本明細書に組み込まれてその一部を形成する添付図面は、本発明の実施形態を例示し、記載部分と共に本発明の原理を説明し、更に当業者が本発明を生成及び使用することを可能とするように機能する。
[0010] 本発明の一実施形態による音声認識プロセスの一例のフローチャートの例示である。 [0011] 従来の音声認識システムの例示である。 [0012] 音声認識プロセスが個々の処理ユニットにより実行される従来の音声認識システムの例示である。 [0013] 音響処理ユニット(APU)及び中央処理装置(CPU)により実行される音声認識プロセスの一実施形態の例示である。 [0014] 音声認識システムのためのペリフェラルコントローラインタフェース(PCI:Peripheral Controller Interface)バスアーキテクチャの一実施形態の例示である。 [0015] 音声認識システムのためのAPB(Advanced Peripheral Bus)アーキテクチャの一実施形態の例示である。 [0016] 音声認識システムのための低電力ダブルデータレート(LPDDR:Low Power Double Data Rate)バスアーキテクチャの一実施形態の例示である。 [0017] 音声認識システムのためのシステムレベルアーキテクチャの一実施形態の例示である。 [0018] データパターン分析のための方法の一実施形態の例示である。 [0019] 一体化された特定用途向け集積回路(ASIC)及びメモリデバイスを有する音声認識システムのためのシステムレベルアーキテクチャの一実施形態の例示である。 [0020] 一体化された特定用途向け集積回路(ASIC)、揮発性メモリデバイス、不揮発性メモリデバイスを有する音声認識システムのためのシステムレベルアーキテクチャの一実施形態の例示である。 [0021] 特定用途向け集積回路(ASIC)及び中央処理装置(CPU)を含むシステムオンチップを有する音声認識システムのためのシステムレベルアーキテクチャの一実施形態の例示である。 [0022] 特定用途向け集積回路(ASIC)及び中央処理装置(CPU)を含むシステムオンチップを有する音声認識システムのためのシステムレベルアーキテクチャの別の実施形態の例示である。 [0023] 音響処理ユニット(APU)の一実施形態の例示である。 [0024] 音響処理ユニット(APU)のためのシノンスコアリングユニット(SSU)コントローラの一実施形態の例示である。 [0025] 音響処理ユニット(APU)のための距離算出部の一実施形態の例示である。 [0026] 音響処理ユニット(APU)のための音響モデリングプロセスの方法の一実施形態の例示である。 [0027] 本発明の一実施形態による演算論理ユニットの一実施形態の例示である。 [0028] 本発明の一実施形態による、図18に示した演算論理ユニットの一実施形態の例示である。 [0029] 本発明の一実施形態による計算ユニットの一実施形態の例示である。 [0030] 1次元距離スコアを計算するための方法の一実施形態の例示である。 [0031] 音響処理システムの実施形態の例示である。 [0031] 音響処理システムの実施形態の例示である。 [0032] ハードウェアアクセレレータの一実施形態の例示である。 [0033] APUソフトウェアスタックを示すブロック図である。 [0034] 同時処理の一実施形態の例示である。 [0035] 音響処理の方法の一実施形態の例示である。 [0036] 本発明の実施形態又はその一部をコンピュータ読み取り可能コードとして実施可能である一例のコンピュータシステムの一実施形態の例示である。
[0037] 以下の詳細な説明では、本発明に合致する例示的な実施形態を示す添付図面を参照する。本発明の趣旨及び範囲内で他の実施形態も可能であり、実施形態に対する変更も実施可能である。従って、詳細な説明は本発明の範囲を限定することは意図していない。本発明の範囲は添付の特許請求の範囲によって規定される。
[0038] 以下に記載するように、図面に示すソフトウェア、ハードウェア、ファームウェア、及び/又はエンティティの多くの異なる実施形態において本発明を実施可能であることは当業者には認められよう。このため、本明細書に提示するレベルの詳細が与えられれば実施形態の変更及び変形が可能であるという理解のもとに本発明の実施形態の動作挙動について記載する。
[0039] 本明細書は、本発明の特徴を組み込んだ1つ以上の実施形態を開示する。開示する実施形態は本発明を単に例示するだけである。本発明の範囲は開示する実施形態に限定されない。本発明は添付の特許請求の範囲によって規定される。
[0040] 記載する実施形態、及び本明細書における「一実施形態」「ある実施形態」「一例の実施形態」等の言及は、記載する実施形態が特定の特徴、構造、又は特性を含み得るが、全ての実施形態がその特定の特徴、構造、又は特性を必ずしも含むわけではないことを示す。また、かかる語句は必ずしも同一の実施形態を指すものではない。更に、特定の特徴、構造、又は特性をある実施形態に関連付けて記載する場合は、明示的に記載があるにせよないにせよ、かかる特徴、構造、又は特性を他の実施形態と関連付けて実施することが当業者の知識内であることは理解されよう。
[0041] 1.音声認識プロセス
図1は、本発明の一実施形態に従った音声認識プロセス100の一例のフローチャートの例示である。音声認識プロセス100は、信号処理段110、音響モデリング段120、音素評価段130、及び単語モデリング段140を含む。
[0042] 信号処理段110においては、入来音声信号105のアナログ信号表現をフィルタリングして、人の耳が聞くことができる周波数範囲の外側にある信号の高周波成分を除去することができる。次いで、フィルタリングした信号を、当業者に周知のサンプリング及び量子化技法を用いてデジタル化する。例えば、線形予測符号化及び高速フーリエ変換等の技法を用いて、デジタル化波形から1つ以上のパラメトリックデジタル表現(本明細書では「特徴ベクトル115」とも称する)を抽出することができる。この抽出は、例えば約10msの規則的な時間間隔又はフレームで行うことができる。
[0043] 音響モデリング段120においては、信号処理段110からの特徴ベクトル115を、メモリに記憶されている1つ以上の多変数ガウス確率分布(本明細書では「ガウス確率分布」とも称する)と比較する。メモリに記憶されている1つ以上のガウス確率分布は音響ライブラリの一部とすることができ、このライブラリ内ではガウス確率分布がシノン(senone)を表す。シノンとは、当業者によって理解されるように、対象言語の下位音声単位(sub-phonetic unit)を指す。個々のシノンは例えば8成分から成ることができ、各成分が39次元のガウス確率分布を表すことができる。
[0044] 音響モデリング段120は、例えば1000を超えるシノンを処理することができる。この結果、特徴ベクトルと1つ以上のガウス確率分布との比較は計算集約型タスクとなり得る。これは、時間間隔又はフレーム(例えば10ms)ごとに、例えば数千のガウス確率分布を特徴ベクトル115と比較し得るからである。各特徴ベクトル115と1つ以上のガウス確率分布の各々とを比較した結果として、音響ライブラリに表される各シノンについてスコアセット(本明細書では「シノンスコア」とも称する)が得られる。音響モデリング段120は、シノンスコア125を音素評価段130に提供する。
[0045] 音素評価段130においては、隠れマルコフモデル(HMM:Hidden Markov Model)を用いて、状態セット及び各状態間のアプリオリの遷移確率セットとして音素を特徴付けることができる。状態はシノンに関連付けられている。所与の観察されたシノンシーケンスについて、対応するHMMにおける最尤状態シーケンスがある。この対応するHMMは、観察された音素に関連付けることができる。ビタビアルゴリズムを用いて、音素に対応する各HMMの尤度を求めることができる。
[0046] ビタビアルゴリズムが実行する計算は、時刻同期して第1のフレームから開始して一度に1つずつ以降のフレームに進む。考察対象のHMMにおいて各シノンについて確率スコアを計算する。従って、ビタビアルゴリズムが連続するフレームを分析すると、あり得るシノンシーケンスの各々について累積確率スコアを連続的に計算することができる。音素評価段130は、音素尤度又は確率135(本明細書では「音素スコア」とも称する)を単語モデリング段140に提供する。
[0047] 単語モデリング段140においては、検索技法を用いて経時的な最尤音素ストリング及びその後の単語を決定する。例えばツリーベースのアルゴリズム等の検索技法を用いて、最尤音素ストリングを決定することができる。
[0048] 2.従来の音声認識システム
図2は従来の音声認識システム200の例示である。音声認識システム200は、入力デバイス210、処理ユニット220、メモリデバイス230、及びデータバス240を含み、これらは全て別個の物理コンポーネントである。メモリデバイス230は、例えば処理ユニット220の外部にありデータバス240を介して処理ユニット220と通信状態にあるダイナミックランダムアクセスメモリ(DRAM)デバイスとすることができる。また、入力デバイス210もデータバス240を介して処理ユニット220と通信状態にある。データバス240は、例えば8から32ビットの典型的なバス幅を有する。
[0049] 入力デバイス210は、入来音声信号(例えば図1の入来音声信号105)を受信すると共に入来音声信号に関連付けられた音響振動をアナログ信号に変換するように構成されている。アナログ信号は、アナログデジタル変換器(図2には図示せず)を用いてデジタル化され、得られたデジタル信号はデータバス240を介して処理ユニット220に転送される。入力デバイス210は、例えばマイクロフォンとすることができる。
[0050] 処理ユニット220は、図1に関して上述した信号処理段110、音響モデリング段120、音素評価段130、及び単語モデル段140に従ってデジタル入力信号を処理するように構成されている。図3は、処理ユニット220が実行する音声認識モジュールを有する音声認識システム200の例示である。処理ユニットは、信号処理モジュール310、音響モデリングモジュール320、音素評価モジュール330、及び単語モデリングモジュール340を含み、これらはそれぞれ、図1の信号処理段110、音響モデリング段120、音素評価段130、及び単語モデル段140と同様に動作する。
[0051] 図3を参照すると、信号処理モジュール310は、(例えば入力デバイス210からの)入来音声信号305のデジタル入力信号表現を1つ以上の特徴ベクトル315に変換することができる。音響モデリングモジュール320は、1つ以上の特徴ベクトル315を、メモリデバイス230内の音響ライブラリに記憶された1つ以上のガウス確率分布と比較する。すなわち、1つ以上の特徴ベクトル315と1つ以上のガウス確率分布との比較の各々について、処理ユニット220はデータバス240を介してメモリデバイス230にアクセスする。数千のシノンを有する音響ライブラリ(そのシノンの各々は複数のガウス確率分布から成る)では、音響モデリングモジュール320によって実行される比較は計算集約型であるだけでなく、音響モデリングモジュール320によるデータバス240を介したメモリデバイス230に対する数千回のアクセスも計算集約型であると共に長い時間がかかる。メモリデバイス230に対する数千回のアクセスは、データバス240のバス幅(例えば典型的には8から32ビット)によって更に悪化し、各ガウス確率分布にアクセスするために音響モデリングモジュール320によってメモリデバイス230に多数回アクセスする必要があり得る。更に、データバス240に関連した相互接続寄生によって、メモリデバイス230と音響モデリングモジュール320との間のデータ転送が損なわれる恐れがある。
[0052] 音素評価モジュール330は、音響モデリングモジュール320からシノンスコア325を受信する。図1の音声認識プロセス100に関して上述したように、HMMを用いて、状態セット及び各状態間のアプリオリの遷移確率セットとして音素を特徴付けることができる。状態はシノンのシーケンスから成る。音素評価モジュール330が用いる状態セット及びアプリオリの遷移確率セットはメモリデバイス230に記憶することができる。音素評価モジュール330は音素スコア335を単語モデリングモジュール340に提供する。
[0053] 単語モデリングモジュール340は、例えばツリーベースのアルゴリズム等の検索技法を用いて、経時的な最尤音素ストリング(例えば最尤音素335)及びその後の単語を決定する。
[0054] 図3の従来の音声認識システム300に伴う問題は、とりわけ、音響モデリングプロセスのために処理ユニット220にかかる大きな負荷である。例えば、1つ以上の特徴ベクトル315とメモリデバイス230に記憶された1つ以上のガウス確率分布との各比較について、メモリデバイス230は処理ユニット220によってアクセスされる。この結果、かなりのコンピューティングリソースが、音響モデリングプロセスに専念し、このため処理ユニット220に大きな負荷がかかる。音響モデリングプロセスによって処理ユニット220にかかる負荷は、処理ユニット220が入力デバイス210からのデジタル信号及び他のアプリケーションからのデータを処理することができる速度に影響を及ぼす(例えば処理ユニット220は複数のアプリケーションからのデータを同時に処理するマルチユーザ/マルチプログラミング環境において動作する場合がある)。更に、メモリリソースが限られているコンピューティングシステム(例えばハンドヘルドデバイス)では、音響モデリングプロセスは、処理ユニット220に大きな負荷をかけるだけでなく、メモリデバイス230の大部分及びデータバス240の帯域幅を消費する。とりわけ、処理能力、速度、及びメモリリソースに伴うこれらの問題は、多くの用途で入来音声信号をリアルタイムで又は実質的にほぼリアルタイムで処理することへの要望によって更に悪化する。
[0055] 3.音響処理ユニットを用いた音声認識システム
本発明の実施形態は、図2及び図3の従来の音声認識システム200及び300に関して上述した問題に対処する。一実施形態において、音響モデリングプロセスは、専用の処理ユニット(本明細書では「音響処理ユニット」又は「APU」とも称する)によって実行する。APUは、図3の処理ユニット220(本明細書では「中央処理装置」又は「CPU」とも称する)と連動して動作する。例えばAPUは、CPUから1つ以上の特徴ベクトル(例えば図3の特徴ベクトル315)を受信し、1つ以上のガウス確率分布に基づいてシノンスコア(例えば図3のシノンスコア325)を算出し、このシノンスコアをCPUに出力する。一実施形態において、1つ以上のガウス確率分布はAPUに記憶することができる。あるいは、別の実施形態では、1つ以上のガウス確率分布はAPUの外部に記憶することができ、この場合APUは外部のメモリデバイスから1つ以上のガウス確率分布を受信する。以下で詳述するAPUのアーキテクチャに基づいて、シノンスコアの算出の高速化が達成される。
[0056] 本開示の一部は音声認識システムの文脈において記載するが、本明細書に記載する実施形態は、本明細書の記載に基づいたいかなるデータパターン認識用途にも適用可能であることは、当業者には認められよう。これらの他のデータパターン認識用途は、限定ではないが、画像処理、オーディオ処理、及び手書き文字認識を含む。これらの他のデータパターン認識用途は本明細書に開示する実施形態の趣旨及び範囲内である。
[0057] 図4は、APU及びCPUが実行する音声認識プロセス400の一実施形態の例示である。一実施形態において、CPUは、信号処理プロセス410、音素評価プロセス430、及び単語モデリングプロセス440を実行する。APUは音響モデリングプロセス420を実行する。信号処理プロセス410、音響モデリングプロセス420、音素評価プロセス430、及び単語モデリングプロセス440は、本明細書にそれ以外の記載がある場合を除いて、それぞれ図1の信号処理段110、音響モデリング段120、音素評価段130、及び単語モデリング段140と同様に動作する。
[0058] 図4の実施形態を参照すると、フィードバック450は音声認識プロセス400の任意選択的な特徴であり、本発明の一実施形態に従って、音素評価プロセス430がアクティブなシノンのリストを音響モデリングプロセス420に提供することができる。APUは、1つ以上の特徴ベクトルを、アクティブなシノンのリストに示された1つ以上のシノンと比較することができる。かかるフィードバック450については以下で更に論じる。
[0059] 別の実施形態においては、音響モデリングプロセス420は、1つ以上の特徴ベクトルを、音響ライブラリに関連付けられた全てのシノンと比較することができる。この場合、フィードバック450は必要でなく、音素評価プロセス430は更に処理を行うためにAPUからシノンスコアセット全体を受信する(例えば「全スコア」機能)。
[0060] A.音響処理ユニットを用いた音声認識システムのためのシステムバスアーキテクチャ
一実施形態において、APU及びCPUは、SPIバス、PCIバス、API(Application Programming Interface)バス、AMBA AHB(Advanced Microcontroller Bus Architecture High-Performance Bus)、APB(Advanced Peripheral Bus)、メモリバス、又は他のいずれかのタイプのバスを介して相互に通信状態とすることができる。図4の音声認識プロセス400のためのシステムバスアーキテクチャの例示的かつ非限定的な実施形態について、以下で詳述する。
[0061] 図5は、音声認識システム500のためのバスアーキテクチャの一実施形態の例示である。音声認識システム500は、APU510、CPU520、プロセッサ/メモリバス530、キャッシュ540、システムコントローラ550、メインメモリ560、複数のCPIデバイス570〜570、入出力(I/O)バス580、及びPCIブリッジ590を含む。キャッシュ540は、例えばスタティックランダムアクセスメモリ(SRAM)デバイス上に実施された第2レベルのキャッシュとすることができる。更に、メインメモリ560は例えばダイナミックランダムアクセスメモリ(DRAM)デバイスとすることができる。音声認識システム500は、本発明の一実施形態に従って、システムオンチップ(SOC)として実施することができる。
[0062] 図5に示すように、APU510はPCIブリッジ590を介してI/Oバス580に通信可能に接続される。I/Oバス580は例えばPCIバスとすることができる。PCIブリッジ590及びI/Oバス580を介して、APU510はシステムコントローラ550及びCPU520に通信可能に接続される。別の実施形態(図5には図示せず)では、APU510はプロセッサ/メモリバス530に直接接続し、次いでCPU520に通信可能に接続することができる。
[0063] 図6は、音声認識システム600のためのバスアーキテクチャの別の実施形態の例示である。音声認識システム600は、APU510、CPU520、キャッシュ540、AHB610、システムコントローラ620、不揮発性メモリデバイス630、メインメモリ640、APBブリッジ650、APB660、及び複数のデバイス670〜670を含む。不揮発性メモリデバイス630は例えばフラッシュメモリデバイスとすることができる。メインメモリ640は例えばDRAMデバイスとすることができる。CPU520は例えば(ARM Holdings plcにより開発された)ARMプロセッサとすることができる。音声認識システム600は、本発明の一実施形態に従って、SOCとして実施することができる。
[0064] 図6に示すように、APU510は、APBブリッジ650及びAPB660を介してシステムコントローラ620に通信可能に接続される。また、システムコントローラ620はAHB610を介してCPU520に通信可能に接続される。システムコントローラ620はAHB610を介してCPU520に通信可能に接続される。
[0065] 図7は、音声認識システム700のためのバスアーキテクチャの別の実施形態の例示である。音声認識システム700は、APU510、CPU520、キャッシュ540、AHB610、システムコントローラ620、不揮発性メモリデバイス630、低電力ダブルデータレート(LPDDR)インタフェース710、LPDDRメモリバス720、及びメインメモリ730を含む。メインメモリ730は例えばDRAMデバイスとすることができる。CPU520は例えば(ARM Holdings plcにより開発された)ARMプロセッサとすることができる。音声認識システム700は、本発明の一実施形態に従って、SOCとして実施することができる。
[0066] 図7に示すように、APU510及びメインメモリ730は、LPDDRメモリバス720を介してLPDDRインタフェース710に通信可能に接続される。APU510は、LPDDRメモリバス720及びLPDDRインタフェース710を介してシステムコントローラ620に通信可能に接続される。更に、システムコントローラ620はAHB610を介してCPU520に通信可能に接続される。
[0067] B.音響処理ユニットを用いた音声認識システムのためのシステムレベルアーキテクチャ
図8は、音声認識システム800のためのシステムレベルアーキテクチャの一実施形態の例示である。音声認識システム800は、APU810、メモリコントローラ820、不揮発性メモリデバイス830、及び揮発性メモリデバイス840を含む。メモリコントローラ820は、バス815を介してAPU810に通信可能に接続され、バス825(これはいくつかの実施形態において2つ以上のバスを表す場合がある)を介して不揮発性メモリデバイス830及び揮発性メモリデバイス850に接続される。一実施形態において、APU810及びメモリコントローラ820はシングルチップ上に集積される。あるいは、一実施形態において、APU810及びメモリコントローラ820は別個のチップ上に集積される。不揮発性メモリデバイス830は、NANDメモリモジュール、NORメモリモジュール、又は別のタイプの不揮発性メモリデバイスとすることができる。一実施形態において、揮発性メモリデバイス840はDRAMデバイスとすることができる。更に、本発明の一実施形態に従って、APU810は、例えば図5から図7に関して上述したバスアーキテクチャの1つを用いて、CPU(図8には図示せず)と通信を行うことができる。
[0068] 不揮発性メモリデバイス830は、音声認識プロセスにおいて用いられる音響ライブラリを記憶することができ、本発明の一実施形態に従って、音響ライブラリは1000を超えるシノンを含むことができる。一実施形態においては、音声認識システム800によってシノン要求が受信されると、メモリコントローラ820は不揮発性メモリデバイス830からバス825を介して揮発性メモリデバイス840に音響ライブラリをコピーする。不揮発性及び揮発性メモリデバイス間の音響ライブラリ転送プロセスは、例えば直接メモリアクセス(DMA)動作を用いて実施可能である。
[0069] 一実施形態においては、シノンスコアリング要求を予想して音声認識システム800を作動させることができる。電源投入の後、不揮発性メモリデバイス830からの音響ライブラリは直ちに揮発性メモリデバイス840にコピーされる。いったん揮発性メモリデバイス840が音響ライブラリを受信したら、APU810は、揮発性メモリデバイス840に記憶された音響ライブラリを用いてシノンスコアリング要求の処理(例えば図4の音響モデリングプロセス420)を開始する準備が整う。
[0070] シノンスコアリング要求がAPU810によって受信されると、揮発性メモリデバイス840からメモリコントローラ820を介してAPU810に、音響ライブラリから選択されたシノンがコピーされる。APU810は、選択されたシノン及びAPU810が受信したデータストリーム(例えば図3の1つ以上の特徴ベクトル315)に基づいてシノンスコアを算出する。算出の完了後、APU810はシノンスコアを要求側のシステム(例えばCPU)に転送する。
[0071] 一実施形態においては、所定時間の非作動(例えばAPU810によるシノンスコアリング非作動)の後、揮発性メモリデバイス840の電源を切断することができる。この結果、揮発性メモリデバイス840内のメモリセルの定期的なリフレッシュが不必要であるので、音声認識システム800における電力効率を向上させることができる。ここで、音響ライブラリは不揮発性メモリデバイス830に記憶されたままであり、揮発性メモリデバイス840の電源が切断されても音響ライブラリを保持することが可能となっている。当業者には理解されようが、揮発性メモリデバイス840の電源が切断されると、そこに記憶されていた内容(例えば音響ライブラリ)は失われる。一実施形態においては、揮発性メモリデバイス840の電源が切断された場合、音声認識システム800の他のコンポーネントの電源も切断することができる。
[0072] 図9は、データパターン分析のための方法900の一実施形態の例示である。例えば図8の音声認識システム800を用いて方法900のステップを実行することができる。一実施形態においては、方法900を用いて図4の音響モデリングプロセス420を実行することができる。本明細書の記載に基づいて、例えば画像処理、オーディオ処理、及び手書き文字処理等の他のデータパターン認識用途において方法900を使用可能であることは、当業者には認められよう。
[0073] ステップ910において、不揮発性メモリデバイス(例えば図8の不揮発性メモリデバイス830)から揮発性メモリデバイス(例えば図8の揮発性メモリデバイス840)に、複数のデータパターンをコピーする。一実施形態において、複数のデータパターンは音響ライブラリに関連付けられた1つ以上のシノンとすることができる。
[0074] ステップ920において、揮発性メモリデバイスからのデータパターンが、計算ユニット(例えば図8のAPU810)によって要求され、メモリコントローラ及びバス(例えば図8のメモリコントローラ820及びバス825)を介して計算ユニットに転送される。一実施形態において、要求されたデータパターンは、揮発性メモリデバイスに記憶された音響ライブラリからのシノンである。
[0075] ステップ930において、要求されたデータパターンを受信した後、計算ユニット(例えば図8のAPU810)は、この計算ユニットが受信したデータストリームにデータパターン分析を実行する。一実施形態において、データパターン分析は、選択されたシノン及び計算ユニットが受信したデータストリーム(例えば図3の1つ以上の特徴ベクトル315)に基づいたシノンスコア算出である。データパターン分析の完了後、計算ユニットはデータパターン分析結果を要求側のシステム(例えばCPU)に転送する。
[0076] ステップ940において、揮発性メモリデバイスの電源を切断する。一実施形態においては、所定時間の非作動(例えば計算ユニットによるデータパターン分析の非作動)の後に揮発性メモリデバイスの電源を切断する。この結果、揮発性メモリデバイス内のメモリセルの定期的なリフレッシュが不必要であるので、電力効率を向上させることができる。一実施形態においては、揮発性メモリデバイスの電源が切断された場合、システムの他のコンポーネント(例えば音声認識システム800の他のコンポーネント)の電源も切断することができる。
[0077] 図10は、音声認識システム1000のシステムレベルアーキテクチャの別の実施形態の例示である。音声認識システム1000は、APU1010、SOC1040、DRAMデバイス1060、フラッシュメモリデバイス1070、及びI/Oインタフェース1080を含む。一実施形態において、APU1010は、音響ライブラリを記憶するように構成されたメモリデバイス1020と、音響モデリングプロセス(例えば図4の音響モデリングプロセス420)を実行するように構成された特定用途向け集積回路(ASIC)1030と、を含む集積チップである。別の実施形態においては、ASIC1030及びメモリデバイス1020を2つの別個のチップ上に集積することができる。SOC1040は、本発明の一実施形態に従って、信号処理プロセス、音素評価プロセス、及び単語モデリングプロセス(例えば図4の信号処理プロセス410、音素評価プロセス430、及び単語モデリングプロセス440)を実行するように構成されたCPU1050を含む。一実施形態において、APU1010及びSOC1040は2つの別個のチップ上に集積される。
[0078] 図11は、音声認識システム1100のシステムレベルアーキテクチャの別の実施形態の例示である。音声認識システム1100は、APU1110、SOC1040、DRAMデバイス1060、フラッシュメモリデバイス1070、及びI/Oインタフェース1080を含む。一実施形態において、APU1110は、ASIC1120、揮発性メモリデバイス1130、及び不揮発性メモリデバイス1140を含む集積チップである。別の実施形態においては、ASIC1120、揮発性メモリデバイス1130、及び不揮発性メモリデバイス1140を2つの別個のチップ上に集積することができる。例えばASIC1120及びメモリデバイス1130を1つのチップ上に、不揮発性メモリデバイス1140を別のチップ上に集積すること、ASIC1120を1つのチップ上に、揮発性メモリデバイス1130及び不揮発性メモリデバイス1140を別のチップ上に集積すること、又はASIC1120及び不揮発性メモリデバイス1140を1つのチップ上に、揮発性メモリデバイス1130を別のチップ上に集積することが可能である。更に別の実施形態では、ASIC1120、揮発性メモリデバイス1130、及び不揮発性メモリデバイス1140を各々、別個のチップすなわち3つの別個のチップ上に集積することができる。
[0079] 不揮発性メモリデバイス1140は、本発明の一実施形態に従って、APU1110の電源投入時に揮発性メモリデバイス1130にコピーされる音響モデルを記憶するように構成することができる。一実施形態において、不揮発性メモリデバイスはフラッシュメモリデバイスとすることができ、揮発性メモリデバイス1130はDRAMデバイスとすることができる。更に、ASIC1120は、本発明の一実施形態に従って、音響モデリングプロセス(例えば図4の音響モデリングプロセス420)を実行するように構成することができる。
[0080] 図12は、音声認識システム1200のシステムレベルアーキテクチャの別の実施形態の例示である。音声認識システム1200は、DRAMデバイス1060、フラッシュメモリデバイス1070、I/Oインタフェース1080、メモリデバイス1210、及びSOC1220を含む。一実施形態において、SOC1220は、ASIC1230及びCPU1240を含む集積チップである。ASIC1230は、音響モデリングプロセス(例えば図4の音響モデリングプロセス420)を実行するように構成することができ、CPU1240は、本発明の一実施形態に従って、信号処理プロセス、音素評価プロセス、及び単語モデリングプロセス(例えば図4の信号処理プロセス410、音素評価プロセス430、及び単語モデリングプロセス440)を実行するように構成することができる。
[0081] メモリデバイス1210は、本発明の一実施形態に従って、音響ライブラリを記憶すると共に1つ以上のシノンをI/Oバス1215を介してASIC1230に転送するように構成することができる。一実施形態において、メモリデバイス1210はDRAMデバイス又はフラッシュメモリデバイスとすることができる。別の実施形態では、音響ライブラリは、メモリデバイス1210でなく、ASIC1230内に位置するメモリデバイス(図12には図示せず)に記憶することができる。更に別の実施形態では、音響ライブラリは、SOC1220のためのシステムメモリ(例えばDRAMデバイス1060)に記憶することができる。
[0082] 図13は、音声認識システム1300のシステムレベルアーキテクチャの実施形態の別の例示である。音声認識システム1300は、DRAMデバイス1060、フラッシュメモリデバイス1070、I/Oインタフェース1080、メモリデバイス1210、及びSOC1220を含む。DRAMデバイス1060は、本発明の一実施形態に従って、音響ライブラリを記憶すると共に1つ以上のシノンをI/Oバス1315を介してASIC1230に転送するように構成することができる。
[0083] 4.音響処理ユニットアーキテクチャ
図14はAPU1400の一実施形態の例示である。一実施形態において、APU1400は、メモリモジュール1420及びシノンスコアリングユニット(SSU)1430を含む集積チップである。別の実施形態においては、メモリモジュール1420及びSSU1430は2つの別個のチップ上に集積することができる。
[0084] APU1400は、I/O信号1410を介してCPU(図14には図示せず)と通信状態にあり、APU1400は、本発明の一実施形態に従って音響モデリングプロセス(例えば図4の音響モデリングプロセス420)を実行するように構成されている。一実施形態において、I/O信号1410は、特徴ベクトル情報のための入力特徴ベクトルデータライン、入力クロック信号、入力APUイネーブル信号、シノンスコア情報のための出力シノンスコアデータライン、及びAPU1400のための他のI/O制御信号を含むことができる。APU1400は、本発明の一実施形態に従って、特徴ベクトルデータラインを介してCPUから(CPUによって計算された)1つ以上の特徴ベクトルを受信すると共に、シノンスコアデータラインを介してCPUにシノンスコアを更に処理するために送信するように構成することができる。一実施形態において、I/O信号1410は、例えばSPIバス、PCIバス、APIバス、AHB、APB、メモリバス、又は他のいずれかのタイプのバスとして実施して、APU1400とCPUとの間の通信経路を提供することができる(例えば図5から図7及び関連する記載を参照のこと)。APU1400とCPUとの間のインタフェース及びこのインタフェースのための制御信号については以下で詳述する。
[0085] 一実施形態において、メモリモジュール1420及びSSU1430は2つの異なるクロックドメインで動作することができる。本発明の一実施形態に従って、メモリモジュール1420は、(例えばI/O信号1410からの)APU1400に対する入力クロック信号に関連したクロック周波数で動作することができ、SSU1430は、入力クロック信号に基づいて更に高速のクロック周波数で動作することができる。例えば、入力クロック信号に関連したクロック周波数が12MHzである場合、SSU1430は60MHzのクロック分割周波数で動作することができ、これは入力クロック信号に関連したクロック周波数よりも5倍高速である。クロック分割を実施するための技法及び方法は当業者には既知である。以下で詳述するように、SSU1430のアーキテクチャはこれが動作するクロックドメインに基づくものとすることができる。
[0086] 図14を参照すると、メモリモジュール1420は、バスコントローラ1422、メモリコントローラ1424、メモリデバイス1426、及びブリッジコントローラ1428を含む。メモリデバイス1426は、音声認識プロセスにおいて用いられる音響モデルを記憶するように構成されている。一実施形態において、メモリデバイス1426は、例えばフラッシュメモリデバイス等の不揮発性メモリデバイスとすることができる。音響ライブラリは、APU1400の動作に先立って(例えばAPU1400の製造及び/又は試験中に)不揮発性メモリデバイスにプリロードすることができる。
[0087] 別の実施形態において、メモリデバイス1426は、例えばDRAMデバイス等の揮発性メモリデバイスとすることができる。一実施形態において、APU1400によってシノン要求が受信されると、メモリコントローラ1424は、不揮発性メモリデバイス(APU1400と同一のチップ上に集積されているか、又はAPU1400の外部に位置している)から揮発性メモリデバイスに音響ライブラリをコピーすることができる。不揮発性及び揮発性メモリデバイスの間の音響ライブラリ転送プロセスは、例えばDMA動作を用いて実施することができる。
[0088] バスコントローラ1422は、APU1400と外部CPUとの間のデータ転送を制御するように構成されている。一実施形態において、バスコントローラ1422は、CPUからの特徴ベクトルの受信及びAPU1400からCPUへのシノンスコアの送信を制御することができる。一実施形態において、バスコントローラ1422は、CPUからの1つ以上の特徴ベクトルを、メモリモジュール1420とSSU1430との間のインタフェースとして機能するブリッジコントローラ1428に転送するように構成されている。次いでブリッジコントローラ1428は、1つ以上の特徴ベクトルを更に処理するためにSSU1430に転送する。シノンスコアを算出したら、本発明の一実施形態に従って、シノンスコアはSSU1430からブリッジコントローラ1428を介してメモリモジュール1420に転送される。
[0089] 一実施形態において、バスコントローラ1422は、アクティブなシノンのリストを提供する制御信号を(I/O信号1410を介して)受信することができる。一実施形態において、アクティブなシノンのリストは、CPUが実行した音素評価プロセス(例えば図4の音素評価プロセス430)の結果としてAPU1400に転送することができる。すなわち、一実施形態において、APU1400が実行する音響モデリングプロセスとCPUが実行する音素評価プロセスとの間でフィードバックプロセスを行うことができる(例えば図4のフィードバック450)。本発明の一実施形態に従って、アクティブなシノンのリストは、APU1400に入来する特徴ベクトルについてのシノンスコア算出において用いることができる。
[0090] アクティブなシノンのリストは、シノンスコア算出において用いられるメモリデバイス1426内に記憶された1つ以上のシノンを示す。一実施形態において、アクティブなシノンのリストは、メモリデバイス1426のアドレス空間に関連付けられたベースアドレス及びメモリデバイス1426内で1つ以上のシノンが位置するベースアドレスに関係付けたインデックスのリストを含むことができる。バスコントローラ1422は、アクティブなシノンのリストを、ブリッジコントローラ1428を介してSSU1430に送信することができる。SSU1430は、アクティブなシノンのリストに関連付けられた1つ以上のシノンにアクセスするために、メモリデバイス1426と(メモリコントローラ1424を介して)通信状態にある。
[0091] 別の実施形態においては、バスコントローラ1422は、音響ライブラリに含まれるシノンの全てを用いてシノンスコア算出を実行する(例えば「全スコア」機能)ようにAPU1400に命令する制御信号を(I/O信号1410を介して)受信することができる。バスコントローラ1422は、「全スコア」命令を、ブリッジコントローラ1428を介してSSU1430に送信する。SSU1430は、音響ライブラリに関連付けられたシノンの全てにアクセスするために、メモリデバイス1426と(メモリコントローラ1424を介して)通信状態にある。
[0092] 従来の音声認識システムは、典型的に、CPU内に音響モデリングモジュール及び音素評価モジュール(例えば図3の音響モデリングモジュール320及び音素評価モジュール330)間のフィードバックループを組み込んで、シノンスコア算出において用いるシノン数を制限する。その理由は、図3の音声認識システム300に関して上述したように、数千のシノンを特徴ベクトルと比較する場合にかなりのコンピューティングリソースが音響モデリングプロセスに専念するからである。これによって、CPU及び、メモリデバイス(例えば図3のメモリデバイス230)からCPUにシノンを転送するデータバスの帯域幅(例えば図3のデータ240)に、大きな負担がかかる。このように従来の音声認識システムでは、アクティブなシノンのリストを用いて、CPUに対する音響モデリングプロセスの影響を限定する。しかしながら、CPUがアクティブなシノンのリストを用いることにより、入来音声信号をリアルタイムで又は実質的にほぼリアルタイムで処理することへの要望が制約されることがある。
[0093] APU1400の「全スコア」機能は、CPU及びデータバスの帯域幅にかかる負荷を軽減するだけでなく、入来音声信号をリアルタイムで又は実質的にほぼリアルタイムで処理する。以下で詳述するように、例えば図14のデータバス1427のバス幅及び距離算出部1436のアーキテクチャ等のAPU1400の特徴は、リアルタイム又は実質的にほぼリアルタイムの音声認識のためのシステムを提供する。
[0094] 図14を参照すると、SSU1430は、出力バッファ1432、SSU制御モジュール1434、特徴ベクトル行列モジュール1435、距離算出部1436、及び加算モジュール1438を含む。SSU1430は、本発明の一実施形態に従って、1つ以上の特徴ベクトルとメモリデバイス1426に記憶された1つ以上のシノンとの間のマハラノビス距離を算出するように構成されている。1つ以上の特徴ベクトルの各々はN次元から成ることができ、ここでNは例えば39に等しくすることができる。一実施形態において、1つ以上の特徴ベクトルにおけるN次元の各々は16ビット平均値とすることができる。
[0095] 更に、メモリデバイス1426に記憶された1つ以上のシノンの各々は1つ以上のガウス確率分布から成り、1つ以上のガウス確率分布の各々は、1つ以上の特徴ベクトルの各々と同一の次元数を有する(例えばN次元)。メモリデバイス1426に記憶された1つ以上のシノンの各々は、例えば32のガウス確率分布を有することができる。
[0096] 上述のように、メモリモジュール1420及びSSU1430は2つの異なるクロックドメインにおいて動作することができる。一実施形態において、SSU制御モジュール1434は、ブリッジコントローラ1428を介してメモリモジュール1420からクロック信号を受信するように構成されている。本発明の一実施形態によれば、SSU制御モジュール1434が受信するクロック信号の周波数は、APU1400に対する入力クロック信号(例えばI/O信号1410からの入力クロック信号)に関連付けられたクロック周波数と同一又は実質的に同一とすることができる。
[0097] 一実施形態において、SSU制御モジュール1434はその入来クロック信号の周波数を分割し、その分割クロック信号をSSU1430の他のコンポーネント、例えば出力バッファ1432、特徴ベクトル行列モジュール1435、距離算出部1436、及び加算モジュール1438に配信して、これらの他のコンポーネントをクロック分割周波数で動作させることができる。例えば、(例えばI/O信号1410からの)入力クロック信号に関連付けられたクロック周波数が12MHzである場合、SSU制御モジュール1434は、ブリッジコントローラ1428から同一又は実質的に同一のクロック信号を受信し、既知のクロック分割技法及び方法を用いてそのクロック周波数を例えば60MHzの周波数に分割することができる。SSU制御モジュール1434は、このクロック分割信号をSSU1430の他のコンポーネントに配信して、これらの他のコンポーネントを例えば60MHzで動作させることができる。これは、入力クロック信号に関連付けられたクロック周波数よりも5倍高速である。
[0098] 簡略化の目的のため、SSU制御モジュール1434からSSU1430の他のコンポーネントに配信されるクロック信号は図14に示さない。参照を容易にするため、このクロック信号に関連付けられた周波数を本明細書において「SSUクロック周波数」とも称する。更に、参照を容易にするため、SSU制御モジュール1434に対する入力クロック信号に関連付けられた周波数を本明細書において「メモリモジュールクロック周波数」とも称する。
[0099] 図15は、SSU制御モジュール1434の一実施形態の例示である。SSU制御モジュール1434は、入力バッファ1510及び制御ユニット1520を含む。SSU制御モジュール1434は、メモリモジュール1420からブリッジコントローラ1428を介して1つ以上の制御信号を受信するように構成されている。一実施形態において、1つ以上の制御信号は、I/O信号1410及びメモリデバイス1426によって出力されたガウス確率分布に関連付けられた制御情報に関連付けることができる。I/O信号1410に関連付けられた制御信号は、例えばアクティブなシノンのリスト及び「全スコア」機能を含むことができる。ガウス確率分布に関連付けられた制御情報は、例えば、メモリデバイス1426が出力する以降のガウス確率分布に関連付けられたアドレス情報を含むことができる。
[0100] 図14を参照すると、一実施形態において、バスコントローラ1422がI/O信号1410を介してアクティブなシノンのリストを受信すると、メモリデバイス1426のアドレス空間に関連付けられたベースアドレス及びメモリデバイス1426内で1つ以上のシノンが位置するベースアドレスに関係付けたインデックスのリストを、図15の入力バッファ1510に記憶することができる。制御ユニット1520は入力バッファ1510と通信状態にあり、シノンスコア算出において図14の距離算出部1436が適用するシノンのリストを監視する。
[0101] 例えば、アクティブなシノンのリストは、メモリデバイス1426のアドレス空間に関連付けられたベースアドレスと、メモリデバイス1426に記憶された100のシノンを指し示す100のインデックスと、を含むことができる。当業者には理解されようが、これらのインデックスは、メモリデバイス1426のアドレス空間に関連付けられたベースアドレスを基準としたポインタ又はメモリアドレスのオフセットを表すことができる。更に、上述のようにシノンは1つ以上のガウス確率分布から成ることができ、1つ以上のガウス確率分布の各々は、APU1400が受信した1つ以上の特徴ベクトルの各々と同一の次元数(例えばN次元)を有する。説明の目的のため、この例では、メモリデバイス1426に記憶された各シノンは32のガウス確率分布から成ると仮定する。本明細書における記載に基づいて、各シノンが32よりも多いか又は少ないガウス確率分布から成る場合があることは当業者には理解されよう。
[0102] 一実施形態においては、アクティブなシノンのリストにおける第1のシノンについて、制御ユニット1520は図14のメモリコントローラ1424と通信を行い、アクティブなシノンのリストに含まれたベースアドレス及び第1のインデックス情報に基づいて、メモリデバイス1426内の第1のシノンにアクセスする。本発明の一実施形態によれば、第1のインデックスに関連付けられたシノンは、そのシノンに関連付けられた最初の2つのガウス確率分布のメモリアドレス情報を含むことができる。次いでメモリデバイス1426は、第1のシノンに関連付けられた2つのガウス確率分布に、例えば逐次的にアクセスする。例えばメモリデバイス1426は、第1のガウス確率分布にアクセスし、このガウス確率分布を、データバス1427を介して距離算出部1436に出力する。メモリデバイス1426が第1のガウス確率分布を出力する際に、メモリデバイス1426は第2のガウス確率分布にもアクセスすることができる。
[0103] 一実施形態において、第2のガウス確率分布は、メモリデバイス1426によってアクセスされる第3のガウス確率分布のためのメモリアドレス情報を含むことができる。メモリデバイス1426は、このメモリアドレス情報を、図14のブリッジコントローラ1428を介して図15の制御ユニット1520に伝達することができる。次いで制御ユニット1520は、図14のメモリコントローラ1424と通信を行って第3のガウス確率分布にアクセスする。一実施形態においては、第3のガウス確率分布がメモリデバイス1426によってアクセスされている間に、第2のガウス確率分布を、データバス1427を介して距離算出部1436に出力することができる。現在のガウス確率分布を出力する間に以降のガウス確率分布にアクセスするこの繰り返しの重複処理を、シノンに関連付けられた全てのガウス確率分布について(例えばシノンに関連付けられた32のガウス確率分布の全てについて)実行する。繰り返しの重複(又は並列)処理の利点は、とりわけ、シノンスコア算出において高速性能が得られることである。
[0104] 本発明の一実施形態に従って、図15の制御ユニット1520は、メモリデバイス1426から距離算出部1436へのガウス確率分布の転送プロセスを監視して、メモリアクセス及び転送プロセスがパイプラインで行われるようにする。第1のシノンに関連付けられた32のガウス確率分布が図14の距離算出部1436に出力された後、制御ユニット1520はアクティブなシノンのリスト内の1つ以上の残りのシノンについて上述の処理を反復する。
[0105] 現在の特徴ベクトルのためのシノンスコア算出においてアクティブなシノンのリスト内のシノンを用いた後、本発明の一実施形態に従って、メモリモジュール1420は、以降の特徴ベクトルのためのシノンスコア算出において現在の特徴ベクトルからのアクティブなシノンのリストを用いるべきであることを示す制御信号を、I/O信号1410を介して受信することができる。メモリモジュール1420からブリッジコントローラ1428を介してこの制御信号を受信すると、SSU制御モジュール1434は、以降の特徴ベクトルのためのシノンスコア算出において現在の特徴ベクトルからの同一のアクティブなシノンのリストを用いる。特に、図15の制御ユニット1520は、入力バッファ1510に記憶された同一のベースアドレス及びベースアドレスに関係付けたインデックスのリストを、以降の特徴ベクトルに適用する。図15の制御ユニット1520は、アクティブなシノンのリストの例について上述したものと同様に、以降の特徴ベクトルについて、メモリデバイス1426から距離算出部1436へのガウス確率分布の転送プロセスを監視する。
[0106] 別の実施形態において、メモリモジュール1420は、「全スコア」動作を示す制御信号を、I/O信号1410を介して受信することができる。上述のように、「全スコア」機能は、メモリデバイス1426に記憶された音響ライブラリに含まれる全てのシノンを特徴ベクトルと比較する動作を指す。一実施形態において、図15の制御ユニット1520は、図14のメモリコントローラ1424と通信を行って、メモリデバイス1426内の第1のシノンにアクセスする。第1のシノンは例えば、メモリデバイス1426のアドレス空間に関連付けられた開始メモリアドレスに位置することができる。上述のアクティブなシノンのリストの例と同様に、本発明の一実施形態によれば、メモリアドレス1426内の第1のシノンは、そのシノンに関連付けられた最初の2つのガウス確率分布のメモリアドレス情報を含むことができる。次いでメモリデバイス1426は、第1のシノンに関連付けられた2つのガウス確率分布に、例えば逐次的にアクセスする。
[0107] 一実施形態においては、上述のアクティブなシノンのリストの例と同様に、第2のガウス確率分布は、メモリデバイス1426によってアクセスされる第3のガウス確率分布に関するメモリアドレス情報を含むことができる。メモリデバイス1426は、このメモリアドレス情報を、図14のブリッジコントローラ1428を介して図15の制御ユニット1520に伝達することができる。次いで制御ユニット1520は、図14のメモリコントローラ1424と通信を行って第3のガウス確率分布にアクセスする。一実施形態において、第3のガウス確率分布がメモリデバイス1426によってアクセスされている間に、第2のガウス確率分布を、データバス1427を介して距離算出部1436に出力することができる。現在のガウス確率分布を出力する間に以降のガウス確率分布にアクセスするこの繰り返しの重複処理を、シノンに関連付けられた全てのガウス確率分布について(例えばシノンに関連付けられた32のガウス確率分布の全てについて)実行する。
[0108] 本発明の一実施形態に従って、図15の制御ユニット1520は、メモリデバイス1426から距離算出部1436へのガウス確率分布の転送プロセスを監視して、メモリアクセス及び転送プロセスがパイプラインで行われるようにする。第1のシノンに関連付けられた32のガウス確率分布が図14の距離算出部1436に出力された後、制御ユニット1520は音響ライブラリ内の1つ以上の残りのシノンについて上述の処理を反復する。
[0109] 図14を参照すると、APU1400において話者適応のために特徴ベクトル行列モジュール1435が用いられる。一実施形態において、特徴ベクトル行列モジュール1435は、CPUからI/O信号1410を介して特徴ベクトル変換行列(FVTM)を受信する。FVTMは、例えば発声当たり1回等、定期的に特徴ベクトル行列モジュール1435にロードすることができる。一実施形態において、FVTMは、特徴ベクトル行列モジュール1435内に位置するスタティックランダムアクセスメモリ(SRAM)デバイスに記憶することができる。
[0110] 本発明の一実施形態によれば、メモリデバイス1426内の各シノンについて記憶された平均値及び分散値と共に、各シノンについてインデックスを記憶することができる。このインデックスはFVTM内の行を指し示す。FVTM内の行数は様々である場合があり(例えば10、50、又は100行)、APU1400を実施する音声認識システムに特定的とすることができる。FVTM内の各行は、特徴ベクトルの次元数N(例えば39)と等しい数のエントリを有することができる。本発明の一実施形態によれば、各エントリは、新しい特徴ベクトルを生成するためにその対応する特徴ベクトル次元と乗算される倍率である。FVTMからの選択された行(例えば39倍率の行)は、データバス1439を介して距離算出部1436に転送され、距離算出部1436は乗算動作を実行して新しい特徴ベクトルを発生する。これについては以下で詳述する。
[0111] 一実施形態において、SSU制御モジュール1434は、CPUから受信した特徴ベクトル及びシノンに関連付けられたインデックスを特徴ベクトル行列モジュール1435に提供する。インデックスは、特徴ベクトルをスケーリングするためのFVTM内の特定の行を示す。例えば、FVTMは100行を有し、インデックスは10に等しくすることができる。ここで、39次元を有する特徴ベクトルでは、FVTMの10番目の行が39の倍率を含み、この倍率の行を距離算出部1436に転送して新しい特徴ベクトルを発生する。
[0112] 図14を参照すると、距離算出部1436は、メモリデバイス1426に記憶されたシノンの1つ以上の次元と特徴ベクトルの対応する1つ以上の次元との間の距離を算出するように構成されている。図16は距離算出部1436の一実施形態の例示である。距離算出部1436は、データパスマルチプレクサ(MUX)1610、特徴ベクトルバッファ1620、演算論理ユニット(ALU)1630〜1630、及びアキュムレータ1640を含む。
[0113] データパスMUX1610は、図14のメモリデバイス1426からデータバス1427を介してガウス確率分布を受信するように構成されている。一実施形態において、データバス1427の幅は1つのガウス確率分布に関連付けられたビット数に等しい。例えば、1つのガウス確率分布が768ビットである場合、データバス1427の幅も768ビットである。複数のガウス確率分布次元について、ガウス確率分布に関連付けられた768ビットを、ガウス確率分布次元当たり16ビット平均値、16ビット分散値、及び他の属性に割り当てることができる。上述のように、ガウス確率分布は、例えば39次元等の特徴ベクトルと同一の次元数を有することができる。別の実施形態では、データバス1427の幅は256ビットよりも大きくすることができる。
[0114] 更に、一実施形態において、メモリデバイス1426及び距離算出部1436を同一のチップ上に集積することができ、この場合データバス1427はこのチップ上に集積された(上述の幅の)幅広いバスであり、メモリデバイス1426から距離算出部1436へのガウス確率分布のデータ転送を提供する。別の実施形態では、メモリデバイス1426及び距離算出部1436を2つの別個のチップ上に集積することができ、この場合データバス1427をこれら2つのチップ間に緊密に接続された(上述の幅の)幅広いデータバスとすることで、ノイズ及び相互接続寄生効果によるデータの劣化を最小限に抑える。以下で論じるように、(上述の幅の)幅広いデータバス1427の利点は、とりわけ、シノンスコアの算出においてAPU1400の性能を向上させることである。
[0115] また、データパスMUX1610は、SSU制御モジュール1434からデータバス1437を介して1つ以上の制御信号及び特徴ベクトルを、更に特徴ベクトルバッファ1620から特徴ベクトル倍率を受信するように構成されている。一実施形態において、特徴ベクトルバッファ1620は、特徴ベクトル行列モジュール1435からデータバス1439を介して転送された(FVTMの選択された行に関連付けられた)倍率を記憶するように構成することができる。別の実施形態では、特徴ベクトルバッファ1620はFVTMを記憶するように構成することができる。ここで、SSU制御モジュール1434からデータバス1437を介して受信された1つ以上の制御信号は、FVTMの行を選択するために用いることができる。データパスMUX1610は、特徴ベクトル、FVTMから選択された特徴ベクトル倍率、及びガウス確率分布情報を、更に処理するためにデータバス1612を介してALU1630〜1630に出力する。
[0116] 一実施形態において、データパスMUX1610は、SSU制御モジュール1434からデータバス1437を介して1つ以上の制御信号からのガウス重み付け係数も受信するように構成されている。データパスMUX1610は、ガウス重み付け係数を更に処理するためにアキュムレータ1640に出力するように構成されている。
[0117] 図16を参照すると、本発明の一実施形態に従って、ALU1630〜1630の各々は、SSUクロックサイクル当たりの、データパスMUX1610から受信したガウス確率分布の次元と特徴ベクトルの対応する次元との間の距離スコアを算出するように構成されている。一実施形態において、ALU1630〜1630は、SSUクロック周波数(例えばメモリモジュールクロック周波数よりも5倍高速)で動作して、(例えばガウス確率分布を距離算出部1436に転送するための)図14のメモリデバイス1426からの読み取り動作ごとに、ガウス確率分布に関連付けられた距離スコア(本明細書では「ガウス距離スコア」とも称する)を、距離算出部1436から加算モジュール1438に出力することができる。
[0118] 一実施形態において、データパスMUX1610は、一次元に関連付けた特徴ベクトル情報、ガウス確率分布の対応する次元に関連付けた平均値、ガウス確率の対応する次元に関連付けた分散値、及び特徴ベクトル倍率を、ALU1630〜1630の各々に配信するように構成されている。各ALUに割り当てた特徴ベクトル情報及び特徴ベクトル倍率に基づいて、ALU1630〜1630の各々は、特徴ベクトルの次元に各倍率を乗算することで新しい特徴ベクトルを発生させるように構成されている。
[0119] 一実施形態において、特徴ベクトル次元と対応する倍率との乗算は「その場で(on-the-fly)」実行される。これが意味するのは、乗算動作が距離スコア算出中に実行されるということである。これは、乗算動作がFVTMの各行について実行されて、乗算動作の結果が後にALU1630〜1630によりアクセスされるメモリに記憶されるのとは対照的である。「その場の」乗算動作の利点は、とりわけ、FVTMのインデックスなしの(又は選択されていない)行に関連付けられた乗算動作の結果にはメモリ記憶が必要ないことである。これによって、インデックスなしの行に関連付けられた特徴ベクトルスケーリング結果をメモリに記憶するために追加のクロックサイクルが必要でないので新しい特徴ベクトルの発生が高速化すると共に、ALU1630〜1630のためのダイサイズ領域が小さくなる。
[0120] 各ALUについて、新しい特徴ベクトル、平均値、及び分散値に基づいて、ALU1630〜1630の各々は、本発明の一実施形態に従って、SSUクロックサイクル当たりの特徴ベクトル次元及び対応するガウス確率分布次元に基づいた距離スコアを算出するように構成されている。累積的に、1クロックサイクルにおいて、ALU1630〜1630は8次元についての距離スコアを発生する(すなわちALU当たり1次元の算出)。ALUのアーキテクチャ及び動作については以下で詳述する。
[0121] 本発明の一実施形態によれば、距離算出部1436におけるALUの数は上述のSSUクロック周波数及びメモリモジュールクロック周波数に依存し、メモリデバイス1426に対する読み取りアクセスごとに距離算出部1436が1つのガウス確率分布についての距離スコアを出力することを可能とする。例えば、メモリモジュールクロック周波数は12MHzの動作周波数を有することができ、この場合メモリデバイス1426も12MHzで動作する(例えば約83nsの読み取りアクセスについて)。SSU1430は、例えば60MHzのSSUクロック周波数を有し、メモリモジュールクロック周波数よりも5倍高速で動作することができる。39次元の特徴ベクトル及び8個のALUによって、5SSUクロックサイクル又は1メモリモジュールクロックサイクルで1つのガウス確率分布についてのガウス距離スコアを算出することができる。従って、意図的に、5SSUクロックサイクルは1メモリモジュールクロックサイクルに相当する所定数のクロックサイクルであり、この場合、1つのガウス確率分布がメモリデバイスから1メモリモジュールクロックサイクルで読み取られる際に、別のガウス確率分布についてのガウス距離スコアがアキュムレータ1640によって算出される。
[0122] 一実施形態において、ALU1630〜1630の一部はSSUクロックサイクルの立ち上がりで活性化することができ、ALU1630〜1630の残り部分はSSUクロックサイクルの立ち下がりで活性化することができる。例えば、ALU1630〜1630をSSUクロックサイクルの立ち上がりで活性化することができ、ALU1630〜1630をSSUクロックサイクルの立ち下がりで活性化することができる。ALU1630〜1630の活性化をずらすことの結果として、距離算出部1436によって発生するピーク電流(及びピーク電力)を最小限とすることができ、このため距離算出部1436において信頼性の問題が生じる可能性を抑えることができる。
[0123] 本明細書における記載に基づいて、距離算出部1436のアーキテクチャが上述の例に限定されないことは当業者には認められよう。当業者によって理解されるように、距離算出部1436は60MHzよりも高いか又は低いクロック周波数で動作することができ、更に距離算出部1436は8個よりも多いか又は少ないALUを含むことができる。
[0124] 図16を参照すると、アキュムレータ1640は、ALU1630〜1630の各々からの出力及び(データバス1614を介して)データパスMUX1610からのガウス重み付け係数を受信するように構成されている。上述のように一実施形態においては、SSUクロックサイクルごとに、ALU1630〜1630の各々によって、ガウス確率分布次元についての距離スコアが出力される。ALU1630〜1630の各々からのこれらの距離スコアは、アキュムレータ1640によって記憶され蓄積されて、ガウス確率分布次元についての距離スコアすなわちガウス距離スコアを発生する。例えばアキュムレータ1640は、SSUクロックサイクル当たりのALU1630〜1630が算出した各距離スコアを加算する。
[0125] アキュムレータ1640においてガウス確率分布次元の全て(例えば39次元)に関連付けられたガウス距離スコアを蓄積した後、アキュムレータ1640はこの合計をガウス重み付け係数と乗算して重み付けしたガウス距離スコアを発生する。一実施形態において、ガウス重み付け係数は任意選択的であり、この場合アキュムレータ1640はガウス距離スコアを出力する。別の実施形態では、ガウス重み付け係数は各ガウス分布に特定的であり、メモリデバイス1426に記憶されている。
[0126] 加算モジュール1438は、1つ以上のガウス距離スコア(又は重み付けしたガウス距離スコア)を加算してシノンスコアを発生するように構成されている。上述のように、各シノンは1つ以上のガウス確率分布から成ることができ、各ガウス確率分布はガウス距離スコアに関連付けることができる。複数のガウス確率分布(例えば32のガウス確率分布)を有するシノンでは、加算モジュール1438は、ガウス確率分布の全てに関連付けられたガウス距離スコアを合計してシノンスコアを発生する。一実施形態において、加算モジュール1438は、対数領域において合計動作を実行してシノンスコアを発生するように構成されている。
[0127] 出力バッファ1432は、加算モジュール1438からのシノンスコアを受信してこのシノンスコアをブリッジコントローラ1428に転送するように構成されている。次いでブリッジコントローラ1428はシノンスコアを、バスコントローラ1422を介して外部のCPUに転送する。一実施形態において、出力バッファ1432は複数のメモリバッファを含むことができ、第1のメモリバッファ内の第1のシノンスコアをブリッジコントローラ1428に転送している間に、加算モジュール1438が発生した第2のシノンスコアを、後でブリッジコントローラ1428に転送するために第2のメモリバッファに転送することができる。
[0128] 図17は、音響モデリングのための方法1700の一実施形態の例示である。方法1700のステップは、例えば図14のAPU1400を用いて実行することができる。
[0129] ステップ1710において、少なくとも1つのガウス確率分布の幅を有するデータバスを介して複数のガウス確率分布を受信し、外部コンピューティングデバイスから特徴ベクトルを受信する。ガウス確率分布は、例えば768ビットから成ることができ、この場合データバスの幅は少なくとも768ビットである。更に、図14のAPU1400は、外部コンピューティングデバイス(例えば図14のI/O信号1410を介してAPU1400と通信状態にあるCPU)から特徴ベクトルを受信することができる。
[0130] 一実施形態においては、特徴ベクトルの複数の次元に関連付けられた情報、少なくとも1つのガウス確率分布の対応する複数の次元に関連付けられた複数の平均値、及び少なくとも1つのガウス確率分布の対応する複数の次元に関連付けられた複数の分散値を、例えば演算論理ユニット(例えば図16のALU1630〜1630)に配信する。
[0131] ステップ1720において、特徴ベクトルの複数の次元及び少なくとも1つのガウス確率分布の対応する複数の次元に基づいて、複数の次元距離スコアを算出する。一実施形態において、距離スコアの算出は、アクティブなシノンのリストからの少なくとも1つのシノンに基づいている。アクティブなシノンのリストは、メモリデバイスのアドレス空間に関連付けられたベースアドレス及びメモリデバイス内で少なくとも1つのシノンが位置するベースアドレスに関係付けた1つ以上のインデックスを含むことができる。更に、特徴ベクトルの複数の次元についての複数の倍率を記憶する。複数の倍率は、複数の次元距離スコアの算出中に特徴ベクトルの複数の次元に適用される。ステップ1720は、例えば図14の距離算出部1436によって実行することができる。
[0132] ステップ1730において、複数の次元距離スコアを合計して、少なくとも1つのガウス確率分布についてのガウス距離スコアを発生する。一実施形態において、ガウス距離スコアは、所定数のシノンスコアリングユニット(SSU)クロックサイクルにわたって発生される。所定数のSSUクロックサイクルは、メモリデバイスからの少なくとも1つのガウス確率分布の読み取りアクセス時間に等しくすることができる。ステップ1730は、例えば図14の距離算出部1436によって実行することができる。
[0133] ステップ1740において、複数のガウス確率分布に対応する複数のガウス距離スコアを合計してシノンスコアを発生する。ステップ1740は、例えば図14の距離算出部1436によって実行することができる。
[0134] 本発明の実施形態は、図3の従来の音声認識システム200に関して上述した問題に対処しこれらを解決する。まとめると、音響モデリングプロセスは、例えば図14のAPU1400によって実行される。APUはCPUと連動して動作し、この場合、APUはCPUから1つ以上の特徴ベクトル(例えば図3の特徴ベクトル315)を受信し、1つ以上のガウス確率分布に基づいてシノンスコア(例えば図3のシノンスコア325)を算出し、このシノンスコアをCPUに出力することができる。一実施形態において、1つ以上のガウス確率分布はAPUに記憶することができる。あるいは、別の実施形態では、1つ以上のガウス確率分布はAPUの外部に記憶することができ、この場合APUは外部メモリデバイスから1つ以上のガウス確率分布を受信する。上述のAPUアーキテクチャの実施形態に基づいて、シノンスコアの算出の高速化が達成される。
[0135] 5.演算論理ユニットアーキテクチャ
図18は、本発明の一実施形態に従ったAPU1800のブロック図である。一実施形態では、図18のアーキテクチャに従ってALU1630〜1630の1つ以上を実施可能である。ALU1800は、特徴ベクトルとガウス確率分布ベクトルとの間の一次元距離スコアを計算するように構成されている。例えばALU1800は、以下のように一次元距離スコアを計算するように構成することができる。
ここで、
Δij=x−μijであり、
varijは、j番目のガウス確率分布ベクトルのi次元の分散値であり、
及びMは倍率であり、
Cは定数であり、
はi次元における特徴ベクトルの値であり、
μijは、j番目のガウス確率分布ベクトルのi次元の平均値である。
[0136] 従って、一実施形態において、所与の次元及び所与のガウス確率分布について、ALU1800が出力する一次元距離スコアは、3つの変数すなわちx、μij、及びvarijに依存する。ソフトウェアにおいてこの等式を実施するための1つの技法は、これらの3つの変数でインデックスを付けたルックアップテーブル(LUT)を発生することである。更に、スコアはx及びμijの値に特定的に依存せずにそれらの値の差すなわちΔijに依存するので、このLUTを更に簡略化して、Δij及びvarijによりインデックスを付けた2次元LUTとすることができる。このように、2次元LUTを用いてALU1630〜1630を実施することができる。
[0137] しかしながら、2次元LUTは、図16のハードウェア実施においてALU1630〜1630を実施するために用いられると大きな欠点を有する場合がある。特に、例えば8個のALU1630〜1630があり、各々が一次元距離スコアを算出するので、この2次元LUTの8個のコピーが存在しなければならない。一実施形態において、かかる2次元LUTは約32Kバイトであるが、他の実施形態及び用途ではもっと大きいLUTが必要となり得る。このように、かかる実施形態では、32KバイトLUTの8個のコピーが必要となる。このように実施された場合、SSUのための全基板空間のうち大部分が8個の2次元LUTに対してのみ割り当てられることになる。この問題は、もっと大きいLUTが必要であるか又は望ましい場合には更に悪化する。
[0138] 一実施形態において、ALU1800は、計算論理及び一次元LUTの組み合わせを用いたスコアリング機能を実施することによって、2次元LUTのこの欠点を克服する。重要なことに、等式(1)は2つの部分に分割可能である。すなわち、aluij部分及びLUTij部分であり、各々は以下のように特定される。
[0139] 従って、ALU1800はaluijを計算し、この計算と並行してLUTijを検索する。次いでaluij及びLUTijを組み合わせて距離スコアを形成する。具体的には、図18に示すように、ALU1800は計算論理ユニット1802及びLUTモジュール1804を含む。以下で詳述するように、計算論理ユニット1802は値aluijを計算することができ、LUTモジュール1804は値LUTijを検索するために用いることができる。更に、ALU1800は組み合わせモジュール1806も含む。組み合わせモジュール1806は、計算ユニット1802及びLUTモジュール1804の出力を組み合わせ、距離スコアを出力する。
[0140] 計算論理ユニット1802及びLUTモジュール1804は、それぞれの値を求めるために必要な入力を受信するだけである。具体的には、上述のように、aluijは3つの変数すなわちx、μij、及びvarijに依存する。このため図18に示すように、計算論理ユニット1802はこれらの3つの値を入力として受信する。更に、LUTモジュール1804から検索される値は、値varijのみを用いてインデックスを付ける。従って、図18に示すように、LUTモジュール1804は値varijを受信するだけである。
[0141] 図19は、本発明の一実施形態に従ったALU1800の詳細ブロック図を示す。図19の実施形態において、計算論理ユニット1802は、減算モジュール1910、二乗モジュール1912、LUT1914、マルチプレクサ1916、及びフォーマッティングモジュール1918を含む。減算モジュール1910は、xとμijとの間の差を計算する。すなわち、減算モジュール1910はΔijを計算する。二乗モジュール1912は、減算モジュール1910が出力した差を二乗して、Δ ijを表す整数を発生する。
[0142] 一実施形態において、LUT1914は、
に相当する値を出力する。マルチプレクサ1916は、2つの項、すなわち(1)LUT1914から検索された値、及び(2)二乗モジュール1912が出力した二乗の積を算出する。従って、マルチプレクサ1916の出力は、
である。この積の値はフォーマッティングモジュール1918により受信され、これはこの結果をUTモジュール1804の出力と効果的に組み合わせることができるようにフォーマットする。
[0143] 図19に示すように、LUTモジュール1804はLUT1920及びフォーマッティングモジュール1922を含む。LUT1920は、等式(3)で表されるようなLUTijに相当する値を記憶し、varijを用いてインデックスを付ける。LUT1920から検索された値はフォーマッティングモジュール1922によって受信される。フォーマッティングモジュール1922は、LUT1920の出力を計算論理ユニット1802の出力と効果的に組み合わせることができるようにフォーマットする。
[0144] 計算ユニット1802及びLUTモジュール1804からの出力は、組み合わせモジュール1806において受信される。組み合わせモジュール1806は、加算器1930、シフトモジュール1932、丸めモジュール1934、及び飽和モジュール1936を含む。加算器1930は、2つの受信した値の和を計算してこの和を出力する。シフトモジュール1932は、加算器1930が出力した和の小数部を除去するように構成されている。丸めモジュール1934は、シフトモジュール1934の出力の端数を切り捨てるように構成されている。飽和モジュール1936は、端数を切り捨てた和を受信してこの値を特定のビット数に飽和させるように構成されている。このため、飽和モジュール1936の出力は、一次元距離スコアを表す特定のビット数を有する値である。
[0145] 図20は、本発明の別の実施形態に従った計算ユニット1802のブロック図である。図20に示す実施形態は図19の実施形態と同様であるが、図20の実施形態は更に変換モジュール2002、例外処理モジュール2012、フォーマッティングモジュール2014、及びマルチプレクサ2018を含む点が異なる。
[0146] 変換モジュール2002は、マルチプレクサ2020、スケールビットモジュール2022、及び飽和モジュール2024を含む。上述のように、特徴ベクトルの値は、特徴ベクトル変換行列の各エントリによって、例えば話者の学習された特徴を考慮するために変換することができる。一実施形態において、変換モジュール2002は、個々の特徴ベクトルの値xを対応する変換値αによってスケーリングするように構成することができる。具体的には、マルチプレクサ2020は、特徴ベクトルの値x及び対応する変換値αの積を計算し、スケールビットモジュール2022に値を出力する。スケールビットモジュール2022は、右にシフトし、この結果得られた整数を飽和モジュール2024に出力する。飽和モジュール2024は、図19を参照して説明した飽和モジュール1936と同様であり、受信した値を特定のビット数に飽和させる。このため、飽和モジュール2024の出力は、スケーリングした特徴ベクトル値を表す値である。
[0147] 例外処理モジュール2012及びマルチプレクサ2018は、LUT1914に存在する特定のエラーに対応するように構成されている。例えば、空間を節約するための取り組みとしてLUT1914のサイズを縮小することができる。サイズ縮小によって、LTU1914の特定の値がエラーを有する場合がある。かかる実施形態では、例外処理モジュール2012は、LUT1914の出力がそれらの値の1つであるか否かを認識し、正しい値を出力することができる。換言すると、例外処理モジュール2012は、サイズ制限のためにエラーを有することがあるLUT1914の各エントリについてのエントリを含むLUTとして機能することができる。LUT1914はvarijに基づいてインデックスを付けるので、例外処理モジュール2012は、LUT1914の出力をvarijの値に基づいて補正する必要があるか否かを認識することができる。
[0148] 更に別の実施形態では、例外処理モジュール2012は、Δijも受信する2次元LUTとして機能することができる。かかる実施形態では、例外処理モジュール2012は、(例えばLUT1914からの対応するエントリとは対照的に)aluijの特定の値を出力することができる。LUT1914におけるこれらの起こり得るエラーの数は比較的少ないので、例外処理モジュール2012は、他のもっと大きい2次元LUTのように大きな空間量を占めることはない。更に、符号ビットモジュール1918の出力でなく例外処理モジュール2012の出力を出力するようにマルチプレクサ2018を制御することで、例外処理モジュール2012は、LUT1914の誤った出力を用いて算出したaluijの値でなく記憶されたaluijの値を最終的に組み合わせモジュール1806に出力することを保証する。
[0149] フォーマッティングモジュール2014は、マルチプレクサ1916が計算した積を受信する。一実施形態において、フォーマッティングモジュール2014は、この結果におけるビット数を削減するように構成されている。必須ではないが、この動作は、出力におけるビット数を削減することによって空間及び電力を節約することができる。
[0150] 更に、図20の実施形態は、減算モジュール1810がマルチプレクサ2004及び2006、比較モジュール2008、及び減算器2010を含むものとして示す。一実施形態において、二乗モジュール1912は、明らかに正の値を二乗するように構成することも可能である。このため、かかる実施形態における減算モジュール1910の出力は正でなければならない。この結果を達成するため、2つのオペランド、すなわち特徴ベクトルの値(任意選択的に変換値αでスケーリングされる)及び平均値μijを、比較モジュール2008によって比較することができる。次いで比較モジュール2008は、制御信号をマルチプレクサ2004及び2006に出力して、減算器2010に対する第1のオペランドが少なくとも第2のオペランドと同じ大きさであることを保証する。
[0151] 図21は、1次元距離スコアを計算するための方法2100の一実施形態の例示である。方法2100のステップは、例えば図18に示すALU1800を用いて実行可能である。ステップ2102において、特徴ベクトル次元を変換値によってスケーリングする。ステップ2104において、特徴ベクトル値並びにガウス確率分布ベクトルに関連付けられた平均値及び分散値に基づいて、第1の値を計算する。ステップ2106において、分散値に基づいて第2の値を検索する。例えば図19において、LUTモジュール1804を用いて分散値を検索することができる。ステップ2108において、第1及び第2の値を組み合わせて1次元スコアを発生する。
[0152] 6.音響処理ユニットインタフェース
A.システムの概要
図22は、本発明の一実施形態に従った音響処理システム2200のブロック図である。音響処理システムは、中央処理装置(CPU)2210及び音響処理ユニット(APU)2220を含む。CPU2210上で実行しているのは、アプリケーション2212、音声認識エンジン2214、及びAPI2216である。音声認識エンジン2214は、少なくとも2つのスレッドすなわちサーチスレッド2250及び距離スレッド2260を含むプロセスである。
[0153] APU2220は、音響モデルメモリ2222、第1のバス2224、メモリバッファ2226、第2のバス2228、及びシノンスコアリングユニット2230を含む。音響モデルメモリ2222は、複数のシノンを記憶するように構成することができ、これらは共に1つ以上の音響モデルを形成する。第1のバス2224は、音響モデルメモリがガウス確率分布ベクトル全体をメモリバッファ2226に出力することを可能とするように構成された幅広のバスである。シノンスコアリングユニット2230は、CPU2210から受信した特徴ベクトルに対してシノンスコアを生成する。シノンスコアリングユニット2230は、上述のように実施することができる。例えば、シノンスコアリングユニットは図15に示したように実施することができる。シノンスコアリングユニット2230についての更に詳しい情報は先の第4節を参照のこと。
[0154] メモリバッファ2226は、シノンスコアリングユニット2230がガウス確率分布ベクトルについてのガウス距離スコアを計算する準備が整うまでガウス確率分布ベクトルを保持することができる。すなわち、シノンスコアリングユニット2230が、ガウス確率分布ベクトルqに対してCPU2210から受信した特徴ベクトルのスコアを生成している場合、メモリバッファ2226は、スコアを生成する次のガウス確率分布ベクトルすなわちベクトルq+1を保持することができる。
[0155] 図22に示すように、APU2220に対する入力は、特定のシノンに対する参照(シノン#)及び特徴ベクトルを含む。シノン#入力は、音響モデルメモリ内でのその特定のシノンに対応する記憶されたベクトル情報をアドレス指定する。APU2220の出力はシノンスコアであり、これは、参照されたシノンが所与の時間フレームにおいて特徴ベクトルを発する確率を表す。一実施形態において、音響モデルメモリ2222は、並列読み取りアーキテクチャ及び極めて大きい内部帯域幅バス2224を利用する。並列に読み取るビット数は256よりも大きい(例えば768ビット幅であり、これは一度にガウス確率分布ベクトル全体をロードするのに充分である)。次いで、極めて大きい帯域幅バス2224を用いて、音響モデルメモリ2222から読み取った値をメモリバッファ2226にラッチする。メモリバッファ2226からの出力及び観察ベクトル情報は双方ともシノンスコアリングユニット2230に入力され、これがシノンスコアを計算するために必要な乗算及び加算を実行する。メモリバッファ2226がシノンスコアリングユニット2230と通信を行うバス2228は、バス2224と実質的に同様である。
[0156] 上述のように、シノンスコアの計算は、次元NのJ個のガウス確率分布ベクトルのスコアを計算し、次いでそれらを合計して合計スコアを得ることによって行われる。しかしながら、いくつかのスコアリングアルゴリズムでは、計算において最も大きいガウス確率分布ベクトルのみを用いることで計算速度を上げる。ガウス確率分布ベクトルの部分的なセットに基づいたアルゴリズムを用いる場合、音響モデルメモリからシノンスコアリングユニット2230に転送しなければならないのは、必要なガウス確率分布ベクトルに関連付けられたビットのみである。換言すると、シノンスコアリングユニット2230が常に必要とするメモリ内の連続ビットの最大数は、単一のガウス確率分布ベクトルのスコアを生成するために用いられるビット数に等しい。メモリバスの帯域幅要件及び並列に読み取る必要があるビット数は、各転送において単一のガウス確率分布ベクトルを含むビットのみを転送することによって最小限に抑えられる。転送当たりこのビット数を用いることで、APU2220の電力要件を低減することができ、シノンスコアリングユニット2230に対する必要なデータの転送レートを向上させ、この結果、システム性能全体が改善する。換言すると、転送当たりのビット数を削減することで、APU2220の電力要件を低減することができ、シノンスコアリングユニット2230に対する必要なデータの転送レートを向上させることができ、この結果、システム性能全体が改善する。
[0157] 上述のように、音響モデリングは、多くのタイプの音声認識システム(すなわちキーボード認識又は大きな語彙の連続音声認識)において大きなボトルネックの1つである。多数回の比較及び計算のため、高性能及び/又は並列マイクロプロセッサが一般的に用いられ、音響モデルを記憶するメモリとプロセッサとの間に高帯域バスが必要とされる。図22の実施形態において、音響モデルメモリ2222はAPU2220に組み込むことができ、シノンスコアリングユニット2230と共に単一のダイに一体化され、これらは双方とも幅広い高帯域内部バス2224及び2228を用いて接続されてデータ転送レートを向上させる。しかしながら、転送当たりのビット数の増大はデータ転送レートを向上させるものの、常にシステム全体の性能を改善するわけではない。
[0158] また、転送当たりのビット数は、音響モデリングに用いられるアルゴリズムの関数とすることができる。ガウスベクトルの部分的なセットに基づいたスコアリングアルゴリズムを用いる(すなわちガウスベクトル選択)場合、転送当たりのビット数は、このアルゴリズムによって用いられるガウスベクトルのサイズと等しくすることができる。転送当たりのビット数が減ると、ガウスベクトルを含むデータを転送するために多数のサイクルが必要となるが、転送当たりのビット数が増えると、データの非局在性のために非効率となる。
[0159] 一実施形態において、用いるスコアリングアルゴリズムが少なくとも部分的にガウスベクトルの部分的なセットに基づいている(すなわちガウスベクトル選択)場合、音響モデリングハードウェアアクセレレータのためのアーキテクチャが用いられる。この最適化アーキテクチャの結果として、他のアーキテクチャに比べてシステム性能全体が著しく改善される。
[0160] 図23は、本発明の一実施形態に従った音響処理システム2300のブロック図である。音響処理システム2300は、プロセッサ2310、専用DRAMモジュール2302、DRAMモジュール2304、及び不揮発性メモリモジュール2306を含む。不揮発性メモリモジュール2306は、例えば埋め込みフラッシュメモリブロックとして実施可能である。プロセッサ2310は、CPU2312、ハードウェアアクセレレータ2314、及びメモリインタフェース2316を含む。ハードウェアアクセレレータ2314はシノンスコアリングユニット2330を含む。シノンスコアリングユニット2330は上述のように実施することができる。例えば、シノンスコアリングユニットは図15に示すように実施することができる。
[0161] 一実施形態において、専用DRAMモジュール2302は、例えばシノンを記憶するためのシノンスコアリングユニット2320に専用である。このため、メモリインタフェース2316は、シノンスコアリングユニット2320を専用DRAM2302に接続することができる。
[0162] 図24は、本発明の一実施形態に従ったハードウェアアクセレレータ2400のブロック図である。ハードウェアアクセレレータ2400は、プロセッサ2402及び専用DRAMモジュール2404を含む。プロセッサ2402は、シリアルペリフェラルインタフェース(SPI)バスインタフェースモジュール2412、シノンスコアリングユニット2414、及びメモリインタフェース2416を含む。シノンスコアリングユニット2414は上述のように(例えば図15に示すように)実施することができる。図24に示すように、専用DRAMモジュール2404は1つ以上の音響モデルを記憶する。これに対して、代替的な実施形態では、DRAMモジュール2404は、例えばフラッシュメモリモジュールのような不揮発性メモリモジュールとすることができる。更に別の実施形態では、DRAMモジュール2404は、揮発性メモリモジュール(例えばDRAM)及び不揮発性メモリモジュール(例えばフラッシュ)を含むメモリモジュールとすることができる。かかる実施形態では、音響モデルは最初に不揮発性メモリモジュールに記憶し、シノンスコアリングのために揮発性メモリモジュールにコピーすることができる。
[0163] SPIインタフェースモジュール2412は、SPIバスに対するインタフェースを提供することができ、このSPIバスはハードウェアアクセレレータ2400をCPUに接続することができる。メモリインタフェース2415は、シノンスコアリングユニット2414を専用DRAMモジュール2404に接続する。一実施形態において、音声認識システムはクラウドベースのソリューションで実施可能であり、この場合、音声認識のために必要なシノンスコアリング及び処理はクラウドベースの音声認識アプリケーションで実行される。
[0164] B.ソフトウェアスタック
図25は、本発明の一実施形態に従ったAPUソフトウェアスタック2500を示すブロック図である。ソフトウェアスタック2500は、例えば図22を参照して説明した音響処理システム2200のような音響処理システムのコンポーネント間の通信を概念的に説明するために用いることができる。スタック2500は、アプリケーション2502、音声認識エンジン2504、アプリケーションプログラミングインタフェース(API)2550、SPIバスコントローラ2512、SPIバス2514、及びAPU2516を含む。API2550は、汎用DCA2506、ローレベルドライバ(LLD)2508、及びハードウェア抽象レイヤ(HAL)2510を含む。一実施形態において、アプリケーション2502、音声認識エンジン2504、API2550、及びAPU2516は、それぞれ図22のアプリケーション2212、音声認識エンジン2214、API2216、及びAPU2220に対応することができる。
[0165] ソフトウェアスタック2500において、アプリケーション2502は音声認識エンジン2504と通信を行い、音声認識エンジン2504は汎用DCA2506と通信を行う。一実施形態において、音声認識エンジン2504はDCA APIを介して汎用DCA2506に接続されている。汎用DCA2506はLLD APIを介してLLD2508に接続することができる。LLD2508はHAL APIを介してHAL2510に接続することができる。HAL2510はSPIバスコントローラ2512に通信可能に接続され、SPIバスコントローラ2512はSPIバス2514に通信可能に接続されている。APU2516は、SPIバス2514に通信可能に接続され、バスコントローラ2512及びSPIバス2514を介してHAL2510に通信可能に接続されている。
[0166] 一実施形態において、ソフトウェアスタック2500は、APU2516とアプリケーション2502(例えば音声認識を採用するアプリケーション)との間のソフトウェアインタフェースを提供する。特に、アプリケーション2502及び音声認識エンジン2504は「ハードウェア非依存型(hardware-agnostic)」である。すなわち、アプリケーション2502及び音声認識エンジン2504は、距離又はシノンのスコアリングが実行されているか否かについての詳細な知識なしで各動作を完了することができる。
[0167] 汎用DCA2506、LLDレイヤ2508、及びHALレイヤ2510は、ハードウェアに特定的なAPI呼び出しを含む。一実施形態において、HAL2510のAPI呼び出しは、これが接続されているコントローラのタイプに依存する。一実施形態において、APU2516のためのバスインタフェースは、異なるバス及びコントローラの組み合わせで、異なるHAL(異なるAPI呼び出しを用いる)を必要とする場合がある。
[0168] 汎用DCA2506は距離計算APIである。DCAはソフトウェア開発者によって定義することができる。一実施形態において、DCA APIは、音声認識エンジン2504等の音声認識エンジンをサポートするために明確に定義される。また、汎用DCA2506はAPU2516に対して専用に実施することができる。更に、LLD2508は、シノンスコアリングユニットコアンドの関数抽象とすることができ、シノンスコアリングユニットコマンドに対する1対1のマッピングとすることができる。図25に示すように、ローレベルドライバ2508はHAL2510に接続されている。
[0169] DCA APIは、以下の5つの関数を含むことができる。すなわち、生成、閉鎖、特徴設定、距離スコアの計算、及びスコア供給である。一実施形態において、生成関数は、どの音響モデルを用いるかを指定する。メモリには1つ以上の音響モデルが記憶されている場合がある(例えば各言語について1つ以上の音響モデル)。例えば図22を参照して上述したように、APUの専用の音響モデルメモリ2222は音響モデルを記憶することができる(例えばシノンライブラリ(複数のライブラリ))。更に、音響モデル(例えば様々なシノンに対応する音声のガウス分布を記憶するシノンのライブラリ)及び特徴ベクトルが与えられると、生成関数は特徴ベクトルにおける次元数を指定することができる。一実施形態において、英語の場合、特徴ベクトルは39次元を有することができる。別の実施形態において、他の言語の場合、特徴ベクトルは別の数の次元を有することができる。更に一般的には、次元数は、音声認識処理に選択した特定の話される言語に依存して変動する場合がある。このように生成関数は、選択された音響モデル、次元数、及びシノン数を指定する。閉鎖関数は、ハードウェアアクセレレータ(例えばAPU2516)に対する特徴ベクトル、オーディオサンプル部分、及びシノンスコアリング要求の送出を終了させる関数である。
[0170] 一実施形態において、特徴設定関数は、特定のフレームID、パスID、及び特徴ベクトルを渡すことによって各フレーム内にシノンスコアリング要求を設定するために用いられる。上述のように、入力オーディオ信号は(例えば音声認識エンジン2504によって)フレームに分解することができる。例示的なフレームは、オーディオ入力信号の一部のスペクトル特性を含む。一実施形態において、1フレームは12ミリ秒(ms)長である。特徴設定関数は、各フレームを39次元(例えば39の8ビット値)に変換することができる。特徴設定関数は、特定のフレームのID及び関連する特徴ベクトルを指定することができる。
[0171] 一実施形態において、距離計算スコア関数はシノンスコア(例えばガウス確率)を算出する。これは上述のように距離算出として実施することができる。この関数を用いてシノンスコアリングを開始し準備することができる。例えば、特徴ベクトルをAPU2516に入力することができ、APU2516は、音響モデルに記憶された全てのシノン又は少なくとも選択された一部のシノンに対してスコアを生成する。このスコアは次いで上位レイヤに戻される。一実施形態において、距離計算スコア関数は、シノンスコアリングのために音響モデルの一部又は全体を用いることを指定することができる。
[0172] 一実施形態において、スコア供給関数は、シノンスコアリング結果を取得し、これを、アプリケーション2502及び音声認識エンジン2504を含む上位のソフトウェアレイヤに戻す。
[0173] 一実施形態において、音声認識エンジン2504は、例えばパターン認識のために隠れマルコフモデルを用いるパターン認識形態等、いずれかの形態のパターン認識に用いることができる。別の実施形態では、別の形態のパターン認識もガウス計算を用いる。パターン認識の例は、限定ではないが、音声認識、画像処理、及び手書き文字認識のための上述のシノンスコアリングを含むことができる。
[0174] 上述のように、アプリケーション2502及び音声認識エンジン2504は、シノンスコアを求めるために用いるいずれのハードウェアに対しても非依存的である。一実施形態において、アプリケーション2502及び音声認識エンジン2504が知ることも影響されることもなく、特定のAPUを異なるハードウェアのために交換することができる。アプリケーション2502及び音声認識エンジン2504がシノンスコアのために用いるいずれかのタイプのハードウェアに対しても非依存的である場合、第1のハードウェアアクセレレータを異なる設計の第2のハードウェアアクセレレータで置換することができ、この際にアプリケーション2502及び音声認識エンジン2504の再設計は必要ない。換言すると、本明細書で論じるように、APUライブラリ呼び出しは用いるハードウェアアクセレレータのタイプ及び設計に特定的であるが、汎用DCAライブラリ呼び出しはハードウェアに特定的ではない。
[0175] 一実施形態において、図25に示すようなソフトウェアアーキテクチャは、図25に示したソフトウェアスタックを通るデータ及び制御フローを記述することで説明することができる。アプリケーション2502は、音声認識エンジンを用いるいずれかのアプリケーションとすることができる。一実施形態において、音声認識エンジンを2504は、Nuance, Inc.によって提供されるVocon Engineである。代替的な実施形態では、確率推定のために混合ガウスモデル(GMM:Gaussian Mixture Model)を利用する他の音声認識エンジン又はパターン認識エンジンを用いることも可能である。
[0176] 一実施形態において、APU2516は混合ガウスモデルを用いてシノンスコアを計算する。APU2516は、埋め込みプロセッサ(例えばcortex A8埋め込みプロセッサ)よりも大幅に(例えば一桁)高速でこれらのスコアを計算することができるので、APU2516を用いたオンボードの音声認識システムにおいて音声認識がいっそう実用的となる。シノンスコアリング(又は距離計算)の負担をAPU2516に課すことは、(計算待ち時間を短縮することによって)ユーザ経験を改善するだけでなく、CPU2210がシステムの他のタスクに関与することを可能とする。ソフトウェアアーキテクチャは、CPUの負荷及び待ち時間の軽減において重要な役割を果たす。
[0177] 一実施形態において、音声認識エンジン2504は直接APU2516を認識しない。例えば音声認識エンジン2504は、汎用DCA API2506を用いて距離(シノンスコアとも称する)を計算することができる。ここで論じる汎用DCAライブラリの具体的な実施は、APU2516の使用に対して専用に設計されており、以下で論じるようにAPUに対する複数の関数呼び出しを用いる。これは、汎用DCAライブラリの完全にソフトウェアの実施とは異なる。この具体的な実施では、汎用DCAライブラリ呼び出しをAPUライブラリ呼び出しのシーケンスに変換する。この実施の詳細については以下で説明する。APUライブラリの定義及び実施は、APUの現在の実施に特定的であり、これについても以下で説明する。
[0178] 一実施形態において、汎用DCA2506は、音声認識エンジン2504とAPU2516との間のインタフェースとして動作する。例えば音声認識エンジン2504は、汎用DCAに対する汎用API呼び出しを用いてシノンスコアリングを要求することができる。次いで汎用DCA2506は、以下で更に説明するAPI呼び出しのAPUに特定的なライブラリを利用して、要求されたシノンスコアリングを実行するようにAPUハードウェアアクセレレータに指示する。音声認識エンジン2504はAPU2516を認識していないので、音声認識エンジン2504は以下の利点を得ることができる。例えば音声認識エンジン2504は、APU2516のメッセージ伝達フォーマットを知っているだけで良い。また、音声認識エンジン2504はAPU2516によって実行されるタスクを知っている必要はない。更に、交換の利点がある。すなわち、音声認識エンジン2504を再設計する必要なく、APU2516を置換又は再設計することができる。音声認識エンジン2504とAPU2516との間の必要な相互運用性を保証するために、この実施形態では汎用DCA2506であるインタフェースだけが、ハードウェアに特定的なAPI呼び出しを用いる必要がある。
[0179] 1つの例示的な実施形態において、汎用DCAライブラリは以下の関数リストを含む。
[0180] 関数名:distance_computation_create
[0181] 入力パラメータ:
[0182] ・音響モデル
[0183] ・特徴ベクトルにおける次元数
[0184] ・音響モデルにおけるシノンの合計数
[0185] 記述:これらのパラメータを距離計算の状態の一部として記憶する
[0186] 関数名:distance_computation_setfeature
[0187] ・入力パラメータ:
[0188] 〇フレームId
[0189] 〇特徴ベクトル
[0190] 記述:フレームIdに対応する特徴ベクトルを記憶する
[0191] 関数名:distance_computation_computescores
[0192] ・入力パラメータ:
[0193] 〇フレームId
[0194] 〇スコアを生成するシノンのリスト
[0195] 記述:所与のフレームについてスコアを生成するシノンを指定する
[0196] 関数名:distance_computation_fillscores
[0197] ・入力パラメータ:
[0198] 〇スコアを含むバッファ
[0199] 記述:シノンスコアをバッファに記憶する
[0200] 関数名:distance_computation_setfeaturematrix
[0201] 〇入力パラメータ:
[0202] 〇p行列
[0203] 記述:APUに「p行列」で与えられる特徴ベクトル変換行列を記憶する
[0204] distance_computation_setfeaturematrix関数は、認識を特定の話者に適応させるために発声間で呼び出される。次の発声のためのシノンスコアを計算する場合、APUはこの行列を用いる。
[0205] 一実施形態において、「distance_computation_computescores」及び「distance_computation_fillscores」は、計算待ち時間及びCPU負荷を最小限に抑えるように実施することができる。例えばこれらの関数は、図26に具現化する並行動作を達成するように実施可能である。
[0206] 1つの例示的な実施形態において、APUライブラリは以下の関数をサポートする。
[0207] 関数名:apu_set_acoustic_model
[0208] ・入力パラメータ:
[0209] 〇音響モデル
[0210] ・記述:シノンスコアリングのために用いる音響モデルを設定する
[0211] 関数名:apu_loac_feature_vector
[0212] ・入力パラメータ:
[0213] 〇特徴ベクトル
[0214] ・記述:特徴ベクトルをAPUにロードする
[0215] 関数名:apu_score_senone_chunk
[0216] ・入力パラメータ:
[0217] 〇シノンリスト
[0218] ・記述:スコアリングのためAPUにシノンリストをロードする
[0219] 関数名:apu_score_range
[0220] ・入力パラメータ:
[0221] 〇第1及び最後のインデックスにより指定されるシノンの範囲
[0222] ・記述:範囲内の全シノンのスコアを生成するようAPUに命令する
[0223] 関数名:apu_read_senone_scores
[0224] ・入力パラメータ:
[0225] 〇読み取るスコア数
[0226] 〇宛先バッファ
[0227] ・記述:スコアを読み取って宛先バッファに記憶する
[0228] 関数名:apu_check_score_ready_status
[0229] ・入力パラメータ:
[0230] 〇なし
[0231] ・記述:スコアがAPUから読み取られる準備ができているか否かをチェックする
[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] 一実施形態において、APUは、所与の発声の各フレームについてシノンのスコアを生成するために使用可能である。選択された音響モデルを、関数distance_computation_createの一部の開始時にAPUに伝達する。所与のフレームの特徴ベクトルを、関数distance_computation_setfeatureによってAPUに渡す。所与のフレームについてスコア生成するシノンを、関数distance_computation_computescoresによってAPUに渡す。APUによって計算される実際のスコアは、関数distance_computation_fillscoresによって音声認識エンジンに戻すことができる。
[0249] 制御は、図25に示したスタック2500の上から下に流れる。全ての関数は同期しており、関数distance_computation_computescoresを除いて、戻る前に完了する。上記のように、スコアリングを別個のスレッドとして実施して、上述のように距離計算及びサーチの同時性を最大化することができる。CPUがAPU2220による距離計算の完了を待っている場合はいつでも、このスレッドによってCPUは音声認識エンジン2214の残り部分に与えられる。この非同期の計算は、待ち時間及びCPU負荷を最小限に抑えるために重要である。
[0250] C.並行サーチ及び距離スコア計算
一実施形態において、アプリケーション2502又は音声認識エンジン2504によって実行されているスレッドとは別個のスレッド(例えば実行可能プロセス)を、APU2516のために生成することができる。別個のスレッドのため、依存性(第1の動作主(actor)の別のアクションが第2の動作主のアクションに依存すること)は存在してはならない。アプリケーション2502及び音声認識エンジン2504とAPU2516との間の依存性をなくすことによって、アプリケーション2502及び音声認識エンジン2504はAPU2516と並列に動作することができる。1つの例示的な実施形態において、アプリケーション2502及び音声認識エンジン2504とAPU2516との間の依存性は、例えば約10〜12ms継続するフレームの使用によって回避することができる(が、本発明はこの実施形態に限定されない)。例えばアプリケーション2502はフレームnについてのシノンスコアを用いているが、APU2516はフレームn+1についてのシノンスコアを実行している場合がある。
[0251] 更に具体的には、音声認識動作は2つの個別の動作を必要とする。すなわち、スコアリング及びサーチ(searching)である。上述のように、スコアリング動作は、シノンのガウス確率分布ベクトルと特定のフレームに対応する特徴ベクトルとの比較を伴う。一実施形態において、ソフトウェアスタック2500は、これらの2つの動作が並列して実行されるように構成することができる。特に、図22に示すように、音声認識エンジン2214はサーチスレッド2250及び距離スレッド2260を含むことができる。距離スレッド2260はAPU2220で完了した距離計算を管理することができ、サーチスレッド2250は距離計算の結果を用いてどの音声が受信されたかを判定することができる(例えばシノンスコアライブラリをサーチしてベストマッチを決定することによって)。サーチスレッド2250よりも距離スレッド2260を高い優先度に設定することで、距離スレッド2260はAPU2220でスコアリング動作を開始するために必要な動作を実行することができる。次いで距離スレッド2260をスリープ状態に置くことができる。このスリープ中に、サーチスレッド2250を活性化することができ、最新の距離動作の結果を用いてサーチを実行することができる。距離計算を完了するために必要な時間長は比較的予測可能であるので、距離スレッドを所定時間量だけスリープ状態に置くことができる。代替的な実施形態では、距離スレッド2260は無期限にスリープ状態に置くことができ、APU2220からの割り込みを用いて距離スレッド2260を起こすことができる。この場合、APU2220を用いてフレームn+1についての距離スコアを計算することができ、その間、CPU2210はフレームnについて以前に算出したスコアを用いてサーチ動作を実行する。
[0252] いずれの所与のフレームについても、図26に示すように、サーチは距離計算の後に行うことができる。特に、フレーム(i+1)についての距離計算は、フレームiについてのサーチを実行中に行うことができる。従って図26に示すように、APUが実行する距離計算は、CPUが実行するサーチ機能と同時に実行可能である。一実施形態において、DCAライブラリに対する呼び出しシーケンスは、この動作を実施するように構成されている。更に別の実施形態では、汎用DCAは、サーチ計算及び距離計算の同時性が最大限となるように実施される。一実施形態において、汎用DCAライブラリの実施は、APUライブラリが提供するAPIを用いる。
[0253] 図27は、音響処理のための方法2700の一実施形態の例である。方法2700のステップは、図25に示したソフトウェアスタック2500と共に、例えば図22に示す音響処理システム2200を用いて実行することができる。
[0254] ステップ2702において、受信したオーディオ信号をフレームに分割する。例えば図22において、音声認識エンジン2214は、受信したオーディオ信号を、例えば10〜12ms長のフレームに分割することができる。
[0255] ステップ2704において、サーチスレッド及び距離計算スレッドを生成する。例えば図22において、音声認識エンジン2214はサーチスレッド2250及び距離スレッド2260を生成することができる。
[0256] ステップ2706において、APUを用いて距離スコアを計算する。例えば図22において、距離スレッド2260の指示で、APU2220のシノンスコアリングユニット2230は、フレームに対応する特徴ベクトルとガウス確率分布ベクトルとの間の距離スコアを計算することができる。
[0257] ステップ2708において、フレームについて計算したスコアを用いてサーチ動作を実行する。例えば図22において、サーチスレッド2250は、ステップ2706で計算した距離スコアを用いて異なるシノンをサーチし、フレームにどの音声が含まれたかを判定することができる。
[0258] ステップ2710において、このフレームがオーディオ信号の最後のフレームであったか否かを判定する。そうである場合、方法2700は終了する。そうでない場合、方法2700はステップ2712に進む。
[0259] ステップ2712において、ステップ2708のサーチ動作と同時に、APUを用いて次のフレームの距離スコアを計算する。例えば図22において、サーチスレッド2250がフレームiについての距離スコアを用いてサーチ動作を実行するのと同時に、APU2220を用いてフレームi+1についての距離スコアを計算することができる。
[0260] 7.例示的なコンピュータシステム
本発明の様々な態様は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせにおいて実施することができる。図28は、本発明の実施形態又はその一部をコンピュータ読み取り可能コードとして実施可能である一例のコンピュータシステム2800の例示である。例えば、図9のフローチャート900によって示した方法、図17のフローチャート1700によって示した方法、図21のフローチャート2100によって示した方法、図25に示したソフトウェアスタック2500、及び/又は図27のフローチャート2700によって示した方法を、システム2800において実施可能である。本発明の様々な実施形態は、この例示のコンピュータシステム2800の観点で説明している。この記載を読んだ後、他のコンピュータシステム及び/又はコンピュータアーキテクチャを用いてどのように本発明の実施形態を実施するかについても当業者に明らかとなるであろう。
[0261] 本発明の様々な実施形態のシミュレーション、合成、及び/又は製造は、コンピュータ読み取り可能コードの使用によって部分的に達成可能であることに留意すべきである。このコードは、汎用プログラミング言語(C又はC++等)、例えばVerilog HDL、VHDL、Altera HDL(AHDL)等のハードウェア記述言語(HDL)、又は他の利用可能なプログラミング及び/又は回路図キャプチャツール(回路キャプチャツール等)を含む。このコンピュータ読み取り可能コードは、半導体、磁気ディスク、光ディスク(CD−ROM、DVD−ROM等)を含むいずれかの既知のコンピュータ使用可能媒体に配置することができる。このため、コードはインターネットを含む通信ネットワークを介して伝送することができる。上述のシステム及び技法によって達成される機能及び/又は提供される構造は、プログラムコードに埋め込まれたコア(例えばAPUコア)において表現することができ、集積回路の製造の一部としてハードウェアに変換することが可能であることは理解されよう。
[0262] コンピュータシステム2800は、プロセッサ2804等の1つ以上のプロセッサを含む。プロセッサ2804は、例えば図4のAPU及びCPU等の特殊用途プロセッサ又は汎用プロセッサとすれば良い。プロセッサ2804は通信インフラストラクチャ2806(例えばバス又はネットワーク)に接続されている。
[0263] また、コンピュータシステム2800は、好ましくはランダムアクセスメモリ(RAM)であるメインメモリ2808も含み、更に二次メモリ2810も含む場合がある。二次メモリ2810は、例えばハードディスクドライブ2812、着脱可能記憶ドライブ2814、及び/又はメモリスティックを含むことができる。着脱可能記憶ドライブ2814は、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等を含むことができる。着脱可能記憶ドライブ2814は、周知の方法で着脱可能記憶ユニット2818からの読み取り及び/又はこれへの書き込みを行う。着脱可能記憶ユニット2818は、着脱可能記憶ドライブ2814によって読み取り及び書き込みが行われるフロッピー(登録商標)ディスク、磁気テープ、光ディスク等を含むことができる。当業者には認められるであろうが、着脱可能記憶ユニット2818は、コンピュータソフトウェア及び/又はデータが記憶されたコンピュータ使用可能記憶媒体を含む。
[0264] コンピュータシステム2800は、(任意選択肢として)ディスプレイインタフェース2802(これはキーボード、マウス等の入出力デバイスを含むことができる)を含み、これは、通信インフラストラクチャ2806からの(又は図示しないフレームバッファからの)グラフィック、データ、及び他のデータを、ディスプレイユニット2830に表示するために転送する。
[0265] 代替的な実施において、二次メモリ2810は、コンピュータシステム2800にコンピュータプログラム又は他の命令をロードすることを可能とするための他の同様のデバイスを含むことができる。かかるデバイスは、例えば着脱可能記憶ユニット2822及びインタフェース2820を含むことができる。かかるデバイスの例は、プログラムカートリッジ及びカートリッジインタフェース(ビデオゲームデバイスにおいて見られるもの等)、着脱可能メモリチップ(例えばEPROM又はPROM)及び付属のソケット、並びに、着脱可能記憶ユニット2822からコンピュータシステム2800にソフトウェア及びデータを転送することを可能とする他の着脱可能記憶ユニット2822及びインタフェース2820を含むことができる。
[0266] また、コンピュータシステム2800は通信インタフェース2824も含むことができる。通信インタフェース2824は、コンピュータシステム2800と外部デバイスとの間でソフトウェア及びデータを転送可能とする。通信インタフェース2824は、モデム、ネットワークインタフェース(イーサネット(登録商標)カード等)、通信ポート、PCMCIAスロット及びカード等を含むことができる。通信インタフェース2824を介して転送されるソフトウェア及びデータは、電子、電磁、光、又は通信インタフェース2824によって受信可能な他の信号であり得る信号の形態である。これらの信号は通信経路2826を介して通信インタフェース2824に提供される。通信経路2826は、信号を搬送し、ワイヤ又はケーブル、光ファイバ、電話線、セル式電話リンク、RFリンク、又は他の通信チャネルを用いて実施可能である。
[0267] この文書において、「コンピュータプログラム媒体」及び「コンピュータ使用可能媒体」という言葉は、着脱可能記憶ユニット2818、着脱可能記憶ユニット2822、及びハードディスクドライバ2812にインストールされたハードディスク等の媒体を一般的に示すために用いられる。また、コンピュータプログラム媒体及びコンピュータ使用可能媒体は、メモリ半導体(例えばDRAM等)とすることができるメインメモリ2808及び二次メモリ2810等のメモリを指すことができる。これらのコンピュータプログラム製品は、コンピュータシステム2800にソフトウェアを提供する。
[0268] メインメモリ2808及び/又は二次メモリ2810に、コンピュータプログラム(コンピュータ制御論理とも称する)が記憶されている。コンピュータプログラムは通信インタフェース2824を介して受信することも可能である。かかるコンピュータプログラムは、実行された場合、本明細書において論じた本発明の実施形態をコンピュータシステム2800が実施することを可能とする。具体的には、コンピュータプログラムは、実行された場合、図9のフローチャート900及び図17のフローチャート1700によって示した方法、図21のフローチャート2100によって示した方法、図27のフローチャート2700によって示した方法におけるステップ、及び/又は図25に示したソフトウェアスタック2500における関数等、本発明の実施形態のプロセスをプロセッサ2804が実施することを可能とする。従って、かかるコンピュータプログラムはコンピュータシステム2800のコントローラを表す。本発明の実施形態がソフトウェアを用いて実施された場合、このソフトウェアをコンピュータプログラム製品に記憶し、着脱可能記憶ドライブ2814、インタフェース2820、ハードドライブ2812、又は通信インタフェース2824を用いて、コンピュータシステム2800にロードすることができる。
[0269] また、本発明の実施形態は、いずれかのコンピュータ使用可能媒体に記憶されたソフトウェアを含むコンピュータプログラム製品を対象とする。かかるソフトウェアは、1つ以上のデータ処理デバイスにおいて実行された場合、データ処理デバイス(複数のデバイス)を本明細書に記載したように動作させる。本発明の実施形態は、現在既知であるか又は将来のいずれかのコンピュータ使用可能又は読み取り可能媒体を採用する。コンピュータ使用可能媒体の例は、限定ではないが、一次記憶デバイス(例えばいずれかのタイプのランダムアクセスメモリ)、二次記憶デバイス(例えばハードドライブ、フロッピー(登録商標)ディスク、CD ROM、ZIPディスク、テープ、磁気記憶デバイス、光記憶デバイス、MEMS、ナノテクノロジー記憶デバイス等)、及び通信媒体(例えば有線及び無線通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、イントラネット等)を含む。
[0270] 8.結論
特許請求の範囲の解釈に用いることが意図されるのは、「発明の概要」及び「要約書」の節でなく「発明を実施するための形態」の節であることは認められよう。「発明の概要」及び「要約書」の節が説明し得るのは、本発明者等が想定する本発明の例示的な実施形態の1つ以上であるが全てではなく、従ってこれらの節はいかなる点でも本発明及び添付の特許請求の範囲を限定することは意図していない。
[0271] 本発明の実施形態について、明記した機能の実施及びそれらの関係を例示する機能構築ブロックを用いて上述した。これらの機能構築ブロックの境界は、記載の便宜上、本明細書では任意に画定している。明記した機能及びそれらの関係が適切に実行される限り、代替的な境界を画定することも可能である。
[0272] 特定の実施形態の前述の記載によって、本発明の一般的な性質が充分に明らかとなろう。すなわち、他の者が、関連技術の能力内の知識を適用することによって、必要以上の実験作業なしで、本発明の一般的な概念から逸脱することなく、様々な用途のために、かかる具体的な実施形態を容易に変更及び/又は適合することが可能であるということである。従って、かかる適合及び変更は、本明細書に提示した教示及び指導に基づいて、開示した実施形態の均等物の意味及び範囲内であることが意図される。本明細書における語句及び専門用語は限定でなく記載の目的のためのものであるので、本明細書の専門用語又は語句は当業者によって本教示及び指導を考慮して解釈されることは理解されよう。
[0273] 本発明の広さ及び範囲は、上述の例示的な実施形態のいずれかによって限定されるものではなく、以下の特許請求の範囲及びその均等物に従ってのみ規定されるものである。

Claims (20)

  1. 受信したオーディオ信号を、各フレームベクトルを有する連続フレームに分割するように構成された処理ユニットと、
    音響処理ユニット(APU)であって、
    複数のシノンを記憶するローカルな不揮発性メモリと、
    前記メモリに接続されたメモリバッファであって、前記音響処理ユニットが、前記メモリに記憶された少なくとも1つのガウス確率分布ベクトルを前記メモリバッファ内にロードするように構成された、メモリバッファと、
    前記メモリバッファ内にロードされたガウス確率分布ベクトルの複数の次元を、前記処理ユニットから受信されたフレームベクトルの各次元と同時に比較すると共に、対応するスコアを前記処理ユニットに出力するように構成された、スコアリングユニットと、
    を備える、音響処理ユニット(APU)と、
    を備え、前記処理ユニットが第2のフレームに対応するスコアを用いたサーチ動作を実行する間に、前記音響処理ユニットが第1のフレームを用いた比較を実行するように構成され、前記第2のフレームが前記第1のフレームの直前にあり、更に、
    前記処理ユニット及び前記APUを接続するデータバスを備える、音声認識システム。
  2. 前記処理ユニットが、サーチスレッド及び距離計算スレッドを同時に実行するように構成される、請求項1に記載の音声認識システム。
  3. 前記処理ユニットが、
    前記距離計算スレッドからコマンドを受信すると共に前記APUにより受信される1つ以上の対応するコマンドを発生するように構成されたアプリケーションプログラミングインタフェース(API)モジュールを備える、請求項2に記載の音声認識システム。
  4. 前記APIモジュールが、
    前記距離計算スレッドからコマンドを受信すると共に前記受信したコマンドを実施するライブラリ内の1つ以上の関数を出力するように構成された汎用DCAを備える、請求項3に記載の音声認識システム。
  5. 前記汎用DCAが、
    (i)音響モデル、特徴ベクトル内のある数の次元、及び前記音響モデル内のある数のシノンを状態情報として記憶する生成関数と、
    (ii)受信したフレームIDに対応する特徴ベクトルを記憶する特徴設定関数と、
    (iii)フレームについて記憶される少なくとも1つのシノンを指定するスコア計算関数と、
    (iv)シノンスコアをバッファに記憶するスコア供給関数と、
    (v)特徴ベクトル変換行列を記憶し特定の話者に前記比較を適応させる特徴行列設定関数と、
    を少なくとも指定する、請求項4に記載の音声認識システム。
  6. 前記APIモジュールが、前記汎用DCAからパラメータを受信すると共に前記APUと互換性のあるパラメータを出力するように構成されたAPUライブラリを更に備える、請求項5に記載の音声認識システム。
  7. 前記APUライブラリが、
    (i)シノンスコアリングに用いられる音響モデルを設定する音響モデル設定関数と、
    (ii)前記APUに特徴ベクトルをロードする特徴ベクトルロード関数と、
    (iii)前記APUにシノンリストをロードするスコアシノンチャンク関数と、
    (iv)スコアを生成する範囲内の全シノンを指定するスコア範囲関数と、
    (v)シノンスコアを読み取って前記シノンスコアを宛先バッファに記憶するシノンスコア読み取り関数と、
    (vi)前記APUからのシノンスコアの読み取り準備ができているか否かを判定するスコア準備ステータスチェック関数と、
    (vii)前記APUの第1のステータスレジスタを読み取って利用可能なスコアエントリの数を判定するスコア長読み取り関数と、
    (viii)前記APUの第2のステータスレジスタを読み取って読み取り動作のステータスを判定するステータス読み取り関数と、
    (iv)前記APUのコンフィギュレーションレジスタを読み取るコンフィギュレーション読み取り関数と、
    (x)前記コンフィギュレーションレジスタに書き込みを行うコンフィギュレーション書き込み関数と、
    を少なくとも指定する、請求項6に記載の音声認識システム。
  8. 前記APUモジュールが、
    前記APUライブラリと前記APUとの間のインタフェースを提供するように構成されたハードウェア抽象レイヤ(HAL)を更に備える、請求項6に記載の音声認識システム。
  9. 処理ユニットを用いて、受信したオーディオ信号を複数のフレームに分割することと、
    音響処理ユニット(APU)を用いて、前記複数のフレームの第1のフレームに関連付けられた特徴ベクトルをガウス確率分布ベクトルと比較してスコアを発生することと、
    前記比較と同時に、前記処理ユニットを用いて音響処理ユニット(APU)から受信された前記複数のフレームの第2のフレームに関連付けられた特徴ベクトルに対応するスコアを用いてサーチ動作を実行することであって、前記第2のフレームが前記第1のフレームの直前にあり、前記処理ユニット及び前記APUがデータバスを介して接続されている、ことと、
    を有する、音響処理方法。
  10. 前記処理ユニットにおいてサーチスレッド及び距離計算スレッドを生成することを更に有する、請求項9に記載の音響処理方法。
  11. 前記距離計算スレッドがアプリケーションプログラミングインタフェース(API)を介して前記比較を制御する、請求項9に記載の音響処理方法。
  12. 前記APIが、
    汎用DCAと、
    APUライブラリと、
    ハードウェア抽象レイヤ(HAL)と、
    を備える、請求項11に記載の音響処理方法。
  13. 前記汎用DCAが、
    (i)音響モデル、特徴ベクトル内のある数の次元、及び前記音響モデル内のある数のシノンを状態情報として記憶する生成関数と、
    (ii)受信したフレームIDに対応する特徴ベクトルを記憶する特徴設定関数と、
    (iii)フレームについて記憶される少なくとも1つのシノンを指定するスコア計算関数と、
    (iv)シノンスコアをバッファに記憶するスコア供給関数と、
    (v)特徴ベクトル変換行列を記憶し特定の話者に前記比較を適応させる特徴行列設定関数と、
    を少なくとも指定する、請求項12に記載の音響処理方法。
  14. 前記APUライブラリが、
    (i)シノンスコアリングに用いられる音響モデルを設定する音響モデル設定関数と、
    (ii)前記APUに特徴ベクトルをロードする特徴ベクトルロード関数と、
    (iii)前記APUにシノンリストをロードするスコアシノンチャンク関数と、
    (iv)スコアを生成する範囲内の全シノンを指定するスコア範囲関数と、
    (v)シノンスコアを読み取って前記シノンスコアを宛先バッファに記憶するシノンスコア読み取り関数と、
    (vi)前記APUからのシノンスコアの読み取り準備ができているか否かを判定するスコア準備ステータスチェック関数と、
    (vii)前記APUの第1のステータスレジスタを読み取って利用可能なスコアエントリの数を判定するスコア長読み取り関数と、
    (viii)前記APUの第2のステータスレジスタを読み取って読み取り動作のステータスを判定するステータス読み取り関数と、
    (iv)前記APUのコンフィギュレーションレジスタを読み取るコンフィギュレーション読み取り関数と、
    (x)前記コンフィギュレーションレジスタに書き込みを行うコンフィギュレーション書き込み関数と、
    を少なくとも指定する、請求項12に記載の音響処理方法。
  15. 音響処理方法を実行するために1つ以上のプロセッサにより実行される1つ以上の命令の1つ以上のシーケンスを記憶するコンピュータ読み取り可能媒体であって、前記方法が、
    処理ユニットを用いて、受信したオーディオ信号を複数のフレームに分割することと、
    音響処理ユニットを用いて、前記複数のフレームの第1のフレームに関連付けられた特徴ベクトルを出力することであって、前記音響処理ユニットが前記第1のフレームをガウス確率分布ベクトルと比較してスコアを発生するように構成されている、ことと、
    前記APUでの前記比較と同時に、前記処理ユニットを用いて音響処理ユニット(APU)から受信された前記複数のフレームの第2のフレームに関連付けられた特徴ベクトルに対応するスコアを用いてサーチ動作を実行することであって、前記第2のフレームが前記第1のフレームの直前にあり、前記処理ユニット及び前記APUがデータバスを介して接続されている、ことと、
    を有する、コンピュータ読み取り可能媒体。
  16. 前記方法が、
    前記処理ユニットにおいてサーチスレッド及び距離計算スレッドを生成することを更に有する、請求項15に記載のコンピュータ読み取り可能媒体。
  17. 前記距離計算スレッドがアプリケーションプログラミングインタフェース(API)を介して前記比較を制御する、請求項16に記載のコンピュータ読み取り可能媒体。
  18. 前記APIが、
    汎用DCAと、
    APUライブラリと、
    ハードウェア抽象レイヤ(HAL)と、
    を備える、請求項17に記載のコンピュータ読み取り可能媒体。
  19. 前記DCAライブラリが、
    (i)音響モデル、特徴ベクトル内のある数の次元、及び前記音響モデル内のある数のシノンを状態情報として記憶する生成関数と、
    (ii)受信したフレームIDに対応する特徴ベクトルを記憶する特徴設定関数と、
    (iii)フレームについて記憶される少なくとも1つのシノンを指定するスコア計算関数と、
    (iv)シノンスコアをバッファに記憶するスコア供給関数と、
    (v)特徴ベクトル変換行列を記憶し特定の話者に前記比較を適応させる特徴行列設定関数と、
    を少なくとも指定する、請求項18に記載のコンピュータ読み取り可能媒体。
  20. 前記APUライブラリが、
    (i)シノンスコアリングに用いられる音響モデルを設定する音響モデル設定関数と、
    (ii)前記APUに特徴ベクトルをロードする特徴ベクトルロード関数と、
    (iii)前記APUにシノンリストをロードするスコアシノンチャンク関数と、
    (iv)スコアを生成する範囲内の全シノンを指定するスコア範囲関数と、
    (v)シノンスコアを読み取って前記シノンスコアを宛先バッファに記憶するシノンスコア読み取り関数と、
    (vi)前記APUからのシノンスコアの読み取り準備ができているか否かを判定するスコア準備ステータスチェック関数と、
    (vii)前記APUの第1のステータスレジスタを読み取って利用可能なスコアエントリの数を判定するスコア長読み取り関数と、
    (viii)前記APUの第2のステータスレジスタを読み取って読み取り動作のステータスを判定するステータス読み取り関数と、
    (iv)前記APUのコンフィギュレーションレジスタを読み取るコンフィギュレーション読み取り関数と、
    (x)前記コンフィギュレーションレジスタに書き込みを行うコンフィギュレーション書き込み関数と、
    を少なくとも指定する、請求項18に記載のコンピュータ読み取り可能媒体。
JP2014547556A 2011-12-19 2012-12-18 音響処理ユニットインタフェース Pending JP2015501011A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161577595P 2011-12-19 2011-12-19
US61/577,595 2011-12-19
US201261589113P 2012-01-20 2012-01-20
US61/589,113 2012-01-20
US13/490,124 2012-06-06
US13/490,124 US9785613B2 (en) 2011-12-19 2012-06-06 Acoustic processing unit interface for determining senone scores using a greater clock frequency than that corresponding to received audio
PCT/US2012/070329 WO2013096301A1 (en) 2011-12-19 2012-12-18 Acoustic processing unit interface

Publications (1)

Publication Number Publication Date
JP2015501011A true JP2015501011A (ja) 2015-01-08

Family

ID=48611061

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2014547494A Pending JP2015505993A (ja) 2011-12-19 2012-12-14 音響処理ユニット
JP2014547557A Active JP6138148B2 (ja) 2011-12-19 2012-12-18 演算論理ユニットアーキテクチャ
JP2014547556A Pending JP2015501011A (ja) 2011-12-19 2012-12-18 音響処理ユニットインタフェース

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2014547494A Pending JP2015505993A (ja) 2011-12-19 2012-12-14 音響処理ユニット
JP2014547557A Active JP6138148B2 (ja) 2011-12-19 2012-12-18 演算論理ユニットアーキテクチャ

Country Status (6)

Country Link
US (3) US20130158996A1 (ja)
EP (3) EP2795614A4 (ja)
JP (3) JP2015505993A (ja)
KR (3) KR20140106723A (ja)
CN (3) CN104126200A (ja)
WO (3) WO2013096124A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9514739B2 (en) * 2012-06-06 2016-12-06 Cypress Semiconductor Corporation Phoneme score accelerator
US10007724B2 (en) * 2012-06-29 2018-06-26 International Business Machines Corporation Creating, rendering and interacting with a multi-faceted audio cloud
DE102013206292A1 (de) * 2013-04-10 2014-10-16 Robert Bosch Gmbh Verfahren und Vorrichtung zum Erstellen eines datenbasierten Funktionsmodells
DE102013206320A1 (de) * 2013-04-10 2014-10-16 Robert Bosch Gmbh Verfahren und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells
JP6052814B2 (ja) * 2014-09-24 2016-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 音声認識モデルの構築方法、音声認識方法、コンピュータ・システム、音声認識装置、プログラムおよび記録媒体
KR102299330B1 (ko) * 2014-11-26 2021-09-08 삼성전자주식회사 음성 인식 방법 및 그 전자 장치
CN105869641A (zh) * 2015-01-22 2016-08-17 佳能株式会社 语音识别装置及语音识别方法
US9721569B2 (en) * 2015-05-27 2017-08-01 Intel Corporation Gaussian mixture model accelerator with direct memory access engines corresponding to individual data streams
PH12018050262A1 (en) * 2017-07-21 2019-06-17 Accenture Global Solutions Ltd Automatic provisioning of a software development environment
US11043218B1 (en) * 2019-06-26 2021-06-22 Amazon Technologies, Inc. Wakeword and acoustic event detection
WO2021033889A1 (en) * 2019-08-20 2021-02-25 Samsung Electronics Co., Ltd. Electronic device and method for controlling the electronic device
CN112307986B (zh) * 2020-11-03 2022-02-08 华北电力大学 一种利用高斯梯度的负荷开关事件检测方法和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01298400A (ja) * 1988-05-26 1989-12-01 Ricoh Co Ltd 連続音声認識装置
JPH04232998A (ja) * 1990-12-27 1992-08-21 Nec Corp 音声認識装置
WO2006075648A1 (ja) * 2005-01-17 2006-07-20 Nec Corporation 音声認識システム、音声認識方法及び音声認識プログラム
US20080255839A1 (en) * 2004-09-14 2008-10-16 Zentian Limited Speech Recognition Circuit and Method
WO2010042631A2 (en) * 2008-10-10 2010-04-15 Fastow Richard M Real-time data pattern analysis system and method of operation thereof
JP2011191682A (ja) * 2010-03-16 2011-09-29 Nec Corp 音声認識装置、音声認識方法および音声認識プログラム

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1112269A (zh) * 1994-05-20 1995-11-22 北京超凡电子科技有限公司 基于汉语发音特点的hmm语音识别技术
US5604839A (en) * 1994-07-29 1997-02-18 Microsoft Corporation Method and system for improving speech recognition through front-end normalization of feature vectors
US5864810A (en) * 1995-01-20 1999-01-26 Sri International Method and apparatus for speech recognition adapted to an individual speaker
US5710866A (en) * 1995-05-26 1998-01-20 Microsoft Corporation System and method for speech recognition using dynamically adjusted confidence measure
US5937384A (en) * 1996-05-01 1999-08-10 Microsoft Corporation Method and system for speech recognition using continuous density hidden Markov models
CN1061451C (zh) * 1996-09-26 2001-01-31 财团法人工业技术研究院 隐藏式马可夫模型的中文词音识别方法
US6542866B1 (en) * 1999-09-22 2003-04-01 Microsoft Corporation Speech recognition method and apparatus utilizing multiple feature streams
US7295978B1 (en) * 2000-09-05 2007-11-13 Verizon Corporate Services Group Inc. Systems and methods for using one-dimensional gaussian distributions to model speech
JP3932789B2 (ja) * 2000-09-20 2007-06-20 セイコーエプソン株式会社 Hmmの出力確率計算方法および音声認識装置
AU2000276404A1 (en) * 2000-09-30 2002-04-15 Intel Corporation (A Corporation Of Delaware) Method, apparatus, and system for building a compact model for large vocabulary continuous speech recognition (lvcsr) system
CA2359544A1 (en) 2001-10-22 2003-04-22 Dspfactory Ltd. Low-resource real-time speech recognition system using an oversampled filterbank
US6990447B2 (en) * 2001-11-15 2006-01-24 Microsoft Corportion Method and apparatus for denoising and deverberation using variational inference and strong speech models
US20030097263A1 (en) * 2001-11-16 2003-05-22 Lee Hang Shun Decision tree based speech recognition
US7031918B2 (en) * 2002-03-20 2006-04-18 Microsoft Corporation Generating a task-adapted acoustic model from one or more supervised and/or unsupervised corpora
US7006972B2 (en) * 2002-03-20 2006-02-28 Microsoft Corporation Generating a task-adapted acoustic model from one or more different corpora
US7571097B2 (en) * 2003-03-13 2009-08-04 Microsoft Corporation Method for training of subspace coded gaussian models
US7454336B2 (en) * 2003-06-20 2008-11-18 Microsoft Corporation Variational inference and learning for segmental switching state space models of hidden speech dynamics
US7480615B2 (en) * 2004-01-20 2009-01-20 Microsoft Corporation Method of speech recognition using multimodal variational inference with switching state space models
US7231019B2 (en) 2004-02-12 2007-06-12 Microsoft Corporation Automatic identification of telephone callers based on voice characteristics
US20060058999A1 (en) * 2004-09-10 2006-03-16 Simon Barker Voice model adaptation
US7693713B2 (en) * 2005-06-17 2010-04-06 Microsoft Corporation Speech models generated using competitive training, asymmetric training, and data boosting
KR100664960B1 (ko) * 2005-10-06 2007-01-04 삼성전자주식회사 음성 인식 장치 및 방법
KR100764247B1 (ko) 2005-12-28 2007-10-08 고려대학교 산학협력단 2단계 탐색을 이용한 음성인식 장치 및 그 방법
EP1840822A1 (en) * 2006-03-29 2007-10-03 Sony Deutschland Gmbh Method for deriving noise statistical properties of a signal
US7774202B2 (en) 2006-06-12 2010-08-10 Lockheed Martin Corporation Speech activated control system and related methods
US7844456B2 (en) * 2007-03-09 2010-11-30 Microsoft Corporation Grammar confusability metric for speech recognition
KR100974871B1 (ko) * 2008-06-24 2010-08-11 연세대학교 산학협력단 특징 벡터 선택 방법 및 장치, 그리고 이를 이용한 음악장르 분류 방법 및 장치
US8818802B2 (en) 2008-10-10 2014-08-26 Spansion Llc Real-time data pattern analysis system and method of operation thereof
US9031844B2 (en) * 2010-09-21 2015-05-12 Microsoft Technology Licensing, Llc Full-sequence training of deep structures for speech recognition

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01298400A (ja) * 1988-05-26 1989-12-01 Ricoh Co Ltd 連続音声認識装置
JPH04232998A (ja) * 1990-12-27 1992-08-21 Nec Corp 音声認識装置
US20080255839A1 (en) * 2004-09-14 2008-10-16 Zentian Limited Speech Recognition Circuit and Method
WO2006075648A1 (ja) * 2005-01-17 2006-07-20 Nec Corporation 音声認識システム、音声認識方法及び音声認識プログラム
WO2010042631A2 (en) * 2008-10-10 2010-04-15 Fastow Richard M Real-time data pattern analysis system and method of operation thereof
JP2011191682A (ja) * 2010-03-16 2011-09-29 Nec Corp 音声認識装置、音声認識方法および音声認識プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
齋藤大輔 他: ""ケプストラムの声道長依存性に関する幾何学的考察"", 情報処理学会研究報告, vol. 2007, no. 129, JPN6016049359, 20 December 2007 (2007-12-20), pages 189 - 194, ISSN: 0003625272 *

Also Published As

Publication number Publication date
US20130159371A1 (en) 2013-06-20
EP2795615A1 (en) 2014-10-29
JP2015505993A (ja) 2015-02-26
WO2013096301A1 (en) 2013-06-27
WO2013096303A1 (en) 2013-06-27
CN104126165A (zh) 2014-10-29
KR20140107537A (ko) 2014-09-04
CN104126200A (zh) 2014-10-29
JP6138148B2 (ja) 2017-05-31
KR20140106724A (ko) 2014-09-03
US20130158996A1 (en) 2013-06-20
EP2795461A1 (en) 2014-10-29
KR102048893B1 (ko) 2019-11-26
US20130158997A1 (en) 2013-06-20
JP2015501012A (ja) 2015-01-08
EP2795615A4 (en) 2016-01-13
WO2013096124A1 (en) 2013-06-27
CN104137178A (zh) 2014-11-05
EP2795614A4 (en) 2015-07-22
EP2795614A1 (en) 2014-10-29
EP2795461A4 (en) 2015-08-12
KR20140106723A (ko) 2014-09-03
CN104137178B (zh) 2018-01-19
US9785613B2 (en) 2017-10-10
US8924453B2 (en) 2014-12-30

Similar Documents

Publication Publication Date Title
JP6138148B2 (ja) 演算論理ユニットアーキテクチャ
US10949736B2 (en) Flexible neural network accelerator and methods therefor
US8566259B2 (en) Method and system for parallel statistical inference on highly parallel platforms
US20180350351A1 (en) Feature extraction using neural network accelerator
US8818802B2 (en) Real-time data pattern analysis system and method of operation thereof
You et al. Parallel scalability in speech recognition
Nedevschi et al. Hardware speech recognition for user interfaces in low cost, low power devices
US20230402028A1 (en) Unsupervised alignment for text to speech synthesis using neural networks
He et al. A 40 nm 144 mW VLSI processor for real-time 60-kWord continuous speech recognition
Lin et al. A multi-FPGA 10x-real-time high-speed search engine for a 5000-word vocabulary speech recognizer
Price Energy-scalable speech recognition circuits
You et al. Memory access optimized VLSI for 5000-word continuous speech recognition
Lim et al. Design and implementation of speech recognition on a softcore based FPGA
Buthpitiya et al. A parallel implementation of viterbi training for acoustic models using graphics processing units
You et al. Flexible and expandable speech recognition hardware with weighted finite state transducers
Cheng et al. Speech recognition system for embedded real-time applications
Stogiannos et al. A configurable logic based architecture for real-time continuous speech recognition using hidden Markov models
US20240112021A1 (en) Automatic speech recognition with multi-frame blank decoding using neural networks for conversational ai systems and applications
Chong et al. An automatic speech recognition application framework for highly parallel implementations on the gpu
Tambe Architecting High Performance Silicon Systems for Accurate and Efficient On-Chip Deep Learning
Stölzle Speech Recognition

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151116

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20160118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170321

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170823