Azure文本语音转换服务返回401未经授权

时间:2018-12-10 13:35:27

标签: azure text-to-speech microsoft-cognitive azure-cognitive-services

我正在尝试使用Azure认知服务的文本到语音API,但是无论我如何尝试,都会收到401未经授权的响应。

我已经在西欧地区的订阅中创建了认知服务资源。类型为所有认知服务,状态为活动。我从https://github.com/Azure-Samples/Cognitive-Speech-TTS下载了CSharp示例,并将西欧URL和我的Cognitive Services订阅密钥输入了代码。运行示例时,可以很好地检索访问令牌,但文本语音转换请求返回401。

令牌URL:https://westeurope.api.cognitive.microsoft.com/sts/v1.0/issueToken

服务网址:https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1

我检查了URL是否正确,我使用的是相同的区域,并且使用的区域与创建的资源相同。我进入了故障排除页面(https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/troubleshooting),并遇到了相同的401问题。我尝试运行来自邮递员的TTS请求。我已经从Azure门户尝试了Key1和Key2,并试图重新生成密钥。我试过也在本地和云中的Azure Functions中运行请求。

我已经解码了访问令牌,据我所知,它似乎里面有很多正确的东西。唯一奇怪的是,exp字段是字符串而不是数字(对于JWT不正确)。可能是导致此错误的身份验证系统中的错误,还是我做错了什么?

请求

POST https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1 HTTP/1.1
Authorization: Bearer <access-token>
User-Agent: TestApi
X-Microsoft-OutputFormat: audio-16khz-64kbitrate-mono-mp3
Content-Type: application/ssml+xml
Host: westeurope.tts.speech.microsoft.com
Content-Length: 209

<speak version="1.0" xml:lang="fi-FI">
  <voice name="Microsoft Server Speech Text to Speech Voice (fi-FI, HeidiRUS)" xml:lang="fi-FI">Hei, muistathan suorittaa päivän harjoitteet ajoissa.</voice>
</speak>

响应

HTTP/1.1 401 Unauthorized
X-MSEdge-Ref: Ref A: AD369D30DDB7466B8A77086554F9DC46 Ref B: HEL02EDGE0112 Ref C: 2018-12-10T13:03:43Z
Date: Mon, 10 Dec 2018 13:03:42 GMT
Content-Length: 0

1 个答案:

答案 0 :(得分:1)

要使用文本语音转换服务,您必须拥有语音服务资源,而不是认知服务资源。

使得不清楚的是,文档中没有具体提及来进行区分。认知服务资源将显示“所有认知服务”的类型值,假设该值还包含语音功能。而且,当您专门创建语音服务资源时,它仍被列为认知服务资源。

相关问题