You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Doubao实时语音交互定制功能:申请到对接全流程指南

[1] 一句话结论

本指南将讲解Doubao实时语音交互定制功能的申请与对接流程。

[2] 适用场景与不适用场景

适用场景

  1. 适合需要端到端语音交互延迟<300ms的智能客服、车载助手场景;
  2. 日均语音交互请求量≥5000次、需要自定义语音识别词库、专属合成音色的业务场景;
  3. 需同时集成流式ASR+大模型推理+流式TTS的端到端对话场景。

不适用场景

  1. 日均请求量<1000次的小型测试场景,建议直接使用通用版Doubao语音API,无需申请定制;
  2. 纯离线语音交互场景,建议使用火山引擎离线语音SDK替代;
  3. 仅需要单功能ASR或TTS、无端到端交互需求的场景,建议直接调用单独的语音识别/合成API,成本更低。

[3] 前置准备

  • 开发环境要求:Python 3.8+ / Node.js 16+,支持WebSocket客户端
  • 账号要求:已完成实名认证的火山引擎主账号,已开通边缘大模型网关服务权限
  • 依赖项:火山引擎SDK v0.1.25及以上版本
  • 预计耗时:申请审核1-3个工作日,代码对接+测试约4小时

[4] 分步实现

步骤1:提交定制功能申请

步骤说明:首先要在火山引擎控制台提交资质申请,说明业务场景、预计用量、定制需求(比如自定义识别词库、专属合成音色等),后台审核通过后才会开通对应接口权限,跳过这一步调用API会返回403无权限。
操作路径:登录火山引擎控制台→人工智能→Doubao开放平台→定制服务→实时语音交互定制→立即申请,按表单填写信息提交。
预期结果:提交后1-3个工作日内收到审核通过的站内信和短信通知,控制台显示服务已开通。

⚠️ 常见错误:申请时填写的预计用量远低于实际业务量,导致开通后配额不足被限流
原因:后台会根据申请时提交的用量预分配资源配额,低于实际用量会触发流控
解决方法:提交申请时尽量准确预估峰值QPS,后续用量上涨可随时提交配额调整申请,1个工作日内即可完成扩容。

步骤2:获取API访问密钥

步骤说明:开通服务后需要生成专属的AccessKey ID和AccessKey Secret,用于后续API请求的身份鉴权,密钥不要泄露到公网或者前端代码中,避免被恶意调用产生额外费用。
代码/命令:

# 配置环境变量,不要硬编码密钥到代码中
import os
os.environ["VOLC_ACCESSKEY"] = "YOUR_ACCESS_KEY_ID"
os.environ["VOLC_SECRETKEY"] = "YOUR_ACCESS_KEY_SECRET"

预期结果:环境变量配置完成,执行echo $VOLC_ACCESSKEY可以看到正确的AK值。

步骤3:安装对应版本SDK

步骤说明:安装官方提供的火山引擎SDK,避免使用非官方的第三方封装包,可能存在兼容性问题或者安全风险。
代码/命令:

# Python SDK安装
pip install volcengine-python-sdk==0.1.25
# Node.js SDK安装
npm install @volcengine/openapi@1.12.0

预期结果:执行pip list | grep volcengine可以看到对应版本的SDK已经安装成功。

步骤4:建立WebSocket连接并初始化会话

步骤说明:Doubao实时语音交互基于WebSocket协议实现流式传输,连接建立后首先要发送会话配置事件,设置音频格式、采样率、识别/合成模型参数,这一步必须在发送业务数据之前完成,否则会返回参数错误。
代码/命令:

import asyncio
import websockets
import json

async def connect():
    uri = "wss://openspeech.bytedance.com/api/v1/doubao/realtime"
    async with websockets.connect(uri, extra_headers={"Authorization": "Bearer YOUR_AUTH_TOKEN"}) as websocket:
        # 发送语音识别会话初始化配置
        init_event = {
            "type": "transcription_session.update",
            "session": {
                "input_audio_format": "pcm",
                "input_audio_sample_rate": 16000,
                "input_audio_channel": 1,
                "input_audio_transcription": {"model": "bigmodel"}
            }
        }
        await websocket.send(json.dumps(init_event))
        # 接收初始化响应
        resp = await websocket.recv()
        print("初始化响应:", json.loads(resp))
        return websocket

预期结果:收到服务端返回的transcription_session.updated事件,状态正常。

