(58)【調査した分野】(Int.Cl.,DB名)
前記登録プロセス中に、前記特定のホットワードを話すよう前記ユーザに対して促し、前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取るステップは、
その後に続く1つもしくは複数の言葉の意味解釈をトリガーするものであって、1つもしくは複数の言葉である特定のホットワードを話すよう前記ユーザに対して促すステップを含む、請求項1に記載の方法。
前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取ったことに応答して、個別化されたホットワード検出モデルを取得するステップは、
前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取った後に、前記特定のホットワードの前記ユーザによる別の発話に対応する追加のオーディオデータを受け取ることなく、前記個別化されたホットワード検出モデルを生成するステップを含む、請求項1に記載の方法。
前記その後の発話が、前記個別化されたホットワード検出モデルに少なくとも基づく前記特定のホットワードを含む可能性があるかどうかを決定したことに応答して、前記その後の発話の少なくとも一部に関して意味解釈を実行するステップを含む、請求項6に記載の方法。
1つまたは複数のコンピュータと、前記1つまたは複数のコンピュータによって実行されたときに、以下の動作を前記1つまたは複数のコンピュータに実行させることが可能である命令を記憶する1つまたは複数の記憶装置とを備えたシステムであって、前記動作は、
登録プロセス中に、特定のホットワードを話すようユーザに対してクライアントデバイスによって促し、前記ユーザによる前記特定のホットワードの単一の発話に対応するオーディオデータを前記クライアントデバイスによって受け取るステップと、
前記登録プロセス中の前記ユーザによる前記特定のホットワードの単一の発話に対応する前記オーディオデータを受け取ったことに応答して、個別化されたホットワード検出モデルを前記クライアントデバイスによって取得するステップであって、
前記個別化されたホットワード検出モデルは、
(i)前記登録プロセス中の前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータと、
(ii)他のユーザによる他の発話に対応する他の記憶されたオーディオデータであって、該他の記憶されたオーディオデータは、(i)同一の特定のホットワード、および、(ii)前記登録プロセス中に話された前記ユーザによる前記特定のホットワードの前記単一の発話に音響的に類似していると示されるものの両方である、前記他の記憶されたオーディオデータと
を含む音響データの生成された学習セットを使用して、前記ユーザによる前記特定のホットワードのあり得る発話を検出するように学習される、ステップと、
前記音響データの生成された学習セットを使用して、前記ユーザが前記特定のホットワードをいつ話すかを検出するように学習される前記個別化されたホットワード検出モデルを取得した後、前記個別化されたホットワード検出モデルを使用して、その後受け取ったオーディオデータ内の前記ユーザによる前記特定のホットワードの前記あり得る発話を前記クライアントデバイスによって検出するステップと
を含む、システム。
前記登録プロセス中に、前記特定のホットワードを話すよう前記ユーザに対して促し、前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取るステップは、
その後に続く1つもしくは複数の言葉の意味解釈をトリガーするものであって、1つもしくは複数の言葉である特定のホットワードを話すよう前記ユーザに対して促すステップを含む、請求項8に記載のシステム。
前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取ったことに応答して、個別化されたホットワード検出モデルを取得するステップは、
前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取った後に、前記特定のホットワードの前記ユーザによる別の発話に対応する追加のオーディオデータを受け取ることなく、前記個別化されたホットワード検出モデルを生成するステップを含む、請求項8に記載のシステム。
前記その後の発話が、前記個別化されたホットワード検出モデルに少なくとも基づく前記特定のホットワードを含む可能性があるかどうかを決定したことに応答して、前記その後の発話の少なくとも一部に関して意味解釈を実行するステップを含む、請求項13に記載のシステム。
1つまたは複数のコンピュータによって実行可能な命令を含むソフトウェアを記憶する非一時的コンピュータ可読媒体であって、そのような実行時に、前記命令が、前記1つまたは複数のコンピュータに以下の動作を実行させ、前記動作は、
登録プロセス中に、特定のホットワードを話すようユーザに対してクライアントデバイスによって促し、前記ユーザによる前記特定のホットワードの単一の発話に対応するオーディオデータを前記クライアントデバイスによって受け取るステップと、
前記登録プロセス中の前記ユーザによる前記特定のホットワードの単一の発話に対応する前記オーディオデータを受け取ったことに応答して、個別化されたホットワード検出モデルを前記クライアントデバイスによって取得するステップであって、
前記個別化されたホットワード検出モデルは、
(i)前記登録プロセス中の前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータと、
(ii)他のユーザによる他の発話に対応する他の記憶されたオーディオデータであって、該他の記憶されたオーディオデータは、(i)同一の特定のホットワード、および、(ii)前記登録プロセス中に話された前記ユーザによる前記特定のホットワードの前記単一の発話に音響的に類似していると示されるものの両方である、前記他の記憶されたオーディオデータと
を含む音響データの生成された学習セットを使用して、前記ユーザによる前記特定のホットワードのあり得る発話を検出するように学習される、ステップと、
前記音響データの生成された学習セットを使用して、前記ユーザが前記特定のホットワードをいつ話すかを検出するように学習される前記個別化されたホットワード検出モデルを取得した後、前記個別化されたホットワード検出モデルを使用して、その後受け取ったオーディオデータ内の前記ユーザによる前記特定のホットワードの前記あり得る発話を前記クライアントデバイスによって検出するステップと
を含む、媒体。
前記登録プロセス中に、前記特定のホットワードを話すよう前記ユーザに対して促し、前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取るステップは、
その後に続く1つもしくは複数の言葉の意味解釈をトリガーするものであって、1つもしくは複数の言葉である特定のホットワードを話すよう前記ユーザに対して促すステップを含む、請求項15に記載の媒体。
前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取ったことに応答して、個別化されたホットワード検出モデルを取得するステップは、
前記ユーザによる前記特定のホットワードの前記単一の発話に対応する前記オーディオデータを受け取った後に、前記特定のホットワードの前記ユーザによる別の発話に対応する追加のオーディオデータを受け取ることなく、前記個別化されたホットワード検出モデルを生成するステップを含む、請求項15に記載の媒体。
【発明の概要】
【課題を解決するための手段】
【0003】
一般に、本明細書で説明されている発明対象の一態様は、個別化されたホットワード検出モデル(individualized hotword detection model)を生成するためのプロセスを伴い得る。本明細書で使用されているように、「ホットワード」は、スリープ状態またはハイバネーション状態からデバイスをウェイクアップさせる言葉、および/または、その言葉またはその言葉に続く1つまたは複数の言葉、たとえば、ホットワードに続く音声コマンドに関する意味解釈をトリガーする言葉を指すものとしてよい。
【0004】
たとえば、発話「OK COMPUTER, DRIVE HOME」の中の、言葉「OK COMPUTER」は、その後に続く言葉「DRIVE HOME」に関する意味解釈をトリガーするホットワードであってよく、言葉「DRIVE HOME」は、ユーザの家までの道順を提供するための音声コマンドに対応し得る。システムが、発話「OK COMPUTER, DRIVE HOME」に対応する音声を受け取ったときに、システムは、その発話がホットワード「OK COMPUTER」から始まると決定し、それに応答して、その音声を文字に起こし、音声コマンド「DRIVE HOME」の文字起こしに関して意味解釈を実行し、ユーザが車で家に帰る道順を出力することができる。
【0005】
ホットワードは、システムに向けられていない音声を潜在的にピックアップし得る「常時オン」システムに対して有用であり得る。たとえば、ホットワードの使用は、発話が環境内に存在する別の個人に向けられるのと反対に、与えられた発話がシステムにいつ向けられたかをシステムが識別するのを助け得る。そうする際に、システムは、ホットワードを含まない音声または発話に関する、大量の計算を必要とする処理、たとえば、意味解釈を回避することができる。
【0006】
ホットワードの使用は、音声ベースのシステムの信頼性を改善し得る。たとえば、ユーザによって発せられた音声コマンドを認識し、音声コマンドに依存してアクションが実行されることを引き起こすシステムにおいて、ホットワードの使用は、システムがユーザの意図された、より高い割合の音声コマンドを認識することを確実にし得る。これは、システムをより信頼性の高いものにし、またユーザに対するシステムの使い勝手も改善することは理解されるであろう。別の効果は、システムのユーザが、音声コマンドとしてシステムによって認識されるために意図された音声コマンドを繰り返されなければならない頻度が低減されることである。これは、システムがユーザからの音声または発話を解釈するか、または再解釈しなければならない頻度を潜在的に低減することによってシステム内の計算リソース(たとえば、メモリおよび処理リソース)を節減することができる。
【0007】
システムは、ホットワード検出モデルに基づき発話がホットワードを含むことを検出し得る。しかしながら、異なるユーザは、異なる方法で同じホットワードを発音し得る。したがって、システムは、何人かのユーザがホットワードをいつ話すかを検出できない。システムは、個別化されたホットワード検出モデルを生成することに基づきホットワードの検出を高めることができる。しかしながら、ホットワード検出モデルを生成することは、数千もの発話を使用することがあり、ユーザは、数千もの登録発話(enrollment utterance)を行うことを望まない可能性がある。したがって、ユーザによる1つまたは複数の登録発話を受け取った後に、システムは、他のユーザによるホットワードの他の発話を識別し、ユーザによる登録発話に類似する発話を選択し、選択された発話および登録発話を使用して個別化されたホットワード検出モデルを生成することができる。
【0008】
いくつかの態様では、本明細書で説明されている発明対象は、ユーザによって話された登録発話を表す登録音響データを取得するアクションと、他のユーザによって話された発話を表す候補音響データのセットを取得するアクションと、候補音響データのセットの各候補音響データについて、登録音響データと候補音響データとの間の類似性を表す類似度スコアを決定するアクションと、その類似度スコアに少なくとも基づき候補音響データのセットから候補音響データのサブセットを選択するアクションと、候補音響データのサブセットに基づき検出モデルを生成するアクションと、ユーザによって話された発話を検出する際に使用するための検出モデルを提供するアクションとを含み得る方法で具現化され得る。
【0009】
他のバージョンは、対応するシステムと、装置と、これらの方法のアクションを実行するように構成され、コンピュータ記憶デバイス上に符号化されたコンピュータプログラムとを含む。
【0010】
これらおよび他のバージョンは各々、以下の特徴のうちの1つまたは複数を適宜含み得る。たとえば、いくつかの実装形態において、ユーザによって話される登録発話を表す登録音響データを取得することは、ユーザによって話された所定の語句の複数の発話に対する登録音響データを取得することを含む。
【0011】
いくつかの態様において、他のユーザによって話される発話を表す候補音響データのセットを取得することは、登録発話が所定の語句の発話であると決定すること、および他のユーザによって話される所定の語句の発話を表す候補音響データを識別することを含む。
【0012】
いくつかの態様において、候補音響データのセットの各候補音響データについて、類似度スコアを決定することは、登録音響データと候補音響データとの間の距離を決定することと、距離に基づき類似度スコアを決定することとを含む。
【0013】
いくつかの実装形態において、候補音響データのセットの各候補音響データについて、類似度スコアを決定することは、候補音響データによって表される発話を話した他のユーザの人口学的情報と、登録発話を話したユーザの人口学的情報とに基づき類似度スコアを決定することを含む。
【0014】
いくつかの態様において、登録音響データと候補音響データとの間の類似度を表す候補音響データの類似度スコアに少なくとも基づき候補音響データのセットから候補音響データのサブセットを選択することは、所定の数の候補音響データを選択することに基づく。
【0015】
いくつかの態様において、候補音響データのサブセットに基づき検出モデルを生成することは、候補音響データのサブセットを使用してニューラルネットワークを学習させることを含む。いくつかの実装形態において、追加のアクションは、検出モデルを使用して所定の語句の発話を検出することを含む。
【0016】
本明細書で説明されている発明対象の1つまたは複数の実装形態の詳細は、付属の図面および以下の説明で述べられる。発明対象の他の潜在力のある特徴、態様、および利点は、説明、図面、および請求項から明らかになるであろう。
【発明を実施するための形態】
【0018】
さまざまな図面内の類似の参照記号は、類似の要素を示す。
【0019】
図1は、個別化されたホットワード検出モデルを生成するための例示的なシステム100のブロック図である。簡単に言うと、以下でさらに詳しく説明されるように、システム100は、クライアントデバイス120と、候補音響データスコアラー134、候補音響データセレクター136、およびホットワード検出モデル生成器140を備えるサーバ130とを備え得る。
【0020】
クライアントデバイス120は、スマートフォン、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータ、またはユーザ110がホットワードをいつ言ったかを検出するように構成された他の何らかのコンピューティングデバイスであってよい。たとえば、クライアントデバイス120は、ユーザ110が「OK COMPUTER」といつ言ったかを検出するように構成され得る。
【0021】
クライアントデバイス120は、ユーザ110がホットワード検出モデルを使用してホットワードをいつ話すかを検出し得る。たとえば、クライアントデバイス120は、ホットワード「OK COMPUTER」がいつ話されたかに対応して音声を検出するように学習させられたホットワード検出モデルを使用してユーザが「OK COMPUTER」と話していることを検出し得る。
【0022】
しかしながら、異なるユーザは、異なる方法で同じホットワードを発音し得る。たとえば、ユーザ110は、「OK COMPUTER」を「OK COM-UT-ER」といように発声することがあり得、ホットワード検出モデルは、「OK COM-UT-ER」を「OK COMPUTER」と検出し得ない。したがって、クライアントデバイス120は、ユーザ110がホットワードをいつ言ったかを検出するように学習させられている個人化されたホットワード検出モデル152に基づきユーザ110によって話されたホットワードの検出を高めることができる。たとえば、個人化されたホットワード検出モデル152は、「OK COM-UT-ER」をホットワード「OK COMPUTER」のユーザ110の発音として検出するように学習させることができる。
【0023】
個人化されたホットワード検出モデル152を取得するために、クライアントデバイス120は、登録発話を行うようにユーザに促すことができる。たとえば、ホットワード「OK COM
PUTER」を検出するために個人化されたホットワード検出モデルを取得するのに、クライアントデバイス120は、「NOW PERSONALIZING HOTWORD DETECTION, SAY 'OK COMPUTER' THREE TIMES」というプロンプトをユーザ110に提供することができる。クライアントデバイス120は、音を音響データとして取り込む音響データ生成器を備え得る。たとえば、クライアントデバイス120は、ユーザ110が「OK COMPUTER」を「OK COM-UT-ER」と話すのを信号として取り込むマイクロフォンを備えるものとしてよく、信号をメル周波数ケプストラム係数によって表される登録音響データ122として符号化する。
【0024】
クライアントデバイス120は、登録音響データ122をサーバ130に提供し、応答して、個人化されたホットワード検出モデル152を受け取るものとしてよい。たとえば、クライアントデバイス120は、ユーザ110が「OK COMPUTER」を「OK COM-UT-ER」と話すことを表す登録音響データ122をサーバ130に提供し、それに応答して、登録音響データに少なくとも基づき学習させられた個人化されたホットワード検出モデル152を受け取ることができる。
【0025】
次いで、クライアントデバイス120は、個人化されたホットワード検出モデル152を使用してユーザがホットワードをいつ話すかを検出し得る。たとえば、ユーザ110が「OK COMPUTER」を「OK COM-UT-ER」と話すことを表す登録音響データ122に基づき学習させられた個人化されたホットワード検出モデル152を使用して、クライアントデバイス120は、ユーザが「OK COM-UT-ER」と言ったときにユーザ110がホットワード「OK COMPUTER」を言っていることを検出し得る。
【0026】
サーバ130は、登録音響データに基づき個人化されたホットワード検出モデルを生成するように構成され得る。たとえば、サーバ130は、ユーザ110が「OK COMPUTER」を「OK COM-UT-ER」と話すことを表すことを表す登録音響データ122を受け取り、登録音響データに少なくとも基づき個人化されたホットワード検出モデル152を学習させることができる。
【0027】
しかしながら、ホットワード検出モデルを生成することは、数千もの発話を使用することができ、ユーザは、数千もの登録発話を個人的に行いたくない場合がある。それに加えて、サーバ130によって、ユーザからの数千もの登録発話を受け取り、記憶することは、比較的大量のメモリを必要とする。したがって、ユーザによる1つまたは複数の登録発話を受け取った後に、サーバ130は、他のユーザによるホットワードの他の発話を識別し、ユーザによる登録発話に類似する発話を選択し、選択された発話および登録発話を使用して個人化されたホットワード検出モデル152を生成することができる。他にも利点はあるがとりわけ、この方式で個人化されたホットワード検出モデルを生成することは、特にシステムが多数の個人ユーザに対して個人化された検出モデルを生成し、提供するときにサーバ130に必要な総メモリ量を低減する潜在的可能性を有する。以下で説明されているように、これは、少なくとも部分的には、新規の個別音声検出モデルを生成する上で、他のユーザからの発話を使用することが効果的であり効率的であるからである。
【0028】
より詳細には、サーバ130の候補音響データベース132は、さまざまなユーザの発話を表す音響データを記憶することができる。たとえば、サーバ130の候補音響データベース132は、異なるユーザの何十万という発話を表す音響データを記憶し得る。候補音響データベース132は、発話されたホットワードを指示するデータとともに各音響データを記憶し得る。たとえば、候補音響データベース132は、ホットワード「OK COMPUTER」の発話であるものとしてラベル付けされている音響データの5万セットおよび異なるホットワード「MY BUTLER」の発話であるものとしてラベル付けされている音響データの5万セットを記憶し得る。いくつかの実装形態において、候補音響データベース132は、音響データをユーザを記述する人口学的データに関連付け得る。たとえば、候補音響データベース132は、音響データを、ホットワードがユーザによって話されたときにユーザがいた場所に関連付けし得る。別の例では、候補音響データベース132は、音響データをユーザの性別、ユーザの年齢幅、またはユーザを記述する他の何らかの情報に関連付けし得る。
【0029】
サーバ130の候補音響データスコアラー134は、登録音響データ122および候補音響データベース132からの候補音響データを取得し、登録音響データ122と候補音響データとの間の類似性を表す類似度スコアを生成するように構成され得る。たとえば、候補音響データスコアラー134は、「OK COMPUTER」と言うユーザの登録音響データ122および「OK COMPUTER」と言う別のユーザを表す候補音響データを受け取り、90%の類似度を決定し、0.9のスコアを候補音響データと関連付けることができる。この例において、次いで、候補音響データスコアラー134は、「OK COMPUTER」と言うさらに別のユーザを表す候補音響データの第2のセットを取得し、登録音響データ122との30%の類似度を決定し、0.3のスコアを候補音響データの第2のセットに関連付けることができる。
【0030】
特定の発話を表す候補音響データの類似度スコアは、特定の発話と登録発話との間の音響的類似性を反映し得る。たとえば、類似度スコアは、0から1までの範囲とすることができ、ここで、より高い類似度スコアは、より大きい音響類似度を反映し、より低いスコアは、より低い音響類似度を反映する。他の例において、他の種類のスコアおよび範囲、たとえば、1〜5、A〜F、または0%〜100%が使用され得る。
【0031】
候補音響データスコアラー134は、登録音響データと候補音響データとの間の距離に基づきスコアを生成し得る。たとえば、候補音響データスコアラー134は、複数のフレームにまたがって登録音響データおよび候補音響データのメル周波数ケプストラム係数の差を集計し、結果としてより大きい集計距離だとスコアはより小さい類似度を反映し、より低い集計距離だとスコアはより大きい類似度を反映する類似度スコアを決定し得る。
【0032】
いくつかの実装形態において、候補音響データスコアラー134は、他のユーザの人口学的情報に基づきスコアを決定し得る。たとえば、同じ性別を有するユーザの発話を表す候補音響データを選択するかわりに、候補音響データスコアラー134は、異なる性別のユーザの発話を表す候補音響データを取得し、候補音響データによって表される発話を話すユーザの性別がユーザ110の性別と一致するかどうかを決定し、一致を決定したことに応答して、より高い類似度スコアをユーザ110と同じ性別のユーザの発話を表す候補音響データに割り当てるものとしてよい。
【0033】
いくつかの実装形態において、候補音響データスコアラー134は、候補音響データベース132に記憶されている、より多くの候補音響データから候補音響データを選択し得る。たとえば、候補音響データスコアラー134は、ホットワード「OK COMPUTER」が話される場合に候補音響データベース132から音響データを受け取ることを選択し得る。候補音響データスコアラー134は、登録音響データとともに、話されるホットワードの指示またはホットワードを言うユーザの種類の指示のうちの1つまたは複数を取得し、同じホットワードを言うユーザまたはホットワードを言うユーザに類似する種類のユーザの音響データについて候補音響データベース132にクエリを実行し得る。たとえば、候補音響データスコアラー134は、女性ユーザによってホットワード「OK COMPUTER」が話されたという指示を取得し、それに応答として、女性ユーザによってホットワード「OK COMPUTER」が話されていることを表す音響データについて候補音響データベース132にクエリを実行し得る。
【0034】
候補音響データセレクター136は、音響データスコアラー134および登録音響データ122からスコアが付けられた候補音響データを取得し、個人化されたホットワード検出モデル152を学習させるための音響データの学習セット138を生成し得る。たとえば、候補音響データセレクター136は、ユーザ110が「OK COMPUTER」と話していることを表す登録音響データを取得し、異なる他のユーザが「OK COMPUTER」と言っていることを表す5万の候補音響データを取得し、候補音響データの各々は、候補音響データと登録音響データ122との間の類似性を反映する類似度スコアに関連付けられ、5万の候補音響データおよび登録音響データ122のうちの1万個を含む音響データの学習セットを生成する。
【0035】
候補音響データセレクター136は、類似度スコアに少なくとも基づき候補音響データのサブセットを選択することに基づき学習セット138を生成し得る。たとえば、候補音響データセレクター136は、5万の候補音響データのセットを取得し、他の候補音響データよりも高い、候補音響データと登録音響データ122との間の類似性を反映する類似度スコアを有するセットの1万の候補音響データのサブセットを選択し得る。
【0036】
候補音響データセレクター136は、所定の数、たとえば、千、3千、1万、5万の候補音響データを選択することに基づき候補音響データのサブセットを選択し得る。たとえば、候補音響データセレクター136は、「OK COMPUTER」の単一の発話を表す登録音響データを取得し、候補音響データと登録音響データとの間のより高い類似性を反映する類似度スコアを有する3千の候補音響データのサブセットを選択し得る。
【0037】
それに加えて、または代替的に、候補音響データセレクター136は、類似度スコア閾値を満たす候補音響データを選択することに基づき候補音響データのサブセットを選択し得る。たとえば、候補音響データセレクター136は、0.0〜1.0のスコア範囲から0.8、0.85、0.9の類似度スコア閾値を超える類似度スコアを有する候補音響データを選択し、学習セット138に選択された候補音響データを含めることができる。
【0038】
いくつかの実装形態において、候補音響データセレクター136は、学習セット138内の音響データに重み付けし得る。たとえば、候補音響データセレクター136は、学習セット138内に登録音響データを複数回含めるか、または学習セット138内の登録音響データを候補音響データよりも大きい重みに関連付け得る。
【0039】
いくつかの実装形態において、候補音響データセレクター136は、複数の登録音響データに基づき候補音響データのサブセットを選択し得る。たとえば、候補音響データセレクター136は、ユーザ110による「OK COMPUTER」の3回の発話に対する登録音響データを受け取り、各登録音響データについて、学習セット138に含めるために最も高い類似性を反映する類似度スコアを有する3千の候補音響データを選択し得る。したがって、いくつかの候補音響データは、複数の登録音響データについて候補音響データが選択された場合、学習セット138内に複数回出現し得る。いくつかの実装形態において、候補音響データセレクター136は、学習セット138から重複する候補音響データを取り除く、または重複する候補音響データが学習セット138に含まれることを防ぐことができる。
【0040】
いくつかの実装形態において、候補音響データセレクター136は、候補音響データセレクター136によって受け取られた登録音響データの数に基づき登録音響データについて選択する候補音響データの数を決定し得る。たとえば、候補音響データセレクター136は、5個の登録音響データを受け取り、ホットワード検出モデル生成器が少なくとも1万の音響データの学習セットを受け取り、それに応答して、受け取った各登録音響データについて、登録音響データとともに学習セットに含める少なくとも1999の候補音響データを選択すべきであると決定し得る。別の例では、候補音響データセレクター136は、10個の登録音響データを受け取り、ホットワード検出モデル生成器が少なくとも1万の音響データの学習セットを受け取り、それに応答して、受け取った各登録音響データについて、登録音響データとともに学習セットに含める少なくとも999の候補音響データを選択すべきであると決定し得る。
【0041】
別の例では、候補音響データセレクター136は、複数の登録音響データの各々について部分類似度スコアを決定することに基づき候補音響データに対する類似度スコアを決定し得る。たとえば、候補音響データセレクター136は、3つの登録音響データを受け取り、各候補音響データについて、各々登録音響データのうちの1つに対応する3つの部分類似度スコアを決定し、部分類似度スコアを平均することに基づき類似度スコアを決定し得る。さらに別の例では、候補音響データセレクターは、類似度スコアとして候補音響データに対する部分類似度スコアの中央値、下限、または上限を取ることができる。
【0042】
ホットワード検出モデル生成器140は、候補音響データセレクター136から学習セット138を受け取り、個人化されたホットワード検出モデル152を生成することができる。たとえば、ホットワード検出モデル生成器140は、9997の選択された候補音響データおよび3つの登録音響データを含む学習セットを受け取り、学習セットに基づき個人化されたホットワード検出モデル152を生成し得る。
【0043】
ホットワード検出モデル生成器140は、学習セット138内の音響データをホットワードの発話を表すものとして検出するためにニューラルネットワークを学習させることに基づき個人化されたホットワード検出モデル152を生成し得る。たとえば、ホットワード検出モデル生成器140は、学習セット138内の音響データに基づきホットワード「OK COMPUTER」を検出する個人化されたホットワード検出モデル152を生成し得る。
【0044】
システム100の異なる構成が使用されてもよく、ここで、候補音響データスコアラー134、候補音響データセレクター136、およびホットワード検出モデル生成器140を含むクライアントデバイス120およびサーバ130の機能は、組み合わされるか、さらに分離されるか、分散されるか、または相互に入れ替えられるものとしてよい。システム100は、単一のデバイスで実装されるか、または複数のデバイスにまたがって分散され得る。
【0045】
図2は、個別化されたホットワード検出モデルを生成するための例示的なサーバ130のブロック図である。サーバ130は、
図1で説明されているサーバであってよい。上で説明されているように、サーバ130は、候補音響データベース132、候補音響データスコアラー134、候補音響データセレクター136、およびホットワード検出モデル生成器140を備え得る。
【0046】
候補音響データベース132は、ホットワード「OK COMPUTER」を言うさまざまなユーザの複数の候補音響データを含み得る。たとえば、候補音響データベース132は、「User A」が「OK COMPUTER」を「OK COM-PU-TER」と言う候補音響データ、「User B」が「OK COMPUTER」を「OOK COM-PU-TER」という候補音響データ、「User C」が「OK COMPUTER」を「OK COP-TER」と言う候補音響データ、「User D」が「OK COMPUTER」を「OK COM-U-TER」と
言う候補音響データ、「User E」が「OK COMPUTER」を「OK COM-MUT-ER」と言う候補音響データ、「User F」が「OK COMPUTER」を「OK COM-PUT-EW」という候補音響データ、および他のユーザが「OK COMPUTER」と言う他の候補音響データを含み得る。
【0047】
候補音響データスコアラー134は、ユーザの登録音響データ202を受け取り、候補音響データベース132から候補音響データのセットを取得することができる。たとえば、候補音響データスコアラー134は、ユーザが「OK COMPUTER」を「OK COM-UT-ER」と言う登録音響データ202を受け取り、それに応答して、候補音響データベース132から候補音響データのセットを取得するものとしてよく、候補音響データベース132は「User A」が「OK COMPUTER」を「OK COM-PU-TER」と言う候補音響データ、「User B」が「OK COMPUTER」を「OOK COM-PU-TER」という候補音響データ、「User C」が「OK COMPUTER」を「OK COP-TER」と言う候補音響データ、「User D」が「OK COMPUTER」を「OK COM-U-TER」と言う候補音響データ、「User E」が「OK COMPUTER」を「OK COM-MUT-ER」と言う候補音響データ、「User F」が「OK COMPUTER」を「OK COM-PUT-EW」という候補音響データ、および他のユーザが「OK COMPUTER」と言う他の候補音響データを含む。
【0048】
候補音響データスコアラー134は、候補音響データのセットの各々について類似度スコアを生成し得る。たとえば、ユーザ110が「OK COMPUTER」を「OK COM-UT-ER」と言う登録音響データについて、候補音響データスコアラー134は、「User A」が「OK COMPUTER」を「OK COM-PU-TER」と言う候補音響データに対する中程度の類似性を反映する0.6の類似度スコア、「User B」が「OK COMPUTER」を「OOK COM-PU-TER」と言う候補音響データに対する中程度の類似性を反映する0.5の類似度スコア、「User C」が「OK COMPUTER」を「OK COP-TER」と言う候補音響データに対する低い類似性を反映する0.3の類似度スコア、「User D」が「OK COMPUTER」を「OK COM-U-TER」と言う候補音響データに対する高い類似性を反映する0.9の類似度スコア、「User E」が「OK COMPUTER」を「OK COM-MUT-ER」と言う候補音響データに対する高い類似性を反映する0.8の類似度スコア、および「User F」が「OK COMPUTER」を「OK COM-PUT-EW」と言う候補音響データに対する中程度の類似性を反映する0.5の類似度スコアを生成し得る。
【0049】
候補音響データセレクター136は、候補音響データスコアラー134からスコアを付けられた候補音響データ204を受け取り、音響データの学習セット138を生成し得る。たとえば、候補音響データセレクター136は、「User A」が「OK COMPUTER」を「OK COM-PU-TER」と言う候補音響データに対する中程度の類似性を反映する0.6の類似度スコア、「User B」が「OK COMPUTER」を「OOK COM-PU-TER」と言う候補音響データに対する中程度の類似性を反映する0.5の類似度スコア、「User C」が「OK COMPUTER」を「OK COP-TER」と言う候補音響データに対する低い類似性を反映する0.3の類似度スコア、「User D」が「OK COMPUTER」を「OK COM-U-TER」と言う候補音響データに対する高い類似性を反映する0.9の類似度スコア、「User E」が「OK COMPUTER」を「OK COM-MUT-ER」と言う候補音響データに対する高い類似性を反映する0.8の類似度スコア、「User F」が「OK COMPUTER」を「OK COM-PUT-EW」と言う候補音響データに対する中程度の類似性を反映する0.5の類似度スコア、対応する候補反響データ、および登録音響データを受け取り、それに応答して、「User D」が「OK COMPUTER」を「OK COM-U-TER」と言う候補音響データ、「User E」が「OK COMPUTER」を「OK COM-MUT-ER」と言う候補音響データ、およびユーザが「OK COMPUTER」を「OK COM-UT-ER」と言う登録音響データを含む音響データの学習セットを生成し得る。
【0050】
候補音響データセレクター136は、類似度スコアに基づき候補音響データのセットのサブセットを選択することによって学習セットを生成し得る。たとえば、候補音響データセレクター136は、ホットワード検出モデル生成器は3つの音響データの学習セットを受け取るべきであると決定し、登録音響データが1つあると決定し、2つの候補音響データを選択して3つの全音響データを取得することを決定し、候補音響データのすべてから登録音響データとの最大の類似性を反映する0.9および0.8の類似度スコアを有する候補音響データを選択するものとしてよい。
【0051】
ホットワード検出モデル生成器140は、学習セット138を受け取り、個人化されたホットワード検出モデル152を生成することができる。たとえば、ホットワード検出モデル生成器140は、学習セットを受け取り、この学習セットは「User D」が「OK COMPUTER」を「OK COM-U-TER」と言う候補音響データ、「User E」が「OK COMPUTER」を「OK COM-MUT-ER」と言う候補音響データ、およびユーザが「OK COMPUTER」を「OK COM-UT-ER」と言う登録音響データを含み、ユーザ110によって話されるホットワード「OK COMPUTER」を表すものとしてそれらの音響データを検出するようにニューラルネットワークを学習させることができる。
【0052】
図3は、個別化されたホットワード検出モデルを生成するための例示的なプロセスの流れ図である。次に、処理300を、
図1を参照しつつ説明されているシステム100の構成要素によって実行されるものとして説明する。しかしながら、プロセス300は、他のシステムまたはシステム構成によって実行されてよい。
【0053】
プロセス300は、ユーザによって話される登録発話を表す登録音響データを取得すること(310)を含み得る。たとえば、候補音響データスコアラー134は、クライアントデバイス120によって、クライアントデバイス120を学習させるためサンプル登録発話を提供し、ユーザがホットワード「MY BUTLER」をいつ言うかを検出するよう促された後に、ユーザがホットワード「MY BUTLER」を言うことを表す登録音響データをクライアントデバイス120から取得し得る。
【0054】
プロセス300は、他のユーザによって話される発話を表す候補音響データのセットを取得すること(320)を含み得る。たとえば、候補音響データスコアラー134は、登録音響データが20歳から30歳の年齢範囲の男性によって話されたホットワード「MY BUTLER」に対するものであると決定し、それに応答して、候補音響データベース132から、20歳から30歳の年齢範囲の他の男性ユーザがホットワード「MY BUTLER」を言うことを表す候補音響データを取得し得る。
【0055】
プロセスは、候補音響データのセットの各候補音響データについて、登録音響データと候補音響データとの間の類似性を表す類似度スコアを決定すること(330)を含み得る。たとえば、候補音響データベース132から取得された各候補音響データについて、候補音響データスコアラー134は、ユーザがホットワード「MY BUTLER」を言うことを表す登録音響データ、および別のユーザがホットワード「MY BUTLER」を言うことを表す候補音響データを決定し得る。
【0056】
プロセスは、類似度スコアに少なくとも基づき候補音響データのセットから候補音響データのサブセットを選択すること(340)を含み得る。たとえば、候補音響データセレクター136は、登録音響データとの最も高い類似性を反映する類似度スコアを有する、所定の数の、たとえば、1000、5000、20000、または他の何らかの数の候補音響データを選択し得る。別の例では、候補音響データセレクター136は、類似度スコア閾値、たとえば、0.7、0.8、0.9、または他の何らかの量の条件を満たす類似度スコアを有する候補音響データを選択し得る。
【0057】
プロセスは、候補音響データのサブセットに基づき検出モデルを生成すること(350)を含み得る。たとえば、ホットワード検出モデル生成器140は、他のユーザが「MY BUTLER」を言う選択された候補音響データを使用してユーザがホットワード「MY BUTLER」をいつ話すかを検出するためにニューラルネットワークを学習させることに基づき個人化されたホットワード検出モデルを生成し得る。
【0058】
プロセスは、ユーザによって話された発話を検出する際に使用するための検出モデルを提供すること(360)を含み得る。たとえば、サーバ130は、ホットワード検出モデル生成器140によって生成された個人化されたホットワード検出モデル152をクライアントデバイス120に提供し得る。次いで、クライアントデバイス120は、ユーザ110がホットワード「MY BUTLER」をいつ言うかを検出するために、個人化されたホットワード検出モデル152を使用し得る。
【0059】
図4は、本明細書で説明されている技術を実装するために使用され得るコンピューティングデバイス400およびモバイルコンピューティングデバイス450の一例を示す。コンピューティングデバイス400は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどのさまざまな形態のデジタルコンピュータを表すことが意図されている。モバイルコンピューティングデバイス450は、携帯情報端末、携帯電話、スマートフォン、および他の類似のコンピューティングデバイスなどの、さまざまな形態のモバイルコンピューティングデバイスを表すことが意図されている。ここに示されている構成要素、それらの接続および関係、ならびにそれらの機能は、例示することのみを意図されており、制限することを意図されていない。
【0060】
コンピューティングデバイス400は、プロセッサ402、メモリ404、記憶装置406、メモリ404および複数の高速拡張ポート410に接続する高速インターフェイス408、ならびに低速拡張ポート414および記憶装置406に接続する低速インターフェイス412を備える。プロセッサ402、メモリ404、記憶装置406、高速インターフェイス408、高速拡張ポート410、および低速インターフェイス412は、さまざまなバスを使用して相互接続され、共通マザーボード上に取り付けられるか、または適宜他の仕方で取り付けられ得る。プロセッサ402は、高速インターフェイス408に結合されているディスプレイ416などの、外部入力/出力デバイス上にグラフィカルユーザインターフェイス(GUI)に対するグラフィック情報を表示するためメモリ404内に、または記憶装置406上に、記憶されている命令を含む、コンピューティングデバイス400内で実行する命令を処理することができる。他の実装形態では、複数のプロセッサおよび/または複数のバスが、適宜、複数のメモリおよび種類のメモリとともに使用され得る。また、複数のコンピューティングデバイスが、必要な操作の一部を提供する各のデバイスと接続され得る(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)。
【0061】
メモリ404は、コンピューティングデバイス400内の情報を記憶する。いくつかの実装形態において、メモリ404は、1つまたは複数の揮発性メモリユニットである。いくつかの実装形態において、メモリ404は、1つまたは複数の不揮発性メモリユニットである。メモリ404は、磁気ディスクまたは光ディスクなどのコンピュータ可読媒体の他の形態のものであってもよい。
【0062】
記憶装置406は、コンピューティングデバイス400用の大容量記憶装置を構成することができる。いくつかの実装形態において、記憶装置406は、ストレージエリアネットワークまたは他の構成のデバイスを含む、フロッピィディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス、フラッシュメモリもしくは他の類似のソリッドステートメモリデバイス、またはデバイスアレイなどのコンピュータ可読媒体であるか、またはコンピュータ可読媒体を含むことができる。命令は、情報担体内に記憶され得る。命令は、1つまたは複数の処理デバイス(たとえば、プロセッサ402)によって実行されるときに、上で説明されているような、1つまたは複数の方法を実行する。命令は、コンピュータ可読媒体もしくは機械可読媒体などの1つまたは複数の記憶装置(たとえば、メモリ404、記憶装置406、またはプロセッサ402上のメモリ)によって記憶されてもよい。
【0063】
高速インターフェイス408は、コンピューティングデバイス400に対して大きな帯域幅を使用するオペレーションを管理するが、低速インターフェイス412は、少ない帯域幅を使用するオペレーションを管理する。機能のこのような割り振りは、例示的なものにすぎない。いくつかの実装形態において、高速インターフェイス408は、メモリ404、ディスプレイ416(たとえば、グラフィックスプロセッサまたはアクセラレータを通じて)、およびさまざまな拡張カード(図示せず)を受け入れることができる高速拡張ポート410に結合される。実装形態において、低速インターフェイス412は、記憶装置406および低速拡張ポート414に結合される。さまざまな通信ポート(たとえば、USB、Bluetooth(登録商標)、Ethernet、ワイヤレスEthernet)を含み得る、低速拡張ポート414は、キーボード、ポインティングデバイス、スキャナ、またはたとえば、ネットワークアダプタを通じて、スイッチまたはルータなどネットワーキングデバイスなどの1つまたは複数の入力/出力デバイスに結合され得る。
【0064】
コンピューティングデバイス400は、図に示されているように、数多くの異なる形態で実装され得る。たとえば、標準サーバ420として、またはそのようなサーバのグループにおいて何倍もの数で実装され得る。それに加えて、ラップトップコンピュータ422などのパーソナルコンピュータで実装され得る。これは、ラックサーバシステム424の一部としても実装され得る。代替的に、コンピューティングデバイス400からの構成要素は、モバイルコンピューティングデバイス450などのモバイルコンピューティングデバイス(図示せず)内の他の構成要素と組み合わされ得る。このようなデバイスの各々は、コンピューティングデバイス400およびモバイルコンピューティングデバイス450のうちの1つまたは複数を含むものとしてよく、システム全体が、互いに通信する複数のコンピューティングデバイスで構成され得る。
【0065】
モバイルコンピューティングデバイス450は、他にも構成要素があるがとりわけ、プロセッサ452、メモリ464、ディスプレイ454などの入力/出力デバイス、通信インターフェイス466、およびトランシーバ468を備える。モバイルコンピューティングデバイス450は、追加の記憶装置を構成するためにマイクロドライブまたは他のデバイスなどの記憶装置を備えることもできる。プロセッサ452、メモリ464、ディスプレイ454、通信インターフェイス466、およびトランシーバ468の各々は、さまざまなバスを使用して相互接続され、これらの構成要素のうちのいくつかは、共通マザーボード上に取り付けられるか、または適宜他の仕方で取り付けられ得る。
【0066】
プロセッサ452は、メモリ464内に記憶されている命令を含む、モバイルコンピューティングデバイス450内の命令を実行することができる。プロセッサ452は、個別の、および複数の、アナログおよびデジタルプロセッサを備えるチップのチップセットとして実装され得る。プロセッサ452は、たとえば、ユーザインターフェイスの制御、モバイルコンピューティングデバイス450によるアプリケーション実行、およびモバイルコンピューティングデバイス450によるワイヤレス通信などの、モバイルコンピューティングデバイス450の他の構成要素の調整を行い得る。
【0067】
プロセッサ452は、制御インターフェイス458およびディスプレイ454に結合されているディスプレイインターフェイス456を通じてユーザと通信することができる。ディスプレイ454は、たとえば、TFT(薄膜トランジスタ液晶ディスプレイ)ディスプレイまたはOLED(有機発光ダイオード)ディスプレイまたは他の適切なディスプレイ技術とすることができる。ディスプレイインターフェイス456は、グラフィックおよび他の情報をユーザに提示するようにディスプレイ454を駆動するための適切な回路を備え得る。制御インターフェイス458は、ユーザからコマンドを受け取り、それらをプロセッサ452に送るために変換し得る。それに加えて、外部インターフェイス462は、プロセッサ452と通信することができ、それにより、モバイルコンピューティングデバイス450と他のデバイスとの近距離通信を行うことを可能にする。外部インターフェイス462は、たとえば、いくつかの実装形態における有線通信、または他の実装形態における無線通信を行うことができ、複数のインターフェイスも使用され得る。
【0068】
メモリ464は、モバイルコンピューティングデバイス450内の情報を記憶する。メモリ464は、1つまたは複数のコンピュータ可読媒体、1つまたは複数の揮発性メモリユニット、または1つまたは複数の不揮発性メモリユニットのうちの1つまたは複数として実装することができる。拡張メモリ474も、たとえば、SIMM(シングルインラインメモリモジュール)カードインターフェイスを含むものとしてよい、拡張インターフェイス472を通じて構成され、モバイルコンピューティングデバイス450に接続され得る。拡張メモリ474は、モバイルコンピューティングデバイス450に対する付加的な記憶領域を設け得るか、またはモバイルコンピューティングデバイス450用のアプリケーションもしくは他の情報も記憶し得る。特に、拡張メモリ474は、上で説明されているプロセスを実行するか、または補助する命令を含むものとしてよく、またセキュア情報も含み得る。したがって、たとえば、拡張メモリ474は、モバイルコンピューティングデバイス450に対するセキュリティモジュールとして構成されるものとしてよく、モバイルコンピューティングデバイス450の安全な使用を可能にする命令でプログラムされ得る。それに加えて、安全なアプリケーションは、SIMMカードを介して、ハッキングできない方式でSIMMカード上に識別情報を配置するなど、付加情報とともに提供され得る。
【0069】
メモリは、たとえば、後述のように、フラッシュメモリおよび/またはNVRAMメモリ(不揮発性ランダムアクセスメモリ)を含み得る。いくつかの実装形態において、命令は、情報担体に記憶され、1つまたは複数の処理デバイス(たとえば、プロセッサ452)によって実行されたときに、上で説明されているような、1つまたは複数の方法を実行する。命令は、1つまたは複数のコンピュータ可読媒体もしくは機械可読媒体などの1つまたは複数の記憶装置(たとえば、メモリ464、拡張メモリ474、またはプロセッサ452上のメモリ)によって記憶されてもよい。いくつかの実装形態において、命令は、たとえば、トランシーバ468または外部インターフェイス462上で、伝搬信号で受け取られるものとしてよい。
【0070】
モバイルコンピューティングデバイス450は、必要ならば、デジタル信号処理回路を備えることができる、通信インターフェイス466を通じてワイヤレス方式で通信し得る。通信インターフェイス466は、他にもいろいろあるがとりわけGSM(登録商標)音声電話(グローバルシステムフォーモバイルコミュニケーションズ)、SMS(ショートメッセージサービス)、EMS(エンハンストメッセージングサービス)、またはMMSメッセージング(マルチメディアメッセージングサービス)、CDMA(符号分割多元接続)、TDMA(時分割多元接続)、PDC(パーソナルデジタルセルラー)、WCDMA(登録商標)(広帯域符号分割多元接続)、CDMA2000、またはGPRS(汎用パケット無線サービス)などの、さまざまなモードまたはプロトコルの下で通信を行うことができる。このような通信は、たとえば、無線周波数を使用するトランシーバ468を通じて行い得る。それに加えて、Bluetooth(登録商標)、WiFi、または他のトランシーバ(図示せず)などを使用して、短距離通信を実行し得る。それに加えて、GPS(全地球測位システム)受信機モジュール470は、追加のナビゲーション位置関係無線データおよび位置関係無線データをモバイルコンピューティングデバイス450に送ることができ、これはモバイルコンピューティングデバイス450上で実行するアプリケーションによって適宜使用され得る。
【0071】
モバイルコンピューティングデバイス450は、オーディオコーデック460を使用して音声で通信することもでき、ユーザから発話情報を受け取り、それを使用可能なデジタル情報に変換することができる。オーディオコーデック460は、同様に、たとえば、モバイルコンピューティングデバイス450のハンドセットのスピーカーなどを通じて、ユーザ向けに可聴音を発生することができる。このような音は、音声電話からの音を含み、録音された音を含み(たとえば、音声メッセージ、音楽ファイルなど)、またモバイルコンピューティングデバイス450上で動作するアプリケーションによって生成される音も含み得る。
【0072】
モバイルコンピューティングデバイス450は、図に示されているように、数多くの異なる形態で実装され得る。たとえば、これは携帯電話480として実装されてもよい。また、これはスマートフォン482、携帯情報端末、または他の類似のモバイルコンピューティングデバイスの一部としても実装され得る。
【0073】
発明対象および本明細書で説明されている機能するオペレーションおよびプロセスの実施形態は、本明細書で開示されている構造およびその構造的等価物を含む、デジタル電子回路で、有形に具現化されたコンピュータソフトウェアもしくはファームウェアで、コンピュータハードウェアで、またはこれらのうちの1つまたは複数のものの組合せで実装され得る。本明細書で説明されている発明対象の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のため、またはデータ処理装置のオペレーションを制御するために有形な不揮発性プログラム担体上に符号化されたコンピュータプログラム命令からなる1つまたは複数のモジュールとして実装され得る。代替的に、またはそれに加えて、プログラム命令は、データ処理装置による実行のため好適な受信機装置に送信する情報を符号化するように生成される、人工的に生成された伝搬信号、たとえば、機械で生成された電気、光、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶装置基板、ランダムもしくはシリアルアクセスメモリデバイス、またはこれらのうちの1つまたは複数のものの組合せとすることができる。
【0074】
「データ処理装置」という用語は、たとえば、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)を含んでいてもよい。装置は、ハードウェアに加えて、注目しているコンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらのうちの1つまたは複数のものの組合せを構成するコードを含むものとしてもよい。
【0075】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも称されるか、または記述され得る)は、コンパイル言語もしくはインタプリタ言語または宣言型言語もしくは手続き型言語を含む、任意の形態のプログラミング言語で書かれるものとしてよく、スタンドアロンプログラム、またはモジュール、構成要素、サブルーチン、またはコンピューティング環境において使用するのに適している他のユニットを含む、任意の形態で配備され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応するものとしてよいが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書内に記憶される1つまたは複数のスクリプト)を保持するファイルの一部に、注目するプログラム専用の単一ファイル内に、または複数の調整されたファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるか、または複数のサイトにまたがって分散され、通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように配備され得る。
【0076】
本明細書で説明されているプロセスおよび論理の流れは、入力データを操作し、出力を生成することによって機能を実行するように1つまたは複数のコンピュータプログラムを実行する、1つまたは複数のプログラム可能なコンピュータによって実行され得る。プロセスおよび論理の流れも、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)によって実行され、また装置も、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)によって実装され得る。
【0077】
コンピュータプログラムの実行に適しているコンピュータは、汎用マイクロプロセッサ、専用マイクロプロセッサ、またはその両方、または任意の他の種類の中央演算処理装置を備える、たとえば、それらに基づくものとしてよい。一般に、中央演算処理装置は、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの不可欠な要素は、命令を遂行または実行するための中央演算処理装置ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量記憶装置、たとえば、磁気ディスク、磁気光ディスク、または光ディスクも備え、これらからデータを受け取るか、またはこれらにデータを転送するか、またはその両方を行うように動作可能なように結合される。しかし、コンピュータはこのようなデバイスを有している必要はない。さらに、コンピュータは、他のデバイス、たとえば、2、3例を挙げると、携帯電話、携帯情報端末(PDA)、携帯オーディオまたはビデオプレーヤー、ゲーム機、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。
【0078】
コンピュータプログラムの命令およびデータを格納するのに適したコンピュータ可読媒体は、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路で補完されるか、または専用論理回路に組み込まれ得る。
【0079】
ユーザと情報のやり取りを行うために、本明細書で説明されている発明対象の実施形態は、ユーザに情報を表示するためのディスプレイデバイス(たとえば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)ならびにユーザがコンピュータに入力を送るために使用できるキーボードおよびポインティングデバイス(たとえば、マウスもしくはトラックボール)を有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザと情報をやり取りするために使用されてよく、たとえば、ユーザに返されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響、話し声、または触覚入力を含む、任意の形態で受け取られ得る。それに加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受け取ることによって、たとえば、ウェブページをユーザのクライアントデバイス上のウェブブラウザに、ウェブブラウザから受け取った要求に応答して送信することによってユーザとインタラクティブにやり取りすることができる。
【0080】
本明細書で説明されている発明対象の実施形態は、バックエンド構成要素を、たとえば、データサーバとして備えるか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを備えるか、またはフロントエンド構成要素、たとえば、ユーザが本明細書で説明されている発明対象の実装をインタラクティブに操作するために使用することができるグラフィカルユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータを備えるコンピューティングシステムで、または1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組合せで実装され得る。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、たとえば、インターネットを含む。
【0081】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、一般に、互いに隔てられており、典型的には、通信ネットワークを通じてインタラクティブな操作を行う。クライアントとサーバとの関係は、コンピュータプログラムが各コンピュータ上で実行され、互いとの間にクライアント-サーバ関係を有することによって発生する。
【0082】
本明細書は、多くの実装形態固有の詳細事項を含んでいるが、これらは、請求内容の範囲に対する制限として解釈すべきではなく、むしろ特定の実施形態に特有のものであると思われる特徴の説明として解釈すべきである。別々の実施形態の背景状況において本明細書で説明されているいくつかの特徴も、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の背景状況において説明されているさまざまな特徴は、複数の実施形態で別々に、または好適な部分的組合せで、実装されることもあり得る。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように請求されることさえあるが、請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除され得、請求される組合せは、部分組合せ、または部分組合せの変形形態を対象とし得る。
【0083】
同様に、動作は特定の順序で図面に示されているが、そのような動作は、望ましい結果を達成するために、示される特定の順序でもしくは順番に実行される必要がないことを、またはすべての図示の動作が実行される必要があるとは限らないことを、理解されたい。
ある状況では、マルチタスキングおよび並列処理が有利である場合がある。さらに、上述の実施形態においてさまざまなシステム構成要素が分離しているが、すべての実施形態においてそのような分離が必要とされていると理解されるべきではなく、また説明されているプログラム構成要素およびシステムは、一般的に、単一のソフトウェア製品に一体化され得るか、または複数のソフトウェア製品にパッケージングされ得ることは理解されるであろう。
【0084】
発明対象の特定の実施形態が説明されている。他の実施形態も、以下の請求項の範囲内に収まる。たとえば、請求項に記載のアクションは、異なる順序で実行することができ、それでも、所望の結果が得られる。一例として、付属の図面に示されているプロセスは、所望の結果を得るために、図示されている特定の順序、または順番を必ずしも必要としない。いくつかの実装形態において、マルチタスクおよび並列処理が有利な場合もある。他のステップが提供されるか、または説明されているプロセスから、ステップが取り除かれてもよい。したがって、他の実装は、以下の請求項の範囲内に収まる。