百度AI语音识别SDK需先在开放平台创建应用获取APP_ID、API_KEY、SECRET_KEY三元组,安装pip install baidu-aip,初始化AipSpeech(APP_ID, API_KEY, SECRET_KEY);音频须为wav/pcm/amr/mp3/m4a(CBR)、8k或16k采样率、单声道;asr调用需传二进制数据及format、rate、channel参数,推荐dev_pid=1537;错误码如3301(质量差)、282003(超时长)需针对性处理。

百度AI语音识别SDK的Python安装与认证配置
必须先在百度AI开放平台创建应用,获取 APP_ID、API_KEY、SECRET_KEY,缺一不可。SDK不支持纯Token鉴权,必须用这三元组初始化客户端。
- 安装官方SDK:
pip install baidu-aip(注意不是aip或baidu-api) - 初始化时必须显式传入三个参数,顺序不能错:
AipSpeech(APP_ID, API_KEY, SECRET_KEY) - 如果提示
Authentication failed,大概率是SECRET_KEY复制时多了空格,或应用未开通「语音识别」服务(控制台需手动开启)
上传音频前必须满足的格式与编码要求
百度AI语音识别对输入音频极其敏感,不符合规范会直接返回 110(参数错误)或 282002(音频格式不支持),不是模型问题,是预检失败。
- 支持格式仅限:
wav、pcm、amr、mp3、m4a(注意:不是所有MP3都行,必须是CBR编码,VBR会失败) - 采样率必须为
8000或16000,其他值(如44100)会被拒绝 - 声道数必须为单声道(
1),双声道文件需提前用pydub或ffmpeg转换:AudioSegment.from_file("in.mp3").set_channels(1) - 中文识别推荐用
16000采样率 +pcm格式,识别率明显高于MP3
调用 asr 方法时的关键参数组合
asr 不是“传文件路径就完事”,必须读取二进制内容并明确指定格式、采样率、声道数,否则默认按8k单声道PCM解析,极易错判。
- 正确做法:用
open(file_path, "rb").read()获取原始字节,不要用os.path或字符串路径直接传 - 必填参数:
format(小写,如"wav")rate(整数,如16000)channel(必须是1) - 可选但强烈建议加:
dev_pid=1537(中文普通话),不设可能走默认英文模型 - 示例片段:
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) with open("audio.wav", "rb") as fp: audio_data = fp.read() result = client.asr(audio_data, "wav", 16000, {"dev_pid": 1537}) if "result" in result: print(result["result"][0])
处理常见错误码与超时重试逻辑
百度接口返回的是JSON结构体,result 字段只在成功时存在;失败时只有 err_no 和 err_msg,必须判断再取值。
立即学习“Python免费学习笔记(深入)”;
-
err_no = 3301:音频质量差(静音过长、信噪比低),不是SDK问题,需前端降噪或截取有效片段 -
err_no = 282003:音频时长超过60秒,需切片(每片≤59秒,且避免在词中间切断) - 网络不稳定时可能抛
requests.exceptions.ReadTimeout,应在外层加try/except并重试(最多2次,带指数退避) - 单次请求最大音频大小为
10MB,大文件务必先检查:os.path.getsize(file_path) <= 10 <em> 1024 </em> 1024
百度的语音识别链路里,认证、格式、参数三者只要一个没对齐,就会卡在最外层报错,而不是返回“识别不准”。实际调试时,优先确认 err_no 值,再查文档对应原因,别急着调模型参数。


















