高品質なボイスクローンのZonosをWindowsで動かそうと思ったら苦労したのでメモ。
日本語も対応しており、かなり高品質な音声合成を体験できました。
環境
- Windows11
- GPU無し
- uvインストール済み
うまくいった方法
uv sync-
espeak-ngのインストール
-
espeak-ng.msiをダウンロード&インストール - デフォルトで
C:\Program Files\eSpeak NGにインストールされた
-
- ソースコードの修正
-
./gradio_interface.pyの最初に追加import os os.environ["PHONEMIZER_ESPEAK_LIBRARY"]=r"C:\Program Files\eSpeak NG\libespeak-ng.dll" import torch._dynamo torch._dynamo.config.suppress_errors = True os.environ["TORCH_COMPILE_SKIP"]="1" os.environ["TORCHINDUCTOR_ENABLED"] = "0" os.environ["TORCH_COMPILE_DISABLE"] = "1"- 前半は、ここに書いてあった
RuntimeError: espeak not installed on your systemの対応策 - 後半は、実行時
You can suppress this exception and fall back to eager by setting:によって表示された対応策- なお真面目に
RuntimeError: Compiler: cl is not found.に対応しても、次にはUnicodeDecodeError: 'utf-8' codec can't decode byte 0x8d in position 214: invalid start byteのエラー(shift-jisとutf-8の文字コード問題)が出てきて面倒なので、この策に落ち着いた
- なお真面目に
- 前半は、ここに書いてあった
-
.venv/Lib/site-packages/phonemizer/backend/espeak/wrapper.pyのset_voice関数内240行目付近を修正するfor voice in self.available_voices(): if (voice.language not in available) or (voice.language=="ja"): available[voice.language] = voice.identifier-
ここに書いてあった
RuntimeError: failed to load voice "ja"の対応策
-
ここに書いてあった
-
uv run gradio_interface.py-
http://localhost:7860/ へのアクセス
- 表示される
http://0.0.0.0:7860はアクセスできないのでlocalhostを使う
- 表示される
- WebUIの
Text to Synthesizeに合成したい日本語のスクリプトを記入し、Language Codeを"ja"にしてGenerate Audioを押す- 1,2分かかって、デフォルト声で合成された音声が再生される
-
Optional Speaker Audio (for cloning)に合成したい人の声サンプルをmp3等でいれるとその人の声で合成ができる
だめだった方法
- espeak-ngインストール後、環境変数のPATHに追加しても認識しない
- Windows用forkレポジトリのpowershell用スクリプト
- 公式に記載されているDockerの方法