Speech SDK のトラブルシューティング

この記事では、Speech SDK を使用しているときに発生する可能性がある問題の解決に役立つ情報を提供します。

認証に失敗しました

プログラミング環境、API、または SDK によっては、いくつかの認証エラーのいずれかが発生する場合があります。 エラーの例を次に示します。

  • 音声リソース キーとリージョンの値を設定しましたか?
  • AuthenticationFailure
  • HTTP 403 許可されていません、または HTTP 401 権限がありません。 有効な Ocp-Apim-Subscription-Key または Authorization ヘッダーがない接続要求は、状態 403 または 401 で拒否されます。
  • ValueError: 指定された引数 (またはこのメッセージのバリエーション) を使って SpeechConfig を構築できません。 このエラーは、たとえば、環境変数を設定せずに、いずれかの Speech SDK for Python クイックスタートを実行したときに発生する可能性があります。 また、環境変数にキーやリージョンなどで無効なものを設定した場合にも表示されることがあります。
  • エラー コードを含む例外: 0x5。 このアクセス拒否エラーは、たとえば、環境変数を設定せずに、いずれかの Speech SDK for C# クイックスタートを実行したときに発生する可能性があります。

ベースライン認証のトラブルシューティングのヒントについては、「リソース キーを検証する」と「認可トークンを検証する」を参照してください。 資格情報を確認する詳細については、「リソースのキーを取得する」を参照してください。

リソース キーを検証する

次のコマンドのいずれかを実行することで、有効なリソース キーを持っているかどうかを確認できます。

Note

YOUR_RESOURCE_KEYYOUR_REGION を、お使いのリソース キーと関連するリージョンに置き換えてください。

$FetchTokenHeader = @{
    'Content-type'='application/x-www-form-urlencoded'
    'Content-Length'= '0'
    'Ocp-Apim-Subscription-Key' = 'YOUR_RESOURCE_KEY'
}
$OAuthToken = Invoke-RestMethod -Method POST -Uri https://YOUR_REGION.api.cognitive.microsoft.com/sts/v1.0/issueToken -Headers $FetchTokenHeader
$OAuthToken

有効なリソース キーを入力した場合、このコマンドで承認トークンが返されます。それ以外の場合はエラーが返されます。

承認トークンを検証する

認証に認証トークンを使用している場合は、以下が認証エラーの原因である可能性があります。

  • 承認トークンが無効である
  • 承認トークンの有効期限が切れている

認証に承認トークンを使用している場合は、次のコマンドのいずれかを実行して、認証トークンがまだ有効であることを確認します。 トークンは 10 分間有効です。

Note

YOUR_AUDIO_FILE を、録音済みのオーディオ ファイルへのパスに置き換えます。 YOUR_ACCESS_TOKEN を、上記のステップで返された承認トークンに置き換えます。 YOUR_REGION を正しい地域と置き換えます。

$SpeechServiceURI =
'https://YOUR_REGION.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?language=en-US'

# $OAuthToken is the authorization token returned by the token service.
$RecoRequestHeader = @{
    'Authorization' = 'Bearer '+ $OAuthToken
    'Transfer-Encoding' = 'chunked'
    'Content-type' = 'audio/wav; codec=audio/pcm; samplerate=16000'
}

# Read audio into byte array.
$audioBytes = [System.IO.File]::ReadAllBytes("YOUR_AUDIO_FILE")

$RecoResponse = Invoke-RestMethod -Method POST -Uri $SpeechServiceURI -Headers $RecoRequestHeader -Body $audioBytes

# Show the result.
$RecoResponse

有効な承認トークンを入力した場合、このコマンドでオーディオ ファイルのトランスクリプトが返されます。それ以外の場合はエラーが返されます。

RecognitionStatus を使用した InitialSilenceTimeout

この問題は通常、1 つの発話を単発認識した場合に発生します。 たとえば、次のような状況でエラーが返されることがあります。

  • オーディオが長い無音状態から始まっています。 その場合、サービスは数秒後に認識を停止し、InitialSilenceTimeout を返します。
  • オーディオがサポートされていないコーデック形式を使用しており、これによりオーディオ データが無音として扱われています。

オーディオの最初に無音があっても問題がないのは、継続的認識を使っている場合のみです。

SPXERR_AUDIO_SYS_LIBRARY_NOT_FOUND

このエラーは、たとえば、複数のバージョンの Python がインストールされている場合や、サポートされているバージョンの Python を使っていない場合などに返されることがあります。 別の python インタープリターを使うか、すべての python バージョンをアンインストールして、最新バージョンの python と Speech SDK を再インストールしてください。

HTTP 400 Bad Request

このエラーは、通常は、要求本文に無効なオーディオ データが含まれているときに発生します。 サポートされているのは WAV 形式のみです。 要求のヘッダーもチェックして、Content-TypeContent-Length に適切な値を指定していることを確認します。

HTTP 408 要求タイムアウト

このエラーのもっとも可能性が高い原因は、オーディオ データがサービスに送信されていないことです。 ネットワークの問題により、このエラーが発生する可能性もあります。

次のステップ