VoxCPM ローカル音声合成(TTS)
⚠️ 実体は削除済み(2026-07-03・本人承認): リポジトリ・venv・CLI
tts.pyは消滅。このskillは再構築手順書+検証済み知見として保持。再構築: OpenBMB/VoxCPMを再clone→uv venv -p 3.11+pip install(Python3.14はtorch不可・3.11必須。モデルopenbmb/VoxCPM2は~/.cache/huggingfaceに生存=再DL不要)。tts.py(text→48kHz WAV・--refで声クローン)は本書仕様で再作成。以下のパス記述は当時のもの。
OpenBMB製・完全ローカル・無料。永続: ~/archive/retired-projects/oss-trial/VoxCPM/(py3.11、MPS、モデルopenbmb/VoxCPM2は~/.cache/huggingface)。
Procedure
cd ~/archive/retired-projects/oss-trial/VoxCPM
# 基本: テキスト→WAV
.venv/bin/python tts.py "読み上げる文" -o out.wav
# 声真似(voice cloning): 参照音声+その書き起こしを渡す
.venv/bin/python tts.py "好きな文" -o out.wav --ref ref.wav --ref-text "参照音声の中身"
# 品質/表現調整
.venv/bin/python tts.py "文" -o out.wav --steps 20 --cfg 2.5
- 出力48kHz WAV。
--steps増=高品質/遅、--cfg=表現の強さ - 動画パイプ: ナレ原稿→
tts.pyでWAV→MoneyPrinterTurbo/HyperFramesの音声トラックに差す - 参照音声は数秒のクリーンなWAVでOK
Pitfalls
- 初回ロードが重い: モデル+denoiser読込で数十秒。常駐させず必要時のみ実行(MCP化しなかった理由)
- Python 3.14でtorch不可: venvは3.11固定。
uv venv --python 3.11 - MPS(Apple Silicon)で動作: device自動検出。CUDA無し環境前提
- 長文は分割: 1回のgenerateは1段落〜数文が安定。長尺は文単位でループ生成→結合
--ref使うなら--ref-text必須: 書き起こし無いと声マネ精度が落ちる- 商用利用・なりすまし注意: 他人の声クローンは同意の範囲で
Verification
cd ~/archive/retired-projects/oss-trial/VoxCPM
.venv/bin/python tts.py "これはテストです。" -o /tmp/voxcpm_check.wav
.venv/bin/python -c "import soundfile as sf;w,sr=sf.read('/tmp/voxcpm_check.wav');print(f'{len(w)/sr:.1f}s @ {sr}Hz')"
# 期待: 数秒のWAV @ 48000Hz が生成される
2026-06-09検証: 日本語26文字→7.4秒WAV @ 48kHz 生成成功(MPS)。