Seed-VCをCUDA 12.6に対応させて構築する実践記録:Web UIによる音声変換も検証

seed-vcが大幅なバージョンアップで動かなくなったので対処する

以前の記事は以下です。

⚙ 実戦形式:CU121 → CU126 対応のための仮想環境リセット手順(前提:CUDA 12.8)

SEED-VC: 音声変換システム 主な機能 🔊 • ゼロショット音声変換 🔊 • ゼロショットリアルタイム音声変換 🗣️ (アルゴリズム遅延〜300ms、デバイス遅延〜100ms) • ゼロショット歌声変換 🎶 • カスタムデータでの微調整(話者あたり最低1発話) • 非常に高速な学習(最低100ステップ、T4で約2分) • 1〜30秒の参照音声で声をクローン リリース済みモデル V1.0 モデル seed-uvit-tat-xlsr-tiny • 目的: リアルタイム音声変換 • 22050Hz、XLSR-large、HIFTボコーダー、25Mパラメータ seed-uvit-whisper-small-wavenet • 目的: オフライン音声変換 • 22050Hz、Whisper-small、BigVGAN、98Mパラメータ seed-uvit-whisper-base • 目的: 歌声変換 • 44100Hz、Whisper-small、BigVGAN、200Mパラメータ V2.0 モデル hubert-bsqvae-small • 目的: 声質・アクセント変換 • 22050Hz、ASTRAL-Quantization、BigVGAN • 67M(CFM) + 90M(AR)パラメータ • 元話者の特徴を抑制する能力が最も優れている 使用インターフェース 🛠️ コマンドライン • inference.py (V1モデル用) • inference_v2.py (V2モデル用) • 設定可能なパラメータ: – 拡散ステップ数 (4-50) – 長さ調整、CFGレート等 – 歌声用F0条件 Web UI • app_vc.py – 音声変換UI • app_svc.py – 歌声変換UI • app_vc_v2.py – V2モデルUI • app.py – 統合UI • http://localhost:7860/ からアクセス • カスタムチェックポイント読込可能 リアルタイムGUI • real-time-gui.py • ストリーミング用に最適化 • パラメータ: – ブロック時間、クロスフェード長 – 追加コンテキスト (左/右) • 推奨: GPU + VB-CABLE トレーニング 🏋️ データセット要件 • 音声ファイル: 各1〜30秒 • 形式: .wav, .flac, .mp3, .m4a, .opus, .ogg • 話者あたり最低1発話 • クリーンな音声推奨 (BGM/ノイズなし) トレーニングコマンド • V1: python train.py –config {パス} –dataset-dir {パス} … • V2: accelerate launch train_v2.py –dataset-dir {パス} … • チェックポイントからの再開をサポート • Colabチュートリアル利用可能 最近の更新 2024年4月16日 V2モデルリリース 2024年3月3日 Apple Siliconサポート 2023年11月26日 tinyモデル更新 2023年11月19日 arXiv論文公開 2023年10月27日 リアルタイムGUI追加

🧱 前提条件

  • WindowsマシンでCUDAドライバのバージョンは 12.8(→CUDA 12.6対応ビルドも問題なく動作可能)
  • GitHub プロジェクトで git pull を実行すると、requirements.txt に以下のような変更が確認された:
torch --pre --index-url https://download.pytorch.org/whl/nightly/cu126
  • これは、従来の cu121 ビルドから cu126 ビルドに変更された ことを意味する
  • このように CUDA バージョンに依存する変更が requirements.txt にあった場合、既存の Python 仮想環境では互換性が崩れ、動作しない可能性が高い

🔍 なぜ仮想環境を作りなおす必要があるのか?

  • Python の仮想環境は、インストールされたライブラリをキャッシュしている
  • 以前の仮想環境には cu121ビルド 用の torchtorchvision などがすでに入っており、それと cu126 の依存ライブラリが競合する
  • pip install -r requirements.txt を行っても、すでにある依存関係の解決に失敗し、実行時に CUDA 非対応などのエラーが出る

そのため、「仮想環境ごと削除して最初から作りなおす」ことが、最も安全で確実な対処法となる。

🧹 仮想環境の削除方法

✅ 方法1:ターミナルから削除(推奨)

rm -rf .venv

※ PowerShell では次のようにも:

Remove-Item -Recurse -Force .venv

✅ 方法2:GUI操作(初心者におすすめ)

  • VSCodeのエクスプローラー.venv フォルダを右クリック → 削除
  • エクスプローラー(Windows) でプロジェクトフォルダを開き .venv フォルダを削除

→ これで、既存の環境が完全にクリアされる。

🛠 仮想環境リセット後の対応:requirements.txt の修正

💡 実戦で気づいたこと

実はこのトラブル、本物の Linux や WSL 上では発生しない可能性もあります。
というのも、以前 WSL 環境では以下のような cu121 → cu126 の変更に対して、仮想環境を作り直さなくても普通に動いた経験があります。

🤔 なぜ Windows ではうまくいかないのか?

Windows 上では仮想環境内にインストールされた PyTorch などが、CUDA バージョンと強く結びついており、pip install -r requirements.txt をそのまま使うと、

  • 以前の cu121 版がキャッシュされたまま上書きされなかったり、
  • 依存関係の不整合でインストールに失敗したり
  • 実行時に “Torch not compiled with CUDA enabled” のようなエラーになる

という現象が起きます。

✏️ requirements.txt の修正(実践で行った内容)

そこで、仮想環境を再構築した上で、requirements.txt を以下のように修正しました。

🔧 修正内容

--extra-index-url https://download.pytorch.org/whl/nightly/cu126

