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

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

▶ エヌビディア コーポレーションの特許一覧

特表2024-504523会話AIアプリケーションのための話者適応型スピーチ終了検出
<>
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図1
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図2
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図3A
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図3B
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図4
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図5
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図6
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図7
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図8
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図9
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図10
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図11
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図12
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図13
  • 特表-会話AIアプリケーションのための話者適応型スピーチ終了検出 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-01
(54)【発明の名称】会話AIアプリケーションのための話者適応型スピーチ終了検出
(51)【国際特許分類】
   G10L 15/04 20130101AFI20240125BHJP
   G10L 25/87 20130101ALI20240125BHJP
   G10L 15/10 20060101ALI20240125BHJP
   G10L 25/30 20130101ALI20240125BHJP
【FI】
G10L15/04 300Z
G10L25/87
G10L15/10 500Z
G10L25/30
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022509604
(86)(22)【出願日】2022-01-28
(85)【翻訳文提出日】2022-04-18
(86)【国際出願番号】 US2022014421
(87)【国際公開番号】W WO2022165256
(87)【国際公開日】2022-08-04
(31)【優先権主張番号】17/162,907
(32)【優先日】2021-01-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS PHONE
2.ANDROID
3.BLACKBERRY
4.iOS
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ヴァイディア、ウトカーシュ
(72)【発明者】
【氏名】ロカーンデ、ラヴィンドラ イェシュワント
(72)【発明者】
【氏名】カランディカール、ヴィラジ ガンガダール
(72)【発明者】
【氏名】ワルティカール、ニランジャン ラジェンドラ
(72)【発明者】
【氏名】バーッタチャリヤ、スミット クマール
(57)【要約】
様々な実例では、オーディオ信号のスピーチ終了(EOS)は、話者のスピーチ速度に少なくとも部分的に基づいて決定される。オーディオ信号のセグメントに対して、EOSは、話者のスピーチ速度に少なくとも部分的に基づいて決定されたEOS閾値に少なくとも部分的に基づいて指示される。
【特許請求の範囲】
【請求項1】
スピーチ速度に少なくとも部分的に基づいてスピーチ終了(EOS)閾値を決定するステップと、
オーディオ入力のセグメントのセットのうちの少なくとも1つのセグメントについて、前記少なくとも1つのセグメントを表すキャラクタのセットを予測するステップと、
前記少なくとも1つのセグメントに対する予測されたキャラクタの前記セットについて前記EOS閾値が満たされるという決定に少なくとも部分的に基づいて、前記少なくとも1つのセグメントに対応するEOSを決定するステップと
を含む、方法。
【請求項2】
前記セグメントに対する予測されたキャラクタの前記セットが、キャラクタの前記セットのうちの1つのキャラクタの確率分布を、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能が出力として生成することによって生成される、請求項1に記載の方法。
【請求項3】
前記スピーチ速度が、単語間間隔のセットに少なくとも部分的に基づいて決定される、請求項2に記載の方法。
【請求項4】
前記EOS閾値を決定するステップが、単語間間隔の前記セットの最大単語間間隔に少なくとも部分的に基づいて前記EOS閾値を修正するステップをさらに含む、請求項3に記載の方法。
【請求項5】
前記EOS閾値を決定するステップが、単語間間隔の前記セットの中間値に少なくとも部分的に基づいて前記EOS閾値を修正するステップをさらに含む、請求項3に記載の方法。
【請求項6】
前記EOS閾値を決定するステップが、単語間間隔の前記セットの分散、及び単語間間隔の前記セットの最大単語間間隔に少なくとも部分的に基づいて、前記EOS閾値を修正するステップをさらに含む、請求項3に記載の方法。
【請求項7】
単語間間隔の前記セットが、キャラクタの前記セットのうちのキャラクタの第1のサブセットと、キャラクタの前記セットのうちのキャラクタの第2のサブセットとの間の時間を少なくとも決定することによって計算される、請求項3に記載の方法。
【請求項8】
前記時間が、セグメントの前記セットのうちのいくつかのセグメントに対応する、請求項7に記載の方法。
【請求項9】
キャラクタの前記セットが、グリーディ選択アルゴリズムを前記CTC機能の前記出力に少なくとも適用することによって決定される、請求項7に記載の方法。
【請求項10】
キャラクタの前記第1のサブセット及びキャラクタの前記第2のサブセットが、ブランク記号をさらに含む、請求項9に記載の方法。
【請求項11】
セグメントの前記セットのうちの前記少なくとも1つのセグメントに対応する前記EOSを決定するステップが、前記セグメントに対する予測されたキャラクタの前記セットに含まれるブランク記号の割合を決定するステップをさらに含む、請求項1に記載の方法。
【請求項12】
セグメントの前記セットのうちの前記少なくとも1つのセグメントに対応する前記EOSを決定するステップが、前記割合が前記EOS閾値を超過したと決定するステップをさらに含む、請求項11に記載の方法。
【請求項13】
ブランク記号の前記割合を決定するステップが、第1の長さのスライディング・ウィンドウのブランク記号の前記割合を決定するステップをさらに含み、前記セグメントが、前記スライディング・ウィンドウに含まれる、請求項11に記載の方法。
【請求項14】
1つ又は複数のキャラクタの前記セットを予測するステップが、1つ又は複数のニューラル・ネットワークを使用して、1つ又は複数のキャラクタの前記セットを予測するステップを含む、請求項1に記載の方法。
【請求項15】
1つ又は複数のキャラクタの前記セットを予測する前記ステップが、キャラクタの前記セットのうちの1つのキャラクタの確率分布を出力として生成し、前記確率分布を前記EOS検出器に提供するコネクショニスト・テンポラル・クラシフィケーション(CTC)機能に、前記1つ又は複数のニューラル・ネットワークの出力を適用するステップをさらに含む、請求項14に記載の方法。
【請求項16】
システムであって、
1つ又は複数のプロセッサと、
命令を格納するメモリであって、前記命令は、前記1つ又は複数のプロセッサによって実行された結果として、前記システムに、
スピーチ速度に少なくとも部分的に基づいて決定されたスピーチ終了(EOS)閾値の決定を生成すること、及び
前記EOS閾値に少なくとも部分的に基づいてオーディオのウィンドウに対するEOSの決定を生成すること
を行わせる、メモリと
を備える、システム。
【請求項17】
前記メモリが、命令をさらに含み、前記命令は、前記1つ又は複数のプロセッサによって実行された結果として、前記システムに、神経音響モデルを実装する1つ若しくは複数のニューラル・ネットワーク、又はコネクショニスト・テンポラル・クラシフィケーション(CTC)機能のうちの少なくとも1つを使用して生成されたオーディオの前記ウィンドウに対して予測されたキャラクタのセットを取得させる、請求項16に記載のシステム。
【請求項18】
前記メモリが、命令をさらに含み、前記命令は、前記1つ又は複数のプロセッサによって実行された結果として、前記システムに、
オーディオ信号から単語のセットを取得することであって、オーディオの前記ウィンドウが、前記オーディオ信号の一部を表す、取得することと、
単語の前記セットに少なくとも部分的に基づいて決定された単語間間隔のセットに少なくとも部分的に基づいて前記スピーチ速度を決定することと
を行わせる、請求項16に記載のシステム。
【請求項19】
前記メモリが、命令をさらに含み、前記命令は、前記1つ又は複数のプロセッサによって実行された結果として、前記システムに、オーディオ信号を表すウィンドウのセットに含まれる単語のセットに少なくとも部分的に基づいて計算された単語間間隔のセットの最大値に少なくとも部分的に基づいて前記スピーチ速度を決定させ、オーディオの前記ウィンドウが、ウィンドウの前記セットのメンバである、請求項16に記載のシステム。
【請求項20】
オーディオの前記ウィンドウが、スピーチを含むオーディオ信号の複数の時間ステップを含む、請求項16に記載のシステム。
【請求項21】
前記メモリが、命令をさらに含み、前記命令は、前記1つ又は複数のプロセッサによって実行された結果として、前記システムに、スピーチ処理パイプラインを実行させ、
前記システムに前記EOSの前記決定を生成させる命令が、前記1つ又は複数のプロセッサによって実行された結果として、前記システムに、前記スピーチ処理パイプラインの一部として前記EOSの前記決定を生成させる命令をさらに含む、
請求項16に記載のシステム。
【請求項22】
前記EOSの前記決定を生成することが、前記スピーチ処理パイプラインのEOS検出器によって実行される、請求項21に記載のシステム。
【請求項23】
EOS閾値に少なくとも部分的に基づいて、オーディオ信号のオーディオ・フレームのセットのうちのオーディオ・フレームのサブセットにスピーチ終了(EOS)としてフラグを立てるステップであって、前記EOS閾値が、単語間間隔のセットに少なくとも部分的に基づいて決定される、フラグを立てるステップ
を含む、方法。
【請求項24】
前記方法が、音響モデルによって生成されたオーディオ・フレームの前記セットの特徴のセットを入力として使用して、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能によって生成されたキャラクタのセットに少なくとも部分的に基づいて単語間間隔の前記セットを決定するステップをさらに含む、請求項23に記載の方法。
【請求項25】
前記EOS閾値を決定するステップが、前記EOS閾値を単語間間隔の前記セットの平均間隔にセットするステップをさらに含む、請求項23に記載の方法。
【請求項26】
前記方法が、オーディオ・フレームの前記サブセットにEOSとしてフラグを立てるステップの結果として、前記オーディオ信号のトランスクリプトを生成するステップをさらに含む、請求項23に記載の方法。
【請求項27】
前記方法が、前記EOS閾値をスピーチ認識パイプラインに提供するステップをさらに含む、請求項23に記載の方法。
【請求項28】
プロセッサであって、少なくとも部分的に、
1つ又は複数のニューラル・ネットワークによって、オーディオ入力のセグメントのセットのうちの1つのセグメントに対して、前記セグメントに関連付けられたキャラクタのセットを予測することと、
前記1つ又は複数のニューラル・ネットワークによって、前記セグメントに関連付けられたキャラクタの前記セットについてスピーチ終了(EOS)閾値が満たされるという決定に少なくとも部分的に基づいて、前記セグメントに対応する前記EOSを決定することと
によって、前記1つ又は複数のニューラル・ネットワークを使用して、スピーチ速度に少なくとも部分的に基づいて決定された前記EOS閾値の決定を生成するための1つ又は複数の算術論理演算装置(ALU)を備える、プロセッサ。
【請求項29】
前記1つ又は複数のニューラル・ネットワークが、神経音響モデルをさらに備える、請求項28に記載のプロセッサ。
【請求項30】
前記1つ又は複数のニューラル・ネットワークが、スピーチ処理パイプラインを実装するために使用される、請求項28に記載のプロセッサ。
【請求項31】
前記1つ又は複数のALUが、音響モデルによって生成された前記オーディオ入力のセグメントの前記セットの特徴のセットを入力として使用して、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能によって生成されたキャラクタのセットに少なくとも部分的に基づいて、単語間間隔のセットをさらに決定する、請求項28に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、「SPEAKER ADAPTIVE END OF SPEECH DETECTION FOR CONVERSATIONAL AI APPLICATIONS」という名称の、2021年1月29日に出願された米国特許出願第17/162,907号の優先権を主張し、この内容全体が、全体として参照により、またあらゆる目的のために、本明細書に組み込まれている。
【背景技術】
【0002】
ボイス制御、又は、様々なデバイスとのスピーチ・ベースの相互作用を提供することなど、様々な異なる目的のために、オーディオ・データがキャプチャされる。残念ながら、キャプチャされたオーディオ内のスピーチの適切な要素を検出することは、特にリソースが限定的なデバイスにとって、挑戦的であることを証明し得る。具体的には、ユーザによるスピーチ開始及びスピーチ終了を検出する際の誤りは、様々な異なる目的のためにキャプチャされたオーディオ・データを処理する際の、エラー、不正確さ、及び遅延につながり得る。以前のソリューションは、スピーチ終了検出の悪い結果及び高レイテンシという危険を冒している。
【発明の概要】
【課題を解決するための手段】
【0003】
様々な技法が、図面を参照しながら説明される。
【図面の簡単な説明】
【0004】
図1】少なくとも1つの実施例による、オーディオ・データを解析するためのシステムを示す図である。
図2】少なくとも1つの実施例による、オーディオ処理パイプラインを示す図である。
図3A】少なくとも1つの実施例による、スピーチ終了検出へのアプローチを示す図である。
図3B】少なくとも1つの実施例による、スピーチ終了検出へのアプローチを示す図である。
図4】少なくとも1つの実施例による、オーディオ信号内のスピーチを解析するための処理を示す図である。
図5】少なくとも1つの実施例による、話者適応型スピーチ終了及び/又はスピーチ開始閾値を決定する処理を示す図である。
図6】少なくとも1つの実施例による、話者適応型スピーチ終了閾値に少なくとも部分的に基づいて、スピーチ終了にフラグを立てる処理を示す図である。
図7】一実施例による、並列処理ユニット(「PPU」:parallel processing unit)の実例を示す図である。
図8】1つの実施例による、総合処理クラスタ(「GPC」:general processing cluster)の実例を示す図である。
図9】1つの実施例による、メモリ区画ユニットの実例を示す図である。
図10】1つの実施例による、ストリーミング・マルチプロセッサの実例を示す図である。
図11】1つの実施例による、様々な実例が実装されることが可能なコンピュータ・システムを示す図である。
図12】少なくとも1つの実施例による、分散型システムを示す図である。
図13】少なくとも1つの実施例による、クラウド・コンピューティング環境を示す図である。
図14】少なくとも1つの実施例による、クラウド・コンピューティング環境によって提供される機能抽象化レイヤのセットを示す図である。
【発明を実施するための形態】
【0005】
本開示の実施例は、話者適応型スピーチ終了(EOS:end of speech)検出に関する。特定の話者のスピーチ速度に少なくとも部分的に基づいて、スピーチ開始(SOS:start of speech)及びEOSを検出するシステム及び方法が開示される。
【0006】
上記で説明されたシステムなどの従来のシステムとは対照的に、特定の話者の取得された情報(例えばスピーチ速度)に少なくとも部分的に基づいて、SOS及びEOS検出を動的に適合させることが、レイテンシを低減させ、SOS及びEOS検出の精度を向上させる。本開示では、コネクショニスト・テンポラル・クラシフィケーション(CTC:connectionist temporal classification)に少なくとも部分的に基づく、話者適応型EOS検出器の自動スピーチ認識が説明される。様々な実施例では、EOS閾値は、EOSとしてフラグを立てるための、オーディオ・データ内の検出された沈黙の最小期間を指示する。少なくとも1つの実施例では、EOS検出のためのスライディング・ウィンドウ・サイズを定義するEOSウィンドウ長、及び、スライディング・ウィンドウ内のブランク記号の割合がEOS閾値を満たすか、超過するとき、トランスクリプト(transcript)又は時間間隔の一部にEOSとしてフラグを立てるために使用されることが可能なEOS閾値が、指定されることが可能である。例えば、500msのウィンドウ・サイズ、及び95%にセットされたEOS閾値で、少なくとも95%のブランク・スペースを伴う特定のウィンドウについてのCTCの出力文字列が、より詳細に下記で説明されるように、EOS検出器によってEOSとしてフラグを立てられるはずである。
【0007】
特定の話者のEOS閾値を決定するために、より詳細に下記で説明されるように、CTCの出力に少なくとも部分的に基づいて、連続する単語の間の間隔(例えば、単語間(inter-word)時間)が計算される。1つの実例では、EOS閾値は、CTCによって出力されたキャラクタの文字列に少なくとも部分的に基づいて、単語間時間のセットに応じて計算される。話者適応型EOSを使用した自動スピーチ認識を実施するとき、特定の話者のスピーチ速度を推定する前に、特定の話者によって話される特定の数の単語がキャプチャされ得る。1つの実例では、25個の単語間時間のセットが、スピーチ速度を計算する前に取得される。
【0008】
より詳細に下記で説明されるように、スピーチ速度は、単語が生み出されるスピードの度合いであり得、スピーチ速度は、単語間時間のセットの平均、単語間時間のセットの最大値、単語間時間のセットの最小値、単語間時間の分散、単語間時間のセットの他の関数、及び/又は、その組合せなど、非常に多くのやり方で定義されることが可能である。様々な実施例では、スピーチ速度が決定されると、EOS閾値が特定の話者に対して適合されるか、そうでなければ修正される。同様に、スピーチ速度は、SOS閾値を適合させるか、そうでなければ修正するために、使用されることが可能である。様々な実施例では、EOS閾値及び/又はSOS閾値は、スピーチ速度に少なくとも部分的に基づいて、周期的又は非周期的に修正される。
【0009】
特定の話者のEOS閾値及びSOS閾値が決定されると、様々な実施例では、EOS閾値及びSOS閾値は、自動スピーチ認識処理の一部として取得されたオーディオ・データのSOS及びEOSを決定するために使用される。より詳細に下記で説明されるように、CTCに入力される前に、様々な構成要素(例えば、特徴抽出器及び神経音響モデル)によって入力オーディオが処理され得る。CTCは、様々な実施例では、考えうるキャラクタの確率分布、又は、オーディオ入力のこのオーディオ・フレーム若しくは時間ステップに収められたサンプルを提供する。1つの実例では、これらのキャラクタは、任意の適切な英数字キャラクタ、及び、潜在的に、他のキャラクタが検出されない時間ステップ又はオーディオ・フレームを表すためのブランクなどの1つ又は複数の特別なキャラクタを含み得る。様々な実施例では、EOS検出器で処理するためのキャラクタの文字列を決定するために、CTCにおいて指示された確率分布に少なくとも部分的に基づいて、考えうるキャラクタのセットから、最もありそうなキャラクタが選択される。
【0010】
EOS検出器は、実施例では、スライディング・ウィンドウのうちの特定のウィンドウに対する、キャラクタの文字列内のブランク記号の割合を決定する。1つの実例では、キャラクタの文字列内の時間ステップのセットに対して、EOS検出器は、現在の状態がスピーチ状態であるか(例えば、現在のキャラクタがスピーチを指示するか)、非スピーチ状態であるか(例えば、現在がブランク及び/又は沈黙を指示するか)を決定する。次に、EOS検出器は、ブランク記号(例えば非スピーチ状態)の割合がEOS閾値を満たすかどうかを決定し得る。例えば、EOS閾値が満たされる場合、EOSはフラグを立てられ得、デコーダが、より詳細に下記で説明されるように、オーディオ入力に関連付けられたトランスクリプトを生成する。
【0011】
少なくとも1つの実施例では、オーディオ・キャプチャ・デバイス106のマイクロフォン108がオーディオ信号をキャプチャすることができ、オーディオ信号は、少なくとも1人の人物102によって発せられたスピーチ104を含み得る。様々な実施例では、マイクロフォン108は、音波を電気エネルギーの変動にコンバートするための器具を含み、電気エネルギーの変動は、その後、より詳細に下記で説明される様々な実施例での使用のために、増幅、伝送、又は記録され得る。1つの実例では、マイクロフォン108は、ユーザ102によって身につけられるヘッドセットの一部として含まれ、ここで、マイクロフォン108の出力は、オーディオ・キャプチャ・デバイス106への入力として提供される。別の実例では、マイクロフォン108は、ユーザ102から離れた場所にあるオーディオ・キャプチャ・デバイス106の一部であり(例えば、オーディオ・キャプチャ・デバイス106と統合され)、ここで、オーディオ・キャプチャ・デバイス106は、コンピューティング・デバイス、モノのインターネット(IoT)デバイス、スマート・スピーカ、モバイル・フォン、コンピュータ、又は、オーディオ信号若しくはデータをキャプチャ若しくは受信することができる他のデバイスを含むか、その一部であり得る。様々な実施例では、オーディオ・キャプチャ・デバイス106は、ナビゲーション・システム、車両、セキュリティ・カメラ、又は他のシステムなどの、別のデバイスに統合される。
【0012】
さらに、オーディオ・キャプチャ・デバイス106は、ネットワーク及び/又は処理機能を含み得る。1つの実例では、オーディオ・キャプチャ・デバイス106は、データをオーディオ解析器112に伝送するための、ネットワーキング・インターフェース(例えば、WiFi無線)を含む。様々な実施例では、オーディオ解析器112は、コンピューティング・デバイスの処理によって実行されると、スピーチ104に少なくとも部分的に基づいてトランスクリプト116を生成することなどの、本開示で説明される様々な動作をコンピューティング・デバイスに実施させる実行可能コード又は他の命令(例えば、メモリに格納されたソース・コード)を含む。例えば、オーディオ・キャプチャ・デバイス106は、オーディオ解析器112を実行するため、又は、本開示で説明される他の動作を実施するために使用される、メモリ及びプロセッサを含む。さらに他の実施例では、オーディオ解析器112は、コンピューティング・リソース・サービス・プロバイダ(例えば、クラウド・コンピューティング・サービス・プロバイダ)によって提供されるサービスを備える。このような実施例では、オーディオ解析器112は、本開示で説明される動作を実施するために、データ・センタにおける(例えば、仮想マシン又はコンテナ・インスタンスを使用した)1つ又は複数のサーバによって実行される。1つの実例では、オーディオ・キャプチャ・デバイス106は、オーディオ解析器112に関連付けられたサービス・エンドポイントに1つ又は複数のオーディオ信号110をネットワークで伝送する。
【0013】
少なくとも1つの実施例では、ユーザ102によって発せられたスピーチ104は、いくつかの適切な目的のいずれかのために、テキストに起こされるか、そうでなければコンバートされることになるスピーチであり得る。例えば、スピーチ104は、仮想アシスタント又は他のアプリケーションによる使用のためのテキストに起こされる。別の実例では、スピーチ104は解析され、少なくとも1つのボイス制御可能デバイス118への命令又はリクエストを提供するために使用されることが可能なテキスト・コマンドにコンバートされる。少なくとも1つの実施例では、ボイス制御可能又はボイス活性化デバイス118は、車両などの物理的なアクションを行うことができるデバイス、又は、決定されたボイス・コマンド若しくはリクエストに対応する命令を実行することができるソフトウェアを含むコンピューティング・デバイスを含むことができる。
【0014】
少なくとも1つの実施例では、オーディオ・キャプチャ・デバイス106は、マイクロフォン108を使用して1つ又は複数のオーディオ信号110をキャプチャすることができ、オーディオ信号110は、オーディオ解析器112に伝えられることが可能である。上記で説明されたように、オーディオ解析器112は、オーディオ・キャプチャ・デバイス106と同じデバイス上にあってよく、又は、ワイヤレス接続で利用可能なリモート・デバイス、若しくは、ネットワーク接続で利用可能なリモート・サーバなどの、別々のデバイス上にあってもよい。さらに、様々な実施例では、オーディオ解析器112は、スピーチ処理パイプライン114を含み、スピーチ処理パイプライン114は、より詳細に下記で論じられるように、オーディオ信号110を入力として用いて、オーディオ信号110を解析し、1つ又は複数のトランスクリプト116、又はオーディオ信号に少なくとも部分的に基づいて生成された他のテキストを生成する。様々な実施例では、スピーチ処理パイプライン114は、コンピューティング・デバイスの処理によって実行されると、本開示で説明される様々な動作をコンピューティング・デバイスに実施させる(例えば、オーディオ信号110を入力として用いて、オーディオ信号110を解析し、1つ又は複数のトランスクリプト116を生成する)実行可能コード又は他の命令(例えば、メモリに格納されたソース・コード)を含む。少なくとも1つの実施例では、トランスクリプト116は、ボイス制御可能デバイス118に提供され、ボイス制御可能デバイス118は、トランスクリプト116に収められたテキストに少なくとも部分的に基づいて、1つ又は複数のアクションを実施することができる。
【0015】
様々な実施例では、ボイス制御可能デバイス118は、ボイス制御可能デバイス118のコントローラ122(又は他のアプリケーション若しくは構成要素)によって実行可能なテキストに少なくとも部分的に基づいて、トランスクリプト116に含まれるテキストを解析し、コマンドを生成することができる、コマンド生成器120を含む。様々な実施例では、コマンド生成器120及びコントローラ122は、コンピューティング・デバイス(例えば、ボイス制御可能デバイス118)の処理によって実行されると、トランスクリプト116に少なくとも部分的に基づいてコマンドを生成し、コンピューティング・デバイスにコマンドを実行させることなどの、本開示で説明される様々な動作をコンピューティング・デバイスに実施させる実行可能コード又は他の命令(例えば、メモリに格納されたソース・コード)を含む。例えば、コマンドは、デバイス、ロボット、又は車両の動作を調節するために提供される。別の実例では、コマンドは、サーチ・エンジン、データベース・クエリ、又はアプリケーションの他の動作などを通じて情報を返すために提供される。さらに他の実施例では、トランスクリプト116は、その代わりに、その後の使用又は解析のために格納される(例えば、トランスクリプト116をデータベースに格納する)。上述のように、ボイス制御可能デバイス118は、オーディオ解析器112と同じデバイス内に統合され得、オーディオ・キャプチャ・デバイス106も含み得るか、代替として、本開示で説明される他の構成要素に、少なくとも1つの有線又はワイヤレス接続で通信することができる別々のデバイス上にあり得る。1つの実例では、ボイス制御可能デバイス118は、(コンピューティング・リソース・サービス・プロバイダのサービスとして実装される)オーディオ解析器112からトランスクリプト116をネットワークで受信するために、コンピューティング・リソース・サービス・プロバイダのサービスに登録される。
【0016】
少なくとも1つの実施例では、スピーチ処理パイプライン114は、図2に関連してより詳細に下記で説明されるものなどの、様々な構成要素(例えば、ソース・コードを実行するソフトウェア及び/又はハードウェア構成要素)を含む。様々な実施例では、スピーチ処理パイプライン114は、オーディオ信号110に少なくとも部分的に基づいて、ユーザ102のスピーチ速度を決定する。より詳細に下記で説明されるように、スピーチ処理パイプライン114は、実施例では、十分な数の単語間時間が決定されると、ユーザ102のレート・スピーチに少なくとも部分的に基づいて修正されたスピーチ終了(EOS)閾値を利用する。より詳細に下記で説明されるように、スピーチ処理パイプライン114は、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能又は他のアルゴリズムを使用して、オーディオ信号110内のキャプチャされたスピーチ104を表すキャラクタの文字列を生成し得る。実施例では、スピーチ処理パイプライン114は、次に、キャラクタの文字列に含まれるブランク・キャラクタに少なくとも部分的に基づいて、単語間間隔のセット(例えば、スピーチ104における話された単語間の時間)を決定する。単語間間隔のセットは、次に、EOS閾値を修正及び/又は置換するための機能への入力として使用され得る。より詳細に下記で説明されるように、EOS閾値は、実施例では、トランスクリプト116が生成され、及び/又はボイス制御可能デバイス118に提供されることが可能なEOSシグナリングにフラグを立てるためにEOS検出器によって使用される。
【0017】
図2は、マイクロフォンによってキャプチャされるか、そうでなければ取得された入力オーディオ202が、トランスクリプト214を生成するためにスピーチ処理パイプライン200に入力として提供される実施例を示す。例えば、入力オーディオ202は、図1に関連して上記で説明されたように、オーディオ・キャプチャ・デバイス106によってキャプチャされる。様々な実施例では、スピーチ処理パイプライン200並びにその構成要素(例えば、特徴抽出器204、神経音響モデル、CTC、EOC検出器210、及びデコーダ212)は、コンピューティング・デバイス(例えば、図1に関連して上記で説明されたような、オーディオ・キャプチャ・デバイス106)の処理によって実行されると、より詳細に下記で説明される様々な動作をコンピューティング・デバイスに実施させる実行可能コード又は他の命令(例えば、メモリに格納されたソース・コード)を含む。さらに、上記で説明されたように、トランスクリプトは、図1に関連して説明されたような、ボイス制御可能デバイス118による使用に適したテキスト又は他の情報を含み得る。
【0018】
図2に示された構成要素は、単一のコンピューティング・デバイス、又は、本開示で説明されるようなクラウド・コンピューティング・デバイスを含む複数のコンピューティング・デバイス上で実施され得る。例えば、ローカル・デバイス(例えば、セル・フォン、スマート・スピーカ、スマート・テレビ、又は、オーディオをキャプチャすることができる他のデバイス)が入力オーディオ202をキャプチャし、下記で詳細に説明されるような、コンピューティング・リソース・サービス・プロバイダのサービスとして実行されるスピーチ認識パイプライン200に入力オーディオ202を提供する。全体的に、図2に示された構成要素は、コンピューティング・デバイス、クラウディング・コンピューティング・デバイス、又はその組合せによって実行され得る。全体に、本明細書で説明される動作は、異なる実施例による異なるやり方で、デバイスのセットの間での実施のために分散されることが可能である。
【0019】
実施例では、入力オーディオ202は、特徴抽出器204に提供される。特徴抽出器204は、様々な実施例では、入力オーディオ202の1つ又は複数のオーディオ・フレーム内で認識された1つ又は複数のパターンに対応し得るなど、入力オーディオ202のコンテンツを表す入力及び出力特徴としての入力オーディオ202を受け入れるように訓練された、少なくとも1つのニューラル・ネットワークを含む。1つの実例では、特徴抽出器204は、入力オーディオ202から特徴を抽出するように訓練された深層畳み込みニューラル・ネットワーク(deep convolutional neural network)(CNN)を含む。少なくとも1つの実施例では、特徴抽出器204は、信号正規化、ウィンドウイング、及び(メルスペクトログラムなどの)オーディオ特徴スペクトログラム生成などの、タスクを実施することができる。
【0020】
少なくとも1つの実施例では、(例えば、メルスペクトログラムによって表された)入力オーディオ202の所与のオーディオ・フレームに関する周波数ドメインにおける特徴のセットが、自動スピーチ認識に有用な神経音響モデル206又は他のモデルに伝えられ得る。例えば、神経音響モデル206は、受信されたオーディオ信号(例えば、入力オーディオ2020)と、スピーチを構成する音素又は他の言語ユニットとの間の関係の表現を生成することができる。さらに、様々な実施例では、神経音響モデル206は、少なくとも部分的に、個々の単語を構成する音の統計的表現を作り出すように学習することによって訓練される。
【0021】
少なくとも1つの実施例では、神経音響モデル206の出力は、これらの抽出されたオーディオ特徴を考慮して、考えうるキャラクタに関する確率分布、又は、入力オーディオ202の特定のオーディオ・フレーム若しくは時間ステップに収められたサンプルを提供するために、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能208に提供される。様々な実施例では、神経音響モデル206によって出力されたキャラクタは、任意の適切な英数字キャラクタ(例えばA~Z)、及び、他のキャラクタが検出されない時間ステップ又はオーディオ・フレームを表すためのブランクなどの潜在的に1つ又は複数の特別なキャラクタを含む。言い換えれば、ブランク・キャラクタは、実施例では、スピーチが検出されなかった(例えば、単語間の休止など、話者が沈黙していた)時間ステップ又はオーディオ・フレームを表す。少なくとも1つの実施例では、神経音響モデル206は、NVIDIA CorporationからのJasperモデル、又は他の深層畳み込みニューラル・ネットワーク(CNN:convolutional neural network)などの、任意の適切な音響モデルが可能である。例えば、Jasperネットワークは、一連の畳み込みレイヤ、並びに、バッチ正規化、ReLU、及びドロップアウト・レイヤから構成された深層CNNを含む、自動スピーチ認識(ASR:automatic speech recognition)パイプライン(例えば、スピーチ処理パイプライン200)において使用されることが可能である。
【0022】
スピーチ認識などのタスクを訓練するために、少なくとも1つの実施例では、オーディオ・クリップ及び対応するトランスクリプトのデータセットが、図2で説明されたスピーチ処理パイプライン200に提供される。それでも、いくつかの実施例では、スピーチ処理パイプライン200は、オーディオ・クリップとトランスクリプトとの間の整列なく(例えば、データを訓練することなく)実行される。少なくとも1つの実施例では、このようなデータセットは、少なくとも部分的に整列データのこの欠如により、DNNベースのスピーチ認識モデルの訓練を困難にしている可能性がある。それでも、様々な実施例では、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能208は、整列データのこの欠如を埋め合わせようとするために使用されることが可能である。例えば、オーディオ・シーケンスX[x,x,...x]及びトランスクリプト・シーケンスY[y,y,...y]を考慮して、CTC機能208は、このオーディオ・シーケンスとトランスクリプト・シーケンスとの間の正確なマッピングを取得するために、神経音響モデル206からの出力と共に使用されることが可能である。少なくとも1つの実施例では、CTC機能208は、所与のオーディオ・フレームxに、全てのy値に対する確率分布を提供する。入力オーディオ202の各オーディオ・フレームに対する、CTC機能208によって出力された確率分布は、様々な実施例では、トランスクリプト214を生み出すための、デコーダ212への入力として提供される。さらに、少なくとも1つの実施例では、各オーディオ・フレームに対するこの確率分布は、スピーチ終了(EOS)検出器210への入力としても提供され、スピーチ終了(EOS)検出器210は、特定の時間ステップ又はオーディオ・フレームにEOSのフラグを立てることができる。
【0023】
少なくとも1つの実施例では、EOS検出器210は、CTC機能208の出力に基づいて自動スピーチ認識(ASR)モデルの出力のための、スピーチ開始(SOS)及びEOSセグメントを検出するために使用されることが可能である。実施例では、CTC機能208は、定義された数のキャラクタ(例えば、29個のキャラクタ)を利用し、ここで、これらのキャラクタは、この英語の26個のキャラクタ(及び/又は他の言語のための数字若しくは他のキャラクタ)、並びに、単語区切りのためのスペース・キャラクタ、アポストロフィ記号、及び、所与のオーディオ・フレームに対して他のキャラクタが検出されなかったことを指示するために使用されるブランク記号などの、異なる文法的及び/又は機能的態様をそれぞれ指示する他のキャラクタのセットを含む。上記で説明されたように、ブランク記号は沈黙を表すことができ、ブランク・キャラクタの確率は、EOS検出のために使用されることが可能である。少なくとも1つの実施例では、EOS検出器210は、追加の構成要素がスピーチ処理パイプライン200に必要でなくなるように、CTC機能208と統合されることが可能である。
【0024】
様々な実施例では、スピーチ処理パイプライン200のEOS検出器210又は他の構成要素は、決定された話者のスピーチ速度に基づいて、EOS閾値を決定するか、そうでなければ修正する。スピーチ速度は、スピーチ処理パイプライン200に提供された入力オーディオ202及び/又は複数の異なるオーディオ信号に少なくとも部分的に基づいて決定され得る。さらに、実施例では、スピーチ処理パイプライン200は、初期のEOS閾値を含む。1つの実例では、特定の話者に対してスピーチ速度を決定することが可能である前に、EOS閾値は、サイズX(例えば、500ミリ秒)のスライディング・ウィンドウに対して(CTC機能208から取得された)(例えば、また限定ではなく)500個のブランク・キャラクタにセットされる。他の実例では、EOS閾値は、サイズXのスライディング・ウィンドウに対するブランク・キャラクタの割合(例えば90%)として表現される。
【0025】
様々な実施例では、十分な数の単語間間隔が計算されると、EOS閾値は、単語間間隔の値に少なくとも部分的に基づいて修正される。1つの実施例では、単語間間隔の数は固定される(例えば、EOS閾値を計算するために25個の単語間間隔が要求される)。さらに他の実施例では、新しいEOS閾値を修正又は生成する前に要求される単語間間隔の数は、動的に決定される。例えば、単語間間隔のセットで表されるようなスピーチ速度が一貫している(例えば、単語間間隔の間の分散が小さい)場合、EOS閾値は、上記で説明された固定値に達する前に修正される。同様に、分散が大きいとき、追加の単語間間隔が、上記で説明された固定値を超えて収集され得る。
【0026】
様々な実施例では、(例えば、CTC機能208の出力に少なくとも部分的に基づいて)単語間間隔の十分なセットが取得されると、初期のEOS閾値が修正され得るか、新しいEOS閾値が生成され得る。1つの実例では、EOS閾値は、単語間間隔のセットの最大値(例えば、話される単語の間の時間の最長の量)にセットされる。さらに、様々な実施例では、EOS閾値は、単語間間隔のセットに応じて決定される。例えば、EOS閾値は、単語間間隔のセットの値の中間値、分散、モード、又は他の関数に少なくとも部分的に基づいて計算され得る。少なくとも1つの実施例では、これらの値を使用するアルゴリズムが、以下によって与えられることが可能である。
interword_times=update_interword_times(ctc_output_string,interword_times)SOS_threshold,EOS_threshold=calculate_dynamic_threshold(interword_times)
detect_speech_segments(ctc_output_string){
segments={}
start=0
for each timestep in string{
If(state==speech){
EOSウィンドウ長及びEOS_thresholdを使用してEOSを検出する
If(EOS){
State=non-speech
segments.add(start,current_timestep)

}else if(state=non-speech){
SOSウィンドウ長及びSOS_thresholdを使用してSOSを検出する
If(SOS){
state=speech
start=current_timestep



【0027】
図3A及び図3Bは、EOS検出器306の様々な構成要素がCTC機能304の出力を処理する、スピーチ処理パイプライン300の一部を示す。少なくとも1つの実施例では、EOS検出器306は、グリーディ・デコーダ308、並びに、スピーチ開始(SOS)及び/又はスピーチ終了(EOS)を決定するための(例えば、フラグを立てるための)構成要素310を含む。図2に関連して上記で説明されたように、音響モデル出力302が、CTC機能304への入力として提供され、CTC機能304は、今度は、各時間ステップについての考えうるキャラクタに対する確率分布を出力する。例えば、CTC機能304の出力は、n x 1 x cと表現された確率分布を含み、ここで、nは時間ステップの数であり、cは、語彙内のエントリの数である。少なくとも1つの実施例では、CTC機能304によって生成された確率分布データは、グリーディ・デコーダ308への入力として提供される。グリーディ・デコーダ308は、実施例では、確率分布(例えば、1 x c)に少なくとも部分的に基づいて、考えうるキャラクタのセット(例えば、確率分布データにおいて指示されたキャラクタ)から、最もありそうなキャラクタを選択する。1つの実例では、グリーディ・デコーダ308の出力がn個のキャラクタの文字列になるように、Argmaxデコーダが各時間ステップに適用され、ここで、選択されたキャラクタは、確率分布データにおいて指示されるような、最高確率を有する。少なくとも1つの実施例では、グリーディ・デコーダ308の出力350(例えば、Argmax機能)が図3Bに示されており、ここで、この出力は、英数字キャラクタ、並びに、図3A及び図3Bに下線で表されたブランク記号を含む文字列を含む。
【0028】
少なくとも1つの実施例では、図3A及び図3Bに示された文字列(例えば出力350)は、CTC機能304の出力に少なくとも部分的に基づいて、対応するオーディオ入力で時間整列される。図3Aに示されているように、実施例では、文字列は、EOS及び/又はOSを決定するために、構成要素310への入力として提供される。例えば、出力350に対してEOS又はSOSが決定されると、EOS検出器306は、上記で説明されたように、トランスクリプトが生成されることが可能なことを指示するスピーチ認識パイプラインのデコーダのために、時間ステップにフラグを立てる。少なくとも1つの実施例では、構成要素310は、スピーチ開始(SOS)値又は時間を計算することもできる。例えば、EOS検出器306の出力は、入力オーディオ信号の所与のスピーチ・セグメントの開始時間及び終了時間を含む。様々な実施例では、セグメント(例えば、EOSセグメント)は、時間ステップ、オーディオ・フレーム、スライディング・ウィンドウ、又はオーディオ信号の他の論理的若しくは物理的部分を含む、オーディオ信号の様々な部分を含む。
【0029】
少なくとも1つの実施例では、グリーディ・デコーダ308の出力350に対するスライディング・ウィンドウ352を使用して、EOS及び/又はOSの検出が実施される。例えば、スライディング・ウィンドウ352は、いくつかの時間ステップX(例えば25個)を含み、ここで、各時間ステップは、時間の間隔(例えば20ミリ秒)を表す。上記で説明されたように、EOSの決定は、任意の時間ステップ、及び/又は時間ステップの範囲に対するスライディング・ウィンドウ352に含まれる(図3A及び図3Bに下線として示された)ブランク記号の割合に少なくとも部分的に基づいて、行われることが可能である。1つの実例では、各時間ステップは、(例えば、図2に関連して上記で説明されたアルゴリズムにおいて指示されるような)スピーチ又は非スピーチとして分類されることが可能であり、ブランク記号は、非スピーチの期間を表す。さらに、この実例では、スピーチとして分類された時間ステップは、この時間ステップに対するスピーチを指示するために割り当てられた別の非ブランク記号(例えば英数字キャラクタ)を有し得る。実施例では、CTC機能304は、各時間ステップに対する最もありそうなキャラクタを返す。
【0030】
図3Bに示されているように、単語間間隔354は、実施例では、英数字の間のブランク記号によって表されたいくつかの時間ステップ又はオーディオ・フレームを含む。少なくとも1つの実施例では、SOSとEOS両方の決定を含むセグメント検出に対する、より細かい制御を提供するために、別々のウィンドウ長及び閾値(例えば、EOS閾値及びSOS閾値)が使用されることが可能である。例えば、SOSウィンドウ長などの様々なパラメータは、スピーチ開始検出のためのスライディング・ウィンドウ・サイズを指定し、SOS閾値の値は、このスライディング・ウィンドウ内のブランク記号の割合がSOS閾値未満に下がった場合、SOSがフラグを立てられることが可能であることを指定するために使用されることが可能である。
【0031】
別の実例では、EOS検出のためのスライディング・ウィンドウ・サイズを定義するEOSウィンドウ長、及び、このスライディング・ウィンドウ内のブランク記号の割合がこのEOS閾値を満たすか、超過するとき、EOSにフラグを立てるために使用されることが可能なEOS閾値が、指定されることが可能である。様々な実施例では、単語間間隔のセットに少なくとも部分的に基づいて、EOSウィンドウ・サイズが500ミリ秒にセットされ、EOS閾値が95%にセットされる。さらに、単語間間隔のセットは、実施例では、SOSスライディング・ウィンドウ・サイズ、SOS閾値、EOSスライディング・ウィンドウ・サイズ、及びEOS閾値を修正するために使用される。この様式では、EOS検出器306は、スピーチが聞き損なわれないことを保証するために、スピーチ開始について、及び、スピーチ終了についての、より厳格な閾値を可能にし得、ここで、追加の非スピーチを含むことは重要ではなく、ユーザへのレスポンスの生成時に遅延を生じ得る。少なくとも1つの実施例では、これらの値を使用するアルゴリズムが、以下によって与えられることが可能である。
For each timestep{
If (speech started){
EOSウィンドウ長及び閾値を使用してEOSを検出する
}else{
SOSウィンドウ長及び閾値を使用してSOSを検出する

【0032】
さらに、様々な実施例では、ノイズを沈黙又は非スピーチとして検出して、EOS検出を改善するために、音響モデルが訓練されることが可能である。1つの実例では、これは、異なるタイプのノイズ(例えば、道路ノイズ、背景の会話、建設作業、風、又は、話者が話す行為によって直接生成されない他の形式の音)の存在下でキャラクタ確率検出がより正確になるように、異なるタイプ及びレベルのノイズを含む訓練データを生成することを含むことができる。少なくとも1つの実施例では、これは、訓練データを生成するために、異なるタイプ及びレベルのノイズを、きれいなオーディオ信号と混ぜることを含むことができる。このような実施例では、CTC機能304は、これらのトランスクリプトでオーディオ・ファイルを整列させるための訓練中に使用される。さらに、様々な実施例では、CTC機能304の出力は、最終的なトランスクリプトを生成するためにデコードされる。
【0033】
さらに、本開示で説明されるスピーチ認識パイプラインは、挑戦的な音響条件に対して堅牢であり得る。例えば、スピーチ認識パイプラインは、低利得及び騒々しい環境を含む両極端をハンドリングすることができる。様々な実施例では、スピーチ認識パイプラインは、EOS検出器のための追加のコストがほとんどない、単純且つ計算効率の良いアルゴリズムを利用し、したがって、EOS検出器は、スピーチ認識パイプライン300内に既に存在し得る神経音響モデル及びCTC機能304からの出力を利用することができる。結果として、EOS閾値は、様々な実施例では、周期的又は非周期的に再計算される。1つの実例では、単語間間隔のセットは連続的に計算され、25個の単語間間隔ごとに、EOS閾値が再計算及び/又は更新される。少なくとも1つの実施例では、EOS検出器は、家、車、オフィス、又は小売店などの、ターゲット環境に従って訓練された神経音響モデルを利用することができる。
【0034】
ここで図4図5、及び図6を参照すると、本明細書で説明される方法400、500、及び600の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実施され得るコンピューティング処理を含む。例えば、メモリに格納された命令を実行するプロセッサによって様々な機能が実行され得る。方法のそれぞれは、コンピュータ・ストレージ媒体に格納されたコンピュータ使用可能命令としても具体化され得る。方法は、数例を挙げると、スタンドアロン・アプリケーション、(スタンドアロンの、若しくは別のホストされたサービスと組み合わせた)サービス若しくはホストされたサービス、又は、別のアプリケーション若しくはサービスへのプラグインによって提供され得る。さらに、方法400は、実例として、図2のスピーチ認識パイプラインについて説明される。それでも、これらの方法は、追加又は代替として、本明細書で説明されるものを含むがこれらに限定されない任意の1つのシステム又はシステムの任意の組合せによって実行され得る。さらに、図4図5、及び図6で説明される方法の動作は、省略されるか、異なる順序で実施されるか、並列に実施されるか、連続と並列の組合せで実施され得る。全体的に、図4図5、及び図6に関連して下記で説明される動作は、ネットワーク又は他の通信チャネルで通信する単一のデバイス又は複数のデバイスによって実施され得る。
【0035】
図4は、本開示の様々な実施例による、オーディオ信号内のスピーチ・セグメントの終わりを決定するための方法400を示す。上記で説明されたように、方法400は、実施例では、図1に関連して上記で説明されたオーディオ・キャプチャ・デバイス106によって実施される。他の実施例では、他のデバイス(例えば、クラウド・コンピューティング・リソース、仮想マシン、仮想プロセッサ、エッジ・コンピューティング・デバイス等)は、下記で説明される動作のうちの全て又はいくつかを実施する。例えば、オーディオ・キャプチャ・デバイスはオーディオ信号を記録し、上記で説明された動作のうちの全て又はいくつかを実施するために、オーディオ信号又はその一部(例えば、オーディオ信号の、ダウンサンプルされるか、そうでなければ処理されたバージョン)を、クラウド・コンピューティング・デバイス、仮想マシン若しくは処理、又はエッジ・コンピューティング・デバイス等に伝送する。
【0036】
方法400は、ブロック402において、オーディオ信号をキャプチャすることを含む。実施例では、オーディオ信号は、人間のスピーチを表すオーディオ信号をキャプチャするために、(例えば、オーディオ・キャプチャ・デバイスの)マイクロフォンを使用してキャプチャされる。例えば、スマート・スピーカは、起動ワードに応答してオーディオ信号をキャプチャし、コンピューティング・リソース・サービス・プロバイダによって実装されたスピーチ処理サービスに、キャプチャされたオーディオ信号を伝送する。ブロック404において、オーディオ特徴のセットがオーディオ信号から抽出される。例えば、特徴は、周波数スペクトルを含む。ブロック406において、オーディオ信号から抽出された特徴は、このオーディオ信号の個々のフレーム又は時間ステップに対するキャラクタの確率を決定するために、訓練された音響モデル及びコネクショニスト・テンポラル・クラシフィケーション(CTC)機能を使用して解析される。ブロック408において、CTC機能によって出力されたキャラクタ確率は、このオーディオ信号内に収められた1つ又は複数のスピーチ・セグメントの開始時間及び/又は終了時間を計算するために、1つ又は複数のスピーチ尺度を使用して解析される。少なくとも1つの実施例では、これは、スピーチ開始及びスピーチ終了を決定するために、スライディング・ウィンドウ内で予測されるスライディング・ウィンドウの長さ及び/又はブランク・キャラクタの割合を含むスピーチ尺度を使用するスピーチ終了(EOS)検出器を使用して、実施されることが可能である。さらに、様々な実施例では、ウィンドウ・サイズ及び割合の閾値は、開始及び終了時間計算によって異なることが可能である。ブロック410において、開始時間と終了時間との間のキャラクタ確率を、対応するスピーチ・セグメントのトランスクリプトに変換するために、デコーダが使用されることが可能である。少なくとも1つの実施例では、これらのトランスクリプトは、次に、所与のスピーチ・セグメント内に収められたコマンドに従って機能できるようにされたボイス制御デバイスなどの、意図される受け手に格納又は提供され得る。実施例では、ブロック404から410は、コンピューティング・リソース・サービス・プロバイダによって実装されたスピーチ処理サービスによって実施される。
【0037】
図5は、本開示のいくつかの実施例による、特定の話者のスピーチ速度に少なくとも部分的に基づいてスピーチ終了(EOS)閾値を決定するための方法500を示す流れ図である。実施例では、方法500は、本開示で説明されるような、オーディオ・キャプチャ・デバイスによって実施される。さらに他の実施例では、方法500は、コンピューティング・リソース・サービス・プロバイダによって実装されたスピーチ処理サービスの構成要素として実施される。例えば、コンピューティング・リソース・サービス・プロバイダのサービスは、方法500を使用してEOS閾値を決定し、オーディオ・キャプチャ・デバイスが動作及びEOSの検出を改善できるようにするために、オーディオ・キャプチャ・デバイスのEOS閾値を提供及び/又は更新する。図5に戻ると、方法500は、ブロック502において、キャラクタの文字列を取得することを含む。様々な実施例では、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能は、音響モデルの出力に少なくとも部分的に基づいて、キャラクタの確率分布を出力として生成する。例えば、上記で説明されたように、CTC機能は、オーディオ信号の時間ステップごとの入力特徴を考慮して、各時間ステップの考えうるキャラクタに対する確率分布を出力する。さらに、上記で説明されたように、スピーチ認識パイプライン(例えば、グリーディ・デコーダ)の構成要素が、アルゴリズムを利用して、CTCによって出力された確率分布に少なくとも部分的に基づいてキャラクタの文字列を生成し得る。
【0038】
ブロック504において、方法500を実施するシステムは、キャラクタの文字列に少なくとも部分的に基づいて単語間のセットを決定する。様々な実施例では、キャラクタは、下線又は他の記号が、スピーチのないオーディオ信号の一部を表す所定のアルファベットを含む。言い換えれば、ブランク記号によって表された所与の時間ステップのオーディオ信号は、音(例えば背景雑音)を含み得るが、スピーチ音(例えば、話される単語)を含まない。実施例では、CTCによって出力された英数字の文字列によって表される単語間の複数の連続的なブランク記号が、単語間間隔としてカウントされる。上記で説明されたように、実施例では、単語間間隔の数(例えば25)が、EOS閾値を決定する前に収集される。それでも、さらに他の実施例では、最初の単語間間隔が決定されると、EOS閾値が決定されることが可能である。このような実施例では、EOS閾値は、その後の単語間間隔によって修正され得る。
【0039】
ブロック506において、方法500を実施するシステムは、単語間間隔のセットに少なくとも部分的に基づいてEOS閾値を決定する。様々な実施例では、EOS閾値は、単語間間隔のセットの値に応じたものである。1つの実例では、EOS閾値は、単語間間隔のセットの中間値にセットされる。さらに別の実例では、EOS閾値は、単語間間隔のセットの最大値にセットされる。EOS閾値が決定されると、様々な実施例では、スピーチ処理パイプラインは、初期のEOSを、方法500を実施するシステムによって決定されたEOSと置き替える。様々な実施例では、方法500は、スピーチ開始(SOS)閾値を決定するために使用される。
【0040】
図6は、本開示のいくつかの実施例による、特定の話者のスピーチ速度に少なくとも部分的に基づいてスピーチ終了(EOS)を決定するための方法600を示す流れ図である。様々な実施例では、EOS閾値は、上記で説明されたような、方法500を使用して決定される。実施例では、方法600は、本開示で説明されるような、オーディオ・キャプチャ・デバイスによって実施される。さらに他の実施例では、方法600は、コンピューティング・リソース・サービス・プロバイダによって実装されたスピーチ処理サービスの構成要素として実施される。例えば、方法600は、クラウド・コンピューティング・デバイスを使用してコンピューティング・リソース・サービス・プロバイダによって実装されたスピーチ処理パイプラインの構成要素として実行されるEOS検出器(例えば、より詳細に上記で説明されたようなEOS検出器210)によって実施される。
【0041】
方法600は、ブロック602において、キャラクタの文字列を取得することを含む。様々な実施例では、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能は、音響モデルの出力に少なくとも部分的に基づくキャラクタの確率分布を出力として生成する。例えば、上記で説明されたように、CTC機能は、オーディオ信号の時間ステップごとの入力特徴を考慮して、各時間ステップの考えうるキャラクタに対する確率分布を出力する。さらに、上記で説明されたように、スピーチ認識パイプラインの構成要素(例えば、グリーディ・デコーダ)は、アルゴリズムを利用して、CTCによって出力された確率分布に少なくとも部分的に基づいてキャラクタの文字列を生成し得る。
【0042】
ブロック604において、方法600を実施するシステムは、最初のスライディング・ウィンドウを評価する。上記で説明されたように、スライディング・ウィンドウは、複数の時間ステップ又はオーディオ・フレームを含み得る。1つの実例では、500ミリ秒のスライディング・ウィンドウが25個の時間ステップを含み、各時間ステップは、20ミリ秒の期間を有する。スライディング・ウィンドウについての異なる様々な長さが、方法600に関連して使用され得る。さらに、スライディング・ウィンドウは、実施例では、キャラクタの文字列内のキャラクタのセットに対応する。例えば、図3に関連して上記で説明されたように、スライディング・ウィンドウ352は、キャラクタの文字列のうちのキャラクタの部分文字列を含む。様々な実施例では、スライディング・ウィンドウは、時間0(例えば、第1の時間ステップ)で始まり、(例えば、時間0から時間Xまでの)連続的な時間ステップ又はオーディオ・フレームのセットを含む。
【0043】
ステップ606において、方法600を実施するシステムは、最初のスライディング・ウィンドウ内のブランク記号の割合を決定する。実施例では、ブランク記号の割合は、スライディング・ウィンドウ内のブランク記号の数をスライディング・ウィンドウ内の記号の総数で除算することによって決定される。他の実施例では、スライディング・ウィンドウ・サイズが変化しない実例として、ブランク記号の割合は、ブランク記号の数をスライディング・ウィンドウの長さ(例えば、時間ステップ又はオーディオ・フレームの数)で除算することによって決定される。
【0044】
ブロック608において、方法600を実施するシステムは、ブロック606において決定されたブランク記号の割合に少なくとも部分的に基づいて、EOS閾値が満たされたかどうかを決定する。例えば、最初のスライディング・ウィンドウのブランク記号の割合が95%であり、EOS閾値が90%の場合、方法600を実施するシステムは、ブロック610に続く。ブロック610において、方法600を実施するシステムは、スライディング・ウィンドウにEOSとしてフラグを立てる。上記で説明されたように、特定のスライディング・ウィンドウにEOSとしてフラグを立てることは、スピーチ処理パイプラインの構成要素をトリガして、別のアプリケーション及び/又はデバイスによる使用のためのトランスクリプトを生成し得る。それでも、ブロック608に戻り、方法600を実施するシステムが、EOS閾値が満たされていないと決定した場合、方法600はブロック604に戻り、次のスライディング・ウィンドウに進む。実施例では、方法600を実施するシステムは、単一の時間ステップ又はオーディオ・フレームだけスライディング・ウィンドウを増分する。例えば、現在のスライディング・ウィンドウが時間ステップ0から時間ステップ25までの場合、スライディング・ウィンドウは、時間ステップ1から時間ステップ26までの範囲に修正される。様々な実施例では、スライディング・ウィンドウが移動される時間ステップ又はオーディオ・フレームの数も修正され得る。
【0045】
図7は、1つの実施例による、並列処理ユニット(「PPU」)700を示す。実施例では、PPU700は、PPUによって実行されると、本開示の至る所で説明される処理及び技法のいくつか又は全てをPPUに実施させる機械可読コードで構成される。実施例では、PPU700は、1つ又は複数の集積回路デバイス上に実装され、複数のスレッド上でコンピュータ可読命令(機械可読命令又は単純に命令とも呼ばれる)を並列に処理するようにデザインされたレイテンシ隠蔽技法としてマルチスレッディングを利用する、マルチスレッド・プロセッサである。実施例では、スレッドは実行のスレッドを指し、PPU700によって実行されるように構成された命令のセットの具体化である。実施例では、PPU700は、液晶ディスプレイ(LCD)デバイスなどの表示デバイス上での表示のための2次元(「2D」)イメージ・データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成された画像処理装置(「GPU」)である。実施例では、PPU700は、線形代数演算及び機械学習演算などの計算を実施するために利用される。図7は、例証のためだけに実例の並列プロセッサを示しているが、本開示の範囲内で想定されるプロセッサ・アーキテクチャの非限定的な実例として、並びに、同じものに対する補足及び/又は代用のために任意の適切なプロセッサが採用され得ると、解釈されるべきである。
【0046】
実施例では、1つ又は複数のPPUは、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習アプリケーションを加速するように構成される。実施例では、PPU700は、自律走行車両プラットフォーム、深層学習、高精度スピーチ、イメージ、テキスト認識システム、インテリジェント・ビデオ解析、分子シミュレーション、薬剤発見、疾患診断、天候予測、ビッグ・データ解析、天文学、分子ダイナミクス・シミュレーション、金融モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン・サーチ最適化、個人向けユーザ推奨などといった、非限定的な実例を含むディープ・ラーニング・システム及びアプリケーションを加速するように構成される。
【0047】
実施例では、PPU700は、入力/出力(「I/O」)ユニット706、フロント・エンド・ユニット710、スケジューラ・ユニット712、作業分散ユニット714、ハブ716、クロスバー(「Xbar」)720、1つ又は複数の総合処理クラスタ(「GPC」)718、及び1つ又は複数の区画ユニット722を含む。実施例では、PPU700は、1つ又は複数の高速GPU相互接続708を介して、ホスト・プロセッサ又は他のPPU700に接続される。実施例では、PPU700は、相互接続702を介して、ホスト・プロセッサ又は他の周辺デバイスに接続される。実施例では、PPU700は、1つ又は複数のメモリ・デバイス704を含むローカル・メモリに接続される。実施例では、ローカル・メモリは、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」:dynamic random access memory)デバイスを備える。実施例では、1つ又は複数のDRAMデバイスは、各デバイス内に複数のDRAMダイがスタックされた、高帯域幅メモリ(「HBM」:high-bandwidth memory)サブシステムとして構成される、及び/又は構成可能である。
【0048】
高速GPU相互接続708は、1つ又は複数のCPUと結合された1つ又は複数のPPU700をスケーリングし、含めるためにシステムによって使用され、PPU700とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする、ワイヤ・ベースのマルチレーン通信リンクを指し得る。実施例では、データ及び/又はコマンドは、図7に明示的に示され得ない1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び他の構成要素などの、PPU700の他のユニットとの間で、ハブ716を通じて高速GPU相互接続708によって伝送される。
【0049】
実施例では、I/Oユニット706は、システム・バス702上で(図7に示されていない)ホスト・プロセッサからの通信(例えば、コマンド、データ)の伝送及び受信を行うように構成される。実施例では、I/Oユニット706は、システム・バス702を介して直接、又はメモリ・ブリッジなどの1つ若しくは複数の中間デバイスを通じて、ホスト・プロセッサと通信する。実施例では、I/Oユニット706は、システム・バス702を介して、PPU700の1つ又は複数などの、1つ又は複数の他のプロセッサと通信し得る。実施例では、I/Oユニット706は、PCIeバス上での通信のために、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」:Peripheral Component Interconnect Express)インターフェースを実装する。実施例では、I/Oユニット706は、外部デバイスと通信するためのインターフェースを実装する。
【0050】
実施例では、I/Oユニット706は、システム・バス702を介して受信されたパケットをデコードする。実施例では、少なくともいくつかのパケットは、様々な動作をPPU700に実施させるように構成されたコマンドを表す。実施例では、I/Oユニット706は、コマンドによって指定されたようなPPU700の他の様々なユニットに、デコードされたコマンドを伝送する。実施例では、コマンドは、フロント・エンド・ユニット710に伝送される、及び/或いは、ハブ716、又は、(図7明示的に示されていない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット等などのPPU700の他のユニットに、伝送される。実施例では、I/Oユニット706は、PPU700の様々な論理ユニット間、及びその中の通信をルートするように構成される。
【0051】
実施例では、ホスト・プロセッサによって実行されたプログラムは、処理のためにワークロードをPPU700に提供するバッファ内のコマンド・ストリームをエンコードする。実施例では、ワークロードは、これらの命令によって処理されることになる命令及びデータを含む。実施例では、バッファは、ホスト・プロセッサとPPU700の両方によってアクセス可能な(例えば読込み/書込み)メモリ内の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット706によってシステム・バス702上で伝送されたメモリ・リクエストを介して、システム・バス702に接続されたシステム・メモリ内のバッファにアクセスするように構成され得る。実施例では、ホスト・プロセッサは、コマンド・ストリームをバッファに書き込み、次に、フロント・エンド・ユニット710が、1つ又は複数のコマンド・ストリームへのポインタを受信し、1つ又は複数のストリームを管理して、ストリームからコマンドを読み込み、コマンドをPPU700の様々なユニットに転送するように、コマンド・ストリームの開始へのポインタをPPU700に伝送する。
【0052】
実施例では、フロント・エンド・ユニット710は、1つ又は複数のストリームによって定義されたタスクを処理するように様々なGPC718を構成するスケジューラ・ユニット712に連結される。実施例では、スケジューラ・ユニット712は、スケジューラ・ユニット712によって管理される様々なタスクに関する状態情報を追跡するように構成され、ここで、状態情報は、どのGPC718にタスクが割り当てられるか、タスクがアクティブであるか非アクティブであるか、タスクに関連付けられた優先レベルなどを指示し得る。実施例では、スケジューラ・ユニット712は、1つ又は複数のGPC718上での複数のタスクの実行を管理する。
【0053】
実施例では、スケジューラ・ユニット712は、GPC718上での実行のためのタスクをディスパッチするように構成された作業分散ユニット714に連結される。実施例では、作業分散ユニット714は、スケジューラ・ユニット712から受信された、いくつかのスケジュールされたタスクを追跡し、作業分散ユニット714は、GPC718のそれぞれのための、待ち状態タスク・プール及びアクティブ・タスク・プールを管理する。実施例では、待ち状態タスク・プールは、特定のGPC718によって処理されるように割り当てられたタスクを収める、いくつかのスロット(例えば、32個のスロット)を備え、アクティブ・タスク・プールは、GPC718がタスクの実行を完了させたとき、このタスクが、GPC718のためのアクティブ・タスク・プールから立ち退かされ、待ち状態タスク・プールからの他のタスクの1つが、GPC718上での実行のために選択及びスケジュールされるように、GPC718によって能動的に処理されているタスクのための、いくつかのスロット(例えば、4個のスロット)を備え得る。実施例では、データの依存性が解決されるのを待っている間など、アクティブ・タスクがGPC718上で非稼働の場合、アクティブ・タスクはGPC718から立ち退かされ、待ち状態タスク・プールに戻される一方で、待ち状態タスク・プール内の別のタスクが、GPC718上での実行のために選択及びスケジュールされる。
【0054】
実施例では、作業分散ユニット714は、XBar720を介して1つ又は複数のGPC718と通信する。実施例では、XBar720は、PPU700のユニットの多くをPPU700の他のユニットに連結し、作業分散ユニット714を特定のGPC718に連結するように構成されることが可能な、相互接続ネットワークである。明示的に図示されていないが、PPU700の1つ又は複数の他のユニットも、ハブ716を介してXBar720に接続され得る。
【0055】
タスクは、スケジューラ・ユニット712によって管理され、作業分散ユニット714によってGPC718にディスパッチされる。GPC718は、タスクを処理し、結果を生成するように構成される。結果は、GPC718内の他のタスクによって使用されるか、XBar720を介して異なるGPC718にルートされるか、メモリ704に格納され得る。結果は、区画ユニット722を介してメモリ704に書き込まれることが可能であり、区画ユニット722は、メモリ704との間でデータの読書きを行うためのメモリ・インターフェースを実装する。結果は、高速GPU相互接続708を介して別のPPU700又はCPUに伝送されることが可能である。実施例では、PPU700は、PPU700に連結された別々且つ別個のメモリ・デバイス704の数に等しい、数Uの区画ユニット722を含む。区画ユニット722は、図9と共に、より詳細に下記で説明される。
【0056】
実施例では、ホスト・プロセッサは、ホスト・プロセッサ上で実行する1つ又は複数のアプリケーションが、PPU700上での実行のための動作をスケジュールすることを可能にする、アプリケーション・プログラミング・インターフェース(「API」)を実装するドライバ・カーネルを実行する。実施例では、複数の計算アプリケーションがPPU700によって同時に実行され、PPU700は、分離、サービス品質(「QoS」)、及び独立したアドレス空間を複数の計算アプリケーションに提供する。実施例では、PPU700による実行のための1つ又は複数のタスクをドライバ・カーネルに生成させる(例えば、APIコールの形の)命令をアプリケーションが生成し、ドライバ・カーネルは、PPU700によって処理されている1つ又は複数のストリームにタスクを出力する。実施例では、各タスクは、ワープと呼ばれ得る、関連したスレッドの1つ又は複数のグループを含む。実施例では、ワープは、並列に実行されることが可能な複数の関連したスレッド(例えば、32個のスレッド)を含む。実施例では、協働スレッドは、タスク実施するための命令を含み、共有メモリを通じてデータを交換する、複数のスレッドを指すことができる。図10と共に、1つの実施例による、スレッド及び協働スレッドが、より詳細に説明される。
【0057】
図8は、1つの実施例による、図7のPPU700の、示されたGPCなどのGPC800を示す。実施例では、各GPC800は、タスクを処理するための、いくつかのハードウェア・ユニットを含み、各GPC800は、パイプライン・マネージャ802、プレ・ラスター・オペレーション・ユニット(「PROP」:pre raster operations unit)804、ラスター・エンジン808、作業分散クロスバー(「WDX」:work distribution crossbar)816、メモリ管理ユニット(「MMU」:memory management unit)818、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Cluster)806、及び部品の任意の適切な組合せを含む。図8のGPC800は、図8に示されたユニットの代わりに又は加えて、他のハードウェア・ユニットを含み得ることが理解されよう。
【0058】
実施例では、GPC800の動作は、パイプライン・マネージャ802によって制御される。パイプライン・マネージャ802は、GPC800にアロケートされたタスクを処理するための1つ又は複数のDPC806の構成を管理する。実施例では、パイプライン・マネージャ802は、グラフィックス・レンダリング・パイプラインの少なくとも一部を実装するように、1つ又は複数のDPC806の少なくとも1つを構成する。実施例では、DPC806は、プログラマブル・ストリーミング・マルチプロセッサ(「SM」:streaming multiprocessor)814上でバーテックス・シェーダ・プログラムを実行するように構成される。パイプライン・マネージャ802は、実施例における、GPC800内の適切な論理ユニットに、作業分散から受信されたパケットをルートするように構成され、いくつかのパケットが、PROP804及び/又はラスター・エンジン808内の固定機能ハードウェア・ユニットにルートされ得る一方で、他のパケットは、プリミティブ・エンジン812又はSM814による処理のためにDPC806にルートされ得る。実施例では、パイプライン・マネージャ802は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、1つ又は複数のDPC806の少なくとも1つを構成する。
【0059】
PROPユニット804は、実施例では、ラスター・エンジン808及びDPC806によって生成されたデータを、より詳細に上記で説明されたメモリ区画ユニット内のラスター・オペレーション(「ROP」)ユニットにルートするように構成される。実施例では、PROPユニット804は、色の融合、ピクセル・データの編成、アドレス変換の実施などのための最適化を実施するように構成される。ラスター・エンジン808は、実施例における、様々なラスター・オペレーションを実施するように構成された、いくつかの固定機能ハードウェア・ユニットを含み、ラスター・エンジン808は、セットアップ・エンジン、コース・ラスター・エンジン、カリング・エンジン、クリッピング・エンジン、ファイン・ラスター・エンジン、タイル・コアレシング・エンジン、及びこれらの任意の適切な組合せを含む。セットアップ・エンジンは、実施例では、変換されたバーテックスを受信し、バーテックスによって定義された幾何学的プリミティブに関連付けられた平面等式(plane equation)を生成し、平面等式は、プリミティブについてのカバレッジ情報(例えば、タイルのためのx、yカバレッジ・マスク)を生成するためにコース・ラスター・エンジンに伝送され、コース・ラスター・エンジンの出力は、zテストに不合格になったプリミティブに関連付けられた断片がカリングされるカリング・エンジンに伝送され、眺めている錘台(viewing frustum)の外側にある断片がクリッピングされるクリッピング・エンジンに伝送される。実施例では、クリッピング及びカリングを生き残った断片は、セットアップ・エンジンによって生成された平面等式に基づいて、ピクセル断片の属性を生成するために、ファイン・ラスター・エンジンに伝えられる。実施例では、ラスター・エンジン808の出力は、DPC806内に実装された断片シェーダなどの任意の適切なエンティティによって処理されることになる断片を含む。
【0060】
実施例では、GPC800に含まれる各DPC806は、Mパイプ・コントローラ(「MPC」:M-Pipe Controller)810、プリミティブ・エンジン812、1つ又は複数のSM814、及びその任意の適切な組合せを備える。実施例では、MPC810は、DPC806の動作を制御し、パイプライン・マネージャ802から受信されたパケットを、DPC806内の適切なユニットにルーティングする。実施例では、バーテックスに関連付けられたパケットは、プリミティブ・エンジン812にルートされ、プリミティブ・エンジン812は、バーテックスに関連付けられたバーテックス属性をメモリからフェッチするように構成され、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM814に伝送され得る。
【0061】
実施例では、SM814は、いくつかのスレッドによって表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを備える。実施例では、SM814はスレッドの特定のグループからの複数のスレッド(例えば、32個のスレッド)を同時に実行するようにマルチスレッド化及び構成され、スレッドのグループ内の各スレッド(例えば、ワープ)が、命令の同じセットに基づいてデータの異なるセットを処理するように構成された、SIMD(単一命令、複数データ)アーキテクチャを実装する。実施例では、スレッドのグループ内の全てのスレッドが同じ命令を実行する。実施例では、SM814は、SIMT(単一命令、複数スレッド)アーキテクチャを実装し、スレッドのグループ内の各スレッドは、命令の同じセットに基づいてデータの異なるセットを処理するように構成されるが、スレッドのグループ内の個々のスレッドは、実行中に分岐することを許容される。実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が各ワープに対して維持され、ワープ内のスレッドが分岐するときの、ワープ間の並行性及びワープ内の連続実行を可能にする。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が各個々のスレッドに対して維持され、全てのスレッド間、ワープ内、及びワープ間の等しい並行性を可能にする。実施例では、実行状態が、各個々のスレッド、及び、より良い効率性のために集中され、並列に実行され得る同じ命令を実行するスレッドに対して、維持される。実施例では、SM814は、より詳細に下記で説明される。
【0062】
実施例では、MMU818は、GPC800とメモリ区画ユニットとの間のインターフェースを提供し、MMU818は、物理アドレスへの仮想アドレスの変換、メモリ保護、及びメモリ・リクエストのアービトレーションを提供する。実施例では、MMU818は、メモリ内の物理アドレスへの仮想アドレスの変換を実施するための、1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」:translation lookaside buffer)を提供する。
【0063】
図9は、1つの実施例による、PPUのメモリ区画ユニットを示す。実施例では、メモリ区画ユニット900は、ラスター・オペレーション(「ROP」:Raster Operation)ユニット902、レベル2(「L2」)キャッシュ904、メモリ・インターフェース906、及びその任意の適切な組合せを含む。メモリ・インターフェース906は、メモリに連結される。メモリ・インターフェース906は、高速データ転送のための、32、64、128、1024ビット・データ・バス、又は同様のものを実装し得る。実施例では、PPUは、区画ユニット900のペアごとに1つのメモリ・インターフェース906である、U個のメモリ・インターフェース906を組み込み、区画ユニット900の各ペアは、対応するメモリ・デバイスに接続される。例えば、PPUは、高帯域幅メモリ・スタック又はグラフィックス・ダブルデータレート、バージョン5、シンクロナス・ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」:graphics double-data-rate,version 5,synchronous dynamic random access memory)など、Y個までのメモリ・デバイスに接続され得る。
【0064】
実施例では、メモリ・インターフェース906は、HBM2メモリ・インターフェースを実装し、YはUの半分に等しい。実施例では、HBM2メモリ・スタックは、PPUと同じ物理パッケージ上に置かれ、従来のGDDR5 SDRAMシステムに比べて、かなりの電力及び面積の節約を提供する。実施例では、各HBM2スタックは、4つのメモリ・ダイを含み、Yは4に等しく、HBM2スタックは、合計8チャネル及び1024ビットのデータ・バス幅のダイごとに、2つの128ビット・チャネルを含む。
【0065】
実施例では、メモリは、データを保護するために、シングルエラー訂正ダブルエラー検出(「SECDED」:Single-Error Correcting Double-Error Detecting)エラー訂正コード(「ECC」:Error Correction Code)をサポートする。ECCは、データ破損の影響を受けやすい計算アプリケーションに、より高い信頼性を提供する。信頼性は、PPUが非常に大きいデータセットを処理する、及び/又は、長期間アプリケーションを動かす、大規模クラスタ・コンピューティング環境において特に重要である。
【0066】
実施例では、PPUは、マルチレベル・メモリ階層を実装する。実施例では、メモリ区画ユニット900は、単一の統合仮想アドレス空間をCPU及びPPUメモリに提供するために、統合メモリをサポートし、仮想メモリ・システム間のデータ共有を可能にする。実施例では、より頻繁にページにアクセスしているPPUの物理メモリにメモリ・ページが移されることを保証するために、他のプロセッサ上に置かれたメモリへのPPUによるアクセスの頻度がトレースされる。実施例では、高速GPU相互接続708は、CPUのページ・テーブルにPPUが直接アクセスするのを可能にし、PPUによるCPUメモリへのフル・アクセスを提供する、アドレス変換サービスをサポートする。
【0067】
実施例では、コピー・エンジンは、複数のPPUの間で、又はPPUとCPUとの間で、データを移送する。実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスに対するページ・フォールトを生成することができ、メモリ区画ユニット900は、次に、ページ・フォールトをサービスしてアドレスをページ・テーブルにマッピングし、この後、コピー・エンジンは移送を実施する。実施例では、メモリは、複数のプロセッサ間の複数のコピー・エンジン動作に対してピン留めされ(すなわち、ページング不能)、利用可能なメモリをかなり低減させる。実施例では、ハードウェアがページ・フォールトすると、メモリ・ページが常駐であるかどうかに関わらず、アドレスがコピー・エンジンに伝えられることが可能であり、コピー処理はわかりやすい。
【0068】
図7のメモリ又は他のシステム・メモリからのデータがメモリ区画ユニット900によってフェッチされ、L2キャッシュ904に格納され、L2キャッシュ904は、チップ上に置かれ、1つの実施例による様々なGPC間で共有される。各メモリ区画ユニット900は、実施例では、対応するメモリ・デバイスに関連付けられたL2キャッシュ904の少なくとも一部を含む。実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実装される。実施例では、SM940のそれぞれがレベル1(「L1」)キャッシュを実装し得、L1キャッシュは、特定のSMに専用のプライベート・メモリであり、L2キャッシュ904からのデータがフェッチされ、SMの機能ユニットにおける処理のためにL1キャッシュのそれぞれに格納される。実施例では、L2キャッシュ904は、メモリ・インターフェース906及びXBar720に連結される。
【0069】
ROPユニット902は、実施例における、色圧縮、ピクセルの融合などの、ピクセル色に関するグラフィックス・ラスター・オペレーションを実施する。ROPユニット902は、実施例では、ラスター・エンジンと共に深度テストを実装し、ラスター・エンジンのカリング・エンジンから、ピクセル断片に関連付けられたサンプル・ロケーションの深度を受信する。実施例では、深度は、断片に関連付けられたサンプル・ロケーションの深度バッファ内の対応する深度に対してテストされる。実施例では、断片がサンプル・ロケーションの深度テストに合格すると、ROPユニット902は深度バッファを更新し、深度テストの結果をラスター・エンジンに伝送する。区画ユニット900の数は、GPCの数とは異なり得、したがって、各ROPユニット902は、実施例では、GPCのそれぞれに連結されることが可能であることが理解されよう。実施例では、ROPユニット902は、異なるGPCから受信されたパケットを追跡し、ROPユニット902によって生成された結果のどれがXbarにルートされるかを決定する。
【0070】
図10は、1つの実施例による、図8のストリーミング・マルチプロセッサなどの、ストリーミング・マルチプロセッサを示す。実施例では、SM1000は、命令キャッシュ1002、1つ又は複数のスケジューラ・ユニット1004、レジスタ・ファイル1008、1つ又は複数の処理コア1010、1つ又は複数の特別機能ユニット(「SFU」:special function unit)1012、1つ又は複数のロード/ストア・ユニット(「LSU」:load/store unit)1014、相互接続ネットワーク1016、共有メモリ/L1キャッシュ1018、及びその任意の適切な組合せを含む。実施例では、作業分散ユニットは、PPUのGPC上での実行のためのタスクをディスパッチし、各タスクがGPC内の特定のDPCにアロケートされ、タスクがシェーダ・プログラムに関連付けられている場合、タスクは、SM1000にアロケートされる。実施例では、スケジューラ・ユニット1004は、作業分散ユニットからタスクを受信し、SM1000に割り当てられた1つ又は複数のスレッド・ブロックのための命令スケジューリングを管理する。実施例では、スケジューラ・ユニット1004は、並列スレッドのワープとしての実行のためのスレッド・ブロックをスケジュールし、各スレッド・ブロックは、少なくとも1つのワープをアロケートされる。実施例では、各ワープがスレッドを実行する。実施例では、スケジューラ・ユニット1004は、複数の異なるスレッド・ブロックを管理し、ワープを異なるスレッド・ブロックにアロケートし、次に、各クロック・サイクル中に、複数の異なる協力グループからの命令を様々な機能ユニット(例えば、コア1010、SFU1012、及びLSU1014)にディスパッチする。
【0071】
協力グループは、スレッドが通信している粒度を開発者が表現することを可能にする通信スレッドのグループを編成するためのプログラミング・モデルを指し得、より豊かでより効率的な並列分解の表現を可能にする。実施例では、協力起動APIは、並列アルゴリズムの実行のためのスレッド・ブロック間の同期をサポートする。実施例では、従来のプログラミング・モデルのアプリケーションは、スレッド・ブロックの全てのスレッドにわたるバリアといった、協働スレッドを同期するための単一の簡単な構造を提供する(例えば、syncthreads()関数)。それでも、プログラマは、しばしば、スレッド・ブロックの粒度より小さくスレッドのグループを定義すること、並びに、より大きいパフォーマンス、デザインの柔軟性、及び、集合的なグループ全体の機能インターフェースの形でのソフトウェア再使用を可能にするように定義されたグループ内で同期することを望む。協力グループは、プログラマが、サブブロック(すなわち、単一のスレッドと同じくらいの小ささ)、及びマルチ・ブロックの粒度で、スレッドのグループを明示的に定義すること、並びに、協力グループ内のスレッドに対する同期などの、集合的な動作を実施することを可能にする。プログラミング・モデルは、ソフトウェア境界をまたがるきれいな構成物をサポートし、これにより、ライブラリ及びユーティリティ機能は、集中についての仮定を行う必要なく、これらのローカル・コンテキスト内で間違いなく同期することができる。協力グループのプリミティブは、生産者-消費者並列処理(producer-consumer parallelism)、オポチュニスティック並列処理(opportunistic parallelism)、及び、スレッド・ブロックのグリッド全体にまたがるグローバル同期を含む、協力並列処理の新しいパターンを可能にする。
【0072】
実施例では、ディスパッチ・ユニット1006は、機能ユニットの1つ又は複数に命令を伝送するように構成され、スケジューラ・ユニット1004は、各クロック・サイクル中に、同じワープからの2つの異なる命令がディスパッチされることを可能にする2つのディスパッチ・ユニット1006を含む。実施例では、各スケジューラ・ユニット1004は、単一のディスパッチ・ユニット1006又は追加のディスパッチ・ユニット1006を含む。
【0073】
各SM1000は、実施例では、SM1000の機能ユニットのためのレジスタのセットを提供するレジスタ・ファイル1008を含む。実施例では、レジスタ・ファイル1008は、各機能ユニットがレジスタ・ファイル1008の専用部分をアロケートされるように、機能ユニットのそれぞれの間で分割される。実施例では、レジスタ・ファイル1008は、SM1000によって実行されている異なるワープの間で分割され、レジスタ・ファイル1008は、機能ユニットのデータ経路に接続されたオペランドのための一時記憶を提供する。実施例では、各SM1000は、複数のL個の処理コア1010を備える。実施例では、SM1000は、多くの(例えば、128個以上の)別個の処理コア1010を含む。各コア1010は、実施例では、浮動小数点論理演算ユニット及び整数算術論理演算装置を含む、完全にパイプライン化された単精度、倍精度、及び/又は混合精度の処理ユニットを含む。実施例では、浮動小数点論理演算ユニットは、浮動小数点演算のためのIEEE754-2008規格を実装する。実施例では、コア1010は、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
【0074】
テンソル・コアは、実施例による行列演算を実施するように構成される。実施例では、1つ又は複数のテンソル・コアが、コア1010に含まれる。実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推測のための畳み込み演算などの、深層学習行列計算を実施するように構成される。実施例では、各テンソル・コアは、4×4行列上で演算し、行列乗算及び累積演算D=AxB+Cを実施し、ここで、A、B、C、及びDは、4x4行列である。
【0075】
実施例では、行列乗算入力A及びBは、16ビット浮動小数点行列であり、累積行列C及びDは、16ビット浮動小数点又は32ビット浮動小数点行列である。実施例では、テンソル・コアは、32ビット浮動小数点累積を伴う16ビット浮動小数点入力データ上で演算する。実施例では、16ビット浮動小数点乗算は、64個の演算を要求し、4x4x4行列乗算のための他の中間積を伴う32ビット浮動小数点加算を使用してその後累積される完全精度の積を生じる。テンソル・コアは、実施例では、これらの小さい方の要素から構築された、はるかに大きい2次元以上の行列演算を実施するために使用される。実施例では、CUDA9 C++APIなどのAPIは、CUDA-C++プログラムからテンソル・コアを効率的に使用するために、特化した行列ロード、行列乗算及び累積、並びに行列ストア動作を見せる。実施例では、CUDAレベルでは、ワープレベル・インターフェースは、ワープの全32個のスレッドに及ぶ16x16サイズの行列を仮定する。
【0076】
実施例では、各SM1000は、特別な機能(例えば、属性評価、逆数平方根、及び同様のもの)を実施するM個のSFU1012を備える。実施例では、SFU1012は、階層型ツリー・データ構造を横断するように構成されたツリー横断ユニットを含む。実施例では、SFU1012は、テクスチャ・マップ・フィルタリング動作を実施するように構成されたテクスチャ・ユニットを含む。実施例では、テクスチャ・ユニットは、メモリからテクスチャ・マップ(例えば、テクセルの2D配列)をロードし、テクスチャ・マップをサンプリングして、SM1000によって実行されるシェーダ・プログラムにおける使用のためにサンプリングされたテクスチャ値を生み出すように構成される。実施例では、テクスチャ・マップは、共有メモリ/L1キャッシュに格納される。テクスチャ・ユニットは、1つの実施例による、ミップマップ(例えば、詳細の様々なレベルのテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。実施例では、各SM1000は、2つのテクスチャ・ユニットを含む。
【0077】
各SM1000は、実施例における、共有メモリ/L1キャッシュ1018とレジスタ・ファイル1008との間のロード及びストア動作を実装するN個のLSU954を備える。各SM1000は、実施例における、機能ユニットのそれぞれをレジスタ・ファイル1008に接続し、LSU1014をレジスタ・ファイル1008に接続し、共有メモリ/L1キャッシュ1018を接続する相互接続ネットワーク1016を含む。実施例では、相互接続ネットワーク1016は、機能ユニットのいずれかをレジスタ・ファイル1008内のレジスタのいずれかに接続し、LSU1014をレジスタ・ファイル、及び共有メモリ/L1キャッシュ1018内の記憶場所に接続するように構成されることが可能なクロスバーである。
【0078】
共有メモリ/L1キャッシュ1018は、実施例における、SM1000とプリミティブ・エンジンとの間、及びSM1000におけるスレッド間の、データ・ストレージ及び通信を可能にする、オンチップ・メモリのアレイである。実施例では、共有メモリ/L1キャッシュ1018は、128KBのストレージ容量を備え、SM1000から区画ユニットへの経路内にある。共有メモリ/L1キャッシュ1018は、実施例では、読込み及び書込みをキャッシュするために使用される。共有メモリ/L1キャッシュ1018、L2キャッシュ、及びメモリの1つ又は複数は、補助記憶装置である。
【0079】
データ・キャッシュ及び共有メモリ機能を単一のメモリ・ブロックに結合させることは、実施例では、改善されたパフォーマンスを両方のタイプのメモリ・アクセスに提供する。容量は、実施例では、共有メモリが容量の半分を使用するように構成される場合、テクスチャ及びロード/ストア動作が残りの容量を使用できるなど、共有メモリを使用しないプログラムによってキャッシュとして使用されるか、使用可能である。共有メモリ/L1キャッシュ1018内の統合は、実施例による、高帯域幅及び低レイテンシ・アクセスを、頻繁に再使用されるデータに同時に提供しつつ、データをストリーミングするための高スループット管として、共有メモリ/L1キャッシュ1018が機能することを可能にする。汎用並列計算のために構成されるとき、グラフィックス処理に比べて、より単純な構成が使用されることが可能である。実施例では、固定機能画像処理装置が迂回され、はるかに単純なプログラミング・モデルを作り出す。汎用並列計算構成では、作業分散ユニットは、実施例では、スレッドのブロックを直接DPCに割り当て、分散させる。ブロック内のスレッドは、1つの実施例による、各スレッドが一意の結果を生成することを保証するために計算時に一意のスレッドIDを使用すること、プログラムを実行し、計算を実施するためにSM1000を使用すること、スレッド間で通信するために共有メモリ/L1キャッシュ1018を使用すること、並びに、共有メモリ/L1キャッシュ1018及びメモリ区画ユニットを通じてグローバル・メモリを読み書きするためにLSU1014を使用することを行って、同じプログラムを実行する。実施例では、汎用並列計算のために構成されるとき、SM1000は、DPC上で新しい作業を起動するためにスケジューラ・ユニットが使用できるコマンドを書き込む。
【0080】
実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット型コンピュータ、サーバ、スーパーコンピュータ、スマートフォン(例えば、ワイヤレス、ハンドヘルド・デバイス)、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistant)、デジタル・カメラ、車両、ヘッドマウント・ディスプレイ、ハンドヘルド電子デバイスなどに含まれるか、連結される。実施例では、PPUは、単一の半導体基板上で具体化される。実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」:reduced instruction set computer)CPU、メモリ管理ユニット(「MMU」:memory management unit)、デジタル・ツー・アナログ・コンバータ(「DAC」:digital to analog converter)、及び同様のものなどの、1つ又は複数の他のデバイスと共に、システムオンチップ(「SoC」:system-on-a-chip)に含まれる。
【0081】
実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィック・カード上に含まれ得る。グラフィック・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースするように構成され得る。さらに別の実施例では、PPUは、マザーボードのチップセットに含まれる統合画像処理装置(「iGPU」)であり得る。
【0082】
図11は、1つの実施例による、様々なアーキテクチャ及び/又は機能が実装されることが可能なコンピュータ・システム1100を示す。コンピュータ・システム1100は、実施例では、本開示の至る所で説明される様々な処理及び方法を実装するように構成される。1つ又は複数の実施例では、コンピュータ・システム1100は、データ・センタの構成要素内で、又は構成要素として、まとめて動作し、機械学習モデルを訓練すること、クラウド・コンピューティング環境を提供すること、1つ又は複数の仮想マシンをホストすること、及び他の高性能コンピューティング・タスクなどのタスクのために使用される、いくつかの同様に構成されたコンピュータ・システムの1つであり得る。1つ又は複数の実施例では、コンピュータ・システム1100は、1つ又は複数の他のモノのインターネット(IoT:Internet of Things)デバイス及び/又は敷地内サーバに通信可能に連結されたIoTデバイスなどのエッジ・デバイスであり得る。
【0083】
実施例では、コンピュータ・システム1100は、PCI(Peripheral Component Interconnect(ペリフェラル・コンポーネント・インターコネクト))、PCIエクスプレス、AGP(Accelerated Graphics Port(アクセラレイティッド・グラフィックス・ポート))、HyperTransport、又は、任意の他のバス若しくはポイント・ツー・ポイント通信プロトコルなどの、任意の適切なプロトコルを使用して実装された、通信バス1110に接続された少なくとも1つの中央処理装置1102を備える。実施例では、コンピュータ・システム1100は、メイン・メモリ1104、及び(例えば、ハードウェア、ソフトウェア、又はその組合せとして実装された)制御ロジックを含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形をとり得るメイン・メモリ1104に格納される。実施例では、ネットワーク・インターフェース・サブシステム1122は、コンピュータ・システム1100からデータを受信し、他のシステムにデータを伝送するための、他のコンピューティング・デバイス及びネットワークへのインターフェースを提供する。
【0084】
コンピュータ・システム1100は、実施例では、入力デバイス1108、並列処理システム1112、及び、(従来のCRT(cathode ray tube(陰極線管))、LCD(liquid crystal display(液晶ディスプレイ))、LED(light emitting diode(発光ダイオード))、プラズマ・ディスプレイ、又は他の適切なディスプレイ技術を使用して実装されることが可能な)ディスプレイ・デバイス1106を含む。実施例では、ユーザ入力は、キーボード、マウス、タッチパッド、マイクロフォンなどの入力デバイス1108から受信される。実施例では、前述のモジュールのそれぞれが、処理システムを形成するように、単一半導体プラットフォーム上に置かれることが可能である。
【0085】
本説明では、単一半導体プラットフォームは、唯一の一体型半導体ベース集積回路又はチップを指し得る。単一半導体プラットフォームという用語は、オンチップ動作をシミュレートする接続性が向上したマルチチップ・モジュールも指し、従来の中央処理装置(「CPU」)及びバス実装形態の利用より、かなり改善し得ることに留意されたい。当然、様々なモジュールも、ユーザの要望に従って、別々に、又は半導体プラットフォームの様々な組合せで、置かれ得る。
【0086】
実施例では、コンピュータ・プログラムは、機械可読実行可能コード又はコンピュータ制御ロジック・アルゴリズムの形で、メイン・メモリ1104及び/又は2次ストレージに格納される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行されると、1つの実施例による様々な機能をシステム1100が実施することを可能にする。メモリ1104、ストレージ、及び/又は任意の他のストレージが、コンピュータ可読媒体の可能な実例である。2次ストレージは、ハードディスク・ドライブ、及び/又は、(フロッピー・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル・バーサタイル・ディスク(「DVD」)ドライブ、レコーディング・デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリを表す)取外し可能ストレージ・ドライブなどの、任意の適切なストレージ・デバイス又はシステムを指し得る。
【0087】
実施例では、前の様々な図のアーキテクチャ及び/又は機能は、中央処理装置1102、並列処理システム1112、中央処理装置1102と並列処理システム1112両方の能力の少なくとも一部の能力がある集積回路、チップセット(例えば、関連機能を実施するための1つの単位として機能するようにデザインされ、販売される集積回路のグループ等)、及び集積回路の任意の適切な組合せのコンテキストにおいて実装される。
【0088】
実施例では、前の様々な図のアーキテクチャ及び/又は機能は、一般的なコンピュータ・システム、回路基板システム、エンターテイメント専用のゲーム機システム、特定用途向けシステムなどのコンテキストにおいて実装される。実施例では、コンピュータ・システム1100は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット型コンピュータ、サーバ、スーパーコンピュータ、スマートフォン(例えば、ワイヤレス、ハンドヘルド・デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、ヘッドマウント・ディスプレイ、ハンドヘルド電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム機、組込み型システム、及び/又は他の任意のタイプのロジックの形をとり得る。
【0089】
実施例では、並列処理システム1112は、複数のPPU1114及び関連付けられたメモリ1116を含む。実施例では、PPUは、相互接続1118及びスイッチ1120又は多重化装置を介して、ホスト・プロセッサ又は他の周辺デバイスに接続される。実施例では、並列処理システム1112は、(例えば、複数のGPUスレッド・ブロック全体への計算タスクの分散の一部として)並列可能なPPU1114全体に計算タスクを分散させる。実施例では、メモリは、PPU1114のいくつか又は全てにわたって、(例えば、読込み及び/又は書込みアクセスために)共有され、アクセス可能であるが、このような共有メモリは、ローカル・メモリ、及びPPUに常駐のレジスタの使用に比べて、性能上の不利を被ることがある。実施例では、PPU1114の動作は、進む前にコードの実行の特定のポイントに達することを(例えば、複数のPPU1114にわたって実行される)ブロック内の全てのスレッドに要求するsyncthreads()などのコマンドの使用を通じて同期される。
【0090】
本明細書及び図面は、したがって、制限的意味ではなく例証的な意味で評価されるべきである。それでも、特許請求の範囲に示されているような、本発明のより広い精神及び範囲から逸脱することなく、様々な修正及び変更が本明細書及び図面に行われ得ることが明らかであろう。
【0091】
他の変形形態は、本開示の精神内である。したがって、開示の技法は、様々な修正及び代替の構造の影響を受けやすいが、その特定の示された実施例が、図面に示され、詳細に上記で説明されてきた。それでも、本発明を特定の形式又は開示の形式に限定する意図はなく、むしろ意図は、添付の特許請求の範囲に定義されているような、本発明の精神及び範囲に含まれる全ての修正、代替の構造、及び同等物をカバーすることであることを理解されたい。
【0092】
開示の実施例を説明するコンテキストにおける(特に、以下の特許請求の範囲のコンテキストにおける)用語「a」及び「an」及び「the」及び同様の指示概念の使用は、本明細書において別途指示がない限り、又はコンテキストと明確に矛盾しない限り、単数形と複数形両方をカバーするものと解釈されるべきである。用語「備える(comprising)」、「有する(having)」、「含む(including)」、及び「収める(containing)」は、別途述べられない限り、制約のない用語である(すなわち、「含むがこれらに限定されない」を意味する)と解釈されるべきである。用語「接続される」は、修正されず、物理接続を指すとき、介在するものがあっても、部分的又は全面的に収められる、取り付けられる、又は一緒に結合されると解釈されるべきである。本明細書における値の範囲の列挙は、本明細書において別途指示されない限り、範囲に含まれる各別々の値を個別に参照する簡潔な方法として機能することを意図するにすぎず、各別々の値は、本明細書において個別に列挙されたとしても、本明細書に組み込まれる。用語「セット」(例えば「項目のセット」)又は「サブセット」の使用は、別途述べられない限り、又はコンテキストと矛盾しない限り、1つ又は複数のメンバを含む非空コレクションと解釈されるべきである。さらに、別途述べられない限り、又はコンテキストと矛盾しない限り、対応するセットの「サブセット」という用語は、対応するセットの正規のサブセットを必ずしも示さず、サブセット及び対応するセットは等しくなり得る。
【0093】
「A、B、及びCのうちの少なくとも1つ(at least one of A,B,and C)」、又は「A、B、及びCのうちの少なくとも1つ(at least one of A,B and C)」という形の句などの接続的な言葉は、別途具体的に決められない限り、又は別途コンテキストと明確に矛盾しない限り、項目、用語等が、A又はB又はC、或いは、A及びB及びCのセットの任意の非空サブセットであることを提示するために一般的に使用されるようなコンテキストと共に別途理解される。例えば、3つのメンバを有するセットの実例証となる実例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B、及びCのうちの少なくとも1つ」という接続的な句は、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}というセットのいずれかを指す。したがって、このような接続的な言葉は、一般に、特定の実施例が、Aのうちの少なくとも1つ、Bのうちの少なくとも1つ、及びCのうちの少なくとも1つがそれぞれ存在する必要があることを示唆することを意図するものではない。さらに、別途述べられない限り、又はコンテキストと矛盾しない限り、用語「複数」は、複数であるという状態を指示する(例えば「複数の項目」が複数の項目を指示する)。複数における項目の数は、少なくとも2つであるが、明示的に又はコンテキストによってそのように指示されるとき、これより多いことが可能である。さらに、別途決められない限り、又は別途コンテキストから明らかでない限り、句「に基づいて」は、「に少なくとも部分的に基づいて」を意味し、「に単に基づいて」を意味しない。
【0094】
本明細書で説明される処理の動作は、本明細書で別途指示がない限り、又は別途コンテキストと明確に矛盾しない限り、任意の適切な順序で実施されることが可能である。実施例では、本明細書で説明されるこれらの処理(若しくは変形形態及び/又はその組合せ)などの処理は、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実施され、ハードウェア又はその組合せによって1つ又は複数のプロセッサ上でまとめて実行するコード(例えば、実行可能命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。実施例では、コードは、例えば、1つ又は複数のプロセッサによって実行可能な複数の命令を含むコンピュータ・プログラムの形で、コンピュータ可読ストレージ媒体に格納される。実施例では、コンピュータ可読ストレージ媒体は、一時的な信号(例えば、伝搬する一時的な電気的又は電磁気的伝送)を除く非一時的コンピュータ可読ストレージ媒体であるが、一時的な信号の送受信機に非一時的データ・ストレージ回路機器(例えば、バッファ、キャッシュ、及びキュー)を含む。実施例では、コード(例えば、実行可能コード又はソース・コード)は、コンピュータ・システムの1つ又は複数のプロセッサによって実行されると(すなわち、実行された結果として)、本明細書で説明される動作をコンピュータ・システムに実施させる、実行可能命令を格納した1つ又は複数の非一時的コンピュータ可読ストレージ媒体のセット(又は実行可能命令を格納するための他のメモリ)に格納される。非一時的コンピュータ可読ストレージ媒体のセットは、実施例では、複数の非一時的コンピュータ可読ストレージ媒体と、複数の非一時的コンピュータ可読ストレージ媒体がコードの全てをまとめて格納しているが、コードの全てを欠いた複数の非一時的コンピュータ可読ストレージ媒体の個々の非一時的ストレージ媒体の1つ又は複数とを含む。実施例では、実行可能命令は、異なるプロセッサによって異なる命令が実行されるように、実行される(例えば、非一時的コンピュータ可読ストレージ媒体が命令を格納し、メインCPUが、グラフィックス・プロセッサ・ユニットが他の命令を実行する間に、命令のうちのいくつかを実行する)。実施例では、コンピュータ・システムの異なる構成要素が、別々のプロセッサを有し、異なるプロセッサが、命令の異なるサブセットを実行する。
【0095】
したがって、実施例では、コンピュータ・システムは、本明細書で説明される処理の動作を単独で又はまとめて実施する1つ又は複数のサービスを実装するように構成され、このようなコンピュータ・システムは、動作の実施を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の実施例を実装するコンピュータ・システムは単一のデバイスであり、別の実施例では、分散型コンピュータ・システムが、本明細書で説明される動作を実施するように、及び、単一のデバイスが、全ての動作を実施しないように、それぞれに動作する複数のデバイスを含む分散型コンピュータ・システムである。
【0096】
本明細書で提供される任意及び全ての実例、又は例示的な言葉(例えば「などの」)の使用は、本発明の実施例をより良く明らかにすることを単に意図するものであり、別途特許請求されない限り、本発明の範囲に限定を課さない。本明細書における言葉は、本発明の実践に不可欠なものとして特許請求されないいずれかの要素を指示するものと解釈されるべきではない。
【0097】
本発明を実行するために発明者に知られた最善のモードを含む本開示の実施例が本明細書で説明される。これらの実施例の変形形態は、前述の説明を読むと、当業者に明らかになり得る。発明者は、このような変形形態を必要に応じて当業者が採用することを期待し、発明者は、本明細書で具体的に説明されるようなもの以外に本開示の実施例が別途実践されることを意図する。したがって、本開示の範囲は、適用可能な法律によって許可されるように、本明細書に添付の特許請求の範囲に列挙された主題の全ての変更形態及び同等物を含む。その上、その全ての可能な変形形態における上述の要素の任意の組合せは、本明細書において別途指示がない限り、又は別途コンテキストと明確に矛盾しない限り、本開示の範囲によって包含される。
【0098】
本明細書で引用される公報、特許出願、及び特許を含む全ての参照は、各参照が参照により組み込まれるものを個別且つ具体的に指示され、全体として本明細書において示される場合と同じ程度まで、本明細書によって参照により組み込まれる。
【0099】
本説明及び特許請求の範囲において、用語「連結される」及び「接続される」は、これらの派生語と共に、使用され得る。これらの用語は、互いの類義語として意図されないことがあることを理解されたい。むしろ、特定の実例では、「接続される」又は「連結される」は、2つ以上の要素が互いに直接又は間接の物理接触又は電気接触状態にあることを指示するために使用され得る。「連結される」は、2つ以上の要素が互いに直接の接触状態にないが、依然として互いに協働又は相互作用することも意味し得る。
【0100】
別途具体的に決められない限り、本明細書の至る所で、「処理すること」、「コンピューティング」、「計算すること」、「決定すること」、又は同様のものなどの用語が、コンピューティング・システムのレジスタ及び/又はメモリ内の電子的などの物理的な量として表されたデータを、コンピューティング・システムのメモリ、レジスタ又は他のこのような情報ストレージ、伝送又は表示デバイス内の物理的な量として同様に表された他のデータに、操作及び/又は変換する、コンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスのアクション及び/又は処理を指すことが認識され得る。
【0101】
同様の様式で、用語「プロセッサ」は、レジスタ及び/又はメモリからの電子データを処理し、電子データを、レジスタ及び/又はメモリに格納され得る他の電子データに変換する、任意のデバイス又はデバイスの一部を指し得る。非限定的な実例として、「プロセッサ」は、中央処理装置(CPU)又は画像処理装置(GPU)であり得る。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備え得る。本明細書で使用されるように、「ソフトウェア」処理は、例えば、タスク、スレッド、及びインテリジェント・エージェントなどの、経時的な作業を実施するソフトウェア及び/又はハードウェア・エンティティを含み得る。また、各処理は、命令を順番又は並列に、連続的又は断続的に実行するための複数の処理を指し得る。用語「システム」及び「方法」は、システムが1つ又は複数の方法を具体化し得、方法がシステムとみなされ得る限りにおいて、本明細書において区別なく使用される。
【0102】
本文書では、アナログ又はデジタル・データをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に取得すること、獲得すること、受信すること、又は入力することへの言及が行われ得る。アナログ及びデジタル・データの取得、獲得、受信、又は入力の処理は、アプリケーション・プログラミング・インターフェースへのファンクション・コール又はコールのパラメータとしてデータを受信することによるなど、様々なやり方で達成されることが可能である。いくつかの実装形態では、アナログ又はデジタル・データの取得、獲得、受信、又は入力の処理は、シリアル又はパラレル・インターフェースを介してデータを移送することによって達成されることが可能である。別の実装形態では、アナログ又はデジタル・データの取得、獲得、受信、又は入力の処理は、提供するエンティティから獲得するエンティティにコンピュータ・ネットワークを介してデータを移送することによって達成されることが可能である。アナログ又はデジタル・データを提供すること、出力すること、伝送すること、送ること、又は提示することへの言及も行われ得る。様々な実例では、アナログ又はデジタル・データを提供すること、出力すること、伝送すること、送ること、又は提示することの処理は、ファンクション・コールの入力又は出力パラメータ、アプリケーション・プログラミング・インターフェースのパラメータ、又はプロセス間通信メカニズムとしてデータを移送することによって達成されることが可能である。
【0103】
上記の議論は、説明される技法の実例の実装形態を示しているが、他のアーキテクチャが、説明される機能を実装するために使用され得、本開示の範囲内であることが意図される。さらに、議論のために責任の特定の分散が上記で定義されているが、様々な機能及び責任は、状況に応じて異なるやり方で分散及び分割され得る。
【0104】
本開示の少なくとも1つの実施例が、以下の節を考慮して説明されることが可能である。
1.
スピーチ速度に少なくとも部分的に基づいてスピーチ終了(EOS)閾値を決定することと、
オーディオ入力のセグメントのセットのうちの少なくとも1つのセグメントについて、少なくとも1つのセグメントを表すキャラクタのセットを予測することと、
少なくとも1つのセグメントに対する予測されるキャラクタのセットについてEOS閾値が満たされるという決定に少なくとも部分的に基づいて、少なくとも1つのセグメントに対応するEOSを決定することと
を含む、方法。
2.セグメントに対する予測されたキャラクタのセットが、キャラクタのセットのうちの1つのキャラクタの確率分布を、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能が出力として生成することによって生成される、節1の方法。
3.スピーチ速度が、単語間間隔のセットに少なくとも部分的に基づいて決定される、節2の方法。
4.EOS閾値を決定することが、単語間間隔のセットの最大単語間間隔に少なくとも部分的に基づいてEOS閾値を修正することをさらに含む、節3の方法。
5.EOS閾値を決定することが、単語間間隔のセットの中間値に少なくとも部分的に基づいてEOS閾値を修正することをさらに含む、節3又は4の方法。
6.EOS閾値を決定することが、単語間間隔のセットの分散、及び単語間間隔のセットの最大単語間間隔に少なくとも部分的に基づいて、EOS閾値を修正することをさらに含む、節3~5のいずれかの方法。
7.単語間間隔のセットが、キャラクタのセットのうちのキャラクタの第1のサブセットと、キャラクタのセットのうちのキャラクタの第2のサブセットとの間の時間を少なくとも決定することによって計算される、節3~6のいずれかの方法。
8.時間が、セグメントのセットのうちのいくつかのセグメントに対応する、節7の方法。
9.キャラクタのセットが、グリーディ選択アルゴリズムをCTC機能の出力に少なくとも適用することによって決定される、節7又は8の方法。
10.キャラクタの第1のサブセット及びキャラクタの第2のサブセットが、ブランク記号をさらに含む、節9の方法。
11.セグメントのセットのうちの少なくとも1つのセグメントに対応するEOSを決定することが、セグメントに対する予測されたキャラクタのセットに含まれるブランク記号の割合を決定することをさらに含む、節1~10のいずれかの方法。
12.セグメントのセットのうちの少なくとも1つのセグメントに対応するEOSを決定することが、割合がEOS閾値を超過したと決定することをさらに含む、節11の方法。
13.ブランク記号の割合を決定することが、第1の長さのスライディング・ウィンドウのブランク記号の割合を決定することをさらに含み、セグメントが、スライディング・ウィンドウに含まれる、節11又は12の方法。
14.1つ又は複数のキャラクタのセットを予測することが、1つ又は複数のニューラル・ネットワークを使用して、1つ又は複数のキャラクタのセットを予測することを含む、節1~13のいずれかの方法。
15.1つ又は複数のキャラクタのセットを予測することが、キャラクタのセットのうちの1つのキャラクタの確率分布を出力として生成し、確率分布をEOS検出器に提供するコネクショニスト・テンポラル・クラシフィケーション(CTC)機能に、1つ又は複数のニューラル・ネットワークの出力を適用することをさらに含む、節14の方法。
16.
システムであって、
1つ又は複数のプロセッサと、
命令を格納するメモリであって、命令は、1つ又は複数のプロセッサによって実行された結果として、システムに、
スピーチ速度に少なくとも部分的に基づいて決定されたスピーチ終了(EOS)閾値の決定を生成すること、及び
EOS閾値に少なくとも部分的に基づいてオーディオのウィンドウに対するEOSの決定を生成すること
を行わせる、メモリと
を備える、システム。
17.メモリが、命令をさらに含み、命令は、1つ又は複数のプロセッサによって実行された結果として、システムに、神経音響モデルを実装する1つ若しくは複数のニューラル・ネットワーク、又はコネクショニスト・テンポラル・クラシフィケーション(CTC)機能のうちの少なくとも1つを使用して生成されたオーディオのウィンドウに対して予測されたキャラクタのセットを取得させる、節16のシステム。
18.メモリが、命令をさらに含み、命令は、1つ又は複数のプロセッサによって実行された結果として、システムに、
オーディオ信号から単語のセットを取得することであって、オーディオのウィンドウが、オーディオ信号の一部を表す、取得することと、
単語のセットに少なくとも部分的に基づいて決定された単語間間隔のセットに少なくとも部分的に基づいてスピーチ速度を決定することと
を行わせる、節16又は17のシステム。
19.メモリが、命令をさらに含み、命令は、1つ又は複数のプロセッサによって実行された結果として、システムに、オーディオ信号を表すウィンドウのセットに含まれる単語のセットに少なくとも部分的に基づいて計算された単語間間隔のセットの最大値に少なくとも部分的に基づいてスピーチ速度を決定させ、オーディオのウィンドウが、ウィンドウのセットのメンバである、節16~18のいずれかのシステム。
20.オーディオのウィンドウが、スピーチを含むオーディオ信号の複数の時間ステップを含む、節16~19のいずれかのシステム。
21.メモリが、命令をさらに含み、命令は、1つ又は複数のプロセッサによって実行された結果として、システムに、スピーチ処理パイプラインを実行させ、
EOSの決定をシステムに生成させる命令が、1つ又は複数のプロセッサによって実行された結果として、システムに、スピーチ処理パイプラインの一部としてEOSの決定を生成させる命令をさらに含む、
節16~20のいずれかのシステム。
22.EOSの決定を生成することが、スピーチ処理パイプラインのEOS検出器によって実行される、節21のシステム。
23.
EOS閾値に少なくとも部分的に基づいて、オーディオ信号のオーディオ・フレームのセットのうちのオーディオ・フレームのサブセットにスピーチ終了(EOS)としてフラグを立てることであって、EOS閾値が、単語間間隔のセットに少なくとも部分的に基づいて決定される、フラグを立てること
を含む、方法。
24.方法が、音響モデルによって生成されたオーディオ・フレームのセットの特徴のセットを入力として使用して、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能によって生成されたキャラクタのセットに少なくとも部分的に基づいて単語間間隔のセットを決定することをさらに含む、節23の方法。
25.EOS閾値を決定することが、EOS閾値を単語間間隔のセットの平均間隔にセットすることをさらに含む、節23又は24の方法。
26.方法が、オーディオ・フレームのサブセットにEOSとしてフラグを立てることの結果として、オーディオ信号のトランスクリプトを生成することをさらに含む、節23~25のいずれかの方法。
27.方法が、EOS閾値をスピーチ認識パイプラインに提供することをさらに含む、節23~26のいずれかの方法。
28.プロセッサであって、少なくとも部分的に、
1つ又は複数のニューラル・ネットワークによって、オーディオ入力のセグメントのセットのうちの1つのセグメントに対して、セグメントに関連付けられたキャラクタのセットを予測することと、
1つ又は複数のニューラル・ネットワークによって、セグメントに関連付けられたキャラクタのセットについてスピーチ終了(EOS)閾値が満たされるという決定に少なくとも部分的に基づいて、セグメントに対応するEOSを決定することと
によって、1つ又は複数のニューラル・ネットワークを使用して、スピーチ速度に少なくとも部分的に基づいて決定されたEOS閾値の決定を生成するための1つ又は複数の算術論理演算装置(ALU:arithmetic logic unit)を備える、プロセッサ。
29.1つ又は複数のニューラル・ネットワークが、神経音響モデルをさらに備える、節28のプロセッサ。
30.1つ又は複数のニューラル・ネットワークが、スピーチ処理パイプラインを実装するために使用される、節28又は29のプロセッサ。
31.1つ又は複数のALUが、音響モデルによって生成されたオーディオ入力のセグメントのセットの特徴のセットを入力として使用して、コネクショニスト・テンポラル・クラシフィケーション(CTC)機能によって生成されたキャラクタのセットに少なくとも部分的に基づいて、単語間間隔のセットをさらに決定する、節28~30のいずれかのプロセッサ。
【0105】
さらに、構造的特徴及び/又は方法論的行為に固有の言葉で主題が説明されてきたが、添付の特許請求の範囲において定義される主題は、説明される固有の特徴又は行為に必ずしも限定されないことが理解されよう。むしろ、固有の特徴及び行為は、特許請求の範囲の実装の例示的な形式として開示される。
【0106】
サーバ及びデータ・センタ
以下の図は、少なくとも1つの実施例を実装するために使用されることが可能な例示的なネットワーク・サーバ及びデータ・センタ・ベースのシステムを、限定することなく示す。
【0107】
図12は、少なくとも1つの実施例による分散型システム1200を示す。少なくとも1つの実施例では、分散型システム1200は、1つ又は複数のクライアント・コンピューティング・デバイス1202、1204、1206、及び1208を含み、これらのクライアント・コンピューティング・デバイスは、1つ又は複数のネットワーク1210上でウェブ・ブラウザ、独自のクライアント、及び/又はその変形形態などのクライアント・アプリケーションを実行及び動作させるように構成される。例えば、1つ又は複数のクライアント・コンピューティング・デバイス1202、1204、1206、及び1208は、上記で説明されたような、オーディオ・キャプチャ・デバイスを実行するためのアプリケーションを実行する。少なくとも1つの実施例では、サーバ1212は、ネットワーク1210を介して、リモート・クライアント・コンピューティング・デバイス1202、1204、1206、及び1208と通信可能に連結され得る。さらに、サーバ1212は、様々な実施例では、上記で説明されたような、スピーチ処理パイプラインのオーディオ解析器及び/又は構成要素を実行する。
【0108】
少なくとも1つの実施例では、サーバ1212は、複数のデータ・センタにまたがるシングル・サイン・オン(SSO)アクセスのセッション活動を管理し得るサービス及びアプリケーションなどの、1つ又は複数のサービス又はソフトウェア・アプリケーションを動かすように適合され得る。少なくとも1つの実施例では、サーバ1212は、非仮想環境及び仮想環境を含むことができる他のサービス又はソフトウェア・アプリケーションも提供し得る。少なくとも1つの実施例では、これらのサービスは、ウェブベース・サービス若しくはクラウド・サービスとして、又は、サービスとしてのソフトウェア(SaaS)モデルのもとで、クライアント・コンピューティング・デバイス1202、1204、1206、及び/又は1208のユーザに提供され得る。少なくとも1つの実施例では、クライアント・コンピューティング・デバイス1202、1204、1206、及び/又は1208を動作させるユーザは、今度は、1つ又は複数のクライアント・アプリケーションを利用して、サーバ1212と相互作用し、これらの構成要素によって提供されたサービスを利用し得る。
【0109】
少なくとも1つの実施例では、システム1200のソフトウェア構成要素1218、1220、及び1222は、サーバ1212上に実装される。少なくとも1つの実施例では、システム1200の1つ若しくは複数の構成要素、及び/又はこれらの構成要素によって提供されたサービスも、クライアント・コンピューティング・デバイス1202、1204、1206、及び/又は1208の1つ又は複数によって実装され得る。少なくとも1つの実施例では、クライアント・コンピューティング・デバイスを動作させるユーザは、次に、1つ又は複数のクライアント・アプリケーションを利用して、これらの構成要素によって提供されたサービスを使用し得る。少なくとも1つの実施例では、これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、又はその組合せにおいて実装され得る。分散型システム1200とは異なり得る様々な異なるシステム構成が可能であることを理解されたい。図12に示された実施例は、したがって、実施例のシステムを実装するための分散型システムの1つの実例であり、限定することを意図するものではない。
【0110】
少なくとも1つの実施例では、クライアント・コンピューティング・デバイス1202、1204、1206、及び/又は1208は、様々なタイプのコンピューティング・システムを含み得る。少なくとも1つの実施例では、クライアント・コンピューティング・デバイスは、Microsoft Windows Mobile(登録商標)などのソフトウェア、並びに/又は、iOS、Windows Phone、Android、BlackBerry10、Palm OS、及び/若しくはこれらの変形形態などの様々なモバイル・オペレーティング・システムを動かす、ポータブル・ハンドヘルド・デバイス(例えば、iPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティング・タブレット、パーソナル・デジタル・アシスタント(PDA))、又はウェアラブル・デバイス(例えば、Google Glass(登録商標)ヘッドマウント・ディスプレイ)を含み得る。少なくとも1つの実施例では、デバイスは、様々なインターネット関連アプリ、電子メール、ショート・メッセージ・サービス(SMS)アプリケーションなどの様々なアプリケーションをサポートし得、他の様々な通信プロトコルを使用し得る。少なくとも1つの実施例では、クライアント・コンピューティング・デバイスは、実例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、及び/又はLinux(登録商標)オペレーティング・システムの様々なバージョンを動かす、パーソナル・コンピュータ及び/又はラップトップ・コンピュータを含む汎用パーソナル・コンピュータも含み得る。少なくとも1つの実施例では、クライアント・コンピューティング・デバイスは、Google Chrome OSなどの様々なGNU/Linux(登録商標)オペレーティング・システムを限定することなく含む様々な市販のUNIX(登録商標)又はUNIX(登録商標)ライクなオペレーティング・システムのいずれかを動かす、ワークステーション・コンピュータであることが可能である。少なくとも1つの実施例では、クライアント・コンピューティング・デバイスは、シンクライアント・コンピュータ、インターネット対応ゲーミング・システム(例えば、Kinect(登録商標)ジェスチャ入力デバイスを伴う若しくは伴わない、Microsoft Xboxゲーム機)、及び/又は、ネットワーク1210で通信することができるパーソナル・メッセージング・デバイスなどの電子デバイスも含み得る。図12の分散型システム1200は、4つのクライアント・コンピューティング・デバイスを用いて示されているが、任意の数のクライアント・コンピューティング・デバイスがサポートされ得る。センサ等を伴うデバイスなどの他のデバイスが、サーバ1212と相互作用し得る。
【0111】
少なくとも1つの実施例では、分散型システム1200におけるネットワーク1210は、TCP/IP(transmission control protocol/Internet protocol(トランスミッション・コントロール・プロトコル/インターネット・プロトコル))、SNA((systems network architecture(システム・ネットワーク・アーキテクチャ))、IPX(Internet packet exchange(インターネット・パケット交換))、AppleTalk、及び/又はその変形形態を限定することなく含む、様々な利用可能なプロトコルのいずれかを使用したデータ通信をサポートすることができる、任意のタイプのネットワークであり得る。少なくとも1つの実施例では、ネットワーク1210は、ローカル・エリア・ネットワーク(LAN)、イーサネットに基づくネットワーク、トークンリング、ワイド・エリア・ネットワーク、インターネット、仮想ネットワーク、仮想プライベート・ネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、ワイヤレス・ネットワーク(例えば、電気電子技術者協会(IEEE)802.11プロトコルスイートのいずれかのもとで動作するネットワーク、Bluetooth(登録商標)、及び/若しくは任意の他のワイヤレス・プロトコル)、並びに/又は、これら及び/若しくは他のネットワークの任意の組合せであることが可能である。
【0112】
少なくとも1つの実施例では、サーバ1212は、1つ又は複数の汎用コンピュータ、(例として、PC(パーソナル・コンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジ・サーバ、メインフレーム・コンピュータ、ラックマウント型サーバ等を含む)特化されたサーバ・コンピュータ、サーバ・ファーム、サーバ・クラスタ、又は、任意の他の適切な配置及び/若しくは組合せから成り得る。少なくとも1つの実施例では、サーバ1212は、仮想オペレーティング・システムを動かす1つ若しくは複数の仮想マシン、又は、仮想化を伴う他のコンピューティング・アーキテクチャを含むことができる。少なくとも1つの実施例では、論理ストレージ・デバイスの1つ又は複数の柔軟なプールが、サーバのための仮想ストレージ・デバイスを維持するために仮想化されることが可能である。少なくとも1つの実施例では、仮想ネットワークは、ソフトウェア定義ネットワーキングを使用して、サーバ1212によって制御されることが可能である。少なくとも1つの実施例では、サーバ1212は、1つ又は複数のサービス又はソフトウェア・アプリケーションを動かすように適合され得る。
【0113】
少なくとも1つの実施例では、サーバ1212は、任意のオペレーティング・システム、及び、任意の市販のサーバ・オペレーティング・システムを動かし得る。少なくとも1つの実施例では、サーバ1212は、HTTP(hypertext transport protocol(ハイパーテキスト転送プロトコル))サーバ、FTP(file transfer protocol(ファイル転送プロトコル))サーバ、CGI(common gateway interface(コモン・ゲートウェイ・インターフェース))サーバ、JAVA(登録商標)サーバ、データベース・サーバ、及び/又はその変形形態を含む、様々な追加のサーバ・アプリケーション及び/又は中間階層アプリケーションのいずれかも動かし得る。少なくとも1つの実施例では、例示的なデータベース・サーバは、Oracle、Microsoft、Sybase、IBM(International Business Machines)、及び/又はその変形形態から商業的に利用可能なものを限定することなく含む。
【0114】
少なくとも1つの実施例では、分散型システム1200は、1つ又は複数のデータベース1214及び1216も含み得る。少なくとも1つの実施例では、データベースは、オーディオなどの情報、スピーチ速度情報、ユーザ情報、使用パターン情報、適合ルール情報、及び他の情報を格納するためのメカニズムを提供し得る。少なくとも1つの実施例では、データベース1214及び1216は、様々なロケーションに常駐し得る。少なくとも1つの実施例では、データベース1214及び1216の1つ又は複数は、サーバ1212にローカルな(及び/又はサーバ1212に常駐の)非一時的ストレージ媒体に常駐し得る。少なくとも1つの実施例では、データベース1214及び1216は、サーバ1212から離れており、ネットワーク・ベース接続又は専用接続を介してサーバ1212と通信状態にあり得る。少なくとも1つの実施例では、データベース1214及び1216は、ストレージエリア・ネットワーク(SAN)に常駐し得る。少なくとも1つの実施例では、サーバ1212に帰する機能を実施するために必要な任意のファイルが、必要に応じて、サーバ1212上でローカルに、及び/又はリモートに、格納され得る。少なくとも1つの実施例では、データベース1214及び1216は、SQLフォーマットのコマンドに応じてデータを格納、更新、及び検索するように適合されたデータベースなどのリレーショナル・データベースを含み得る。
【0115】
図13は、少なくとも1つの実施例による、クラウド・コンピューティング環境1302を示す。少なくとも1つの実施例では、クラウド・コンピューティング環境1302は、1つ又は複数のコンピュータ・システム/サーバ1304を備え、これと、パーソナル・デジタル・アシスタント(PDA)若しくはセルラー電話1306A、デスクトップ・コンピュータ1306B、ラップトップ・コンピュータ1306C、及び/又は自動車コンピュータ・システム1306Nなどのコンピューティング・デバイスが通信する。少なくとも1つの実施例では、これは、各クライアントがこのようなリソースを別々に維持する必要がないように、クラウド・コンピューティング環境1302からのサービスとして、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアが提供されることを可能にする。図13に示されたコンピューティング・デバイス1306A~1306Nのタイプが例証だけを意図していること、並びに、クラウド・コンピューティング環境1302が、任意のタイプのネットワーク、及び/又は、(例えば、ウェブ・ブラウザを使用した)ネットワーク/アドレス可能接続で、任意のタイプのコンピュータ化デバイスと通信できることが理解されている。様々な実施例では、コンピューティング・デバイス1306A~1306Nは、オーディオを単にキャプチャし、キャプチャされたオーディオ(例えば、入力オーディオ)を1つ又は複数のコンピュータ・システム/サーバ1304に通信し得る。例えば、自動車コンピュータ・システム1306Nは、キャプチャされたオーディオを処理せずに、キャプチャ・オーディオを、キャビン内から直接1つ又は複数のコンピュータ・システム/サーバ1304に伝送する。
【0116】
少なくとも1つの実施例では、コンピュータ・システム/サーバ1304は、クラウド・コンピューティング・ノードと表されることが可能であり、非常に多くの他の汎用又は特殊用途のコンピューティング・システム環境又は構成で動作可能である。少なくとも1つの実施例では、コンピュータ・システム/サーバ1304との使用に適し得るコンピューティング・システム、環境、及び/又は構成の実例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド又はラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベース・システム、セット・トップ・ボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、並びに、上記のシステム若しくはデバイスのいずれか、及び/又はその変形形態を含む分散型クラウド・コンピューティング環境を含むがこれらに限定されない。
【0117】
少なくとも1つの実施例では、コンピュータ・システム/サーバ1304は、コンピュータ・システムによって実行される、プログラム・モジュールなどの、コンピュータ・システム実行可能命令の一般的なコンテキストで説明され得る。少なくとも1つの実施例では、プログラム・モジュールは、特定のタスクを実施するか、特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含む。少なくとも1つの実施例では、例示的なコンピュータ・システム/サーバ1304は、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実施される分散型クラウド・コンピューティング環境で実践され得る。少なくとも1つの実施例では、分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルとリモート両方のコンピュータ・システム・ストレージ媒体内に置かれ得る。
【0118】
図14は、少なくとも1つの実施例による、クラウド・コンピューティング環境1302(図13)によって提供される機能抽象化レイヤのセットを示す。図14に示されている構成要素、レイヤ、及び機能は、例証だけを意図するものであり、構成要素、レイヤ、及び機能は変化し得ることを予め理解されたい。
【0119】
少なくとも1つの実施例では、ハードウェア及びソフトウェア・レイヤ1402は、ハードウェア及びソフトウェア構成要素を含む。少なくとも1つの実施例では、ハードウェア構成要素の実例は、メインフレーム、様々なRISC(縮小命令セット・コンピュータ)アーキテクチャ・ベース・サーバ、様々なコンピューティング・システム、スーパーコンピューティング・システム、ストレージ・デバイス、ネットワーク、ネットワーキング構成要素、及び/又はその変形形態を含む。少なくとも1つの実施例では、ソフトウェア構成要素の実例は、ネットワーク・アプリケーション・サーバ・ソフトウェア、様々なアプリケーション・サーバ・ソフトウェア、様々なデータベース・ソフトウェア、及び/又はその変形形態を含む。
【0120】
少なくとも1つの実施例では、仮想化レイヤ1404は抽象化レイヤを提供し、抽象化レイヤから、仮想サーバ、仮想ストレージ、(仮想プライベート・ネットワークを含む)仮想ネットワーク、仮想アプリケーション、仮想クライアント、及び/又はその変形形態といった例示的な仮想エンティティが提供され得る。
【0121】
少なくとも1つの実施例では、管理レイヤ1406は、様々な機能を提供する。少なくとも1つの実施例では、リソース提供は、クラウド・コンピューティング環境内のタスクを実施するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。少なくとも1つの実施例では、メータリングは、クラウド・コンピューティング環境内でリソースが利用されるときの使用量追跡、及び、これらのリソースの消費量に対する請求書送付又はインボイス送付を提供する。少なくとも1つの実施例では、リソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。少なくとも1つの実施例では、セキュリティは、ユーザ及びタスクに対する本人確認、並びに、データ及び他のリソースの保護を提供する。少なくとも1つの実施例では、ユーザ・インターフェースは、ユーザとシステム・アドミニストレータ両方に、クラウド・コンピューティング環境へのアクセスを提供する。少なくとも1つの実施例では、サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースのアロケート及び管理を行う。少なくとも1つの実施例では、サービス・レベル契約(SLA:Service Level Agreement)管理は、SLAに応じて将来要件が予想されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【0122】
少なくとも1つの実施例では、ワークロード・レイヤ1408は、クラウド・コンピューティング環境が利用される機能を提供する。少なくとも1つの実施例では、このレイヤから提供され得るワークロード及び機能の実例は、マッピング及びナビゲーション、ソフトウェア開発及び管理、教育サービス、データ解析及び処理、トランザクション処理、並びにサービス配信を含む。例えば、ワークロード・レイヤ1408は、上記で説明されたような、スピーチ処理パイプラインの全て又は一部を実施し得る。
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
【国際調査報告】