ベスト プラクティス

このドキュメントでは、音声データを Speech-to-Text API へ渡す際の推奨事項を説明します。ここで説明するガイドラインは、効率と精度を向上させることと、サービスのレスポンス時間を最適にすることを目的としています。Speech-to-Text API を使用して最良の効果が得られるのは、サービスに送信されるデータがこのドキュメントで説明するパラメータの範囲内にあるときです。

これらのガイドラインに従っても API から期待する結果が得られない場合は、トラブルシューティングとサポートをご覧ください。

最適な結果を得るためにおすすめすること 可能な限り避けること
16,000 Hz 以上のサンプリング レートで音声をキャプチャします。 低いサンプリング レートでは精度が低下することがあります。ただし、再サンプリングは避けます。たとえば、電話のネイティブ レートは一般に 8,000 Hz です。このレートでサービスに送信する必要があります。
音声の録音と転送にはロスレス コーデックを使用します。FLAC または LINEAR16 をおすすめします。 録音または転送時に mp3、mp4、m4a、mu-law、a-law、またはその他のロッシー コーデックを使用すると、精度が低下することがあります。音声がすでに API でサポートされていないエンコードになっている場合、ロスレス FLAC または LINEAR16 にトランスコードします。アプリケーションでロッシー コーデックを使用して帯域幅を保持する必要がある場合は、AMR_WBOGG_OPUSSPEEX_WITH_HEADER_BYTE コーデックを、この優先順位で使用することをおすすめします。
認識機能は、ノイズキャンセリングを追加することなく、背景の音声やノイズを無視するように設計されています。ただし、特に背景ノイズがある場合に最適な結果を得るには、可能な限りユーザーの近くにマイクを置いてください。 過度な背景ノイズやエコーは、特にロッシー コーデックも使用する場合に精度が低下することがあります。
複数の人の音声をキャプチャし、各人物を個別のチャンネルで録音する場合は、最適な認識結果が得られるように各チャンネルを個別に送信します。ただし、すべての話者が単一のチャンネル録音に含まれている場合は、録音をそのまま送信します。 複数の人が同時に話している場合や、さまざまな音量で話している場合は、背景ノイズとして解釈され、無視されることがあります。
語句のヒントを使用して名前や用語を語彙に追加すると、特定の語句の精度が飛躍的に向上します。 認識機能には大量の語彙が用意されていますが、語彙に含まれていない用語や固有名詞は認識されません。
短いクエリやコマンドの場合には、single_utterance を true に設定した StreamingRecognize を使用します。これにより、短い発言の認識が改善され、レイテンシも最小になります。 短いクエリまたはコマンドを使用する場合は、Recognize または LongRunningRecognize を使用します。

サンプリング レート

可能であれば、音源のサンプリング レートを 16,000 Hz に設定します。可能でない場合は、(再サンプリングせずに)音源のネイティブ サンプリング レートと一致するように sample_rate_hertz を設定します。

フレームサイズ

ストリーミング認識では、マイクまたはその他の音源からキャプチャされたライブ音声を認識します。音声ストリームはフレームに分割され、連続した StreamingRecognizeRequest メッセージで送信されます。任意のフレームサイズを使用できます。フレームが大きいほど効率が向上しますが、レイテンシが増加します。レイテンシと効率性の適切なトレードオフとして、100 ミリ秒フレームサイズをおすすめします。

音声の前処理

高音質の適切な位置に置かれたマイクを使用して、可能な限り明瞭な音声を生成することをおすすめします。ただし、音声をサービスに送信する前にノイズ低減信号処理を適用すると、一般に認識精度が低下します。このサービスはノイズのある音声を処理するように設計されています。

最良の結果を得るために、次のことを行います。

  • 特に背景ノイズがある場合は、可能な限り話者の近くにマイクを置きます。
  • 音声のクリッピングを避けます。
  • 自動利得制御(AGC)の使用を避けます。
  • すべてのノイズ低減処理を無効にする必要があります。
  • いくつかのサンプル音声を聞きます。歪みや予想外のノイズがなく、明瞭に聞こえている必要があります。

リクエストの構成

Speech-to-Text API へのリクエストで、送信される音声データを正確に記述するようにします。リクエストの RecognitionConfig で適切な sampleRateHertzencodinglanguageCode を記述することで、そのリクエストに対して最も正確な音声文字変換と課金が行われるようになります。