一个面向“本地数字人直播间联调”的仓库。
你可以用它完成三类事情:
- 在本机快速跑起一个“像直播间”的控制台页面
- 演示脚本生成、弹幕处理、人工回复、手动播报、复盘报告
- 逐步接入真实边界:AIGCPanel、飞书 Webhook、BarrageGrab / 外部弹幕源
如果你想要的是:
- 先看一个能跑的直播间演示
- 再一步步接到真实数字人
- 最后能处理弹幕、播报指定内容、触发投诉告警
那这份 README 就是按这个顺序写的。
跑起来之后,浏览器里会有一个本地页面,默认地址是:
http://127.0.0.1:8765
页面里可以看到:
- 数字人舞台区
- 当前商品直播脚本
- 实时弹幕流
- 当前播报内容
- 人工回复弹幕入口
- AIGCPanel / 飞书 / 弹幕源状态
- 直播复盘生成入口
如果你想一眼看明白全流程,顺序就是这 8 步:
- 准备 Python 运行环境
- 复制本地配置文件
- 启动本地 bridge
- 先跑“纯本地演示模式”
- 确认手动播报、人工回复弹幕都正常
- 配置飞书 Webhook
- 配置并验证 AIGCPanel 真人音色链路
- 接入真实弹幕源
你可以先只做前 4 步,5 分钟内看到页面。
优先按 Windows + PowerShell 使用。
这个仓库里很多示例命令默认就是 Windows 写法。
建议 Python 3.10+。
检查是否可用:
python --version如果系统里没有 python 命令,请先安装 Python,再重新打开 PowerShell。
如果你要接 BarrageGrab / WebSocket 弹幕源,需要安装:
pip install websocket-client如果你只看本地演示,不接真实弹幕源,这一步可以先跳过。
如果你要真人音色、真实数字人链路,需要先安装 AIGCPanel。
安装与制作流程可以看:
- 官方网站: https://aigcpanel.com/
- 官方下载页: https://aigcpanel.com/zh/download
- 官方 Windows 安装教程: https://aigcpanel.com/zh/document/69
- 官方声音克隆步骤: https://aigcpanel.com/zh/document/8
- 官方声音合成步骤: https://aigcpanel.com/zh/document/9
- 官方视频合成步骤: https://aigcpanel.com/zh/document/10
- 官方数字人直播说明: https://aigcpanel.com/zh/document/32
- 官方数字人直播推流配置: https://aigcpanel.com/zh/document/40
- 官方开源仓库: https://github.com/modstart-lib/aigcpanel
- P0-AIGCPanel安装与数字人制作.md
注意:
如果你是刚重装 AIGCPanel,或者换了电脑,原来的音色克隆和数字人模板不一定还在。
想得到“原来的真人声音效果”,你至少要在 AIGCPanel 里确认这 3 样东西已经存在:
- 可用的 TTS / 声音克隆模型
- 已完成的声音克隆记录
- 可用的数字人视频模板
缺任意一项,页面虽然还能跑,但不会真的回放你原来的真人音色。
这是最短路径,不需要先接飞书,也不需要先接 AIGCPanel。
cd stremshowtimeCopy-Item config\live-bridge.example.json config\live-bridge.json说明:
config/live-bridge.example.json是模板config/live-bridge.json是你本机实际使用的配置config/live-bridge.json已被.gitignore忽略,不会提交到仓库
python scripts/live_bridge.py --load-demo你会看到类似输出:
Live studio bridge is running at http://127.0.0.1:8765
Open the URL above in a browser to view the livestream console.
访问:
http://127.0.0.1:8765
这时你应该已经能看到:
- 控制台页面能打开
- 商品脚本已经生成
- 页面右侧能看到演示弹幕
- 当前播报内容会变化
如果你只做到这里,说明项目已经“跑起来了”。
打开页面后,建议你按这个顺序看:
这里会显示:
- 当前直播间标题
- 当前商品
- 当前主播
- 当前会话状态
这里是“数字人舞台”。
默认情况下:
- 没接 AIGCPanel 时,它会显示本地素材和播报状态
- 接上 AIGCPanel 且有真实返回媒体时,会优先播放真实音频或视频
这里会显示:
- 进入 bridge 的弹幕
- 每条弹幕的分类
- 生成的回复
- “引用回复”按钮
这里有 4 个最重要的表单:
- 重建本场直播
- 手动注入弹幕
- 指定播报内容
- 人工回复弹幕
这里有 2 组核心动作:
- AIGCPanel:
Ping、提交当前播报、查询任务、取消任务 - 飞书 / 复盘:
发送飞书测试、生成本场复盘
这一步非常重要,因为它是后面接真实链路前最容易自测的部分。
在“指定播报内容”表单里输入:
- 播报人:例如
主播小桑 - 播报内容:例如
欢迎来到直播间,今天我们主推桑葚汁
点击:
立即播报这段话
你应该能看到:
- “当前播报”区域文字更新
- 回复队列里新增一条手动播报
- 页面舞台进入“正在播报”的视觉状态
在“手动注入弹幕”里输入:
- 用户昵称:例如
新观众 - 弹幕内容:例如
多少钱?
点击:
发送到桥
你应该能看到:
- 右侧弹幕流新增一条弹幕
- 系统根据分类规则生成回复
- 当前播报内容切到这条回复
你可以有两种方式回复:
- 直接在“人工回复弹幕”表单里自己填
- 点击右侧弹幕卡片里的“引用回复”,自动带入用户和原始弹幕
然后填写:
- 回复分类:默认
MANUAL - 回复内容:例如
库存还在,现在拍 1 号链接就可以
点击:
回复这条弹幕
你应该能看到:
- 当前播报切到你的人工回复
- 弹幕流里出现一条人工回复记录
- 回复队列新增一条记录
如果这三步都正常,说明本地核心链路已经通了。
最常用是这两个命令:
python scripts/live_bridge.py或者:
python scripts/live_bridge.py --load-demo如果窗口就在前台,直接按:
Ctrl + C
查看谁占了 8765:
netstat -ano -p TCP | findstr :8765记下最后一列的 PID,然后结束进程:
Stop-Process -Id <PID> -Force你的本机实际配置文件是:
config/live-bridge.json
建议第一次只改最关键的 4 组字段:
"server": {
"host": "127.0.0.1",
"port": 8765,
"auto_push_replies": false,
"poll_interval_ms": 1500
}说明:
host/port决定页面地址auto_push_repliesfalse:适合先本地联调,不自动把每条回复推给 AIGCPaneltrue:适合 AIGCPanel 已经联通并稳定后开启
"session": {
"room_title": "一川桑语数字人直播间",
"product": "一川桑语 NFC60%桑葚复合果汁饮料",
"host_name": "主播小桑",
"next_live_time": "本周五晚上 8 点"
}说明:
- 页面初始标题、主播名、商品、预告时间都从这里来
"feishu": {
"webhook_env": "FEISHU_WEBHOOK_URL",
"webhook_url": ""
}说明:
- 二选一即可
- 要么直接把
webhook_url写进去 - 要么设置系统环境变量
FEISHU_WEBHOOK_URL
"aigcpanel": {
"enabled": false,
"base_url": "http://127.0.0.1:8888",
"probeBaseUrls": [
"http://127.0.0.1:8888",
"http://127.0.0.1:3030"
]
}第一次建议:
- 先保持
enabled: false - 本地演示跑通之后,再改成
true - 然后去页面点
Ping
如果 Ping 成功,再继续配 entry / entryArgs / resultRoots
把你的 Webhook 地址填到:
"webhook_url": "https://open.feishu.cn/..."PowerShell 临时设置:
$env:FEISHU_WEBHOOK_URL = "https://open.feishu.cn/..."- 启动页面
- 点击“发送飞书测试”
- 看飞书群里是否收到测试消息
然后再手动输入一条投诉类弹幕,例如:
质量太差了
如果分类进了 D 类,它会触发同一条飞书告警链路。
这是最关键也最容易卡住的一段,我按最稳的顺序写。
这个仓库只是“接 AIGCPanel”的桥,不负责替你在 AIGCPanel 里自动创建音色、模型和数字人。
所以顺序一定是:
- 先在 AIGCPanel 软件里把声音、模板、视频都做出来
- 再回到这个仓库接
Ping/提交当前播报/查询任务
如果 AIGCPanel 软件里手工都还不能正常合成,那仓库这边也不可能自动成功。
建议把下面这些页面先收藏,做一步看一步:
- 下载页: https://aigcpanel.com/zh/download
- Windows 安装教程: https://aigcpanel.com/zh/document/69
- 声音克隆步骤: https://aigcpanel.com/zh/document/8
- 声音合成步骤: https://aigcpanel.com/zh/document/9
- 视频合成步骤: https://aigcpanel.com/zh/document/10
- 数字人直播说明: https://aigcpanel.com/zh/document/32
- 直播推流配置: https://aigcpanel.com/zh/document/40
在 AIGCPanel 里确认:
- 模型已经下载完成,并且是绿色可用状态
- 已经完成至少一个声音克隆
- 已经准备好一个数字人模板或视频模板
如果没有这些资产,bridge 就算写得再对,也拿不到真人结果。
下面这段就是给第一次接触的人照着点的。
- 打开下载页: https://aigcpanel.com/zh/download
- Windows 电脑一般选
64位芯片 - 双击安装包,一路点“下一步”
- 安装完成后,桌面会出现 AIGCPanel 图标
- 第一次启动时,先不要急着接仓库,先把软件本体跑通
你进入 AIGCPanel 后,先做这一件事:
- 进入“模型管理”或资源下载页
- 下载至少一个可用的声音模型
- 如果你要做视频,再下载一个可用的视频/口型模型
- 下载完成后点击“启动”
- 看到模型状态变成绿色,再继续下一步
对小白来说,这一步最重要的判断标准只有一句:
模型必须是绿色运行状态
如果还是灰色、红色、启动失败,就先不要继续后面的克隆和视频合成。
参考官方步骤: https://aigcpanel.com/zh/document/8
具体动作可以照着做:
- 先准备一段
5-10 秒的干净人声 - 进入 AIGCPanel 的“我的音色”或“声音克隆”相关页面
- 点击“添加音色”或上传参考音频
- 选择刚才已经启动为绿色的声音模型
- 选择你刚上传的音色
- 输入一段测试文案,第一次建议控制在
30-100字以内 - 点击“开始克隆”或“提交”
- 等待生成完成后,直接试听结果
做到这里,你至少应该得到一个能播放的克隆结果。
如果这里都还没有试听成功,就不要急着回仓库接桥。
参考官方步骤: https://aigcpanel.com/zh/document/9
建议你再做一次普通 TTS 合成,目的是确认“模型能说话”,不是只验证克隆页面。
顺序一般是:
- 进入“声音合成”
- 选择已经绿色运行的声音模型
- 选择一个可用音色
- 输入一段短文案
- 点击“开始合成”
- 等待生成完成后试听
只要这一步也能正常出音频,后面接 bridge 的成功率会高很多。
参考官方步骤: https://aigcpanel.com/zh/document/10
你可以按这个顺序做:
- 先准备一段主播本人正脸、稳定、光线均匀的视频
- 进入“数字人形象管理”或类似入口,上传形象视频
- 再进入“视频合成”
- 选择刚刚上传的数字人形象
- 选择绿色运行的视频模型
- 选择声音来源
- 输入一段测试文案,或者选择刚才生成的音频
- 点击“开始生成视频”
- 等待生成完成后,检查口型、音视频同步、人物画面是否正常
做到这里,你才算真正有了“可被仓库接入”的本地数字人资产。
参考官方说明:
- 数字人直播说明: https://aigcpanel.com/zh/document/32
- 直播推流配置: https://aigcpanel.com/zh/document/40
你可以先不急着推流到抖音。
先确认下面这 4 个结果已经在 AIGCPanel 软件里发生过:
- 至少一个声音模型能正常启动
- 至少一个声音克隆结果能试听
- 至少一个视频合成结果能播放
- 你能在软件里找到这些结果文件或任务记录
先不要急着接仓库。
你要先在 AIGCPanel 软件里自己验证:
- 输入一段测试文案
- 能正常合成声音
- 能正常合成数字人视频
只有这一步成功,后面的 bridge 联调才有意义。
- AIGCPanel launcher 的实际端口
- AIGCPanel 输出音频或视频的本地目录
- 你机器上实际存在的工作流入口路径
- 你准备使用的主播名、商品名、默认播报文案
这些信息之后都会映射到 config/live-bridge.json。
编辑:
config/live-bridge.json
把 aigcpanel.enabled 改成:
"enabled": true默认优先探测:
http://127.0.0.1:8888http://127.0.0.1:3030
如果你的 AIGCPanel 不是这两个端口,就手动改:
"base_url": "http://127.0.0.1:你的端口"如果你的 AIGCPanel 远端 /config 已经能返回 launcher 合同,可以先不手填。
如果不会自动返回,你就需要自己填本机真实工作流入口,例如:
"entry": "python",
"entryArgs": [
"C:/path/to/aigcpanel/workflows/live_avatar.py",
"--text",
"${TEXT}",
"--host",
"${HOST_NAME}",
"--product",
"${PRODUCT_NAME}"
]这里一定要注意:
- 示例里的
C:/path/to/aigcpanel/...只是模板 - 你必须改成你机器上真实存在的工作流路径
如果 AIGCPanel 会把音频、视频输出到本地文件,推荐把这些目录写进:
"resultRoots": [
"C:/path/to/aigcpanel/outputs",
"C:/path/to/aigcpanel/cache"
]这样 bridge 才能安全地把本地结果映射成页面可回放地址。
启动 bridge 后,进入页面,先点:
Ping
你希望看到的结果是:
ok: true- 不是
URLError - 状态区域里 AIGCPanel 不再显示连接失败
先在页面里生成一条当前播报,再点:
提交当前播报
然后再点:
查询任务
你要观察 3 件事:
- 有没有返回
token - 有没有查询到任务状态
- 有没有真实音频 / 视频结果回到页面
只有在以下条件都成立时,才建议把 auto_push_replies 改成 true:
Ping稳定成功提交当前播报稳定成功查询任务能稳定拿到真实结果
否则先保持 false,继续手动联调更稳。
仓库里已经有一个 relay 脚本:
scripts/connect_douyin_barragegrab.py
pip install websocket-clientpython scripts/live_bridge.py确保它的 WebSocket 地址能连上。
python scripts/connect_douyin_barragegrab.py --bridge-url http://127.0.0.1:8765/api/barrage --websocket-url ws://127.0.0.1:8888如果成功,你应该能看到:
- 页面右侧弹幕流开始滚动
- 弹幕源状态从等待变成已连接 / receiving
- 新弹幕会自动进入分类和回复流程
如果你想从零做到全链路,建议按这个清单执行:
Copy-Item config\live-bridge.example.json config\live-bridge.jsonpython scripts/live_bridge.py --load-demo- 打开
http://127.0.0.1:8765 - 确认页面能开、脚本能看、弹幕能显示
- 手动输入一条播报内容
- 手动注入一条普通弹幕
- 人工回复一条弹幕
- 手动输入一条投诉弹幕
- 配置
FEISHU_WEBHOOK_URL - 点击“发送飞书测试”
- 再发一条投诉弹幕
- 在 AIGCPanel 里确认模型、音色、模板都准备好
- 把
aigcpanel.enabled改成true - 配好真实
base_url - 配好真实
entry/entryArgs - 页面先点
Ping - 再点
提交当前播报 - 再点
查询任务 - 确认页面开始使用真实返回媒体
- 启动 bridge
- 启动 BarrageGrab
- 启动 relay 脚本
- 观察真实弹幕是否进入页面
- 让页面里先有一些弹幕和回复
- 点击“生成本场复盘”
- 去
data/review-reports/看输出
python scripts/live_bridge.py --load-demopython scripts/live_bridge.pypython scripts/live_bridge.py --port 9000python scripts/connect_douyin_barragegrab.py --bridge-url http://127.0.0.1:8765/api/barrage --websocket-url ws://127.0.0.1:8888python -m unittest discover -s tests先检查服务是否启动成功。
看终端里有没有:
Live studio bridge is running at http://127.0.0.1:8765
如果没有,说明服务没正常起来。
执行:
netstat -ano -p TCP | findstr :8765然后:
Stop-Process -Id <PID> -Force这通常说明:
- AIGCPanel 没打开
- launcher 接口没启动
base_url端口写错了- 软件刚装好,但模型 / 模板 / 工作流还没准备完
优先检查:
- AIGCPanel 里是否真的有声音克隆记录
- 是否真的有数字人视频模板
entry/entryArgs是否是你机器上的真实路径resultRoots是否包含了 AIGCPanel 实际输出目录- 你是否已经先在 AIGCPanel 软件里手工跑通过一次声音合成和一次视频合成
先确认页面里是否已经有“当前播报”。
如果当前回复为空,提交时本来就没有内容可推。
先排查:
webhook_url是否填对- 环境变量
FEISHU_WEBHOOK_URL是否真的生效 - 飞书机器人是否允许当前群接收
检查顺序:
- bridge 是否先启动
- WebSocket 地址是否正确
websocket-client是否安装- 外部协议是否符合
barragegrab_type3
如果不是这一套协议,需要改归一化逻辑。
apps/live-studio/ 本地直播控制台页面
config/ 配置模板与本机配置
data/product-catalog/ 商品数据源
data/barrage-logs/ 弹幕日志输出
data/review-reports/ 复盘报告输出
docs/guides/ 操作指南
scripts/live_bridge.py 本地 bridge 启动入口
scripts/connect_douyin_barragegrab.py 弹幕 relay 启动入口
scripts/showman_runtime/ 运行时核心逻辑
skills/ 业务技能与参考资料
tests/ 运行时测试
如果你已经把 README 跑通了,接下来建议按这个顺序继续看:
第一份告诉你“仓库怎么接”,第二份告诉你“AIGCPanel 里怎么把资产准备好”。
如果你是第一次跑这个项目,不要一上来就追求“真人原声一步到位”。
最稳的做法是:
- 先跑本地演示
- 再确认手动播报和人工回复
- 再接飞书
- 最后才接 AIGCPanel 真人链路
只要你按这个顺序来,定位问题会轻松很多。