Speech-to-Text の使用中に問題が発生した場合に役立つトラブルシューティング手順について説明します。
Speech-to-Text を認証できない
「アプリケーションのデフォルト認証情報」が利用できないことを示すエラー メッセージが表示される場合や、Speech-to-Text を呼び出すときに使用する API キーを取得する方法がわからない場合があります。
Speech-to-Text では認証にアプリケーションのデフォルト認証情報(ADC)を使用します。
ADC の認証情報は、Speech-to-Text API を呼び出すコンテキスト内で使用可能でなければなりません。たとえば、ターミナルで ADC を設定し、IDE のデバッガでコードを実行すると、コードの実行コンテキストが認証情報にアクセスできないことがあります。その場合、Speech-to-Text へのリクエストが失敗する可能性があります。
ADC に認証情報を指定する方法については、アプリケーションのデフォルト認証情報を設定するをご覧ください。
Speech-to-Text で空のレスポンスが返される
Speech-to-Text が空のレスポンスを返すことがある理由は複数あります。問題の原因は RecognitionConfig
の場合も、音声自体の場合も考えられます。
RecognitionConfig
のトラブルシューティング
RecognitionConfig
オブジェクト(または StreamingRecognitionConfig
)は Speech-to-Text 認識リクエストの一部です。音声文字変換を正しく実行するには、主に次の 2 つのフィールドを設定する必要があります。
- 音声構成。
- モデルと言語。
空のレスポンス(空の {}
JSON レスポンスを受け取る場合など)の最も一般的な原因の一つは、音声メタデータに関する誤った情報が提供されることです。音声構成フィールドが正しく設定されていない場合、ほとんどのケースで音声文字変換が失敗し、認識モデルは空の結果を返します。
音声構成には、提供された音声のメタデータが含まれます。音声ファイルのメタデータは、FFMPEG の一部である ffprobe
コマンドを使用して取得できます。
次の例では、ffprobe を使用して https://storage.googleapis.com/cloud-samples-tests/speech/commercial_mono.wav のメタデータを取得する方法を示します。
$ ffprobe commercial_mono.wav
[...]
Input #0, wav, from 'commercial_mono.wav':
Duration: 00:00:35.75, bitrate: 128 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, 1 channels, s16, 128 kb/s
上述のコマンドにより、ファイルに以下のものが含まれていることを確認できます。
- sample_rate_hertz: 8000
- チャンネル: 1
- LINEAR16 (s16) エンコード
この情報は RecognitionConfig
で使用できます。
空のレスポンスが発生するその他のオーディオ関連の理由は、オーディオ エンコードに関連している可能性があります。他にも次のようなツールをお試しください。
ファイルを再生し、出力を聴きます。音声がクリアで、話を理解できるか確認します。
ファイルを再生するには、SoX(Sound eXchange)の
play
コマンドを使用します。音声エンコード別の例を以下に示します。FLAC ファイルにはサンプルレート、エンコード タイプ、チャンネル数を示すヘッダーが含まれ、次のように再生できます。
play audio.flac
LINEAR16 ファイルにはヘッダーが含まれません。LINEAR16 ファイルを再生するには、サンプルレート、エンコード タイプ、チャンネル数を指定する必要があります。LINEAR16 のエンコードは 16 ビット、符号付き整数、リトル エンディアンにする必要があります。
play --channels=1 --bits=16 --rate=16000 --encoding=signed-integer \ --endian=little audio.raw
MULAW ファイルにもヘッダーが含まれず、多くの場合に低いサンプルレートを使用します。
play --channels=1 --rate=8000 --encoding=u-law audio.raw
データの音声エンコードが、
RecognitionConfig
で送信したパラメータと一致していることを確認してください。たとえば、リクエストで"encoding":"FLAC"
と"sampleRateHertz":16000
が指定されている場合、SoXplay
コマンドによって一覧表示される音声データ パラメータはそれらのパラメータと一致する必要があります。次のコマンドを実行します。play audio.flac
次のように表示されます。
Encoding: FLAC Channels: 1 @ 16-bit Sampleratehertz: 16000Hz
SoX のリストに
16000Hz
以外のSampleratehertz
が示されている場合は、一致するようにInitialRecognizeRequest
の"sampleRateHertz"
を変更します。Encoding
がFLAC
でない場合やChannels
が1 @ 16-bit
でない場合は、このファイルを直接使用することはできず、互換性のあるエンコードに変換する必要があります(次の手順を参照)。音声ファイルが FLAC エンコードではない場合、SoX を使用して FLAC に変換します。さらに、上記の手順を繰り返してファイルを再生し、エンコード、sampleRateHertz、チャンネルを確認します。さまざまな音声ファイル形式を FLAC エンコードに変換する例を以下に示します。
sox audio.wav --channels=1 --bits=16 audio.flac sox audio.ogg --channels=1 --bits=16 audio.flac sox audio.au --channels=1 --bits=16 audio.flac sox audio.aiff --channels=1 --bits=16 audio.flac
未加工ファイルを FLAC に変換するには、ファイルの音声エンコードを知る必要があります。たとえば、16,000 Hz のステレオ 16 ビット符号付きリトル エンディアンを FLAC に変換するには、次のように指定します。
sox --channels=2 --bits=16 --rate=16000 --encoding=signed-integer \ --endian=little audio.raw --channels=1 --bits=16 audio.flac
提供されているサンプル音声ファイルを使用して、クイックスタートの例やサンプル アプリケーションのいずれかを実行します。この例が正常に動作したら、サンプル音声ファイルをご自身の音声ファイルに置き換えます。
モデルと言語の構成
高品質の音声文字変換の結果を得るには、モデルの選択が非常に重要になります。Speech-to-Text は、ユースケースに合わせて調整された複数のモデルを提供します。使用する音声に最も近いものを選択する必要があります。たとえば、一部のモデル(latest_short
や command_and_search
など)は短形式のモデルで、短い音声やプロンプトに適しています。これらのモデルは、無音期間が検出されるとすぐに結果を返す可能性があります。一方、長形式のモデル(latest_short, phone_call, video and default
など)は、長い音声にも適しており、音声の終わりのような無音の解釈には適していません。
認識が突然終了したり、すぐに返されなかった場合は、他のモデルでテストを行い、音声文字変換の品質を改善できるかどうか確認することをおすすめします。Speech UI を使用して、複数のモデルを試すことができます。
音声認識からの予期しない結果
Speech-to-Text から返される結果が期待どおりではない場合は、次のようにします。
- レスポンスにエラー メッセージがないか確認します。
割り当てと制限を確認します。
認識の精度を向上させるには、ベスト プラクティスのガイドラインに従います。