简介:本文详细解析微信语音识别API的调用流程,涵盖接口概述、授权机制、请求参数、错误处理及实战代码示例,助力开发者高效集成语音转文字功能。
微信语音识别API是微信开放平台提供的核心功能之一,支持将用户上传的语音文件(如AMR、MP3、WAV等格式)实时转换为文本内容。该API广泛应用于智能客服、语音指令控制、会议记录等场景,其核心优势在于高准确率、低延迟及与微信生态的无缝衔接。
微信语音识别API分为同步识别与异步识别两种模式:
当前最新版本为v2.0,相较于旧版,新增了多语言支持、噪声抑制及行业术语优化功能。
调用API前需完成以下授权步骤:
语音识别,需通过功能描述审核。所有微信API调用均需携带access_token,其有效期为2小时,需定时刷新。获取代码如下:
import requestsdef get_access_token(app_id, app_secret):url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={app_id}&secret={app_secret}"response = requests.get(url)return response.json().get('access_token')
步骤1:上传语音文件至微信服务器(需先调用media/upload接口)。
步骤2:调用同步识别接口:
def sync_speech_recognition(access_token, media_id):url = f"https://api.weixin.qq.com/cgi-bin/media/audio/speech_recognition?access_token={access_token}"data = {"media_id": media_id,"format": "amr", # 支持amr/mp3/wav"lang": "zh_CN" # 多语言可选:en_US, ja_JP等}response = requests.post(url, json=data)return response.json()
返回结果:
{"errcode": 0,"errmsg": "ok","result": "今天天气真好"}
异步识别需指定回调URL,微信服务器在处理完成后会POST结果至该地址:
def async_speech_recognition(access_token, media_id, callback_url):url = f"https://api.weixin.qq.com/cgi-bin/media/audio/async_speech_recognition?access_token={access_token}"data = {"media_id": media_id,"callback_url": callback_url,"lang": "zh_CN"}response = requests.post(url, json=data)return response.json() # 返回task_id用于查询状态
回调数据格式:
{"task_id": "123456","result": "会议记录已转写完成","status": "success"}
| 参数名 | 必填 | 说明 |
|---|---|---|
media_id |
是 | 通过media/upload获取的语音文件ID |
format |
否 | 默认amr,推荐使用低码率格式以减少传输时间 |
lang |
否 | 默认zh_CN,支持中英文混合识别(需设置lang=en_US&mixed=true) |
user_dict |
否 | 自定义词典(如行业术语),提升专业词汇识别率 |
pydub库裁剪静音段,减少无效音频:
from pydub import AudioSegmentsound = AudioSegment.from_file("input.amr")quiet_part = sound[:500] # 裁剪前500ms静音quiet_part.export("output.amr", format="amr")
errcode=42001(token过期)和45009(接口调用频繁)进行自动重试。"enable_noise_reduction": true。user_dict参数传入JSON格式词典。微信API默认限制为2000次/分钟,超出后返回45009错误。建议:
def verify_signature(token, timestamp, nonce, signature):tmp_str = sorted([token, timestamp, nonce])tmp_str = ''.join(tmp_str)hashcode = hashlib.sha1(tmp_str.encode('utf-8')).hexdigest()return hashcode == signature
场景需求:将用户通过微信语音留言转写为文本,自动分类并分配工单。
实现步骤:
media/upload获取media_id。代码片段:
@app.route('/wechat_callback', methods=['POST'])def wechat_callback():data = request.jsonif verify_signature(...): # 签名校验task_result = data['result']category = nlp_classify(task_result) # 调用NLP分类create_ticket(category, task_result)return jsonify({"status": "processed"})
微信语音识别API通过灵活的同步/异步模式、多语言支持及自定义词典功能,为开发者提供了高效的语音转文字解决方案。未来,随着AI技术的演进,预计将支持更复杂的场景(如实时多语种翻译、情感分析)。开发者需持续关注微信开放平台文档更新,优化调用策略以应对高并发场景。
进阶建议: