如何对语音 SDK 进行故障排除
本文提供的信息可帮助你解决在使用语音 SDK 时可能遇到的问题。
验证失败
你可能会观察到几个身份验证错误之一,具体取决于编程环境、API 或 SDK。 下面是一些示例错误:
- 是否已设置语音资源密钥和区域值?
- AuthenticationFailure
- HTTP 403 禁止访问或 HTTP 401 未授权。 没有有效
Ocp-Apim-Subscription-Key
或Authorization
标头的连接请求将被拒绝,状态为 403 或 401。 - ValueError:无法使用给定的参数构造 SpeechConfig(或此消息的变体)。 例如,在未设置有效凭据的情况下运行适用于 Python 的语音 SDK 快速入门之一时,可能会观察到此错误。
- 错误代码为 0x5 的异常。 例如,在未设置有效凭据的情况下运行适用于 C# 的语音 SDK 快速入门之一时,可能会观察到此访问被拒绝错误。
有关基线身份验证故障排除提示,请参阅验证资源密钥和验证授权令牌。
验证你的资源密钥
可以通过运行以下命令之一来验证你拥有有效的资源密钥。
注意
将 YOUR_RESOURCE_KEY
和 YOUR_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.azure.cn/sts/v1.0/issueToken -Headers $FetchTokenHeader
$OAuthToken
如果输入了有效的资源密钥,则该命令将返回授权令牌,否则将返回错误。
验证授权令牌
如果使用授权令牌进行身份验证,则可能会看到身份验证错误,因为:
- 授权令牌无效
- 授权令牌已过期
如果使用授权令牌进行身份验证,请运行以下命令之一以验证授权令牌是否仍然有效。 令牌的有效期为 10 分钟。
注意
将 YOUR_AUDIO_FILE
替换为预先录制的音频文件的路径。 将 YOUR_ACCESS_TOKEN
替换为上一步中返回的授权令牌。 将 YOUR_REGION
替换为正确的区域。
$SpeechServiceURI =
'https://YOUR_REGION.stt.speech.azure.cn/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 请求超时
出现该错误很可能是因为未将音频数据发送到服务。 网络问题也可能导致此错误。