高品質なボイスクローンの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
- 最初の2行は、ここに書いてあった
RuntimeError: espeak not installed on your system
の対応策 - 次の2行は、実行時
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の文字コード問題)が出てきて面倒なので、この策に落ち着いた
- なお真面目に
- 最初の2行は、ここに書いてあった
-
.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の方法