如何做一款能对话的数字人
目录
第一步 去以下网站申请API 的key
直接给你地址:
🎯 豆包语音控制台入口
https://console.volcengine.com/speech/app
打开后如果没登录会跳登录页,用你火山引擎账号登录即可。首次进入需要完成实名认证(个人用户微信/抖音扫脸即可)。
📍 进去之后的操作步骤
-
进入控制台后,默认落在 应用中心 → 应用管理 页面
-
点击 创建应用 按钮
-
填写:
• 应用名称:英文(如 my_digital_human)• 应用简介:随意
• 选择服务:勾选 ✅ 流式语音识别大模型(这是 ASR)+ ✅ 语音合成大模型(这是 TTS,顺手一起勾了省得再建)
-
点 确定 创建
🔑 创建后拿参数
在左侧 API 服务中心 → 点 豆包流式语音识别模型 2.0 → 页面拉到底部:
• APP ID:直接复制
• Access Token:点小眼睛图标显示后复制
这两个就是上一轮 StartVoiceChat 请求里 ASRConfig.ProviderParams 需要的 AppId 和 AccessToken。
TTS 的凭证在同一个应用下:左侧 API 服务中心 → 语音合成大模型 → 底部同样能拿到 APP ID 和 Access Token(TTS 还多一个 Cluster ID / ResourceId)。
💡 新版控制台如果界面和上面描述不一致,找顶部"新版/旧版"切换按钮,切到旧版操作流程和上面一致。
⚠️ Access Token 等同于密码,别截图发群、别硬编码到前端代码里。调试阶段直接用控制台看到的这个 Token 就行。
创建应用后系统会赠送 20 小时 ASR 免费试用额度,足够你跑通 MVP 。
拿到 APP ID 和 Access Token 后,把它们填到 StartVoiceChat 的 ASRConfig.ProviderParams 和 TTSConfig.ProviderParams 里就行。TTS 那边还需要一个 ResourceId,在语音合成大模型详情页的 “Cluster ID” 位置能看到(如 volc.service_type.10029)。
需要的话,下一步我可以帮你把拿到的这几个值填进完整的 StartVoiceChat 请求体里,你直接复制到 Postman/curl 就能发请求。
具体如何申请:
你已有的"API key"只是火山引擎账号级的访问密钥(AccessKey/SecretKey),用来给 StartVoiceChat 请求做 V4 签名鉴权。但要真正跑通这次调用,你还需要从控制台拿到5 类参数——下面按"调试阶段最小可跑通"的角度给你梳理清楚。
🎯 核心认知:StartVoiceChat 需要哪些参数
这是一个 POST 接口:https://rtc.volcengineapi.com?Action=StartVoiceChat&Version=2024-12-01
请求体必填五大块 :
AppId - 实时对话式 AI 应用的 AppId(不是 AI 音视频互动方案的 AppId!)
RoomId - RTC 房间 ID
TaskId - 任务 ID,同 AppId+RoomId 下唯一,建议 UUID
AgentConfig - 智能体配置(Bot 身份、欢迎语、听谁说话)
Config - ASR + LLM + TTS 三件套配置
其中 AppId 必须与生成 RTC 鉴权 Token 时用的 AppId 一致 ——这是新手最容易踩的坑。
📋 你需要在控制台获取的 5 类参数
- RTC 应用凭证(AppID + AppKey)
入口:火山引擎控制台 → 实时音视频 → 应用管理 → 创建应用
你会拿到:
• AppID:填到 StartVoiceChat 的 AppId 字段
• AppKey:用于服务端签发 RTC Token(调试阶段可以不用它,直接用控制台生成的临时 Token)
💡 vibe coding 调试阶段:直接在 RTC 控制台点"临时 Token",输入自定义 RoomId 和 UserId,点生成即可得到临时 Token 。这样你暂时不需要自己实现 Token 签发逻辑。
- 临时 Token(调试用)
入口:RTC 应用管理 → 你的应用 → 临时 Token
• 自定义 RoomId(如 my_demo_room)
• 自定义 UserId(如 my_demo_user)
• 生成后复制 Token 字符串
这个 Token 是客户端进房用的(也就是你的数字人前端进 RTC 房间用)。StartVoiceChat 接口本身不需要带这个 Token,但需要保证接口里的 AppId/RoomId 和 Token 签发时用的一致。
- ASR 应用参数
入口:豆包语音控制台 → 应用管理 → 创建应用 → 勾选"语音识别"
你会拿到:
• ASR AppId(如 9321)
• AccessToken(如 MOaOa*****HA4h5B)
• ApiResourceId:volc.seedasr.sauc.duration(固定值)
填到请求的 Config.ASRConfig.ProviderParams 里 :
“ASRConfig”: {
“Provider”: “volcano”,
“ProviderParams”: {
“Mode”: “bigmodel”,
“AppId”: “你的ASR应用ID”,
“AccessToken”: “你的ASR令牌”,
“ApiResourceId”: “volc.seedasr.sauc.duration”,
“StreamMode”: 2
}
}
- TTS 应用参数
入口:豆包语音控制台 → 应用管理 → 创建应用 → 勾选"语音合成"
你会拿到:
• TTS AppId(如 9411)
• Token(如 OaOws1)
• ResourceId:如 volc.service_type.10029
填到 Config.TTSConfig.ProviderParams :
“TTSConfig”: {
“Provider”: “volcano_bidirection”,
“ProviderParams”: {
“app”: {
“appid”: “你的TTS应用ID”,
“token”: “你的TTS令牌”
},
“audio”: {
“voice_type”: “zh_male_qingshuangnanda_mars_bigtts”,
“speech_rate”: 0
},
“ResourceId”: “volc.service_type.10029”
}
}
💡 voice_type 决定数字人声音。火山提供了几十种预设音色,调试阶段随便选一个,后续再换。
- 方舟 LLM 接入点(EndPointId 或 ModelName)
入口:火山方舟控制台 → 模型推理 → 创建推理接入点
你会拿到:
• EndPointId(如 epid****212):方舟接入点 ID
• 或使用 ModelName(如 doubao-seed-2-0-lite-260428)
填到 Config.LLMConfig :
“LLMConfig”: {
“Mode”: “ArkV3”,
“EndPointId”: “你的方舟接入点ID”,
“MaxTokens”: 1024,
“Temperature”: 0.1,
“SystemMessages”: [
“你是一个友好的 AI 助手,请用简洁的中文回答问题。”
]
}
⚠️ Mode 必须是 ArkV3(用火山方舟)或 CustomLLM(用自己的 LLM 代理)。如果你上一轮问的"加知识库",这里就要改成 CustomLLM + Url 指向你的 RAG 服务 。
🚀 最小可跑通的操作顺序
按这个顺序操作,半小时内能拿到第一次成功响应:
- 开通服务:控制台开通「实时音视频 RTC」+「豆包语音(ASR+TTS)」+「火山方舟」
- 创建 RTC 应用 → 拿到 AppID
- 创建豆包语音应用 → 同时勾选 ASR 和 TTS → 拿到两套 AppId/Token
- 创建方舟推理接入点 → 选 doubao-seed-2-0-lite-260428 这类模型 → 拿到 EndPointId
- 生成临时 Token:用自定义 RoomId(如 demo_room)+ UserId(如 demo_user)生成
- 服务端调用 StartVoiceChat:用你的 AccessKey/SecretKey 对请求做 V4 签名,发送上面的完整 JSON
- 客户端进房:用 AppID + 临时 Token + RoomId + UserId 进 RTC 房间,就能听到 Bot 说话了
🔐 关于"已有 API key"的正确用法
你的 AccessKey/SecretKey 不直接出现在 StartVoiceChat 的请求体里,而是用来给 HTTP 请求做 AWS V4 风格签名,放到 Authorization Header 中 。
⚠️ 千万别把 AccessKey/SecretKey 下发到前端!Token 签发也必须在服务端做。调试阶段用控制台临时 Token 没问题,但生产环境必须自己实现 Token 签发服务。
📝 完整请求体骨架(调试可直接复制改)
POST https://rtc.volcengineapi.com?Action=StartVoiceChat&Version=2024-12-01
Authorization: <V4签名>
{
“AppId”: “你的RTC应用AppId”,
“RoomId”: “demo_room”,
“TaskId”: “task-001”,
“AgentConfig”: {
“TargetUserId”: [“demo_user”],
“UserId”: “Bot_001”,
“WelcomeMessage”: “你好,我是你的 AI 助手”
},
“Config”: {
“ASRConfig”: {
“Provider”: “volcano”,
“ProviderParams”: {
“Mode”: “bigmodel”,
“AppId”: “你的ASR应用ID”,
“AccessToken”: “你的ASR令牌”,
“ApiResourceId”: “volc.seedasr.sauc.duration”,
“StreamMode”: 2
}
},
“LLMConfig”: {
“Mode”: “ArkV3”,
“EndPointId”: “你的方舟接入点ID”,
“MaxTokens”: 1024,
“Temperature”: 0.1,
“SystemMessages”: [“你是一个友好的 AI 助手”]
},
“TTSConfig”: {
“Provider”: “volcano_bidirection”,
“ProviderParams”: {
“app”: {
“appid”: “你的TTS应用ID”,
“token”: “你的TTS令牌”
},
“audio”: {
“voice_type”: “zh_male_qingshuangnanda_mars_bigtts”
},
“ResourceId”: “volc.service_type.10029”
}
}
}
}
🛠 vibe coding 友好建议
既然你是 vibe coding,强烈建议直接 clone 火山的官方 demo 改:
git clone https://github.com/volcengine/rtc-aigc-demo
这个 demo 已经把 V4 签名、Token 签发、StartVoiceChat 调用全封装好了,你只需要把从控制台拿到的 AppID、AppKey、ASR/TTS 凭证、方舟 EndPointId 填进配置文件就能跑 。比自己从零拼装签名省 80% 时间。
跑通之后,再考虑把你上一轮问的"知识库 RAG"通过 LLMConfig.Mode=CustomLLM 注入进来。
需要的话,下一步我可以帮你拆:如何在 demo 基础上把 LLMConfig 改成 CustomLLM 模式,接你自己的知识库代理服务?
第二步 写提示词
我需要做一个数字人网站
此过程中你可以去火山引擎和方舟的官网查看API文档来开发
一共三个页面
一个孔子 一个苏格拉底 一个二者都有且二者之间都能互相对话
现在先把苏格拉底的做出来,我这边提供视频和语音API接口,
然后点击开始对话的时候,人先说话,然后AI回答,AI一回复,视频就开始重复播放,
孔子的也是如此,我先不提供孔子的视频 后面补上,然后AI回复的人设和提示词你放在网页上可以自定义配置
人设参数在下面,
孔子和苏格拉底页面都要有,基本相同,
苏格拉底的视频地址:“C:\Users\Lenovo\Downloads\苏格拉底数字人.mp4”
第三个页面是真人 孔子 苏格拉底三者都需要能对话
数字人需要能够和人对话,我准备用下面这个路线来对话,我申请了API接口:
ark-d26002b3-d6fd-4d74-b4fd-234f296ae854-d99c4
资源id:apikey-20260902165041-2w9j4
StartVoiceChat 的 LLMConfig 提供了三个字段来控制大模型的人设和行为,这就是你的"提示词入口":
“LLMConfig”: {
“Mode”: “ArkV3”,
“EndPointId”: “epid****212”,
“MaxTokens”: 1024,
“Temperature”: 0.1,
“TopP”: 0.3,
“SystemMessages”: [
“## 人设\n你是一个全能的超级助手,具备强大的知识库、情感理解能力和解决问题的能力。你的目标是高效、专业、友好地帮助用户完成各类任务;\n\n## 约束\n始终主动、礼貌、有条理;\n回答准确但不冗长;\n不清楚的任务会主动澄清,不假设、不误导。”
],
“UserPrompts”: [
{ “Role”: “user”, “Content”: “你好” },
{ “Role”: “assistant”, “Content”: “有什么可以帮到你的?” }
],
“HistoryLength”: 3
}
三个核心字段的含义 :
• SystemMessages(String[]):系统提示词,定义角色、行为准则、输出格式。这是你注入人设、业务规则、回答约束的主入口
• UserPrompts(Object[]):用户提示词,注入示例对话来增强回复质量(推荐用这个,具有自动逐出机制,比旧的 UserMessages 更稳定)
然后这个路线过程中,如果需要在控制台做哪些操作缺哪些参数,你可以告诉我 我再去补充一下
你参考API开发文档:git clone https://github.com/volcengine/rtc-aigc-demo
直接用实时音视频的 StartVoiceChat 接口:
接口文档:https://volcengine.com/docs/56651/1404673
请求地址:
POST https://rtc.volcengineapi.com?Action=StartVoiceChat&Version=2024-12-01
请求体里的 Config 可以同时配置 ASRConfig、TTSConfig、LLMConfig,且官方文档的示例就是火山自家三家服务(Provider: volcano / volcano_bidirection / Mode: ArkV3)。
配套的 AI 音视频互动方案接入指南:https://volcengine.com/docs/6348/2137641
端到端实时语音大模型接入:https://www.volcengine.com/docs/6348/1902994
技术上你用docker 的轻量版来做,最好用python 来开发网站,便于我后面直接把docker部署到服务器
其他技术参数补充:
记得放你刚刚申请的key

更多推荐


所有评论(0)