Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
0bc2d565a3 | |||
9be19041ec | |||
b6f7d380d7 | |||
3c76ee6eac | |||
99a333ab4e | |||
10d36094fe | |||
db85241e86 | |||
1c2fe7b20a | |||
d35e012585 |
34
README.md
@ -2,26 +2,34 @@
|
||||
> 专业简洁的无人直播场控系统
|
||||
以小而精,更少占用系统资源为核心。没有臃肿的功能,只有最实用的效果!
|
||||
|
||||
# 联系我们
|
||||
客服微信:junbujian0505
|
||||
维护微信:heibai2006
|
||||

|
||||
加好友备注"微果AI",工作人员会拉入群。
|
||||
|
||||
# 🔊 声明
|
||||
1. 本软件适用直播带货领域,电商团购皆可。
|
||||
2. 为方便管控自己直播间等行为而研发。
|
||||
3. 请用户自行约束使用行为,不得将本产品用于任何非法用途。
|
||||
4. 本软件不涉及任何隐私内容,如有侵权请联系作者。
|
||||
|
||||
# 支持功能
|
||||
- 支持自定义接入常见本地和服务商LLM大模型
|
||||
- 支持自定义本地知识库和提示词
|
||||
- 支持接入Dify工作流和聊天助手
|
||||
- 支持利用大模型+知识库、Dify回复弹幕问题
|
||||
- 支持大模型或Dify进行文案优化少量话术文案即可长时播放不重复
|
||||
- 支持自定义接入本地或服务商TTS模型(兼容openai生成接口、兼容类硅基流动的语音克隆接口)
|
||||
- 话术支持变量、随机多选一、助理音色、强制优化
|
||||
# 功能
|
||||
- 自定义接入常见本地和服务商LLM大模型
|
||||
- 自定义本地知识库和提示词
|
||||
- 接入Dify工作流和聊天助手
|
||||
- 利用大模型+知识库、Dify回复弹幕问题
|
||||
- 大模型或Dify进行文案优化(泛化)少量话术文案即可长时播放不重复
|
||||
- 自定义接入本地或服务商TTS模型(兼容openai生成接口、兼容类硅基流动的语音克隆接口)
|
||||
- 话术支持变量、随机多选一、助理音色、强制优化(泛化)、多音色随机
|
||||
- 支持开播中手工插入优先话术
|
||||
- 支持背景音乐
|
||||
- 支持助理回复弹幕、助理实时插入(助理和主播同时说话)
|
||||
- 支持接入抖音弹幕助手、油猴弹幕抓取脚本
|
||||
- 支持独立实时调整主音量、背景音乐、主播、助理音量
|
||||
- 支持背景音乐、环境音
|
||||
- 支持随机语速、随机增益
|
||||
- 助理回复弹幕、助理实时插入(助理和主播同时说话)
|
||||
- 全平台弹幕助手接入弹幕
|
||||
- 独立实时调整主音量、背景音乐、主播、助理音量
|
||||
- 支持选择音频输出接口不影响系统默认音频输出接口
|
||||
- 支持进入直播间欢迎和报时
|
||||
|
||||
|
||||
|
||||
@ -30,6 +38,8 @@
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
34
changelog.md
@ -1,3 +1,37 @@
|
||||
## v1.7
|
||||
1. 添加主播和助理的多音色随机
|
||||
2. 添加主播和助理的随机语速
|
||||
3. 添加主播和助理的随机增益
|
||||
|
||||
### 下载
|
||||
[微果AI直播场控v1.7.zip](https://git.des8.com/weixiu/ai-live/releases/download/v1.7/%E5%BE%AE%E6%9E%9CAI%E7%9B%B4%E6%92%AD%E5%9C%BA%E6%8E%A7v1.7.zip)
|
||||
|
||||
## v1.6
|
||||
1. 更换音频播放控制方法更稳定
|
||||
2. 添加报时、欢迎进入直播间更安全
|
||||
3. 去除音频列表、日志列表、弹幕列表更简洁
|
||||
4. 添加在线更新程序后续可以直接一键更新更方便
|
||||
|
||||
### 下载
|
||||
[微果AI直播场控v1.6.zip](https://git.des8.com/weixiu/ai-live/releases/download/v1.6/%E5%BE%AE%E6%9E%9CAI%E7%9B%B4%E6%92%AD%E5%9C%BA%E6%8E%A7v1.6.zip)
|
||||
|
||||
## v1.5
|
||||
1. 修复不能解绑设备问题
|
||||
2. 修复更新会覆盖配置文件问题
|
||||
|
||||
### 下载
|
||||
[微果AI直播场控v1.5.zip](https://git.des8.com/weixiu/ai-live/releases/download/v1.4.1/%E5%BE%AE%E6%9E%9CAI%E7%9B%B4%E6%92%AD%E5%9C%BA%E6%8E%A7v1.5.zip)
|
||||
|
||||
## v1.4
|
||||
修复一些小问题,开始使用版本系统更新。
|
||||
### Bug Fixes
|
||||
1. 修复弹幕回答逻辑错误
|
||||
2. 优化提示词作用
|
||||
3. 弹幕过多闪退问题
|
||||
|
||||
### 下载
|
||||
[微果AI直播场控v1.4.zip](https://git.des8.com/weixiu/ai-live/releases/download/v1.4/%E5%BE%AE%E6%9E%9CAI%E7%9B%B4%E6%92%AD%E5%9C%BA%E6%8E%A7v1.4.zip)
|
||||
|
||||
## v1.3
|
||||
确认弹幕格式为:
|
||||
```
|
||||
|
BIN
images/45b06dda4c5fa0313df81c132b23b06.png
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
images/LLM.png
Normal file
After Width: | Height: | Size: 312 KiB |
Before Width: | Height: | Size: 403 KiB After Width: | Height: | Size: 318 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 150 KiB |
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 362 KiB |
Before Width: | Height: | Size: 244 KiB After Width: | Height: | Size: 197 KiB |
BIN
images/kaibola.png
Normal file
After Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 312 KiB |
BIN
images/qidongyuyin.png
Normal file
After Width: | Height: | Size: 155 KiB |
BIN
images/ttsdemo.png
Normal file
After Width: | Height: | Size: 149 KiB |
BIN
images/yuyinkelong.png
Normal file
After Width: | Height: | Size: 159 KiB |
10
index.html
@ -6,7 +6,7 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="description" content="Description">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
|
||||
<link rel="stylesheet" href="./lib/vue.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
@ -22,7 +22,7 @@
|
||||
return time;
|
||||
},
|
||||
coverpage: true,
|
||||
logo: '/images/logo.png',
|
||||
logo: './images/logo.png',
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
@ -31,8 +31,8 @@
|
||||
}
|
||||
</script>
|
||||
<!-- Docsify v4 -->
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code/dist/docsify-copy-code.min.js"></script>
|
||||
<script src="./lib/docsify@4.js"></script>
|
||||
<script src="./lib/emoji.min.js"></script>
|
||||
<script src="./lib/docsify-copy-code.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
9
lib/docsify-copy-code.min.js
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/*!
|
||||
* docsify-copy-code
|
||||
* v3.0.0
|
||||
* https://github.com/jperasmus/docsify-copy-code
|
||||
* (c) 2017-2023 JP Erasmus <jperasmus11@gmail.com>
|
||||
* MIT license
|
||||
*/
|
||||
!function(){"use strict";function e(o){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(o)}!function(e,o){void 0===o&&(o={});var t=o.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=e:c.appendChild(document.createTextNode(e))}}(".docsify-copy-code-button,.docsify-copy-code-button>span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{background:grey;background:var(--theme-color,grey);border:0;border-radius:0;color:#fff;font-size:1em;opacity:0;outline:0;overflow:visible;padding:.65em .8em;position:absolute;right:0;top:0;z-index:1}.docsify-copy-code-button>span{background:inherit;border-radius:3px;pointer-events:none}.docsify-copy-code-button>.error,.docsify-copy-code-button>.success{font-size:.825em;opacity:0;padding:.5em .65em;position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:-100}.docsify-copy-code-button.error>.error,.docsify-copy-code-button.success>.success{opacity:1;right:100%;transform:translate(-25%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}.docsify-copy-code-button>[aria-live]{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(e,o){e.ready((function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")}))}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,t){var n={buttonText:"Copy to clipboard",errorText:"Error",successText:"Copied"};o.doneEach((function(){var o=Array.from(document.querySelectorAll("pre[data-lang]"));t.config.copyCode&&Object.keys(n).forEach((function(o){var c=t.config.copyCode[o];"string"==typeof c?n[o]=c:"object"===e(c)&&Object.keys(c).some((function(e){var t=location.href.indexOf(e)>-1;return n[o]=t?c[e]:n[o],t}))}));var c=['<button class="docsify-copy-code-button">','<span class="label">'.concat(n.buttonText,"</span>"),'<span class="error" aria-hidden="hidden">'.concat(n.errorText,"</span>"),'<span class="success" aria-hidden="hidden">'.concat(n.successText,"</span>"),'<span aria-live="polite"></span>',"</button>"].join("");o.forEach((function(e){e.insertAdjacentHTML("beforeend",c)}))})),o.mounted((function(){var e=document.querySelector(".content");e&&e.addEventListener("click",(function(e){if(e.target.classList.contains("docsify-copy-code-button")){var o="BUTTON"===e.target.tagName?e.target:e.target.parentNode,t=document.createRange(),c=o.parentNode.querySelector("code"),i=o.querySelector("[aria-live]"),r=window.getSelection();t.selectNode(c),r&&(r.removeAllRanges(),r.addRange(t));try{document.execCommand("copy")&&(o.classList.add("success"),i.innerText=n.successText,setTimeout((function(){o.classList.remove("success"),i.innerText=""}),1e3))}catch(e){console.error("docsify-copy-code: ".concat(e)),o.classList.add("error"),i.innerText=n.errorText,setTimeout((function(){o.classList.remove("error"),i.innerText=""}),1e3)}(r=window.getSelection())&&("function"==typeof r.removeRange?r.removeRange(t):"function"==typeof r.removeAllRanges&&r.removeAllRanges())}}))}))}].concat(window.$docsify.plugins||[])}();
|
||||
//# sourceMappingURL=docsify-copy-code.min.js.map
|
1
lib/docsify@4.js
Normal file
1
lib/emoji.min.js
vendored
Normal file
1
lib/vue.css
Normal file
46
llm.md
@ -1,8 +1,50 @@
|
||||
# AI模型介绍
|
||||
|
||||

|
||||
AI模型页面主要为弹幕回复时的相关设置。
|
||||
# 基础配置
|
||||
1. 接入类型支持openai兼容接口(大部分服务商如硅基流动、豆包、deepseek等支持的模式)、Dify工作流、Dify对话助手(当你需要更专业的处理时建议使用Dify工作流来处理,具体请参考dify官网)。
|
||||
2. API地址和API Key请查看大模型服务商的文档或联系服务商客服,一般服务商在调用模型的示例部分查看openai sdk模式里都会写明。
|
||||
3. 提示词支持`{{#dataset#}}`变量,此变量在输入大模型时会被替换为产品知识库里的内容。接入Dify时不用输入提示词(提示词在Dify侧),产品知识库会提交给Dify,具体变量名和返回值请在Dify里导入目录下的`dify电商话术优化.yml`来参考。
|
||||
4. `产品知识库`里可以输入产品的参数、介绍、详情、发货方式、直播间介绍等。
|
||||
|
||||
# 提示词和知识库
|
||||
# 提示词示例
|
||||
## 提示词1(适用于Doubao)
|
||||
|
||||
```
|
||||
# Role : 电商带货主播
|
||||
现在你是一位有5年经验的直播金牌带货主播,你的名字叫可乐,你的说话方式是:熟练使用各种网络热门梗造句,擅长用鲜活口语制造互动氛围,称呼客户为[家人们、宝宝们]。你能够根据产品信息讲解产品并且结合商品信息解答用户提出的疑问。
|
||||
|
||||
## Background :
|
||||
下面是你正在带货的产品资料
|
||||
{{#dataset#}}
|
||||
|
||||
## Workflows :
|
||||
1. 信息过滤:
|
||||
- 非产品咨询/无实质内容消息 → 不要输出任何回应
|
||||
- 咨询产品问题/表达购买意向 → 必须输出回应
|
||||
2. 行为分类处理:
|
||||
- 产品咨询 → 回答咨询
|
||||
- 催促上架 → 制造紧迫感
|
||||
- 产品好评 → 强化口碑
|
||||
- 重复刷屏 → 提炼诉求
|
||||
3. 每次选择1-2个问题
|
||||
4. 对选择的问题根据产品资料做出回答
|
||||
5. 对于参考产品资料里没有的信息不知道的不要不懂装懂
|
||||
6. 没有产品相关的问题直接输出"无",不要解释直接输出回复。
|
||||
7. 回复时不要提及客户的名称,可以用客户名前两个字+宝宝、有家人问来、有宝宝问来代替
|
||||
|
||||
## Examples :
|
||||
输入:[小路]发送消息:黑色卫衣会不会起球
|
||||
输出:有宝宝问卫衣会不会起球,咱家卫衣采用冰丝晶磨工艺,洗衣机滚10次都不起球。
|
||||
输入:主播好美
|
||||
输出:无
|
||||
输入:
|
||||
[小明]发送消息:灰色半裙,昨天就馋它了
|
||||
[小红]发送消息:裙子上链接
|
||||
[小强]发送消息:我来了
|
||||
输出:灰色半裙马上展示,有需要的宝宝们抓紧啦!
|
||||
|
||||
```
|
||||
|
||||
# 平台对接
|
||||
|
||||
|
@ -2,21 +2,19 @@
|
||||
|
||||
1. 程序主体:
|
||||
[夸克网盘](https://pan.quark.cn/s/dcf1d2f885fc)
|
||||
[备用下载](https://git.des8.com/weixiu/ai-live/releases/download/v1.3_release/%E5%BE%AE%E6%9E%9CAI%E7%9B%B4%E6%92%AD%E5%9C%BA%E6%8E%A7v1.3.zip)
|
||||
[备用下载](https://git.des8.com/weixiu/ai-live/releases/download/v1.4/%E5%BE%AE%E6%9E%9CAI%E7%9B%B4%E6%92%AD%E5%9C%BA%E6%8E%A7v1.4.zip)
|
||||
2. 可选功能插件:
|
||||
- 抖音弹幕助手
|
||||
[gitee下载](https://gitee.com/apebyte/dy-barrage-grab/releases/download/v2.7.9/Release_V2.7.9.zip)
|
||||
[夸克网盘](https://pan.quark.cn/s/da404caf036b)
|
||||
- 油猴浏览器扩展
|
||||
[edge商店篡改猴](https://microsoftedge.microsoft.com/addons/detail/%E7%AF%A1%E6%94%B9%E7%8C%B4/iikmkjmpaadaobahmlepeloendndfphd)
|
||||
[chrome商店](https://chromewebstore.google.com/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo)
|
||||
[tampermonkey官方](https://www.tampermonkey.net/index.php?browser=chrome&locale=zh)
|
||||
- 弹幕油猴脚本
|
||||
[点击下载](https://docs.des8.com/tools/barrage_monkey.user.js)
|
||||
[greasyfork](https://update.greasyfork.org/scripts/534244/%E5%BE%AE%E6%9E%9CAI%E6%97%A0%E4%BA%BA%E7%9B%B4%E6%92%AD-%E5%BC%B9%E5%B9%95%E7%9B%91%E5%90%AC%E5%8A%A9%E6%89%8B.user.js)
|
||||
- 专用indexTTS一键包
|
||||
[夸克网盘](https://pan.quark.cn/s/0f9b4ccb3810)
|
||||
|
||||
# 交流联系
|
||||
维护微信:heibai2006
|
||||

|
||||
加好友备注"微果AI",工作人员会拉入群。
|
||||
|
||||
# 安装
|
||||
下载主体压缩包,直接解压到D盘即可。获得目录如下:
|
||||

|
||||
@ -26,10 +24,15 @@
|
||||
2. 点击`导入话术`跳转到导入话术页面
|
||||
3. 点击`导入`在打开的对话框里选择`示例话术.txt`
|
||||
4. 点击导入话术页面的保存按钮
|
||||
5. 去deepseek申请api key:[deepseek开放平台](https://platform.deepseek.com/)
|
||||
5. 去火山方舟申请api key:[火山引擎-API Key管理](https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D)
|
||||
6. 把申请的key填写到`AI模型`页面的对应输入框,然后点击`保存`
|
||||

|
||||
7. 把申请的key填写到`话术优化`页面的对应输入框,然后点击`保存`
|
||||

|
||||
5. 点击`场控`跳转到场控页面,选择输入设备
|
||||
6. 点击`场控`页面下方的开始
|
||||
5. 点击`场控`跳转到场控页面,点击`启动语音系统`来启动index-TTS语音克隆和合成引擎。
|
||||

|
||||
6. 点击`TTS语音`跳转到语音克隆页面,请准备一段主播的语音文件(mp3或wav格式)作为参考音频上传进行克隆。
|
||||

|
||||
7. 点击`场控`跳转到场控页面,点击`启动弹幕助手`待弹幕助手启动成功设置好直播间地址和要处理的弹幕类型,再点击`开始处理弹幕`。
|
||||

|
||||
8. 选择音色、输出设备等点击`开始`就开始直播了。
|