ブログ·
音声クローン
May 17, 2026

48 kHz で声をクローンする
VoxCPM2 で。

新しい TTS モデルが Soniqo に加わりました。ノート PC 上で動作し、スタジオ品質の 48 kHz 音声を出力し、たった一つの短いクリップから声をクローンします。本稿では、それで何が作れるか、声をクローンする三つの方法、そしてモデルが内部でどう働くかを親しみやすく見ていきます。

何が作れるか

クローンがローカルで動くと変わる四つのこと。

デバイス上でクローンを動かすと四つの性質が一度に解放されます——プライバシー、オフライン利用、呼び出しごとのコストなし、そして声の完全な所有権。どれも、他のやり方では作りにくい製品の一群を開きます。

個人のオーディオブック朗読者

親が読む 30 秒を録音します。オーディオブックアプリはその声で任意の章を朗読します——同じ温かさ、同じアクセントで、セッションごとにローカル生成。

多言語のクリエイターコンテンツ

YouTuber やポッドキャスターは 30 言語で一貫した声を保ちます。英語で一度録れば、同じ回を日本語・スペイン語・ヒンディー語で、声優陣なしに出せます。

アクセシビリティと声の保存

声を失いかけている人は短いクリップに声を保存し、汎用 TTS エンジンではなく自分らしく聞こえる支援技術で話し続けられます。

オンデマンドの製品ボイス

欲しい声を記述するだけ——"若い女性、優しく温かい声"——でモデルは参照録音なしにそれを設計します。ゲームの NPC、キオスクの案内、ブランド音声の A/B テストに便利。

オンデバイス vs ホスト

VoxCPM2 と ElevenLabs の比較。

ElevenLabs は分かりやすいクラウド API の代替です。トレードオフは何がどこで動くか——そしてその後、声は誰のものか。

プライバシー保証、オフライン動作、呼び出しごとのゼロコストが必要な製品には、オンデバイスのクローンが唯一の選択肢です——ElevenLabs の呼び出しは毎回、音声を彼らのサーバーへアップロードします。

VoxCPM2(Soniqo)ElevenLabs
どこで動くかユーザーのデバイス上ホスト型 API
音声がデバイスを出るかいいえはい(ElevenLabs へアップロード)
オフライン利用はいいいえ(インターネットが必要)
呼び出しごとのコストなし文字単位の課金
モデルライセンスApache 2.0、オープンな重みプロプライエタリ、SaaS のみ
最大出力サンプルレート48 kHz ネイティブ48 kHz(Pro 層以上)
言語3029(Multilingual v2)· 70+(Eleven v3)
必要な参照クリップ5–30 秒1 分(Instant)· 30 分(Professional)
テキストからの声の設計はいはい

どちらのエンジンも 48 kHz に達し、どちらも日常のクローン向けに似た言語幅をサポートし、どちらもテキスト記述からの声の設計を提供します。本当の違いは、音声がそもそもデバイスを出るかどうかです。

三つのクローンモード

一つのモデル、三つの入り口。

モデルはどの呼び出しでも同じです。変わるのは渡す引数——それが、記述から声を設計するのか、録音済みの声を写すのか、アクセントを保つのかを決めます。

声の設計
参照録音がないとき。

声を自然言語で記述します。モデルは合う声を選び、呼び出し間で一貫性を保ちます。

let audio = try await tts.generateVoxCPM2(
    text: "Welcome to the show.",
    instruct: "A young woman, gentle and warm voice."
)
参照クローン
対象話者の短いクリップがあるとき。

5〜30 秒のクリーンな音声を渡します。モデルは音色とリズムを写し、その声で新しいテキストを合成します。

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
)
アルティメットクローン
話者に独特のアクセントがあり、それを保ちたいとき。

クリップと、その書き起こしの両方を渡します。モデルは音響特徴を音素と揃えられます——アクセントと母音の選択が引き継がれます。

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
)
Three cloning modes, same modelEach mode arranges different pieces in the input sequence before the model. Voice design adds a written description, reference cloning adds an audio prefix, and ultimate cloning adds a paired audio-and-transcript example.Voice design(description)text to sayReference cloningreference audiotext to sayUltimate cloningreference audiotranscripttext to sayprompt audioaudio framestext conditiontext to synthesise

同じ入力スロットに、違う部品を詰めます。モデルはフラグを見ることはありません——シーケンスを読みます。

内部の仕組み

VoxCPM2 はどう音声を作るか。

協調する四つのモジュール。モデルを使うのにこれを知る必要はありませんが、48 kHz がどこから来るのか気になるなら——ここにあります。

VoxCPM2 architectureText and optional voice prompts feed an autoregressive language model and a residual refiner. A local diffusion transformer produces audio latents which the AudioVAE V2 decodes to a 48 kHz waveform.TextVoice prompt audioVoice instructionPrompt transcriptLocEncaudio + text fused into one streamTSLM · MiniCPM-4 backbone28-layer autoregressive LMdecides what audio patch comes nextRALMrefines each patch for prosodic detailLocDiT · diffusion estimatorpaints the audio latent in each slotAudioVAE V2 → 48 kHz waveform

パイプラインはローカルエンコーダ(LocEnc)から始まり、テキストトークンと(任意の)参照音声を一つのベクトル列に融合します。その列が TSLM——次にどの音声「パッチ」が来るかを、テキスト LM が次のトークンを選ぶのと同じように決める、28 層の MiniCPM-4 言語モデル——に入ります。RALMへの 2 度目のパスが各パッチを精緻化します。

ここまでは全部トランスフォーマーです。面白いひねりは LocDiTです。離散音声トークンの固定語彙から選ぶのではなく、小さな拡散プロセスを走らせて各スロットの音声潜在を「描き」ます。離散コーデックがない=量子化のボトルネックがない——それが最終段の AudioVAE V2 をそのまま 48 kHz へデコードさせます。このスタックの他のオンデバイスエンジンはどれも 24 kHz で頭打ちです。

この分担は注目に値します。自己回帰 LM は次に来るべきもの(内容・リズム・長さ)を決めるのが得意で、拡散ヘッドは音響の細部(位相・スペクトル)を描くのが得意です。VoxCPM2 は各々に得意なことをさせます。だからこのモデルはわずか 2B パラメータで踏みとどまります——知覚品質を稼ぐのはアーキテクチャであって、サイズではありません。

論文

元の研究を読む。

VoxCPM: Tokenizer-Free TTS for Context-Aware Speech Generation and True-to-Life Voice Cloning
OpenBMB · arXiv:2509.24650 · Sept 2025
arXiv で見る
バンドル

三つのサイズ。ディスク予算で選ぶ。

三つのバンドルは同じアーキテクチャで動きます。違うのは言語モデルをどれだけ積極的に量子化するかだけです。int8 バンドルが推奨のデフォルトです——8 文の往復ベンチマークで上流の Python パイプラインに並びつつ、bf16 より速く 40% 小さくなります。

バンドルサイズ向き
bf16~5.0 GB参照 / デバッグ。
int8
既定
~3.0 GB日常のクローン、オーディオブック、ポッドキャスト。
int4~1.9 GBディスク制約のあるデプロイ。
試す

CLI から。

# Voice design — no reference clip
speech speak "Welcome to the show." \
    --engine voxcpm2 \
    --voxcpm2-instruct "A young woman, gentle and warm voice." \
    --output design.wav

# Reference cloning — 5–30 s clean clip
speech speak "This is a cloned voice." \
    --engine voxcpm2 \
    --voxcpm2-variant int8 \
    --voice-sample speaker.wav \
    --output clone.wav
次はどこへ

読み続ける。