feat: web UI + QR login + portable build

- Add web UI panel (dark theme) at / with REST API
- Add Bilibili QR code scan login with browser header emulation
- Add wanakana for English -> katakana conversion
- Add volume control (0%-200%)
- Add message format with '说、' pause marker
- PyInstaller --onedir build for portable exe
- Rate-limit danmaku logging (1/20)
- Fix aiohttp.access log spam
- Add README.md
This commit is contained in:
2026-08-08 13:22:58 +08:00
parent 9b277fe2e0
commit fd5c732d8a
13 changed files with 1470 additions and 206 deletions
+123
View File
@@ -0,0 +1,123 @@
# bililive-touhou-tts
Bilibili 直播弹幕 + ゆっくり TTS 语音朗读器。
自动连接指定 Bilibili 直播间,将弹幕实时转换为日语片假名,通过 **AquesTalk** 引擎以ゆっくり语音朗读出来。
## 功能
- 实时接收 Bilibili 直播弹幕
- 中文 → 拼音 → 片假名自动转换
- 英文按罗马音转片假名(wanakana)
- 可选扫码登录(获取未打码用户名)
- Web 控制面板(暗色主题)
- 支持 8 种ゆっくり音色 + 语速/音量调节
- 即开即用,无需安装任何运行时
## 快速开始
### 方式 1:便携版(推荐)
解压 `bililive-touhou-tts-portable.zip`,双击 `start.bat`,浏览器自动打开控制面板。
无需安装 Python 或 Node.js。
### 方式 2:源码运行
```bash
# 安装依赖
pip install -r requirements.txt
cd aquestalk.js && npm install && npx tsc && cd ..
npm install
# 启动服务
python server.py
# 打开浏览器
# http://127.0.0.1:8080
```
## 使用说明
1. 浏览器打开 `http://127.0.0.1:8080`
2. (可选)点击「Login with QR」用 Bilibili 客户端扫码登录
3. 输入直播间房间号
4. 选择音色、语速、音量
5. 点击「Start」
弹幕会实时显示在日志区域,同时通过扬声器朗读。
## 命令行参数
```
python server.py [--port PORT] [--host HOST] [--debug]
python main.py --room-id ROOM_ID [--voice VOICE] [--speed SPEED]
```
### server.py 参数
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `--port` / `-p` | `8080` | HTTP 服务端口 |
| `--host` | `127.0.0.1` | 绑定地址 |
| `--debug` / `-d` | 关闭 | 调试日志 |
### main.py 参数(纯 CLI 模式)
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `--room-id` / `-r` | 必填 | Bilibili 直播房间号 |
| `--voice` / `-v` | `f1` | 音色 |
| `--speed` / `-s` | `100` | 语速 (50-300) |
| `--sessdata` | 空 | Bilibili cookie |
| `--list-devices` | — | 列出音频设备 |
## 语音类型
| 音色 | 说明 |
|------|------|
| `f1` | 靈夢 (标准ゆっくり女声) |
| `f2` | 魔理沙 |
| `m1` | 男声1 |
| `m2` | 男声2 |
| `r1` | 机器人 |
| `dvd` | DVD |
| `imd1` | imd1 |
| `jgr` | jgr |
## 技术架构
```
Bilibili 弹幕 (blivedm)
中文→片假名 (pypinyin + 映射表)
英文→片假名 (wanakana)
AquesTalk TTS (aquestalk.js + v86 WASM 模拟)
WAV 音频播放 (sounddevice)
```
## 子项目
| 目录 | 说明 |
|------|------|
| `aquestalk.js/` | AquesTalk TTS 引擎 (WebAssembly x86 模拟) |
| `blivedm/` | Bilibili 直播弹幕 Python 库 |
| `zh-yukuuri/` | 中文→ゆっくり Web 前端 (参考) |
## 构建便携包
```bash
python build.py
# 输出: dist/bililive-touhou-tts-portable.zip
```
## 许可
MIT License