BanG Dream! (้ฆ้ฆ / ใใณใใช) character voices: Qwen3-TTS text-to-speech in Japanese, Mandarin and English
BanG Dream! (้ฆ้ฆ) character-voice TTS: 49 voices + 25 opt-in Our Notes voices (MyGO!!!!!, Ave Mujica, Girls Band Party, Our Notes). They speak Japanese, Mandarin and English with no reference audio. A Qwen3-TTS fine-tune. Unofficial fan project, not affiliated with Bushiroad, Craft Egg, the BanG Dream! project, the official ๅคขใ็ตๅฑ voicebanks or the voice cast.
This revision (main) holds the 49 Girls Band Party, MyGO!!!!! and Ave Mujica voices. Persona variants such as ๅคง้ญๅงซใใ, ๆใๆฃฎ Soyo / Sakiko and Mortis have their own rows.
- Each voice is called by its speaker id. No reference audio is needed.
- Three languages: Japanese (the characters' own language) plus Mandarin and English. Language ids, native replay and in-voice pseudo-Mandarin keep the Japanese accent out of Mandarin.
- Built on Qwen3-TTS-12Hz-1.7B-Base, full fine-tune.
- Try it online: demo Space (ZeroGPU; pick a voice, type text). Its output is AI-generated, under the same terms as this model.
- 25 more voices, opt-in: the
ournotesbranch is a separate checkpoint (E9) with voices trained on BanG Dream! Our Notes story audio: 16 new characters (ไธๅฎถDumb Rock!, ๅคข้ๅคงใฟใ ใผใใใท, millsage, ๆฒขๆตทๅฅๅค) and the Our Notes era of nine MyGO!!!!! / Ave Mujica characters (*_ournotes). Load it withrevision="ournotes"for those 25 voices only, and keep using this revision for the 49 here. The demo Space serves both.
Code: github.com/starryark/bangdream-tts: data pipeline, fixed trainer, per-voice RVC route for native Mandarin, and every pre-registered plan and result.
Also known as: ้ฆ้ฆ ยท ้ฆๅคๅฉ ยท BanG Dream! ๅฐๅฅณไนๅขๆดพๅฏน! (Girls Band Party) ยท ใ่ฟท้ไนๅญ!!!!!ใ (MyGO!!!!!) ยท ใ้ขไนไบบๅถใ (Ave Mujica) ยท BanG Dream! ไบค็ป็ไน็ซ (Our Notes) ยท ใใณใใช๏ผ ใฌใผใซใบใใณใใใผใใฃ๏ผ ยท ใฌใซใ.
ๆฅๆฌ่ช๏ผใBanG Dream!ใ49 ใญใฃใฉใฏใฟใผใใคในใฎ้ๅ ฌๅผใใกใณใกใคใ TTS๏ผQwen3-TTS ๅพฎ่ชฟๆด๏ผใ่ฉฑ่ ID ใงๅผใณๅบใใๅ็ ง้ณๅฃฐใฏไธ่ฆใๆฅๆฌ่ชใปไธญๅฝ่ชใป่ฑ่ชใซๅฏพๅฟใๅ ฌๅผใปใญใฃในใใป้ๅถใจใฏ็ก้ขไฟใงใใ
ไธญๆ๏ผใBanG Dream!ใ49 ไฝ่ง่ฒ็้ๅฎๆน็ฒไธๅ่ฏญ้ณๅๆ๏ผTTS๏ผๆจกๅ๏ผๅบไบ Qwen3-TTS ๅพฎ่ฐใๆ่ฏด่ฏไบบ ID ็ดๆฅๅๆ๏ผๆ ้ๅ่้ณ้ข๏ผๆฏๆๆฅ่ฏญใๆฎ้่ฏๅ่ฑ่ฏญใไธๅฎๆนใ่ฟ่ฅๅๅฃฐไผๆ ๅ ณใ
| Voices | 49 speaker rows (45 characters; 4 persona variants), table below |
| Languages | Japanese, Mandarin Chinese, English (language="Japanese" / "Chinese" / "English") |
| Type | Qwen3-TTS custom_voice checkpoint: text in, speech out, no reference audio |
| Base model | Qwen/Qwen3-TTS-12Hz-1.7B-Base, full fine-tune |
| Training data | 9,268 Japanese voice lines of the 49 voices (from 22.1 h kept), plus 1,509 native Mandarin/English replay clips and 564 gated in-voice pseudo-Mandarin rows: 11,341 training rows, 23.4 h |
| Version | E1b epoch 2 (trained 2026-10-30, released 2026-11-06) |
| License | Unofficial fan model, no rights granted (details) |
| Code | starryark/bangdream-tts |
Use (Python)
import torch, soundfile as sf
from qwen_tts import Qwen3TTSModel # pip install qwen-tts
tts = Qwen3TTSModel.from_pretrained("starrydark/BanG_Dream_Qwen3_TTS",
device_map="cuda", dtype=torch.bfloat16)
wavs, sr = tts.generate_custom_voice(
text="ไปๆฅใฎ็ทด็ฟใๆใฃใใใๆฉใ็ตใใฃใใญใ",
speaker="ppp_kasumi", # see the table below
language="Japanese", # or "Chinese" / "English"
)
sf.write("kasumi.wav", wavs[0], sr)
Usage notes:
- Always pass
language. Training used a language id on every row; it is what keeps Mandarin and English free of the Japanese accent. - Keep the default sampling (temperature 0.9, top-k 50). Greedy decoding makes codec language models loop.
- Try a few seeds for Mandarin and English on the voices marked "generic" below.
- Generated audio is synthetic: label it as AI-generated wherever you share it.
ไธญๆ่ฏดๆ
้ๅฎๆน BanG Dream!๏ผ้ฆ้ฆ๏ผ่ง่ฒ่ฏญ้ณๅๆๆจกๅ๏ผๅบไบ Qwen3-TTS ๅพฎ่ฐใๆ่ฏด่ฏไบบ ID ็ดๆฅๅๆ๏ผๆ ้ๅ่้ณ้ข๏ผไผ่ฏดๆฅ่ฏญใๆฎ้่ฏๅ่ฑ่ฏญใ็ฒไธ่ชๅถ๏ผไธ BushiroadใCraft EggใBanG Dream! ๅฎๆนใๅฎๆน AI ๅฃฐๅบโๆขฆ็็ปๅฑโๅๅฃฐไผๅๆ ๅ ณใ
ๆฌๆจกๅ๏ผmain๏ผๅ
ๅซๅฐๅฅณไนๅขๆดพๅฏน 7 ไธชไน้ใMyGO!!!!!๏ผใ่ฟท้ไนๅญ!!!!!ใ๏ผๅ Ave Mujica๏ผใ้ขไนไบบๅถใ๏ผๅ
ฑ 49 ไธชๅฃฐ็บฟ๏ผใBanG Dream! Our Notesใ็ 25 ไธชๅฃฐ็บฟๅจๅฏ้ๅๆฏ ournotesใๅจ็บฟไฝ้ช๏ผๆผ็คบ Space๏ผ74 ไธชๅฃฐ็บฟ๏ผๅฏ็ดๆฅ่พๅ
ฅไธญๆๅๆ็ดข๏ผใ
import os; os.environ.setdefault("HF_ENDPOINT", "https://hf-mirror.com") # ไธญๅฝๅคง้็ฝ็ป
import torch, soundfile as sf
from qwen_tts import Qwen3TTSModel # pip install qwen-tts
tts = Qwen3TTSModel.from_pretrained("starrydark/BanG_Dream_Qwen3_TTS", device_map="cuda", dtype=torch.bfloat16)
wavs, sr = tts.generate_custom_voice(text="ไปๅคฉ็ๆ็ป็ๅผๅฟ๏ผๆๅคฉไนไธ่ตทๅ ๆฒนๅง๏ผ", speaker="mygo_anon", language="Chinese")
sf.write("out.wav", wavs[0], sr)
ๆฎ้่ฏ้ณ่ฒ๏ผ่ฏดไธญๆๆถๅไธๅๆฌไบบ๏ผ๏ผ
| ็จๅบฆ | ๆฐ้ | ๅฃฐ็บฟ |
|---|---|---|
| ไฟๆ่ง่ฒ้ณ่ฒ | 34 | ไธ่กจไธญๆ ไธบ own voice ็ๅฃฐ็บฟ |
| ้จๅๅ้็จ | 8 | ไธธๅฑฑๅฝฉ๏ผpp_aya๏ผใ่ฅๅฎซไผ่๏ผpp_eve๏ผใๆฟ็ฐ่ฐ๏ผhhw_kaoru๏ผใๅๆณฝ่ฒ็พ๏ผhhw_hagumi๏ผใๆพๅ่ฑ้ณ๏ผhhw_kanon๏ผใไฝ่ค็ๆจ๏ผras_masking๏ผใ็ ๆ็ฅ็ฑ๏ผras_chuchu๏ผใไธฐๅท็ฅฅๅญ๏ผๆไนๆฃฎ๏ผ๏ผmujica_sakiko_tsuki๏ผ |
| ๅ้็จ้ณ่ฒ | 7 | ๆทๅฑฑ้ฆๆพ๏ผppp_kasumi๏ผใ็่พผ้็พ๏ผppp_rimi๏ผใๅฎ็ฐๅทไบๅญ๏ผๅคง้ญๅงฌ๏ผ๏ผro_ako_maou๏ผใ็ฝ้็ๅญ๏ผro_rinko๏ผใๆๆฅๅ
ญ่ฑ๏ผras_lock๏ผใ้ซๆพ็ฏ๏ผmygo_tomori๏ผใ้ฟๅด็ฝไธ๏ผๆไนๆฃฎ๏ผ๏ผmygo_soyo_tsuki๏ผ |
โๅ้็จโ็ๆๆๆฏ๏ผๅฃ้ณไปๆฏๆ ๅๆฎ้่ฏ๏ผไฝ้ณ่ฒๆดๆฅ่ฟๅบ็กๆจกๅ็้ป่ฎคๅฃฐ้ณ๏ผ่ไธๆฏ่ง่ฒๆฌไบบใ
ไฝฟ็จ่งๅ๏ผ
- ็ๆ็้ณ้ขๅไธบ AI ๅๆ๏ผๅๅธๆถ้กปๆ็กฎๆ ๆณจโAI็ๆโ๏ผใไบบๅทฅๆบ่ฝ็ๆๅๆๅ ๅฎนๆ ่ฏๅๆณใ๏ผ2025-09-01 ่ตทๆฝ่ก๏ผใๅจ bilibili ๆ็จฟๆถ๏ผ่ฏทๅจไธไผ ้กตๅพ้ AI ๆ ่ฏใ
- ็ฆๆญขๅ็จใ็ฆๆญขๅๅ ๅฃฐไผๆๅฎๆน๏ผ็ฆๆญข็จไบๆๅฎณ่ง่ฒๅๅฃฐไผๅฝข่ฑก็ๅ ๅฎนใ
- BanG Dream! ๅฎๆนไบๅๆๅ๏ผhttps://bang-dream.com/bdp-guideline/๏ผ็ฌฌ 10 ๆก็ฆๆญขไฝฟ็จไฝๅ้ณๅฃฐๅถไฝใๅ ฌๅผไบๆฌกๅไฝใๆฌๆจกๅๆฏๅจๆญคๅๆไธ็้ๅฎๆน็ฒไธไฝๅใๆๅฉๆนๆๅฃฐไผๆๅบ่ฆๆฑๆถ๏ผๆจกๅไธๆผ็คบๅฐ็ซๅณไธๆถใ
Voices
speaker ids are <band>_<name>. "Mandarin identity" is the share of 32 Mandarin test renders that an independent speaker probe attributes to the right voice among all 49 ("Japanese identity" is the same over the Japanese test renders. generic means the voice speaks Mandarin with a native accent but in a timbre closer to the base model's default voice than to the character; partly generic means that happens on some seeds).
speaker |
Character | ไธญๆๅ | Band | Japanese data | Japanese identity | Mandarin identity | Mandarin voice |
|---|---|---|---|---|---|---|---|
ppp_kasumi |
ๆธๅฑฑ้ฆๆพ | ๆทๅฑฑ้ฆๆพ | Poppin'Party | 35 min | 0.84 | 0.25 | generic |
ppp_tae |
่ฑๅใใ | ่ฑๅญๅคๆ | Poppin'Party | 31 min | 1.00 | 0.94 | own voice |
ppp_rimi |
็่พผใใฟ | ็่พผ้็พ | Poppin'Party | 24 min | 1.00 | 0.25 | generic |
ppp_saaya |
ๅฑฑๅนๆฒ็ถพ | ๅฑฑๅนๆฒ็ปซ | Poppin'Party | 47 min | 1.00 | 1.00 | own voice |
ppp_arisa |
ๅธใถ่ฐทๆๅฒ | ๅธ่ฐทๆๅฒ | Poppin'Party | 61 min | 0.98 | 0.94 | own voice |
ag_ran |
็พ็ซน่ญ | ็พ็ซนๅ ฐ | Afterglow | 26 min | 1.00 | 0.91 | own voice |
ag_moca |
้่ใขใซ | ้ๅถๆฉๅก | Afterglow | 59 min | 0.98 | 1.00 | own voice |
ag_himari |
ไธๅใฒใพใ | ไธๅ็ปฏ็ไธฝ | Afterglow | 45 min | 1.00 | 0.88 | own voice |
ag_tomoe |
ๅฎ็ฐๅทๅทด | ๅฎ็ฐๅทๅทด | Afterglow | 31 min | 1.00 | 0.97 | own voice |
ag_tsugumi |
็พฝๆฒขใคใใฟ | ็พฝๆณฝ้ธซ | Afterglow | 30 min | 1.00 | 0.88 | own voice |
pp_aya |
ไธธๅฑฑๅฝฉ | ไธธๅฑฑๅฝฉ | Pastel*Palettes | 52 min | 0.98 | 0.84 | partly generic |
pp_hina |
ๆฐทๅทๆฅ่ | ๅฐๅทๆฅ่ | Pastel*Palettes | 34 min | 1.00 | 0.97 | own voice |
pp_chisato |
็ฝ้ทบๅ่ | ็ฝ้นญๅๅฃ | Pastel*Palettes | 26 min | 1.00 | 1.00 | own voice |
pp_maya |
ๅคงๅ้บปๅผฅ | ๅคงๅ้บปๅผฅ | Pastel*Palettes | 45 min | 1.00 | 0.94 | own voice |
pp_eve |
่ฅๅฎฎใคใด | ่ฅๅฎซไผ่ | Pastel*Palettes | 46 min | 1.00 | 0.62 | partly generic |
ro_yukina |
ๆนๅๅธ้ฃ | ๅๅๅธ้ฃ | Roselia | 19 min | 1.00 | 1.00 | own voice |
ro_sayo |
ๆฐทๅท็ดๅค | ๅฐๅท็บฑๅค | Roselia | 31 min | 1.00 | 1.00 | own voice |
ro_lisa |
ไปไบใชใต | ไปไบ่่ | Roselia | 39 min | 1.00 | 1.00 | own voice |
ro_ako |
ๅฎ็ฐๅทใใ | ๅฎ็ฐๅทไบๅญ | Roselia | 8 min | 1.00 | 0.88 | own voice |
ro_ako_maou |
ๅฎ็ฐๅทใใ | ๅฎ็ฐๅทไบๅญ๏ผๅคง้ญๅงฌ๏ผ | Roselia | 5 min | 0.88 | 0.31 | generic |
ro_rinko |
็ฝ้็ๅญ | ็ฝ้็ๅญ | Roselia | 42 min | 1.00 | 0.53 | generic |
hhw_kokoro |
ๅผฆๅทปใใใ | ๅผฆๅทๅฟ | Hello, Happy World! | 29 min | 1.00 | 0.94 | own voice |
hhw_kaoru |
็ฌ็ฐ่ซ | ๆฟ็ฐ่ฐ | Hello, Happy World! | 30 min | 1.00 | 0.84 | partly generic |
hhw_hagumi |
ๅๆฒขใฏใใฟ | ๅๆณฝ่ฒ็พ | Hello, Happy World! | 23 min | 1.00 | 0.81 | partly generic |
hhw_kanon |
ๆพๅ่ฑ้ณ | ๆพๅ่ฑ้ณ | Hello, Happy World! | 36 min | 1.00 | 0.66 | partly generic |
hhw_misaki |
ๅฅฅๆฒข็พๅฒ | ๅฅฅๆณฝ็พๅฒ | Hello, Happy World! | 37 min | 1.00 | 0.97 | own voice |
mo_mashiro |
ๅ็ฐใพใใ | ไป็ฐ็็ฝ | Morfonica | 23 min | 1.00 | 0.97 | own voice |
mo_touko |
ๆกใถ่ฐท้ๅญ | ๆก่ฐท้ๅญ | Morfonica | 22 min | 1.00 | 0.91 | own voice |
mo_nanami |
ๅบ็บไธๆทฑ | ๅนฟ็บไธๆทฑ | Morfonica | 34 min | 1.00 | 0.94 | own voice |
mo_tsukushi |
ไบ่ใคใใ | ไบๅถ็ญ็ดซ | Morfonica | 25 min | 1.00 | 1.00 | own voice |
mo_rui |
ๅ ซๆฝฎ็ ๅฏ | ๅ ซๆฝฎ็ ๅฏ | Morfonica | 26 min | 1.00 | 1.00 | own voice |
ras_layer |
ๅๅฅใฌใค | ๅๅฅ็ไพ | RAISE A SUILEN | 33 min | 1.00 | 1.00 | own voice |
ras_lock |
ๆๆฅๅ ญ่ฑ | ๆๆฅๅ ญ่ฑ | RAISE A SUILEN | 34 min | 1.00 | 0.50 | generic |
ras_masking |
ไฝ่คใพใใ | ไฝ่ค็ๆจ | RAISE A SUILEN | 23 min | 1.00 | 0.81 | partly generic |
ras_pareo |
้ณฐๅไปค็้ฃ | ้ณฐๅไปค็้ฃ | RAISE A SUILEN | 22 min | 1.00 | 0.97 | own voice |
ras_chuchu |
็ ๆใกใ | ็ ๆ็ฅ็ฑ | RAISE A SUILEN | 42 min | 0.93 | 0.75 | partly generic |
mygo_tomori |
้ซๆพ็ | ้ซๆพ็ฏ | MyGO!!!!! | 30 min | 1.00 | 0.44 | generic |
mygo_anon |
ๅๆฉๆ้ณ | ๅๆฉ็ฑ้ณ | MyGO!!!!! | 11 min | 1.00 | 0.94 | own voice |
mygo_raana |
่ฆๆฅฝๅฅ | ่ฆไนๅฅ | MyGO!!!!! | 13 min | 1.00 | 0.91 | own voice |
mygo_soyo |
้ทๅดใใ | ้ฟๅด็ฝไธใ็ด ไธใ | MyGO!!!!! | 10 min | 0.88 | 1.00 | own voice |
mygo_soyo_tsuki |
้ทๅดใใ | ้ฟๅด็ฝไธใ็ด ไธใ๏ผๆไนๆฃฎ๏ผ | MyGO!!!!! | 16 min | 1.00 | 0.44 | generic |
mygo_taki |
ๆคๅ็ซๅธ | ๆคๅ็ซๅธ | MyGO!!!!! | 27 min | 1.00 | 0.97 | own voice |
mujica_uika |
ไธ่งๅ่ฏ | ไธ่งๅๅ | Ave Mujica | 6 min | 1.00 | 1.00 | own voice |
mujica_mutsumi |
่ฅ่็ฆ | ่ฅๅถ็ฆ | Ave Mujica | 3 min | 1.00 | 0.91 | own voice |
mujica_mortis |
่ฅ่็ฆ | Mortisใๅขจ็ผไธใ | Ave Mujica | 5 min | 1.00 | 0.94 | own voice |
mujica_umiri |
ๅ ซๅนกๆตท้ด | ๅ ซๅนกๆตท้ | Ave Mujica | 3 min | 0.97 | 1.00 | own voice |
mujica_nyamu |
็ฅๅคฉๅฏบใซใใ | ็ฅๅคฉๅฏบ่ฅ้บฆใๅตๆขฆใ | Ave Mujica | 6 min | 1.00 | 1.00 | own voice |
mujica_sakiko |
่ฑๅท็ฅฅๅญ | ไธฐๅท็ฅฅๅญใๅฐ็ฅฅใ | Ave Mujica | 6 min | 0.83 | 0.94 | own voice |
mujica_sakiko_tsuki |
่ฑๅท็ฅฅๅญ | ไธฐๅท็ฅฅๅญใๅฐ็ฅฅใ๏ผๆไนๆฃฎ๏ผ | Ave Mujica | 13 min | 1.00 | 0.78 | partly generic |
Summary: Japanese is in-voice for all 49 (pooled identity 0.986, real recordings 0.988). Mandarin is in-voice for 34 voices; the 15 marked generic or partly generic fall back toward a generic timbre in Mandarin and English.
Persona rows. ro_ako_maou (Ako's ๅคง้ญๅงซ persona), mygo_soyo_tsuki and mujica_sakiko_tsuki (the ๆใๆฃฎ versions) and mujica_mortis (Mortis) are separate rows. Their real recordings are confused with the base character 89โ97% of the time by the same probe, so expect them to be close to their base row.
FAQ
Does it need reference audio?
No. Every voice is a built-in speaker row, called by its id (speaker="mygo_anon").
Can the characters speak Chinese?
Yes. Pass language="Chinese". Every voice speaks Mandarin with a native accent. Most voices also keep their own timbre in Mandarin; those that drift toward a generic timbre are marked in the table and listed in the Chinese section.
Which revision should I load?
mainfor the 49 Girls Band Party / MyGO!!!!! / Ave Mujica voices.revision="ournotes"for the 16 Our Notes characters and the*_ournotesvoices.- The demo picks the right one automatically.
How is it different from GPT-SoVITS, RVC or Bert-VITS2 character models?
- It is one checkpoint with every voice built in, so it needs no reference clip (GPT-SoVITS) and no source recording (RVC).
- Bert-VITS2 character models also call built-in speakers; against those, the difference is Mandarin and evaluation.
- It was trained so that its Mandarin is not Japanese-accented.
- Its checkpoints were chosen by rules fixed before training, and the later ones by blind listening.
What hardware does it need?
It is a fine-tune of Qwen3-TTS-12Hz-1.7B-Base; the bf16 weights are 3.8 GB, and inference runs on a CUDA GPU (pip install qwen-tts). Without a GPU, use the demo.
Can I download it from mainland China?
Set HF_ENDPOINT=https://hf-mirror.com before from_pretrained("starrydark/BanG_Dream_Qwen3_TTS", ...).
Can I post what I make? Only as a labelled, non-commercial fan work. The BanG Dream! fan-work guideline prohibits derivative works that use the franchise's audio (item 10), and China requires an explicit AI label on generated audio. Never impersonate the cast or present output as official. See Rights and responsible use.
Is this official, or related to ๅคขใ็ตๅฑ (ๆขฆ็็ปๅฑ)? No. This is an unofficial fan project. ๅคขใ็ตๅฑ is Bushiroad Music's official AI singing product and is unrelated.
Evaluation
Checkpoints were chosen by selection rules written down before each training run (eval/E1_PLAN.md, eval/E5_PLAN.md). Per checkpoint: 4,356 renders, i.e. 49 voices ร (held-out game lines + 12 new Japanese sentences, 16 Mandarin, 8 English) ร 2 seeds.
Measures:
- Identity (leak): the share of renders a codec-calibrated speaker probe (logistic regression on Qwen3-TTS speaker-encoder vectors, fitted on resynthesised real clips) assigns to a different voice. Lower is better.
- ja CER: Qwen3-ASR character error rate on held-out Japanese lines.
- Mandarin accent: SER (shared-character syllable error rate, human-validated on the sibling Kurisu project) and lid (a language-id log-ratio; more negative = more native).
- en WER / lid: the same for English.
| Model | ja leak โ | ja p_true โ | ja CER โ | zh SER โ | zh lid โ | zh leak โ | Own-voice Mandarin (zh leak โค 0.15) | en lid โ | en WER โ |
|---|---|---|---|---|---|---|---|---|---|
| Real recordings, through the codec | 0.012 | 0.777 | 0.023 | โ | โ | โ | โ | โ | โ |
| Floor: untrained Base, same speaker vectors | 0.100 | 0.567 | 0.032 | 0.077 | โ19.5 | 0.157 | 36/49 | โ12.2 | 0.001 |
| E1a epoch 1: Japanese + language ids + replay, no pseudo-Mandarin (rejected: accented Mandarin) | 0.009 | 0.810 | 0.027 | 0.177 | โ12.6 | 0.008 | โ | โ | 0.006 |
| This model: E1b epoch 2 | 0.014 | 0.802 | 0.028 | 0.069 | โ18.6 | 0.155 | 34/49 | โ9.3 | 0.003 |
| E2 epoch 2: + more self-generated rows (not adopted) | 0.021 | 0.786 | โ | 0.063 | โ19.7 | 0.186 | 34/49 | โ10.1 | โ |
| E5 epoch 2: + 218 RVC-converted Mandarin rows (not adopted) | 0.014 | 0.815 | 0.025 | 0.078 | โ18.1 | 0.088 | 40/49 | โ9.5 | 0.003 |
How to read the table:
- Japanese identity is at the real-recording level (leak 0.014 against 0.012 for real clips through the same codec; the untrained floor is 0.100). The remaining errors are mostly inside persona pairs, plus
ppp_kasumi(0.84). - Mandarin accent stays at the floor (SER 0.069 vs 0.077). With language ids and 13% native replay but only Japanese in the characters' voices (E1a), Mandarin comes out Japanese-accented (SER 0.177); adding 5% gated in-voice pseudo-Mandarin (this model) removes it.
- Mandarin identity is the open problem. Voices that had no usable in-voice Mandarin rows fall back to the base model's timbre.
- Six follow-ups did not replace this model.
- E2 (doubling the self-generated rows) diluted identity.
- E5 trained per-voice RVC converters on each voice's Japanese clips, converted native Mandarin into 15 voices, and retrained. Mandarin identity improved (0.155 โ 0.088, 34 โ 40 voices; Eve, Kanon, Hagumi, Aya, Kaoru fixed), but it missed the adoption bar fixed before training (โค 0.08, โฅ 43/49, targets โค 0.15). Following that rule, E5 is not released.
- Details:
eval/E5_RESULTS.md. - E6 and E7 (2026-11-08) retrained on BanG Dream! Our Notes story audio: the MyGO!!!!! / Ave Mujica voices were replaced, and 16 new characters were added (E7 with own-voice Mandarin rows from the start). Neither passed its pre-registered guards. The main blockers were one new voice's Japanese identity (yomogi), Japanese CER on the new text (which real recordings themselves only just clear) and Mandarin accent on three voices. So v2 was not released. Details:
e6/E6_RESULTS.mdande7/E7_RESULTS.mdin the code repository. - E8 and E9 (2026-11-09) were judged by blind listening against this model.
- E9 trained both eras of the MyGO!!!!! / Ave Mujica characters, with one id per era.
- Its 25 Our Notes voices were all judged in character, but its versions of this model's MyGO!!!!! / Ave Mujica voices were judged worse than these (mean โ0.58 on โ3โฆ+3, p = 0.046).
- So this model stays the default, and E9 is published only as the opt-in
ournotesbranch for its 25 Our Notes voices. - Details:
e9/E9_RESULTS.mdin the code repository andeval/on that branch.
Training details
The code is in the GitHub repository. Training records (data counts, mix, reports) are in training_data/; per-clip transcripts are deliberately not published.
Data
- Japanese: 9,804 voice lines (22.1 h) of the 49 voices, re-cut and levelled per voice; transcripts checked with Qwen3-ASR; held-out test lines and validation are split off; 9,268 lines are in training. Poppin'Party to MyGO!!!!! come from the game Girls Band Party; Ave Mujica's (3โ13 min per voice) mostly from the anime.
- Native replay: about 13% of training rows are native Mandarin (AISHELL-3) and English (LibriTTS-R) clips from 55 auxiliary speakers, so the model keeps native articulation in those languages.
- Pseudo-Mandarin (in-voice): gated Base-model renders in each voice's locked speaker vector (accent, text and identity gates), capped per voice.
Speaker vectors
- Each voice has a fixed vector: the mean Qwen3-TTS speaker-encoder embedding of up to 64 screened reference clips.
- It is written into codec-embedding rows 3000โ3048 and never trained.
Optimisation
- Full fine-tune, fp32 master weights, bf16 autocast; AdamW, lr 5e-6, weight decay 0.01, cosine over a 3-epoch schedule with checkpoints at epochs 1, 2 and 3; this is the epoch-2 checkpoint (picked by the pre-registered rule); effective batch 32.
- Language id on every row, 25% of rows on the Auto prefix.
- Trainer: the fixed multi-speaker trainer from the Kurisu project (corrects the official
sft_12hz.py's label shift, sub-talker frame andtext_projectionbugs).
Compute: one H100 80GB. The whole E1 study (smoke test, two arms ร three epochs, floor and real-clip references, evaluation) took about 5 h, about $20; this model's own training took about 10 minutes. The follow-ups (E2, E5โE9) are documented in the code repository.
Limitations
- Mandarin in a generic timbre for 15 voices:
ppp_kasumi,ppp_rimi,ro_ako_maou,ro_rinko,ras_lock,mygo_tomori,mygo_soyo_tsuki(generic), andpp_eve,hhw_kanon,ras_chuchu,mujica_sakiko_tsuki,hhw_hagumi,ras_masking,pp_aya,hhw_kaoru(partly). Their Mandarin is native-accented but may not sound like the character. - English is intelligible but mildly Japanese-accented for most voices (en lid โ9.3; the untrained floor is โ12.2), and clearly accented for the generic group. There were no English in-voice rows.
- Persona pairs are close.
mujica_sakiko/mujica_sakiko_tsuki,mygo_soyo/mygo_soyo_tsukiandro_ako/ro_ako_maousometimes swap (Japanese identity 0.83โ0.88 for the weaker side).ppp_kasumihas the lowest Japanese identity among the game voices (0.84). - Ave Mujica voices have little data (3โ13 min, mostly anime audio), so they are less stable than the game voices.
- Evaluation is automatic (speaker probe, ASR, accent metrics). Listening checks were used for intermediate data, not for a full blind test of this checkpoint.
Rights and responsible use
This is an unofficial fan project, with no affiliation to Bushiroad, Craft Egg, the BanG Dream! project, or the voice cast.
- The characters, the source audio and all related marks belong to their respective owners.
- No copyright, performer, publicity or voice rights are granted by this repository.
- No game audio, dataset, transcripts or audio samples are distributed here; only model weights and evaluation numbers.
- The official BanG Dream! fan-work guideline (https://bang-dream.com/bdp-guideline/) prohibits derivative works that use the franchise's audio. Item 10 reads ใๆฌใณใณใใณใใฎใใกใ้ณๅฃฐใๅฉ็จใใไบๆฌก็่ไฝ็ฉใฎๅถไฝใๅฑ็คบใ้ ๅธใๅ ฌ้ใใ. This model is an unofficial fan work made despite that. Read the guideline before using outputs anywhere public.
- AI labels: in mainland China, AI-generated audio must carry an explicit AI label (ใไบบๅทฅๆบ่ฝ็ๆๅๆๅ ๅฎนๆ ่ฏๅๆณใ, in force since 2025-09-01), and bilibili asks uploaders to set its AIๆ ่ฏ when uploading.
Do not use it to:
- impersonate the voice actors or anyone else;
- mislead people about authentic or official speech, or make anything that could be mistaken for official material;
- harm the image of the characters or the cast;
- suggest endorsement, harass, or make commercial use.
Disclose synthetic audio as synthetic. Users are responsible for lawful use in their jurisdiction. Rights holders and cast members may contact the repository owner (Hugging Face: starrydark; GitHub: starryark, issues) for removal, and the repository will be taken down on request.
Model weights derive from Qwen3-TTS (Apache-2.0).
Citation
@misc{bangdream_qwen3_tts_2026,
title = {BanG Dream! character voices: a cross-lingual Qwen3-TTS fine-tune},
author = {starrydark},
year = {2026},
howpublished = {\url{https://huggingface.co/starrydark/BanG_Dream_Qwen3_TTS}},
note = {Code: \url{https://github.com/starryark/bangdream-tts}}
}
@article{qwen3tts2026,
title = {Qwen3-TTS Technical Report},
journal = {arXiv preprint arXiv:2601.15621},
year = {2026}
}
- Downloads last month
- 132