ボンズカジノ ツイッター+WaveGlow を動かす(音声合成)【後編】
前編では、ボンズカジノ ツイッターの概要についてお伝えしました。今回は実際にボンズカジノ ツイッターを動かす際の実装方法について解説します。(参照論文:https://arxiv.org/abs/1712.05884)
ボンズカジノ ツイッターの導入について
まずは、私の使った作業環境を先に紹介します。
CPU: | Ryzen 7 3700K |
Mother Board: | ASRock B450/Pro4 |
Memory: | 128 GBytes |
GPU: | NVIDIA RTX3090(VRM:24GByte) |
OS: | Ubuntu 22.04(Ubuntu-ja-22.04-desktop-amd64.iso) |
さて、現在ではボンズカジノ ツイッター+Waveglowのオリジナルコードを試そうとしても(Colabでの実行も含め)バージョンが合わないため動かないようです。
一つに、ボンズカジノ ツイッター+WaveglowのインストールにはTensorflow1.Xが必要な事。さらに、NVIDIA RTX 3000番台以降のGPUを使用する場合、対応するCUDA11以降が必要なため、古い環境を揃えようにも通常の方法では限界があります。
残念ながら、CUDA11とリンクしたTensorflow1.Xは、conda-forge,PyPI 共にありませんので、自身でビルドする必要があります。
そこで、今回はNVIDIAが用意している、Docker イメージ(コンテナ)を使うことにしました。
ちょうど、“nvcr.io/nvidia/tensowflow/22.05-tf1-py3” というのが、動作条件(Tensorflow+CUDA1.7)を満たすイメージコンテナなので、これを使いました。
Dockerイメージカタログの中から見つけることができました。
手順
①必要なイメージをダウンロードします。
docker pull nvcr.io/nvidia/tensowflow/22.05-tf1-py3
②ダウンロードしたイメージのimage id を調べておきます。
docker images
③コンテナーを起動します。
docker -it -gpus all /–mount type=bind,src=/home/d_drive,dst=/home/work -p=8888:8888
–device /dev/snd –group-add audio
–ipc=host –ulimit memlock=1 –ulimit stacks=6710884 <image id
起動オプションが多いので、実際は、compose.ymlで指定する方がよいですが、ここでは割愛します。
④Dockerに入ったら、PyTorchをインストールします。
# pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1
–extra-index-url https://download.pytorch.org/whl/cu117
⑤ボンズカジノ ツイッターのインストールを行います。
# cd /home/work
# git clone https://github.com/NVIDIA/ボンズカジノ ツイッター.git
# cd ボンズカジノ ツイッター
# git submodule init
# git submodule update
⑥Apexをインストールします。
# git clone https://github.com/NVIDIA/apex
# cd apex
# pip install -v –disable-pip-version-check –no-cache-dir –global-option=”–cpp-ext”
–global-option=”–cuda-ext”
# cd ..
⑦その他の必要なモジュールのインストールを実施します。
nanoなどのテキストエディタを使ってrequirements.txtを書きかえます。
matplotlib==3.5.0
tensorflow==1.15.5
numpy==1.13.3
inflect==7.0.0
ibrosa==0.8.0
scipy==1.4.1
Unidecode==1.0.22
pillow
pysoundfile==0.9.0.post1
・インストールを実施
# pip install -r requirements.txt
⑧jupyter lab を起動します。
# jupyter lab –no-browser –ip=0.0.0.0 –p=8888 –allow-root –NotebookApp.token=”
ローカルのプラウザで http:localhost:8888 を指定し、ノートブックを開きます。
プレトレーニング済みモデルのダウンロードは、ブラウザーで、https://github.com/NVIDIA/ボンズカジノ ツイッター を開いて、Inference demoにある、ボンズカジノ ツイッター model と Waveflow modelへのリンクからダウンロードします。ダウンロードしたボンズカジノ ツイッター_statedict.ptとwaveglow_256channels_univesal_v5.ptは、 /home/d_drive/ボンズカジノ ツイッター (docker上では /home/work/ボンズカジノ ツイッター)に移動させます。
動作確認は、inference.ipynb が、プログラム上にあるモデルファイル名をダウンロードしたものと一致させ動けばOKのはずです。
※グラフのところでbottom が無効なオプションとかでエラーになる場合は、plot_data関数定義の箇所のBottom-lower に書き換えれば、OKです。
プログラム上のテキスト通りに英語のスピーチが聞こえると思います。
docker imageは終了すると、元に戻ってしまうので、ここまでの状態で、一旦 コミットをかけておきましょう。
・DOCKER IDを確認
docker ps
・コミットする
docker <docker id commit
日本語を発話させる場合には、JSUTデータセットなどを使ってボンズカジノ ツイッターモデル部分だけをファインチューニングします。
Jsut(Japanese speech of Saruwatari-lab, University of Tokyo)は「台本」と「読み上げボンズカジノ ツイッター」(女性、同一人物)で構成されているデータセットです。
https://sites.google.com/site/shinnoketakamichi/publication/jsut
実際のモデル学習方法は、他の方がWebページに具体的に詳しく書いておられますので、ここでは割愛します。
ボンズカジノ ツイッターは、私見ですが、ちょうどNHKのニュースで使用されているAIボンズカジノ ツイッターガイドにそっくりなものができます。
(参考ページ)
NVIDIA/ボンズカジノ ツイッター で日本語の音声合成を試す (2) – JSUTで学習
ESPNET2
ところで、実のところ現在では、ボンズカジノ ツイッター認識・ボンズカジノ ツイッター合成の統合開発環境(ESPNET2)があります。
この開発キットはボンズカジノ ツイッターを含んでおり、今回のようなインストールに苦労することなく動かすことができます。
ESPNET2で使用可能なモデルには次のようなものがあります。
ESPNET2が扱えるモデル
- ボンズカジノ ツイッター
- Transformer-TTS
- FastSpeech
- FastSpeech2
- Conformer FastSpeech & FastSpeech2
- VITS
- JETS
この中で、VITSは、E2E型のモデルで、比較的自然に聞こえるボンズカジノ ツイッターを生成できるようです。
デモンストレーションが用意されており、ローカルPCにインストールする前に簡単に試すことができます。
ESPNET2はこちらにあります。
https://github.com/espnet/espnet
デモンストレーションが用意されており、容易にColab上で動かすことができます。
https://colab.research.google.com/github/espnet/notebook/blob/master/espnet2_tts_realtime_demo.ipynb
結論
ボンズカジノ ツイッター認識技術は歴史的に、ボンズカジノ ツイッター波形をスペクトログラムを用いて時系列に並べたものを確率論的に解析する隠れマルコフモデルが利用されてきましたが、その後、計算機資源が潤沢になるに従い、ニューラルネットワークやこれらのハイブリッド型、そして最近ではGlowとWaveNetを組み合わせたWaveGlowに代表されるように、様々な分野で使われているディープラーニングの成果が利用されるようになっています。
後日、ESPNET2も動かしてみたものの、多機能ゆえにフレームワークが複雑であり、ソースコードにも目を通しながら動かす場合には、単体モデルのボンズカジノ ツイッターを上記手順でNVIDIAの提供するDockerコンテナを利用して動かす方がはるかに容易でした。
尚、ESPNET2を動かす場合でも、OS、Pythonライブラリ等のバージョンアップによって動かなくなってしまう可能性が高く、Docker環境に構築する事をお勧めします。
統合環境は一見すると便利なようでありますが、原著にあるオリジナルのモデルを工夫しながら動かしてみる事が研究や理解を深めるためには重要だと考えます。 みなさんもぜひ、本稿のように試行錯誤しながらボンズカジノ ツイッター認識・ボンズカジノ ツイッター合成を楽しんでみてください。
関連記事
・ボンズカジノ 登録の仕方2+WaveGlow を動かす(音声合成)【前編】
当社について
日々最先端の機械学習・ボンズカジノ ツイッター技術の研究を行い、それらを活用した予測モデル・AIモデルの提供を行っています。