# aivtuber **Repository Path**: jiazijian95/aivtuber ## Basic Information - **Project Name**: aivtuber - **Description**: ai虚拟主播支持一键部署启动,目前只支持了B站直播。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-10-20 - **Last Updated**: 2026-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI 虚拟主播系统 一个基于 Python 开发的 AI 虚拟主播系统,能够在 B 站进行实时直播互动。系统集成了 Live2D 虚拟形象、DeepSeek 大模型以及百度语音合成,实现智能化的直播互动体验。 ## 功能特性 - ✨ **实时互动**: 自动读取并智能回复 B 站直播弹幕 - 🎭 **虚拟形象**: 使用 Live2D 技术呈现虚拟主播形象 - 🤖 **AI 驱动**: 通过 DeepSeek API 提供自然流畅的对话能力 - 🔊 **语音合成**: 使用百度 TTS 将文本转换为语音 - 💋 **口型同步**: 自动分析音频并同步 Live2D 口型动画 - 😊 **情感表达**: 根据回复内容自动切换表情 - 🎯 **优先级队列**: VIP 和舰长消息优先处理 - 🛡️ **安全过滤**: 支持敏感词过滤和黑名单功能 ## 系统架构 ``` ┌─────────────┐ │ B站观众 │ └──────┬──────┘ │ 发送弹幕 ↓ ┌─────────────────────────────────────────┐ │ 弹幕监听服务 │ └──────┬──────────────────────────────────┘ │ ↓ ┌─────────────┐ ┌──────────────┐ │ 消息队列 │ → │ AI对话引擎 │ └─────────────┘ └──────┬───────┘ │ ┌──────────────────┴──────────────┐ ↓ ↓ ┌─────────────┐ ┌──────────────┐ │ TTS语音合成 │ │ 情感分析 │ └──────┬──────┘ └──────┬───────┘ │ │ └────────┬────────────────────────┘ ↓ ┌───────────────┐ │ Live2D渲染 │ └───────┬───────┘ │ ↓ ┌───────────────┐ │ OBS推流 │ └───────────────┘ ``` ## 环境要求 - **操作系统**: Windows 10+, Ubuntu 20.04+, macOS 10.15+ - **Python**: 3.9 或更高版本 - **内存**: 建议 8GB 以上 - **网络**: 稳定的互联网连接(需要调用 API) ## 快速开始 ### 1. 克隆项目 ```bash git clone cd ai-vtuber/ai ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` **注意**: 如果在 Windows 上安装 pydub 时遇到问题,需要安装 ffmpeg: - 下载 ffmpeg: https://ffmpeg.org/download.html - 将 ffmpeg 添加到系统 PATH ### 3. 配置系统 #### 3.1 复制配置文件 ```bash cd config cp .env.example .env ``` #### 3.2 编辑 `.env` 文件,填写 API 密钥 ```bash # B站直播间配置 BILIBILI_ROOM_ID=your_room_id_here # DeepSeek API 配置 DEEPSEEK_API_KEY=your_deepseek_api_key_here # 百度语音合成配置 BAIDU_TTS_APP_ID=your_baidu_app_id_here BAIDU_TTS_API_KEY=your_baidu_api_key_here BAIDU_TTS_SECRET_KEY=your_baidu_secret_key_here ``` #### 3.3 获取 API 密钥 **DeepSeek API**: 1. 访问 https://platform.deepseek.com/ 2. 注册并登录 3. 在控制台创建 API Key **百度语音合成**: 1. 访问 https://ai.baidu.com/ 2. 创建应用(选择"语音技术" → "语音合成") 3. 获取 App ID, API Key, Secret Key **B站直播间ID**: - 打开你的 B 站直播间 - URL 中的数字即为直播间 ID,如: `https://live.bilibili.com/12345678` #### 3.4 自定义配置(可选) 编辑 `config/config.yaml` 自定义虚拟主播人设、语速、音调等参数。 ### 4. 运行系统 ```bash python main.py ``` ## 配置说明 ### 虚拟主播人设 在 `config/config.yaml` 中的 `character` 部分: ```yaml character: name: "小爱" # 主播名字 personality: "活泼可爱" # 性格特点 speaking_style: "口语化,偶尔使用颜文字" system_prompt: | 你是一个活泼可爱的AI虚拟主播... # 详细的人设描述 ``` ### TTS 参数调整 ```yaml baidu_tts: per: 4 # 发音人(0-度小美,1-度小宇,3-度逍遥,4-度丫丫) spd: 5 # 语速(0-15,数字越大越快) pit: 5 # 音调(0-15,数字越大越尖) vol: 8 # 音量(0-15) ``` ### 系统参数 ```yaml system: message_queue_size: 100 # 消息队列容量 max_messages_per_second: 3 # 每秒最多处理3条消息 min_reply_interval: 3 # 同一用户最小回复间隔(秒) ``` ## 使用 OBS 进行直播 1. 下载并安装 OBS Studio: https://obsproject.com/ 2. 添加窗口捕获源: - 来源 → 添加 → 窗口捕获 - 选择 "AI VTuber - Live2D" 窗口 - 右键 → 滤镜 → 添加 → 色度键(用于去除绿幕) 3. 配置色度键: - 颜色类型: 绿色 - 相似度: 400 - 平滑度: 80 4. 推流到 B 站: - 获取 B 站推流地址和密钥 - OBS 设置 → 推流 → 填写推流信息 - 点击"开始推流" ## 项目结构 ``` ai-vtuber/ai/ ├── config/ # 配置文件目录 │ ├── config.yaml # 主配置文件 │ ├── .env.example # 环境变量示例 │ └── .env # 环境变量(需自行创建) ├── src/ # 源代码目录 │ ├── core/ # 核心模块 │ │ ├── models.py # 数据模型 │ │ └── message_queue.py # 消息队列 │ ├── services/ # 服务模块 │ │ ├── danmaku_listener.py # 弹幕监听 │ │ ├── ai_engine.py # AI引擎 │ │ ├── tts_engine.py # TTS引擎 │ │ └── live2d_renderer.py # Live2D渲染 │ └── utils/ # 工具模块 │ ├── config_manager.py # 配置管理 │ └── logger.py # 日志系统 ├── logs/ # 日志文件目录 ├── models/ # Live2D模型目录 ├── data/ # 数据目录(敏感词等) ├── main.py # 主程序入口 ├── requirements.txt # 依赖列表 └── README.md # 本文件 ``` ## 常见问题 ### 1. 安装依赖时出错 **问题**: `pip install` 失败 **解决**: ```bash # 使用国内镜像源 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 2. 弹幕监听连接失败 **问题**: 无法连接到 B 站直播间 **解决**: - 确认直播间 ID 正确 - 检查网络连接 - 确认直播间是否已开播 ### 3. TTS 合成失败 **问题**: 语音合成返回错误 **解决**: - 检查百度 TTS 配置是否正确 - 确认 API 调用额度是否充足 - 查看日志文件获取详细错误信息 ### 4. Live2D 窗口无法显示 **问题**: Live2D 渲染窗口不显示或闪退 **解决**: - 确认 pygame 正确安装 - 检查显卡驱动是否更新 - 查看日志文件排查错误 ## 进阶功能 ### 敏感词过滤 1. 创建 `data/sensitive_words.txt` 文件 2. 每行一个敏感词 3. 在 `config.yaml` 中启用: ```yaml security: enable_sensitive_word_filter: true sensitive_words_file: "./data/sensitive_words.txt" ``` ### 黑名单功能 创建 `data/blacklist.txt`,每行一个被拉黑的用户 ID。 ## 性能优化 - **降低处理频率**: 调整 `max_messages_per_second` 参数 - **减小队列容量**: 降低 `message_queue_size` 减少内存占用 - **调整 TTS 质量**: 使用较低的采样率和码率 ## 开发计划 - [ ] 支持更多 TTS 服务商(阿里云、腾讯云等) - [ ] 集成本地 VITS 模型,实现离线语音合成 - [ ] 支持真正的 Live2D Cubism SDK - [ ] 游戏集成模块(AI 自动玩游戏) - [ ] 唱歌模块(SO-VITS-SVC) - [ ] Web 管理界面 ## 贡献指南 欢迎提交 Issue 和 Pull Request! ## 许可证 MIT License ## 致谢 - Bilibili API: bilibili-api-python - DeepSeek AI: https://deepseek.com - 百度AI开放平台: https://ai.baidu.com ## 免责声明 本项目仅供学习和研究使用,请勿用于商业目的。使用本系统进行直播时,请遵守相关平台的服务条款和法律法规。 ![运行截图](image.png)