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

Twilio Media Streams+Google Speech-to-Text Python转录失败求助

排查Twilio Media Streams + Google Speech-to-Text Python转录无输出问题

关键排查点

1. 音频格式解析是否匹配

  • Twilio推送的是audio/x-mulaw(8kHz单声道)格式音频,需确认Python端处理逻辑:
    • 对收到的base64编码音频块执行base64.b64decode()解码,再传入Google Speech-to-Text
    • Google API配置需明确指定编码和采样率:
      config = speech.RecognitionConfig(
          encoding=speech.RecognitionConfig.AudioEncoding.MULAW,
          sample_rate_hertz=8000,
          language_code="en-US"  # 匹配实际通话语言
      )
      streaming_config = speech.StreamingRecognitionConfig(config=config, interim_results=True)
      

2. 流式识别会话管理是否正确

  • 对比JavaScript版本的会话逻辑:
    • 收到Twilio的start事件时,初始化Google Speech-to-Text的流式识别会话
    • 每个media事件触发时,将解码后的音频块封装成StreamingRecognizeRequest并发送
    • 收到stop事件时,主动结束流式会话,确保API返回最终转录结果

3. WebSocket连接配置是否合规

  • Twilio Media Streams依赖WebSocket传输音频,需检查:
    • Python服务器的WebSocket库(如flask-sock、websockets)是否正确配置,能正常接收Twilio的连接请求
    • 处理Twilio初始POST请求时,返回正确的XML响应以启动流:
      <Response>
        <Start>
          <Stream url="wss://your-server-domain/ws-endpoint"/>
        </Start>
        <Say>Go ahead, I'm listening.</Say>
      </Response>
      
    • 确认WebSocket连接建立后,未遗漏media事件的监听,确保所有音频块都被捕获

4. 错误与日志排查

  • 在Python代码中添加细粒度日志:记录WebSocket事件类型、音频块大小、Google API请求/响应状态
  • 验证Google服务账号密钥是否正确加载,API配额是否充足,无权限或限流问题
  • 检查是否有未捕获的异常:比如音频解码失败、流式会话中断等,这些异常可能未暴露但导致转录终止

5. 音频块传输时序是否一致

  • 确保Python按Twilio推送的顺序发送音频块给Google API,无丢包或乱序情况
  • 确认每个音频块都被正确封装到StreamingRecognizeRequest的audio_content字段中,格式与JS版本完全对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:20:23