埋め込み音声モデルは、完全にターゲット デバイス上で実行されます。 デバイスのハードウェアでのこれらのモデルのパフォーマンス特性を理解することは、製品やアプリケーション内で低遅延のエクスペリエンスを実現するために不可欠であると言えます。 このガイドでは、"このデバイスは埋め込み音声テキスト変換と音声翻訳のモデルを実行するのに適しているか?" という質問の答えを出すのに役立つ情報を提供します。
メトリックと用語
実時間係数 (RTF) – デバイスの実時間係数 (RTF) では、埋め込み音声モデルがどれだけ高速に音声入力を処理できるかを測定します。 これは、音声の長さに対する処理時間の比率です。 たとえば、デバイスで 1 分間の音声ファイルが 30 秒で処理される場合、RTF は 0.5 です。 これは、埋め込み音声モデルを実行するためのデバイスの計算能力を評価するメトリックです。 モデルをサポートするには遅すぎるデバイスを特定するのに役立ちます。 このメトリックの測定は、リアルタイムでのマイク入力ではなく、ファイルベースの入力のみを使用して行う必要があります。
リアルタイムで対話型の音声エクスペリエンスをサポートするには、デバイスの RTF が 1
以下である必要があります。 RTF 値が 1
より大きい場合は、デバイスが音声入力に追いつけず、ユーザー エクスペリエンスが低下する可能性があります。
デバイスの RTF を測定する場合は、複数のサンプルを測定し、パーセンタイル間の分布を分析することが重要です。 そうすることで、温度調整による CPU クロック速度の違いなど、デバイスの動作における変動の影響を把握できます。 「デバイス上で実時間係数を測定する」に記載されている定義済み測定テストでは、音声認識の結果ごとに RTF が自動的に測定され、十分に大きなサンプル サイズが得られます。
ユーザーが認識する待ち時間 (UPL) – 音声テキスト変換の UPL (ユーザーが認識する待ち時間) は、単語が話されてから、その単語が認識結果に表示されるまでの時間です。
パフォーマンスに影響を与える係数
デバイスの仕様 – デバイスの仕様は、パフォーマンス上の問題なく埋め込み音声モデルを実行できるかどうかという点で、重要な役割を果たします。 CPU クロック速度、アーキテクチャ (たとえば、x64、ARM プロセッサなど)、メモリのすべてが、モデルの推論速度に影響を与える可能性があります。
CPU 負荷 – ほとんどの場合、デバイス上では、埋め込み音声モデルが統合されているアプリケーションと並行して、他のアプリケーションが実行されています。 アイドル時およびピーク時にデバイスで発生する CPU 負荷の量も、パフォーマンスに影響する可能性があります。
たとえば、デバイス上で実行されている他のすべてのアプリケーションから生じる CPU 負荷が中程度から高のデバイスの場合、強力なプロセッサが搭載されていても、他のアプリケーションに加えて埋め込み音声を実行することに関してパフォーマンス上の問題が発生する可能性があります。
メモリ負荷 – 埋め込み音声テキスト変換モデルの実行時には、200 から 300 MB のメモリが消費されます。 デバイスの使用可能なメモリが、埋め込み音声プロセス用に求められるよりも少ない場合、仮想メモリとページングへの頻繁なフォールバックによって待ち時間がさらに長くなることがあります。 これは、実時間係数とユーザーが認識する待ち時間の両方に影響する可能性があります。
組み込みのパフォーマンス最適化
すべての埋め込み音声テキスト変換モデルには、音声入力から無音と音声以外の内容を除外することを目的とした音声区間検出 (VAD) コンポーネントが付属しています。 その目的は、CPU 負荷と、他の音声テキスト変換モデル コンポーネントの処理時間を減らすことです。
VAD コンポーネントは、常にオンになっており、開発者による構成は必要ありません。 最も効果を発揮するのは、キャプション、コマンド処理、ディクテーションなどのシナリオで一般的な、無視できない量の無音または音声以外の内容が音声入力に含まれている場合です。
デバイス上で実時間係数を測定する
埋め込み音声でサポートされているすべてのプラットフォーム向けに、パフォーマンス測定モードを含むコード サンプルを GitHub で入手できます。 このモードでは、可能な限り多くの変数を制御してデバイスの実時間係数 (RTF) を測定することが目標です。
モデル – 測定には英語 (米国) モデルが使用されます。 サポートされている他のすべてのロケールのモデルも同様のパフォーマンス特性に従うので、英語 (米国) モデルを使用して測定すれば十分です。
音声入力 – サンプル コードの補足ダウンロードとして、RTF 測定用に設計された事前構築済みの音声ファイルを利用できます。
測定メカニズム – サンプルでは、さまざまなデバイスとテスト イテレーション間で結果を正確かつ簡単に比較できるように、時間測定の開始と停止のマーカーが事前に構成されています。
この測定は、モデル パスと暗号化キーを指定する以外のコード変更を行わずに、ターゲット デバイス上でサンプルを直接実行して行う必要があります。 デバイスは、埋め込み音声が使用されるときの実際のエンド ユーザーの状態 (たとえば、その他のアクティブなアプリケーション、CPU とメモリの負荷など) を表す状態になっている必要があります。
サンプルを実行すると、コンソールに出力されるパフォーマンス メトリックが生成されます。 メトリックの完全なスイートには、実時間係数と、CPU 使用率やメモリ消費量などの他のプロパティが含まれます。 各メトリックの定義と説明を以下に示します。
命令セット メトリック
メトリック | 説明 | 注 |
---|---|---|
AVX512対応 | CPU で AVX512 命令セットがサポートされている場合は True。 | このフラグは X64 プラットフォーム用です。 ONNX ランタイムには、さまざまな命令セット用の最適化があり、この情報を使用すると、不整合の診断に役立ちます。 |
AVXサポート済み | CPU で AVX 命令セットがサポートされている場合は True。 | このフラグは X64 プラットフォーム用です。 ONNX ランタイムには、さまざまな命令セット用の最適化があり、この情報を使用すると、不整合の診断に役立ちます。 |
AVX2Supported | CPU が AVX2 命令セットをサポートしている場合は True。 | このフラグは X64 プラットフォーム用です。 ONNX ランタイムには、さまざまな命令セット用の最適化があり、この情報を使用すると、不整合の診断に役立ちます。 |
エスエスイー3アベイラブル | CPU で SSE3 命令セットがサポートされている場合は True。 | このフラグは X64 プラットフォーム用です。 ONNX ランタイムには、さまざまな命令セット用の最適化があり、この情報を使用すると、不整合の診断に役立ちます。 |
NEONAvailable | CPU が NEON 命令セットをサポートしている場合は True。 | このフラグは ARM プロセッサ プラットフォーム用です。 ONNX ランタイムには、さまざまな命令セット用の最適化があり、この情報を使用すると、不整合の診断に役立ちます。 |
NPU | ニューラル処理ユニットの名前。見つからなかった場合は N/A。 | このフラグはハードウェア アクセラレータ用です。 |
メモリ メトリック
メトリック | 説明 | 注 |
---|---|---|
ページファイル使用量 | プロセスで使用されるページ ファイルの量。 Linux および Windows 用に実装されています。 | 値は、マシン構成に対する相対値です。 |
WorkingSetSize | プロセスに使用されるメモリの量。 | |
ProcessCPUUsage | プロセスの CPU 使用率の集計。 | Speech SDK や UI スレッドなど、プロセス内のすべてのスレッドが含まれます。 すべてのコアにわたって集計されます。 |
ThreadCPUUsage | 音声認識または音声翻訳スレッドの CPU 使用率の集計。 |
パフォーマンス メトリック
メトリック | 説明 | 注 |
---|---|---|
RealTimeFactor | 埋め込み音声エンジンが音声を実時間よりもどれだけ高速に処理しているかを測定します。 音声の読み込み時間を含みます。 | 1 より大きい値は、エンジンによる音声の処理が実時間よりも遅いことを示します。 1 より小さい値は、エンジンによる音声の処理が実時間よりも速いことを示します。 この値は、ファイルベースの入力モードでのみ分析する必要があります。 ストリーミング入力モードでは分析しないでください。 |
StreamingRealTimeFactor | エンジンが音声を実時間よりもどれだけ高速に処理しているかを測定します。 音声の読み込み時間を含みません。 | 1 より大きい値は、エンジンによる音声の処理が実時間よりも遅いことを示します。 1 より小さい値は、エンジンによる音声の処理が実時間よりも速いことを示します。 |