koelab — ローカル声変換を「pull して run する」時代へ

声を変えるツールは世の中にたくさんある。でも「使いやすい」ものがない。

RVC は 700 件以上のオープンイシューを抱えたまま事実上放置、seed-vc はアーカイブ済み、vcclient は Mac で動かず API もない、GPT-SoVITS はセットアップに 2 時間かかる。そのどれもが「ツール」であって「プラットフォーム」ではない。

そこで作ったのが koelab だ。

コンセプト: Ollama for Voice

LLM の世界では Ollama が「モデルを pull して run する」という体験を定着させた。同じことを音声モデルでやる。それだけのコンセプトだ。

koelab pull seed-vc
koelab run seed-vc -i source.wav -r reference.wav -o output.wav

これだけで動く。GPU があれば自動的に使う。なければ CPU にフォールバックする。モデルのダウンロード先もキャッシュも全部 koelab が管理する。

何ができるか

1. ファイルベースの声変換

最もシンプルな使い方。source.wav を reference.wav の声に変換する。

koelab run seed-vc \
  --input source.wav \
  --reference target_voice.wav \
  --output converted.wav \
  --steps 25 \
  --similarity 0.7

--steps は拡散ステップ数(高いほど高品質、遅い)、--similarity は声の類似度(0.0〜1.0)。

2. リアルタイム声変換

マイク入力をリアルタイムで別の声に変換する。ヘッドセット推奨。

koelab live seed-vc -r reference_voice.wav

ラップトップの内蔵マイク・スピーカーでも動くが、スピーカーからの音がマイクに回り込むので実用はヘッドセットが前提。

デバイスの確認と選択:

koelab audio-devices

koelab live seed-vc \
  --reference voice.wav \
  --input-device 1 \
  --output-device 3 \
  --block-time 0.25 \
  --silence-threshold 0.003 \
  --save-output live.wav    # 変換後の音声を WAV ファイルに保存(省略可)

Windows でデバイスを選ぶ際は、koelab audio-devices で表示されるホスト API(MME・DirectSound・WASAPI・WDM-KS)が入力と出力で一致するペアを選ぶこと。

3. テキスト読み上げ (TTS)

日本語 TTS の irodori-tts、多言語 TTS の xtts-v2 に対応している。

koelab pull irodori-tts
koelab speak irodori-tts --text "こんにちは、koelab です。" -o hello.wav

koelab pull xtts-v2
koelab speak xtts-v2 --text "Hello from koelab." --language en -o hello_en.wav

xtts-v2 は --reference が必須(--no-ref には非対応)。

xtts-v2 は英語・スペイン語・フランス語・ドイツ語・日本語・韓国語など 17 言語に対応。

4. WebUI + REST API

pip install koelab[api]
koelab serve

ブラウザで http://localhost:11435 を開くと WebUI が使える。

WebUI でできること:

  • マイクで直接録音してそのままソース音声として使う(波形メーター付き)
  • 参照音声をライブラリに保存して名前をつけて管理
  • よく使う参照音声をお気に入り 3 スロットに登録
  • 変換履歴の一覧・再生・ダウンロード・設定の再利用
  • fast / balanced / quality のプリセット切り替え
  • /tts ページで irodori-tts / xtts-v2 による読み上げ

API は FastAPI ベースで、http://localhost:11435/docs に Swagger UI がある。

5. モデルレジストリ

利用可能なモデルの一覧をリモートから取得する(1 時間キャッシュ)。

koelab models           # 全モデル一覧(リモートレジストリから取得)
koelab info seed-vc     # 詳細情報(作者・ライセンス・VRAM・言語など)
koelab search tts       # キーワード検索
koelab list             # インストール済みモデルの一覧
koelab remove seed-vc   # インストール済みモデルの削除

現在レジストリに登録されているモデル:

モデル種別特徴
seed-vc声変換AR+CFM パイプライン、高品質
seed-vc-v1声変換DiT ベース、高速
openvoiceトーンカラー移植MyShell 製、軽量 (0.3 GB)
irodori-tts日本語 TTSFlow Matching、声クローニング対応
xtts-v2多言語 TTS17 言語対応、Coqui 製

インストール

Python 3.11 または 3.12 を推奨(3.11+ 必須)。グローバル環境への直接インストールは避け、仮想環境を使うこと。

# venv を使う場合(Windows)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
# uv を使う場合
uv venv
uv pip install koelab

基本インストール

pip install koelab

ただし pip install koelab 単体では声変換・TTS の依存ライブラリは入らない。使いたいモデルに応じて extras を追加でインストールする必要がある。

pip install "koelab[seed-vc]"    # seed-vc, seed-vc-v1 用
pip install "koelab[openvoice]"  # openvoice 用
pip install "koelab[irodori]"    # irodori-tts 用
pip install "koelab[xtts]"       # xtts-v2 用

API + WebUI も使う場合

pip install "koelab[api]"

[api] は FastAPI + uvicorn のみを追加する。モデルを動かすには上記の extras も別途必要。

FFmpeg

必須ではないが強く推奨。.m4a.aac.ogg 等の形式を扱う場合に必要になる。Windows では autoffmpeg を使うと自動セットアップできる。

Docker

git clone https://github.com/superdoccimo/koelab.git
cd koelab
docker compose build
docker compose run koelab pull seed-vc
docker compose run koelab run seed-vc \
  -i /app/audio/source.wav \
  -r /app/audio/reference.wav \
  -o /app/audio/output.wav

技術的な構造

エンジン抽象化

全モデルは BaseEngine ABC を実装する。

BaseEngine
  ├── SeedVCEngine       (seed-vc, seed-vc-v1)
  ├── OpenVoiceEngine    (openvoice)
  └── BaseTTSEngine
        ├── IrodoriTTSEngine  (irodori-tts)
        └── XTTSv2Engine      (xtts-v2)

新しいエンジンを追加するには BaseEngine を継承して load() / convert() / unload() を実装し、registry/models.json にエントリを追加するだけでいい。

リモートレジストリ

モデルのメタデータは GitHub 上の registry/models.json からフェッチする。ローカルに 1 時間キャッシュされるので、毎回ネットワークアクセスは発生しない。オフラインでも最後のキャッシュから動作する。

doctor コマンド

環境の問題を自己診断する。

koelab doctor              # Python・FFmpeg・Git の有無と TTS 依存関係をチェック
koelab doctor irodori-tts  # irodori-tts に絞って診断
koelab doctor xtts-v2      # xtts-v2 に絞って診断

セットアップでつまずいたときの最初の一手。

よくある質問

GPU がなくても動きますか? 動きます。--device cpu を指定するか、auto のまま使えば CPU にフォールバックします。ただし速度は大幅に落ちます。

Windows で動きますか? 動きます。CI で Windows + Python 3.11/3.12 のスモークテストを回しています。

リアルタイム変換の遅延はどのくらいですか? --block-time 0.1 (100ms ブロック) + GPU 環境で概ね 200〜400ms 程度。CPU では 1 秒以上になることがあります。

新しいモデルを追加してもらうにはどうすればいいですか? registry/models.json にエントリを追加する PR を送ってください。エンジンの実装が必要な場合は issue で相談してください。

リンク

koelab は MIT ライセンスです。xtts-v2 モデルは Coqui CPML ライセンスが適用されます(商用利用に制限あり)。詳細は koelab info xtts-v2 で確認してください。

タイトルとURLをコピーしました