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

Cloud Speech-to-Text API C++客户端库语音活动检测与超时处理问题

问题:Google语音识别流式转录静音超时处理异常

场景与需求

  • 触发唤醒词后,将麦克风数据流式发送至Google语音识别服务
  • 核心目标:激活后若用户立即沉默,停止向服务发送静音数据,计划通过VoiceActivityTimeout实现该逻辑

当前修改代码(基于streaming_transcribe_singlethread.cc)

private:
    Handler(google::cloud::CompletionQueue cq, ParseResult args)
        : cq_(std::move(cq)), file_(args.path, std::ios::binary) {
      auto& streaming_config = *request_.mutable_streaming_config();
      *streaming_config.mutable_config() = std::move(args.config);

    // 自定义修改部分
    streaming_config.set_single_utterance(true);
    streaming_config.set_enable_voice_activity_events(true);
    auto& timeout = *streaming_config.mutable_voice_activity_timeout();
    auto& duration = *timeout.mutable_speech_start_timeout();
    duration.set_seconds(1);
    // 修改结束

预期与实际结果

  • 预期:测试10秒静音文件时,服务在1秒内检测到无语音活动,终止转录流程
  • 实际:程序连续发送3次64k数据后,输出错误:
    ./streaming_transcribe_singlethread silence.wav 
    Sending 64k bytes.
    Sending 64k bytes.
    Sending 64k bytes.
    Error in transcribe stream: CANCELLED: The operation was cancelled.
    
  • 调整speech_start_timeout的秒数,结果无变化

求助点

  • 不熟悉Protobuf中VoiceActivityTimeout的工作机制与正确实现方式
  • 找不到相关设置与超时处理的示例,需要指出当前代码的错误,并解释正确的配置逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:32:41