Tłumaczenie automatyczne · Oryginał angielski

VibeVoice

Microsoft VibeVoice to długoformatowy, wielośmówkowy model tekstowy do mowy dla języka angielskiego i chińskiego. W przeciwieństwie do krótkiego wykładu TTS, jest on przeznaczony do generowania dialogu podcast- długości, narracji audiobook i scen multigłośników w jednym przełęczy - do minut 90 z do 4 różnych głosów i spójnej tożsamości w całym. Dwa warianty statku: Realtime-0.5B dla strumieniowania o niskim opóźnieniu oraz 1.5B dla jakości flagowy długoformatowy.

Co to jest?

Architektura

Cztery współpracujące komponenty wytwarzają dźwięk o częstotliwości 7,5 Hz w czasie:

SkładnikOpis
Split Qwen224- warstwa Qwen2.5 dekoder (896 ukryte, GQA 14/2 zamiast Realtime-0.5B). Model jest podzielony: niższe 4 warstwy tworzą tekst LM, górny 20 warstw biegnących jako TTS LM. Okna tekstowe (5 żetony na raz) przepływają przez oba; generowane słowa utajnienia przepływu tylko przez TTS LM.
σ-VAE akustyczny tokenizerStreaming conv stos, który koduje 24 kHz audio do 64- dim utent przy 7,5 Hz (3200 × temporal downsample) i odkoduje utajonych z powrotem do formy falowej. Używany zarówno do tworzenia audio-cache i dekodowania końcowego audio.
Głowica rozpraszającaMałe 4-warstwa głowy DDPM z modulacji adaLN. Próbki każdy język utajony poprzez 20-step DPM- Solver z bezklasycznym poradnikiem (cfg = 1.3 domyślny dla Realtime-0.5B, 1.5 zamiast 1.5B)
Klasyfikator EOSPer- step binarny klasyfikator na ostatnim ukrytym stanie TTS LM. Gdy prawdopodobieństwo sigmoid przekracza 0.5, generacja zatrzymuje się.

Języki

Dla kart modelowych Microsoft: Realtime-0.5B jest tylko angielski (na wcześniejszych statkach demo dziewięć non-EN głosowych sugeruje jako rozpoznawcze; jakość nie jest gwarantowana). 1.5B obsługuje angielski i chiński; inne języki mogą wytwarzać słyszalne, ale niewierne audio i powinny być uważane za eksperymentalne.

Tożsamość głosu - dwie różne ścieżki

Te dwa warianty mają bardzo różne podejścia do kondycjonowania głośników, a każda ścieżka ma ograniczenia warto znać z góry-front.

Realtime-0.5B - prefabrykowane obudowy głosowe

Tożsamość głośnika pochodzi z wstępnie obliczonego .safetensors cache głosowe zawierające konfigurowanie pamięci podręcznej KV i ukryte stany dla konkretnego głośnika. Ładowanie cache jest chwilowe; jeden model instancja może wymieniać głosy tanio między pokoleniami.

Punkt kontrolny Realtime-0.5B jest rozprowadzany tylko w przypadku - Microsoft nie wysyła kodera akustycznego, więc nie można wybić pamięci głosowej z surowego dźwięku przeciwko temu modelowi. Microsoft jest wstępnie zbudowany .pt bufory głosowe (Carter, Davis, Emma, Frank, Grace, Mike, Samuel dla angielskiego, plus exploration de / fr / it / jp / kr / nl / pl / pt voices), spłaszczony .safetensors układ tego ładowacza oczekuje.

1.5B długoformatowa - klonowanie głosu z surowego dźwięku

Punkt kontrolny 1.5B nie wysyłać koder akustyczny, aby mógł sklonować arbitralny głośnik z fali odniesienia + transkrypt w jednym ujęciu. Kodowanie jest wpisywane na każdym wywołaniu syntezy - nie ma oddzielnego pliku audio-cache do zarządzania.

FYI: speech vibevoice-encode-voice jest ogrodzona

Powierzchnia CLI do tworzenia głośników offline-cache przeciwko Realtime-0.5B zawiedzie szybko z wskaźnikiem do 1.5B raw- audio przepływu pracy, ponieważ wagi kodujące nie są obecne w 0.5Punkt kontrolny B. Dopóki Microsoft ich nie wyśle, jest to jedyna ścieżka do klonowania własnego głośnika.

Wzór

