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

Azure虚拟机中Microsoft Cognitive Speech麦克风识别报传输错误求助

解决Azure VM中认知服务语音识别麦克风传输错误的方案

先还原你的问题场景:

尝试在Azure虚拟机(Azure VM)中运行Microsoft Cognitive Speech服务,代码执行到麦克风识别环节时出现错误。相同代码在本地桌面可正常运行,仅在虚拟机中报错:
--- Start speech recognition using microphone with ShortPhrase mode in en-US language ----
--- Error received by OnConversationErrorHandler() ---
Error code: -2147023728
Error text: Transport error

我之前处理过类似的Azure VM语音服务传输问题,结合你的情况,给你几个针对性的排查和修复方向:

  • 检查VM的网络出站规则
    Azure VM的网络安全组(NSG)很可能限制了语音服务所需的访问路径。你需要确保VM允许出站访问认知服务的相关端点:

    • 确认NSG出站规则开放HTTPS(443端口),允许访问*.cognitiveservices.azure.com域名
    • 如果用的是区域语音服务,还要单独放行对应区域的特定端点(比如eastus.api.cognitive.microsoft.com这类)
      可以在Azure门户的VM网络设置里调整NSG规则,或者在VM内用PowerShell测试连通性:
    Test-NetConnection eastus.api.cognitive.microsoft.com -Port 443
    
  • 验证VM的麦克风设备配置
    本地正常但VM报错,大概率是音频设备的重定向或识别出了问题:

    • 先在Azure门户的VM配置页,找到“音频”选项确认已启用麦克风重定向
    • 如果用RDP连接VM,要在RDP客户端的“本地资源”里勾选“麦克风”,确保本地麦克风能被VM识别
      也可以在VM的设备管理器里检查音频输入设备状态,用系统自带的录音工具测试是否能正常采集声音
  • 配置语音SDK的代理(如果有代理环境)
    如果你的VM处于企业代理网络下,语音SDK可能无法自动识别代理设置:

    • 可以在代码里显式添加代理配置,比如C#代码示例:
    var speechConfig = SpeechConfig.FromSubscription("你的订阅密钥", "你的区域");
    speechConfig.SetProxy("代理服务器IP", 代理端口, "代理用户名", "代理密码");
    
    • 或者在VM的系统环境变量中设置HTTP_PROXY和HTTPS_PROXY,让SDK自动读取代理信息
  • 更新语音SDK到最新版本
    旧版本的语音SDK可能存在Azure VM环境的兼容性bug,建议更新到最新稳定版。比如在NuGet中升级Microsoft.CognitiveServices.Speech包,或者重新安装SDK依赖

  • 检查认知服务资源的访问限制
    确认你的语音服务资源没有设置IP白名单限制,或者已经把Azure VM的公网IP加入允许列表。在Azure门户的语音资源“网络”设置里,可临时设置为“允许所有网络访问”来测试,确认问题后再收紧权限


内容的提问来源于stack exchange,提问作者Karthick Trichy Chandrasekaran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:46:50