針對語音 SDK 進行疑難排解
本文提供的資訊可協助您解決使用語音 SDK 時可能會遇到的問題。
驗證失敗
視程式設計環境、API 或 SDK 而定,您可能會觀察到數個驗證錯誤中的其中一項。 以下為一些範例錯誤:
- 您是否已設定語音資源金鑰和區域值?
- AuthenticationFailure
- HTTP 403 禁止或 HTTP 401 未授權。 沒有有效
Ocp-Apim-Subscription-Key
或Authorization
標頭的 連線 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-Type
和 Content-Length
指定適當的值。
HTTP 408 要求逾時
此錯誤最有可能的原因,是因為沒有將任何音訊資料傳送至服務。 網路問題也可能造成此錯誤。