IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7367223生成モデル推論における動的テンパリング処理サンプリング
<>
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図1
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図2
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図3
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図4
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図5
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図6
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図7
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図8
  • 特許-生成モデル推論における動的テンパリング処理サンプリング 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-13
(45)【発行日】2023-10-23
(54)【発明の名称】生成モデル推論における動的テンパリング処理サンプリング
(51)【国際特許分類】
   G10L 19/005 20130101AFI20231016BHJP
【FI】
G10L19/005
【請求項の数】 20
(21)【出願番号】P 2022537704
(86)(22)【出願日】2020-12-17
(65)【公表番号】
(43)【公表日】2023-03-13
(86)【国際出願番号】 US2020065638
(87)【国際公開番号】W WO2021127197
(87)【国際公開日】2021-06-24
【審査請求日】2022-08-09
(31)【優先権主張番号】16/718,333
(32)【優先日】2019-12-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ゴンザレス、パブロ バレラ
【審査官】堀 洋介
(56)【参考文献】
【文献】国際公開第2019/213021(WO,A1)
【文献】米国特許出願公開第2019/0051310(US,A1)
【文献】特開2003-223193(JP,A)
【文献】Reza Lotfidereshgi, et al.,Speech Prediction Using an Adaptive Recurrent Neural Network with Application to Packet Loss Concealment,2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP),IEEE,2018年08月15日,pp. 5394-5398
【文献】Jean-Marc Valin, et al.,LPCNET: Improving Neural Speech Synthesis through Linear Prediction,2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP),IEEE,2019年05月12日,pp. 5891-5895
(58)【調査した分野】(Int.Cl.,DB名)
G10L 19/005
G10L 25/30
G10L 13/00
(57)【特許請求の範囲】
【請求項1】
複数の出力オーディオサンプル(22)をサンプリングするための方法(800)であって、
アクティブな音声通信セッションでのパケット損失隠蔽イベントにおいて、
データ処理ハードウェア(144)が、開始時刻と、前記パケット損失隠蔽イベントが開始したときに発生する終了時刻とを有する時間ウィンドウの間の前の出力オーディオサンプル(22)のシーケンスを取得すること、
前記パケット損失隠蔽イベント中の複数の時間ステップ(322)の各時間ステップにおいて、
前記データ処理ハードウェア(144)が、音声合成モデル(160)を用いて、対応する時間ステップについての可能性のある複数の出力オーディオサンプル(22)に対する確率分布(164,342)を生成することであって、前記確率分布(164,342)における可能性のある各出力オーディオサンプル(22)は、対応する可能性のある出力オーディオサンプル(22)が対応する時間ステップにおける発話の一部を表す尤度を示すそれぞれの確率を有する、前記確率分布(164,342)を生成すること、
前記データ処理ハードウェア(144)が、前記対応する時間ステップに先行する前記複数の時間ステップ(322)の時間ステップ(322)の数の関数、初期温度サンプリング値(324)、最小温度サンプリング値(326)、および最大温度サンプリング値(328)に基づいて温度サンプリング値(332)を決定すること、
前記データ処理ハードウェア(144)が、前記温度サンプリング値(332)を前記確率分布(164,342)に適用して前記確率分布(164,342)から可能性のある複数の出力オーディオサンプル(22)を選択する確率を調整すること、
前記データ処理ハードウェア(144)が、前記可能性のある複数の出力オーディオサンプル(22)の各々に関連付けられた調整された確率に基づいて、前記確率分布(164,342)の前記可能性のある複数の出力オーディオサンプル(22)のうちの1つをランダムに選択すること、
前記データ処理ハードウェア(144)が、前記ランダムに選択された出力オーディオサンプル(22)を用いて合成された音声(172)を生成すること、を備える方法(800)。
【請求項2】
前記関数は、線形関数である、請求項1に記載の方法(800)。
【請求項3】
前記最大温度サンプリング値(328)は、0.85である、請求項2に記載の方法(800)。
【請求項4】
前記最小温度サンプリング値(326)は、0.25である、請求項1~3のいずれか一項に記載の方法(800)。
【請求項5】
前記初期温度サンプリング値(324)は、前記最小温度サンプリング値(326)と同じである、請求項1~4のいずれか一項に記載の方法(800)。
【請求項6】
前記温度サンプリング値を決定することは、
前記パケット損失隠蔽イベント中に、前記対応する時間ステップに先行する前記複数の時間ステップ(322)の時間ステップ(322)の数を決定すること、
前記時間ステップ(322)の数が閾値を満たした場合、前記温度サンプリング値を設定量だけ上げること、を含む、請求項1~5のいずれか一項に記載の方法(800)。
【請求項7】
前記閾値は、10個の時間ステップの倍数を含む、請求項6に記載の方法(800)。
【請求項8】
前記設定量は、0.1である、請求項6または7に記載の方法(800)。
【請求項9】
前記温度サンプリング値(332)を決定することは、
前記パケット損失隠蔽イベント中に、前記対応する時間ステップに先行する前記複数の時間ステップ(322)の前記時間ステップ(322)の数に基づいて前記温度サンプリング値(332)を上げることを含む、請求項1~8のいずれか一項に記載の方法(800)。
【請求項10】
前記温度サンプリング値(332)を決定することは、
前記温度サンプリング値(332)が前記最大温度サンプリング値(328)に等しくなると、前記温度サンプリング値(332)を前記最大温度サンプリング値(328)に維持することをさらに含む、請求項1~9のいずれか一項に記載の方法(800)。
【請求項11】
システム(100)であって、
データ処理ハードウェア(144)と、
前記データ処理ハードウェア(144)と通信するメモリハードウェア(146)であって、前記データ処理ハードウェア(144)上で実行されたとき、前記データ処理ハードウェア(144)に複数の動作を実行させる複数の命令を記憶する前記メモリハードウェア(146)と、を備え、前記複数の動作は、
アクティブな音声通信セッションでのパケット損失隠蔽イベントにおいて、
開始時刻と、前記パケット損失隠蔽イベントが開始したときに発生する終了時刻とを有する時間ウィンドウの間の前の出力オーディオサンプル(22)のシーケンスを取得すること、
前記パケット損失隠蔽イベント中の複数の時間ステップ(322)の各時間ステップにおいて、
音声合成モデル(160)を用いて、対応する時間ステップについての可能性のある複数の出力オーディオサンプル(22)に対する確率分布(164,342)を生成することであって、前記確率分布(164,342)における可能性のある各出力オーディオサンプル(22)は、対応する可能性のある出力オーディオサンプル(22)が対応する時間ステップにおける発話の一部を表す尤度を示すそれぞれの確率を有する、前記確率分布(164,342)を生成すること、
前記対応する時間ステップに先行する前記複数の時間ステップ(322)の時間ステップ(322)の数の関数、初期温度サンプリング値(324)、最小温度サンプリング値(326)、および最大温度サンプリング値(328)に基づいて温度サンプリング値(332)を決定すること、
前記温度サンプリング値(332)を前記確率分布(164,342)に適用して前記確率分布(164,342)から可能性のある複数の出力オーディオサンプル(22)を選択する確率を調整すること、
前記可能性のある複数の出力オーディオサンプル(22)の各々に関連付けられた調整された確率に基づいて、前記確率分布(164,342)の前記可能性のある複数の出力オーディオサンプル(22)のうちの1つをランダムに選択すること、
前記データ処理ハードウェア(144)が、前記ランダムに選択された出力オーディオサンプル(22)を用いて合成された音声(172)を生成すること、を含む、システム(100)。
【請求項12】
前記関数は、線形関数である、請求項11に記載のシステム(100)。
【請求項13】
前記最大温度サンプリング値(328)は、0.85である、請求項12に記載のシステム(100)。
【請求項14】
前記最小温度サンプリング値(326)は、0.25である、請求項11~13のいずれか一項に記載のシステム(100)。
【請求項15】
前記初期温度サンプリング値(324)は、前記最小温度サンプリング値(326)と同じである、請求項11~14のいずれか一項に記載のシステム(100)。
【請求項16】
前記温度サンプリング値(332)を決定することは、
前記パケット損失隠蔽イベント中に、前記対応する時間ステップに先行する前記複数の時間ステップ(322)の時間ステップ(322)の数を決定すること、
前記時間ステップ(322)の数が閾値を満たした場合、前記温度サンプリング値(332)を設定量だけ上げること、を含む、請求項11~15のいずれか一項に記載のシステム(100)。
【請求項17】
前記閾値は、10個の時間ステップの倍数を含む、請求項16に記載のシステム(100)。
【請求項18】
前記設定量は、0.1である、請求項16または17に記載のシステム(100)。
【請求項19】
前記温度サンプリング値(332)を決定することは、
前記パケット損失隠蔽イベント中に、前記対応する時間ステップに先行する前記複数の時間ステップ(322)の前記時間ステップ(322)の数に基づいて前記温度サンプリング値(332)を上げることを含む、請求項11~18のいずれか一項に記載のシステム(100)。
【請求項20】
前記温度サンプリング値(332)を決定することは、
前記温度サンプリング値(332)が前記最大温度サンプリング値(328)に等しくなると、前記温度サンプリング値(332)を前記最大温度サンプリング値(328)に維持することをさらに含む、請求項11~19のいずれか一項に記載のシステム(100)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、生成モデル推論における動的テンパリング処理サンプリングに関する。
【背景技術】
【0002】
複数の回帰生成モデルは、VoIP(voice over Internet Protocol)通信におけるパケット損失隠蔽(packet loss concealment)の影響をマスクする手法であるパケット損失隠蔽に使用できる。これらのモデルは、オーディオサンプルのシーケンスを受信し、シーケンス内の次のオーディオサンプルを直接推論するか、あるいは、複数のオーディオサンプルのそれぞれについて、対応するオーディオサンプルがシーケンス内の次のオーディオサンプルである相対的な尤度を提供する確率密度関数を推論することができる。確率密度関数は、直接サンプリング、平均サンプリング、最頻値サンプリング(mode sampling)、及びテンパリング処理サンプリング(tempered sampling)を含むさまざまな方法でサンプリングできる。
【発明の概要】
【0003】
本開示の一態様は、複数の出力オーディオサンプル(複数の出力音声サンプル:output audio samples)をサンプリングするための方法を提供する。方法は、アクティブな(活性化した:active)音声通信セッションにおけるパケット損失隠蔽イベントの間に、データ処理ハードウェアが、開始時刻および終了時刻を有する時間ウィンドウの間の前の出力オーディオサンプルのシーケンスを取得することを含む。終了時刻は、パケット損失隠蔽イベントが開始したときに発生する。パケット損失隠蔽イベントの間の複数の時間ステップの各時間ステップにおいて、方法は、データ処理ハードウェアが、音声合成モデルを使用して、対応する時間ステップについての可能性のある複数の出力オーディオサンプルに対する確率分布を生成することを含む。確率分布における可能性のある各出力オーディオサンプルは、対応する可能性のある出力オーディオサンプルが対応する時間ステップにおける発話の一部を表す尤度を示すそれぞれの確率を含む。また方法は、データ処理ハードウェアが、対応する時間ステップに先行する複数の時間ステップの時間ステップの数の関数、初期温度サンプリング値、最小温度サンプリング値、および最大温度サンプリング値に基づいて温度サンプリング値を決定することを含む。また方法は、データ処理ハードウェアが、温度サンプリング値を確率分布に適用して確率分布から可能性のある複数の出力オーディオサンプルを選択する確率を調整することを含む。また方法は、データ処理ハードウェアが、可能性のある複数の出力オーディオサンプルの各々に関連付けられた調整された確率に基づいて、確率分布の可能性のある複数の出力オーディオサンプルのうちの1つをランダムに選択すること、およびデータ処理ハードウェアが、ランダムに選択された出力オーディオサンプルを用いて合成された音声を生成することを含む。
【0004】
本開示の複数の実装形態は、以下の任意選択的な複数の特徴のうちの1つまたは複数を含み得る。いくつかの実施形態では、関数は線形関数である。いくつかの例では、最大温度サンプリング値は0.85である。任意選択的には、最小温度サンプリング値は0.25である。初期温度サンプリング値は、最小温度サンプリング値と同じであり得る。
【0005】
温度サンプリング値を決定することは、パケット損失隠蔽イベント中に、対応する時間ステップに先行する複数の時間ステップの時間ステップの数を決定すること、および時間ステップの数が閾値を満たした場合、温度サンプリング値を設定量だけ上げることを含み得る。いくつかの実施形態では、閾値は、10個の時間ステップの倍数である。設定量は0.1であり得る。温度サンプリング値を決定することは、いくつかの例では、パケット損失隠蔽イベント中に、対応する時間ステップに先行する複数の時間ステップの時間ステップの数に基づいて温度サンプリング値を上げることを含む。任意選択的には、温度サンプリング値を決定することは、温度サンプリング値が最大温度サンプリング値に等しくなると、温度サンプリング値を最大温度サンプリング値に維持することをさらに含む。
【0006】
本開示の他の態様は、複数の出力オーディオサンプルをサンプリングするシステムを提供する。このシステムは、データ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアと、を含む。メモリハードウェアは、データ処理ハードウェア上で実行されたときにデータ処理ハードウェアに複数の動作を実行させる複数の命令を記憶する。複数の動作は、アクティブな音声通信セッションにおけるパケット損失隠蔽イベントの間に、開始時刻および終了時刻を有する時間ウィンドウの間の前の出力オーディオサンプルのシーケンスを取得することを含む。終了時刻は、パケット損失隠蔽イベントが開始したときに発生する。パケット損失隠蔽イベントの間の複数の時間ステップの各時間ステップにおいて、複数の動作は、音声合成モデルを使用して、対応する時間ステップについての可能性のある複数の出力オーディオサンプルに対する確率分布を生成することを含む。確率分布における可能性のある各出力オーディオサンプルは、対応する可能性のある出力オーディオサンプルが対応する時間ステップにおける発話の一部を表す尤度を示すそれぞれの確率を含む。また複数の動作は、対応する時間ステップに先行する複数の時間ステップの時間ステップの数の関数、初期温度サンプリング値、最小温度サンプリング値、および最大温度サンプリング値に基づいて温度サンプリング値を決定することを含む。また複数の動作は、温度サンプリング値を確率分布に適用して確率分布から可能性のある複数の出力オーディオサンプルを選択する確率を調整することを含む。また複数の動作は、可能性のある複数の出力オーディオサンプルの各々に関連付けられた調整された確率に基づいて、確率分布の可能性のある複数の出力オーディオサンプルのうちの1つをランダムに選択すること、および、ランダムに選択された出力オーディオサンプルを用いて合成された音声を生成することを含む。
【0007】
この態様は、以下の任意選択的な複数の特徴のうちの1つまたは複数を含み得る。いくつかの実施形態では、関数は線形関数である。いくつかの例では、最大温度サンプリング値は0.85である。任意選択的には、最小温度サンプリング値は0.25である。初期温度サンプリング値は、最小温度サンプリング値と同じであり得る。
【0008】
温度サンプリング値を決定することは、パケット損失隠蔽イベント中に、対応する時間ステップに先行する複数の時間ステップの時間ステップの数を決定すること、および時間ステップの数が閾値を満たした場合、温度サンプリング値を設定量だけ上げることを含み得る。いくつかの実施形態では、閾値は、10個の時間ステップの倍数である。設定量は0.1であり得る。温度サンプリング値を決定することは、いくつかの例では、パケット損失隠蔽イベント中に、対応する時間ステップに先行する複数の時間ステップの時間ステップの数に基づいて温度サンプリング値を上げることを含む。任意選択的には、温度サンプリング値を決定することは、温度サンプリング値が最大温度サンプリング値に等しくなると、温度サンプリング値を最大温度サンプリング値に維持することをさらに含む。
【0009】
本開示の1つまたは複数の実施の詳細は、添付の図面および以下の詳細な説明に記載されている。他の態様、特徴、および利点は、詳細な説明および図面、ならびに特許請求の範囲から明らかになる。
【図面の簡単な説明】
【0010】
図1図1は、複数の出力オーディオサンプルをサンプリングする例示的なシステムの概略図である。
図2図2は、音声がない場合にバブリング出力を生成する音声合成モデルのプロットである。
図3図3は、動的テンパリング処理サンプリング器の例示的な複数の構成要素の概略図である。
図4図4は、サンプリング温度値を上げる線形関数のプロットの概略図である。
図5図5は、確率分布と調整された確率分布とのプロットの概略図である。
図6図6は、音声がない場合の固定サンプリング温度出力および動的サンプリング温度出力のプロットの概略図である。
図7図7は、大きく調整された音声での固定サンプリング温度出力および動的サンプリング温度出力のプロットの概略図である。
図8図8は、出力オーディオサンプルをサンプリングするための方法の複数の動作の例示的な構成のフローチャートである。
図9図9は、本明細書で説明されるシステムおよび方法を実施するために使用され得る例示的なコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【0011】
様々な図面の同様の参照記号は、同様の構成要素を示す。
パケット損失隠蔽(packet loss concealment)は、VoIP(voice over Internet Protocol)通信におけるパケット損失隠蔽の影響をマスクする手法である。VoIP通信では、オーディオデータ(すなわち、当事者間の通信の音声データ)は、典型的には、TCP/IP(Transmission Control Packet/Internet Protocol)および/またはUDP(User Datagram Protocol)ネットワークを介して複数のパケットとして送信される。これらのパケットは通常、失われたり、遅延したり、破損したりする。これが発生すると、当事者は、オーディオ品質の低下を経験する。このパケット損失を補償することを試みるさまざまなパケット損失隠蔽技術が存在する。たとえば、ゼロ挿入技術は、単に、欠落している複数のパケットをすべてゼロに置き換える。この場合、受信する当事者には、失った複数のパケットの代わりに無音が聞こえる。もう1つの一般的な手法は、以前に受信した音声の一部を繰り返すことによって、欠落しているオーディオデータを埋める波形置換である。例えば、波形置換は、最後に受信したフレームを繰り返すだけかもしれない。この手法は通常、短い損失イベント(例えば、単一のパケットの損失)には効果的であるが、損失イベントの長さが長くなると、波形置換はロボットのような音声となる傾向がある。
【0012】
回帰生成モデルなどのモデルベースの手法は、パケット損失隠蔽にますます使用されている。これらのモデルは、オーディオサンプルのシーケンスを受信し、シーケンス内の次のオーディオサンプルを直接推論するか、あるいは、複数のオーディオサンプルのそれぞれについて、対応するオーディオサンプルがシーケンス内の次のオーディオサンプルである相対的な尤度を提供する確率密度関数を推論することができる。確率密度関数は、直接サンプリング、平均サンプリング、最頻値サンプリング(mode sampling)、及びテンパリング処理サンプリング(tempered sampling)を含むさまざまな方法でサンプリングできる。サンプリング手法が異なれば、欠点も異なる。例えば、直接的なサンプリングでは、確率密度関数の平滑(smoothness)または集中(focus)が不足しているため、多くの場合にアーティファクトが発生する。
【0013】
テンパリング処理サンプリングは、確率密度関数がサンプリング温度値(sampling temperature value)によって重み付けまたは補正された場合に実施する。サンプリング温度(Sampling temperature)によって、確率密度関数のより良い表現(representation)を可能にするために、確率密度関数が変更または調整される。つまり、テンパリング処理サンプリングは、最も可能性の高い領域でサンプリングを平滑で且つ集中させる傾向がある。例えば、テンパリング処理サンプリングは、式(1)を使用して確率密度関数p(x)に重みを付けることができ、ここで、
【0014】
【数1】
はxにおける修正された確率、Zは(
【0015】
【数2】
が合計で「1」になることを保証するための)修正係数、tは温度サンプリング値(temperature sampling value)である。
【0016】
【数3】
式(1)の結果は、温度サンプリング値が高いほど、調整された確率密度関数
【0017】
【数4】
が元の確率密度関数p(x)に近くなる。逆に、温度サンプリング値が小さいほど、高い確率値の確率が高くなり、低い確率値の確率が低くなる。つまり、低い温度サンプリング値は、サンプリングを高い確率値のみにさらに制限する傾向がある。
【0018】
静的または固定のテンパリング処理サンプリング(つまり、温度サンプリング値が固定である)は、特にパケット損失隠蔽に適用される場合に大きな制限を有する。例えば、低い温度サンプリング値は、最終的にモデルの出力を無出力状態(silence)に崩壊させる(collapse)傾向がある。つまり、多くの場合、無出力状態は高い確率のオプションとなり、サンプリング温度が低いと、無出力状態が確率密度関数からサンプリングされる尤度が高くなる。サンプリングされた値は自己回帰モデルにフィードバックされ、次の時間ステップの確率密度関数に影響を与えるため、典型的には、無出力状態は、引き続き、高い確率のオプションである。これにより、無出力状態が継続的にサンプリングされ、このことは、多くの場合に音声が存在する場合のパケット損失隠蔽には望ましくない。
【0019】
逆に、高い温度サンプリング値は、出力に「バブリング(babbling)」を引き起こす傾向がある。つまり、モデルは、無出力状態で音声の生成(つまり、会話)を開始する傾向がある(図2)。予想されるように、このことはパケット損失隠蔽の手法でも望ましくない。
【0020】
本明細書における複数の実施形態は、音声通信セッション中に着信オーディオデータがない場合または遅延した場合にオーディオを生成するパケット損失隠蔽器(packet loss concealer)を対象としている。パケット損失隠蔽器は、パケット損失隠蔽イベントの各時間ステップの確率密度関数を生成する音声合成モデルを含む。パケット損失隠蔽器はまた、サンプリング温度に基づいて確率密度関数をサンプリングし、モデルが無出力状態に崩壊する可能性を最小限にするとともに、音声がない間にモデルがバブリングする可能性を最小限にするために、サンプリング温度を経時的に動的に変化させる動的テンパリング処理サンプリング器(dynamic tempered sampler)を含む。
【0021】
図1を参照すると、いくつかの実装形態では、例示的なシステム100は、2つ以上のユーザーデバイス10、10a~nを含み、それぞれが対応するユーザー12、12a~nに関連付けられており、それぞれがネットワーク112、112a~nを介してリモートシステム140と通信する。ユーザーデバイス10は、デスクトップワークステーション、ラップトップワークステーション、またはモバイルデバイス(すなわち、スマートフォン)などの任意のコンピューティングデバイスに対応し得る。ユーザーデバイス10は、複数のコンピューティングリソース18(例えば、データ処理ハードウェア)および/またはストレージリソース16(例えば、メモリハードウェア)を含む。
【0022】
リモートシステム140は、スケーラブル(scalable)/弾性(エラスティック)コンピューティングリソース144(例えば、データ処理ハードウェア)および/またはストレージリソース142(例えば、メモリハードウェア)を有する単一のコンピュータ、複数のコンピュータ、または分散型システム(例えば、クラウド環境)であり得る。データストア146(すなわち、リモートストレージデバイス146)は、複数のストレージリソース142上にオーバーレイされて(overlain)、複数のクライアントまたはコンピューティングリソース144のうちの1つまたは複数による複数のストレージリソース142のスケーラブルな使用を可能にすることができる。リモートシステム140は、ネットワーク112、112a~bを介して、ユーザーデバイス10、10a~b間で、VoIP(Voice over Internet Protocol)通話またはキャリアネットワーク音声通話に関連するものなどの音声データ信号を送受信するように構成されている。したがって、第1のユーザーデバイス10aを使用する第1の発信者(caller)12aは、リモートシステム140を介して第2のユーザーデバイス10bに電話またはビデオ通話を実施し得る。ユーザーデバイス10、10a~bは、ネットワーク112、112a~bを介してリモートシステム140に音声データ信号を送信することによって通信する。音声データ信号は、例えば、TCP/IPまたはUDPプロトコルを用いて一連のパケット20に分割され、各パケット20は、対応するユーザーデバイス10、10a~bからのオーディオ信号の1つまたは複数のオーディオサンプル22を含む。
【0023】
リモートシステム140は、パケット損失隠蔽器150を動作させる。第1のユーザーデバイス10aと第2のユーザーデバイス10bとの間のアクティブな音声通信セッションにおける(すなわち、1つまたは複数のパケット20が失われた、遅延された、または破損した)パケット損失隠蔽イベント中に、パケット損失隠蔽器150は、開始時刻Tおよび終了時刻Tを有する時間ウィンドウの間の前の出力オーディオサンプル22のシーケンスを受信する。終了時刻Tは、パケット損失隠蔽イベントが開始したときに発生する。開始時刻Tは、終了時刻Tより前の任意の時間であり得る。例えば、開始時刻Tは、終了時刻Tの280ミリ秒前である。開始時刻Tは、システム100の複数のパラメータに基づいて調整され得る。開始時刻Tが終了時刻Tから大きく離れるほど、いくつかの例では、パケット損失隠蔽器150がより効果的となり、パケット損失隠蔽器150が必要とする計算リソースが大きくなる。したがって、開始時刻Tは、有効性とパケット損失隠蔽器150に必要なコンピューティングリソースとのバランスをとるために最適化され得る。
【0024】
音声合成モデル160は、前の出力オーディオサンプル22のシーケンスを受信する。各サンプルは、時間ステップ(たとえば、10ミリ秒)に対応し得る。モデル160は、ニューラルネットワーク、例えば、リカレントニューラルネットワーク(recurrent neural network : RNN)であり得る。モデル160は、前の出力オーディオサンプル22のシーケンスに基づいて、シーケンス内の次のサンプル22(すなわち、次の時間ステップのオーディオサンプル22)についての可能性のあるすべての出力オーディオサンプルに対する確率分布164を生成する自己回帰生成モデルであり得る。確率分布164における可能性のある各出力オーディオサンプルは、対応する可能性のある出力オーディオサンプル22が次の時間ステップにおける発話(utterance)の一部を表す尤度(likelihood)を示すそれぞれの確率を含む。すなわち、前の出力オーディオサンプル22のシーケンスに基づいて、音声合成モデル160は、可能性のある各オーディオサンプル22について、対応するオーディオサンプル22がオーディオサンプル22のシーケンスにおいて次に現れる確率を予測する。換言すれば、モデル160は、通信中のユーザー12間の前の音声(スピーチ)の履歴に基づいて、(パケット損失隠蔽イベントに起因して利用できない)将来の音声(スピーチ)を予測する。発話は、連続して再生される多数(例えば、数百から数千)のオーディオサンプル22を含むことができる。
【0025】
前の出力オーディオサンプル22のシーケンスは、最近の使用可能なオーディオサンプル22を示し得る。すなわち、パケット損失隠蔽イベント(すなわち、1つまたは複数のパケット20およびそれらの対応するオーディオサンプル22は利用不可能である)中に、音声合成モデル160は、最初の損失パケット20の直前のオーディオサンプル22を受信し得る。
【0026】
引き続き図1を参照すると、動的テンパリング処理サンプリング器300は、音声合成モデル160から確率分布164を受け取る。図3に関してより詳細に説明されるように、動的テンパリング処理サンプリング器300は、確率分布164の可能性のある複数のオーディオ出力サンプル310のうちの1つをランダムに選択し、選択されたサンプル310を音声合成器170に供給する。音声合成器170は、ランダムに選択されたオーディオ出力サンプル310を用いて合成された音声172を生成する。合成された音声172は、パケット損失隠蔽イベントを誘発した利用不可能なパケット20およびオーディオサンプル22の代わりに、オーディオサンプル22のシーケンスにおける次のオーディオサンプルとして再生され得る。ランダムに選択されたオーディオ出力サンプル310はまた、音声合成モデル160に戻され、後続の時間ステップにおけるオーディオサンプルの予測に使用される。すなわち、音声合成モデル160は、同じパケット損失隠蔽イベント中に、前のオーディオサンプル22のシーケンスと、前の確率分布164から任意のランダムに選択されたオーディオ出力サンプル310とに基づいて、時間ステップごとに確率分布164を生成する。いくつかの例において、動的テンパリング処理サンプリング器300は、可能性のある複数のオーディオ出力サンプル310のうちの1つを(例えば、固定された種(シード)を使用することによって)擬似乱数的に(pseudo-randomly)選択し得る。
【0027】
ここで図2を参照すると、確率分布164が低い静的なサンプリング温度(すなわち、サンプリング温度は変化しない)でサンプリングされる場合、モデル160が無出力状態に崩壊する可能性が高い。逆に、確率分布164が高い静的なサンプリング温度でサンプリングされる場合、モデル160は、音声がない場合にバブリングする(babble)可能性が高い。プロット200は、バブリング(babbling)の複数の期間210を除いて無出力状態であるモデル(例えば、音声合成モデル160)によって出力されるオーディオ信号202を示す。これらの期間210は望ましくなく、ユーザー12間の通信の品質を大幅に低下させる。
【0028】
ここで図3を参照すると、静的な温度の制限を克服するために、動的テンパリング処理サンプリング器300は、パケット損失隠蔽イベントの開始以降の現在の時間ステップに先行する複数の時間ステップの時間ステップ322の数の関数に基づいて、温度サンプリング値332を決定する。温度サンプリング値332は、後述されるように、初期温度サンプリング値324、最小温度サンプリング値326、および最大温度サンプリング値328にも基づいている。
【0029】
いくつかの例では、時間ステップカウンタ(time step counter)320は、パケット損失隠蔽イベントの開始から経過した時間ステップ322の数をカウントまたは判定する。例えば、パケット損失隠蔽イベントが始まると、時間ステップカウンタ320は、カウント「0」(すなわち、時間ステップ322の数は「0」に等しい)で初期化され、以降の各時間ステップの開始時に時間ステップ322の数を1つずつ増加させる。いくつかの実施形態では、温度生成器(temperature generator)330は、初期温度サンプリング値324、最小温度サンプリング値326、および最大温度サンプリング値328とともに、時間ステップカウンタ320から現在の時間ステップ322の数を受け取る。初期、最大及び最小の温度サンプリング値324,326,328は、パケット損失隠蔽器150の複数のパラメータ(例えば、コンピューティングリソースの量)に基づいて予め設定されているか又は調整されてもよいし、又はユーザー12間のオーディオ通信の複数のパラメータ(例えば、オーディオ信号の周波数、オーディオ信号の振幅など)に基づいて調整されてもよい。
【0030】
温度生成器330は、時間ステップ322の数の関数と、初期、最大及び最小の温度サンプリング値324,326,328とに基づいて温度サンプリング値を決定し得る。いくつかの例では、関数は線形関数である。すなわち、いくつかの実施形態では、温度生成器330は、パケット損失隠蔽イベント中の現在の時間ステップに先行する時間ステップ322の数に基づいて温度サンプリング値332を上げる。図4のプロット400は、時間ステップ322の数を表すx軸および生成された温度サンプリング値332を表すy軸を有する例示的な線形関数410を示している。ここで、温度生成器330は、時間ステップの数が閾値を満たすと、温度サンプリング値332を設定量だけ上げる。たとえば、閾値は10個の時間ステップの倍数であり、設定量は0.1である。すなわち、いくつかの実施形態では、温度生成器330は、温度サンプリング値332を10個の時間ステップごとに0.1ずつ上げる。
【0031】
温度生成器330は、温度サンプリング値332を初期温度サンプリング値324に初期化し得る。初期温度サンプリング値324は、最小温度サンプリング値326と同じであり得る。例えば、最小および初期の温度サンプリング値324、326は、0.25であり得る。プロット400は、初期サンプリング値が0.25であるときを例示している。この例では、温度生成器330は、温度サンプリング値332を0.25に初期化し、最初の10個の時間ステップの間、0.25の値を維持する。最初の10個の時間ステップの後、温度生成器330は、温度サンプリング値332を0.1だけ上げて0.35の値にすることができる。温度生成器330は、温度サンプリング値332が最大温度サンプリング値328に到達するまで、10個の時間ステップごとに温度サンプリング値332を0.1ずつ上げ続けることができる。いくつかの例では、最大温度サンプリング値328は0.85である。温度サンプリング値332が最大温度サンプリング値328に等しくなると、温度生成器330は、パケット損失隠蔽イベントが終了するまで、温度サンプリング値332を最大温度サンプリング値328に維持し得る。
【0032】
本明細書で使用される関数および値は単なる例示であり、多くの異なる動的サンプリング温度の関数および値(例えば、初期、最小、および最大値324、326、328、ステップサイズなど)が使用され得ることが理解される。たとえば、線形関数の代わりに二次関数または指数関数が使用されてもよい。この関数は、サンプル数が増えると、温度サンプリング値を低下させることができる。関数は、周期的なものであってもよい。つまり、この関数は、さまざまなポイントで温度サンプリング値を増減し得る。
【0033】
図3を引き続き参照すると、温度値適用器(温度値アプライヤー:temperature value applier)340は、生成された温度サンプリング値332を受け取る。温度値適用器340は、現在の時間ステップについての確率分布164も受け取る。温度値適用器340は、温度サンプリング値332を確率分布164に適用して、確率分布164から可能性のある複数の出力オーディオサンプル22を選択またはサンプリングする確率を調整する。すなわち、温度値適用器340は、調整された確率分布342を生成するために、温度サンプリング値332に基づいて確率分布164を調整する。
【0034】
図5のプロット500は、温度サンプリング値(t)が0.5に等しいときに、例示的な調整された確率分布342とともにプロットされた例示的な確率分布164を示す。ここで、x軸は可能性のある出力オーディオサンプル22を表し、y軸は、対応する可能性のある出力オーディオサンプル22がサンプリングされるか、または確率分布164,342からランダムに選択される確率を表す。ここで、0.5に等しい温度サンプリング値(t)を用いたテンパリング処理サンプリングは、確率がより低い領域520を低下させるとともに、確率がより高い領域510を上昇させる。すなわち、確率分布164において高い確率を有する領域510(すなわち、x軸上で約400から600の間の値)は、調整された確率分布342において上昇したそれぞれの確率を有する。反対に、確率分布164において低い確率を有する領域520(すなわち、x軸上で約400よりも低い値および約600よりも大きい値)は、調整された確率分布342において低下したそれぞれの確率を有する。その結果、高い確率の領域510は、調整された確率分布342対確率分布164からランダムに選択される可能性がさらに高くなり、低い確率の領域520は、調整された確率分布342対確率分布164からランダムに選択される可能性がさらに低くなる。
【0035】
図3を再び参照すると、調整された確率分布342がサンプリング器350に渡される。サンプリング器350は、可能性のあるオーディオ出力サンプル310ごとの対応する確率に基づいて、調整された確率分布342の可能性のある複数のオーディオ出力サンプル310のうちの1つをランダムに選択する。すなわち、選択可能な出力オーディオサンプル22がランダムに選択される確率は、それぞれの可能性のある出力オーディオサンプル22に関連付けられた調整された確率に基づいている。したがって、高い確率を有する可能性のある出力オーディオサンプル22は、サンプリング器350によってランダムに選択される確率が高い。サンプリング器350は、ランダムに選択されたオーディオ出力サンプル310を音声合成器170に渡し、音声合成モデル160にも戻す。パケット損失隠蔽器150は、パケット損失隠蔽イベントが完了するまで、前の出力オーディオサンプル22のシーケンスおよび前に生成された各選択オーディオ出力サンプル310に基づいて、選択されたオーディオ出力サンプル310を生成し続けることができる。
【0036】
いくつかの実施形態において、音声合成モデル160は、一組の制約(constraint)(例えば、テキスト)を音声合成モデル160のための新しい入力に変換する調整ネットワーク(conditioning network)を含み、これにより、パケット損失隠蔽イベントの間、モデル160がいかなる可能性のある音声でも継続する(すなわち、予測する)ことを制限し、その代わりに、パケット損失隠蔽イベントが開始されたときに中断されたものと全く同じ音素(phoneme)のみを継続するようにモデル160を制限する。調整ネットワークから出力された調整ベクトルは、選択されたオーディオ出力サンプル310と組み合わされて、モデル160の出力を正しい話者(speaker)および言葉(words)に向けるために、モデルのすべての層のバイアス効果を生成することができる。いくつかの例では、調整ネットワークは、パケット損失隠蔽イベント中にその状態を展開(evolving)または更新することが禁止され、代わりに同じ調整ベクトルを繰り返すように強制される。これは、無出力状態に減衰する(fading)前に選択されるオーディオ出力サンプル310の数を制限すること(例えば、選択されたオーディオ出力サンプル310の130ミリ秒)と組み合わされて、パケット損失隠蔽器150が、ユーザー12間の通信における次の音素を予測することを制限し、代わりに現在の音素のみを完了させることができる。
【0037】
ここで図6および図7を参照すると、動的テンパリング処理サンプリング器300は、音声(スピーチ)中にモデル160が崩壊して無出力状態になる尤度を低下させるとともに、音声(スピーチ)がない間にモデル160が「バブリングする」(すなわち、望ましくない音声を生成する)尤度を低下させる。図6のプロット600は、ノイズのあるプライミング信号(priming signal)610と、例示的な静的または固定のサンプリング温度モデル出力620と、動的サンプリング温度モデル出力630とを示している。この例では、x軸は時間ステップの数を表し、y軸は信号610、620、630の振幅を表す。ここでは、固定サンプリング温度出力620は、大音量の「バブリング」(すなわち、期待されない音声)を生成するが、動的サンプリング温度モデル出力630は、期待される無出力状態を維持する。
【0038】
図7のプロット700は、大きな音声信号710と、例示的な固定サンプリング温度モデル出力720と、動的サンプリング温度モデル出力730とを示している。この例では、再び、x軸は時間ステップの数を表し、y軸は信号710、720、730の振幅を表す。ここでは、固定サンプリング温度出力720および動的サンプリング温度出力730の両方が所望したように動作し、大きく調整された音声信号を複製する。
【0039】
したがって、パケット損失隠蔽器150は、パケット損失隠蔽イベント中に可能性のある出力オーディオサンプルをサンプリングするときにサンプリング温度値を動的に制御する。モデルが「話す(talk)」(つまり、無出力状態ではない出力を予測する)意志(willingness)は、サンプリング温度及び調整ベクトルの2つの要因に基づいている。調整ベクトルは、生成された音声に関するコンテキスト情報を伝達する。調整ネットワークは、音声合成モデル160よりも広いアテンション時間(attention span)を有することができ、したがって、モデルをバイアスして、正しい音声、音素、または抑揚を有する音声を生成することができる。調整が大きい場合、調整バイアスにより、モデルはサンプリング温度が低くても話すことができる。反対に、調整が小さい場合、サンプリング温度は音声の開始または停止にとって非常に重要である。したがって、大きな調整ベクトルを使用して、モデル160にバイアスをかけて、話したり話し続けたりする傾向を有する偏った確率密度関数(skewed probability density function)を生成することができ、低いサンプリング温度でも、大きな調整ベクトルは、音声を生成する効果を有することができる。
【0040】
動的温度によって、これら2つの要因のバランスがとられる。パケット損失隠蔽イベントの開始時に、動的サンプリング温度が低いと、小さい調整でモデルが崩壊する。逆に、大きな調整の場合、モデルは崩壊せず、代わりに音声を生成し続ける。調整が小さい場合、モデルはすでに崩壊している可能性があるため、サンプリング温度をどれだけ上昇させても音声を復元することはできない。さらに、大きく調整されたモデルは、最終的には無出力状態に崩壊する。サンプリング温度が高いほど、この崩壊が発生する可能性は低くなる。そのため、サンプリング温度を動的に上昇させることにより、調整ベクトルまたはプライミング信号(すなわち、前の出力オーディオサンプルのシーケンス22)の分析を必要とせずに、期待されない音声および無出力状態への崩壊を最小限にする。すなわち、パケット損失隠蔽器150は、音声があるかどうかを決定するために、かなりの複雑さと追加のエラーの機会を追加する可能性がある入力された履歴を分析する必要がない。動的テンパリング処理サンプリング器300はまた、音声合成モデル160のトレーニングにおいていかなる変更も必要としない。
【0041】
本明細書における複数の例は、パケット損失隠蔽イベント中にパケット損失隠蔽器150のサンプリング温度を動的に変更することに向けられている。しかしながら、サンプリング温度を動的に変化させることは、確率密度関数からのサンプリングを含む他の状況にも適用可能であることが理解される。たとえば、動的温度サンプリングは、モデルによって生成される出力を改善するために、一般的に生成モデルでも使用できる。
【0042】
図8は、出力オーディオサンプルをサンプリングするための方法800の複数の動作の例示的な構成のフローチャートである。方法800は、アクティブな音声通信セッションにおけるパケット損失隠蔽イベントの間に、ステップ802において、データ処理ハードウェア144が、開始時刻および終了時刻を有する時間ウィンドウの間の前の出力オーディオサンプル22のシーケンスを取得することを含む。終了時刻は、パケット損失隠蔽イベントが開始したときに発生する。パケット損失隠蔽イベントの間の複数の時間ステップの各時間ステップにおいて、方法800は、ステップ804において、データ処理ハードウェア144が、音声合成モデル160を用いて、対応する時間ステップについての可能性のある複数の出力オーディオサンプル22に対する確率分布164を生成することを含む。確率分布における可能性のある各出力オーディオサンプル22は、対応する可能性のある出力オーディオサンプル22が対応する時間ステップにおける発話の一部を表す尤度を示すそれぞれの確率を含む。方法は、ステップ806において、データ処理ハードウェア144が、対応する時間ステップに先行する複数の時間ステップにおける時間ステップ322の数の関数、初期温度サンプリング値324、最小温度サンプリング値326、および最大温度サンプリング値328に基づいて温度サンプリング値332を決定することを含む。方法は、ステップ808において、データ処理ハードウェア144が、温度サンプリング値332を確率分布164に適用して確率分布164から可能性のある複数の出力オーディオサンプル22を選択する確率を調整することを含む。ステップ810において、方法800は、データ処理ハードウェア144が、可能性のある複数のオーディオサンプル22の各々に関連付けられた調整された確率に基づいて、確率分布342の可能性のある複数の出力オーディオサンプル310のうちの1つをランダムに選択することを含む。ステップ812において、方法800は、データ処理ハードウェア144が、ランダムに選択された出力オーディオサンプル310を用いて合成された音声172を生成することを含む。
【0043】
図9は、本明細書で説明されるシステムおよび方法を実施するために使用され得る例示的なコンピューティングデバイス900の概略図である。コンピューティングデバイス900は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを代表することが意図されている。本明細書に示された構成要素、それらの接続および関係、およびそれらの機能は、例示的なものに過ぎず、本明細書に記載および/または特許請求の範囲に記載される本発明の実施形態を限定するものではない。
【0044】
コンピューティングデバイス900は、プロセッサ910、メモリ920、ストレージデバイス930、メモリ920および高速拡張ポート950に接続する高速インタフェース/コントローラ940、および低速バス970およびストレージデバイス930に接続する低速インタフェース/コントローラ960を含む。構成要素910、920、930、940、950、および960の各々は、様々なバスを使用して相互接続され、かつ共通のマザーボード上に、または適切な他の方法で搭載され得る。プロセッサ910は、メモリ920またはストレージデバイス930に格納された命令を含むコンピューティングデバイス900内での実行のための命令を処理して、高速インタフェース940に接続されたディスプレイ980などの外部入力/出力デバイス上にグラフィカルユーザインタフェース(GUI)用のグラフィカル情報を表示する。他の実施形態では、複数のメモリおよび複数のタイプのメモリと共に、複数のプロセッサおよび/または複数のバスが適宜使用されてもよい。また、複数のコンピューティングデバイス900が接続され、各デバイスが(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な処理の一部を提供してもよい。
【0045】
メモリ920は、コンピューティングデバイス900内に非一時的に情報を記憶する。メモリ920は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであってもよい。非一時的メモリ920は、コンピューティングデバイス900による使用のための一時的または永久的な基準でプログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を格納するために使用される物理的デバイスであってもよい。不揮発性メモリの例には、これらに限定されないが、フラッシュメモリおよび読み出し専用メモリ(ROM)/プログラム可能読み出し専用メモリ(PROM)/消去可能プログラム可能読み出し専用メモリ(EPROM)/電子消去可能プログラム可能読み出し専用メモリ(EEPROM)(例えば、通常、ブートプログラムなどのファームウェアに使用される)が含まれる。揮発性メモリの例には、これらに限定されないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープが含まれる。
【0046】
ストレージデバイス930は、コンピューティングデバイス900の大容量ストレージデバイスを提供することができる。いくつかの実施形態では、ストレージデバイス930は、コンピュータ可読媒体である。種々の異なる実施形態では、ストレージデバイス930は、フロッピーディスク(登録商標)デバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークまたはその他の構成におけるデバイスを含むデバイスのアレイであり得る。追加の実施形態では、コンピュータプログラム製品は、情報媒体に有形的に具体化される。コンピュータプログラム製品は、実行時に、上記したような1つまたは複数の方法を実行する命令を含む。情報媒体は、メモリ920、ストレージデバイス930、またはプロセッサ910上のメモリなどの、コンピュータ可読媒体または機械可読媒体である。
【0047】
高速コントローラ940は、コンピューティングデバイス900の帯域幅を大量に使用する処理を管理し、低速コントローラ960は、より低い帯域幅を大量に使用する処理を管理する。このような役割の配分は、例示的なものに過ぎない。いくつかの実施形態では、高速コントローラ940は、メモリ920、ディスプレイ980(例えば、グラフィックプロセッサまたはアクセラレータを介する)、および各種拡張カード(図示せず)を受け入れる高速拡張ポート950に接続される。いくつかの実施形態では、低速コントローラ960は、ストレージデバイス930および低速拡張ポート990に接続される。様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含む低速拡張ポート990は、キーボード、ポインティングデバイス、スキャナ、または例えばネットワークアダプターを介するスイッチまたはルータなどのネットワークデバイスなどの1つまたは複数の入力/出力デバイスに接続され得る。
【0048】
コンピューティングデバイス900は、図面に示されるように、いくつかの異なる形態で実施することができる。例えば、標準サーバ900aとして、またはそのようなサーバ900aのグループ内で複数回、ラップトップコンピュータ900bとして、またはラックサーバシステム900cの一部として実施することができる。
【0049】
本明細書に記載のシステムおよび技術の様々な実施形態は、デジタル電子回路および/または光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせにおいて実現することができる。これらの様々な実施形態は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらにデータおよび命令を送信するように接続された、特別または一般的な目的であってもよい、少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムにおける実施形態を含むことができる。
【0050】
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース)は、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを指す。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と呼称される。例示的なアプリケーションは、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲームアプリケーションを含むが、これらに限定されない。
【0051】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られている)は、プログラマブルプロセッサ用の機械命令を含み、高水準の手続き型言語および/またはオブジェクト指向のプログラミング言語、および/またはアセンブリ言語/機械語で実施することができる。本明細書で使用する場合、「機械可読媒体」および「コンピュータ可読媒体」という用語は、任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、機械命令を機械可読信号として受け取る機械可読媒体を含む、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
【0052】
本明細書で説明するプロセスおよび論理フローは、入力データを処理して出力を生成することによって機能を実行する1つまたは複数のコンピュータプログラムを実行する、データ処理ハードウェアとも呼称される1つまたは複数のプログラマブルプロセッサによって実行することができる。プロセスおよび論理フローは、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの特定用途論理回路によっても実行することができる。コンピュータプログラムの実行に適したプロセッサは、一例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読み出し専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実行するプロセッサと、命令およびデータを格納するための1つまたは複数のメモリデバイスとである。一般に、コンピュータは、データを格納するための1つまたは複数の大容量ストレージデバイス(例えば、磁気ディスク、光磁気ディスク、または光ディスク)からのデータを受信するか、またはデータを転送するか、あるいはその両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するのに適したコンピュータ可読媒体には、半導体メモリデバイス(例えば、EPROM、EEPROM、およびフラッシュメモリデバイス)、磁気ディスク(例えば、内蔵ハードディスクまたはリムーバブルディスク)、光磁気ディスク、およびCDROMおよびDVD-ROMディスクを含む全ての形態の不揮発性メモリ、媒体およびメモリデバイスが含まれる。プロセッサおよびメモリは、特定用途論理回路によって補完または特定用途論理回路に組み込むことができる。
【0053】
ユーザーとのインタラクションを提供するために、本開示の1つまたは複数の態様は、例えば、CRT(陰極線管)、LDC(液晶ディスプレイ)モニタ、またはタッチスクリーンなどのユーザーに情報を表示するためのディスプレイデバイスと、任意選択でユーザーがコンピュータに入力を提供するキーボードおよびポインティングデバイス(例えば、マウスやトラックボール)とを有するコンピュータ上で実施することができる。他の種類の装置を使用して、例えば、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であり得るユーザーに提供されるフィードバックとともにユーザーとのインタラクションを提供することもでき、ユーザーからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、ユーザーによって使用されるデバイスとの間でドキュメントを送受信することによって(例えば、ウェブブラウザから受信した要求に応答してユーザーのクライアントデバイス上のウェブブラウザにウェブページを送信することによって)、ユーザーとインタラクションすることができる。
【0054】
いくつかの実施形態が説明されている。それにもかかわらず、本開示の技術思想および範囲から逸脱することなく、様々な変更がなされ得ることが理解されるであろう。従って、他の実施形態も以下の特許請求の範囲内にある。
図1
図2
図3
図4
図5
図6
図7
図8
図9