<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>WebRTC on KnightLi的博客</title>
        <link>https://knightli.com/tags/webrtc/</link>
        <description>Recent content in WebRTC on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Thu, 11 Jun 2026 08:22:48 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/webrtc/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>OpenTalking 是什么？一个把 AI 数字人对话跑起来的开源框架</title>
        <link>https://knightli.com/2026/06/11/opentalking-realtime-digital-human-framework/</link>
        <pubDate>Thu, 11 Jun 2026 08:22:48 +0800</pubDate>
        
        <guid>https://knightli.com/2026/06/11/opentalking-realtime-digital-human-framework/</guid>
        <description>&lt;p&gt;OpenTalking 是 datascale-ai 开源的实时数字人对话编排框架。它要解决的不是“给一张图配个口型”这么单点的问题，而是把一个数字人对话产品里常见的链路串起来：前端交互、会话状态、LLM 回复、TTS 和音色选择、STT、字幕事件、打断控制、WebRTC 音视频播放，以及本地或远端数字人合成后端。&lt;/p&gt;
&lt;p&gt;所以看 OpenTalking 时，最好不要只把它理解成某个数字人模型的启动脚本。它更像一条数字人产线的工程骨架：模型可以换，语音服务可以换，推理后端可以本地也可以远端，前端则负责把人物、音色、模型连接状态和实时对话体验统一起来。&lt;/p&gt;
&lt;h2 id=&#34;它适合做什么&#34;&gt;它适合做什么
&lt;/h2&gt;&lt;p&gt;OpenTalking 适合三类需求。&lt;/p&gt;
&lt;p&gt;第一类是快速验证数字人对话产品。项目提供 &lt;code&gt;mock&lt;/code&gt; 模式，不需要先下载模型权重，也不需要部署视频推理后端，就能跑通 API、LLM、TTS、STT、WebRTC 和浏览器播放链路。数字人画面用静态帧占位，但对话、字幕、流式 TTS 和传输链路都可以先验证。&lt;/p&gt;
&lt;p&gt;第二类是消费级显卡上的单机实时渲染。项目支持通过本地后端接入 &lt;code&gt;quicktalk&lt;/code&gt;、&lt;code&gt;wav2lip&lt;/code&gt;、&lt;code&gt;musetalk&lt;/code&gt; 等模型，适合在 3090 / 4090 这类机器上做真实视频渲染、口型同步和自定义形象验证。&lt;/p&gt;
&lt;p&gt;第三类是高质量或私有化部署。对画质、多卡、远端 GPU/NPU、生产隔离有要求时，可以通过 OmniRT 接入 &lt;code&gt;flashtalk&lt;/code&gt;、&lt;code&gt;flashhead&lt;/code&gt; 等高质量模型，把编排层和推理层拆开部署。&lt;/p&gt;
&lt;h2 id=&#34;webui-的价值&#34;&gt;WebUI 的价值
&lt;/h2&gt;&lt;p&gt;OpenTalking 提供 Web 服务界面，用来管理数字人对话链路。你可以在界面里选择或新建数字人物，配置音色、LLM、TTS、STT 和数字人驱动模型，查看模型连接状态，并在同一页面里验证实时对话、字幕和音视频播放。&lt;/p&gt;
&lt;p&gt;这件事在工程上很重要。很多数字人 demo 看起来只是“模型能不能跑”，但真正做成产品时，还会遇到这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人物资产怎么管理；&lt;/li&gt;
&lt;li&gt;音色和 TTS provider 怎么切换；&lt;/li&gt;
&lt;li&gt;LLM、STT、TTS 的 key 和 base URL 怎么配置；&lt;/li&gt;
&lt;li&gt;模型后端是否在线；&lt;/li&gt;
&lt;li&gt;首帧延迟、打断、字幕和音画同步怎么观察；&lt;/li&gt;
&lt;li&gt;普通用户如何在浏览器里完成测试，而不是只让工程师看日志。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenTalking 的 WebUI 把这些入口放到一起，降低了从模型 demo 走向产品原型的摩擦。&lt;/p&gt;
&lt;h2 id=&#34;快速开始路线&#34;&gt;快速开始路线
&lt;/h2&gt;&lt;p&gt;第一次接触项目，建议先用 Mock 模式跑通完整链路。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;DIGITAL_HUMAN_HOME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/opt/digital_human
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DIGITAL_HUMAN_HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DIGITAL_HUMAN_HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/datascale-ai/opentalking.git &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; opentalking
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;UV_DEFAULT_INDEX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://pypi.tuna.tsinghua.edu.cn/simple
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv sync --extra dev --python 3.11
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; .venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;环境要求包括 Python 3.10+（推荐 3.11）、Node.js 18+ 和 FFmpeg。&lt;code&gt;.env&lt;/code&gt; 里至少要配置 LLM / TTS 相关项；如果使用 &lt;code&gt;edge&lt;/code&gt; TTS，则不需要 key。&lt;/p&gt;
&lt;p&gt;Mock 模式启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DIGITAL_HUMAN_HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/opentalking&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/start_unified.sh --mock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认前端地址是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:5173
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要改端口，可以指定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/start_unified.sh --mock --api-port &lt;span class=&#34;m&#34;&gt;8210&lt;/span&gt; --web-port &lt;span class=&#34;m&#34;&gt;5280&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这一步的目标不是追求画面效果，而是确认浏览器、API、LLM、TTS、STT、字幕事件和 WebRTC 传输都能连起来。链路打通后，再决定是否下载模型权重和部署推理后端。&lt;/p&gt;
&lt;h2 id=&#34;常用启动参数&#34;&gt;常用启动参数
&lt;/h2&gt;&lt;p&gt;项目推荐用 &lt;code&gt;scripts/start_unified.sh&lt;/code&gt; 作为统一入口。常用参数可以按用途理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--mock&lt;/code&gt;：使用内置 Mock，不需要模型权重或视频推理后端；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--backend &amp;lt;mock|local|omnirt|direct_ws&amp;gt;&lt;/code&gt;：指定推理后端；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--model &amp;lt;name&amp;gt;&lt;/code&gt;：指定模型，例如 &lt;code&gt;quicktalk&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--omnirt &amp;lt;url&amp;gt;&lt;/code&gt;：连接 OmniRT 推理服务；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--api-port &amp;lt;port&amp;gt;&lt;/code&gt;：指定 OpenTalking 后端端口；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--web-port &amp;lt;port&amp;gt;&lt;/code&gt;：指定 WebUI 端口；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--host &amp;lt;host&amp;gt;&lt;/code&gt;：指定 WebUI 监听地址；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--env &amp;lt;file&amp;gt;&lt;/code&gt;：指定 env 文件位置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如，本地 QuickTalk 路线：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/start_unified.sh --backend &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; --model quicktalk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;远端 OmniRT 路线：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/start_unified.sh &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --backend omnirt &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --model flashtalk &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --api-port &lt;span class=&#34;m&#34;&gt;8210&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --web-port &lt;span class=&#34;m&#34;&gt;5280&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --omnirt http://&amp;lt;gpu-server&amp;gt;:9000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;四条部署路线怎么选&#34;&gt;四条部署路线怎么选
&lt;/h2&gt;&lt;p&gt;OpenTalking 的 README 把部署路线拆得比较清楚。更实用的理解方式是：先问自己要不要真实视频渲染，再问推理要不要和 Web 服务放在同一台机器上。&lt;/p&gt;
&lt;p&gt;如果只是验证链路，用 &lt;code&gt;mock&lt;/code&gt;。它不需要 GPU，不需要模型权重，适合第一天把系统跑起来。&lt;/p&gt;
&lt;p&gt;如果有消费级显卡，希望在单机上做真实数字人实时渲染，可以从 &lt;code&gt;quicktalk&lt;/code&gt; 开始。项目给出的参考是 3090 / 4090 级别机器，适合验证自定义形象和实时视频效果。&lt;/p&gt;
&lt;p&gt;如果只需要较轻的口型同步和自定义形象验证，可以看 &lt;code&gt;wav2lip&lt;/code&gt;。它的部署压力低一些，更适合作为轻量路线。&lt;/p&gt;
&lt;p&gt;如果要走全本地私有化音频链路，可以组合 &lt;code&gt;sensevoice&lt;/code&gt;、&lt;code&gt;local_cosyvoice&lt;/code&gt; 和 &lt;code&gt;quicktalk&lt;/code&gt;，把 STT 和 TTS 也切到本地模型。这条路线更重，但适合不希望依赖云端语音服务的场景。&lt;/p&gt;
&lt;p&gt;如果追求高质量画面、多卡或生产隔离，就把推理层放到远端，通过 OmniRT 接入 &lt;code&gt;flashtalk&lt;/code&gt; 或 &lt;code&gt;flashhead&lt;/code&gt;。这时 OpenTalking 更像编排层，负责会话、前端、服务配置和推理 endpoint 调用。&lt;/p&gt;
&lt;h2 id=&#34;模型支持和资源预期&#34;&gt;模型支持和资源预期
&lt;/h2&gt;&lt;p&gt;项目当前支持的模型路线大致可以这样看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mock&lt;/code&gt;：静态帧占位，不需要 GPU；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quicktalk&lt;/code&gt;：template video + audio，本地 CUDA GPU，推荐 3090 / 4090；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wav2lip&lt;/code&gt;：参考图或 frames + audio，适合 &lt;code&gt;local&lt;/code&gt; 或 &lt;code&gt;omnirt&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;musetalk&lt;/code&gt;：full frames + audio，显存需求更高；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;soulx-flashtalk-14b&lt;/code&gt;：portrait + audio，适合通过 OmniRT 部署在多卡 GPU / NPU 上；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;soulx-flashhead-1.3b&lt;/code&gt;：portrait + audio，同样更偏高质量远端推理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;README 里还给了一个消费级显卡参考：&lt;code&gt;quicktalk&lt;/code&gt; 在 RTX 3090 上使用 template video + audio，输出 720x900 / 25fps，显存占用约 3.8 GiB，生成吞吐约 35 fps。这个数据适合作为部署前的粗略预期，但实际体验还会受首帧构建、缓存、分辨率、音频模型和机器环境影响。&lt;/p&gt;
&lt;h2 id=&#34;配置上要注意什么&#34;&gt;配置上要注意什么
&lt;/h2&gt;&lt;p&gt;OpenTalking 的配置项比较多，尤其是 LLM、STT、TTS 不再共用一个 fallback key。即使你用的是同一把 DashScope key，也要分别写到对应的环境变量里，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_LLM_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://dashscope.aliyuncs.com/compatible-mode/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_LLM_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sk-your-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_LLM_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;qwen-flash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_STT_DEFAULT_PROVIDER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;dashscope
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_STT_DASHSCOPE_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;paraformer-realtime-v2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_STT_DASHSCOPE_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sk-your-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_TTS_DASHSCOPE_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sk-your-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_TTS_DEFAULT_PROVIDER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;edge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_TTS_EDGE_VOICE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;zh-CN-XiaoxiaoNeural
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这套配置方式看起来繁琐，但好处是边界清楚：LLM、语音识别、语音合成和音色复刻可以分别替换 provider，不必把所有能力绑死在一个服务上。&lt;/p&gt;
&lt;h2 id=&#34;工程结构&#34;&gt;工程结构
&lt;/h2&gt;&lt;p&gt;OpenTalking 的代码结构也体现了它的定位。核心编排层在 &lt;code&gt;opentalking/&lt;/code&gt; 里，包含协议、provider、模型适配、avatar、voice、media、pipeline 和 runtime；&lt;code&gt;apps/&lt;/code&gt; 里有 FastAPI 服务、统一启动模式、React 前端和 CLI；&lt;code&gt;configs/&lt;/code&gt; 放 YAML 配置；&lt;code&gt;docker/&lt;/code&gt; 和 &lt;code&gt;docker-compose.yml&lt;/code&gt; 用于容器化部署；&lt;code&gt;scripts/&lt;/code&gt; 提供统一启动和 quickstart 工具；&lt;code&gt;docs/&lt;/code&gt; 则补充模型、部署和配置说明。&lt;/p&gt;
&lt;p&gt;这种结构说明项目不是单模型仓库，而是在做“数字人产品链路”的拆分：前端、后端、模型推理、语音、资产和运行时各有边界。&lt;/p&gt;
&lt;h2 id=&#34;适合谁关注&#34;&gt;适合谁关注
&lt;/h2&gt;&lt;p&gt;OpenTalking 适合这些人关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想做实时数字人对话产品原型；&lt;/li&gt;
&lt;li&gt;需要把 LLM、TTS、STT、WebRTC 和数字人模型串成完整链路；&lt;/li&gt;
&lt;li&gt;想先用 Mock 验证系统，再逐步替换真实模型；&lt;/li&gt;
&lt;li&gt;有消费级 GPU，想本地跑 QuickTalk / Wav2Lip / MuseTalk；&lt;/li&gt;
&lt;li&gt;需要私有化或远端多卡部署，把推理和 Web 编排拆开；&lt;/li&gt;
&lt;li&gt;希望用 WebUI 管理数字人物、音色、模型和对话验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不太适合只想“一键生成一段数字人视频”的用户。OpenTalking 更偏工程框架，真正用好它需要理解模型权重、音频服务、推理后端、端口、环境变量和浏览器实时传输。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;OpenTalking 的价值在于把实时数字人对话拆成一套可以逐步替换、逐步部署的工程链路。你可以从 &lt;code&gt;mock&lt;/code&gt; 开始，只验证 API、LLM、TTS、STT 和 WebRTC；也可以换成本地 &lt;code&gt;quicktalk&lt;/code&gt; 做真实视频渲染；更高质量或生产场景下，再通过 OmniRT 把推理放到远端 GPU / NPU。&lt;/p&gt;
&lt;p&gt;如果你正在做数字人应用、直播互动、虚拟主播、陪伴产品或企业内私有化数字人验证，OpenTalking 值得研究。它的门槛不低，但它处理的是数字人产品从 demo 到可部署系统之间最容易散掉的那一段工程链路。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;a class=&#34;link&#34; href=&#34;https://github.com/datascale-ai/opentalking&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;datascale-ai/opentalking GitHub 仓库&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://datascale-ai.github.io/opentalking/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenTalking 文档站&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
