MeloTTS-Korean's symbol vocab only includes precomposed Hangul
syllables. Bare Hangul Compatibility Jamo characters (ㅋㅋㅋ, ㅠㅠ, ㅎㅎ)
and Hangul Jamo block code points blow up in
`cleaned_text_to_sequence` with `KeyError: 'ㅋ'` (or similar).
Pre-clean the request text in `/tts` to drop those code point ranges
before handing the string to the model, collapsing the leftover
whitespace. If sanitization yields an empty string, return 400 with
an explanation instead of a 500 stack trace.
Also document the limitation in the README troubleshooting section.
User got past wheel build, then hit at startup:
RuntimeError: Failed initializing MeCab
[ifs] no such file or directory:
.../site-packages/unidic/dicdir/mecabrc
Root cause: MeloTTS's text/cleaner.py unconditionally imports the
japanese module, which initializes MeCab.Tagger() at module load
time. So even Korean-only use needs the unidic dictionary data,
which is a separate ~250MB download.
- README: add explicit `python -m unidic download` step after
pip install, and a troubleshooting entry for the mecabrc error.
- Dockerfile: run `python -m unidic download` during image build so
the container is usable immediately.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
User hit "Failed building wheel for tokenizers / fugashi / mecab-python3"
on first install. Root cause is missing prebuilt wheels (typically
Python 3.12+) and missing MeCab/Rust system tools.
- Dockerfile: python:3.11-slim + MeCab + Rust, one-shot path that
bypasses host setup entirely.
- README: explicit "Python 3.10/3.11 OR Docker" guidance, per-error
troubleshooting, OS-specific system-package commands.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
melo-test/ contains a minimal FastAPI server + static HTML UI for
auditioning MeloTTS-Korean before wiring it into the bot:
- server.py: POST /tts -> wav, model loaded once at startup
- index.html: textarea + presets + audio player, shows synth latency
- requirements.txt / README.md: setup steps
Directory is melo-test/ because the repo .gitignore already excludes
test/. Discord-bot integration is unchanged in this branch; this is a
local audition harness only.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>