LoginSignup
1
0

【ESPnet】dockerで日本語のTTSレシピを実行する方法【音声合成】

Last updated at Posted at 2023-09-02

はじめに

公式ドキュメントにあるDockerコンテナ内でレシピを実行する方法を試してみました。

この記事はDockerの環境構築が終わっている前提で書いています。
Dockerが入っていない方はInstall Docker Engine | Docker Documentからインストールしてください。

また、windowsの方は「WSL2 + Nvidia container toolkit + WSL2内にdocker」を以下の記事を参考にそれぞれインストールしてください。

WSL2:windows10,WSL2でESPNetの環境構築【音声合成】- qiita記事
Nvidia container toolkit:Dockerを使って爆速でGPUを設定する方法 - qiita記事
WSL2内のdocker:wsl2にdocker, docker-composeをインストールする【メモ】 - qiita記事

リポジトリをクローンする

espnetでいろいろ学習を回すと100GBとか余裕でストレージを食うので、実験フォルダだけを別ストレージに退避しておくとか、余裕のあるストレージにcloneしておくことを推奨します。

git clone
git clone https://github.com/espnet/espnet

cloneするとespnetというフォルダが作成されます。

run.shを少し変更する

おそらく日本語TTS用に書かれていないので、そのままだと「pyopenjtalkないよ」というエラーで処理が止まります。なので、内部のレシピ実行前にpyopenjtalkをインストールするコマンドを挿入します。
以下のように、178行目の後ろにインストールコマンドを追加する処理を書きます。
image.png

追加するコマンド
cmd="pip install pyopenjtalk; ${cmd}"

これだと学習を実行するたびに毎回pipインストールが走るので、無駄な待ち時間が発生するので、もっとスマートなやり方がないか考えましたが、思いつきませんでした。有識者の方がいらっしゃったらコメントで教えていただけると助かります。

※謎のエラーが出たとき↓

Error utils/validate_data_dir.sh: text contains 7696 lines with non-printable characters **espnet/egs2/TEMPLATE/asr1/utils/validate_data_dir.sh** の中のnon_print判定のところでこけているので、そこを直す。これが正しい治し方なのかはわからないが、これで動く。

image.png

置き換える行
if locale -a | grep "C.utf8" >/dev/null; then

run.shを実行する

espnet/docker/
./run.sh --docker-gpu 0 --is-egs2 --docker-egs jsut/tts1

このコマンドで学習まで自動で実行されます。dockerイメージのpullからデータダウンロード、前処理など様々なタスクがあるので、学習が始まるまでもそこそこかかりますし、学習自体も2,3日くらいかかると思います。

おわりに

既存のレシピでハイパーパラメータを変えて実験する程度であれば問題ないと思いますが、自作のレシピを開発する場合や既存レシピを少し変えたい場合などはこの実行方法だと不便かなと思いました。
レシピ自作マンになりたい人は、つよつよLinuxマシンに直接インストールして開発しましょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0