【文献】
SAINATH, Tara N., et al.,Learning the Speech Front-End with Raw Waveform CLDNNs,Proc. INTERSPEECH 2015,ドイツ,ISCA,2015年 9月 6日,pp.1-5
【文献】
中谷彰宏,外2名,会議音声における音声区間検出のためのDeep Neural Networkとクロス適応の検討,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2014年12月,Vol.114, No.365,pp.19-24
【文献】
磯谷 亮輔,ダイナミックプログラミング・ニューラルネットワーク音声認識における端点自動検出法,日本音響学会研究発表会議講演論文集 春I,1990年 3月,P.3−4
(58)【調査した分野】(Int.Cl.,DB名)
音声活動を含むかまたは音声活動を含まないかのいずれかとしてラベル付けされたオーディオ波形を前記CLDNNに提供することによって音声活動を検出するように前記CLDNNをトレーニングするステップを含む、請求項1から3のいずれか一項に記載の方法。
前記CLDNNによって、前記生オーディオ波形が発話を含むかどうかを指示する前記生オーディオ波形の前記分類を提供するステップは、前記CLDNNによって、前記自動化された音声活動検出システムを含む自動化された発話認識システムに、前記生オーディオ波形が発話を含むかどうかを指示する前記生オーディオ波形の前記分類を提供するステップを含む、請求項1から4のいずれか一項に記載の方法。
【発明の概要】
【課題を解決するための手段】
【0003】
一般的に、本明細書で説明される主題の一態様は、音声活動を検出するためのプロセスを伴ってもよい。このプロセスは、音声活動を含むかまたは音声活動を含まないかのいずれかとしてラベル付けされたオーディオ波形をニューラルネットワークに提供することによって音声活動を検出するようにニューラルネットワークをトレーニングすることを含んでもよい。次いで、学習済みニューラルネットワークは、入力オーディオ波形を提供され、入力オーディオ波形を、音声活動を含むかまたは音声活動を含まないとして分類する。
【0004】
いくつかの態様において、本明細書で説明される主題は、オーディオ波形を取得するアクションと、オーディオ波形をニューラルネットワークに提供するアクションと、ニューラルネットワークから、発話を含むものとしてのオーディオ波形の分類を取得するアクションとを含んでもよい方法で具現化されてもよい。
【0005】
他のバージョンは、対応するシステムと、装置と、これらの方法のアクションを実行するように構成され、かつコンピュータ記憶デバイス上に符号化されたコンピュータプログラムとを含む。
【0006】
これらおよび他のバージョンは各々、以下の特徴のうちの1つまたは複数を適宜含んでもよい。たとえば、いくつかの実装形態において、オーディオ波形は、それぞれが所定の時間の長さを有する複数のサンプルにわたる生信号を含む。いくつかの態様において、ニューラルネットワークは、畳み込み長短期記憶全結合深層ニューラルネットワーク(convolutional, long short-term memory, fully connected deep neural network)である。いくつかの態様において、ニューラルネットワークは、複数のフィルタを持つ時間畳み込み層を含み、各フィルタは所定の時間の長さにわたり、これらのフィルタはオーディオ波形に対して畳み込みを行う。いくつかの実装形態において、ニューラルネットワークは、周波数に基づいて時間畳み込み層の出力を畳み込む周波数畳み込み層を含む。いくつかの態様において、ニューラルネットワークは、1つまたは複数の長短期記憶ネットワーク層を含む。いくつかの態様において、ニューラルネットワークは、1つまたは複数の深層ニューラルネットワーク層(deep neural network layer)を含む。いくつかの実装形態において、アクションは、音声活動を含むかまたは音声活動を含まないかのいずれかとしてラベル付けされたオーディオ波形をニューラルネットワークに提供することによって音声活動を検出するようにニューラルネットワークをトレーニングすることを含む。
【0007】
一般的に、本明細書において説明される主題の革新的一態様は、自動化された音声活動検出システムに含まれるニューラルネットワークによって、生オーディオ波形を受信するアクションと、ニューラルネットワークによって、オーディオ波形が発話を含むかどうかを判定するために生オーディオ波形を処理するアクションと、ニューラルネットワークによって、生オーディオ波形が発話を含むかどうかを指示する生オーディオ波形の分類を提供するアクションとを含む方法で具現化できる。この態様の他の実施形態は、対応するコンピュータシステム、装置、およびこれらの方法のアクションを実行するように各々構成される、1つまたは複数のコンピュータストレージデバイス上に記録されるコンピュータプログラムを含む。1つまたは複数のコンピュータのシステムは、動作時にこれらのアクションをシステムに実行させるシステム上にインストールされたソフトウェア、ファームウェア、ハードウェア、またはこれらのものの組合せを有することによって特定の動作またはアクションを実行するように構成されることが可能である。1つまたは複数のコンピュータプログラムは、データ処理装置によって実行されたときにアクションを装置に実行させる命令を含むことによって特定の動作またはアクションを実行するように構成されることが可能である。
【0008】
前述の実施形態および他の実施形態は、各々以下の特徴のうちの1つまたは複数を、適宜、単独で、または組み合わせて含むことができる。自動化された音声活動検出システムによって、生オーディオ波形を自動化された音声活動検出システムに備えられるニューラルネットワークに提供することは、ニューラルネットワークに、それぞれが所定の時間の長さを有する複数のサンプルにわたる生信号を提供することを含んでもよい。自動化された音声活動検出システムによって、生オーディオ波形をニューラルネットワークに提供することは、自動化された音声活動検出システムによって、生オーディオ波形を畳み込み長短期記憶全結合深層ニューラルネットワーク(CLDNN)に提供することを含んでもよい。
【0009】
いくつかの実装形態において、ニューラルネットワークによって、オーディオ波形が発話を含むかどうかを判定するために生オーディオ波形を処理することは、ニューラルネットワーク内の時間畳み込み層によって、それぞれが所定の時間の長さにわたる複数のフィルタを使用して時間周波数表現を生成するように生オーディオ波形を処理することを含んでもよい。ニューラルネットワークによって、オーディオ波形が発話を含むかどうかを判定するために生オーディオ波形を処理することは、ニューラルネットワーク内の周波数畳み込み層によって、周波数に基づいて時間周波数表現を処理することを含んでもよい。時間周波数表現は、周波数軸を含んでもよい。ニューラルネットワーク内の周波数畳み込み層によって、周波数に基づいて時間周波数表現を処理することは、周波数畳み込み層によって、重なり合わないプールを使用して周波数軸に沿って時間周波数表現に最大プーリングをかけることを含んでもよい。
【0010】
ニューラルネットワークによって、オーディオ波形が発話を含むかどうかを判定するために生オーディオ波形を処理することは、ニューラルネットワーク内の1つまたは複数の長短期記憶ネットワーク層によって、生オーディオ波形から生成されたデータを処理することを含んでもよい。ニューラルネットワークによって、オーディオ波形が発話を含むかどうかを判定するために生オーディオ波形を処理することは、ニューラルネットワーク内の1つまたは複数の深層ニューラルネットワーク層によって、生オーディオ波形から生成されたデータを処理することを含んでもよい。本方法は、音声活動を含むかまたは音声活動を含まないかのいずれかとしてラベル付けされたオーディオ波形をニューラルネットワークに提供することによって音声活動を検出するようにニューラルネットワークをトレーニングすることを含んでもよい。ニューラルネットワークによって、生オーディオ波形が発話を含むかどうかを指示する生オーディオ波形の分類を提供することは、ニューラルネットワークによって、自動化された音声活動検出システムを含む自動化された発話認識システムに、生オーディオ波形が発話を含むかどうかを指示する生オーディオ波形の分類を提供することを含んでもよい。
【0011】
本明細書において説明される主題は、特定の実施形態において実装することができ、その結果次の利点のうちの1つまたは複数が得られる場合がある。いくつかの実装形態において、以下で説明されるシステムおよび方法は、生オーディオ波形の時間的構造をモデル化してもよい。いくつかの実装形態において、以下で説明されるシステムおよび方法は、他のシステムに比べて、ノイズの多い状態、クリーンな状態、またはその両方における性能を改善する場合がある。
【0012】
本明細書で説明される主題の1つまたは複数の実装形態の詳細は、付属の図面および以下の説明で述べられる。主題の他の潜在的な特徴、態様、および利点は、説明、図面、および請求項から明らかになるであろう。
【発明を実施するための形態】
【0014】
さまざまな図面内の類似の参照記号は、類似の要素を示す。
【0015】
音声活動検出(VAD)は、オーディオ波形内の発話のセグメントを識別するプロセスを指す。VADは、ときには、計算量を低減するとともに、発話を分析すべきオーディオ波形の部分について自動発話認識(ASR)システムをガイドするためのASRシステムの前処理段である。
【0016】
VADシステムは、オーディオ波形が発話を含むかどうかを判定するために複数の異なるニューラルネットワークアーキテクチャを使用してもよい。たとえば、ニューラルネットワークは、VAD用のモデルを作成するか、または特徴をより分離可能な空間にマップするか、またはその両方を行うために深層ニューラルネットワーク(DNN)を使用してもよいか、周波数変化を低減またはモデル化するために畳み込みニューラルネットワーク(CNN)を使用してもよいか、シーケンスもしくは時間的変化をモデル化するために長短期記憶(LSTM)を使用してもよいか、またはこれらの2つもしくはそれ以上を使用してもよい。いくつかの例では、VADシステムは、各々VADシステムにおける特定の層の種類であってもよいDNN、CNN、LSTM、もしくはこれらの2つ以上の組合せを組み合わせて、これらのニューラルネットワークアーキテクチャよりも優れたパフォーマンスを個別に取得する場合がある。たとえば、VADシステムは、時間的構造を、たとえばシーケンスタスクの一部としてモデル化するか、個別の層の利点を組み合わせるか、またはその両方を行うためにDNN、CNN、およびLSTMを組み合わせたものである畳み込み長短期記憶全結合深層ニューラルネットワーク(CLDNN)を使用してもよい。
【0017】
図1は、音声活動検出のためのニューラルネットワーク100の例示的なアーキテクチャのブロック図である。ニューラルネットワーク100は、自動化された音声活動検出システム内に含まれるか、または他の何らかの形でその一部として含まれてもよい。
【0018】
ニューラルネットワークは、生オーディオ波形の時間周波数表現を生成する第1の畳み込み層102を含む。第1の畳み込み層102は、時間畳み込み層であってもよい。生オーディオ波形は、おおよそM個のサンプルにわたる生信号であってもよい。いくつかの例では、M個のサンプルの各々の持続時間は、35秒であってもよい。
【0019】
第1の畳み込み層102は、各フィルタが長さNにわたるP個のフィルタを持つ畳み込み層であってもよい。たとえば、ニューラルネットワーク100は、生オーディオ波形に対して第1の畳み込み層102を畳み込んで畳み込まれた出力を生成してもよい。第1の畳み込み層102は、40から128個までの間のフィルタPを含んでもよい。P個のフィルタの各々は、25ミリ秒の長さNにわたってもよい。
【0020】
第1の畳み込み層102は、畳み込み(M-N+1)の全長にわたって畳み込まれた出力をプールしてプールされた出力を生成してもよい。第1の畳み込み層102は、P次元時間周波数表現x
tを生成するために、正規化された非線形性をプールされている出力に適用し、その後安定化対数圧縮(stabilized logarithm compression)を行ってもよい。
【0021】
第1の畳み込み層102は、P次元時間周波数表現x
tをニューラルネットワーク100に含まれる第2の畳み込み層104に提供する。第2の畳み込み層104は、周波数畳み込み層であってもよい。第2の畳み込み層104は、サイズ1×時間8×周波数のフィルタを有してもよい。第2の畳み込み層104は、P次元時間周波数表現x
tの周波数軸に沿って重なり合わない最大プーリングを使用してもよい。いくつかの例では、第2の畳み込み層104は、3のプーリングサイズを使用してもよい。第2の畳み込み層104は、第2の表現を出力として生成する。
【0022】
ニューラルネットワーク100は、第2の表現を1つまたは複数のLSTM層106のうちの第1のものに提供する。いくつかの例では、LSTM層106のアーキテクチャは、単方向性を有し、隠れ層がk個、隠れユニットが層毎にn個ある。いくつかの実装形態において、LSTMアーキテクチャは、たとえば第2の畳み込み層104と第1の隠れLSTM層との間に、射影層を含まない。LSTM層106は、たとえば第1のLSTM層の出力を第2のLSTM層に通して処理することなどによって、第3の表現を出力として生成する。
【0023】
ニューラルネットワーク100は、第3の表現を1つまたは複数のDNN層108に提供する。DNN層は、隠れ層がk個、層毎に隠れユニットがn個あるフィードフォワード全結合層であってよい。DNN層108は、各隠れ層に正規化線形ユニット(ReLU)関数を使用してもよい。DNN層108は、生オーディオ波形内の発話および非発話を予測するために2つのユニットを持つsoftmax関数を使用してよい。たとえば、DNN層108は、生オーディオ波形が発話を含んでいたかどうかを指示する値、たとえばバイナリ値を出力してもよい。出力は、生オーディオ波形の一部または生オーディオ波形全体に対するものであってもよい。いくつかの例では、DNN層108は、単一のDNN層のみを含む。
【0024】
以下のTable 1(表1)は、ニューラルネットワーク100の3つの例示的実装形態A、B、およびCを説明する。たとえば、Table 1(表1)は、生オーディオ波形を入力として受け入れ、生オーディオ波形が発話、たとえば発言を符号化するかどうかを指示する値を出力するCLDNNに含まれる層の特性の一覧である。
【表1】
【0025】
いくつかの実装形態において、ニューラルネットワーク100、たとえばCLDNNニューラルネットワークは、非同期確率的勾配降下法(ASGD)最適化戦略をクロスエントロピー基準とともに使用して学習させてもよい。ニューラルネットワーク100は、CNN層102および104ならびにDNN層108をGlorot-Bengio戦略を使用して初期化してもよい。ニューラルネットワーク100は、LSTM層106をランダムに-0.02から0.02の間の値になるように初期化してもよい。ニューラルネットワーク100は、LSTM層106を均一にランダムに初期化してもよい。
【0026】
ニューラルネットワーク100は、学習率を指数関数的に低下させる場合がある。ニューラルネットワーク100は、各モデルについて、たとえば異なる種類の層の各々、異なる層の各々、またはその両方について、学習率を独立して選択してもよい。ニューラルネットワーク100は、学習が、たとえばそれぞれの層について安定状態を保つように学習率の各々を最大値になるように選択してもよい。いくつかの例では、ニューラルネットワーク100は、時間畳み込み層、たとえば第1の畳み込み層102およびニューラルネットワーク100内の他の層を一緒にトレーニングする。
【0027】
図2は、生オーディオ波形の分類を提供するためのプロセス200の流れ図である。たとえば、プロセス200は、ニューラルネットワーク100によって使用されてもよい。
【0028】
ニューラルネットワークは、生オーディオ波形を受信する(202)。たとえば、ニューラルネットワークは、ユーザデバイス上に備えられてもよく、マイクロフォンから生オーディオ波形を受信してもよい。ニューラルネットワークは、音声活動検出システムの一部であってもよい。
【0029】
ニューラルネットワーク内の時間畳み込み層は、それぞれが所定の長さの時間にわたる複数のフィルタを使用して時間周波数表現を生成するために生オーディオ波形を処理する(204)。たとえば、時間畳み込み層は、各々Nミリ秒の長さにわたる40から128個までのフィルタを含んでもよい。時間畳み込み層は、これらのフィルタを使用して生オーディオ波形を処理し、時間周波数表現を生成してもよい。
【0030】
ニューラルネットワーク内の周波数畳み込み層は、周波数に基づく時間周波数表現を処理して、第2の表現を生成する(206)。たとえば、周波数畳み込み層は、重なり合わないプールによる最大プーリングを使用して時間周波数表現を処理し、第2の表現を生成してもよい。
【0031】
ニューラルネットワーク内の1つまたは複数の長短期記憶ネットワーク層は、第2の表現を処理して、第3の表現を生成する(208)。たとえば、ニューラルネットワークは、順に第3の表現を処理する3つの長短期記憶(LSTM)ネットワーク層を含んでもよい。いくつかの例では、LSTM層は、相次いで第2の表現を処理して第3の表現を生成する2つのLSTM層を含んでもよい。LSTM層の各々は複数のユニットを含み、これらの各々は生オーディオ波形の他のセグメントを処理することからデータを記憶してもよい。たとえば、各LSTMユニットは、生オーディオ波形の他のセグメントの処理に対するそのユニットから前の出力を追跡する記憶部を備えていてもよい。LSTMにおける記憶部は、新しい生オーディオ波形の処理に対してリセットされてよい。
【0032】
ニューラルネットワークにおける1つまたは複数の深層ニューラルネットワーク層は、第3の表現を処理して、生オーディオ波形が発話を含むかどうかを指示する生オーディオ波形の分類を生成する(210)。いくつかの例では、単一の深層ニューラルネットワーク層は、32から80までの間の隠れユニットを用いて、第3の表現を処理して分類を生成する。たとえば、各DNN層は、第3の表現の一部を処理し、出力を生成してもよい。DNNは、隠れDNN層からの出力値を組み合わせる出力層を含んでもよい。
【0033】
ニューラルネットワークは、生オーディオ波形の分類を提供する(212)。ニューラルネットワークは、分類を音声活動検出システムに提供してもよい。いくつかの例では、ニューラルネットワークまたは音声活動検出システムは、分類、または分類を表すメッセージをユーザデバイスに提供する。
【0034】
システムは、生オーディオ波形が発話を含むことを分類が指示すると判定したことに応答してアクションを実行する(214)。たとえば、ニューラルネットワークは、生オーディオ波形が発話を含むことを指示する分類を提供することによってアクションをシステムに実行させる。いくつかの実装形態において、ニューラルネットワークは、生オーディオ波形を分析して生オーディオ波形中に符号化される発言を判定することを、発話認識システム、たとえば音声活動検出システムを備える自動化された発話認識システムに行わせる。
【0035】
いくつかの実装形態において、プロセス200は、追加のステップ、より少ないステップを含むことができるか、またはそれらのステップのうちのいくつかは、複数のステップに分割できる。たとえば、音声活動検出システムは、ニューラルネットワークによる生オーディオ波形の受信の前に、または学習データセットの一部である生オーディオ波形の受信を含むプロセスの一部として、たとえばASGDを使用して、ニューラルネットワークを学習させてもよい。いくつかの例では、プロセス200は、ステップ214を除くステップ202から212のうちの1つまたは複数を含んでもよい。
【0036】
図3は、本明細書で説明される技術を実装するために使用されてもよいコンピューティングデバイス300およびモバイルコンピューティングデバイス350の一例を示す。コンピューティングデバイス300は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどのさまざまな形態のデジタルコンピュータを表すことが意図されている。モバイルコンピューティングデバイス350は、携帯情報端末、携帯電話、スマートフォン、および他の類似のコンピューティングデバイスなどの、さまざまな形態のモバイルデバイスを表すことが意図されている。ここに示される構成要素、それらの接続および関係、ならびにそれらの機能は、例示することのみを意図されており、限定することは意図されない。
【0037】
コンピューティングデバイス300は、プロセッサ302、メモリ304、ストレージデバイス306、メモリ304および複数の高速拡張ポート310に接続する高速インターフェース308、ならびに低速拡張ポート314およびストレージデバイス306に接続する低速インターフェース312を備える。プロセッサ302、メモリ304、ストレージデバイス306、高速インターフェース308、高速拡張ポート310、および低速インターフェース312は、さまざまなバスを使用して相互接続され、共通マザーボード上に取り付けられるか、または適宜他の仕方で取り付けられてもよい。プロセッサ302は、高速インターフェース308に結合されるディスプレイ316などの、外部入力/出力デバイス上にグラフィカルユーザインターフェース(GUI)に対するグラフィック情報を表示するためメモリ304内に、またはストレージデバイス306上に、記憶される命令を含む、コンピューティングデバイス300内で実行する命令を処理することができる。他の実装形態では、複数のプロセッサおよび/または複数のバスが、適宜、複数のメモリおよび種類のメモリとともに使用されてもよい。また、複数のコンピューティングデバイスが、(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な操作の一部を提供する各デバイスと接続されてもよい。
【0038】
メモリ304は、コンピューティングデバイス300内の情報を記憶する。いくつかの実装形態において、メモリ304は、1つまたは複数の揮発性メモリユニットである。いくつかの実装形態において、メモリ304は、1つまたは複数の不揮発性メモリユニットである。メモリ304は、磁気ディスクまたは光ディスクなどのコンピュータ可読媒体の他の形態のものであってもよい。
【0039】
ストレージデバイス306は、コンピューティングデバイス300用の大容量記憶装置を構成することができる。いくつかの実装形態において、ストレージデバイス306は、ストレージエリアネットワークまたは他の構成のデバイスを含む、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス、フラッシュメモリもしくは他の類似のソリッドステートメモリデバイス、またはデバイスアレイなどのコンピュータ可読媒体であるか、またはコンピュータ可読媒体を含むことができる。命令は、情報担体内に記憶されてもよい。命令は、1つまたは複数の処理デバイス(たとえば、プロセッサ302)によって実行されるときに、上で説明されるような、1つまたは複数の方法を実行する。命令は、コンピュータ可読媒体もしくは機械可読媒体などの1つまたは複数のストレージデバイス(たとえば、メモリ304、ストレージデバイス306、またはプロセッサ302上のメモリ)によって記憶されてもよい。
【0040】
高速インターフェース308は、コンピューティングデバイス300に対して大きな帯域幅を使用する動作を管理するが、低速インターフェース312は、少ない帯域幅を使用する動作を管理する。機能のこのような割り振りは、例示的なものにすぎない。いくつかの実装形態において、高速インターフェース308は、メモリ304、ディスプレイ316(たとえば、グラフィックスプロセッサまたはアクセラレータを通じて)、およびさまざまな拡張カード(図示せず)を受け入れることができる高速拡張ポート310に結合される。実装形態において、低速インターフェース312は、ストレージデバイス306および低速拡張ポート314に結合される。さまざまな通信ポート(たとえば、USB、Bluetooth(登録商標)、Ethernet、ワイヤレスEthernet)を含んでもよい。低速拡張ポート314は、キーボード、ポインティングデバイス、スキャナ、またはたとえば、ネットワークアダプタを通じて、スイッチまたはルータなどネットワーキングデバイスなどの1つまたは複数の入力/出力デバイスに結合されてもよい。
【0041】
コンピューティングデバイス300は、図に示されるように、数多くの異なる形態で実装されてもよい。たとえば、標準サーバ320として、またはそのようなサーバのグループにおいて何倍もの数で実装されてもよい。それに加えて、ラップトップコンピュータ322などのパーソナルコンピュータで実装されてもよい。これは、ラックサーバシステム324の一部としても実装されてもよい。代替的に、コンピューティングデバイス300からの構成要素は、モバイルコンピューティングデバイス350などのモバイルデバイス(図示せず)内の他の構成要素と組み合わされてもよい。このようなデバイスの各々は、コンピューティングデバイス300およびモバイルコンピューティングデバイス350のうちの1つまたは複数を含んでもよく、システム全体が、互いに通信する複数のコンピューティングデバイスで構成されてもよい。
【0042】
モバイルコンピューティングデバイス350は、他にも構成要素があるがとりわけ、プロセッサ352、メモリ364、ディスプレイ354などの入力/出力デバイス、通信インターフェース366、およびトランシーバ368を備える。モバイルコンピューティングデバイス350はまた、追加の記憶装置を構成するためにマイクロドライブまたは他のデバイスなどのストレージデバイスを備えることもできる。プロセッサ352、メモリ364、ディスプレイ354、通信インターフェース366、およびトランシーバ368の各々は、さまざまなバスを使用して相互接続され、これらの構成要素のうちのいくつかは、共通マザーボード上に取り付けられるか、または適宜他の仕方で取り付けられてもよい。
【0043】
プロセッサ352は、メモリ364内に記憶される命令を含む、モバイルコンピューティングデバイス350内の命令を実行することができる。プロセッサ352は、個別の、および複数の、アナログおよびデジタルプロセッサを備えるチップのチップセットとして実装されてもよい。プロセッサ352は、たとえばユーザインターフェースの制御、モバイルコンピューティングデバイス350によるアプリケーション実行、およびモバイルコンピューティングデバイス350によるワイヤレス通信などの、モバイルコンピューティングデバイス350の他の構成要素の調整を行ってもよい。
【0044】
プロセッサ352は、制御インターフェース358およびディスプレイ354に結合されるディスプレイインターフェース356を通じてユーザと通信することができる。ディスプレイ354は、たとえばTFT(薄膜トランジスタ液晶ディスプレイ)ディスプレイまたはOLED(有機発光ダイオード)ディスプレイまたは他の適切なディスプレイ技術とすることができる。ディスプレイインターフェース356は、グラフィックおよび他の情報をユーザに提示するようにディスプレイ354を駆動するための適切な回路を備えてもよい。制御インターフェース358は、ユーザからコマンドを受け取り、それらをプロセッサ352に送るために変換してもよい。それに加えて、外部インターフェース362は、プロセッサ352と通信することができ、それにより、モバイルコンピューティングデバイス350と他のデバイスとの近距離通信を行うことを可能にする。外部インターフェース362は、たとえばいくつかの実装形態における有線通信、または他の実装形態における無線通信を行うことができ、複数のインターフェースもまた使用されてもよい。
【0045】
メモリ364は、モバイルコンピューティングデバイス350内の情報を記憶する。メモリ364は、1つまたは複数のコンピュータ可読媒体、1つまたは複数の揮発性メモリユニット、または1つまたは複数の不揮発性メモリユニットのうちの1つまたは複数として実装することができる。拡張メモリ374も、たとえばSIMM(シングルインラインメモリモジュール)カードインターフェースを含んでもよい、拡張インターフェース372を通じて構成され、モバイルコンピューティングデバイス350に接続されてもよい。拡張メモリ374は、モバイルコンピューティングデバイス350に対する付加的な記憶領域を設けてもよいか、またはモバイルコンピューティングデバイス350用のアプリケーションもしくは他の情報も記憶してもよい。特に、拡張メモリ374は、上で説明されるプロセスを実行するか、または補助する命令を含んでもよく、またセキュア情報も含んでもよい。したがって、たとえば拡張メモリ374は、モバイルコンピューティングデバイス350に対するセキュリティモジュールとして構成されてもよく、モバイルコンピューティングデバイス350の安全な使用を可能にする命令でプログラムされてもよい。それに加えて、安全なアプリケーションは、SIMMカードを介して、ハッキングできない方式でSIMMカード上に識別情報を配置するなど、付加情報とともに提供されてもよい。
【0046】
メモリは、たとえば後述のように、フラッシュメモリおよび/またはNVRAMメモリ(不揮発性ランダムアクセスメモリ)を含んでもよい。いくつかの実装形態において、命令は、情報担体に記憶され、1つまたは複数の処理デバイス(たとえば、プロセッサ352)によって実行されたときに、上で説明されるような、1つまたは複数の方法を実行する。命令は、1つまたは複数のコンピュータ可読媒体もしくは機械可読媒体などの1つまたは複数のストレージデバイス(たとえば、メモリ364、拡張メモリ374、またはプロセッサ352上のメモリ)によって記憶されてもよい。いくつかの実装形態において、命令は、たとえばトランシーバ368または外部インターフェース362上で、伝搬信号で受け取られてもよい。
【0047】
モバイルコンピューティングデバイス350は、必要であれば、デジタル信号処理回路を備えることができる、通信インターフェース366を通じてワイヤレス方式で通信してもよい。通信インターフェース366は、他にもいろいろあるがとりわけGSM(登録商標)音声電話(グローバルシステムフォーモバイルコミュニケーションズ)、SMS(ショートメッセージサービス)、EMS(エンハンストメッセージングサービス)、またはMMSメッセージング(マルチメディアメッセージングサービス)、CDMA(符号分割多元接続)、TDMA(時分割多元接続)、PDC(パーソナルデジタルセルラー)、WCDMA(広帯域符号分割多元接続)(登録商標)、CDMA2000、またはGPRS(汎用パケット無線サービス)などの、さまざまなモードまたはプロトコルの下で通信を行うことができる。このような通信は、たとえば無線周波数を使用するトランシーバ368を通じて行ってもよい。それに加えて、Bluetooth(登録商標)、WiFi、または他のトランシーバ(図示せず)などを使用して、短距離通信を実行してもよい。それに加えて、GPS(全地球測位システム)受信機モジュール370は、追加のナビゲーション位置関係無線データおよび位置関係無線データをモバイルコンピューティングデバイス350に送ることができ、これはモバイルコンピューティングデバイス350上で実行するアプリケーションによって適宜使用されてもよい。
【0048】
モバイルコンピューティングデバイス350はまた、オーディオコーデック360を使用して音声で通信することができ、ユーザから発話情報を受け取り、それを使用可能なデジタル情報に変換することができる。オーディオコーデック360は同様に、たとえばモバイルコンピューティングデバイス350のハンドセットのスピーカーなどを通じて、ユーザ向けに可聴音を発生することができる。このような音は、音声電話からの音を含み、録音された音を含み(たとえば、音声メッセージ、音楽ファイルなど)、またモバイルコンピューティングデバイス350上で動作するアプリケーションによって生成される音も含んでもよい。
【0049】
モバイルコンピューティングデバイス350は、図に示されるように、数多くの異なる形態で実装されてもよい。たとえば、これは携帯電話380として実装されてもよい。また、これはスマートフォン382、携帯情報端末、または他の類似のモバイルデバイスの一部としても実装されてもよい。
【0050】
主題および本明細書で説明される機能する動作およびプロセスの実施形態は、本明細書で開示される構造およびその構造的等価物を含む、デジタル電子回路で、有形に具現化されたコンピュータソフトウェアもしくはファームウェアで、コンピュータハードウェアで、またはこれらのうちの1つまたは複数のものの組合せで実装されてもよい。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわちデータ処理装置による実行のため、またはデータ処理装置の動作を制御するために有形な不揮発性プログラム担体上に符号化されたコンピュータプログラム命令からなる1つまたは複数のモジュールとして実装されてもよい。代替的にまたはそれに加えて、プログラム命令は、データ処理装置による実行のため好適な受信機装置に送信する情報を符号化するように生成される、人工的に生成された伝搬信号、たとえば機械で生成された電気、光、または電磁信号上で符号化されてもよい。コンピュータ記憶媒体は、機械可読ストレージデバイス、機械可読記憶装置基板、ランダムもしくはシリアルアクセスメモリデバイス、またはこれらのうちの1つまたは複数のものの組合せとすることができる。
【0051】
「データ処理装置」という用語は、たとえばプログラム可能なプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)を含んでいてもよい。装置は、ハードウェアに加えて、注目するコンピュータプログラム用の実行環境を作成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらのうちの1つまたは複数のものの組合せを構成するコードを含んでもよい。
【0052】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも称されるか、または記述されてもよい)は、コンパイル言語もしくはインタプリタ言語または宣言型言語もしくは手続き型言語を含む、任意の形態のプログラミング言語で書かれてもよく、スタンドアロンプログラム、またはモジュール、構成要素、サブルーチン、またはコンピューティング環境において使用するのに適している他のユニットを含む、任意の形態で配備されてもよい。コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書内に記憶される1つまたは複数のスクリプト)を保持するファイルの一部に、注目するプログラム専用の単一ファイル内に、または複数の調整されたファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶されてもよい。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるか、または複数のサイトにまたがって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように配備されてもよい。
【0053】
本明細書で説明されるプロセスおよび論理の流れは、入力データを操作し、出力を生成することによって機能を実行するように1つまたは複数のコンピュータプログラムを実行する、1つまたは複数のプログラム可能なコンピュータによって実行されてもよい。プロセスおよび論理の流れも、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)によって実行され、また装置も、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)によって実装されてもよい。
【0054】
コンピュータプログラムの実行に適しているコンピュータは、汎用マイクロプロセッサ、専用マイクロプロセッサ、またはその両方、または任意の他の種類の中央演算処理装置を備える、たとえばそれらに基づいてもよい。一般的に、中央演算処理装置は、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの不可欠な要素は、命令を遂行または実行するための中央演算処理装置ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般的に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば磁気ディスク、磁気光ディスク、または光ディスクを備え、これらからデータを受け取るか、またはこれらにデータを転送するか、またはその両方を行うように動作可能なように結合される。しかし、コンピュータはこのようなデバイスを有する必要はない。さらに、コンピュータは、他のデバイス、たとえばいくつかの例を挙げると、携帯電話、携帯情報端末(PDA)、携帯オーディオまたはビデオプレーヤー、ゲーム機、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれてもよい。
【0055】
コンピュータプログラムの命令およびデータを格納するのに適したコンピュータ可読媒体は、たとえばEPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路で補完されるか、または専用論理回路に組み込まれてもよい。
【0056】
ユーザと情報のやり取りを行うために、本明細書で説明される主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス(たとえば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)ならびにユーザがコンピュータに入力を送るために使用できるキーボードおよびポインティングデバイス(たとえば、マウスもしくはトラックボール)を有するコンピュータ上で実装されてもよい。他の種類のデバイスも、ユーザと情報をやり取りするために使用されてよく、たとえばユーザに返されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響、話し声、または触覚入力を含む、任意の形態で受け取られてもよい。それに加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受け取ることによって、たとえばウェブページをユーザのクライアントデバイス上のウェブブラウザに、ウェブブラウザから受け取った要求に応答して送信することによってユーザとインタラクティブにやり取りすることができる。
【0057】
本明細書で説明される主題の実施形態は、バックエンド構成要素を、たとえばデータサーバとして備えるか、またはミドルウェア構成要素、たとえばアプリケーションサーバを備えるか、またはフロントエンド構成要素、たとえばユーザが本明細書で説明される主題の実装をインタラクティブに操作するために使用することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータを備えるコンピューティングシステムで、または1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組合せで実装されてもよい。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば通信ネットワークによって相互接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク("LAN")およびワイドエリアネットワーク("WAN")、たとえばインターネットを含む。
【0058】
コンピューティングシステムは、クライアントおよびサーバを含んでもよい。クライアントおよびサーバは、一般的に互いに隔てられており、典型的には、通信ネットワークを通じてインタラクティブな操作を行う。クライアントとサーバとの関係は、コンピュータプログラムが各コンピュータ上で実行され、互いとの間にクライアント−サーバ関係を有することによって発生する。
【0059】
本明細書は、多くの実装形態固有の詳細事項を含んでいるが、これらは、請求内容の範囲に対する限定として解釈すべきではなく、むしろ特定の実施形態に特有のものであると思われる特徴の説明として解釈すべきである。別々の実施形態の背景状況において本明細書で説明されるいくつかの特徴も、単一の実施形態において組み合わせて実装されてもよい。逆に、単一の実施形態の背景状況において説明されるさまざまな特徴は、複数の実施形態で別々に、または好適な部分的組合せで、実装されることもあってもよい。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように請求されることさえあるが、請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除されてもよく、請求される組合せは、部分組合せ、または部分組合せの変形形態を対象としてもよい。
【0060】
同様に、動作は特定の順序で図面に示されるが、そのような動作は、望ましい結果を達成するために、示される特定の順序でもしくは順番に実行される必要がないことを、またはすべての図示の動作が実行される必要があるとは限らないことを理解されたい。ある状況では、マルチタスキングおよび並列処理が有利である場合がある。さらに、上述の実施形態においてさまざまなシステム構成要素が分離しているが、すべての実施形態においてそのような分離が必要とされると理解されるべきではなく、また説明されるプログラム構成要素およびシステムは、一般的に単一のソフトウェア製品に一体化されてもよいか、または複数のソフトウェア製品にパッケージングされてもよいことは理解されるであろう。
【0061】
主題の特定の実施形態が説明される。他の実施形態も、以下の請求項の範囲内に収まる。たとえば、請求項に記載のアクションは、異なる順序で実行することができ、それでも所望の結果が得られる。一例として、付属の図面に示されるプロセスは、所望の結果を得るために、図示される特定の順序、または順番を必ずしも必要としない。いくつかの実装形態において、マルチタスクおよび並列処理が有利な場合もある。他のステップが提示されるか、または説明されるプロセスから、ステップが取り除かれてもよい。したがって、他の実装は、以下の請求項の範囲内にある。