mieki256's diary



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。
$ python --version
Python 3.10.12

インストール :

python -m pip install TTS

TTS 0.22.0 の他に、色々なモジュールが山ほど入った。仮想環境を作って試したほうが良かったかもしれない…。

使い方 :

Pythonモジュールではあるけれど、tts というコマンドラインツールも入っているので、それを使って動作確認。
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を使えばもうちょっと速く生成できたりするのかな…?

ところで、渡すテキストによっては、途中で「ホニャララウンジャラウニャウニャ」的な謎の音声が含まれて出力されるようで…。どういう条件なら出現するのか、ちょっとよく分からない…。

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 という名前で作って作業してみた。
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を使った場合、生成時間がかなり短くなってくれた。短文では違いが分からないけれど、長文を渡すと圧倒的に生成時間が短い。数十秒かかっていたのが、数秒で終わる印象。

サンプル音声 :

一応サンプル音声も載せてみる。

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

以上です。

過去ログ表示

Prev - 2024/09 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project