Google Cloud Speech-to-Text处理OGG、MP3音频无识别输出怎么办
长音频语音转文字返回空结果的修复方案
具体修复操作
- 修正ffmpeg转码的参数错配
现有转码命令存在参数误用:-ar是音频采样率指定参数,-r是视频流帧率参数,转纯音频文件时加-r没有任何作用;同时命令将音频采样率设为12000Hz,但识别配置中填写的采样率是16000Hz,参数不匹配会导致服务解码时无法正确解析音频流,直接返回空结果。
适配语音识别服务的正确转码命令如下:# 生成符合OGG_OPUS编码要求的文件 ffmpeg -y -i audio.wav -ar 16000 -c:a libopus -b:a 32k audio.ogg # 生成MP3格式文件 ffmpeg -y -i audio.wav -ar 16000 -b:a 32k audio.mp3 # 生成符合AMR编码要求的文件 ffmpeg -y -i audio.wav -ar 8000 -c:a libamr_nb audio.amr - 严格匹配识别配置与实际文件属性
之前生成的OGG文件如果没有显式指定libopus编码器,ffmpeg默认输出的是OGG Vorbis编码,即使配置中填写OGG_OPUS,也会因为编码流不匹配导致识别失败。转码时必须显式指定对应编码器,确保文件实际编码和配置中的encoding参数完全对应。
注意:长时语音识别接口不会自动探测音频编码格式,不要通过注释encoding参数的方式让服务自动适配MP3文件——这种场景下服务会因为找不到明确的编码标识,直接判定为无效音频,不会输出任何识别结果。如果服务不支持MP3编码的识别,优先选用OGG_OPUS格式转码,压缩率和识别兼容性都远优于MP3。 - 统一采样率参数校验
长时识别接口对采样率的一致性校验精度高于短音频接口,只要实际文件采样率和配置中填写的sample_rate_hertz数值不一致,就会直接跳过解码流程,不返回任何识别文本。转码完成后可以用ffprobe audio.ogg命令核对文件实际采样率,确保和配置值完全一致。
内容的提问来源于stack exchange,提问作者Vedant Jumle
相关产品推荐
相关产品推荐

