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

SpeechRecognition报错无法识别PCM WAV等格式音频,求解决方案

解决音频转文本格式不兼容问题

问题分析

报错ValueError: Audio file could not be read as PCM WAV, AIFF/AIFF-C, or Native FLAC说明你的音频文件并非speech_recognition支持的无压缩格式——即使后缀是.wav,也可能是MP3、ADPCM等压缩编码封装的,或者参数不符合工具要求。

具体解决方案

1. 确认音频真实编码

用ffmpeg工具查看文件详细信息,执行命令:

ffmpeg -i example.wav

查看输出里的Audio行,确认编码格式(比如是否为pcm_s16le这类无压缩PCM编码)。

2. 转换为标准兼容格式

用ffmpeg将音频转成Google语音识别最适配的16位、16kHz、单声道PCM WAV,执行命令:

ffmpeg -i example.wav -acodec pcm_s16le -ar 16000 -ac 1 output.wav

该命令会强制输出无压缩的标准WAV格式,完全符合speech_recognition的要求。

3. 修正代码冗余问题

原代码中同时调用了r.record(source)和r.listen(source),record已经读取了整个音频文件,后续listen会无数据可读取,属于无效操作。修正后的代码如下:

import speech_recognition as sr

r = sr.Recognizer()
with sr.AudioFile("output.wav") as source:
    # 读取整个音频文件内容
    audio = r.record(source)

try:
    s = r.recognize_google(audio)
    print("Text: " + s)
except Exception as e:
    print("Exception: " + str(e))

为什么之前的转换工具无效?

wavio和scipy.io.wavfile仅负责读取/写入WAV文件,不会自动处理压缩编码的转换,它们只是按原编码格式操作,无法将压缩WAV转为无压缩PCM格式;而ffmpeg是专业音频处理工具,能彻底解决格式兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:50:15