Stänga en röst på 48 kHz
med VoxCPM2.
En ny TTS modell landade bara i Soniqo. Den körs på din bärbara dator, utgångar studio-kvalitet 48 kHz ljud, och klonar en röst från ett enda kort klipp. Detta inlägg går igenom vad du kan bygga med det, de tre sätten det låter dig klona en röst och en vänlig titt på hur modellen fungerar inuti.
Fyra saker som förändras när kloning körs lokalt.
Kör kloning på enheten låser upp fyra egenskaper samtidigt - integritet, offline användning, ingen per-call kostnad och full röst ägande. Var och en av dessa öppnar en klass av produkt som är besvärlig att bygga något annat sätt.
Rekord 30 sekunder av en förälderläsning. Ljudboksappen berättar sedan alla kapitel i sin röst - samma värme, samma accent, lokalt genererade varje session.
YouTubers och podcasters håller en konsekvent röst på 30 språk. Spela in en gång på engelska, skicka samma episod på japanska, spanska och hindi utan en sång.
Människor som står inför röstförlust kan banka sin röst i ett kort klipp och fortsätta att tala genom hjälpteknik som låter som dem - inte som en generisk TTS motor.
Beskriv rösten du vill ha - "ung kvinna, mild och varm" - och modellen designar den utan en referensinspelning. Användbar för spel NPCs, kiosk-anvisningar eller A / B-testning av varumärkesröster.
Hur VoxCPM2 jämför med ElevenLabs.
ElevenLabs är det självklara moln-API-alternativet. Avvägningen är det som körs där - och vem äger rösten efteråt.
För produkter som behöver integritetsgarantier, offline-operation eller noll per samtalskostnader är on-device-kloning det enda alternativet - varje ElevenLabs ringer upp ljud till sina servrar.
| VoxCPM2 (Soniqo) | ElevenLabs | |
|---|---|---|
| Där det går | På användarens enhet | Hosted API |
| Audio lämnar enheten | Inget nej | Ja (uppladdad till ElevenLabs) |
| Offline användning | Ja ja ja ja ja | Nej (kräver internet) |
| Per-call kostar | Ingen | Per-karaktär fakturering |
| Modelllicens | Apache 2.0, öppna vikter | Proprietär, SaaS endast |
| Max output sample rate | 48 kHz infödd | 48 kHz (Pro Tier och högre) |
| Språk | 30 | 29 (flerspråkig v2) · 70+ (Eleven v3) |
| Referensklipp krävs | 5–30 s | 1 min (Instant) · 30 min (professionell) |
| Voice design från text | Ja ja ja ja ja | Ja ja ja ja ja |
Båda motorerna når 48 kHz; båda stöder en liknande språkspridning för vardaglig kloning; båda exponerar röstdesign från en textbeskrivning. Den verkliga skillnaden är om ljudet någonsin lämnar enheten.
En modell, tre sätt in.
Modellen är densamma i varje samtal. Vilka ändringar är vilka argument du passerar - som bestämmer om du designar en röst från en beskrivning, kopierar en inspelad eller bevarar en accent.
Beskriv rösten i naturligt språk. Modellen väljer en matchande röst och förblir konsekvent över samtal.
let audio = try await tts.generateVoxCPM2(
text: "Welcome to the show.",
instruct: "A young woman, gentle and warm voice."
)Passera alla 5-30 s rent tal. Modellen kopierar timbre och rytm och syntetiserar ny text i den rösten.
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
)Passa klippet OCH dess utskrift. Modellen kan nu rada upp akustiska funktioner med telefoner - accent och vokal val genomgår.
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
)Samma ingångsslot, fylld med olika bitar. Modellen ser aldrig en flagga - den läser sekvensen.
Hur VoxCPM2 producerar ljud.
Fyra samarbetsmoduler. Du behöver inte veta något av detta för att använda modellen, men om du är nyfiken på var 48 kHz kommer ifrån - här är det.
Rörledningen börjar med en lokal kodare (LocEnc) som smälter texttokens och (valfritt) refererar ljud till en ström av vektorer. Den strömmen matar flödet TSLM - en 28-lager MiniCPM-4 språkmodell som bestämmer vad ljud "patch" ska komma nästa, på samma sätt som en text LM plockar nästa token. En andra passerar genom Ralm raffinerar varje patch.
Fram till denna punkt är allt en transformator. Den intressanta vridningen är LocDiTIstället för att välja från ett fast ordförråd av diskreta ljudtokens, kör den en liten diffusion process för att måla ljud latenta i varje slot. Ingen diskret codec betyder ingen kvantisering flaskhals - vilket är vad som låter den slutliga scenen. AudioVAE V2, avkoda direkt till 48 kHz. Alla andra på-enhet motor i denna stack toppar ut på 24 KHz.
Splittningen är värt att notera: autoregressiv LM är bra på att bestämma vad som ska komma nästa (innehåll, rytm, längd); diffusionshuvudet är bra att måla akustisk detalj (fas, spektrum). VoxCPM2 låter varje göra vad det är bra på. Det är därför modellen håller sin egen på endast 2B-parametrar - arkitekturen tjänar perceptuell kvalitet, inte storleken.
Läs den ursprungliga forskningen.
Tre storlekar. Välj på din diskbudget.
Alla tre buntar kör samma arkitektur; de skiljer sig bara i hur aggressivt språkmodellen kvantiseras. int8 bunt är den rekommenderade standarden - den matchar uppströms Python pipeline på 8-sentence rundtur riktmärke samtidigt som den är snabbare och 40% mindre än bf16.
| Bundle | Storlek | Bäst för |
|---|---|---|
| bf16 | ~5.0 GB | Referens / felsökning. |
| int8 Standard | ~3.0 GB | Varje dag kloning, ljudböcker, podcasts. |
| int4 | ~1.9 GB | Diskbegränsade utplaceringar. |
Från 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.wavFortsätt läsa.
Varje CLI-flagga, varje generationsläge, ansvarsfulla anteckningar.
Cross-engine jämförelse: VoxCPM2, CosyVoice3, Qwen3-TTS ICL.
Installera Soniqo på Apple Silicon och kör din första syntes.
Fler inlägg på on-device tal som de landar.
