Mac で VoxCPM2 音声クローン

MLX を使って Apple Silicon 上で VoxCPM2 をローカル実行し、録音から声を複製したり、文章で声を設計したりできます。OpenBMB のこのモデルは 30 言語で 48 kHz 音声を生成します。まず例を聴き、参照録音と正確な書き起こしを使って CLI を試してください。

音声サンプル · CLI で声を複製する · VoxCPM2 と Qwen3-TTS の比較

音声クローンのサンプル

これらの英語音声は公開済みの FLEURS 比較から引用しています。参照音声と生成音声の文章は異なります。出力はそれぞれ代表サンプル一つであり、比較指標は複数の音声を集計した値です。

参照音声英語 · 16 kHz

参照音声の書き起こし: One can only wonder what the keyboard will become when something newer comes along.

VoxCPM2 bf16英語 · 48 kHz

生成する文章: While he was working at the hospital Liggins began to investigate premature labor during his spare time.

Qwen3-TTS Base 1.7B bf16 ICL英語 · 24 kHz

生成する文章: While he was working at the hospital Liggins began to investigate premature labor during his spare time.

CLI で声を複製する

参照音声を reference.wav として保存してください。コマンドには録音の正確な書き起こしを指定しています。自分の音声を使う場合は録音と書き起こしの両方を置き換えてください。

speech speak "Hello from the cloned voice." \
    --engine voxcpm2 \
    --voxcpm2-variant bf16 \
    --voice-sample reference.wav \
    --voxcpm2-prompt-audio reference.wav \
    --voxcpm2-prompt-text "One can only wonder what the keyboard will become when something newer comes along." \
    --seed 42 \
    --output clone.wav

概要

アーキテクチャ

5 つの構成要素が連携して 48 kHz 波形を生成します:

コンポーネント説明
MiniCPM-4 base LM28 層の 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 パッチ以降の生成を終了します。

バンドル

現在の CLI は、上流の openbmb/VoxCPM2 チェックポイントから変換した bf16 と int8 バンドルに対応しています。言語モデルと拡散モデルの射影層を量子化し、音声デコーダーは全精度を維持します。

バンドル量子化サイズHuggingFace
bf16なし(リファレンス)~5.0 GBaufklarer/VoxCPM2-MLX-bf16
int8MLX QuantizedLinear, group size 64~3.0 GBaufklarer/VoxCPM2-MLX-int8

ラウンドトリップ ASR(Qwen3-ASR 0.6B、8 文ハーネス、M シリーズ Apple Silicon):

バリアントWERRTF
bf162.04 %1.38
int80.00 %1.02
int4 (廃止済み)4.08 %0.83

CLI の既定値は bf16 です。ダウンロード容量を抑える場合は int8 を選んでください。int4 は廃止され、表には過去の測定値としてのみ残しています。

クイックスタート

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

int8 バンドルを明示的に選択:

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}、--voxcpm2-instruct、--voxcpm2-ref-audio、--voxcpm2-prompt-audio + --voxcpm2-prompt-text、--voxcpm2-cfg-value、--voxcpm2-timesteps、--voxcpm2-max-tokens、--voxcpm2-min-tokens、再現可能な合成のための --seed。

VoxCPM2 と Qwen3-TTS の比較

公開済みの英語測定結果です。モデルごとに FLEURS の参照・対象音声を十組使い、WER と UTMOS は平均、RTF は中央値を示します。WER と RTF は低いほど良く、UTMOS は自然さの予測値で、人による評価ではありません。普遍的な順位を示す結果ではありません。

モデルWER ↓RTF ↓UTMOS ↑
VoxCPM2 bf161.8%1.112.97
Qwen3-TTS Base 1.7B bf16 ICL2.4%1.703.50

五言語の音声クローン比較と測定方法.

speech-swift の TTS モジュールから選ぶ

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
パラメータ82M0.6 / 1.7 B0.5B2B1.5B
サンプルレート24 kHz24 kHz24 kHz48 kHz24 kHz
バックエンドCoreML (ANE)MLX, CoreMLMLXMLXMLX
言語数1010930EN + ZH
ボイスデザイン固定プリセット——指示文駆動—
ボイスクローン—ICL リファレンスゼロショット参照参照 + ultimate音声 + 書き起こし
長尺短〜中尺ストリーミングストリーミングパッチストリーミング最大 90 分
VoxCPM2 を選ぶべきとき

48 kHz 出力(音楽/放送用途)が必要、あるいは参照音声なしの自然言語ボイスデザインが必要なときに最適です。最高品質の英語短尺 TTS をより小さなダウンロードで使いたい場合は CosyVoice3 または Qwen3-TTS が軽量。EN/ZH の長尺ポッドキャストやオーディオブックには VibeVoice 1.5B が専用設計です。

責任ある利用

ボイスクローン機能を含みます。クローンする声についてはあらかじめ同意を得てください。なりすまし、偽情報の生成、詐欺などには利用しないでください。詳細な安全ガイダンスは openbmb/VoxCPM2 を参照してください。