Azure JavaScript SDK SpeechRecognizer在Android设备无法工作求助
Android端Azure Speech Service语音转文本无输入问题排查
针对你遇到的桌面正常、Android网页端麦克风激活但无输入的问题,常见原因和解决方式如下:
1. 权限请求触发时机错误
Android移动端浏览器(如Chrome)要求麦克风权限必须通过用户主动交互(比如按钮点击)触发,不能在页面加载、定时器等非用户操作场景中请求。如果你的startSpeechRecognition是自动调用的,会导致权限看似激活但实际音频流未正确获取。
解决:将启动识别的逻辑绑定到用户点击事件,比如:
document.getElementById('start-btn').addEventListener('click', () => { startSpeechRecognition('zh-CN'); });
2. 默认麦克风音频流兼容性问题
部分Android设备的默认麦克风配置可能和Azure SDK的fromDefaultMicrophoneInput存在兼容性问题,导致音频流无法正常传输到服务端。
解决:手动获取MediaStream并传入SDK,替代默认麦克风配置:
async function startSpeechRecognition(language) { // 先手动获取麦克风权限和流 const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); const speechConfig = SpeechSDK.SpeechConfig.fromSubscription(key_xxx, sReg_yyy); speechConfig.speechRecognitionLanguage = language; // 用手动获取的流创建audioConfig const audioConfig = SpeechSDK.AudioConfig.fromStreamInput(stream); var myRecognizer = new SpeechSDK.SpeechRecognizer(speechConfig, audioConfig); // 原有的事件绑定逻辑不变 myRecognizer.recognized = (recognizer, event) => { switch (event.result.reason) { case SpeechSDK.ResultReason.NoMatch: break; case SpeechSDK.ResultReason.RecognizedSpeech: onRecognizedText(speechConfig.speechRecognitionLanguage, event.result.text); break; case SpeechSDK.ResultReason.Canceled: const cancellation = SpeechSDK.CancellationDetails.fromResult(event.result); console.log(`CANCELED: Reason=${cancellation.reason}`); if (cancellation.reason == SpeechSDK.CancellationReason.Error) { console.log(`CANCELED: ErrorCode=${cancellation.errorCode}`); console.log(`CANCELED: ErrorDetails=${cancellation.errorDetails}`); } recognizer.stopContinuousRecognitionAsync(); break; } }; myRecognizer.startContinuousRecognitionAsync(() => { }, e => console.error(e)); }
3. 未在HTTPS环境运行
Azure Speech SDK要求网页必须部署在HTTPS环境下(localhost调试除外),Android移动端对HTTP站点的媒体权限和网络传输有严格限制,即使显示麦克风激活,音频数据也无法正常上传到服务端。
解决:将网页部署到HTTPS服务器,或使用ngrok等工具在本地调试时生成HTTPS代理地址。
4. SDK版本兼容性问题
旧版本的Azure Speech JavaScript SDK可能存在Android浏览器的兼容性bug,建议升级到最新稳定版本。
内容的提问来源于stack exchange,提问作者Ondrej Uzovic
相关产品推荐
相关产品推荐

