(58)【調査した分野】(Int.Cl.,DB名)
前記コーパスにおける他のワードシーケンスに前記所与の話された発声をマッチングすることを試みる前に、前記グルーピングのうちの1つに前記所与の話された発声をマッチングすることを、前記音声認識システムに試みさせることをさらに含む、請求項1に記載の方法。
前記検索クエリの送信の頻度を示す前記情報に基づいて前記グルーピングについてそれぞれの発生確率を割り当てることをさらに含み、前記それぞれの発生確率は時間変化する、請求項1に記載の方法。
前記グルーピングを決定する機能は、オートマトン状態およびオートマトン弧を含むファクタグラフを生成することを含み、前記オートマトン弧の各々は前記検索クエリのワードの前記シーケンスのワードに対応する、請求項8に記載のコンピュータ読取可能記憶媒体。
前記少なくとも1つのプロセッサによる実行の際の前記プログラム命令はさらに、前記デバイスに、前記所与の期間における前記検索エンジンへの前記検索クエリの送信の頻度を示す前記情報に基づいてメトリックを決定することを行わせ、
前記少なくとも1つのプロセッサによる実行の際の前記プログラム命令は、前記デバイスに、しきい値と前記メトリックの比較に基づいて前記グルーピングの決定を行わせる、請求項12に記載のデバイス。
前記音声認識システムは、前記コーパスのワードの前記所与のシーケンスについての発生確率を含み、前記音声認識システムに前記グルーピングを提供するために、前記少なくとも1つのプロセッサによる実行の際の前記データストレージにおける前記プログラム命令は、前記デバイスに、
前記グルーピングにより、ワードの所与のシーケンスの前記コーパスを増強することと、
前記コーパスにおけるワードの他のシーケンスの所与の発生確率より高いそれぞれの発生確率を前記グルーピングに割り当てることとを行わせる、請求項12に記載のデバイス。
前記グルーピングを決定するために、前記少なくとも1つのプロセッサによる実行の際の前記データストレージにおける前記プログラム命令は、前記デバイスに、オートマトン状態およびオートマトン弧を含むファクタグラフを生成することを行わせ、前記オートマトン弧の各々は前記検索クエリのワードの前記シーケンスのワードに対応する、請求項12に記載のデバイス。
前記グルーピングの所与のグルーピングを決定するために、前記少なくとも1つのプロセッサによる実行の際の前記データストレージにおける前記プログラム命令は、前記デバイスに、
第1のオートマトン状態に接続される第1のオートマトン弧によって表わされる第1のワードを選択することと、
前記第1のオートマトン状態に隣接する第2のオートマトン状態へと継続することと、
前記第2のオートマトン状態に接続される第2の弧によって表わされる第2のワードを選択することとを行わせ、前記第2のワードは、前記検索クエリのワードの前記シーケンスにおいて前記第1のワードに隣接し、前記所与のグルーピングは、前記ファクタグラフにおいて任意の所与のオートマトン状態で始まることを許容される、請求項15に記載のデバイス。
【発明を実施するための形態】
【0008】
詳細な説明
以下の詳細な説明は、添付の図面を参照して、開示されるシステムおよび方法のさまざまな特徴および機能を記載する。これらの図において、文脈が他の態様を示していなければ、同様の符号は同様の構成要素を特定する。本願明細書に記載される例示的なシステムおよび方法の実施形態は限定的であるよう意図されない。開示されるシステムおよび方法のある局面は、すべて本願明細書において考えられるさまざまな異なる構成において構成および組み合わせられ得るということが容易に理解され得る。
【0009】
コンピューティングパワーが増加し続けているので、スピーチベースのユーザインターフェイスを提供するよう、さまざまな環境において自動音声認識(ASR)システムおよびデバイスが展開され得る。これらの環境のうちのいくつかは、住宅、企業、車両などを含む。
【0010】
たとえば住宅および企業においては、ASRは、大型電化製品(たとえばオーブン、冷蔵庫、皿洗い機、洗濯機およびドライヤ)、小型電化製品(たとえばトースタ、サーモスタット、コーヒーメーカ、マイクロ波オーブン)、メディアデバイス(ステレオ、テレビ、デジタルビデオレコーダ、デジタルビデオプレーヤ)といったデバイスに対する音声制御、ならびに、ドア、ライト、およびカーテンなどに対する音声制御を提供し得る。車両においては、ASRは、通信技術(たとえば携帯電話)、メディアデバイス(たとえばラジオおよびビデオプレーヤ)、マッピング技術(たとえばナビゲーションシステム)、および環境制御(たとえば暖房および空調)などのハンズフリーの使用を提供し得る。ある例において、ASRは、音声検索クエリを、検索結果を得るために検索エンジンに送られ得るテキストストリングに変換するよう使用され得る。音声制御についての潜在的な使用は多く存在し、これらの例は限定としてみなされるべきでない。
【0011】
ある例において、ASRは、話者から発声を受け取るデバイスにて行なわれ得る。このデバイスベースのASRの場合、各ユーザデバイスはASRモジュールを有するよう構成され得る。別の例では、音声認識はリモートネットワークサーバ(たとえばインターネット上のサーバまたはサーバのクラスタ)にて行なわれ得る。この例において、音声認識はユーザデバイスにASRを組み入れないかもしれないが、ユーザデバイスはそれでも、(たとえばインターネットアクセスを通じて)リモートASRシステムとの通信パスを有するように構成され得る。
【0012】
さらに別の例では、音声認識は、リモートのデバイスにASRの少なくともいくつかの局面の実行をオフロードするローカルのASRシステムの使用によって行なわれ得る。ローカルのASRシステムは、ASRを行なう専用の1つ以上のデバイスか、または、たとえば汎用コンピューティングプラットフォーム上で動作するように構成されるソフトウェアであり得る。このローカルのASRシステムは、住宅、企業、車両などに物理的に設置され得、ユーザデバイスがインターネットアクセスを有していなくても動作し得る。
【0013】
いくつかの例において、ユーザデバイスは話者から発声を受け取り、ローカルのASRシステムに発声の表現を送信し得る。ローカルのASRシステムは、当該発声の表現を発声のテキスト表現へと転写し、このテキスト表現をユーザデバイスに送信し得る。代替的には、ローカルのASRシステムはその代りに、当該発声の転写に基づいたコマンドをユーザデバイスに送信し得る。このコマンドは、発声の転写されたテキスト表現に基づき得るか、または、当該発声の表現からより直接的に導出され得る。また、当該コマンドは、ユーザデバイスがサポートするコマンドセットまたはコマンド言語であり得る。一例において、発声は音声検索クエリを表わし得、ローカルのASRシステムは、検索エンジンに音声検索クエリの転写を送信して、ユーザデバイスに通信され得るそれぞれの検索結果を得るように構成され得る。
【0014】
図1は、実施形態に従った例示的なASRシステムを示す。ランタイムにおいて、ASRシステムへの入力は発声100を含み得、出力は1つ以上のテキストストリングと、おそらく関連付けられる信頼水準101とを含み得る。ASRシステムのコンポーネントは、特徴ベクトル104を生成するように構成され得る特徴解析モジュール102と、パターン分類モジュール106と、音響モデル108と、辞書110と、言語モデル112とを含み得る。パターン分類モジュール106は、音響モデル108、辞書110および言語モデル112のさまざまな局面を組み込み得る。
【0015】
図1に示される例示的なASRシステムは単に例示目的のためのものである。異なるコンポーネント、コンポーネント同士の間の異なる関係、および/または、異なる処理を含む他のASRシステムの構成が可能であり得る。
【0016】
特徴解析モジュール102は、発声100を受け取るように構成され得る。発声100は、人間のスピーチのアナログまたはデジタル表現を含み得、同様にバックグラウンドノイズも含み得る場合がある。特徴解析モジュール102は、発声100を1つ以上の特徴ベクトル104のシーケンスに変換するように構成され得る。特徴ベクトル104の各特徴ベクトルは、発声100の少なくとも一部の音響特徴の時間および/またはスペクトル表現を含み得る。たとえば、特徴ベクトルはこのような部分のメル周波数ケプストラム係数(mel-frequency cepstrum coefficient)を含み得る。
【0017】
メル周波数ケプストラム係数は、発声100の部分の短期のパワースペクトルを表わし得る。それらはたとえば、周波数の非線形メル尺度上の対数パワースペクトルの線形コサイン変換に基づき得る。(メル尺度は、ピッチの実際の周波数が互いから等しく遠く離れていなくても互いからほぼ等しく離れていると聴き手が主観的に知覚するピッチの尺度であり得る)。
【0018】
これらの係数を導出するために、特徴解析モジュール102は、発声100をサンプリングおよびクオンタイズし、発声100を分割して15ミリ秒のオーバーラップするフレームまたはオーバーラップしないフレームにし、当該フレームに対してスペクトル分析を行なって各フレームのスペクトル成分を導出するように構成され得る。特徴解析モジュール102はさらに、ノイズ除去を行ない、標準スペクトル係数をメル周波数ケプストラム係数に変換し、メル周波数ケプストラム係数の一次および二次ケプストラム導関数を計算するように構成され得る。
【0019】
一次ケプストラム係数導関数は、2つ以上の連続するフレームのウィンドウにわたって行なわれる線形回帰の傾きに基づいて計算され得る。二次ケプストラム係数導関数は、一次ケプストラム係数導関数の2つ以上の連続する組のウィンドウにわたって行なわれる線形回帰の斜きに基づいて計算され得る。しかしながら、一次および二次ケプストラム係数導関数を計算する他の方法が存在し得る。
【0020】
いくつかの例では、発声100の1つ以上のフレームは、メル周波数ケプストラム係数、一次ケプストラム係数導関数および二次ケプストラム係数導関数の特徴ベクトルによって表わされ得る。たとえば、特徴ベクトルは、13の係数、13の一次導関数および13の二次導関数を含み得、したがって長さが39である。しかしながら、特徴ベクトルは、他の可能な例において、特徴の異なる組合せを使用し得る。
【0021】
パターン分類モジュール106は、特徴解析モジュール102から特徴ベクトル104のシーケンスを受け取り、発声100の1つ以上のテキストストリングの転写101を出力として生成するよう構成され得る。各転写101には、当該転写が正しい可能性の推定(たとえば80%の信頼性、90%の信頼性など)を示すそれぞれの信頼水準が伴い得る。
【0022】
テキストストリングの転写101を生成するために、パターン分類モジュール106は、音響モデル108、辞書110および/もしくは言語モデル112の局面を含むかまたは組み込むように構成され得る。いくつかの例において、パターン分類モジュール106はさらに、ワードのシーケンスを表わす検索グラフまたは話された発声に現われるサブワード音響特性を使用するように構成され得る。
【0023】
音響モデル108は、話されたワードおよび/またはサブワードの音の特定のシーケンスから特徴ベクトル104が導出され得た確率を決定するように構成され得る。これは、特徴ベクトル104のシーケンスを1つ以上の音素にマッピングし、その後、音素のシーケンスを1つ以上のワードにマッピングすることを伴い得る。
【0024】
音素は、発声の他のセグメントに対する意味のある対比を含む発声の最も小さなセグメントであると考えられ得る。したがって、ワードは典型的に1つ以上の音素を含む。たとえば、音素は文字の発声と考えられ得るが、いくつかの音素は複数の文字を示し得る。「cat」というワードのアメリカ英語の発音についての例示的な音素のスペリングは、/k/、/ae/、および/t/という音素を含む/k/ /ae/ /t/であり得る。「dog」というワードについての別の例示的な音素のスペリングは、/d/、/aw/、および/g/という音素を含む/d/ /aw/ /g/であり得る。
【0025】
異なる音素のアルファベットが存在し、これらのアルファベットは、その中のさまざまな音素について異なるテキスト表現を有し得る。たとえば「a」という文字は、「cat」における音については/ae/という音素によって表わされ得、「ate」における音については/ey/という音素によって表わされ得、「beta」における音については/ah/という音素によって表わされ得る。他の音素表現が可能である。
【0026】
アメリカ英語についての一般的な音素のアルファベットは、約40個の異なる音素を含む。これらの音素の各々は、特徴ベクトル値の異なる分布に関連付けられ得る。音響モデル108は、特徴ベクトルを上記40個の音素の各々についての分布と比較し、特徴ベクトルによって最も可能性が高く表わされる1つ以上の音素を発見することによって、特徴ベクトルにおいて音素を推定するように構成され得る。
【0027】
一例では、音響モデル108は、隠れマルコフモデル(hidden Markov model(HMM))を含み得る。HMMは、観察されない(すなわち隠された)状態を有するマルコフ過程としてシステムをモデル化し得る。各HMM状態は、状態の統計的な挙動を特徴付ける多変数のガウス分布として表わされ得る。さらに、各状態はまた、現在の状態から別の状態に遷移する確率を特定する1つ以上の状態遷移に関連付けられ得る。
【0028】
ASRシステムに適用されると、多変数のガウス分布と、各状態についての状態遷移との組合せは、1つ以上の音素の期間にわたる特徴ベクトルの時間シーケンスを規定し得る。代替的または付加的には、HMMは、ワードを規定する音素のシーケンスをモデル化し得る。したがって、いくつかのHMMベースの音響モデルはまた、1つ以上のワードに特徴ベクトルのシーケンスをマッピングする場合、音素コンテキストを考慮に入れ得る。
【0029】
図2は、実施形態に従った例示的な音響モデル200の局面を示す。音響モデル200は、「cat」というワードを構成する音素のシーケンスを規定する。各音素は、それぞれ音素の始め、音素の中間および音素の終了時での統計的な特性を表わす初期状態、中間状態および終了状態を有する3状態のHMMによって表わされる。各状態(たとえば、状態/k/1,状態/k/2など)は、音素を表わし得るとともに、1つ以上の遷移を含み得る。
【0030】
音響モデル200は、適切な遷移に、ワードにおける各音素についてのそれぞれの3状態のHMMを一緒に連結することによって、ワードを表わし得る。これらの連結は、辞書110における情報に基づいて行なわれ得る。いくつかの実現例では、音響モデル200において、1つの音素につきより多くの状態またはより少ない状態が使用され得る。
【0031】
音響モデル200は、音素の状態の各々についての表現が得られ得るように、多数のコンテキスト(たとえばさまざまなワードおよび文)における各音素の録音を使用してトレーニングされ得る。これらの表現は、上に論じられた多変数のガウス分布を含み得る。
【0032】
音響モデル200をトレーニングするために、話された音素を含むおそらく多くの発声が各々、転写に関連付けられ得る。これらの発声は、ワードおよび文などであり得、日常の発話または何らかの他の源の録音から得られ得る。転写は、発声の自動または手動(人間が作成した)テキストストリングであり得る。
【0033】
当該発声は、それぞれの転写に従ってセグメント化され得る。たとえば、音響モデル200のトレーニングは、(たとえばバウム−ウェルチ(Baum-Welch)および/またはビタビ(Viterbi)アライメント法を用いて)話されたストリングをユニットへとセグメント化し、その後、当該セグメント化された発声を使用して各音素状態について統計的分布を構築することを伴う。
【0034】
この結果、より多くのデータ(発声およびそれらの関連付けられる転写)がトレーニングに使用されると、より正確な音響モデルが生成され得る。しかしながら、よくトレーニングされた音響モデルでさえ、トレーニングされなかったドメインにおいてASRのために使用されると正確さが制限され得る。たとえば、所与の音響モデルが多くのアメリカ英語の話者の発声によってトレーニングされる場合、この音響モデルは、アメリカ英語のASRのために使用されると良好に機能し得るが、たとえばイギリス英語のASRのために使用されるとあまり正確でなくなり得る。
【0035】
また、音響モデル200は、多くの話者の発声を使用してトレーニングされる場合、話者のすべてにわたったこの音素の発音の統計的な平均として各音素を表わすことになりやすい。したがって、この態様でトレーニングされた場合の音響モデル200は、任意の特定の話者ではなく、仮定の平均的な話者の発音および使用を表わし得る。
【0036】
再び
図1を参照して、辞書110は、音素とワードとの間のあらかじめ確立されるマッピングを規定し得る。このマッピングは、たとえば何万または何十万の音素パターン対ワードマッピングのリストを含み得る。したがって、いくつかの例において、辞書110は、下に示されるテーブル1のようなルックアップテーブルを含み得る。テーブル1は、ASRシステムが認識を試みている対応するワードについてパターン分類モジュール106が識別するように構成され得る音素のシーケンスを辞書110がどのようにリスト化し得るかを示す。したがって、辞書110は、音響モデル200によって示されるワードの音素状態表現を展開する際に使用され得る。
【0038】
言語モデル112は、ASRシステムへの入力発声において発生する音素またはワードの当該シーケンスの可能性に基づいて、音素またはワードのシーケンスに確率を割り当てるように構成され得る。したがってたとえば、言語モデル112は、フレーズにおけるn−1前のワードのパターンの値が与えられると、(発声から転写されたフレーズにおけるn番目のワードについて)w
nの条件付き確率を規定し得る。例示的な条件付き確率は次のように表現され得る。
【0040】
一般に、言語モデルは、たとえばパターン分類モジュール106において表わされるn個の音素またはワードのシーケンスであり得るnグラム(n-gram)上で動作し得る。5より大きいnの値を有する言語モデルは、大きなメモリまたはストレージスペースを必要し得、したがってより小さなnグラム(たとえば3グラム(トライグラム(tri-gram)とも称される)が、許容できる結果を効率的に産出するために使用され得る。トライグラムは、例示目的で本願明細書において使用される。しかしながら、如何なる値のnも本願明細書における例と共に使用され得る。
【0041】
言語モデルは、ワードのテキストストリングまたはシーケンスのコーパスの分析を通じてトレーニングされ得る。このコーパスは、たとえば何百、何千、何百万またはそれ以上といった多くのワードを含み得る。これらのワードは、ASRシステムのユーザが話した発声および/または書面から得られ得る。たとえば、言語モデル112は、人間のスピーチ、書かれたテキスト(たとえば電子メール、ウェブページ、レポート、学術論文、ワードプロセシング文書など)、および検索クエリなどにおいて発生するワードパターンに基づいて、決定または発展され得る。
【0042】
このようなコーパスから、コーパスにおける出現のそれぞれの数に基づいて、トライグラムの確率が推定され得る。言いかえれば、C(w
1,w
2,w
3)がコーパスにおけるワードw
1,w
2,w
3のシーケンスの発生の回数である場合、当該ワードのシーケンスについて発生確率は次のように表現され得る。
【0044】
したがって、言語モデル112は条件付き確率のテーブルとして表わされ得る。テーブル2は、言語モデル112の基礎を形成し得るテーブルの例を示す。特に、テーブル2はトライグラムの条件付き確率を含む。
【0046】
「cat and」という2グラムの接頭辞(prefix)について、テーブル2は、コーパスにおける観察された発生に基づき、次の1グラムが「dog」である時が50%であることを示す。同様に、35%の時、次の1グラムは「mouse」であり、14%の時、次の1グラムは「bird」であり、1%の時、次の1グラムは「fiddle」である。完全にトレーニングされたASRシステムでは、言語モデル112はさらに多くのエントリを含み、これらのエントリは単に1つより多い2グラムの接頭辞を含み得る。
【0047】
音響モデル108および言語モデル112がひとたび適切にトレーニングされると、特徴分析モデル102およびパターン分類モジュール106はASRを行なうように構成され得る。入力発声100が提供されると、ASRシステムは、言語モデル112から有効なワードシーケンスのスペースを検索し、発声100において話された最大の可能性を有するワードシーケンスを発見し得る。しかしながら、検索スペースのサイズはかなり大きくなり得、検索スペースを低減する方法は、このような検索を計算上より効率的にさせ得る。例として、潜在的に桁のオーダで検索の複雑さを低減するためにヒューリスティック技術が使用され得る。検索スペースを限定する他の方法が可能である。たとえば、検索スペースは所与の期間においてポピュラーなフレーズに制限され得る。
【0048】
有限状態トランスデューサ(finite state transducer(FST))が、単一のワードにマッピングする複数の音素パターンを簡潔に表わすために使用され得る。「data」、「either」、「tomato」および「potato」のようないくつかのワードは、複数の発音を有する。これらの発音についての音素シーケンスは、1ワードにつき、単一のFSTにおいて表わされ得る。
【0049】
効率的な音素レベルのFSTを作り出すこのプロセスは、辞書110における各ワードについて行なわれ得、結果得られるワードFSTは、言語モデル112を使用して、センテンスFSTへと組み合わせられ得る。最終的に、音素、ワードおよびワードのシーケンスについての状態のネットワークが発達され得、コンパクトな検索グラフにおいて表わされ得る。
【0050】
図3は、実施形態に従ったASRシステムの例示的な検索グラフ300を示す。この例示的な検索グラフ300は、ASRシステムにおいて使用され得る検索グラフよりも小さくて複雑ではなく、例示のために使用される。特に、検索グラフ300は、「catapult」、「cat and mouse」、「cat and dog」、「cat」および「cap」といった5つの入力発声によりトレーニングされた。
【0051】
検索グラフ300における各円は、音素にマッピングされた入力発声の処理に関連付けられる状態を表わし得る。単純さのために、検索グラフ300における各音素は、複数の状態ではなく単一の状態で表わされる。さらに、
図3を簡素化するために、自己遷移(self-transition)が検索グラフ300から省略される。
【0052】
検索グラフ300における状態は、「x[y]z」というフォーマットを使用して、入力発声の現在の音素コンテキストに基づいて命名されており、これにより、考えられている現在の音素であるyが音素xの左のコンテキストを有し、音素zの右のコンテキストを有することを示す。言いかえれば、状態「x[y]z」は、考えられている現在の音素がyであり、当該発声において以前に考えられた音素がxであり、発声において考えられる次の音素がzである発声を処理することにおけるポイントを示す。発声の開始部および発声の終了部は、「#」文字によって表わされ、ゼロの音素(null phoneme)とも称され得る。
【0053】
終端状態は、引用において認識されたワードまたはフレーズによって表わされ得る。検索グラフ300は、ワードまたはワードのシーケンス(すなわちフレーズ)の認識を表わす、「catapult」、「cat and mouse」、「cat and dog」、「cat」および「cap」のような5つの終端状態を含む。
【0054】
1つの状態から別の状態までの遷移は、コーパスにおける音素の観察された順番を表わし得る。たとえば、「#[k]ae」という状態は、左のコンテキストがゼロの音素であり右のコンテキストが「ae」の音素である「k」音素の認識を表わす。「#[k]ae」という状態からは2つの遷移が存在し、その1つは次の音素(「ae」の後の音素)が「t」である遷移であり、もう1つは次の音素が「p」である遷移である。
【0055】
音響モデル108、辞書110および言語モデル112に基づき、状態および/または遷移の1つ以上にコストが割り当てられ得る。たとえば、特定の音素パターンがまれな場合、その音素パターンを表わす状態への遷移は、より一般的な音素パターンを表わす状態への遷移よりも高いコストを有し得る。同様に、言語モデル(たとえばテーブル2参照)からの条件付き確率も、状態および/または遷移にコストを割り当てるために使用され得る。たとえば、テーブル2において、「cat and」というワードを有するフレーズ与えられると、当該フレーズにおける次のワードが「dog」である条件付き確率は0.5である一方、当該フレーズにおける次のワードが「mouse」である条件付き確率は0.35である。したがって、状態「ae[n]d」から状態「n[d]m」への遷移は、状態「ae[n]d」から状態「n[d]d」への遷移よりも高いコストを有し得る。
【0056】
任意の状態、状態間の遷移、およびそれに関連付けられるコストを含む検索グラフ300は、新しい入力発声についてテキストストリングの転写を推定するように使用され得る。たとえば、パターン分類モジュール106は、検索グラフ300に基づいて、入力発声とマッチングする1つ以上のワードのシーケンスを決定し得る。パターン分類モジュール106は、以下を求めることを試みるように構成され得る。
【0058】
式中aは、入力発声から導出された特徴ベクトルのストリームであり、P(a|w)は、それらの特徴ベクトルがワードシーケンスwによって生成される確率を表わし、P(w)は、言語モデル112によってwに割り当てられた確率である。たとえば、P(w)は、上で論じたようなnグラムの条件付き確率と他のファクタとに基づき得る。関数argmax
wは、P(a|w)P(w)を最大化するwの値を返し得る。
【0059】
再び
図1を参照して、発声100とマッチングし得るテキストストリングを発見するために、パターン分類モジュール106は、特徴ベクトル104に基づいて、検索グラフ300における初期状態から検索グラフ300における終端状態へのパスの発見を試みるように構成され得る。このプロセスは、パターン分類モジュール106が、検索グラフ300に対して幅優先探索(breadth-first search)、Aスター(A*)探索(A-star(A*) search)、ビーム探索(beam search)、または何らかの他のタイプの探索を行なうことを伴い得る。パターン分類モジュール106は、状態に関連付けられるコストおよび/または各パスに関連付けられる遷移に基づいて、検索グラフ300を通じて、1つ以上のパスにトータルコストを割り当てるように構成され得る。これらのコストのうちのいくつかはたとえば、発声の特定のセグメントがパスにおける音素の特定のシーケンスにマッピングする信頼水準に基づき得る。
【0060】
例として、発声100はフレーズ「cat and dog」を含み得、パターン分類モジュール106は、初期状態「#[k]ae」で始まり終端状態「cat and dog」で終わるパスを発見するために、検索グラフ300を通じて音素ごとに実行するように構成され得る。パターン分類モジュール106はさらに、検索グラフ300を通じて、1つ以上の付加的なパスを発見するように構成され得る。たとえば、パターン分類モジュール106はさらに、初期状態「#[k]ae」を有し終端状態「cat and mouse」で終わるパスと、初期状態「#[k]ae」を有し終端状態「catapult」で終わるパスとに発声100を関連付けるように構成され得る。しかしながら、パターン分類モジュール106は、他のパスによりも終端状態「cat and dog」を有するパスに低いコスト(または高い発生確率)を割り当てるように構成され得る。結果として、終端状態「cat and dog」を有するパスは、入力発声100について最も可能性のある転写として選択され得る。
【0061】
ASRシステムは多くの異なる態様で動作され得る。上記の例は、例示目的で示されており、ASRシステムが動作する唯一の態様ではなくてもよい。
【0062】
上述したように、ASRシステムの音声認識データベースにおける検索スペースはかなり大きくなり得る。いくつかの例では、音声認識データベースを作成するASRシステムは、統計的な言語モデルを生成するために、タイプされたクエリ、ニュース記事および他の材料といったドキュメントソースをマイニングするように構成され得る。たとえば、言語モデルは、ある確率をすべての可能性のあるワードシーケンスに割り当て得る。例では、言語モデルは、ドキュメントソースにおいて発生しないワードシーケンスを許容し得る、すなわち、言語モデルは、ドキュメントソースにおいて発生するまたは発生しないフレーズのワードの順列および組合せを許容し得る。ドキュメントソースにおいて発生しないシーケンスへの一般化は、スムージング(smoothing)と称され得る。
【0063】
スムージングは、ユーザがドキュメントソースに存在し得ないユニークまたは新しいフレーズを発し得るので、有用であり得る。しかしながら、ワードの順列および組合せを許容することは、無意味なワードシーケンスを作り出し得る。たとえば、元々のフレーズが「show me football results」である場合、無意味なワードシーケンスは「show results football me」であり得る。
【0064】
検索スペースの低減は、ASRシステムを計算上より効率的にさせ得る。一般に、ASRシステムのユーザは、高い程度の反復性で発声を生成し得る。いくつかの例では、発声の反復は、不定期間のトレンド(たとえば季節のスポーツについての結果)に基づき得る。他の例では、発声の反復は、発声が関連付けられ得るトピックのポピュラリティ(たとえばオリンピックのような所与の期間の現在のイベントに関連付けられる発声)に基づいて予測可能であり得る。例において、ASRシステムは、計算上効率的な言語モデルを生成するために、このような予測可能な反復を利用するように構成され得る。
【0065】
ある例では、ASRシステムが計算上効率的になるために、ASRシステムは、ポピュラーなフレーズに基づいてワードのシーケンスを生成するように構成され得る。さらに、ポピュラーなフレーズのワードのすべてのあらゆるシーケンスが、ポピュラーなフレーズにおけるワードの順序にかかわらず仮定されることを言語モデルが許容する代わりに、ASRシステムは、ポピュラーなフレーズのワードのグループピングまたはサブシーケンスの組を、ポピュラーなフレーズにおいてワードが発生するのと同じ順で当該グルーピングまたはサブシーケンスがワードを含むように、決定するように構成され得る。
【0066】
例示のための例として、ポピュラーなフレーズは、所与のシーケンス「word1 word2 word3 word4 word5」における5ワードを含み得る。所与の言語モデルは、サブシーケンスまたはグルーピング「word2 word3 word5」を許容し得るが、このサブシーケンスは元々のポピュラーなフレーズに存在しないので、より効率的な言語モデルではないかもしれない。これにより、ASRシステムのための検索スペースは、より高い精度および計算上の効率を可能にしつつ、限定または低減され得る。
【0067】
図4は、ある実施形態に従った、効率的な音声認識のための例示的な方法のフローチャートである。
【0068】
方法400は、ブロック402−406の1つ以上によって示されるように、1つ以上の動作、機能またはアクションを含み得る。ブロックは連続する順番で示されるが、いくつかの場合にはこれらのブロックは並列に行なわれ得、および/または、本願明細書において記載されるのとは異なる順番で行われ得る。さらに、さまざまなブロックが、より少ないブロックへと組み合わされ、付加的なブロックに分割され、および/または所望の実現例に基づいて除去され得る。
【0069】
さらに、方法400、他のプロセス、および本願明細書において開示された方法について、フローチャートは本例の1つの可能な実現例の機能および動作を示す。この点において、各ブロックは、プロセスにおいて特定の論理機能またはステップを実現するためのプロセッサによって実行可能な1つ以上の命令を含むモジュール、セグメントまたはプログラムコードの一部を表わし得る。プログラムコードは、たとえばディスクまたはハードドライブを含むストレージデバイスのような任意のタイプのコンピュータ読取可能媒体またはメモリ上に格納され得る。たとえば、コンピュータ読取可能媒体は、レジスタメモリ、プロセッサキャッシュおよびランダムアクセスメモリ(RAM)といった短期間の間にデータを格納するコンピュータ読取可能媒体のような一時的でないコンピュータ読取可能媒体またはメモリを含み得る。コンピュータ読取可能媒体はさらに、たとえばリードオンリーメモリ(ROM)、光学または磁気ディスク、コンパクトディスクリードオンリーメモリ(CD−ROM)といった二次的または持続性の長期間のストレージのような一時的でない媒体またはメモリを含み得る。コンピュータ読取可能媒体はさらに、任意の他の揮発性または不揮発性ストレージシステムであり得る。コンピュータ読取可能媒体は、たとえばコンピュータ読取可能記憶媒体、有形的ストレージデバイスまたは他の製造物品であると考えられ得る。
【0070】
さらに、方法400、他のプロセス、および本願明細書において開示される方法について、
図4における各ブロックは、当該プロセスにおいて特定の論理機能を行なうように配線される回路網を表わし得る。
【0071】
ブロック402では、方法400は、検索エンジンへの検索クエリの送信の頻度を示す情報をコンピューティングデバイスにて受け取ることを含み、当該検索クエリは、ワードのシーケンスを含み得る。コンピューティングデバイスはたとえば、携帯電話、携帯情報端末(PDA)、ラップトップ、ノートブック、またはネットブックコンピュータ、タブレットコンピューティングデバイス、ウェアラブルコンピューティングデバイス、クラウドベースのコンピューティングシステムにおけるサーバなどであり得る。
【0072】
ある例では、一般にスパイキング(spiking)と称される検索クエリアクティビティの急激な増加は、多くのソースに起因し得る。スパイキングは、休日またはスポーツイベントのような規則的もしくはポピュラーな発生に起因し得るか、または、注目のニュース項目のような不規則なイベントに起因し得る。一例において、コンピューティングデバイス(たとえばサーバ)は、ポピュラーなクエリまたはスパイキングクエリを識別するよう所与の期間における検索エンジンへのある検索クエリ(または複数の検索クエリ)の送信の頻度を追跡することに関連付けられる情報を受け取るように構成され得る。たとえば、所与の検索クエリは、所与のデバイス(たとえば携帯電話)のユーザによって発せられたテキストストリング(フレーズ)または音声検索クエリであり得る。例において、ポピュラーなクエリまたはスパイキングクエリは、毎日、毎週、または任意の他の単位時間内に識別または抽出され得る。
【0073】
再び
図4を参照して、ブロック404では、方法400は、検索クエリの送信の頻度がしきい値を越えることに基づいて、検索クエリのワードのシーケンスについて、1つ以上のワードが検索クエリのワードのシーケンスに発生する順番に基づく検索クエリの1つ以上のワードのグルーピングを決定することを含む。ある例において、検索エンジンへの検索クエリの送信の頻度を示す情報に基づいて、コンピューティングデバイスは、検索クエリのポピュラリティを示すメトリックを決定し、検索クエリが所与の期間においてポピュラーであるかどうかを識別するように構成され得る。たとえば、コンピューティングデバイスは、検索エンジンの使用履歴に基づいて、検索クエリの送信の頻度がしきい値を越える場合に検索クエリがポピュラーまたはスパイキング検索クエリとして指定され得るようにしきい値を決定するように構成され得る。
【0074】
ある例では、コンピューティングデバイスは、時間にわたるクエリの送信の時系列分析に基づいてメトリックを決定し、クエリのポピュラリティを決定するために当該メトリックをしきい値と比較するように構成され得る。当該メトリックはたとえば、クエリアクセレレーション(query acceleration)またはベロシティに関係付けられ得る。クエリベロシティはたとえば、インスタントクエリ要求ともっとも最近のクエリ要求との間の時間の差の逆数として計算され得る。当該時間の差は、dt=(このクエリインスタンスの時間−クエリが見られた最後の時間)として計算され得、クエリベロシティは1/dtとして決定され得る。所与のクエリについてのクエリアクセレレーションは、瞬間のクエリベロシティで乗算された、現在のクエリベロシティ(または平均のクエリベロシティ)と以前に決定されて、以前に計算されたクエリベロシティ(または以前に計算された平均クエリベロシティ)との間の差として決定され得る。メトリックは、クエリベロシティ、クエリアクセレレーション、または、時間にわたるクエリの送信の時系列分析に基づいて決定される他のパラメータの関数であり得る。他のパラメータまたはこれらのパラメータを計算する他の方法が可能である。
【0075】
方法400を説明するための例として、コンピューティングデバイスは、「hello world I am here」と「world war two」という2つのポピュラーなフレーズを、検索エンジンへの2つのクエリの送信のそれぞれの頻度に基づいて決定するように構成され得る。これらの2つの検索クエリの各々は、所与の順番でワードのシーケンスを含む。たとえば、検索クエリ「world war two」は、そのシーケンスにおいて「world」、「war」および「two」という3つのワードを含む。
【0076】
コンピューティングデバイスは、ワードが対応する検索クエリにおいて発生する順番に基づいて、ワードのグルーピングを決定するように構成され得る。たとえば、検索クエリ「world war two」に関して、コンピューティングデバイスは、以下のワードのグループピングを決定するように構成され得る。
【0078】
これらのグルーピングはファクタとも称され得る。シーケンスの大きな組について、当該グルーピングは、所与の検索クエリのサイズにおいて二次であり得、したがって、ワードのすべてのグルーピングを列挙することは禁止的であり得る。ファクタまたはグルーピングをより効率的に決定するために、コンピューティングデバイスは、検索クエリについて、オートマトン表現およびファクタグラフを決定または生成するように構成され得る。ファクタグラフはグルーピングをより簡潔に表わし得、より効率的な検索を可能にし得る。
【0079】
図5Aは、実施形態に従った、例示的な検索クエリについての例示的なオートマトン表現500を示す。オートマトン表現500は、両方の検索クエリ「hello world I am here」および「world war two」を表わす。オートマトン表現500は、初期状態502A、中間状態502Bおよび終端状態502Cのようなオートマトン状態を含む。オートマトン表現500はさらに、オートマトン弧504Aおよび504Bのようなオートマトン弧を含み、各オートマトン弧は、所与の検索クエリのワードのシーケンスからのワードに対応し得る。
【0080】
図5Bは、実施形態に従った、例示的な検索クエリのための例示的なバイグラム言語モデル506を示す。言語モデル506は、対応する検索クエリにおけるワードの順番にかかわらず、検索クエリのワードのすべての可能なグルーピングを許容する。
図5Bに示されるように、言語モデル506は複雑であり、「hello world here I」のようなワードの無意味なグルーピングを許容し得る。
【0081】
対照的に、検索クエリにおけるワードの順番に基づく、所与の検索クエリのワードの可能なグルーピングを簡潔に表わすファクタグラフは、オートマトン表現500に基づいて生成され得る。
図5Cは、実施形態に従った、例示的な検索クエリについての例示的なファクタグラフ508を示す。ファクタグラフ508は、
図5Bに示される言語モデル506ほど複雑ではなく、対応する検索クエリにおけるワードの順番に基づいてワードのグルーピングを可能にする。
【0082】
例として、ワードの所与のグルーピングを決定するために、コンピューティングデバイスは、第1のオートマトン状態(たとえば初期状態512A)に接続されるオートマトン弧(たとえば弧510A)によって表わされるワードを選択し、第1のオートマトン状態に隣接する第2のオートマトン状態(たとえば状態512B)へと継続し、第2の弧(たとえば弧510B)によって表わされるワードを選択してたとえばグルーピング「I am」を決定するように構成され得る。上記のグルーピングのうちの所与のグルーピングは、ファクタグラフ508において任意の所与の状態で開始されることが可能にされ得る。ファクタグラフ508は、「hello world I」のようなグルーピングを許容し得るが、「hello I」は許容しない。言いかえれば、ファクタグラフ508は、ワードをスキップすること、または、元々の検索クエリにおけるワードの順番から逸脱することを許容しない。これにより、ファクタグラフ508は、ワードが所与の検索クエリにおいて発生する順番に基づいて所与の検索クエリ上でワードのグルーピングを表わす簡潔で効率的な態様であると考えられ得る。
【0083】
コンピューティングデバイスは頻繁に(たとえば毎日)、(上述したようにブロック402にて)ポピュラーなクエリまたはスパイキングクエリを識別し、当該クエリについてファクタグラフ508のようなファクタグラフを構築または生成するように構成され得る。ファクタグラフ508のようなファクタグラフを生成することは、言語モデル506のような完全な言語モデルを構築するよりも効率的であり得る。更に、ファクタグラフ508は、ファクタグラフ508が効率的にサブシーケンスを許容するという事実により、言葉どおりのスパイキングクエリのみを許容することに関して、より多くの柔軟性を提供し得る。たとえば、「Albert Einstein Relativity」がポピュラーなクエリまたはスパイキングクエリであると識別されると、対応するファクタグラフは、検索エンジンに送信されると当該ポピュラーなクエリである「Albert Einstein Relativity」と同様の検索結果が得られ得るグルーピング「Einstein Relativity」および「Albert Einstein」を許容し得る。
【0084】
再び
図4を参照して、ブロック406では、方法400は、ワードの所与のシーケンスのコーパスを更新するよう、グルーピングを示す情報を音声認識システムに提供することを含み、音声認識システムは、ワードの所与のシーケンスのコーパスに基づいて、所与の話された発声を所与のワードのシーケンスに変換するように構成される。コンピューティングデバイス(たとえばサーバ)は、
図1に示されるASRシステムのような音声認識システムに結合または通信され得る。一例では、コンピューティングデバイスは音声認識システムを含み得る。
【0085】
例において、音声認識システムは、
図1における言語モード112のような言語モデルによって生成され得たワードの所与のシーケンスのコーパスを含む音声認識データベースを含み得る。音声認識システムは、所与の話された発声を受け取り、たとえば
図1−
図3に記載されるようにワードの所与のシーケンスのコーパスからのワードのシーケンスに所与の話された発声をマッチングするように構成され得る。コンピューティングデバイスは、スパイキング検索クエリのワードのグルーピングを示すファクタグラフを生成し、当該ファクタグラフおよび/またはグルーピングを音声認識システムに提供して当該グルーピングをコーパスに含む(たとえばコーパスを増強する)ように構成され得る。
【0086】
いくつかの例では、ポピュラーな検索クエリに対応するグルーピングでコーパスを更新した後に、コンピューティングデバイスは、コーパスにおける検索スペースが制限されるように構成され得る。たとえば、検索スペースは、少なくとも検索グラフによって表わされるグルーピングに制限され得る。別の例において、音声認識システムは、所与の話された発声をコーパスにおける他のワードシーケンスにマッチングすることを試みる前に、グルーピングのうちの1つに所与の話された発声をマッチングすることを試みるように構成され得る。
【0087】
さらに別の例では、音声認識システムは、コンピューティングデバイスによってポピュラーなクエリについて生成されたファクタグラフに対応する検索グラフ300のような検索グラフを生成するように構成され得る。たとえば、ファクタグラフに対応する検索グラフは、ワードの他のシーケンスについてのより大きな検索グラフに統合され得る。所与の発声とマッチングし得るテキストストリングを発見するために、音声認識システムは、検索グラフにおける初期状態から検索グラフにおける終端状態までのパスを発見することを試みるように構成され得、状態に関連付けられるコストおよび/または各パスに関連付けられる遷移に基づいて、検索グラフを通じて1つ以上のパスにトータルコストを割り当てるように構成され得る。ファクタグラフのワードのグルーピングに対応するパスには、たとえば他のパスよりも少ないコストが割り当てられ得る(すなわち高い確率が割り当てられ得る)。
【0088】
例において、音声認識システムは、ポピュラーまたはスパイキング検索クエリのワードのグルーピングのいずれかに関係付けられず当該グルーピングのいずれにもマッチングしない話された発声を受け取り得る。一例において、この可能性に対応するために、音声認識システムは、ファクタグラフに検索スペースを制限するように、すなわち、高い信頼性のマッチを識別するようファクタグラフのパスを追跡することを試みるように構成され得、このような試みが失敗すると、音声認識システムは、完全な言語モデルまたはコーパスの残りを利用してマッチを識別するように構成され得る。別の例において、音声認識システムは、並列でファクタグラフおよび完全な言語モデルを追跡し、マッチがファクタグラフまたは完全な言語モデルのいずれかにおいて識別されると検索を終えるように構成され得る。検索グラフおよび完全な言語モデルを組み合わせる他の検索ストラテジーが可能である。
【0089】
さらに、言語モデル112に関して上に記載されたように、コーパスにおけるワードの所与のシーケンスには、コーパスにおけるそれぞれの出現回数に基づいて推定され得る発生確率が割り当てられ得る。したがって、音声認識システムへのグルーピングの提供に加えて、コンピューティングデバイスは、グルーピングに基づいて発生確率を更新するように構成され得る。たとえば、コンピューティングデバイスは、コーパスにおけるワードの他のシーケンスの所与の発生確率より高いそれぞれの発生確率をグルーピングに割り当てるように構成され得る。割り当てられたそれぞれの確率は、検索クエリがどれくらいポピュラーかに基づき得、たとえば、検索エンジンへの検索クエリの送信の頻度を示す情報に基づき得る。
【0090】
いくつかの例において、グルーピングについての発生確率は時間変化し得る。いくつかの場合において、所与の検索クエリのポピュラリティは時間にわたって減少し得る。例示のための例として、オリンピックの結果に関する検索クエリは、オリンピックの期間の間と、おそらくオリンピックの後の所与の期間の間とにおいて、ポピュラーであり得る。しかしながら、このような検索クエリのポピュラリティは時間にわたって減少し得る。したがって、この例において、コンピューティングデバイスは、グループピングの発生確率が減衰するように構成され得る。他の例において、コンピューティングデバイスは、検索クエリがどれくらいポピュラーか連続的に評価し、これにより、検索クエリのポピュラリティへの更新された変化に基づいて確率を更新または修正するように構成され得る。
【0091】
図6は、例示的な実施形態に従った例示的な分散コンピューティングアーキテクチャを示す。
図6は、ネットワーク606を介してプログラマブルデバイス608a、608bおよび608cと通信するように構成されるサーバデバイス602および604を示す。ネットワーク606は、LAN、ワイドエリアネットワーク(WAN)、企業イントラネット、パブリックインターネット、またはネットワークにつながれたコンピューティングデバイス同士の間の通信パスを提供するように構成される任意の他のタイプのネットワークに対応し得る。また、ネットワーク606は、LAN、WAN、企業イントラネットおよび/またはパブリックインターネットの1つ以上の組合せに対応し得る。
【0092】
図6は3つのプログラマブルデバイスを示すが、分散アプリケーションアーキテクチャは、何十、何百または何千ものプログラマブルデバイスを取り扱い得る。さらに、プログラマブルデバイス608a、608bおよび608c(または任意の付加的なプログラマブルデバイス)は、通常のラップトップコンピュータ、デスクトップコンピュータ、ネットワークターミナル、および無線通信デバイスなど(たとえばタブレット、携帯電話またはスマートフォン、ウェアラブルコンピューティングデバイスなど)のような如何なる種類のコンピューティングデバイスであってもよい。いくつかの例において、プログラマブルデバイス608a、608bおよび608cはソフトウェアアプリケーションの設計および使用に専用であり得る。他の例において、プログラマブルデバイス608a、608bおよび608cは、多くのタスクを行なうように構成され、ソフトウェア開発ツールに専用ではなくてもよい汎用コンピュータであり得る。
【0093】
サーバデバイス602および604は、プログラマブルデバイス608a、608bおよび/または608cが要求するように1つ以上のサービスを行うように構成され得る。たとえば、サーバデバイス602および/または604は、プログラマブルデバイス608a−608cにコンテンツを供給し得る。コンテンツは、ウェブページ、ハイパーテキスト、スクリプト、コンパイルされたソフトウェアのようなバイナリデータ、画像、オーディオおよび/またはビデオを含み得るがこれらに限定されない。コンテンツは、圧縮されたおよび/または圧縮されていないコンテンツを含み得る。コンテンツは暗号化され得、および/または、暗号解読され得る。他のタイプのコンテンツが同様に可能である。
【0094】
別の例として、サーバデバイス602および/または604は、データベース、検索、計算、グラフィカル、オーディオ(たとえば音声認識)、ビデオ、ワールドワイドウェブ/インターネットの利用、および/または他の機能のために、ソフトウェアへのアクセスをプログラマブルデバイス608a−608cに提供し得る。サーバデバイスの他の多くの例が同様に可能である。
【0095】
サーバデバイス602および/または604は、クラウドベースのアプリケーションおよび/またはサービスのプログラムロジックおよび/またはデータを格納するクラウドベースのデバイスであり得る。いくつかの例において、サーバデバイス602および/または604は、単一のコンピューティングセンターに存在する単一のコンピューティングデバイスであり得る。他の例では、サーバデバイス602および/または604は、単一のコンピューティングセンターに複数のコンピューティングデバイスを含み得るか、または、多様な地理的位置における複数のコンピューティングセンターに配置される複数のコンピューティングデバイスを含み得る。たとえば、
図6は、異なる物理的な位置に存在するサーバデバイス602および604の各々を示す。
【0096】
いくつかの例において、サーバデバイス602および/または604でのデータおよびサービスは、一時的でない有形的なコンピュータ読取可能媒体(またはコンピュータ読取可能記憶媒体)に格納されプログラマブルデバイス608a、608bおよび608cならびに/または他のコンピューティングデバイスによってアクセス可能であるコンピュータ読取可能情報としてエンコードされ得る。いくつかの例において、サーバデバイス602および/または604でのデータは、単一のディスクドライブもしくは他の有形的な記憶媒体上に格納され得るか、または、1つ以上の多様な地理的位置に配置される複数のディスクドライブもしくは他の有形的な記憶媒体上に実現され得る。
【0097】
図7Aは、例示的な実施形態に従ったコンピューティングデバイス(たとえばシステム)のブロック図である。特に、
図7Aに示されるコンピューティングデバイス700は、サーバデバイス602,604、ネットワーク606、ならびに/またはプログラマブルデバイス608a、608bおよび608cのうちの1つ以上の1つ以上の機能を行なうように構成され得る。コンピューティングデバイス700は、ユーザインターフェイスモジュール702、ネットワーク通信インターフェイスモジュール704、1つ以上のプロセッサ706およびデータストレージ708を含み得、これらのすべてがシステムバス、ネットワークまたは他の接続メカニズム710を介してともにリンクされ得る。
【0098】
ユーザインターフェイスモジュール702は、データを外部ユーザの入出力デバイスに送信および/または外部ユーザの入出力デバイスから受信するように動作可能であり得る。たとえば、ユーザインターフェイスモジュール702は、キーボード、キーパッド、タッチスクリーン、コンピュータマウス、トラックボール、ジョイスティック、カメラ、音声認識/合成モジュールおよび/または他の同様のデバイスのように、データをユーザの入力デバイスに送信および/またはユーザの入力デバイスから受信するように構成され得る。ユーザインターフェイスモジュール702はさらに、1つ以上の陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)、デジタル光処理(DLP)技術を使用するディスプレイ、プリンタ、電球および/または他の同様のデバイスといった、現在公知であるかまたはこれから開発されるユーザ表示デバイスに出力を提供するように構成され得る。ユーザインターフェイスモジュール702はさらに、認識されたスピーチまたは可聴出力を生成するように構成され得、スピーカー、スピーカージャック、オーディオ出力ポート、オーディオ出力デバイス、イヤホンおよび/または他の同様のデバイスを含み得る。
【0099】
ネットワーク通信インターフェイスモジュール704は、
図6に示されるネットワーク606のようなネットワークを介して通信するように構成可能である1つ以上の無線インターフェイス712および/または1つ以上の有線インターフェイス714を含み得る。無線インターフェイス712は、1つ以上の無線トランスミッタ、レシーバ、ならびに/または、ブルートゥース(登録商標)トランシーバ、Zigbee(登録商標)トランシーバ、Wi−Fiトランシーバ、LTEトランシーバおよび/もしくは無線ネットワークを介して通信するよう構成可能である他の同様のタイプの無線トランシーバといったトランシーバを含み得る。有線インターフェイス714は、1つ以上の有線トランスミッタ、レシーバ、および/または、イーサーネット(登録商標)トランシーバ、ユニバーサルシリアルバス(USB)トランシーバ、あるいは、ツイストペアワイヤー、同軸ケーブル、光ファイバーリンクもしくは有線ネットワークへの同様の物理接続を介して通信するように構成可能である同様のトランシーバといったトランシーバを含み得る。
【0100】
いくつかの例において、ネットワーク通信インターフェイスモジュール704は、信頼性があり、セキュアで、および/または認証された通信を提供するように構成され得る。本願明細書において記載された各通信について、信頼性のある通信(すなわち保証されたメッセージの送達)を保証するための情報が、おそらくメッセージヘッダおよび/またはフッタの部分(たとえばパケット/メッセージシーケンシング情報、カプセル化ヘッダおよび/またはフッタ、サイズ/時間情報、ならびにCRCおよび/またはパリティーチェック値のような送信照合情報)として提供され得る。通信は、1つ以上の暗号プロトコルおよび/またはアルゴリズムを使用して、セキュアにされ得(たとえばエンコードもしくは暗号化され得)、および/または、暗号解読/デコードされ得、当該暗号プロトコルおよび/またはアルゴリズムの例は、DES、AES、RSA、Diffie−Hellman、および/またはDSAであるがこれらに限定されない。通信をセキュアにする(次いで暗号解読/デコードする)ために、他の暗号プロトコルおよび/またはアルゴリズムが、同様に使用され得るか、または、本願明細書にリストされたものに加えて使用され得る。
【0101】
プロセッサ706は、1つ以上の汎用プロセッサおよび/または1つ以上の特殊目的プロセッサ(たとえばデジタルシグナルプロセッサ、特定用途向け集積回路など)を含み得る。プロセッサ706は、データストレージ708に含められるコンピュータ読取可能プログラム命令715および/または本願明細書に記載されるような他の命令(たとえば方法400)を実行するように構成され得る。
【0102】
データストレージ708は、プロセッサ706の少なくとも1つによって読出および/またはアクセスすることができる1つ以上のコンピュータ読取可能記憶媒体を含み得る。1つ以上のコンピュータ読取可能記憶媒体は、全体的または部分的にプロセッサ706の少なくとも1つと統合され得る、光学、磁気、有機または他のメモリもしくはディスクストレージのような揮発性および/または不揮発性ストレージコンポーネントを含み得る。いくつかの例において、データストレージ708は、単一の物理デバイス(たとえば1つの光学、磁気、有機または他のメモリもしくはディスクストレージユニット)を使用して実現され得る一方、他の例では、データストレージ708は2つ以上の物理デバイスを使用して実現され得る。
【0103】
データストレージ708は、コンピュータ読取可能プログラム命令715と、おそらく付加的なデータとを含み得、当該付加的なデータはたとえばソフトウェアアプリケーションの1つ以上のプロセスおよび/またはスレッドによって使用されるデータであるがこれらに限定されない。いくつかの例において、データストレージ708は、本願明細書において記載された方法(たとえば方法400)および技術の少なくとも一部、ならびに/または、本願明細書において記載されたデバイスおよびネットワークの機能の少なくとも一部を行なうのに必要なストレージをさらに含み得る。
【0104】
図7Bは、例示的な実施形態に従ったクラウドベースのサーバシステムを示す。
図7Bにおいて、サーバデバイス602および/または604の機能は、3つのコンピューティングクラスタ716a、716bおよび716cの間で分散され得る。コンピューティングクラスタ716aは、1つ以上のコンピューティングデバイス718aと、クラスタストレージアレイ720aと、ローカルクラスタネットワーク724aによって接続されるクラスタルータ722aとを含み得る。同様に、コンピューティングクラスタ716bは、1つ以上のコンピューティングデバイス718bと、クラスタストレージアレイ720bと、ローカルクラスタネットワーク724bによって接続されるクラスタルータ722bとを含み得る。同様に、コンピューティングクラスタ716cは、1つ以上のコンピューティングデバイス718cと、クラスタストレージアレイ720cと、ローカルクラスタネットワーク724cによって接続されるクラスタルータ722cとを含み得る。
【0105】
いくつかの例において、コンピューティングクラスタ716a、716bおよび716cの各々は、等しい数のコンピューティングデバイスと、等しい数のクラスタストレージアレイと、等しい数のクラスタルータとを有し得る。しかしながら、他の例において、各コンピューティングクラスタは、異なる数のコンピューティングデバイスと、異なる数のクラスタストレージアレイと、異なる数のクラスタルータとを有し得る。各コンピューティングクラスタにおけるコンピューティングデバイス、クラスタストレージアレイおよびクラスタルータの数は、各コンピューティングクラスタに割り当てられるコンピューティングタスクに依存し得る。
【0106】
たとえば、コンピューティングクラスタ716aにおいて、コンピューティングデバイス718aは、サーバデバイス602のさまざまなコンピューティングタスクを行なうように構成され得る。一例において、サーバデバイス602のさまざまな機能は、コンピューティングデバイス718a、718bおよび718cの1つ以上の間で分散され得る。コンピューティングクラスタ716bおよび716cにおけるコンピューティングデバイス718bおよび718cは、コンピューティングクラスタ716aにおけるコンピューティングデバイス718aと同様に構成され得る。他方では、いくつかの例において、コンピューティングデバイス718a、718bおよび718cは、異なる機能を行なうように構成され得る。
【0107】
いくつかの例では、サーバデバイス602および/または604に関連付けられるコンピューティングタスクおよび格納データは、サーバデバイス602および/または604の処理要件、コンピューティングデバイス718a、718bおよび718cの処理能力、各コンピューティングクラスタにおけるコンピューティングデバイス同士間のネットワークリンクおよびコンピューティングクラスタ自身同士間のネットワークリンクのレイテンシ、ならびに/または、全体のシステムアーキテクチャのコスト、スピード、フォールトトレランス、弾性、効率および/もしくは他の設計ゴールに寄与し得る他のファクタに少なくとも部分的に基づいて、コンピューティングデバイス718a、718bおよび718cにわたって分散され得る。
【0108】
コンピューティングクラスタ716a、716bおよび716cのクラスタストレージアレイ720a,720b,720cは、ハードディスクドライブのグループへの読出および書込アクセスを管理するように構成されるディスクアレイコントローラを含むデータストレージアレイであり得る。単独またはそれぞれのコンピューティングデバイスに関連するディスクアレイコントローラはさらに、クラスタストレージアレイに格納されるデータのバックアップまたは冗長性のあるコピーを管理して、1つ以上のコンピューティングデバイスが1つ以上のクラスタストレージアレイにアクセスするのを防止するディスクドライブまたは他のクラスタストレージアレイの障害および/もしくはネットワーク障害に対して保護するように構成され得る。
【0109】
サーバデバイス602および/または604の機能がコンピューティングクラスタ716a、716bおよび716cのコンピューティングデバイス718a、718bおよび718cにわたって分散され得るのと同様の態様で、これらのコンポーネントのさまざまなアクティブ部分および/またはバックアップ部分がクラスタストレージアレイ720a、720bおよび720cにわたって分散され得る。たとえば、いくつかのクラスタストレージアレイは、サーバデバイス602のデータを格納するように構成され得る一方、他のクラスタストレージアレイは、サーバデバイス604のデータを格納し得る。さらに、いくつかのクラスタストレージアレイは、他のクラスタストレージアレイに格納されたデータのバックアップバージョンを格納するように構成され得る。
【0110】
コンピューティングクラスタ716a、716bおよび716cにおけるクラスタルータ722a、722bおよび722cは、コンピューティングクラスタのために内部通信および外部通信を提供するように構成されるネットワーク機器を含み得る。たとえば、コンピューティングクラスタ716aにおけるクラスタルータ722aは、1つ以上のインターネットスイッチングおよびルーティングデバイスを含み得、当該インターネットスイッチングおよびルーティングデバイスは、(i)ローカルクラスタネットワーク724aを介するコンピューティングデバイス718aとクラスタストレージアレイ720aとの間のローカルエリアネットワーク通信と、(ii)ネットワーク606へのワイドエリアネットワーク接続726aを介するコンピューティングクラスタ716aとコンピューティングクラスタ716bおよび716cとの間のワイドエリアネットワーク通信とを提供するように構成される。クラスタルータ722bおよび722cは、クラスタルータ722aと同様のネットワーク機器を含み得、クラスタルータ722bおよび722cは、クラスタルータ722aがコンピューティングクラスタ716aについて行なうのと同様のネットワーキング機能をコンピューティングクラスタ716bおよび716cについて行ない得る。
【0111】
いくつかの例では、クラスタルータ722a、722bおよび722cの構成は、コンピューティングデバイスおよびクラスタストレージアレイのデータ通信要件、クラスタルータ722a、722bおよび722cにおけるネットワーク機器のデータ通信能力、ローカルネットワーク724a,724b,724cのレイテンシおよびスループット、ワイドエリアネットワークリンク726a、726bおよび726cのレイテンシ、スループットおよびコスト、ならびに/または、モデレーションシステムアーキテクチャのコスト、スピード、フォールトトレランス、弾性、効率および/もしくは他の設計ゴールに寄与し得る他のファクタに少なくとも部分的に基づき得る。
【0112】
例において、
図6および
図7A−
図7Bに示される構成は、方法400に関して記載された実現例に使用され得る。たとえば、方法400を実現するコンピューティングデバイスは、クラウドベースのデバイス(たとえばサーバデバイス602および/または604)であり得る。この例において、コンピューティングデバイスは、
図6におけるプログラマブルデバイス608a−cまたは
図7Bのコンピューティングデバイス718a−cが送信した検索クエリに関連付けられる情報を受け取り、スパイキングクエリを決定し、対応するファクタグラフを生成するように構成され得る。ファクタグラフは、サーバデバイス602および/または604といったクラウドベースのデバイスにおいても実現され得る音声認識システムに提供され得る。
【0113】
いくつかの例において、開示された方法(たとえば方法400)は、機械読取可能なフォーマットの一時的でないコンピュータ読取可能記憶媒体または他の一時的でない媒体もしくは製造物品上でエンコードされたコンピュータプログラム命令として実現され得る。
図8は、本願明細書において示された少なくともいくつかの実施形態に従って構成される、コンピューティングデバイス上でコンピュータプロセスを実行するためのコンピュータプログラムを含む例示的なコンピュータプログラムプロダクトの部分概念図を示す模式図である。
【0114】
一実施形態において、例示的なコンピュータプログラムプロダクト800は、信号担持媒体801を使用して提供される。信号担持媒体801は、1つ以上のプロセッサによって実行されると、
図1−
図7に関して上で記載された機能または機能の部分を提供し得る1つ以上のプログラム命令802を含み得る。いくつかの例では、信号担持媒体801はコンピュータ読取可能媒体803を含み得、コンピュータ読取可能媒体803はたとえば、ハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、デジタルテープ、メモリなどであるがこれらに限定されない。いくつかの実現例において、信号担持媒体801は、コンピュータ記録可能媒体804を含み得、コンピュータ記録可能媒体804はたとえば、メモリ、読出/書込(R/W)CD、R/W DVDなどであるがこれらに限定されない。いくつかの実現例では、信号担持媒体801は、通信媒体805を含み得、通信媒体805はたとえば、デジタルおよび/またはアナログ通信媒体(たとえば光ファイバーケーブル、導波路、有線通信リンク、無線通信リンクなど)であるがこれらに限定されない。したがって、たとえば信号担持媒体801は、無線形態の通信媒体805(たとえばIEEE802.11規格または他の伝送プロトコルに準拠する無線通信媒体)によって搬送され得る。
【0115】
1つ以上のプログラム命令802はたとえば、コンピュータ実行可能な命令および/またはロジックによって実現される命令であり得る。いくつかの例では、
図6におけるプログラマブルデバイス608a−cのようなコンピューティングデバイスまたは
図7Bのコンピューティングデバイス718a−cは、コンピュータ読取可能媒体803、コンピュータ記録可能媒体804および/または通信媒体805の1つ以上によってプログラマブルデバイス608a−cまたはコンピューティングデバイス718a−cに搬送されるプログラム命令802に応答して、さまざまな動作、機能またはアクションを提供するように構成され得る。
【0116】
本願明細書において記載される構成は例示目的のみであることが理解されるべきである。したがって、当業者は、その他の構成および他の要素(たとえばマシン、インターフェイス、機能、順番、および機能のグルーピングなど)が代わりに使用され得、また、いくつかの要素は所望の結果に従って全部省略され得ることを認識するだろう。さらに、記載される要素の多くは、任意の好適な組合せおよび位置において、離散的なまたは分散されたコンポーネントとして実現され得るか、または、他のコンポーネントに関連して実現され得る機能的なエンティティである。
【0117】
さまざまな局面および実施形態が本願明細書において開示されているが、他の局面および実施形態は当業者に明らかであろう。本願明細書において開示されたさまざまな局面および実施形態は例示目的のためであり、限定するようには意図されず、真の範囲は、添付の請求の範囲と、そのような請求の範囲が権利を与える均等物の完全な範囲とによって示される。さらに、本願明細書において使用される用語は、特定の実施形態を説明するためだけのものであり、限定するようには意図されないということが理解されるべきである。