如何将Azure语音转文本及翻译服务部署在Azure APIM之后?
Azure认知服务(语音转文本+翻译)部署到APIM后无调用/测试失败的排查与修复
一、先确认APIM核心配置是否正确
语音转文本WebSocket端点配置
- 必须创建WebSocket类型的API,不能复用HTTP模板。后端端点填写Azure语音服务的官方WebSocket地址(格式:
wss://<region>.stt.speech.microsoft.com/speech/universal/v2) - 配置后端身份验证:在APIM的API后端设置中,添加语音服务的密钥作为
Ocp-Apim-Subscription-Key头,或者用策略自动转发:<set-header name="Ocp-Apim-Subscription-Key" exists-action="override"> <value>{你的语音服务密钥}</value> </set-header> - 开启CORS支持:在APIM的API设置里,添加WebSocket方法(
GET、OPTIONS),并允许客户端的域名,避免跨域拦截。
翻译服务HTTPS端点配置
- 后端地址必须是翻译服务的标准端点(格式:
https://<region>.cognitiveservices.azure.com/translate) - 策略中配置密钥转发:确保APIM在向后端发送请求时,带上翻译服务的密钥,示例策略:
<set-header name="Ocp-Apim-Subscription-Key" exists-action="override"> <value>{你的翻译服务密钥}</value> </set-header> - 确认API版本参数正确:翻译服务需要带
api-version=3.0参数,APIM的API操作要保留该参数的传递。
二、正确的测试方法
语音转文本WebSocket测试
APIM内置测试工具不支持完整的WebSocket交互流程,建议用第三方工具:
- 用
wscat命令行测试:
连接成功后,按照语音服务的WebSocket协议发送音频数据或控制消息,同时查看APIM监控日志。wscat -c wss://<你的APIM实例名>.azure-api.net/<语音API路径> -H "Ocp-Apim-Subscription-Key: <你的APIM订阅密钥>"
翻译服务HTTPS测试
用curl或Postman直接调用APIM端点:
curl -X POST "https://<你的APIM实例名>.azure-api.net/translate?api-version=3.0&from=en&to=zh" \ -H "Ocp-Apim-Subscription-Key: <你的APIM订阅密钥>" \ -H "Content-Type: application/json" \ -d "[{\"Text\":\"Hello world\"}]"
如果测试失败,查看APIM的“测试”标签页中的后端响应详情,定位错误原因。
三、常见问题排查
- 请求未到达APIM:检查客户端是否使用了APIM的端点和订阅密钥,而非认知服务的原始端点/密钥;确认APIM的产品已发布,且订阅处于激活状态。
- WebSocket连接失败:检查APIM是否启用了WebSocket支持(默认启用),VNet配置是否允许APIM访问语音服务端点,CORS设置是否覆盖客户端域名。
- 策略冲突:检查自定义策略是否移除了
<websocket-upgrade>(WebSocket必需)或<set-backend-service>等关键逻辑,导致请求无法正确转发。 - 网络拦截:如果APIM部署在VNet中,需确保客户端IP在APIM的允许列表内,同时APIM能通过服务端点/私有链接访问认知服务。
内容的提问来源于stack exchange,提问作者vijay kumar
相关产品推荐
相关产品推荐

