cb22e074af309985428f6b3f18c0d0a757d0202d
- Add phonemize (MIT) rule-based G2P as second fallback tier - IPA phoneme -> katakana CV-syllable transcription table - proposal -> プラポーザル, bilibili -> バイリーバイリー (no more letter-spelling) - Letter spelling kept as last resort only - Bridge logs SYNTH IN/OUT to stderr; tts.py drains stderr to Python logs so conversion results are visible in the server log - Rebuild portable zip (83.8 MB)
bililive-touhou-tts
Bilibili 直播弹幕 + ゆっくり TTS 语音朗读器。
自动连接指定 Bilibili 直播间,将弹幕实时转换为日语片假名,通过 AquesTalk 引擎以ゆっくり语音朗读出来。
功能
- 实时接收 Bilibili 直播弹幕
- 中文 → 拼音 → 片假名自动转换
- 英文转片假名(english-to-kana 49K 词库 + 字母拼读兜底)
- 可选扫码登录(获取未打码用户名)
- Web 控制面板(暗色主题)
- 支持 8 种ゆっくり音色 + 语速/音量调节
- 即开即用,无需安装任何运行时
快速开始
方式 1:便携版(推荐)
解压 bililive-touhou-tts-portable.zip,双击 start.bat,浏览器自动打开控制面板。
无需安装 Python 或 Node.js。
方式 2:源码运行
# 安装依赖
pip install -r requirements.txt
cd aquestalk.js && npm install && npx tsc && cd ..
npm install
# 启动服务
python server.py
# 打开浏览器
# http://127.0.0.1:8080
使用说明
- 浏览器打开
http://127.0.0.1:8080 - (可选)点击「Login with QR」用 Bilibili 客户端扫码登录
- 输入直播间房间号
- 选择音色、语速、音量
- 点击「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 + 映射表)
│
▼
英文→片假名 (english-to-kana 49K 词库 + 字母拼读兜底)
│
▼
AquesTalk TTS (aquestalk.js + v86 WASM 模拟)
│
▼
WAV 音频播放 (sounddevice)
子项目
| 目录 | 说明 |
|---|---|
aquestalk.js/ |
AquesTalk TTS 引擎 (WebAssembly x86 模拟) |
blivedm/ |
Bilibili 直播弹幕 Python 库 |
zh-yukuuri/ |
中文→ゆっくり Web 前端 (参考) |
构建便携包
python build.py
# 输出: dist/bililive-touhou-tts-portable.zip
许可
MIT License
.
-==- +
::. %*%#*:
--.. #***:*+********-. .-+*#%%%%%%%##*+-: ..::-- -.
.*---%#=.=*+*+*+******+#@%%#%%%#%%%#%#%#%%%%#%#%%#%@%- .:-+###**+***+:+**:.-#+=
::+.-+++#+####****+**%#%%#%%#%%#%%#%#%%#%%#%#%%%%#%%#%#%%@@%#+**+****+**+**=-+#*::-+:
*-. #+.=+*+***%%%%%%#%%#%%#%#%#%#%#%%#%%#%#%#%#%#%%#%#%%%@@%%##*+***+**++*:=**#-.-+.
*###**::*%%%#%#%#%#%#%%#%%#%%#%%#%%%#%#%#%%#%#%#%%#%#%%#%#%@@@@@%#*+*+**+**=-::-*#. =
+-#=%##%#%#%#%#%%%#%#%#%#%#%#%%#%%#%#%%%#%#%%%%#%%#%%%#%%#%#%#%@@@@@#########=+*+*+=:+.
+---:%#%%%#%%#%%#%#%%%#%%#%%#%#%%#%#%%#%#%%%#%#%%#%%#%#%#%%#%#%%#%@%@@@######*++##--==
=-##%%#%#%#%%#%%#%#%#%#%%#%%%#%#%%#%#%#%#%#%#%#%#%#%#%%%#%%%%#%#%#%@%@@%##**+++%#==-
.%%%#%#%%%#%%#%#%%%#%%%%#%#%#%%#%#%%%#%%%#%%%#%%#%%#%#%#%@##%%#%%%%%%@%#+%##*+#: :-:+
:==#%#%%#%%%%#%%#%#%%#%@#%%%%%#%%#%%%%%#%#%#%#%#%%#%%%%%%%%@%%#%%##+-=-=-=-%#*++##**=:+
===--=--+%%%#%@%#%%#%%@@%%%#%@%%%%%#%@%#%#%%%#%@%%#%#%#%@%#%@**=--=--=+#%@@@%*+#%%=-%*
:%#%#@%%%%==-----+*%%@@%@#%%%@%%@@#%%#@@%%%#%@%%#@%%%#*+-----=##@%#%@@@%%@%@%@%%%*-+:%@:
%%#%@%%@@#%@@%%@%@%%@%@@%%%#%@@%@%%#%#@@@%%%%%@%@%@@%%%%@%@@@@%@@@%%%@@@%@@@@@%-+%##%@%*
*%#%@@%@@#@@%@%@@@@%%@@@@%%%%@@@@#==%@%@%@@%%#%%@@@@@%%%%%%%@%@@@%@%%#%@@@@%@%@@#######%@.
.%%%%@%@@%%@%@%%@%@%@@@%@%#@@%@%@#=-:*%@%@@%#%+%%%@%@%@%@@#%@@@%@@@@@%%%%%@@@@@%@####*+*+*%.
=%#@@@@@%%@@@%@@@@+@@%@#-#%+@@@@#-=:..*@@@%@=%*=+%@@@@@@%@%%%@@@%@@%@@%%#%@%@%@@@###*+*####%*-*
*%#@%@%@%@%@%@%@%-#%@%*+=##-@%@#==:....+@@@%-#*.:=@%@@=-%@@=*@%@@@%@@@@@%%%@@@@%@%##**+*--:++*-
##@@@%%#@@@@%@@*==*@====-%--+@*-=:... ..-%@*=.#%-=*#%%+=-+@*-=%@%@@@%@@%@@%%@%@@@%*+**#+-*%*+.
*%@%@- @%@%@@@+==#+ =####%-....=-.........+-:.# :######%=*+%.-+@@@%@@@@@@%@@@@@%@%*####+=%%.
=%%%. .@@@-#@=-=*:####*##%... ..... ... ......%####*##*%..*::.:@%@@*%%#%@@@%@%@@@#-:==+@@@@.
:%# -@--%%%--:- %******#........... .... ...*********+ +..+ *.=.-++-%@@@@@@@%@@%@%#%@@%@:
: :-#-==#:::-.=%#%%%%*.. ... .. .......... #######+ .:.:..=*=+#+#%==*%@%@%@@@@%@@@@@@@@:
#***%-:---+.-................... .. .......---=+--=:-:-**+###%=*=*@@@@@%@@@@%@%@%@@:
.#***%.:...:.......... .. .... ................:.:.:.:.-****###=-==%@%@@@%@%@@@@@@%@.
.#*+##...:...:............. ...... .. .................-*+*####=-=-@@@%@@@@@@%@%@@@%.
#***#............. .-... .........* ... ..............:**+###*=-=*%@@@%@@%@@@@@@@%%
.#+**%.................#@**+========-..................:****##*=-+%@%@@@%@@@%@%@%@@%
:=+=*##:......... ... ...*++========*..... .............:+-+*+#*=#@@@@@%@@@%@@@@@@*%*
#.=*--*...... .... .... .:#====-==-#.. ..... .........=-*=#*#%+%@%@%@@@@%@@@@%@%@-@=
-+ %@%-.. .................*+===*=....... .... .. ...=.+=-+#+=@%%@@%@@%@@@%@@@@*:%:
:%%@%@@-..... .. ... ... ......... .. .................@%+@@@@%#%@%@#%@@@%=%@%@-:#
:%%@@@%%#.. .......... ....... ........ ... .. ... . ==%#@%@%%%%%@@%-@@%@#:@@@% :*
:%%%@%.%%@#:... .. ......... .... .. .... .........+- -%%%@@@%#%@%@:-@#-@+ %@%= =.
:%%@@: %%-%@@*:..... ... ................... .. :+. =#@@%=#*%%@@- =@:.@: #@#
:%@@- %#.-@@@@#%*:....... .. .. .... .. ...:=+. #%@% -+-#@%= *- .#. *%.
+%@: #: @%@- *- .=*+=-.... ... ...-++=. .%@# . .%@= : = *.
*@: + %# =@- %:
#. .*