針對語音 SDK 進行疑難排解

本文提供的資訊可協助您解決使用語音 SDK 時可能會遇到的問題。

驗證失敗

視程式設計環境、API 或 SDK 而定,您可能會觀察到數個驗證錯誤中的其中一項。 以下為一些範例錯誤:

  • 您是否已設定語音資源金鑰和區域值?
  • AuthenticationFailure
  • HTTP 403 禁止或 HTTP 401 未授權。 沒有有效Ocp-Apim-Subscription-KeyAuthorization標頭的 連線 ion 要求會遭到拒絕,狀態為 403 或 401。
  • ValueError:無法使用指定的自變數來建構 SpeechConfig(或此訊息的變化)。 舉例來說,當您執行其中一個適用於 Python 的語音 SDK 快速入門而未設定環境變數時,可能會觀察到此錯誤。 當您將環境變數設定為不正確的內容 (例如金鑰或區域) 時,也可能會看到此錯誤。
  • 出現錯誤碼的例外狀況:0x5。 舉例來說,當您執行其中一個適用於 C# 的語音 SDK 快速入門而未設定環境變數時,可能會觀察到此拒絕存取錯誤。

如需基準驗證疑難排解秘訣,請參閱驗證您的資源金鑰驗證授權權杖。 如需確認認證的詳細資訊,請參閱取得資源的金鑰

驗證您的資源金鑰

您可以執行下列其中一個命令,以確認您擁有有效的資源密鑰。

注意

將和 YOUR_REGION 取代YOUR_RESOURCE_KEY為您自己的資源金鑰和相關聯的區域。

$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分鐘。

注意

將取代 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

此問題通常會在單一語句的一次性辨識時觀察到。 舉例來說,在下列情況中可能會傳回錯誤:

  • 音訊開頭有一段長時間的靜音。 在這裡情況下,服務會在幾秒鐘後停止辨識,並傳 InitialSilenceTimeout回 。
  • 音訊會使用不支援的編解碼器格式,這會導致音訊數據被視為無聲。

音訊開頭可以出現靜音,但前提是在使用連續辨識的情況下。

SPXERR_AUDIO_SYS_LIBRARY_NOT_FOUND

例如,安裝多個 Python 版本時,或未使用支援的 Python 版本時,可能會傳回此錯誤。 您可以嘗試使用不同的 Python 解譯器,或解除安裝所有 Python 版本,然後重新安裝最新版本的 Python 和語音 SDK。

HTTP 400 錯誤要求

此錯誤通常發生在要求本文包含無效的音訊資料時。 僅支援 WAV 格式。 此外,請檢查要求的標頭,以確保針對 Content-TypeContent-Length 指定適當的值。

HTTP 408 要求逾時

此錯誤最有可能的原因,是因為沒有將任何音訊資料傳送至服務。 網路問題也可能造成此錯誤。

下一步