VoxCPM2
VoxCPM2 は OpenBMB が公開した、トークナイザ不要・拡散×自己回帰の 20 億パラメータ TTS モデルです。30 言語で 48 kHz スタジオ品質の音声を合成し、ゼロショット合成、単一参照によるボイスクローン、自然言語によるボイスデザイン(例:「a young female voice, warm and gentle」)の 3 つの生成モードを備えます。Apple Silicon では MLX 上で bf16 / int8 / int4 ネイティブに動作 — 8 文テストハーネスでは int8 が Qwen3-ASR ラウンドトリップで WER 0%、RTF ≈ 1.0 を達成しています。
概要
- 48 kHz 出力 — このスタックでスタジオ・サンプルレートをオンデバイスで扱える唯一のエンジン。他の TTS は 24 kHz が上限です。
- ボイスデザイン — 自然言語によるスタイル制御:
--voxcpm2-instruct "young female voice, warm and gentle"。他のエンジンにはこの機能はありません。 - ボイスクローン — 16 kHz 1 クリップから単一参照クローン;参照音声 + 書き起こしの「ultimate cloning」で韻律をより忠実に再現できます。
- 30 言語 — 英語、中国語、インドネシア語、日本語、韓国語ほか。テキストから自動判定します。
- Apache 2.0 — モデル重みは上流 openbmb のライセンスを継承、Swift 移植も同様です。
アーキテクチャ
5 つの構成要素が連携して 48 kHz 波形を生成します:
| コンポーネント | 説明 |
|---|---|
| MiniCPM-4 base LM | 28 層の MiniCPM-4。LongRoPE、GQA(16 Q / 2 KV ヘッド、ヘッド次元 128)、SwiGLU MLP。テキストトークン + 音声潜在で条件付け。 |
| Residual LM | 回転埋め込みを持たない 8 層 MiniCPM-4 派生。生成された音声パッチごとに基本 LM の隠れ状態を精製します。 |
| FSQ + Local DiT estimator | スカラー量子化された隠れ状態が 12 層 Diffusion Transformer(V2)を駆動し、64 次元の音声潜在をパッチ 4 で処理します。CFG-zero-star Euler ソルバ、デフォルト 10 ステップ。 |
| AudioVAE V2 | 因果畳み込みデコーダ。16 kHz 参照音声を読み込み、48 kHz 波形を出力(3× アップサンプリング内蔵)。 |
| Stop ヘッド | LM 隠れ状態に対するステップごとの 2 値分類器。argmax = 1 で minTokens パッチ以降の生成を終了します。 |
バンドル
上流の PyTorch openbmb/VoxCPM2 チェックポイントから変換した 3 つの量子化バリアント。量子化は LM / 残差 LM / DiT 推定器 / 投影ヘッド内の Linear に適用され、AudioVAE ボコーダは音質維持のため fp16/bf16 のまま残します。
| バンドル | 量子化 | サイズ | HuggingFace |
|---|---|---|---|
| bf16 | なし(リファレンス) | ~5.0 GB | aufklarer/VoxCPM2-MLX-bf16 |
| int8 | MLX QuantizedLinear, group size 64 | ~3.0 GB | aufklarer/VoxCPM2-MLX-int8 |
| int4 | MLX QuantizedLinear, group size 64 | ~1.9 GB | aufklarer/VoxCPM2-MLX-int4 |
ラウンドトリップ ASR(Qwen3-ASR 0.6B、8 文ハーネス、M シリーズ Apple Silicon):
| バリアント | WER | RTF |
|---|---|---|
| bf16 | 2.04 % | 1.38 |
| int8 | 0.00 % | 1.02 |
| int4 | 4.08 % | 0.83 |
推奨は int8 — LM パスでは上流 Python パイプラインとビット単位で一致しつつ、bf16 より高速で 40 % 軽量。int4 は WER が許容範囲内に収まる最小バンドルで、カジュアル用途向けです。
クイックスタート
import VoxCPM2TTS
let tts = try await VoxCPM2TTSModel.fromPretrained() // defaults to bf16
let audio = try await tts.generate(text: "Hello from VoxCPM2.", language: "english")
// audio: [Float] at 48 kHz mono
明示的に model ID を渡せば int8 / int4 バンドルを選択できます:
let tts = try await VoxCPM2TTSModel.fromPretrained(
modelId: "aufklarer/VoxCPM2-MLX-int8"
)
ボイスデザイン(指示文ベース)
自然言語のスタイル記述を渡すと、参照音声なしでもその記述に従って合成されます:
let audio = try await tts.generateVoxCPM2(
text: "Welcome to the show.",
instruct: "A young woman, gentle and warm voice."
)
ボイスクローン
16 kHz モノラル参照クリップからの単一参照クローン:
let ref = try AudioFileLoader.load(url: URL(fileURLWithPath: "speaker.wav"),
targetSampleRate: 16000)
let audio = try await tts.generateVoxCPM2(
text: "This is a cloned voice.",
refAudio: ref
)
Ultimate cloning — 参照音声と対応する書き起こしを両方渡すと、LM は語彙的文脈も条件にし、韻律やアクセントをより忠実に保持します:
let audio = try await tts.generateVoxCPM2(
text: "Hello from the cloned voice.",
refAudio: ref,
promptText: "this is what the reference clip actually said",
promptAudio: ref
)
CLI
speech speak "Hello there." \
--engine voxcpm2 \
--voxcpm2-variant int8 \
--output hello.wav
# Voice design
speech speak "Welcome to the show." \
--engine voxcpm2 \
--voxcpm2-instruct "A young woman, gentle and warm voice." \
--output design.wav
# Voice cloning
speech speak "This is a cloned voice." \
--engine voxcpm2 \
--voice-sample speaker.wav \
--output clone.wav
フラグ:--voxcpm2-variant {bf16,int8,int4}、--voxcpm2-instruct、--voxcpm2-ref-audio、--voxcpm2-prompt-audio + --voxcpm2-prompt-text、--voxcpm2-cfg-value、--voxcpm2-timesteps、--voxcpm2-max-tokens、--voxcpm2-min-tokens、再現可能な合成のための --seed。
speech-swift の TTS モジュールから選ぶ
| Kokoro-82M | Qwen3-TTS | CosyVoice3 | VoxCPM2 | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| パラメータ | 82M | 0.6 / 1.7 B | 0.5B | 2B | 1.5B |
| サンプルレート | 24 kHz | 24 kHz | 24 kHz | 48 kHz | 24 kHz |
| バックエンド | CoreML (ANE) | MLX, CoreML | MLX | MLX | MLX |
| 言語数 | 10 | 10 | 9 | 30 | EN + ZH |
| ボイスデザイン | 固定プリセット | — | — | 指示文駆動 | — |
| ボイスクローン | — | ICL リファレンス | ゼロショット参照 | 参照 + ultimate | 音声 + 書き起こし |
| 長尺 | 短〜中尺 | ストリーミング | ストリーミング | パッチストリーミング | 最大 90 分 |
48 kHz 出力(音楽/放送用途)が必要、あるいは参照音声なしの自然言語ボイスデザインが必要なときに最適です。最高品質の英語短尺 TTS をより小さなダウンロードで使いたい場合は CosyVoice3 または Qwen3-TTS が軽量。EN/ZH の長尺ポッドキャストやオーディオブックには VibeVoice 1.5B が専用設計です。
責任ある利用
ボイスクローン機能を含みます。クローンする声についてはあらかじめ同意を得てください。なりすまし、偽情報の生成、詐欺などには利用しないでください。詳細な安全ガイダンスは openbmb/VoxCPM2 を参照してください。