直接调用火山引擎 ASR 语音识别服务,最快可在 5 分钟内获取结构化转写文本;使用前需先开通服务、获取 Access Key 和 Resource ID;既支持异步提交音频任务(URL 或本地文件),也支持通过 WebSocket 实现实时流式语音识别。

如果你想在项目中快速接入高准确率的语音转文字能力,直接调用火山引擎 ASR 服务通常是效率最高、落地最快的方案——无需自行训练模型,也不用搭建 GPU 集群,只要提交音频链接或进行流式上传,通常 5 分钟内即可获得结构化文本识别结果。
开通服务与获取凭证
登录火山引擎控制台 → 进入「智能语音」服务页面 → 点击「立即开通」语音识别(ASR)服务。企业实名认证为必选项;个人开发者虽然可以跳过资质审核,但每日调用额度会受到一定限制。
服务开通后,进入「Access Key管理」页面,创建一对 【X-Api-Access-Key】 和 【X-Api-App-Key】。这两个密钥会用于后续所有 API 请求的签名校验,务必妥善保管,不要硬编码到前端代码中。
随后在「语音识别」→「应用管理」中新建应用,按业务需求选择「录音文件识别标准版」或「大模型录音文件识别」,并记录系统分配的 【X-Api-Resource-Id】 值,例如 volc.bigasr.auc。不同识别服务对应的 Resource ID 不同,若填写错误,接口会返回 403 并拒绝访问。
提交音频任务(异步方式)
方法一:使用 Python 提交 MP3 远程链接
先准备一个可被公网访问的音频 URL(例如 OSS、七牛云、GitHub Raw 链接),音频格式需为 mp3/wav/flac,时长建议不要超过 6 小时。调用 submit 接口时,请求头中的 X-Api-Request-Id 为必填项,建议使用 uuid4 生成全局唯一 ID,否则在重试请求时,任务可能会被判定为重复提交。
方法二:本地文件直传(适合小体积音频文件)
构造 multipart/form-data 请求,将音频文件通过 file 字段上传,同时要确保 audio.format 参数与实际音频格式严格一致(例如 wav 不能写成 wave),否则接口会返回错误码 40000003。
轮询识别状态并获取结果
第一步:使用上一步返回的 task_id 调用 status 状态查询接口
请求地址:https://openspeech.bytedance.com/api/v3/auc/bigmodel/status
建议每 2 秒轮询一次,直到响应头中的 X-Api-Status-Code 为 20000000,且 body 返回结果中的 status 字段变为 success。
第二步:状态就绪后,立即调用 result 接口获取最终识别文本
请求地址:https://openspeech.bytedance.com/api/v3/auc/bigmodel/result
响应体为标准 JSON,核心识别内容位于 result.text 字段中;如果开启 show_utterances,还会返回带时间戳的分句片段数组,适合用于生成字幕、制作逐句高亮,或进行后续语义分析。
流式语音识别(实时场景)
该方式适用于会议系统、在线客服、语音助手等对低延迟有要求的实时语音转写场景,需要先建立 WebSocket 连接。
连接地址:wss://ai-gateway.vei.volces.com/v1/realtime?model=bigmodel
建立连接后,必须第一时间发送 transcription_session.update 事件,否则服务端不会处理后续发送的音频帧;同时,该事件中的 session.sample_rate 必须设置为 16000,否则语音识别准确率会明显下降。
音频数据应以 base64 编码的 PCM 16-bit 小端格式分块推送,建议每块长度控制在 200ms 左右(约 3200 字节)。分块过短会增加传输与处理开销,分块过长则会拉高首字返回延迟。
服务端会通过 conversation.item.input_audio_transcription.result 持续推送中间识别结果;当本轮转写结束时,会发送 conversation.item.input_audio_transcription.completed 事件作为完成标识。此时,text 字段中的内容就是最终确认的文本,可直接写入数据库,或用于触发后续业务逻辑。
