基于AI技术的智能直播平台,支持AI主播、声音拟人化、场景搭建和公屏互动等功能。
- 项目架构文档 - 详细的三端架构说明(前端、后端管理页面、后台服务)
- 三端快速参考 - 快速查找三端技术栈、路由、接口等
- API接口文档 - 完整的 RESTful API 和 Socket.IO 事件文档
-### 核心功能
- ✅ 用户认证系统:登录、注册、充值功能
- ✅ AI主播配置:对接火山引擎、小黄车管理、角色个性设置
- ✅ AI文案生成:基于火山引擎豆包大模型生成直播话术
- ✅ 自动朗读:讯飞 WebAPI TTS + HTML5 播放列队,支持自动播报与播放列表循环
- ✅ 声音克隆(方案一):基于讯飞个性化语音合成,实现训练/查询/合成全链路
- ✅ 声音克隆控制台:提供
/voice-clone页面上传训练素材、查看任务与克隆朗读 - ✅ 公屏互动:评论获取和AI回复
- ⏸ 搭建开播场景(模块4):根据最新排期暂缓实现,仅保留数据库结构与占位接口
- 后端:Flask 3.0.0
- 数据库:MySQL (pymysql)
- AI模型:火山引擎(豆包系列)
- TTS:讯飞 WebAPI TTS + HTML5 Audio
- 前端:HTML + CSS + JavaScript
- Python 3.7+
- MySQL 5.7+
- 推荐使用虚拟环境
pip install -r requirements.txt编辑 test.py,修改数据库连接信息:
host="localhost"
port=3306
user="root"
password="your_password"
database="demo01"python init_database.py# Windows PowerShell
$env:VOLCANO_API_KEY="your_volcano_api_key"
$env:VOLCANO_CHAT_MODEL="doubao-1-5-pro-32k"
$env:VOLCANO_CHAT_ENDPOINT="https://ark.cn-beijing.volces.com/api/v3/chat/completions"
$env:XFYUN_APP_ID="your_xfyun_app_id"
$env:XFYUN_API_KEY="your_xfyun_api_key"
$env:XFYUN_API_SECRET="your_xfyun_api_secret"
$env:XFYUN_TTS_DEFAULT_VOICE="xiaoyan"
$env:DEFAULT_CARD_CODE="123456"可选:通过
XFYUN_TTS_VOICES_JSON传入{ "zh-CN": [{ "value": "...", "label": "..." }] }结构,可自定义前端音色下拉列表。
python main.py浏览器打开:http://localhost:5000
.
├── main.py # Flask主应用
├── test.py # 数据库连接模块
├── init_database.py # 数据库初始化脚本
├── requirements.txt # 依赖包列表
├── templates/ # HTML模板
│ ├── login.html # 登录页
│ ├── register.html # 注册页
│ ├── index.html # 首页
│ ├── live.html # 开播页
│ ├── ai_anchor.html # AI主播配置页
│ └── recharge.html # 充值页
├── uploads/ # 上传文件目录(自动创建)
│ └── videos/ # 视频文件
├── 需求分析文档.md # 需求文档
├── 测试步骤.md # 详细测试步骤
└── README.md # 本文件
- 登录:支持用户名密码登录,可勾选"记住我"
- 注册:用户名3-20字符,密码至少6位,且需填写管理员下发的卡密(默认
123456,可通过环境变量DEFAULT_CARD_CODE覆盖) - 充值:创建充值订单(支付接口待对接)
- 直播间描述:必需填写,用于生成话术
- 对接平台:配置火山引擎API密钥和模型接入点
- 角色个性:可选,设置主播风格和限制
- 小黄车管理:添加、删除商品,管理橱窗位
- 文案生成:基于火山引擎豆包模型生成直播话术
- 连续生成:点击“开始直播”后根据直播间描述持续输出口播内容
- 自动朗读:生成话术自动推送到火山TTS并播放,可暂停/恢复,并与播放列表循环共用一套播放器
- 零输入操作:产品信息直接沿用 AI 主播配置中的直播间描述,无需再手动发送
- 本模块涉及的视频去重与 OBS 同步能力已根据最新排期暂缓,当前版本仅保留数据库结构与占位接口以便后续扩展。
POST /login- 用户登录POST /register- 用户注册POST /api/recharge- 创建充值订单
POST /api/ai-chat- 火山引擎文案生成POST /api/iflytek-tts- 讯飞 WebAPI TTS,返回 Base64 音频用于前端播放GET/POST /api/ai-anchor/config- AI主播配置
GET /api/auto-read/list- 获取播放列表POST /api/auto-read/batch- 批量添加内容POST /api/auto-read/clear- 清空列表PUT /api/auto-read/<id>- 更新内容DELETE /api/auto-read/<id>- 删除内容POST /api/auto-read/reorder- 重新排序
GET /api/shopping-cart/list- 获取商品列表POST /api/shopping-cart/add- 添加商品DELETE /api/shopping-cart/<id>- 删除商品
POST /api/comments/fetch- 获取评论POST /api/comments/reply- AI回复评论
login_user- 用户表recharge_orders- 充值订单表ai_anchor_configs- AI主播配置表shopping_cart_items- 小黄车商品表video_uploads- 视频上传表obs_configs- OBS配置表auto_read_items- 自动朗读列表表interaction_rules- 互动规则表comment_queue- 评论队列表
注:
video_uploads、obs_configs等表用于模块4的后续实现,当前版本暂不启用相关业务逻辑。
详细表结构请参考 init_database.py
当前版本固定对接火山引擎(豆包):
- 在“AI主播配置”页面填写 API Key、模型接入点与直播间描述
- 或通过环境变量
VOLCANO_API_KEY/VOLCANO_CHAT_MODEL统一下发 - 点击“开始直播”后将自动以直播间描述为提示词,连续生成口播文案
提示:原智谱 / Deepseek / OpenAI 通道已暂停,待后续恢复再开放开关。
- 朗读调用讯飞 WebAPI TTS,需要配置
XFYUN_APP_ID/XFYUN_API_KEY/XFYUN_API_SECRET - 音色下拉来源于环境变量
XFYUN_TTS_VOICES_JSON(未配置时使用示例音色) - 速度 / 音调 / 音量滑块映射到讯飞参数
speed / pitch / volume(0-100) 开始直播会自动推送口播到 TTS,右侧播放列表与自动播报共用一套播放器,可暂停/恢复/停止
- 环境变量:沿用
XFYUN_APP_ID/XFYUN_API_KEY/XFYUN_API_SECRET,并支持以下可选覆盖:VOICE_CLONE_UPLOAD_DIR:素材缓存目录(默认uploads/voice_clone)XFYUN_CLONE_AUTH_URL:鉴权地址,默认http://avatar-hci.xfyousheng.com/aiauth/v1/tokenXFYUN_CLONE_TRAIN_BASE_URL:训练接口根路径,默认http://opentrain.xfyousheng.com/voice_trainXFYUN_CLONE_WS_HOST/XFYUN_CLONE_WS_PATH:合成 WebSocket 地址(默认cn-huabei-1.xf-yun.com+/v1/private/voice_clone)VOICE_CLONE_POLL_INTERVAL/VOICE_CLONE_POLL_RETRY:训练状态轮询频率与最大次数
- 依赖安装:执行
pip install -r requirements.txt,需本地安装ffmpeg以支持pydub。 - 数据准备:
POST /api/voice-clone/train(multipart/form-data)上传多段音频,服务端完成 16kHz 单声道归一化并打包,通过/task/add + /task/submitWithAudio对接讯飞训练接口。 - 训练查询:
GET /api/voice-clone/status/<task_id>,内部调用/task/result,返回voice_id、progress、error_msg等字段,状态枚举processing/success/failed。 - 克隆合成:
POST /api/voice-clone/synthesize,经由ws://cn-huabei-1.xf-yun.com/v1/private/voice_clone流式获取音频。JSON 体示例:返回字段{ "voice_id": "clone_voice_id", "text": "家人们看过来!", "emotion": "happy", "speed": 55, "pitch": 60 }audio_base64可直接传给前端播放器(audio/mpeg)。 - 避坑提示:
- 单条语音建议 4-8 秒,整体不少于 30 分钟,背景噪声明显的片段需提前清理
- 训练失败多因素材过短/压缩包损坏/情感标签非法,必要时结合
/voice_train/task/result返回的错误信息排查 - 需确保所有音频拥有合法授权,谨防侵权
UI 提示:登录后访问
http://localhost:5000/voice-clone,可通过可视化界面完成“上传→训练→朗读”全流程。
更多 step-by-step 细节参见
VOICE_CLONE_GUIDE.md,接口说明参考 讯飞一句话复刻(标准版)文档。
⚠️ SQL注入风险:当前代码使用字符串拼接SQL,建议升级为参数化查询⚠️ 密码明文存储:建议使用bcrypt哈希加密⚠️ API密钥安全:使用环境变量管理,不要提交到代码仓库
- 搭建开播场景:本模块暂缓实现,相关视频去重与 OBS 同步能力不在当前交付范围
- 支付功能:充值订单创建成功,但支付接口未对接
- 公屏评论:当前返回模拟数据,需要对接真实直播平台API
- 外部模型/语音:智谱与 Deepseek 仍未恢复,当前使用火山引擎豆包模型生成文案 + 讯飞 TTS 朗读
- 用户认证系统
- AI主播配置
- AI文案生成
- 自动朗读功能
- 公屏评论基础能力
- 数据库表结构
- 声音拟人化(音频上传、声音克隆)
- 公屏评论对接(真实API)
- 系统设置功能
- 支付接口对接
- 搭建开播场景(视频去重 + OBS 同步)
详细测试步骤请参考 测试步骤.md
快速测试:
# 1. 初始化数据库
python init_database.py
# 2. 启动应用
python main.py
# 3. 访问 http://localhost:5000
# 4. 注册/登录账户
# 5. 测试各个功能模块如遇到问题,请检查:
- 数据库连接配置是否正确
- 依赖包是否全部安装
- 环境变量是否配置
- 查看控制台错误信息
本项目仅供学习和研究使用。
- 初始版本发布
- 实现核心功能模块
- 完成基础测试
祝使用愉快!如有问题,请参考测试步骤文档或查看代码注释。