调整Google流式语音识别代码后无法接收文本的技术求助
问题分析与修复方案
我一眼就看出问题所在了——你已经正确定义了RecognitionConfig实例,但完全没把它关联到StreamingRecognitionConfig对象里!
问题根源
修改前的代码中,StreamingRecognitionConfig包含了完整的Config配置(编码、采样率、语言代码这些核心参数),但修改后你只设置了InterimResults = true,却漏掉了把定义好的config对象赋值给StreamingRecognitionConfig.Config属性。
Google流式语音识别API必须依赖这些核心配置来理解音频流的格式和识别规则,缺少这个配置的话,服务端无法正确处理你的请求,自然不会返回任何识别文本。
修复后的代码
只需要补上漏掉的Config = config赋值即可:
RecognitionConfig config = new RecognitionConfig(); config.Encoding = RecognitionConfig.Types.AudioEncoding.Linear16; config.SampleRateHertz = 32000; config.LanguageCode = "en"; await streamingCall.WriteAsync( new StreamingRecognizeRequest() { StreamingConfig = new StreamingRecognitionConfig() { Config = config, // 这行是你缺失的关键代码! InterimResults = true, } });
优化建议(可选)
如果想让代码结构更清晰,也可以把配置拆分得更彻底,避免嵌套过深:
// 定义基础识别配置 var recognitionConfig = new RecognitionConfig { Encoding = RecognitionConfig.Types.AudioEncoding.Linear16, SampleRateHertz = 32000, LanguageCode = "en" }; // 定义流式识别配置并关联基础配置 var streamingRecognitionConfig = new StreamingRecognitionConfig { Config = recognitionConfig, InterimResults = true }; // 发送请求 await streamingCall.WriteAsync(new StreamingRecognizeRequest { StreamingConfig = streamingRecognitionConfig });
这样不仅可读性更强,也能减少漏写属性的概率。
内容的提问来源于stack exchange,提问作者user9023292
相关产品推荐
相关产品推荐