# PyTorch Nightly CUDA 12.6 ビルドを使用
torch --pre
torchvision --pre
torchaudio --pre

# その他の依存パッケージ
scipy==1.13.1
librosa==0.10.2
huggingface-hub==0.28.1 # ✅ gradioと互換
# accelerate は削除(必要であれば後で追加)
munch==4.0.0
einops==0.8.0
descript-audio-codec==1.0.0
gradio==5.23.0
pydub==0.25.1
resemblyzer
jiwer==3.0.3
transformers==4.38.2
FreeSimpleGUI==5.1.1
soundfile==0.12.1
sounddevice==0.5.0
modelscope==1.18.1
funasr==1.1.5
numpy==1.26.4
hydra-core==1.3.2
pyyaml
python-dotenv

💡 なぜこの修正が必要だったのか?

--extra-index-url による PyTorch Nightly の優先取得

PyTorch の CUDA 12.6 対応ビルドは pypi.org には存在せず、専用インデックスで配布されているため、次のように 明示的に PyTorch Nightly のインデックスを追加する必要があります:

--extra-index-url https://download.pytorch.org/whl/nightly/cu126

torch --pre の指定

これは Nightlyビルド(開発中の最新ビルド) を有効にするための pip オプションです。
Nightly版には「まだ安定版としてリリースされていないが最新CUDA対応」のビルドが含まれます。

huggingface-hubgradio のバージョン調整

  • gradio==5.23.0huggingface-hub>=0.28.1 を要求
  • 一方、古い acceleratehuggingface-hub<0.28 を要求

両立ができないため、accelerate を一旦除外し、gradio に合わせて huggingface-hub==0.28.1 に統一

✅ 読者に伝えたいポイント

  • Windows では CUDA バージョンが絡む変更に敏感なので、仮想環境の作り直し+requirementsの調整は基本
  • requirements.txttorch 系は Nightlyのインデックス明示+–pre指定が必要
  • gradio などのライブラリが huggingface-hub に依存しているため、バージョン整合性が重要
  • WSL や Linux では環境の柔軟性が高く、再作成せず動く場合もある

🧪 CUDA 12.6対応のPyTorchを一発でインストールする方法(実践編)

仮に requirements.txt を使用せず、最小限の手順でエラーなく一発で動かしたい場合は、以下のように PyTorch系だけを先に個別にインストールするのが効果的です。

✅ 一発インストールコマンド

pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu126

このコマンドにより、以下が同時に実現されます:

  • **Nightlyビルド(開発版)**の PyTorch を導入
  • CUDA 12.6 対応バイナリを明示的に取得
  • requirements.txt による依存関係の衝突を回避

🔍 成功したかどうか確認するには?

インストール後、以下のコマンドで CUDAが正しく認識されているか を確認できます:

python -c "import torch; print(torch.version.cuda); print(torch.cuda.is_available())"

✅ 出力例(成功時)

12.6
True

❗ 出力例(失敗時)

None
False

この場合は、インストールされたPyTorchが CPU版である可能性が高いです。
その場合は、もう一度上記の pip install --pre コマンドで入れ直してください。

💡補足:なぜこの方法が有効なのか?

  • requirements.txt に他のパッケージと一緒に torch を入れると、依存解決の過程で意図しないバージョンが入ることがある
  • とくに torch==2.4.0 のように明示されていた場合、PyPI の CPU版が選ばれてしまうことが多い
  • それを避けるには、CUDA対応PyTorchだけを個別に先に入れてしまうのが確実

✍️ これが重要だった

実際の現場では、requirements.txt だけで完結しないケースも多くあります。
そのときは、PyTorchだけを先にNightly + CUDA対応で入れておくというワークフローを試してみてください。
安定して再現性のある環境構築が可能になります。

🌐 Web UI の起動と GUI 操作

仮想環境と PyTorch のインストールが成功し、requirements.txt の依存関係も整ったら、いよいよ実行です。
以下のコマンドを実行すると、ブラウザ上でGUI操作が可能なWebインターフェースが起動します。

✅ V2モデル(最新・多機能版)の起動方法

python app_vc_v2.py

実行後、ターミナルに次のような表示が出ます:

* Running on local URL: http://127.0.0.1:7860

→ このURL(http://127.0.0.1:7860)をブラウザで開くと、GUIが表示され、音声ファイルのドラッグ&ドロップやパラメータ調整などが可能になります。

🤔 なぜV2を選んだのか?

公式の説明では、V2モデル(app_vc_v2.py)は以下のような特徴を持っています:

  • 話者の特徴をより自然に匿名化(anonymization)
  • アクセントや話し方の変換にも対応
  • ARモデルによるより高精度な変換
  • 推論精度をコントロールできる豊富なパラメータ(例:--similarity-cfg-rate--intelligibility-cfg-rate など)

筆者は「より高機能であろう」と考えてV2を選びましたが、実際に試してみると公式の app.pyapp_vc.py よりも やや実装が荒い と感じる部分もありました(エラーが出たり、設定が少なかったり)。

とはいえ、ゼロショット変換や匿名化機能など、先進的な機能は試す価値があります。

✅ GUIでの実践的な使い方(軽く紹介)

GUI上では以下のような操作が可能です:

操作説明
Source Audio に音声ファイルをアップロード変換元となる音声
Reference Audio に別の声の音声をアップロード目標とする声の特徴を抽出するため
パラメータを変更声質の変化度、滑らかさ、音程保持などが調整可能
再生 or 変換ボタンを押す推論が走り、変換された音声が生成される
タイトルとURLをコピーしました