Open3

M2 MacBookでRVCを動かすメモ

demmysdemmys

このissueの投稿ではcondaを使っているが自分はvenvでいいかなと思ったのでvenv

git clone https://github.com/w-okada/voice-changer.git
cd voice-changer
python3.10 -m venv venv
source venv/bin/activate

Pythonバージョンは3.11だと依存ライブラリの一部がインストールできなかったのでv3.10に
issueではパッチ用意してくれているがそのままではうまく適用できなかったので手で修正

cd server
vim requirements.txt
-onnxruntime-gpu==1.13.1
+#onnxruntime-gpu==1.13.1
+onnxruntime-silicon==1.13.1
vim restapi/MMVC_Rest.py
-            if sys.platform.startswith("darwin"):
+            #if sys.platform.startswith("darwin"):
+            if sys.platform.startswith("darwin") and hasattr(sys, "_MEIPASS"):

必要ならpyworldの個別インストールと書いてあるがいったん無視して依存ライブラリをインストール

pip install -r requirements.txt
...
Building wheels for collected packages: pyworld, fairseq
  Building wheel for pyworld (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for pyworld (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [107 lines of output]
...
      TypeError: Object of type PosixPath is not JSON serializable
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pyworld
  Building wheel for fairseq (pyproject.toml) ... done
  Created wheel for fairseq: filename=fairseq-0.12.2-cp310-cp310-macosx_13_0_arm64.whl size=10354278 sha256=d3f8088065c485450ec38f0f953125a27b001c8646ce65f8ffc35042f0d8062f
  Stored in directory: /Users/demmy/Library/Caches/pip/wheels/e4/35/55/9c66f65ec7c83fd6fbc2b9502a0ac81b2448a1196159dacc32
Successfully built fairseq
Failed to build pyworld
ERROR: Could not build wheels for pyworld, which is required to install pyproject.toml-based projects

pyworld周りのビルドでコケたのでissueの通りpyworldの個別インストールを試す
numpyが無いと言われるのでインストールして試すとbdist_wheelが無いエラー

pip install numpy==1.23.5 # requirements.txtとバージョン合わせて指定しておく
ARCHFLAGS="-arch arm64" pip install pyworld==0.3.3 --compile --no-cache-dir --force-reinstall --no-build-isolation
...
      error: invalid command 'bdist_wheel'
      [end of output]

pyworldのインストールの過程でrequirements.txtから入れた場合と同じエラーが出て調べると以下のissueに当たったので --no-build-isolation をつけてインストールしたが不要だったかも?
https://github.com/gitmylo/audio-webui/issues/78#issuecomment-1639848796

とりあえずこのエラーはwheelがないということみたいなのでインストールしてあげてリトライしたらいけた
https://zenn.dev/ihcomirot/articles/2b054378779445

pip install wheel
ARCHFLAGS="-arch arm64" pip install pyworld==0.3.3 --compile --no-cache-dir --force-reinstall --no-build-isolation
pip install -r requirements.txt
demmysdemmys

最初のissue通りのコマンドで起動
しばらくうんともすんとも言わないが、めっちゃダウンロード走った上でエラー

PYTORCH_ENABLE_MPS_FALLBACK=1 python3 MMVCServerSIO.py -p 18888 --https false \
    --content_vec_500 pretrain/checkpoint_best_legacy_500.pt  \
    --content_vec_500_onnx pretrain/content_vec_500.onnx \
    --content_vec_500_onnx_on true \
    --hubert_base pretrain/hubert_base.pt \
    --hubert_base_jp pretrain/rinna_hubert_base_jp.pt \
    --hubert_soft pretrain/hubert/hubert-soft-0d54a1f4.pt \
    --nsf_hifigan pretrain/nsf_hifigan/model \
    --crepe_onnx_full pretrain/crepe_onnx_full.onnx \
    --crepe_onnx_tiny pretrain/crepe_onnx_tiny.onnx \
    --model_dir model_dir \
    --samples samples.json

[Errno 2] No such file or directory: 'voice-changer-native-client'
    Booting PHASE :__mp_main__
    サーバプロセスを起動しています。
    Booting PHASE :__mp_main__
    サーバプロセスを起動しています。
Process SpawnProcess-1:1:
...
OSError: [Errno 9] Bad file descriptor

あれー、と思っていったん終了して再度起動したら同じNo such fileのエラーは出るものの起動できた。
なんこれ。