5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

yukarinライブラリをwindowsで使用しようとして四苦八苦した日記のようなもの

Last updated at Posted at 2021-04-13

#初めに

これは解説記事ではありません。
やったことを時系列に書いていき、どのようなエラーが出てどう対処したかを書いています。
そのため読みにくいと思いますが、各章の最後にある程度まとめたものを書こうと思います。

#環境

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
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を大きくした。

また自分なりに理解した内容

config.py
{
  "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'

となっていることが分かったが、やっぱりよくわからなかったので、さらに調べたところ、

voice_conversion_test.py
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があるフォルダ。ここからランダムで数個変換するらしい。

voice_conversion_test.py
    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は

voice_conversion_test.py
    if gpu is None:
        pool = multiprocessing.Pool()
        pool.map(process_partial, paths)
    else:
        list(map(process_partial, paths))

とあるから、おそらく0で使用、何も書かなければcpu

##フォルダ

さらに、

voice_conversion_test.py
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がないといわれたりと意味不明

ならばと

extract_spectrogram_pair.py
pool = multiprocessing.Pool()
list(tqdm(pool.imap(generate_file, paths), total=len(paths)))

ここを

extract_spectrogram_pair.py
    for tmp in paths:
        generate_file(tmp)

にしたところ動いた(遅いが)

一段階の特徴量抽出のextract_acoustic_feature.pyではpoolで並列処理する部分は、

extract_acoustic_feature.py
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になった

image.png

#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

となりました。
いったんこの記事は公開しますが、後々きれいにするかもしれないです。

#参考にしたサイト

5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?