You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用microsoft-cognitiveservices-speech-sdk出现HTTP协议不支持错误如何解决

报错根因说明

你碰到的ERR_INVALID_PROTOCOL报错本质和你的站点使用HTTP还是HTTPS没有直接关系,是近期microsoft-cognitiveservices-speech-sdk部分小版本的内部端点拼接逻辑存在bug,会随机把微软语音服务的HTTPS接口拼接成HTTP协议,请求发出去后微软服务端不接受HTTP请求,返回的错误被SDK包装成了500状态码,所以你在两种环境下都能复现问题。

排查思路
  • 先确认当前安装的SDK版本:执行npm list microsoft-cognitiveservices-speech-sdk查看版本号,如果是1.33.0及以上版本,90%以上概率是SDK本身的bug导致。
  • 打印验证SDK自动生成的端点:在初始化speechConfig后添加日志console.log(speechConfig.speechSynthesisEndpoint),复现报错时看日志里的端点是不是http:开头。
  • 排除本地代理干扰:关闭所有浏览器代理、系统代理后再次测试,排除代理把HTTPS请求转成HTTP的可能性。
解决方案

方案1:回退到稳定SDK版本(最省心)

直接把package.json中microsoft-cognitiveservices-speech-sdk的版本固定为1.32.1,删除node_modules和package-lock.json/yarn.lock后重新安装依赖即可,这个版本不存在端点拼接的bug。

方案2:强制指定HTTPS端点(不降级也可以解决)

如果不想降级SDK版本,就不要用fromSubscription方法初始化配置,改用fromEndpoint方法手动指定HTTPS协议的服务端点,直接规避SDK的拼接逻辑bug,修改后的初始化代码如下:

import * as Azure from "microsoft-cognitiveservices-speech-sdk";

// 手动拼接HTTPS端点,替换为你的服务区域
const speechSynthesisEndpoint = `https://${SPEECH_REGION}.tts.speech.microsoft.com/cognitiveservices/v1`;
const speechConfig = Azure.SpeechConfig.fromEndpoint(speechSynthesisEndpoint, SPEECH_KEY);
speechConfig.speechSynthesisOutputFormat = Azure.SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3;

// 后续的合成器初始化、SSML、调用逻辑全部保持不变
const synthesizer = new Azure.SpeechSynthesizer(speechConfig);

本地开发额外适配

如果本地用HTTP开发服务器调试时还有偶发异常,可以给浏览器添加启动参数--allow-insecure-localhost临时放行本地的跨协议请求,生产环境无需额外配置。

内容的提问来源于stack exchange,提问作者bbullis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:15:05