#初めに
これは解説記事ではありません。
やったことを時系列に書いていき、どのようなエラーが出てどう対処したかを書いています。
そのため読みにくいと思いますが、各章の最後にある程度まとめたものを書こうと思います。
#環境
windows10
ryzen3700x
rtx2070
cuda10
cuda11
anaconda
googlecolab
#音声データ作成
audacity 3.3はめちゃくちゃ落ちるので
2.4.2を使用した
録音はmoo0音声録音機を使用
audacityで録音することも考えたが、サウンドカードを使用しているため、wasapiではうまく録音ができなかった。
トラックを分離してモノラルにしたの後、新しくトラックをし用意して録音。
ノイズは適当に何もしゃべらず録音しておいてその後エフェクトでなくすのがよい。
プチっという音は消さない。
無音化も最初はやっていたが省略した。
コツとして、一度しゃべり方を聞くのではなく、いきなり録音して失敗したらctrl+zを繰り返すのがよい。
だんだんどこで息継ぎをいれるのかがわかってくる。
例えば接続詞の後や主語の後など。
保存は名前を付けて保存することでいい感じにできる。
フォルダが作成されれるので、それとaupだけで元の音声は必要なくなる。
書きだし方として、最初はそのままwavで出てきたが、
最終的にctlr+bを使用してトラックを分割
inputは24000Hzでないといけないので左下で変更。
target.wavとown.wavを同時に切り取れないので、片方をミュートにしてファイル名プレフィックスの後に番号付けを使用して連番を作った。
またgooglecolabなどとの整合性から、
1.ファイル名はv-
から始めること
これは後々mean.pnyとvar.npyが出てきたときにv-*
というようにファイルを指定するから
2.自分の声と目標の音声は同じ名前にすること。したがってフォルダを分けるとよい。
参考
#各種ライブラリのインストール
##1.まず新しい環境を作成した。
conda create -n yukaA python anaconda
python --version
Python 3.8.5
##2.condaのアップデート
conda update -n base conda
参考
##3.pipを最新バージョンに
pip install --upgrade pip
python -m pip install --upgrade pip
しかしなぜか
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] アクセスが拒否されました。: 'g:\\anaconda3\\envs\\yukaa\\scripts\\pip.exe'
Consider using the `--user` option or check the permissions.
こうなってしまったので
conda uninstall pip
conda install pip
condaからもう一度インストールした。
##4.管理者でアナコンダプロンプトを使用
うまくいかなかないことが多いのでとりあえず管理者で実行した
##5.pyworld
これが全然入らない。
scipyを先にinstallしないとinstall出来ない不具合もあるようなので先にinstallしておきます
とあるのでしてみたが、
(yukaA) C:\WINDOWS\system32>pip install pyworld
Collecting pyworld
Using cached pyworld-0.2.12.tar.gz (222 kB)
Requirement already satisfied: numpy in g:\anaconda3\envs\yukaa\lib\site-packages (from pyworld) (1.20.2)
Collecting cython>=0.24.0
Using cached Cython-0.29.22-py2.py3-none-any.whl (980 kB)
Building wheels for collected packages: pyworld
Building wheel for pyworld (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: 'G:\anaconda3\envs\yukaA\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-cptybzw4\\pyworld_53a67104522147339b440c0946e12d12\\setup.py'"'"'; __file__='"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-cptybzw4\\pyworld_53a67104522147339b440c0946e12d12\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\yuki\AppData\Local\Temp\pip-wheel-6vva5q6d'
cwd: C:\Users\yuki\AppData\Local\Temp\pip-install-cptybzw4\pyworld_53a67104522147339b440c0946e12d12\
Complete output (10 lines):
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-3.9
creating build\lib.win-amd64-3.9\pyworld
copying pyworld\__init__.py -> build\lib.win-amd64-3.9\pyworld
running build_ext
building 'pyworld.pyworld' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
----------------------------------------
ERROR: Failed building wheel for pyworld
Running setup.py clean for pyworld
Failed to build pyworld
Installing collected packages: cython, pyworld
Running setup.py install for pyworld ... error
ERROR: Command errored out with exit status 1:
command: 'G:\anaconda3\envs\yukaA\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-cptybzw4\\pyworld_53a67104522147339b440c0946e12d12\\setup.py'"'"'; __file__='"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-cptybzw4\\pyworld_53a67104522147339b440c0946e12d12\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\yuki\AppData\Local\Temp\pip-record-434sndux\install-record.txt' --single-version-externally-managed --compile --install-headers 'G:\anaconda3\envs\yukaA\Include\pyworld'
cwd: C:\Users\yuki\AppData\Local\Temp\pip-install-cptybzw4\pyworld_53a67104522147339b440c0946e12d12\
Complete output (11 lines):
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.9
creating build\lib.win-amd64-3.9\pyworld
copying pyworld\__init__.py -> build\lib.win-amd64-3.9\pyworld
running build_ext
skipping 'pyworld\pyworld.cpp' Cython extension (up-to-date)
building 'pyworld.pyworld' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
----------------------------------------
ERROR: Command errored out with exit status 1: 'G:\anaconda3\envs\yukaA\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-cptybzw4\\pyworld_53a67104522147339b440c0946e12d12\\setup.py'"'"'; __file__='"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-cptybzw4\\pyworld_53a67104522147339b440c0946e12d12\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\yuki\AppData\Local\Temp\pip-record-434sndux\install-record.txt' --single-version-externally-managed --compile --install-headers 'G:\anaconda3\envs\yukaA\Include\pyworld' Check the logs for full command output.
となり、インストールできない。
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools":
https://visualstudio.microsoft.com/visual-cpp-build-tools/
とあることからhttps://visualstudio.microsoft.com/visual-cpp-build-tools/
にアクセス、ダウンロード
これを参考にチェックをつける
するとpipでうまく入った。
やっとうまくいった
##6.pypstk
昨日まで全然できなかったが驚くほどスムーズに入れることができた。
おそらくこれも
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools":
https://visualstudio.microsoft.com/visual-cpp-build-tools/
これが原因だったのだろう
##7.become-yukarin
yukarinライブラリのrequirement.txtにあるので入れた
pip install git+https://github.com/Hiroshiba/become-yukarin
こちらも昨日は全然入らなかったのだが入った。
##8.yukarin
requirement.txtには書いていないが、必要になったのでこれも入れた
pip install git+https://github.com/Hiroshiba/yukarin
##9.いざ実行
これを参考に./yukarin/
のディレクトリで以下を実行
python scripts/extract_acoustic_feature.py -i ./input_wav/* -o ./input_feature/
Traceback (most recent call last):
File "C:\Users\yuki\Downloads\yukarin-master\scripts\extract_acoustic_feature.py", line 13, in <module>
from yukarin.acoustic_feature import AcousticFeature
File "G:\anaconda3\envs\yukaA\lib\site-packages\yukarin\__init__.py", line 1, in <module>
from .acoustic_converter import AcousticConverter
File "G:\anaconda3\envs\yukaA\lib\site-packages\yukarin\acoustic_converter.py", line 7, in <module>
import librosa
File "G:\anaconda3\envs\yukaA\lib\site-packages\librosa\__init__.py", line 12, in <module>
from . import core
File "G:\anaconda3\envs\yukaA\lib\site-packages\librosa\core\__init__.py", line 109, in <module>
from .time_frequency import * # pylint: disable=wildcard-import
File "G:\anaconda3\envs\yukaA\lib\site-packages\librosa\core\time_frequency.py", line 10, in <module>
from ..util.exceptions import ParameterError
File "G:\anaconda3\envs\yukaA\lib\site-packages\librosa\util\__init__.py", line 71, in <module>
from . import decorators
File "G:\anaconda3\envs\yukaA\lib\site-packages\librosa\util\decorators.py", line 9, in <module>
from numba.decorators import jit as optional_jit
ModuleNotFoundError: No module named 'numba.decorators'
numba.decoratorsがないとのことだが、
によれば5.0から消えてしまったため、ver 0.48が必要な模様
とりあえず一度アンインストールしてから入れなおしてみる
pip uninstall numba
pip install numba==0.48
Collecting numba==0.48
Downloading numba-0.48.0.tar.gz (2.0 MB)
|████████████████████████████████| 2.0 MB 1.1 MB/s
Collecting llvmlite<0.32.0,>=0.31.0dev0
Downloading llvmlite-0.31.0.tar.gz (110 kB)
|████████████████████████████████| 110 kB 3.2 MB/s
Requirement already satisfied: numpy>=1.15 in g:\anaconda3\envs\yukaa\lib\site-packages (from numba==0.48) (1.20.2)
Requirement already satisfied: setuptools in g:\anaconda3\envs\yukaa\lib\site-packages (from numba==0.48) (52.0.0.post20210125)
Building wheels for collected packages: numba, llvmlite
Building wheel for numba (setup.py) ... done
Created wheel for numba: filename=numba-0.48.0-cp39-cp39-win_amd64.whl size=2039914 sha256=a80862f10f23c25476374e6a18d50d86681bf730012e5c8ce670466d889f99d7
Stored in directory: c:\users\yuki\appdata\local\pip\cache\wheels\67\f4\34\43855bda1e661dc1afedcb295d313a510239d901336fd636c3
Building wheel for llvmlite (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: 'G:\anaconda3\envs\yukaA\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-3juls8wn\\llvmlite_fb4a6e68607d46eb931588d44c645ef2\\setup.py'"'"'; __file__='"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-3juls8wn\\llvmlite_fb4a6e68607d46eb931588d44c645ef2\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\yuki\AppData\Local\Temp\pip-wheel-0lzs0krz'
cwd: C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\
Complete output (24 lines):
running bdist_wheel
G:\anaconda3\envs\yukaA\python.exe C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py
Trying generator 'Visual Studio 14 2015 Win64'
Traceback (most recent call last):
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 168, in <module>
main()
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 156, in main
main_win32()
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 88, in main_win32
generator = find_win32_generator()
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 76, in find_win32_generator
try_cmake(cmake_dir, build_dir, generator)
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 28, in try_cmake
subprocess.check_call(['cmake', '-G', generator, cmake_dir])
File "G:\anaconda3\envs\yukaA\lib\subprocess.py", line 368, in check_call
retcode = call(*popenargs, **kwargs)
File "G:\anaconda3\envs\yukaA\lib\subprocess.py", line 349, in call
with Popen(*popenargs, **kwargs) as p:
File "G:\anaconda3\envs\yukaA\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "G:\anaconda3\envs\yukaA\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
error: command 'G:\\anaconda3\\envs\\yukaA\\python.exe' failed with exit code 1
----------------------------------------
ERROR: Failed building wheel for llvmlite
Running setup.py clean for llvmlite
Successfully built numba
Failed to build llvmlite
Installing collected packages: llvmlite, numba
Attempting uninstall: llvmlite
Found existing installation: llvmlite 0.36.0
Uninstalling llvmlite-0.36.0:
Successfully uninstalled llvmlite-0.36.0
Running setup.py install for llvmlite ... error
ERROR: Command errored out with exit status 1:
command: 'G:\anaconda3\envs\yukaA\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-3juls8wn\\llvmlite_fb4a6e68607d46eb931588d44c645ef2\\setup.py'"'"'; __file__='"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-3juls8wn\\llvmlite_fb4a6e68607d46eb931588d44c645ef2\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\yuki\AppData\Local\Temp\pip-record-zogj41z2\install-record.txt' --single-version-externally-managed --compile --install-headers 'G:\anaconda3\envs\yukaA\Include\llvmlite' cwd: C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\
Complete output (27 lines):
running install
running build
got version from file C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\llvmlite/_version.py {'version': '0.31.0', 'full': 'fe7d985f6421d87f613bd414479d29d912771562'}
running build_ext
G:\anaconda3\envs\yukaA\python.exe C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py
Trying generator 'Visual Studio 14 2015 Win64'
Traceback (most recent call last):
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 168, in <module>
main()
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 156, in main
main_win32()
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 88, in main_win32
generator = find_win32_generator()
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 76, in find_win32_generator
try_cmake(cmake_dir, build_dir, generator)
File "C:\Users\yuki\AppData\Local\Temp\pip-install-3juls8wn\llvmlite_fb4a6e68607d46eb931588d44c645ef2\ffi\build.py", line 28, in try_cmake
subprocess.check_call(['cmake', '-G', generator, cmake_dir])
File "G:\anaconda3\envs\yukaA\lib\subprocess.py", line 368, in check_call
retcode = call(*popenargs, **kwargs)
File "G:\anaconda3\envs\yukaA\lib\subprocess.py", line 349, in call
with Popen(*popenargs, **kwargs) as p:
File "G:\anaconda3\envs\yukaA\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "G:\anaconda3\envs\yukaA\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
error: command 'G:\\anaconda3\\envs\\yukaA\\python.exe' failed with exit code 1
----------------------------------------
Rolling back uninstall of llvmlite
Moving to g:\anaconda3\envs\yukaa\lib\site-packages\llvmlite-0.36.0.dist-info\
from G:\anaconda3\envs\yukaA\lib\site-packages\~lvmlite-0.36.0.dist-info
Moving to g:\anaconda3\envs\yukaa\lib\site-packages\llvmlite\
from G:\anaconda3\envs\yukaA\lib\site-packages\~lvmlite
ERROR: Command errored out with exit status 1: 'G:\anaconda3\envs\yukaA\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-3juls8wn\\llvmlite_fb4a6e68607d46eb931588d44c645ef2\\setup.py'"'"'; __file__='"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-3juls8wn\\llvmlite_fb4a6e68607d46eb931588d44c645ef2\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\yuki\AppData\Local\Temp\pip-record-zogj41z2\install-record.txt' --single-version-externally-managed --compile --install-headers 'G:\anaconda3\envs\yukaA\Include\llvmlite' Check the logs for full command output.
これがまた全然入らない。
どうもllvmliteが引っかかる。
###原因1
python3.9.2でやっていたが、llvmliteは3.9は未対応らしい
###原因2
pip uninstall llvmlite
It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
このようにllvmliteのバージョンを変えられない
これによればcondaとpipの混在が原因らしい。
conda uninstall llvmlite
時間はかかるがアンインストール完了。
その後
pip install llvmlite==0.32.1
とするとはいった
###原因3
pip install numba==0.44
失敗
numpyがないとでた。
pip install numpy
としても、存在するといわれたので
conda install numpy
だがnumbaは入らない。
anacondaをし用意していることが原因なのでanacondaの使用をやめる
##10.まとめ
conda create -n yukaA python==3.8.5
その後
こちらを参考に
pip install numpy
pip install librosa
pip install pysptk
pip install pyworld
pip install fastdtw
pip install matplotlib
pip install tqdm
pip install world4py
pip install git+https://github.com/Hiroshiba/become-yukarin
pip install git+https://github.com/Hiroshiba/yukarin
pip install numba==0.48
結果うまくいった。
注意として、
pip install numba==0.48
とする前まではnumbaのバージョンが5を超えてしまっていて動かない。
また、llvmliteはnumbaを入れるときに自動的にバージョンが合うためcondaでアンインストールなどはいらなかった。
最終的な環境
pip freeze > req.txt
alembic==1.5.8
appdirs==1.4.4
audioread==2.1.9
become-yukarin @ git+https://github.com/Hiroshiba/become-yukarin@99a4998f4b7b9def2079c42be0edfc70201a1856
certifi==2020.12.5
cffi==1.14.5
chainer==5.4.0
chainerui==0.11.0
chardet==4.0.0
click==7.1.2
cycler==0.10.0
Cython==0.29.22
decorator==5.0.6
fastdtw==0.3.4
filelock==3.0.12
Flask==1.1.2
gevent==21.1.2
greenlet==1.0.0
idna==2.10
itsdangerous==1.1.0
Jinja2==2.11.3
joblib==1.0.1
kiwisolver==1.3.1
librosa==0.6.3
llvmlite==0.31.0
Mako==1.1.4
MarkupSafe==1.1.1
matplotlib==3.4.1
msgpack==1.0.2
numba==0.48.0
numpy==1.20.2
packaging==20.9
Pillow==8.2.0
pooch==1.3.0
protobuf==3.15.8
pycparser==2.20
pyparsing==2.4.7
pysptk==0.1.18
python-dateutil==2.8.1
python-editor==1.0.4
pyworld==0.2.12
requests==2.25.1
resampy==0.2.2
scikit-learn==0.24.1
scipy==1.6.2
six==1.15.0
SoundFile==0.10.3.post1
SQLAlchemy==1.4.6
structlog==21.1.0
tensorflow-gpu-estimator==2.3.0
threadpoolctl==2.1.0
tqdm==4.60.0
typing-extensions==3.7.4.3
urllib3==1.26.4
Werkzeug==1.0.1
wincertstore==0.2
world4py==0.1.1
yukarin @ git+https://github.com/Hiroshiba/yukarin@85f39e21cc8f393396f8c575dec4e297d352dd5a
zope.event==4.5.0
zope.interface==5.3.0
#yukarinでの特徴量の抽出
##フォルダ作成
cd yukarin
mkdir input_wav
mkdir target_wav
mkdir input_feature
mkdir target_feature
mkdir aligned_indexes
##メモリエラー
python scripts/extract_acoustic_feature.py -i ./input_wav/* -o ./input_feature/
失敗。メモリエラー
原因は長い音声ファイルを一個だけおいていたから
audacityでトラックを使って分割したものを使用したところ動いた。
inputは24000Hzでないといけないので変更。
参考
また、この際、target.wavとown.wavを同時に切り取れないので、片方をミュートにしてファイル名プレフィックスの後に番号付けを使用して連番を作った。
##再び実行
音響特徴量を切り出す
python scripts/extract_acoustic_feature.py -i ./input_wav/* -o ./input_feature/
python scripts/extract_acoustic_feature.py -i ./target_wav/* -o ./target_feature/
データを揃える(アライメントする)
python scripts/extract_align_indexes.py -i1 ./input_feature/*.npy -i2 ./target_feature/*.npy -o ./aligned_indexes/
周波数の統計量を求める
python scripts/extract_f0_statistics.py -i ./input_feature/*.npy -o ./input_statistics.npy
python scripts/extract_f0_statistics.py -i ./target_feature/*.npy -o ./target_statistics.npy
python train.py config.json ./model_stage1/
ここまでうまくいった。
##まとめ
音声データは細かくしよう
#yukarin内のtrain.pyを実行(あきらめた)
これを参考に
入れていなかったcupyを入れる
私の環境はcuda10とcuda11が入っているが、最新のほうにした
またcupyは入れないでおく
pip uninstall cupy-cuda110
##cudnn問題
実行
python train.py config.json ./model_stage1/
Traceback (most recent call last):
File "train.py", line 5, in <module>
from chainer import cuda
File "G:\anaconda3\envs\yukaA\lib\site-packages\chainer\__init__.py", line 10, in <module>
from chainer import dataset # NOQA
File "G:\anaconda3\envs\yukaA\lib\site-packages\chainer\dataset\__init__.py", line 2, in <module>
from chainer.dataset.convert import concat_examples # NOQA
File "G:\anaconda3\envs\yukaA\lib\site-packages\chainer\dataset\convert.py", line 6, in <module>
from chainer import backend
File "G:\anaconda3\envs\yukaA\lib\site-packages\chainer\backend.py", line 4, in <module>
from chainer.backends import cuda
File "G:\anaconda3\envs\yukaA\lib\site-packages\chainer\backends\cuda.py", line 608, in <module>
_cudnn_version = cuda.cudnn.getVersion() if cudnn_enabled else -1
File "G:\anaconda3\envs\yukaA\lib\site-packages\cupy\cuda\__init__.py", line 77, in __getattr__
raise AttributeError(
AttributeError: module 'cupy.cuda' has no attribute 'cudnn'
バージョンが悪いか
pip uninstall cupy-cuda110
pip install cupy-cuda100
としてみたが動かない
AttributeError: module 'cupy.cuda' has no attribute 'cudnn'
動かない
pip install cupy==5.4.0
としたが、まず入れるのに時間がとてもかかったうえ、動かない。
pip list
cupy 5.4.0
cupy-cuda100 8.6.0
原因としてverは8.6.0だからと考えた。
requirement.txtにはバージョン6未満と書かれているし、
chainer自体5.4.0だから。
pip install cupy==5.4.0
だがそんなバージョン存在しないと出てきた。
これを見る限りcupy-cuda110には5.4がないが、cupy-cuda100には5.4がある。
だが入らない。
pip install cupy-cuda100==5.4.0
ERROR: Could not find a version that satisfies the requirement cupy-cuda100==5.4.0
ERROR: No matching distribution found for cupy-cuda100==5.4.0
を見るとpython3.8に対応していなかった
3.7の環境を作り直していざもう一度
conda create -n yukaB python==3.7
pip install cupy-cuda100==5.4.0
はいった
そして問題は解決した
##config.jsonが動かない
python train.py config.json ./model_stage1/
Traceback (most recent call last):
File "train.py", line 23, in <module>
config = create_from_json(arguments.config_json_path)
File "C:\Users\yuki\Downloads\become-yukarin-master\become_yukarin\config\config.py", line 86, in create_from_json
d = json.load(open(s))
File "G:\anaconda3\envs\yukaA\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "G:\anaconda3\envs\yukaA\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "G:\anaconda3\envs\yukaA\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "G:\anaconda3\envs\yukaA\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 7 column 19 (char 85)
思い切り勘違いをしていた。
become-yukarinのconfigを使用してyukarinを動かしていたことが原因だった
ちゃんとyukarin内のconfig.jsonを書き換えて使用したところ動いた。
##足りないパッケージ
改めて事項するとtb_chainerがない
pip install git+https://github.com/neka-nat/tensorboard-chainer
これもやっておく
become-yukarin内のsample_config.jsonをconfig.jsonに変更
中身を変えてyukari/に置いた。
##メモリエラー
python train.py config.json ./model_stage1/
MemoryError
G:\anaconda3\envs\yukaA\lib\site-packages\chainer\iterators\multiprocess_iterator.py:25: TimeoutWarning: Stalled dataset is detected. See the documentation of MultiprocessIterator for common causes and workarounds:
https://docs.chainer.org/en/stable/reference/generated/chainer.iterators.MultiprocessIterator.html
warnings.warn(
メモリエラーになった
とりあえずrequirementにあったので
pip install tensorflow-gpu
2.4.1が入ったが特に変化なし
config.json内の
"train_crop_size": 512,
を
"train_crop_size": 64,
としたところMemoryErrorは出なくなった
##Output sizes should be positive
しかし実行すると
assert all(out > 0 for out in outs), 'Output sizes should be positive.'
AssertionError: Output sizes should be positive.
これが出てきて永遠に進まない。
これは原因がさっぱりわからなかった。
なのでyukarinを実行することをあきらめた。
##まとめ
pythonは3.7
cupy-cuda100は5.4
conda create -n yukaB python==3.7
pip install cupy-cuda100==5.4.0
足りないものはインストール
pip install git+https://github.com/neka-nat/tensorboard-chainer
メモリが問題になったらconfig.json内の
"train_crop_size": 512,
を変更
#become-yukarinを試す
become-yukarinに移行することにした。
##ディレクトリの作成
cd become-yukarin
mkdir input_wav
mkdir target_wav
mkdir input_feature
mkdir target_feature
model_stage1
各種wavも移した
##特徴量の抽出
cd become-yukarin
python scripts/extract_acoustic_feature.py -i1 input_wav -i2 target_wav -o1 input_feature -o2 target_feature
うまくいった
#become-yukarinでのtrain.py
##config.json
become-yukarinのrecipe内のconfig.jsonをもとに編集して、become-yukarin直下に移動した。
windows環境なのでconfig.jsonのパスから先頭の/をなくした
"/target_feature/v-*.npy",
これを
"target_feature/v-*.npy",
こうした
また私の使うrtx2070では余裕があったのでbatchsizeを大きくした。
また自分なりに理解した内容
{
"dataset": {
"features": [
"f0",
"mfcc"
],
"input_glob": "input_feature/v-*.npy",#v-から始まる自分の音声の特徴量。v-と指定するのはmean.npyとvar.npyが存在するから
"input_global_noise": 0.01,
"input_local_noise": 0.01,
"input_mean_path": "input_feature/mean.npy",
"input_var_path": "input_feature/var.npy",
"num_test": 1,
"seed": 0,
"target_glob": "target_feature/v-*.npy",#v-から始まる目標の音声の特徴量。v-と指定するのはmean.npyとvar.npyが存在するから
"target_global_noise": 0.01,
"target_local_noise": 0.01,
"target_mean_path": "target_feature/mean.npy",
"target_var_path": "target_feature/var.npy",
"train_crop_size": 512
},
"loss": {
"adversarial": 1,
"mse": 100
},
"model": {#ここら辺は学習のモデルの構造を指定しているから、いじると汎用性がなくなる可能性あり。
"in_channels": 10,
"out_channels": 10,
"generator_base_channels": 64,
"generator_extensive_layers": 8,
"discriminator_base_channels": 32,
"discriminator_extensive_layers": 5,
"weak_discriminator": false
},
"project": {
"name": "",
"tags": []
},
"train": {
"batchsize": 8,#学習時のバッチサイズ
"gpu": 0,#0でgpu,
"log_iteration": 250,#logにaccやlossを保存する頻度
"snapshot_iteration": 5000#predictor_数字.npzの保存する頻度
}
}
##pickle問題
まずtrainを実行
python train.py config.json model_stage1
AttributeError: Can't pickle local object 'create.<locals>.<lambda>'
動かなかった
先人の知恵を借りた。
pickleのエラーに悩まされました。
回避方法を教えていただきました。
C:\Usersユーザ名\Anaconda3\pkgs\python-3.6.5-h0c2934d_0\Lib\multiprocessing\reduction.py
の15行目にある import pickleを
import dill as pickleに変更
dillはpipなどからインストールしてください
だそうです。Python本体のマルチスレッド部分のpickleを互換ライブラリのdillで置き換える方法になります。
これで学習ができます。
おそらくこのサイトを見たのだろう
まずpythonのバージョンを確認。
python --version
3.7.0
その後対応するフォルダのpyの中身を変更
C:\Usersユーザ名\Anaconda3\pkgs\python-3.7.0-h0c2934d_0\Lib\multiprocessing\http://reduction.py/
ここの先頭のimportの部分を
#import pickle
import dill as pickle
に変更
pip install dill
import dill as pickle
しかしdillをインストールしていなかったため、
ImportError: cannot import name 'reduce_socket' from 'multiprocessing.reduction' (G:\anaconda3\envs\yukaB\lib\multiprocessing\reduction.py)
と出てしまい、
pip listさえも動かなくなった
import pickleに直してから
pip install dill
改めて
pip install dill
import dill as pickle
に変更したところ動いた。
##メモリエラー
再び実行したところメモリエラーが起きた。
config.json内の
"generator_base_channels": 64,
を
"generator_base_channels": 8,
に変更した。
##scypi問題
AttributeError: module 'scipy' has no attribute '_lib'
pip だと最新になっていたので
condaがなぜか原因になっていた。
conda install scipy
として最新にした。
##numpyの問題
実行すると
python train.py config.json model_stage1
Traceback (most recent call last):
File "train.py", line 12, in <module>
from become_yukarin.config.config import create_from_json
File "C:\Users\yuki\Downloads\become-yukarin\become_yukarin\__init__.py", line 2, in <module>
from . import dataset
File "C:\Users\yuki\Downloads\become-yukarin\become_yukarin\dataset\__init__.py", line 1, in <module>
from . import dataset
File "C:\Users\yuki\Downloads\become-yukarin\become_yukarin\dataset\dataset.py", line 15, in <module>
import pysptk
File "G:\anaconda3\envs\yukaB\lib\site-packages\pysptk\__init__.py", line 41, in <module>
from .sptk import * # pylint: disable=wildcard-import
File "G:\anaconda3\envs\yukaB\lib\site-packages\pysptk\sptk.py", line 147, in <module>
from . import _sptk
File "__init__.pxd", line 242, in init pysptk._sptk
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
どうも調べるとnumpyのバージョンが2.0未満だと起きるらしい。
pip install numpy==1.19.5
これだと動かないが、
pip install numpy==1.20
とすると動いた。
##実行
上記を経てやっと動いた。
しかし何も画面に出てこないので失敗したかと思ったが、実行はされているみたいで、
##まとめ
このように変更
pip install dill
import dill as pickle
'''
numpyは1.20以降に
pip install numpy==1.20
scipyはcondaのほうを最新に
conda install scipy
最終的な環境
absl-py==0.12.0
alembic==1.5.8
appdirs==1.4.4
audioread==2.1.9
become-yukarin @ git+https://github.com/Hiroshiba/become-yukarin@99a4998f4b7b9def2079c42be0edfc70201a1856
bleach==3.3.0
cachetools==4.2.1
certifi==2020.12.5
cffi==1.14.5
chainer==5.4.0
chainerui==0.11.0
chardet==4.0.0
click==7.1.2
colorama==0.4.4
cupy-cuda100==5.4.0
cycler==0.10.0
Cython==0.29.22
decorator==5.0.6
dill==0.3.0
docutils==0.17
fastdtw==0.3.4
fastrlock==0.6
filelock==3.0.12
Flask==1.1.2
gevent==21.1.2
google-auth==1.28.1
google-auth-oauthlib==0.4.4
greenlet==1.0.0
grpcio==1.37.0
idna==2.10
importlib-metadata==3.10.0
itsdangerous==1.1.0
Jinja2==2.11.3
joblib==1.0.1
keyring==23.0.1
kiwisolver==1.3.1
librosa==0.6.3
llvmlite==0.31.0
Mako==1.1.4
Markdown==3.3.4
MarkupSafe==1.1.1
matplotlib==3.4.1
msgpack==1.0.2
numba==0.48.0
numpy==1.20.2
oauthlib==3.1.0
packaging==20.9
Pillow==8.2.0
pkginfo==1.7.0
pooch==1.3.0
protobuf==3.15.8
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.20
Pygments==2.8.1
pyparsing==2.4.7
pysptk==0.1.18
python-dateutil==2.8.1
python-editor==1.0.4
pywin32-ctypes==0.2.0
pyworld==0.2.12
readme-renderer==29.0
requests==2.25.1
requests-oauthlib==1.3.0
requests-toolbelt==0.9.1
resampy==0.2.2
rfc3986==1.4.0
rsa==4.7.2
scikit-learn==0.24.1
scipy==1.6.2
six==1.15.0
SoundFile==0.10.3.post1
SQLAlchemy==1.4.7
structlog==21.1.0
tensorboard==2.4.1
tensorboard-chainer @ git+https://github.com/neka-nat/tensorboard-chainer@e537dc0712fb282b247986aea6105ded7b3beb59
tensorboard-plugin-wit==1.8.0
threadpoolctl==2.1.0
tqdm==4.60.0
twine==3.4.1
typing-extensions==3.7.4.3
urllib3==1.26.4
webencodings==0.5.1
Werkzeug==1.0.1
wincertstore==0.2
world4py==0.1.1
yukarin @ git+https://github.com/Hiroshiba/yukarin@85f39e21cc8f393396f8c575dec4e297d352dd5a
zipp==3.4.1
zope.event==4.5.0
zope.interface==5.3.0
#become-yukarin第一段階学習後のvoice_conversion_test.pyをテストしてみる
##コマンドライン因数
voice_conversion_test.pyを実行したいのだが、コマンドラインの因数がさっぱりわからない。
中身をのぞくと、
```voice_conversion_test.py
parser = argparse.ArgumentParser()
parser.add_argument('model_names', nargs='+')
parser.add_argument('-md', '--model_directory', type=Path, default=Path('/mnt/dwango/hiroshiba/become-yukarin/'))
parser.add_argument('-iwd', '--input_wave_directory', type=Path,
default=Path('/mnt/dwango/hiroshiba/become-yukarin/dataset/hiho-wave/hiho-pause-atr503-subset/'))
parser.add_argument('-it', '--iteration', type=int)
parser.add_argument('-g', '--gpu', type=int)
args = parser.parse_args()
とあるので、
なし 'model_names'
'-md', '--model_directory'
'-iwd', '--input_wave_directory'
'-it', '--iteration'
'-g', '--gpu'
となっていることが分かったが、やっぱりよくわからなかったので、さらに調べたところ、
for model_name in args.model_names:
base_model = model_directory / model_name
config = create_config(base_model / 'config.json')
とあるから、
model_nameは学習済みのnpyとconfig.jsonがあるフォルダ
model_directoryはmodel_nameがあるディレクトリまでのパス。
今回はカレントディレクトリだったので、.
とした。
iwdは自分の24000Hz16bitののwavaがあるフォルダ。ここからランダムで数個変換するらしい。
if it is not None:
model_path = base_model / 'predictor_{}.npz'.format(it)
else:
model_paths = base_model.glob('predictor_*.npz')
model_path = list(sorted(model_paths, key=extract_number))[-1]
とあるから、itは学習済みのnpyのうちどのiterationのものを使用するか
書かなければ最新のものが使用されるっぽい
-gは
if gpu is None:
pool = multiprocessing.Pool()
pool.map(process_partial, paths)
else:
list(map(process_partial, paths))
とあるから、おそらく0で使用、何も書かなければcpu
##フォルダ
さらに、
paths_test = list(Path('./test_data/').glob('*.wav'))
output = Path('./output').absolute() / base_model.name
output.mkdir(exist_ok=True)
とあることから、
mkdir output
mkdir test_data
も作っておく
実行したのがこちら
python scripts/voice_conversion_test.py model_stage1 -iwd input_wav -md . -it 80000 -g 0
##numpy問題再び
実行すると
DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
によればnumpy>=1.20になると起きてしまうらしい。
バージョンを落とすと
pip install numpy==1.19
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
やはりこの問題にたどり着いてしまう。
1.17や最新の1.20.2をい試してもダメ。
これを参考に
pip install numpy==1.19.5 --no-binary :all:
としてみたが、ダメ。
つまりnumpyが
2.0~なら
DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
が出てきてしまい、
~2.0だと
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
こうなってしまう
これを参考に
pip install numpy==1.19.5 --no-cache-dir --no-binary :all:
無理
詰んだ。
あきらめて numpy==1.20の環境でコマンドライン因数の-g 0を削除
するとcpuをフルに使って実行することができた。
しかしずっとループしており、止まらない。
outputに変換後のwavが出てきたが再生できないので失敗かと思えば、vlcで聞くことができた。
これはcolabにも注意として載っている。
生成したwavファイルは VLCなどで、再生してください。MSのメディアプレーヤーでは再生できません。
##まとめ
numpyは1.20以降
-gは書かず、cpuを使用する。
vlcで聞く
#googlecolabへ移行
先日以下の記事を見つけた。
この通りやってみたが、うまくいかなかったのでwindowsで実行することにしたのだが、
windowsで詰んでしまったのでもう一度使用することにした。
##pipについて
pip install cupy
はいらない。
一通りpipでインストールした後に、
!python -c 'import chainer; chainer.print_runtime_info()'
とすれば
Platform: Linux-4.19.112+-x86_64-with-Ubuntu-18.04-bionic
Chainer: 5.4.0
NumPy: 1.16.2
CuPy:
CuPy Version : 5.4.0
CUDA Root : /usr/local/cuda
CUDA Build Version : 10010
CUDA Driver Version : 11020
CUDA Runtime Version : 10010
cuDNN Build Version : 7500
cuDNN Version : 7500
NCCL Build Version : 2402
NCCL Runtime Version : 2402
iDeep: 2.0.0.post3
となり、cupyがもともと入っていることがわかる。
##ディレクトリについて
ディレクトリだが、説明があまりない
ローカルでdeep_yukarin以下を作ってからgoogledriveにアップロードするのがよい。
これを参考にだが、
#ここ追加
mkdir deep_yukarin
cd deep_yukarin
mkdir dat
mkdir dat/1st_models_by
mkdir dat/2nd_models_by
mkdir dat/1st_models_y
mkdir dat/1st_models_by/yukari
mkdir dat/1st_models_by/yukari/npy_pair
#ここ追加
mkdir dat/1st_models_by/yukari/voice_pair
mkdir dat/2nd_models_by/yukari
mkdir dat/1st_models_y/yukari
mkdir dat/1st_models_y/yukari/aligned_indexes
mkdir dat/1st_models_y/yukari/aligned_wav
mkdir dat/1st_models_y/yukari/statistics
mkdir dat/1st_models_y/yukari/npy_pair
mkdir dat/input
mkdir dat/output
mkdir dat/voice_src
mkdir dat/voice_src/voice_24000
mkdir dat/voice_src/voice_44100
mkdir dat/voice_src/voice_24000/yukari_pair
mkdir dat/voice_src/voice_24000/yukari_pair/own
mkdir dat/voice_src/voice_24000/yukari_pair/target
mkdir dat/voice_src/voice_24000/yukari_single
mkdir dat/voice_src/voice_44100/yukari_pair
mkdir dat/voice_src/voice_44100/yukari_pair/own
mkdir dat/voice_src/voice_44100/yukari_pair/target
mkdir dat/voice_src/voice_44100/yukari_single
これをコマンドラインで実行するのをお勧めする。(linuxの場合)
windowsはこちら
#ここ追加
mkdir deep_yukarin
cd deep_yukarin
mkdir dat
mkdir dat\1st_models_by
mkdir dat\2nd_models_by
mkdir dat\1st_models_y
mkdir dat\1st_models_by\yukari
mkdir dat\1st_models_by\yukari\npy_pair
#ここ追加
mkdir dat\1st_models_by\yukari\voice_pair
mkdir dat\2nd_models_by\yukari
mkdir dat\1st_models_y\yukari
mkdir dat\1st_models_y\yukari\aligned_indexes
mkdir dat\1st_models_y\yukari\aligned_wav
mkdir dat\1st_models_y\yukari\statistics
mkdir dat\1st_models_y\yukari\npy_pair
mkdir dat\input
mkdir dat\output
mkdir dat\voice_src
mkdir dat\voice_src\voice_24000
mkdir dat\voice_src\voice_44100
mkdir dat\voice_src\voice_24000\yukari_pair
mkdir dat\voice_src\voice_24000\yukari_pair\own
mkdir dat\voice_src\voice_24000\yukari_pair\target
mkdir dat\voice_src\voice_24000\yukari_single
mkdir dat\voice_src\voice_44100\yukari_pair
mkdir dat\voice_src\voice_44100\yukari_pair\own
mkdir dat\voice_src\voice_44100\yukari_pair\target
mkdir dat\voice_src\voice_44100\yukari_single
やりたいこと
predictoerだけ保存しているからdiscもnpy保存して、とってくるようにしたい
#windowsでbecome-yukarinの2段階特徴量抽出(失敗、colabに移行)
googlecolabでは問題なく実行可能。
しかし遅いアンドnpyのサイズが大きくて圧迫しているので
再びwindowsで特徴量抽出
python scripts/extract_spectrogram_pair.py -i single -o a
{'alpha': 0.466,
'enable_overwrite': False,
'f0_estimating_method': 'harvest',
'frame_period': 5,
'input_directory': WindowsPath('single'),
'order': 8,
'output_directory': WindowsPath('single'),
'pad_second': 0.0,
'sample_rate': 24000,
'top_db': None}
0%| | 0/104 [00:02<?, ?it/s]
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\pool.py", line 121, in worker
result = (True, func(*args, **kwds))
File "scripts/extract_spectrogram_pair.py", line 38, in generate_file
out = Path(arguments.output_directory, path.stem + '.npy')
NameError: name 'Path' is not defined
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "scripts/extract_spectrogram_pair.py", line 85, in <module>
main()
File "scripts/extract_spectrogram_pair.py", line 81, in main
list(tqdm(pool.imap(generate_file, paths), total=len(paths)))
File "G:\anaconda3\envs\yukaB\lib\site-packages\tqdm\std.py", line 1178, in __iter__
for obj in iterable:
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\pool.py", line 748, in next
raise value
NameError: name 'Path' is not defined
動かない
pip install pathlib
pip install argparse
動かない
なぜかimportしているのにPathが使えなかったり、定義しているのにargumentsがないといわれたりと意味不明
ならばと
pool = multiprocessing.Pool()
list(tqdm(pool.imap(generate_file, paths), total=len(paths)))
ここを
for tmp in paths:
generate_file(tmp)
にしたところ動いた(遅いが)
一段階の特徴量抽出のextract_acoustic_feature.pyではpoolで並列処理する部分は、
pool.starmap(generate_feature, zip(paths1, paths2), chunksize=16)
となっているため、imapが悪さをしている気がした。
と思ったが何をしてもやはりPathの部分が存在しないことになってしまう。
あきらめた。
#become-yukarin二段階学習のtrain_sr.py
これは何を学習するのかよくわからなかったのだが、
これだったり
これを見る限りひたすら目標の音声だけを用意すれば学習するらしい。
python train_sr.py config_sr.json model_stage2
config_sr.jsonにおいて、
"batchsize": 4
がrtx2070の8gbのgpuメモリでは限界
"log_iteration": 50,
"snapshot_iteration": 250
思った以上に時間がかかるので以上に変更
cudaはmaxになった
#become-yukarinの二段階学習後にsuper_resolution_test.pyで試してみる
コマンドライン因数は基本的に第一段階と同じ
test_data_srを作り、そこに1段階変換後のものを置く
outputにmodenameが作られてそこに出力されるみたい
python scripts/super_resolution_test.py model_stage2 -md . -iwd single
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce an executable.
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\spawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\spawn.py", line 114, in _main
prepare(preparation_data)
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\spawn.py", line 225, in prepare
_fixup_main_from_path(data['init_main_from_path'])
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\spawn.py", line 277, in _fixup_main_from_path
run_name="__mp_main__")
File "G:\anaconda3\envs\yukaB\lib\runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "G:\anaconda3\envs\yukaB\lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "G:\anaconda3\envs\yukaB\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\yuki\Downloads\become-yukarin\scripts\super_resolution_test.py", line 83, in <module>
pool = multiprocessing.Pool()
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\context.py", line 119, in Pool
context=self.get_context())
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\pool.py", line 176, in __init__
self._repopulate_pool()
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\pool.py", line 241, in _repopulate_pool
w.start()
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\process.py", line 112, in start
self._popen = self._Popen(self)
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\popen_spawn_win32.py", line 33, in __init__
prep_data = spawn.get_preparation_data(process_obj._name)
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\spawn.py", line 143, in get_preparation_data
_check_not_importing_main()
File "G:\anaconda3\envs\yukaB\lib\multiprocessing\spawn.py", line 136, in _check_not_importing_main
is not going to be frozen to produce an executable.''')
RuntimeError:
An attempt has been made to start a new process before the
current process has finished its bootstrapping phase.
This probably means that you are not using fork to start your
child processes and you have forgotten to use the proper idiom
in the main module:
こんなのがたくさんループして実行不可能
gpuを-1にしてcpuを使おうとしても実行不可能
あきらめてgooglecolabで実行した。
もちろん問題なし
#googlecolabを参考に環境を作り直す
windowsで試すことをあきらめきれず
googleの環境をそっくりそのままwindowsすべてに入れようとした。
googlevolab上で、
!pip freeze > yuka.txt
!python --verison
3.7.10
conda create -n googleyuka pip python==3.7.10
conda activate googleyuka
pip install -r yuka.txt
その結果がこちら
absl-py==0.12.0
alabaster==0.7.12
albumentations==0.1.12
alembic==1.5.8
altair==4.1.0
appdirs==1.4.4
APScheduler==3.7.0
argon2-cffi==20.1.0
astor==0.8.1
astropy==4.2
astunparse==1.6.3
async-generator==1.10
atari-py==0.2.6
atomicwrites==1.4.0
attrs==20.3.0
audioread==2.1.9
autograd==1.3
Babel==2.9.0
backcall==0.2.0
beautifulsoup4==4.6.3
bleach==3.3.0
blis==0.4.1
bokeh==2.3.0
Bottleneck==1.3.2
branca==0.4.2
bs4==0.0.1
CacheControl==0.12.6
cachetools==4.2.1
catalogue==1.0.0
certifi==2020.12.5
cffi==1.14.5
chainer==5.4.0
chainerui==0.3.0
chardet==3.0.4
click==7.1.2
cloudpickle==1.3.0
cmake==3.12.0
cmdstanpy==0.9.5
colorcet==2.0.6
colorlover==0.3.0
community==1.0.0b1
contextlib2==0.5.5
convertdate==2.3.2
coverage==3.7.1
coveralls==0.5
crcmod==1.7
cufflinks==0.17.3
cupy-cuda100==5.4.0
cvxopt==1.2.6
cvxpy==1.0.31
cycler==0.10.0
cymem==2.0.5
Cython==0.29.22
daft==0.0.4
dask==2.12.0
datascience==0.10.6
debugpy==1.0.0
decorator==4.4.2
defusedxml==0.7.1
descartes==1.1.0
dill==0.3.3
distributed==1.25.3
dlib==19.18.0
dm-tree==0.1.5
docopt==0.6.2
docutils==0.16
dopamine-rl==1.0.5
earthengine-api==0.1.258
easydict==1.9
ecos==2.0.7.post1
editdistance==0.5.3
en-core-web-sm==2.2.5
entrypoints==0.3
ephem==3.7.7.1
et-xmlfile==1.0.1
fa2==0.3.5
fancyimpute==0.4.3
fastai==1.0.61
fastdtw==0.3.4
fastprogress==1.0.0
fastrlock==0.6
fbprophet==0.7.1
feather-format==0.4.1
filelock==3.0.12
firebase-admin==4.4.0
fix-yahoo-finance==0.0.22
Flask==1.1.2
flatbuffers==1.12
folium==0.2.1
future==0.16.0
gast==0.3.3
GDAL==2.2.2
gdown==3.6.4
gensim==3.6.0
geographiclib==1.50
geopy==1.17.0
gin-config==0.4.0
glob2==0.7
google==2.0.3
google-api-core==1.26.2
google-api-python-client==1.12.8
google-auth==1.28.0
google-auth-httplib2==0.0.4
google-auth-oauthlib==0.4.3
google-cloud-bigquery==1.21.0
google-cloud-bigquery-storage==1.1.0
google-cloud-core==1.0.3
google-cloud-datastore==1.8.0
google-cloud-firestore==1.7.0
google-cloud-language==1.2.0
google-cloud-storage==1.18.1
google-cloud-translate==1.5.0
google-colab==1.0.0
google-pasta==0.2.0
google-resumable-media==0.4.1
googleapis-common-protos==1.53.0
googledrivedownloader==0.4
graphviz==0.10.1
greenlet==1.0.0
grpcio==1.32.0
gspread==3.0.1
gspread-dataframe==3.0.8
gym==0.17.3
h5py==2.10.0
HeapDict==1.0.1
hijri-converter==2.1.1
holidays==0.10.5.2
holoviews==1.14.2
html5lib==1.0.1
httpimport==0.5.18
httplib2==0.17.4
httplib2shim==0.0.3
humanize==0.5.1
hyperopt==0.1.2
ideep4py==2.0.0.post3
idna==2.10
imageio==2.4.1
imagesize==1.2.0
imbalanced-learn==0.4.3
imblearn==0.0
imgaug==0.2.5
importlib-metadata==3.8.1
importlib-resources==5.1.2
imutils==0.5.4
inflect==2.1.0
iniconfig==1.1.1
intel-openmp==2021.2.0
intervaltree==2.1.0
ipykernel==4.10.1
ipython==5.5.0
ipython-genutils==0.2.0
ipython-sql==0.3.9
ipywidgets==7.6.3
itsdangerous==1.1.0
jax==0.2.11
jaxlib==0.1.64+cuda110
jdcal==1.4.1
jedi==0.18.0
jieba==0.42.1
Jinja2==2.11.3
joblib==1.0.1
jpeg4py==0.1.4
jsonschema==2.6.0
jupyter==1.0.0
jupyter-client==5.3.5
jupyter-console==5.2.0
jupyter-core==4.7.1
jupyterlab-pygments==0.1.2
jupyterlab-widgets==1.0.0
kaggle==1.5.12
kapre==0.1.3.1
Keras==2.4.3
Keras-Preprocessing==1.1.2
keras-vis==0.4.1
kiwisolver==1.3.1
knnimpute==0.1.0
korean-lunar-calendar==0.2.1
librosa==0.6.3
lightgbm==2.2.3
llvmlite==0.32.1
lmdb==0.99
LunarCalendar==0.0.9
lxml==4.2.6
Mako==1.1.4
Markdown==3.3.4
MarkupSafe==1.1.1
matplotlib==3.2.2
matplotlib-venn==0.11.6
missingno==0.4.2
mistune==0.8.4
mizani==0.6.0
mkl==2019.0
mlxtend==0.14.0
more-itertools==8.7.0
moviepy==0.2.3.5
mpmath==1.2.1
msgpack==1.0.2
multiprocess==0.70.11.1
multitasking==0.0.9
murmurhash==1.0.5
music21==5.5.0
natsort==5.5.0
nbclient==0.5.3
nbconvert==5.6.1
nbformat==5.1.2
nest-asyncio==1.5.1
networkx==2.5
nibabel==3.0.2
nltk==3.2.5
notebook==5.3.1
np-utils==0.5.12.1
numba==0.44.0
numexpr==2.7.3
numpy==1.16.2
nvidia-ml-py3==7.352.0
oauth2client==4.1.3
oauthlib==3.1.0
okgrade==0.4.3
opencv-contrib-python==4.1.2.30
opencv-python==4.1.2.30
openpyxl==2.5.9
opt-einsum==3.3.0
osqp==0.6.2.post0
packaging==20.9
palettable==3.3.0
pandas==1.1.5
pandas-datareader==0.9.0
pandas-gbq==0.13.3
pandas-profiling==1.4.1
pandocfilters==1.4.3
panel==0.11.1
param==1.10.1
parso==0.8.2
pathlib==1.0.1
patsy==0.5.1
pexpect==4.8.0
pickleshare==0.7.5
Pillow==7.1.2
pip-tools==4.5.1
plac==1.1.3
plotly==4.4.1
plotnine==0.6.0
pluggy==0.7.1
pooch==1.3.0
portpicker==1.3.1
prefetch-generator==1.0.1
preshed==3.0.5
prettytable==2.1.0
progressbar2==3.38.0
prometheus-client==0.10.0
promise==2.3
prompt-toolkit==1.0.18
protobuf==3.12.4
psutil==5.4.8
psycopg2==2.7.6.1
ptyprocess==0.7.0
py==1.10.0
pyarrow==3.0.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycocotools==2.0.2
pycparser==2.20
pyct==0.4.8
pydata-google-auth==1.1.0
pydot==1.3.0
pydot-ng==2.0.0
pydotplus==2.0.2
PyDrive==1.3.1
pyemd==0.5.1
pyerfa==1.7.2
pyglet==1.5.0
Pygments==2.6.1
pygobject==3.26.1
pymc3==3.7
PyMeeus==0.5.11
pymongo==3.11.3
pymystem3==0.2.0
PyOpenGL==3.1.5
pyparsing==2.4.7
pyrsistent==0.17.3
pysndfile==1.3.8
PySocks==1.7.1
pysptk==0.1.18
pystan==2.19.1.1
pytest==3.6.4
python-apt==0.0.0
python-chess==0.23.11
python-dateutil==2.8.1
python-editor==1.0.4
python-louvain==0.15
python-slugify==4.0.1
python-utils==2.5.6
pytz==2018.9
pyviz-comms==2.0.1
PyWavelets==1.1.1
pyworld==0.2.12
PyYAML==3.13
pyzmq==22.0.3
qdldl==0.1.5.post0
qtconsole==5.0.3
QtPy==1.9.0
regex==2019.12.20
requests==2.23.0
requests-oauthlib==1.3.0
resampy==0.2.2
retrying==1.3.3
rpy2==3.4.3
rsa==4.7.2
scikit-image==0.16.2
scikit-learn==0.22.2.post1
scipy==1.4.1
screen-resolution-extra==0.0.0
scs==2.1.2
seaborn==0.11.1
Send2Trash==1.5.0
setuptools-git==1.2
Shapely==1.7.1
simplegeneric==0.8.1
six==1.15.0
sklearn==0.0
sklearn-pandas==1.8.0
smart-open==4.2.0
snowballstemmer==2.1.0
sortedcontainers==2.3.0
SoundFile==0.10.3.post1
spacy==2.2.4
Sphinx==1.8.5
sphinxcontrib-serializinghtml==1.1.4
sphinxcontrib-websupport==1.2.4
SQLAlchemy==1.4.3
sqlparse==0.4.1
srsly==1.0.5
statsmodels==0.10.2
sympy==1.7.1
tables==3.4.4
tabulate==0.8.9
tblib==1.7.0
tensorboard==2.4.1
tensorboard-chainer==0.4.0
tensorboard-plugin-wit==1.8.0
tensorflow==2.4.1
tensorflow-datasets==4.0.1
tensorflow-estimator==2.4.0
tensorflow-gcs-config==2.4.0
tensorflow-hub==0.11.0
tensorflow-metadata==0.29.0
tensorflow-probability==0.12.1
termcolor==1.1.0
terminado==0.9.3
testpath==0.4.4
text-unidecode==1.3
textblob==0.15.3
textgenrnn==1.4.1
Theano==1.0.5
thinc==7.4.0
tifffile==2021.3.31
toml==0.10.2
toolz==0.11.1
torch==1.8.1+cu101
torchsummary==1.5.1
torchtext==0.9.1
torchvision==0.9.1+cu101
tornado==5.1.1
tqdm==4.41.1
traitlets==5.0.5
tweepy==3.10.0
typeguard==2.7.1
typing-extensions==3.7.4.3
tzlocal==2.1
uritemplate==3.0.1
urllib3==1.24.3
vega-datasets==0.9.0
wasabi==0.8.2
wcwidth==0.2.5
webencodings==0.5.1
Werkzeug==1.0.1
widgetsnbextension==3.5.1
wordcloud==1.5.0
world4py==0.1.1
wrapt==1.12.1
xarray==0.15.1
xgboost==0.90
xkit==0.0.0
xlrd==1.1.0
xlwt==1.3.0
yellowbrick==0.9.1
zict==2.0.0
zipp==3.4.1
conda install python==3.7.10
cupy-cuda101を100
become-yukarin==1.0.0
yukarin
を削除
Collecting editdistance==0.5.3
Downloading editdistance-0.5.3-cp37-cp37m-win_amd64.whl (23 kB)
ERROR: Could not find a version that satisfies the requirement en-core-web-sm==2.2.5
ERROR: No matching distribution found for en-core-web-sm==2.2.5
とりあえず削除
ERROR: Could not find a version that satisfies the requirement ideep4py==2.0.0.post3
ERROR: No matching distribution found for ideep4py==2.0.0.post3
削除
ERROR: Could not find a version that satisfies the requirement jaxlib==0.1.64+cuda110
ERROR: No matching distribution found for jaxlib==0.1.64+cuda110
cuda100にしてみた
だめ
ERROR: Could not find a version that satisfies the requirement jaxlib==0.1.64+cuda100
ERROR: No matching distribution found for jaxlib==0.1.64+cuda100
pip install jaxlib==0.1.64
だめ
消去
ERROR: Could not find a version that satisfies the requirement pygobject==3.26.1
ERROR: No matching distribution found for pygobject==3.26.1
削除
Collecting rpy2==3.4.3
Downloading rpy2-3.4.3.tar.gz (188 kB)
|████████████████████████████████| 188 kB 6.8 MB/s
ERROR: Command errored out with exit status 1:
command: 'G:\anaconda3\envs\googleyuka\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-p9vmu_6r\\rpy2_0a417b7ec76b44ab977d91c13a2df161\\setup.py'"'"'; __file__='"'"'C:\\Users\\yuki\\AppData\\Local\\Temp\\pip-install-p9vmu_6r\\rpy2_0a417b7ec76b44ab977d91c13a2df161\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\yuki\AppData\Local\Temp\pip-pip-egg-info-nc3qyncm'
cwd: C:\Users\yuki\AppData\Local\Temp\pip-install-p9vmu_6r\rpy2_0a417b7ec76b44ab977d91c13a2df161\
Complete output (2 lines):
Error: rpy2 in API mode cannot be built without R in the PATH or R_HOME defined. Correct this or force ABI mode-only by defining the environment variable RPY2_CFFI_MODE=ABI
['cffi>=1.10.0', 'jinja2', 'pytz', 'tzlocal']
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/38/d4/8e79a52dda0f41fced4381f2964c592573ac37df14480be75fbdd55e5587/rpy2-3.4.3.tar.gz#sha256=a39f2d75c24c688d5f48dfb2ef82efc006f2a51591941743026e1182353bf558 (from https://pypi.org/simple/rpy2/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement rpy2==3.4.3
ERROR: No matching distribution found for rpy2==3.4.3
削除
ERROR: Could not find a version that satisfies the requirement screen-resolution-extra==0.0.0
ERROR: No matching distribution found for screen-resolution-extra==0.0.0
削除
ERROR: Could not find a version that satisfies the requirement torch==1.8.1+cu101
ERROR: No matching distribution found for torch==1.8.1+cu101
削除
ERROR: Could not find a version that satisfies the requirement torchvision==0.9.1+cu101
ERROR: No matching distribution found for torchvision==0.9.1+cu101
削除
ERROR: Could not find a version that satisfies the requirement xkit==0.0.0
ERROR: No matching distribution found for xkit==0.0.0
削除
googlecolabから最初から入っているいらない奴と、
さらに
pip install folium==0.2.1
pip install numpy==1.16.2
pip install imgaug==0.2.5
pip install librosa
pip install pysptk
pip install pyworld
pip install fastdtw
pip install matplotlib
pip install chainerui==0.3.0
pip install tqdm
pip install world4py
pip install tensorboard-chainer==0.4.0
pip install git+https://github.com/Hiroshiba/become-yukarin
pip install git+https://github.com/Hiroshiba/yukarin
pip install llvmlite==0.32.1
pip install numba==0.44
pip install cupy-cuda100==5.4.0
最終的には
alembic==1.5.8
appdirs==1.4.4
APScheduler==3.7.0
audioread==2.1.9
become-yukarin @ git+https://github.com/Hiroshiba/become-yukarin@99a4998f4b7b9def2079c42be0edfc70201a1856
certifi==2020.12.5
cffi==1.14.5
chainer==5.4.0
chainerui==0.3.0
chardet==4.0.0
click==7.1.2
cupy-cuda100==5.4.0
cycler==0.10.0
Cython==0.29.22
decorator==4.4.2
fastdtw==0.3.4
filelock==3.0.12
Flask==1.1.2
folium==0.2.1
greenlet==1.0.0
HeapDict==1.0.1
idna==2.10
imageio==2.9.0
imageio-ffmpeg==0.4.3
imgaug==0.2.5
importlib-metadata==3.10.0
itsdangerous==1.1.0
Jinja2==2.11.3
joblib==1.0.1
kiwisolver==1.3.1
librosa==0.6.3
llvmlite==0.32.1
Mako==1.1.4
MarkupSafe==1.1.1
matplotlib==3.4.1
moviepy==1.0.3
msgpack==1.0.2
networkx==2.5.1
numba==0.44.0
numpy==1.20.2
packaging==20.9
pandas==1.2.3
Pillow==8.2.0
pooch==1.3.0
proglog==0.1.9
protobuf==3.15.8
pycparser==2.20
pyparsing==2.4.7
pysptk==0.1.18
python-dateutil==2.8.1
python-editor==1.0.4
pytz==2021.1
PyWavelets==1.1.1
pyworld==0.2.12
requests==2.25.1
resampy==0.2.2
scikit-image==0.18.1
scikit-learn==0.24.1
scipy==1.6.2
six==1.15.0
SoundFile==0.10.3.post1
SQLAlchemy==1.4.7
tensorboard-chainer==0.4.0
threadpoolctl==2.1.0
tifffile==2021.4.8
tqdm==4.60.0
typing-extensions==3.7.4.3
tzlocal==2.1
urllib3==1.26.4
Werkzeug==1.0.1
wincertstore==0.2
world4py==0.1.1
xarray==0.15.1
xgboost==0.90
xlrd==1.1.0
xlwt==1.3.0
yellowbrick==0.9.1
yukarin @ git+https://github.com/Hiroshiba/yukarin@85f39e21cc8f393396f8c575dec4e297d352dd5a
zict==2.0.0
zipp==3.4.1
##結論
linuxやgooglecolab特有のものなどを消したりしたが結局動かないものは動かない
#yukarinで改めて一段階の学習
どうもbecome-yukarinとyukarinの関係がわからなかったのだが、自分の中で整理すると、
become-yukarin内で1,2段階学習したのち1,2段階音声変換をするのは昔の手法
yukarinで1段階学習かつ変換し、become-yukarinで2段階学習したものを使ってyukarindで2段階変換するのが新しい手法
なおrealtimeで変換するのは後者の方法みたいだ。
#windowでyukarinで特徴量抽出
最初のほうにやった通りにwindowsで実行
#googlecolabでyukarinのtrain.py
最初に書いた通り、windowsではnumpyの板挟みにあって動かないので、googlecolabで実行
#colab上でyukarin1,2段階変換
とりあえずgooglecolab上で実行できた。
しかし2段階の学習が全然だったため、全然いい感じに変換できなかった。
#ぼやき
numpyがなぜうまくいかないんだ
trainに学習のセーブアンドロード機能をなぜつけなかったんだ(特に2段階)
2段階の特徴量抽出でなぜimapで動かすとPathが使えなくなるんだ
全体的にわからないことが多い。特に学習モデルとか
きりたんのデータセットはいかが使えそう
#まとめ
特にまとめることもせず、時系列順に起きたことを書いていたら結構な量になってしまいました。特にnumpyの問題やPathの問題は原因がわからずあきらめてしまいました。
最終的に
第一段階yukarin
特徴量抽出windows
学習googlecolab
学習後テストgooglecolab
第二段階become-yukarin
特徴量抽出windowsでforに変形してゆっくりor googlecolab
学習windows
学習後テストgooglecolab
となりました。
いったんこの記事は公開しますが、後々きれいにするかもしれないです。
#参考にしたサイト