2024/09/22(日) [n年前の日記]
#1 [dtm][python] Coqui-TTSを試用
Coqui-TTS という音声合成ライブラリがあるらしい。ディープラーニングで作られたTTS(Text to Speech)なのだとか。元々は Mozilla TTS というプロジェクトだったそうで。
_coqui-ai/TTS: a deep learning toolkit for Text-to-Speech, battle-tested in research and production
_TTS - PyPI
_coqui-tts - PyPI
Pythonのモジュールとしてインストールできるらしいのだけど、TTS と coqui-tts の2つがあるようで…。どっちがどう違うのか、よく分からない…。
Ubuntu Linux 22.04 LTS上でインストールして試用してみた。とりあえず今回は TTS のほうを試用してみる。
ハードウェアは、CPU : Intel i3-6100T、GPU : 内蔵GPU、RAM : 8GB。Python バージョンは 3.10.12。
TTS 0.22.0 の他に、色々なモジュールが山ほど入った。仮想環境を作って試したほうが良かったかもしれない…。
_coqui-ai/TTS: a deep learning toolkit for Text-to-Speech, battle-tested in research and production
_TTS - PyPI
_coqui-tts - PyPI
Pythonのモジュールとしてインストールできるらしいのだけど、TTS と coqui-tts の2つがあるようで…。どっちがどう違うのか、よく分からない…。
Ubuntu Linux 22.04 LTS上でインストールして試用してみた。とりあえず今回は TTS のほうを試用してみる。
ハードウェアは、CPU : Intel i3-6100T、GPU : 内蔵GPU、RAM : 8GB。Python バージョンは 3.10.12。
$ python --version Python 3.10.12
◎ インストール :
python -m pip install TTS
TTS 0.22.0 の他に、色々なモジュールが山ほど入った。仮想環境を作って試したほうが良かったかもしれない…。
◎ 使い方 :
Pythonモジュールではあるけれど、tts というコマンドラインツールも入っているので、それを使って動作確認。
実行すると、自動で足りないモデルデータをダウンロードしてから音声を生成してくれた。モデルデータは以下の場所に保存されるらしい。
以下の2つのファイルが入った。113MB と 3.8MBのファイルサイズだった。
さておき。22050Hz、モノラルの音声が得られた。
tts --text "Hello world" --out_path speech.wav
実行すると、自動で足りないモデルデータをダウンロードしてから音声を生成してくれた。モデルデータは以下の場所に保存されるらしい。
/home/(USERNAME)/.local/share/tts/
以下の2つのファイルが入った。113MB と 3.8MBのファイルサイズだった。
tts_models--en--ljspeech--tacotron2-DDC vocoder_models--en--ljspeech--hifigan_v2
さておき。22050Hz、モノラルの音声が得られた。
◎ 印象 :
espeak (espeak-ng) や festival と比べると、かなり滑らかでイイ感じの音声に聞こえた。
ただ、生成には数十秒(30秒ほど)かかった。おそらく、Intel製内蔵GPUしか持ってない環境だからCPUで生成しているのだろうけど…。espeak や festival はすぐに音声が聞こえたけれど、それらと比べると結構な時間がかかる。品質と時間のトレードオフだろうか。
GPUを使えばもうちょっと速く生成できたりするのかな…?
ところで、渡すテキストによっては、途中で「ホニャララウンジャラウニャウニャ」的な謎の音声が含まれて出力されるようで…。どういう条件なら出現するのか、ちょっとよく分からない…。
ただ、生成には数十秒(30秒ほど)かかった。おそらく、Intel製内蔵GPUしか持ってない環境だからCPUで生成しているのだろうけど…。espeak や festival はすぐに音声が聞こえたけれど、それらと比べると結構な時間がかかる。品質と時間のトレードオフだろうか。
GPUを使えばもうちょっと速く生成できたりするのかな…?
ところで、渡すテキストによっては、途中で「ホニャララウンジャラウニャウニャ」的な謎の音声が含まれて出力されるようで…。どういう条件なら出現するのか、ちょっとよく分からない…。
◎ Windows10上でもインストール :
Windows10 x64 22H2上でもインストールしてみた。ハードウェア環境は、CPU : AMD Ryzen 5 5600X、RAM : 16GB、GPU : NVIDIA GeForce FTX 1060 6GB。Python は 3.10.10。
今回は、X:\aiwork\coqui-tts\ というディレクトリを作って、その中にPythonの仮想環境を coquitts という名前で作って作業してみた。
Ubuntu Linuxと同様に TTS をインストール。
全体的に 6.34GB ほどのファイル群がインストールされた。
動作確認。
Ubuntu Linux上と同じように生成できた。モデルデータも、自動でダウンロードしてから処理をしてくれる。モデルデータは以下にダウンロードされる模様。
ただ、GPU (CUDA) を使おうとして --use_cuda true をつけてみるとエラーが出る。
以下で解決策が紹介されてた。
_pipでPyTorchインストール時に「Torch not compiled with CUDA enabled」エラー - Qiita
ただ、この操作をしてみても、自分の環境では相変わらずエラーが出たので、上記で紹介されていた、以下のページの作業を試してみた。
_Previous PyTorch Versions | PyTorch
自分の環境は、CUDA 11.8 をインストール済みなので、以下を打った。
この状態なら、--use_cuda true をつけても処理ができるようになった。
GPUを使った場合、生成時間がかなり短くなってくれた。短文では違いが分からないけれど、長文を渡すと圧倒的に生成時間が短い。数十秒かかっていたのが、数秒で終わる印象。
今回は、X:\aiwork\coqui-tts\ というディレクトリを作って、その中にPythonの仮想環境を coquitts という名前で作って作業してみた。
cd X:\aiwork\coqui-tts python -m venv coquitts .\coquitts\Scripts\activate
Ubuntu Linuxと同様に TTS をインストール。
python -m pip install TTS
> which TTS "X:\aiwork\coqui-tts\coquitts\Scripts\tts.exe"
全体的に 6.34GB ほどのファイル群がインストールされた。
動作確認。
tts --text "Hello world. Sally sells seashells by the seashore." --out_path helloworld.wav
Ubuntu Linux上と同じように生成できた。モデルデータも、自動でダウンロードしてから処理をしてくれる。モデルデータは以下にダウンロードされる模様。
C:\Users\(USERNAME)\AppData\Local\tts\
ただ、GPU (CUDA) を使おうとして --use_cuda true をつけてみるとエラーが出る。
tts --text "Speaker test. Left. Center. Right." --out_path speakertest.wav --use_cuda true
AssertionError: Torch not compiled with CUDA enabled
以下で解決策が紹介されてた。
_pipでPyTorchインストール時に「Torch not compiled with CUDA enabled」エラー - Qiita
ただ、この操作をしてみても、自分の環境では相変わらずエラーが出たので、上記で紹介されていた、以下のページの作業を試してみた。
_Previous PyTorch Versions | PyTorch
自分の環境は、CUDA 11.8 をインストール済みなので、以下を打った。
python -m pip uninstall torch python -m pip cache purge python -m pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu118
この状態なら、--use_cuda true をつけても処理ができるようになった。
GPUを使った場合、生成時間がかなり短くなってくれた。短文では違いが分からないけれど、長文を渡すと圧倒的に生成時間が短い。数十秒かかっていたのが、数秒で終わる印象。
◎ サンプル音声 :
一応サンプル音声も載せてみる。
helloworld.ogg
以下のファイルは、波形編集ソフト(SoundEngine Free 5.23_2)で、ステレオ化、サンプリング周波数を22050Hzから44100Hzに変更している。
speakertest.ogg
vifam.ogg
先日載せた音声サンプルも比較のために再掲しておく。
Ubuntu Linux 22.04 LTS + espeak-ng 1.50 の出力サンプル。
espeak_ng_hello.ogg
Windows10 x64 22H2 + edge-tts 6.1.12 の出力サンプル。
edge_tts_hello.ogg
tts --text "Hello world. Sally sells seashells by the seashore." --out_path helloworld.wav --use_cuda true
helloworld.ogg
以下のファイルは、波形編集ソフト(SoundEngine Free 5.23_2)で、ステレオ化、サンプリング周波数を22050Hzから44100Hzに変更している。
tts --text "Speaker test. Left. Center. Right." --out_path speakertest.wav --use_cuda true
speakertest.ogg
tts --text "Examine data link. Main trans engine. Number 1 2 ON. Number 3 4 OFF. Number 5 6 7 8 ON. Confirmed, round vernirn. Hello, I am VIFAM. Okay VIFAM. your number is 7. instrument recorder on. Permission to sortie. Permission granted. GOOD LUCK, VIFAM 7." --out_path vifam.wav --use_cuda true
vifam.ogg
先日載せた音声サンプルも比較のために再掲しておく。
Ubuntu Linux 22.04 LTS + espeak-ng 1.50 の出力サンプル。
espeak-ng "Hello world. Sally sells seashells by the seashore." -v "English (America)+f3" -s 150 -w espeak_ng_hello.wav
espeak_ng_hello.ogg
Windows10 x64 22H2 + edge-tts 6.1.12 の出力サンプル。
edge-tts -t "Hello world. Sally sells seashells by the seashore." -v en-US-AriaNeural --write-subtitles edge_tts_hello.vtt --write-media edge_tts_hello.mp3
edge_tts_hello.ogg
[ ツッコむ ]
以上です。