「ディープラーニングの力で結月ゆかりの声になる」ための基礎知識とコマンド操作 - Qiita この記事を参考にしてやってみたが、なんだかんだエラーが出てくるのでメモ。
Windowsで自分の音声を録音する
https://github.com/YoshikazuOota/become-yukarin
をダウンロードします。
become-yukarin/dat/in_1st_yukari_wav/
に入っている音声を聞いて、
become-yukarin/dat/in_1st_my_wav/
に自分の声を録音したファイルを保存します。
(ファイル名は同一にする(v_801.wav ...))
録音ソフトはAudacityを使用しました。
素のUbuntu18.04から構築
Prerequirement1(NvidiaのGPUを使用している場合)
Nviida Driverをインストールする。
$ sudo ubuntu-drivers autoinstall $ sudo reboot
CUDA10とcuDnnをインストール
Prerequirement2
$ git clone https://github.com/YoshikazuOota/become-yukarin $ cd become-yukarin $ sudo apt install python3-pip $ pip3 install -r requirements.txt //※1
npy生成
$ PYTHONPATH=`pwd` python3 scripts/extract_acoustic_feature.py -i1 dat/in_1st_my_wav -i2 dat/in_1st_yukari_wav -o1 dat/out_1st_my_npy -o2 dat/out_1st_yukari_npy ※2
学習
dat/config.jsonを適宜編集してください。
今回はGPUを使うので下のように書き換えました。
line:40 "gpu": 0
(cpuを使う場合はそのまま-1でオッケー)
実行
$ python3 train.py dat/config.json dat/model/yukari_1st ※3
進捗確認
dat/model/yukari_1st/logを直接開くか、
ターミナルでwatchする場合は下記を実行します。
$ watch -n (何秒毎) tail -(行数) dat/model/yukari_1st/log (ex.)$ watch -n 10 tail -30 dat/model/yukari_1st/log
生成されたモデルデータはdat/model/yukari_1stに保存されます。
学習を止めないとpredictor_xxxx.npzが無限に生成されますので、適当なところで止めてください。(私はGPUで10時間やってしまった)
$ python3 scripts/voice_conversion_test.py yukari_1st -iwd dat/in_1st_yukari_wav -md dat/model -it 15000
エラーが出ましたが(librosa.util.exceptions.ParameterError: Audio buffer is not finite everywhere)アウトプットはされていたので無視。
高音質化のためのモデル作成
$ python3 scripts/extract_spectrogram_pair.py -i dat/in_2nd_yukari_many_wav -o dat/out_2nd_yukari_many_npy ※4
test_data_srにoutput_yukari_1stにある音声を置く。 高音質化
$ python3 scripts/super_resolution_test.py yukari_2nd -md dat/model -iwd dat/in_2nd_yukari_many_wav
output/yukari_2nd に高音質化したゆかり音声が入る。
...暇さえあれば詳しく調べて改善してみたい。
エラー対処
※1 Failed building wheel for pyworld
$ pip3 install pyworld
※2 No module named 'world4py'
$ git clone https://github.com/yamachu/WORLD4py.git $ cd WORLD4py
$ sudo python3 setup.py install
※3 Object of type 'PosixPath' is not JSON serializable
$ pip3 install chainerui==0.3
※4 No module named 'tqdm'
$ pip3 install tqdm