语音智能体的教程大多停在「调 SDK」层面:一行代码接 STT、一行接 TTS,跑通了但黑盒依旧。TEN Framework(TEN-framework/ten-framework,GitHub 一万一千星、长期占据语音方向 Trending)走的是另一条路:把 STT、LLM、TTS、VAD、打断检测全部做成可插拔扩展,用可视化画布 TMAN Designer 拼装、看着连线调参数——你的语音智能体是一张可以打开来看、可以逐个部件替换的图。官方示例覆盖链式语音助手、语音到语音实时助手、说话人分离、唇形同步数字人、SIP 电话、甚至 ESP32 硬件端。本篇按官方 README 的 localhost 快速开始路径,从备齐四把密钥到跑通默认语音助手,再在 TMAN Designer 里换模型、加打断、调提示词,走完一条可复现的路径。
先理解:扩展图与 TMAN Designer
在 TEN 里,一个语音智能体是一张扩展图(graph):实时音频流经 RTC 通道进来,交给 VAD 与 STT 扩展转成文本,LLM 扩展生成回复,TTS 扩展合成语音回流播放——每个环节是一个独立组件,接口标准化,可以整体替换:Deepgram 换成其他转写服务、ElevenLabs 换成其他合成服务,图的结构不变。官方的 voice-assistant 示例就是这条链式结构;voice-assistant-realtime 示例则改用语音到语音的实时模型,跳过文本中间层。
TMAN Designer 是这套框架的运维面板,跑在 localhost:49483:画布上能看到扩展图的真实拓扑,右键任意扩展开属性面板改密钥与参数,保存即生效;Agent Example UI 在 localhost:3000,是给你说话的界面。改配置、换供应商、调提示词都在这个面板完成,不用碰代码。
许可证与版本先看仓库。TEN 仓库许可证文件非标准单一条款(部分组件另有约定),商用前通读 LICENSE;框架迭代快,本篇按 2026 年 10 月官方 README 书写,端口与目录名以你克隆版本的文档为准。
Step 1:备齐四把密钥
# Agora 控制台创建项目,拿 App ID 与 App Certificate
# —— 负责实时音频传输(RTC 通道)
# OpenAI API Key —— LLM 推理
# Deepgram API Key —— 语音转写(STT,官方要求必配)
# ElevenLabs API Key —— 语音合成(TTS)
这四家是官方默认示例的组合:Agora 承担浏览器与服务端之间的实时音频流,Deepgram 做转写,OpenAI 做推理,ElevenLabs 做合成。注册流程各家都是控制台自助,新账号普遍有免费额度——跑通演示够用,压测前先把各家的计费规则看清楚。
密钥安全两句话。.env 文件只留在本机,绝不提交进 git;Agora Certificate 泄露等于把你的 RTC 通道送给别人刷时长。四家全部按用量计费,长会话与高频压测是烧钱大户,先设用量告警再开跑。
Step 2:起容器,跑通默认示例
git clone https://github.com/TEN-framework/ten-framework.git
cd ten-framework/ai_agents
cp ./.env.example ./.env
# 编辑 .env,填入五项:
# AGORA_APP_ID=...
# AGORA_APP_CERTIFICATE=...
# DEEPGRAM_API_KEY=...
# OPENAI_API_KEY=...
# ELEVENLABS_TTS_KEY=...
docker compose up -d
docker exec -it ten_agent_dev bash
# 容器内继续:
cd agents/examples/voice-assistant # 链式语音助手
# 或 cd agents/examples/voice-assistant-realtime # 语音到语音
task install # 装 TEN、Python、前端依赖并构建 Go API 服务,约 5-8 分钟
task run
# 浏览器打开 http://localhost:3000 即语音助手界面
task install 只在初回启动、改依赖或改 Go 源码后需要重跑;纯 Python 层的改动不用重新安装。起来之后在 localhost:3000 授权麦克风,说一句话——听到回应就说明 RTC 通道、转写、推理、合成整条链路都通了。出问题时先看四把密钥是否都填了:官方示例对 Deepgram 与 OpenAI 是硬依赖,缺一个起不来。
Step 3:TMAN Designer 里换配置
# 浏览器打开 http://localhost:49483(TMAN Designer)
# 1) 找到 STT 扩展,右键 properties,
# 确认 Deepgram Key 已注入
# 2) LLM 扩展的 properties 里确认 OpenAI Key
# 与所用模型
# 3) TTS 扩展的 properties 里确认 ElevenLabs Key
# 与音色
# 4) 保存后回到 localhost:3000 验证效果
属性面板改的就是每个扩展的运行参数,保存即生效,不用重启容器。这是 TEN 与「一行 SDK 调用」框架的本质差异:你可以看着图调它。建议初回就把三个扩展的属性各打开看一遍——字段名、默认值、可选供应商一目了然,后面换东西心里有底。
换非默认供应商要逐步验证。属性面板里把 ASR 或 TTS 换成其他厂商时,参数字段各不相同;每次只换一段,改完立刻说一句话验证转写与合成是否正常,别一次性把三个扩展全换掉再排查。
Step 4:换模型与调人设
# LLM 扩展属性面板:
# model —— 换推理模型(小模型延迟低,
# 强模型回答好,按场景选)
# prompt —— 系统提示词,决定人设与语气
#
# 提示词示例(客服人设):
# 「你是售后客服,回答保持三句以内,
# 涉及退款政策时引用知识库结论,
# 不确定就引导用户转人工。」
语音场景的提示词与文本场景不同:回复会被念出来,长句、列表、代码块都是灾难。写人设时明确「控制在几句以内、口语化、可以打断」,再按业务补充边界。扩展图的持久化在 property.json 里,动手改图前先 git 提交一版——画布上的误操作能随时回退。
Step 5:加扩展——VAD、打断与记忆
# 在 TMAN Designer 的扩展市场按需挂载:
# VAD —— 静音检测,用户没说话
# 就不调 STT,省成本
# Turn Detection —— 判断用户是否说完,
# 支持打断(barge-in)
# Memory —— 多轮对话记忆
# 挂上扩展、连线、保存,回 UI 逐个验证
没有打断检测的语音助手是灾难现场:用户插话它照播不误,体验直接崩掉。VAD 加 Turn Detection 是官方示例的标准组合——前者在本地判断有没有人说话,后者判断这句话说完了没有。多轮记忆扩展挂上后,助手才能记住前文,否则每轮都是失忆重启。
每加一个扩展都是一条延迟与计费链路。VAD 在本地跑能省 STT 调用,但扩展叠太多会拖高首响延迟。官方默认组合已经比较优,扩展逐个加、每加一个测一次端到端延迟,别一口气堆满。
Step 6:部署与进阶路线
# 官方 Self-Hosting 文档:
# Docker 部署 / 其他云服务部署两条路线
# 进阶示例(都在 agents/examples/ 下):
# speaker-diarization 说话人分离
# 唇形同步数字人 对接 Trulience、HeyGen、
# Tavus 等厂商
# SIP call 接真实电话线路
# ESP32-S3 Korvo V3 跑到硬件开发板上
对外的部署要点不在框架而在链路:扩展图跑通只是开始,真实延迟取决于你的服务器区域、供应商区域与用户网络三者的组合,上线前按目标用户分布实测。官方 Self-Hosting 文档覆盖 Docker 与主流云的部署路径,生产环境建议把 .env 换成密钥管理服务注入。延迟预算可以按段拆:RTC 传输几十毫秒、转写几百毫秒、推理几百到上千毫秒、合成几百毫秒——哪段超标就治哪段,逐段测量比笼统「感觉慢」有效得多。
进阶示例的选择也有讲究:说话人分离适合会议纪要场景;唇形同步数字人适合虚拟主播与展厅;SIP 电话把助手接进呼叫中心;ESP32 硬件端则是离线硬件原型的入口。这些示例与 voice-assistant 共享同一套扩展机制,先在主示例上把调参手感练出来,再迁移过去会顺很多。
文档时效提醒。本篇命令与端口按 2026 年 10 月官方 README 书写;克隆后以仓库内当前 README 为准,示例目录名与端口号如有调整,照新文档执行。
常见问题 FAQ
Q:和 LiveKit Agents 什么区别?TEN 是可视化扩展图加官方调参面板,适合看着图理解与调试;LiveKit 是代码框架,适合要精细控制每行逻辑的团队。想看懂内部结构选 TEN,想写代码掌控一切选代码框架。
Q:不用 Agora 行不行?官方示例的实时音频通道默认走 Agora,也提供 WebSocket 连接形态的示例;替换传输层前先确认所选示例对 RTC 的依赖程度,以官方示例文档为准。
Q:跑一天大概多少钱?四家全部按量计费,演示与开发强度下通常在几美元量级;真正的成本风险是压测与长时间挂机,用量告警一定要先配。
Q:中文场景能跑吗?能。转写与合成取决于所选供应商的中文能力(Deepgram 与 ElevenLabs 均有中文模型与音色),LLM 提示词写中文即可;换中文音色后记得重测延迟与断句表现。