初めに
7000言語以上の言語の対応したTTSのIMS-Toucanを動かしていきます
開発環境
環境構築
システム依存関係のインストールします
brew install espeak-ng brew install ffmpeg
インストール後に環境変数にパスを追加します
export PHONEMIZER_ESPEAK_LIBRARY=/opt/homebrew/lib/libespeak-ng.dylib
uvの環境を作ります
uv venv --python 3.10
依存ライブラリをインストールします
uv pip install "torch~=2.4.0" "torchaudio~=2.4.0" "torch_complex~=0.4.3" "epitran==1.24" "tqdm~=4.64.1" "scipy~=1.9.3" "librosa~=0.9.2" "praat-parselmouth~=0.4.2" "numpy~=1.23.4" "soundfile~=0.12.0" "pypinyin~=0.47.1" "pyloudnorm~=0.1.0" "cvxopt~=1.3.0" "sounddevice~=0.4.5" "matplotlib~=3.9.2" "phonemizer~=3.2.1" "pyqt5~=5.15.11" "pyqtgraph~=0.13.7" "wandb~=0.13.5" "speechbrain==0.5.13" "dragonmapper~=0.2.6" "alias_free_torch~=0.0.6" "dotwiz==0.4.0" "transphone==1.5.3" "phonepiece==1.4.2" "geopy==2.4.1" "einops==0.7.0" "datasets~=2.10.1" "pandas~=1.5.0" "rich~=13.4.2" "PyYAML~=6.0" "imageio~=2.34.0" "pykakasi~=2.2.1" "jamo~=0.4.1" "g2pk~=0.9.4" "pykan~=0.2.6" "pynput~=1.7.7" "PyAutoGUI~=0.9.54" "networkx~=3.3" "scikit-learn~=1.5.0" "huggingface-hub>=0.28.1" "gradio~=5.23.2"
実行
日本語および英語の音声を生成してみます
PHONEMIZER_ESPEAK_LIBRARY=/opt/homebrew/lib/libespeak-ng.dylib uv run python -c " from InferenceInterfaces.ToucanTTSInterface import ToucanTTSInterface import os os.makedirs('audios', exist_ok=True) tts = ToucanTTSInterface(device='cpu') # 英語 tts.set_language('eng') tts.read_to_file(['Hello, this is a test.'], 'audios/test_english.wav') # 日本語 tts.set_language('jpn') tts.read_to_file(['こんにちは、テストです。'], 'audios/test_japanese.wav') "
日本語はG2PにTransphoneを使っているのもあってかアクセントの精度は高くないです