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?
- Długoterminowa forma w jednym przejściu - aż do 90 minut audio ze spójnymi głosami w całym wyjściu; bez przekazania nadanego zdania
- Dialog wielomówców - 4 wyróżnić głośniki na raz, każdy uwarunkowany przez własny podkład głosu
- Angielski + Chiński - dane audio są tylko EN / ZH; inne języki nie są obsługiwane (tokenizer je akceptuje, ale wyjście jest niezrozumiałe)
- Wyjście mono 24 kHz - Float32 PCM, drop- in for
AudioCommon.WAVWriterorazStreamingAudioPlayer - Licencja MIT - wagi modelu i nasz port Swift są zarówno MIT; INT4 mogą być oznaczane ilościowo pochodne
Architektura
Cztery współpracujące komponenty wytwarzają dźwięk o częstotliwości 7,5 Hz w czasie:
| Składnik | Opis |
|---|---|
| Split Qwen2 | 24- 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 tokenizer | Streaming 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ąca | Mał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 EOS | Per- 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.
speech vibevoice-encode-voice jest ogrodzonaPowierzchnia 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
| Paleta | Ilościowanie | Rozmiar | HuggingFace |
|---|---|---|---|
| Realtime-0.5B | BF16 (źródło) | ~ 1 GB | microsoft / VibeVoice-Realtime-0.5B |
| Realtime-0.5B INT4 | Qwen2 INT4, tokenizer + dyfuzja FP16 | ~ 350 MB | aufklarer / VibeVoice-Realtime-0.5B-MLX-INT4 |
| Realtime-0.5B INT8 | Qwen2 INT8 | ~ 570 MB | aufklarer / VibeVoice-Realtime-0.5B-MLX-INT8 |
| 1,5B postać długa | BF16 (źródło) | ~ 3 GB | microsoft / VibeVoice-1.5B |
| 1.5B INT4 (produkcja) | Qwen2 INT4 + podwójne kodery | ~ 1 GB | aufklarer / 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-82M | Qwen3-TTS | CosyVoice3 | VibeVoice Realtime | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| Params | 82M | 7B | 7B | 500M | 1,5B |
| Wstecz | CoreML (ANE) | MLX | MLX | MLX | MLX |
| Języki | 8 | 10+ | 10+ | PL | PL + ZH |
| Klonowanie głosu | Ustawienia stałe | Odniesienie do ICL | Odniesienie do zerorzutu | Wyłącznie wcześniej zbudowane obudowy głosowe | Surowy zapis audio + transkrypcja |
| Postać długa | Krótkie / średnie | Strumieniowanie | Strumieniowanie | Strumieniowanie | Do głośników 90 min / 4 |
... 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ą.