fix(melo-test): unidic download is mandatory, not optional

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>
This commit is contained in:
Claude Owner
2026-05-26 20:45:24 +09:00
parent e7224d0670
commit 2bed5f38b7
2 changed files with 15 additions and 1 deletions

View File

@@ -28,6 +28,10 @@ COPY requirements.txt .
RUN pip install --upgrade pip setuptools wheel \
&& pip install -r requirements.txt
# unidic 사전 데이터 (~250MB). MeloTTS 가 한국어만 써도 임포트 시점에
# 일본어 MeCab Tagger 를 무조건 초기화하므로 생략 불가.
RUN python -m unidic download
COPY . .
EXPOSE 7860

View File

@@ -40,7 +40,13 @@ source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
# 3. 실행
# 3. unidic 사전 데이터 다운로드 (~250MB, 한 번만)
# 한국어만 써도 MeloTTS 가 임포트 시점에 일본어 MeCab Tagger 를
# 무조건 초기화하므로 이 단계가 필수입니다. 생략하면 서버 시작 시
# "no such file or directory: ...\unidic\dicdir\mecabrc" 로 죽음.
python -m unidic download
# 4. 실행
python server.py
# 포트 변경: PORT=8000 python server.py
```
@@ -108,6 +114,10 @@ Content-Type: application/json
한국어 발음이 깨짐
→ 입력에 영문/이모지가 섞이면 운율이 어색해질 수 있음. 디스코드 봇 통합 단계에서 `TTSClient.textReplace` 같은 사전 치환을 그대로 활용.
`RuntimeError: Failed initializing MeCab` / `no such file or directory: ...\unidic\dicdir\mecabrc`
`unidic` 사전 데이터 미다운로드. 가상환경 활성화 상태에서 `python -m unidic download` 실행 후 재시작.
한국어만 써도 MeloTTS 가 임포트 시점에 일본어 모듈을 강제 로딩하기 때문에 이 단계는 필수.
## 디스코드 봇 연동 (테스트 성공 후)
MeloTTS 서버를 LAN(예: 시그니처 서버 옆)에 띄우고,