讯飞听见开放平台API接入教程与开发指南
写一个把录音转成文字的脚本,理论上不算多复杂,但真到自己动手去调讯飞听见的API时,很多人都会撞上同一个问题:密钥填了,没反应;WebSocket连了,被断开;音频传了,返回空结果。根本不知道是哪一步出了岔子。其实这件事儿的链条很清晰,从注册账号到拿到识别结果,只需要跨过几道小关卡。

注册账号并完成实名认证
你得先有个讯飞开放平台的账号。直接去搜“讯飞听见开放平台”,用手机号注册就行。注册完了别忙着看文档,先点右上角的头像,找到“实名认证”,按提示上传身份证、人脸识别。这个环节
跳过就真的不行
提交认证之后通常五分钟就通过了,页面会自动跳回控制台。要是等超过十分钟状态还没变绿,刷新一把页面,或者重新登录一次。
创建应用并获取三组核心凭证
进到控制台以后,找到“我的应用”,点“创建新应用”。有个细节必须注意:
应用名字必须用英文或者英文加数字
meeting_transcribe_v1。带中文、空格或特殊字符?那后面调用API时一定会给你返回401 Unauthorized,别问我怎么知道的。创建之后跳到应用详情页,左边菜单栏找到“语音听写”或“实时语音转写”点开通。开通成功以后,页面右侧会显示出三组核心凭证:
AppID:一串18位数字
API Key:32位字母数字混合
APISecret:同样32位字母数字混合
这三项必须一次性完整复制,少一个字符都通不过鉴权。建议临时开个记事本,一行一条做好标注,别直接写进代码里——万一写错了还得重新去后台翻。
配置Python开发环境与依赖
确认一下你本地Python版本是不是3.8或者更高,然后执行:
pip install websocket-client requests pydub
这里面pydub的作用是音频格式转换。讯飞那边只接受16kHz采样率、16bit、单声道的PCM或者WA V,你手里的MP3或者手机录的语音大概率不满足。这一步千万别省,否则数据帧发过去就被服务器直接拒掉了。
如果你用VS Code,请确认终端当前路径是不是项目的根目录,而不是桌面或C盘根目录。路径弄错的话运行时就报ModuleNotFoundError,很难排查。
生成带签名的WebSocket鉴权URL
讯飞不接受裸连,你得用API Key和APISecret按照固定算法生成一个临时授权地址。下面是一个Python可运行的片段:
先算当前时间戳(必须是秒级整数,不能带小数)。然后api_key + 当前时间戳拼成签名原文。用HMAC-SHA256算一遍哈希,结果再做一次Base64编码。最后把这个编码值拼进URL模板:wss://rtasr.xfyun.cn/v1/ws?appid=你的AppID&ts=时间戳&signa=签名
容易踩的三个坑:时间戳不能是浮点数;signa参数要的是Base64编码后的字符串,不是原始哈希值;URL写wss://,别写成ws://——写错了连接会被立即断开。
发送音频帧并接收识别结果
两种办法。
办法一:用官方SDK,新手首选。下载讯飞开放平台的Python SDK压缩包,解压后进sample/rtasr目录,把app_id、api_key、api_secret替换成你的,再把测试音频路径改成WA V文件路径,直接跑python demo.py。
办法二:手写WebSocket客户端,适合调试时看清楚每一步。建立连接后先发一个启动帧(JSON格式,指定语言类型、音频格式、是否返回标点等),然后循环读取WA V文件,每帧1280字节调用send()发过去,最后一帧发结束帧。在on_message回调里提取data.result字段,那就是识别结果。
最后提醒一句:音频文件必须单声道。双声道WA V直接导致结果为空。如果你不确定,可以用Audacity打开音频,点Tracks→Stereo Track to Mono,一键转换。