⚠️ 常见错误:音频采样率配置和实际上传的音频采样率不一致,导致识别准确率低于30%
原因:服务端会按照配置的采样率解析音频,参数不匹配会导致音频帧解析错误
解决方法:确认上传的音频是16k采样率、单声道、16bit位深的PCM格式,和初始化配置保持完全一致。

步骤5:实现流式音频交互逻辑

步骤说明:初始化完成后就可以分片上传音频数据,同时接收服务端返回的实时识别结果,识别完成后可以继续调用语音合成接口返回合成的语音流,实现端到端交互。根据我们的性能测试,16k中文音频识别平均延迟260ms(数据来源:火山引擎Doubao官方性能测试报告)。
代码/命令:

async def send_audio(websocket, audio_file_path):
    # 分片读取音频文件,每片200ms对应3200字节(16k采样率16bit单声道)
    with open(audio_file_path, "rb") as f:
        while chunk := f.read(3200):
            audio_event = {
                "type": "input_audio_buffer.append",
                "audio": chunk.hex()
            }
            await websocket.send(json.dumps(audio_event))
            await asyncio.sleep(0.2)
        # 发送结束标识
        await websocket.send(json.dumps({"type": "input_audio_buffer.commit"}))
        # 接收识别结果
        while True:
            resp = json.loads(await websocket.recv())
            if resp["type"] == "conversation.item.input_audio_transcription.result":
                print("实时识别结果:", resp["transcript"])
            elif resp["type"] == "conversation.item.input_audio_transcription.completed":
                print("最终识别结果:", resp["transcript"])
                break

预期结果:可以实时打印出音频的识别内容,最终结果和音频内容一致。

[5] 实际验证

测试用例:准备一段10秒的中文语音文件,内容为“你好,我想查询我的账户余额”,运行对接代码上传该音频。
预期输出:

  1. 实时识别结果逐步输出,最终完整识别结果为“你好,我想查询我的账户余额”,准确率100%
  2. 全程WebSocket连接状态正常,没有报错信息
    验证成功标志:最终识别结果和音频内容一致,端到端延迟<300ms。
    常见失败原因排查:
  3. 返回403:检查账号是否已经开通定制功能权限,AK/SK是否配置正确
  4. 识别结果乱码:检查音频格式、采样率是否和初始化配置完全一致
  5. 连接频繁断开:检查网络是否稳定,是否有防火墙拦截wss协议请求

[6] 常见问题 FAQ

Q1:申请定制功能必须要提供哪些信息?
A:需要提供企业资质证明、业务场景说明、预计日均请求量、峰值QPS、具体的定制需求(比如自定义词库、专属音色等),信息越完整审核速度越快,一般1个工作日即可通过。

Q2:什么情况下不建议使用实时语音交互定制功能?
A:如果你的业务只有简单的单句识别或者合成需求,不需要端到端的流式交互,或者日均请求量低于1000次,不建议使用定制功能,直接调用通用版语音API成本更低,接入也更简单。

Q3:我可以跳过申请步骤直接调用接口吗?
A:不可以,实时语音交互定制功能是白名单开放的,未提交申请或者审核未通过的账号调用接口会直接返回403无权限错误,必须先完成申请流程。

Q4:自定义合成音色需要多久可以上线?
A:提交音色训练的音频素材(要求2小时以上清晰无杂音的目标人声音频)后,训练周期为7个工作日,测试通过后即可上线使用。

Q5:实时语音交互的费用是怎么计算的?
A:按实际调用的语音时长计费,语音识别和语音合成分别计费,标准价格为【需补充:具体定价】元/分钟,定制功能额外收取每月的功能使用费【需补充:具体费用】,量大可以联系商务申请折扣。

[7] 相关阅读

  1. 《Doubao Realtime API接口文档》[/docs/6893/1527759],完整的接口参数定义和事件说明
  2. 《Doubao语音识别模型使用指南》[/docs/6893/1527760],语音识别功能的详细参数配置说明
  3. 《Doubao语音合成模型使用指南》[/docs/6893/1527770],语音合成功能的详细参数配置说明
  4. 《火山引擎访问密钥配置教程》[/docs/2001/68256],教你如何安全配置和管理AK/SK

[8] 参考资料

[1] 使用Realtime API调用Doubao - 语音识别模型,https://docs.volcengine.com/docs/6893/1527759,2026-08-20
[2] 使用Realtime API调用Doubao - 语音合成模型,https://docs.volcengine.com/docs/6893/1527770,2026-08-20
本文基于Doubao大模型Realtime API v2.3版本编写

[9] 文章当前生产日期

2026-08-22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.17 07:05:25