ビッグマック3つください

趣味の備忘録、ガジェットレビュー、雑感など。

Deep_VoiceChangerで唯ちゃんになるメモ

話題のディープラーニングでボイスチェンジする夢のツールを使ってみた忘備録。

 

●概要

こちらのDeep_VoiceChangerを使わせていただきました。製作者様に感謝!

github.com

書いてある通りだけど、ディープラーニングを使ったボイスチェンジャー

旧来のいわゆるボイスチェンジヤーは「ピッチ」「フォルマント」の2つでボイチェンするけど、その仕組み上変換後の声質は元の声に依存する。

ディープラーニングによるボイスチェンジャーは元の声にかかわらず"あの人の声"に変換できるところがオタク歓喜ポイント。

なお同種の商用ソフトだと「リアチェンVoice」「Voidol」といったものがあるが、

これらは変換モデルの自作はできず、発注して作ってもらうシステム。

 

●用意するもの

 (無いと面倒&遅いと思われ。オレはGeForce GTX 1060を用意)

  • 変換対象の人の音声ファイル2人分

        -16kHzにすることが必須。Audacityとかでリサンプリングする。
        -想像だけど、BGMのような余計な音が入ってないwavファイルを30分ぶんくらい用意するとよさそう。

 

●セットアップして動かしてみる

githubのページおよびこちらを大いに参考にしました(これまた他力本願)

qiita.com

 

ここでは上記ページに補足する形で、実行しながらエラーをつぶした記録をメモ。

・CUDAが"error: Microsoft Visual C++ 14.0 is required."を吐く

Build Tools For VIsual Studio 2019の一部のコンポーネントが必要。

→こちらのサイトを参考。

PythonでCUDAやMeCabを使う為にBuild Tools for Visual Studio 2019をセットアップする - HYT MachineWorks

※Visual C++ 14はVC++2015のことだが、VS2019でも問題なし。

 

・updater.pyが"AttributeError: can't set attribute"で落ちる

Traceback (most recent call last):
File "trainer.py", line 190, in <module>
main()
File "trainer.py", line 168, in main
updater = Updater(train_iter_a, train_iter_b, opt_g_a, opt_g_b, opt_d_a, opt_d_b, device=args.gpu)
File "C:\Users\key_m\Desktop\COPY_Deep\updater.py", line 34, in __init__
self.device = device
AttributeError: can't set attribute

Issueページによると、chainer ver.6.xを入れるとOKらしい。

 オレはupdater.py:Line 34を書き換えた。

#変更前
#self.device = device

#変更後
self._device = device

おそらくupdater.deviceがchainerの7.xから@proertyになったんだと思う。しらんけど。

 

・chainerがOutOfMemoryを吐く

原因はこういうことらしい。

ChainerでGPUのOut of Memoryを回避 Unified Memory for Cuda | MIKI-IE.COM(みきいえMIKIIE)

Deep_VoiceChangerでは引数でBATCH_SIZEを渡せる。デフォルトは32。

→引数にオプション"-b 16"を追加して解決。

 

幸いなのが落ちるなら最初のメモリ確保タイミングであること。数日学習を進めた後に落ちられたら泣いてた。

 

 

●その他のハマりポイント🤔"

 

・本当にGPU動いてんの?

学習にGPUバチバチに使ってるはずなのに、タスクマネージャを見るとGPU使用率が3%とか。

あれ?もしかしてCPUしか使ってない?設定間違えた?と不安に。

→下図のとおりタスクマネージャのGPUペインのグラフのプルダウンメニューからCUDAを選択すると、ちゃんとCUDAでの使用率が出る。

f:id:bigmactaro:20200428205702p:plain

タスクマネージャのGPU使用率表示(CUDAに切り替えた後)
・正しいGPU IDは?

上記に関連して、GPU IDの設定をミスったか?と思ったときのこと。

タスクマネージャではGeForceは"GPU1"とあるから、もしかしてGPU ID=1が正しいのでは…と不安になった。

→"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe"を実行して表示されるIDが本物。

f:id:bigmactaro:20200428210248p:plain

nvidia-smiでGPU IDを調べた

●やってみて

まだ1日強しか回してないけど、すげえぞコレは!

すごさの片鱗をビシバシ感じる。

学習すればするだけ変換精度が上がるだろうから、もっと回してみよう。