调用Google Speech-to-Text API识别WebRTC生成WAV文件返回空响应
谷歌Speech-to-Text调用返回空响应解决方案
核心原因
你调用接口返回空响应的核心问题是配置的音频编码参数与实际音频格式不匹配。
具体问题与修正方案
- 编码参数配置错误:你使用的音频是WAV格式,对应编码应设置为
LINEAR16,但你现有配置填写的是OGG_OPUS,接口无法按照错误的编码规则解码音频,因此返回空结果。谷歌官方示例工具会自动解析音频文件头匹配对应编码,因此可以正常识别。 - 可选参数校验:你可以提前校验本地WAV文件的实际参数,避免其余参数不符的问题:
- 确认音频采样率确实为48000Hz
- 确认音频声道数为2,若实际为单声道可直接删除
audio_channel_count与enable_separate_recognition_per_channel配置项
- 音频读取校验:确认读取音频文件时使用二进制只读模式(
rb),避免读取的音频内容缺失或格式错误。
修正后的配置代码
audio = speech.RecognitionAudio(content=content) config = speech.RecognitionConfig( encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16, sample_rate_hertz=48000, language_code="es-US", audio_channel_count=2, enable_separate_recognition_per_channel=True, use_enhanced=True, model="command_and_search" )
额外排查方案
如果修正编码后仍返回空结果,可先将enable_separate_recognition_per_channel设置为False测试,排除多通道识别配置适配问题;也可临时替换为default模型测试,排除特定模型的适配问题。
内容的提问来源于stack exchange,提问作者Ramon Zuniga
相关产品推荐
相关产品推荐

