このドキュメントでは、Media Translation API へ音声データを渡すおすすめの方法について説明します。ここで説明するガイドラインは、効率と精度を向上させることと、サービスのレスポンス時間を最適にすることを目的としています。Media Translation API を使用して最良の効果が得られるのは、サービスに送信されるデータがこのドキュメントで説明するパラメータの範囲内にあるときです。
最適な結果を得るためにおすすめすること | 可能な限り避けること |
---|---|
16,000 Hz 以上のサンプリング レートで音声をキャプチャします。このレートでキャプチャできない場合は、(再サンプリングせずに)音源のネイティブ サンプルレートと一致するように sample_rate_hertz を設定します。 | 低いサンプリング レートでは精度が低下することがあります。その結果、翻訳の精度も低下します。ただし、再サンプリングは避けます。たとえば、電話のネイティブ レートは一般に 8,000 Hz です。このレートでサービスに送信する必要があります。 |
音声の録音と転送にはロスレス コーデックを使用します。FLAC または LINEAR16 をおすすめします。 |
録音または転送時に mu-law、またはその他のロッシー コーデックを使用すると、精度が低下することがあります。音声がすでに API でサポートされていないエンコードになっている場合、ロスレス FLAC または LINEAR16 にトランスコードします。アプリケーションでロッシー コーデックを使用して帯域幅を保持する必要がある場合は、AMR_WB コーデック、OGG_OPUS コーデックをこの優先順位で使用することをおすすめします。 |
適切なストリーミング レスポンスのレイテンシを得るには、LINEAR16 コーデックを使用します。 |
他のタイプのコーデックでも、デコードに追加のステップが必要になるため、ストリーミング レスポンスのレイテンシが増加することがあります。同じコーデックでは、サンプルレートが高いほどレイテンシが高くなる可能性があります。 |
特に背景ノイズがある場合は、可能な限りスピーカーの近くにマイクを置きます。 | 認識機能サービスは、ノイズキャンセリングを追加することなく、背景の音声やノイズを無視するように設計されています。ただし、過度な背景ノイズやエコーは、特にロッシー コーデックも使用する場合に精度が低下することがあります。 |
ノイズのある背景の音声でより良い結果を得るには、拡張モデルを使用します。 | ノイズやエコーのある音声では、非拡張モデルはうまく機能しない場合があります。 |
言語コード「language-region」で source_language_code を指定し、「region」を指定しない言語コードで target_language_code を指定します(zh-CN と zh-TW を除く)。 |
source_language_code で「region」が指定されていない場合はデフォルトのリージョンが選択され、実際の音声リージョンと一致せず精度が低下する可能性があります。翻訳はテキストなので target_language_code はリージョンを必要としませんが、zh-CN と zh-TW はテキストでは異なります。 |
1 つの読み上げ音声
短いクエリやコマンドの場合には、single_utterance
を true に設定した StreamingTranslateSpeechConfig
を使用します。これにより、短い発言の認識が改善され、レイテンシも最小になります。無音時間や一時停止が長いと、サービスは自動的に翻訳を停止します。「single_utterance」モードを使用すると、レスポンスで END_OF_SINGLE_UTTERANCE
が speech_event_type として返されます。クライアントは END_OF_SINGLE_UTTERANCE
レスポンスを受け取るとリクエストの送信を停止し、残りのレスポンスを受信し続ける必要があります。
フレームサイズ
ストリーミング認識では、マイクまたはその他の音源からキャプチャされたライブ音声を認識します。音声ストリームはフレームに分割され、連続した StreamingTranslateSpeechRequest
メッセージで送信されます。任意のフレームサイズを使用できます。フレームが大きいほど効率が向上しますが、レイテンシが増加します。レイテンシと効率性の適切なトレードオフとして、100 ミリ秒フレームサイズをおすすめします。
音声の前処理
高音質の適切な位置に置かれたマイクを使用して、可能な限り明瞭な音声を生成することをおすすめします。ただし、音声をサービスに送信する前にノイズ低減信号処理を適用すると、一般に認識精度が低下します。認識サービスはノイズのある音声を処理するように設計されています。
最良の結果を得るために、次のことを行います。
- 特に背景ノイズがある場合は、可能な限り話者の近くにマイクを置きます。
- 音声のクリッピングを避けます。
- 自動利得制御(AGC)の使用を避けます。
- すべてのノイズ低減処理を無効にする必要があります。
- いくつかのサンプル音声を聞きます。歪みや予想外のノイズがなく、明瞭に聞こえている必要があります。
リクエストの構成
Media Translation API へのリクエストで、送信される音声データを正確に記述するようにします。リクエストの TranslateSpeechConfig で適切な sample_rate_hertz
、audio_encoding
、source_language_code
、target_language_code
が記述されるようにすることで、そのリクエスト対して最も正確な音声文字変換と請求が行われるようになります。