Google Speech to Text API识别长音频返回00:00、转写为空问题咨询
Google Speech to Text 长音频识别返回0时长、空转写结果排查方案
按问题出现概率从高到低依次排查:
- 核对调用的API接口类型
Google STT 同步识别接口Recognize有硬限制:单条音频最长支持60秒。超过1分钟的音频调用该接口时,会直接触发元数据解析失败,返回预估时长00:00、空转写结果,该问题和音频格式无关。
时长超过1分钟的音频必须使用异步长音频识别接口LongRunningRecognize,针对存放在GCS的音频直接传入对象URI调用即可,该接口最长支持480分钟(8小时)的音频识别,完全覆盖40分钟音频的使用场景。 - 核对音频编码参数与API配置的匹配度
不要仅通过文件后缀判断音频格式,需通过ffprobe工具读取音频的真实编码、采样率、位深参数,和API请求中的配置逐字段对齐,不要依赖API的自动格式检测——自动检测对长音频的元数据容错率极低:- 转码为WAV格式时,需确认是16bit位深的线性PCM编码,API中配置
encoding=LINEAR16,采样率参数和文件实际采样率一致(语音识别场景常用16000Hz) - 转码为FLAC格式时,需确认是标准无损FLAC编码,API中配置
encoding=FLAC - 原始M4A格式如果为AAC编码,API中需配置
encoding=MP4A
- 转码为WAV格式时,需确认是16bit位深的线性PCM编码,API中配置
- 核对GCS对象权限与上传完整性
确认调用API使用的服务账号拥有目标GCS对象的storage.objects.get权限,长音频异步识别过程中API会分块拉取文件流,权限不足时会出现仅能读取文件头部短片段、无法拉取完整文件的问题,外在表现就是几十秒的短片段可正常识别、10分钟以上长片段识别失败。
同时对比本地文件和GCS存储对象的MD5值,确认文件上传过程没有出现截断、分片错误,文件大小完全一致。 - 修复音频文件元数据异常
部分转码工具导出长音频时,会将时长、编码等核心元数据块写在文件尾部(M4A格式的moov atom默认在文件尾),API拉取流时如果没有读到尾部元数据,就无法解析正确时长。可通过ffmpeg无损修复元数据,将元数据块移到文件头部,不会损失音质:
修复完成后重新上传GCS再发起识别请求即可。ffmpeg -i 本地原音频路径 -c copy -movflags faststart 修复后音频输出路径
内容的提问来源于stack exchange,提问作者Ciel
相关产品推荐
相关产品推荐