PaletaIlościowanieRozmiarHuggingFace
Realtime-0.5BBF16 (źródło)~ 1 GBmicrosoft / VibeVoice-Realtime-0.5B
Realtime-0.5B INT4Qwen2 INT4, tokenizer + dyfuzja FP16~ 350 MBaufklarer / VibeVoice-Realtime-0.5B-MLX-INT4
Realtime-0.5B INT8Qwen2 INT8~ 570 MBaufklarer / VibeVoice-Realtime-0.5B-MLX-INT8
1,5B postać długaBF16 (źródło)~ 3 GBmicrosoft / VibeVoice-1.5B
1.5B INT4 (produkcja)Qwen2 INT4 + podwójne kodery~ 1 GBaufklarer / VibeVoice-1.5B-MLX-INT4

Ilościowanie wykorzystuje Kwant afirmowy grupy MLX (32- grupa). Opisy, normy, acoustic- tokenizer połączeń, a klasyfikator EOS pozostają w ich źródłowym dtype.

Szybki start

import VibeVoiceTTS

let tts = try await VibeVoiceTTSModel.fromPretrained()
try tts.loadVoice(from: "/path/to/voice_cache/en-Mike_man.safetensors")
let pcm = try await tts.generate(text: "Hello world.")
// pcm: [Float] at 24 kHz mono

Forma długa 1.5B (różne API)

1.5B posiada inną architekturę (ujednolicony Qwen2 LM, podwójne kodowanie, próbkowanie symboli LM), więc statek jako oddzielna klasa - VibeVoice15BTTSModel. Referencyjne audio + tekst przejść w jednym wywołaniu:

let tts = try await VibeVoice15BTTSModel.fromPretrained()
let pcm = try await tts.generate(
    text: "Long English script.",
    referenceAudio: refSamples,    // [Float] mono speech, any rate
    referenceTranscript: "",
    sampleRate: 24000
)

Nie jest potrzebna pamięć podręczna - model koduje dźwięk odniesienia poprzez oba acoustic_tokenizer (64- dim) oraz semantic_tokenizer (128- dim, ASR-treated) i sumuje je na pozycji audio. Generacja uruchamia LM token próbkowania rozgałęziony na <speech_diffusion> / <speech_end> / tekst - rozprasza akustyczny utajony tylko wtedy, gdy LM emituje żeton mowy.

ASR- sprawdzone na M2 Max INT4 (RTFx 1.48): do wprowadzenia "Witaj świecie. Jest to jeden punkt pięć miliardów VibeVoice wariant tekstu Microsoft do modelu mowy"., Nemotron zapisało wyjście jako "Witaj świecie, to jest jeden punkt pięć miliardów przez głos wariantu mikrosoft texas modelu mowy" - każda zawartość słowa dopasowane, tylko substytucje akustyczne są VibeVoice → poprzez głos oraz tekst do → texas.

Zamień głosy między pokoleniami

try tts.loadVoice(from: "en-Mike_man.safetensors")
let a = try await tts.generate(text: "First speaker line.")
try tts.loadVoice(from: "en-Emma_woman.safetensors")
let b = try await tts.generate(text: "Second speaker line.")

CLI

Realtime-0.5B z konwertowanym pamięci podręcznej Microsoft voice (angielski):

speech vibevoice "Hello world." \
    --voice-cache voice_cache/en-Mike_man.safetensors \
    --output hello.wav

1.5B długoformatowa z surowym referencyjnym dźwiękiem + transkrypcją (klonowanie dowolnego głośnika, języka angielskiego lub chińskiego):

speech vibevoice "Long paragraph ..." \
    --long-form \
    --reference-audio voice.wav \
    --reference-transcript "what was actually said in voice.wav" \
    --max-tokens 4000 \
    --output episode.wav

Flagi: --steps (kroki DPM- Solver), --cfg (wytyczne), --model / --tokenizer w celu obejścia identyfikatorów HuggingFace, --long-form przełączanie na preset 1.5B, --verbose Za wyczucie czasu.

Wybór pomiędzy modułami speech-swift TTS

Kokoro-82MQwen3-TTSCosyVoice3VibeVoice RealtimeVibeVoice 1.5B
Params82M7B7B500M1,5B
WsteczCoreML (ANE)MLXMLXMLXMLX
Języki810+10+PLPL + ZH
Klonowanie głosuUstawienia stałeOdniesienie do ICLOdniesienie do zerorzutuWyłącznie wcześniej zbudowane obudowy głosoweSurowy zapis audio + transkrypcja
Postać długaKrótkie / średnieStrumieniowanieStrumieniowanieStrumieniowanieDo głośników 90 min / 4
Wybierz VibeVoice kiedy...

... musisz Long-form, multispeaker, lub podcast / audiobook wyjście w języku angielskim lub chińskim, ze spójną tożsamością głosu w ciągu minut audio. TTS, Qwen3-TTS lub CosyVoice3 są lepsze dopasowania. Dla rodzimej iOS krótkie wypowiedzi, Kokoro jest najmniejszą opcją.