简介:本文详细介绍如何使用Python调用百度API实现语音识别,涵盖环境准备、API密钥获取、核心代码实现及错误处理,帮助开发者快速构建语音转文本功能。
语音识别技术已成为人机交互的重要入口,百度语音识别API凭借其高准确率(中文识别准确率超97%)、低延迟(平均响应时间<1秒)和丰富的功能(支持中英文混合、方言识别等),成为开发者构建智能语音应用的优选方案。通过Python调用该API,开发者可快速实现语音转文本功能,适用于智能客服、会议记录、语音导航等场景。
pip install baidu-aip # 百度AI开放平台官方SDKpip install requests # 用于HTTP请求(可选,替代SDK时使用)
from aip import AipSpeech# 初始化客户端APP_ID = '你的APP_ID'API_KEY = '你的API_KEY'SECRET_KEY = '你的SECRET_KEY'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)# 读取音频文件(支持wav/pcm/amr/mp3格式)def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()# 语音识别def recognize_speech(audio_path):try:# 参数说明:# format: 音频格式(wav/pcm/amr/mp3)# rate: 采样率(16000/8000)# channel: 声道数(1/2)# cuid: 设备ID(可选)result = client.asr(get_file_content(audio_path),'wav', # 示例使用wav格式16000,{'dev_pid': 1537} # 1537表示中文普通话(带标点))if result['err_no'] == 0:return result['result'][0]else:return f"识别失败: {result['err_msg']}"except Exception as e:return f"请求异常: {str(e)}"# 示例调用if __name__ == '__main__':audio_file = 'test.wav'text = recognize_speech(audio_file)print("识别结果:", text)
import requestsimport base64import hashlibimport timeimport jsondef get_access_token(api_key, secret_key):url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={api_key}&client_secret={secret_key}"response = requests.get(url)return response.json()['access_token']def recognize_via_rest(audio_path, access_token):with open(audio_path, 'rb') as f:audio_data = base64.b64encode(f.read()).decode('utf-8')url = "https://vop.baidu.com/server_api"headers = {'Content-Type': 'application/json'}data = {"format": "wav","rate": 16000,"channel": 1,"cuid": "your_device_id","token": access_token,"speech": audio_data,"len": len(audio_data)}response = requests.post(url, headers=headers, data=json.dumps(data))return response.json()# 示例调用access_token = get_access_token('API_KEY', 'SECRET_KEY')result = recognize_via_rest('test.wav', access_token)print(result)
| 参数 | 说明 | 推荐值 |
|---|---|---|
| format | 音频格式 | wav/pcm |
| rate | 采样率 | 16000(中文) |
| dev_pid | 识别模型 | 1537(中文带标点) |
| lan | 语言 | zh(中文) |
| cuid | 设备ID | 唯一字符串 |
📌 模型选择指南:
- 1537:中文普通话(带标点)
- 1737:英文
- 1837:粤语
- 1936:四川话
| 错误码 | 含义 | 解决方案 |
|---|---|---|
| 110 | 认证失败 | 检查API_KEY/SECRET_KEY |
| 111 | 配额不足 | 升级服务套餐 |
| 112 | 请求超时 | 检查网络连接 |
| 113 | 音频过长 | 分段处理(单次≤60秒) |
client.asr_async()实现非阻塞调用
import pyaudiofrom aip import AipSpeechclient = AipSpeech(...) # 初始化客户端def realtime_recognition():CHUNK = 1024FORMAT = pyaudio.paInt16CHANNELS = 1RATE = 16000p = pyaudio.PyAudio()stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)buffer = b''while True:data = stream.read(CHUNK)buffer += data# 每0.5秒发送一次请求(需根据实际调整)if len(buffer) >= RATE * 0.5 * 2: # 0.5秒的16位音频数据try:result = client.asr(buffer, 'wav', RATE)if result['err_no'] == 0 and result['result']:print("识别结果:", result['result'][0])buffer = b''except Exception as e:print("错误:", e)# 需添加停止逻辑和资源释放代码
def mixed_language_recognition(audio_path):# 中英文混合模型(dev_pid=1737为纯英文,需测试混合效果)# 实际混合识别建议:# 1. 分段检测语言# 2. 分别调用不同模型# 3. 合并结果pass
通过Python调用百度语音识别API,开发者可快速构建高精度的语音转文本功能。本文详细介绍了从环境准备到高级应用的完整流程,关键要点包括:
未来,随着语音技术的演进,可关注以下方向:
建议开发者持续关注百度AI开放平台文档,获取最新功能更新和技术支持。