大家好!我是仲町アラレ!
在 Discord 被 @ 時,會用角色口吻的日文回覆,並透過 Irodori-TTS + 情緒別 Speaker Inversion 發出語音訊息(OGG)。
私人非商用粉絲專案。角色與 BanG Dream!YUME∞MITA / 夢限大 MewType 相關 IP 歸原權利人所有;本 repo 僅供學習與同好自架。
倉庫:https://github.com/Lanternko/arale-bot
本 repo 只含可自架產線(bot + TTS server + SI embedding)。不含動畫語料、直播 raw、訓練中間檔。
| 元件 | 需求 |
|---|---|
| Discord bot | Node.js ≥ 20、自己的 Bot Token、至少一個 LLM API key |
| TTS | NVIDIA GPU(建議 ≥8GB VRAM;bf16 暖載約 5–7GB)、Linux 較省事 |
| 磁碟 | 程式 <1MB;Irodori 權重 + codec 約 2.5GB(HF 自動下載) |
沒有 GPU: 仍可只跑文字模式(ARALE_REPLY_MODE=text),或把 TTS_SERVER_URL 指到別人代開的 TTS(自行承擔安全風險)。
bot/ # Discord bot(npm start)
server/tts_server_irodori.py # Irodori + SI 推理 API :8055
server/start_tts_irodori.sh # 啟動腳本
data/tts/irodori_ft/si_*/ # 各情緒 Speaker Inversion(final only)
docs/ # 交接 / benchmark 筆記
# 任選路徑;以下以 ~/Irodori-TTS 為例
git clone https://github.com/Aratako/Irodori-TTS.git ~/Irodori-TTS
cd ~/Irodori-TTS
# 依 upstream README 建 venv 並安裝依賴(需 CUDA + torch)
# 完成後應有:~/Irodori-TTS/.venv/bin/python權重首次請求時會從 Hugging Face 拉:
Aratako/Irodori-TTS-500M-v3Aratako/Semantic-DACVAE-Japanese-32dim
git clone https://github.com/Lanternko/arale-bot.git
cd arale-bot
export TTS_VENV=$HOME/Irodori-TTS/.venv
export TTS_IRODORI_REPO=$HOME/Irodori-TTS # 若 server 預設路徑對不上再設
export TTS_IRODORI_PRECISION=bf16 # 省 VRAM
export TTS_IDLE_UNLOAD_SECS=600 # 閒置 10 分卸載;常駐改 0
bash server/start_tts_irodori.sh
curl -s http://127.0.0.1:8055/health | python3 -m json.tool | head
# 期望 backend=irodori、mood_embed 有 announce/calm/excited…停止時只殺明確 PID(避免 pkill -f 誤傷):
ps -eo pid,args | grep tts_server_irodori
kill <pid>cd arale-bot/bot
npm install
cp .env.example .env
# 編輯 .env:DISCORD_TOKEN + 至少一個 AI_*_API_KEY
# TTS 若在本機:TTS_SERVER_URL=http://127.0.0.1:8055
npm run test:pure # 不需 token / GPU
npm start # node arale.jsDiscord 權限與 intent 見 bot/.env.example 註解。
| mood | SI embedding | 用途 |
|---|---|---|
| announce | si_arale |
(預設)正面的直播聲線 |
| calm | si_calm |
敘事,平靜敘述、否定或講解 |
| happy | si_arale |
小開心 |
| excited / hyper | si_excited(直播版本) |
真的感興趣的話題 |
| shy | si_shy_gold |
害羞 |
| nervous | si_scared_gold |
短緊張;長句易「夾」 |
| scared | si_arale |
害怕(未通過測試,不使用) |
| laughy / sad | si_laughy / si_slow |
笑 / 難過 |
細節與人耳判決見 docs/HANDOFF_irodori_live_2026-07-09.md、docs/BENCHMARK_irodori_2026-07-09.md。
@mention
→ LLM(reply + speech[] 最多 2 段 mood)
→ POST http://TTS/tts → OGG
→ Discord 語音訊息(Attach Files)
- 語音文為完整日文口語(約 ≤220 字),不是舊版 72 字精華。
- 同 mood 長文
CHUNK_MAX_CHARS=200盡量 one-shot,避免句中切塊音高跳。
VRAM 被佔滿?
預設 bf16 + 閒置 10 分卸載。常駐:TTS_IDLE_UNLOAD_SECS=0。
聲線不像 / 太夾?
先看 log 的 mood= / embed=。否認 AI 應用 calm,不要整段 nervous。
只想文字?
ARALE_REPLY_MODE=text,可不開 TTS。
能不能商用?
不行。粉絲自架、個人娛樂;請遵守 Discord / 各 API / 原作權利。
cd bot && npm run test:pure # 轉譜 / mood / salvage
# test:e2e 需本機 TTS + 可選真 token上游實驗與語料 pipeline 不在本公開倉庫;需要自行訓練 SI 請另尋 Irodori 文件與自己的授權語料。
- 程式碼以學習交流為目的提供;無保證、無 SLA。
- 角色形象、名稱、聲線皆屬原權利人;請勿用於商業或誤導為官方 bot。
- 使用第三方 API / 模型時遵守其服務條款。
有問題請開 GitHub Issue。祝安裝順利——これからよろしくね!