Tłumaczenie automatyczne · Oryginał angielski
Fish Audio S2 Pro / Drama 3
Ta pierwsza strona Soniqo dokumentuje Fish Audio S2 Pro z lokalnej implementacji speech-swift / speech-core. Zestawy Hugging Face są połączone poniżej po notach integracyjnych.
Karty do lądowania i menu doków wskazują najpierw tutaj; model źródłowy i linki do pakietów pozostają dostępne na tej stronie.
At a Glance
| Wzór | Fish Audio S2 Pro |
|---|---|
| Rola | Eksperymentalne wielojęzyczne TTS z klonowaniem raw- reference i markery stylu |
| Wstecz | MLX fp16 |
| Wyjście | 44,1 kHz mono PCM |
| Języki | Wielojęzyczny |
| Licencja | Badania / niekomercyjny pakiet; uzyskać licencję Fish Audio dla ekspozycji handlowej |
| Status | Programmatic runtime; Integracja CLI jest nadal w toku |
| Źródło | Fish Audio S2 Pro |
| Produkt Swift | FishAudioTTS |
| CLI / runtime | Program runtime dzisiaj; planowane mowy mówić --engine ryb-audio |
Stosowanie
Poniższy fragment jest odzwierciedleniem bieżącego speech-swift API lub polecenia zdemaskowanego przez repo.
import FishAudioTTS
let model = try await FishAudioTTSModel.fromPretrained()
let pcm = try await model.generate(
text: "आज मैं बहुत खुश हूँ। [excited]",
referenceAudioURL: URL(fileURLWithPath: "reference.wav"),
referenceText: "नमस्ते, यह संदर्भ आवाज है।"
)
Wzory linków
Uwagi do wdrożenia
- Pobieranie wykorzystuje nowszy jawny manifest pliku ważonego, tak więc postęp odzwierciedla prawdziwe przetransferowane bajty na wieloGB fragmentów.
- Znaczniki kontrolne to: [pauza], [nacisk], [śmiech], [podekscytowany], [wściekły], [szept], [krzyk], [zaskoczony] i [smutny].
- Runtime generuje 10 wierszy kodebook DAC, następnie dekoduje generowane lub zależne od referencji kodeki za pośrednictwem FishAudioCodec.
- Bieżące testy obejmują ładowanie wiązki, generowanie kodeków, kodowanie kodeków / dekodowanie, klonowanie Hindi oraz bramki z rejsu ASR.
Fish Audio Drama 3
Eksperymentalne natywne MLX wsparcie dla Drama 3 jest dostępny poprzez FishAudioDrama3ModelA 35B Hybrid- attention MoE kręgosłup, temporalna wieża audio i kodek Fish DAC produkcji 44.1 kHz mono audio. 4-bit checkpoint przeszedł fala i niezależny ASR sprawdzanie tylko dla produkcji, klonowania referencyjnego i CLI na Apple M5 Pro. 8-bit i BF16 pozostają niezatwierdzone.
Domyślny balanced mode tryms bezczynny zderzaki MLX powyżej 512 MiB na granicy sceny. Współdzielony czapka cache-lifetime stosuje się również, zachowując niższe budżety dzwoniących; ani kontroli ogranicza całkowitą pamięć procesową. --fish-drama3-memory-mode unrestricted lub memoryOptions: .unrestricted ładunki z niecierpliwością i pomija przycinanie na etapie, zachowując jednocześnie wieczko na całe życie.
Tylko generacja Text- odracza 794.4 MiB referencyjnych ciężarów kodujących. Pierwsze odniesienia kodowania obciążeń i zachowuje je, więc zachować codec.safetensors dostępne do tego czasu. Przeliczone kody referencyjne nie potrzebują kodera.
Sklonowanie głosu wymaga klipu odniesienia i jego dokładnego zapisu. Głośnik tagi 0- 15 i emocje inline są obsługiwane. generateStreaming, generateStream oraz --streamDomyślny kawałek zawiera ramy kodekowe 3, o 139 ms audio. Automatyczne długotrwale tekstowe chunking i strumieniowane wejście tekstu pozostają niedostępne. Osiągnięcie limitu ramki powoduje błąd.
speech speak "Hello from Drama 3." --engine fish-drama3 --fish-drama3-bundle-dir /path/to/bundle -o hello.wav
speech speak "Hello from Drama 3." --engine fish-drama3 --stream --fish-drama3-chunk-frames 3 -o streamed.wav
speech speak "Hello in the reference voice." --engine fish-drama3 --voice-sample reference.wav --fish-drama3-reference-text "The exact reference transcript." --seed 42 -o cloned.wavimport FishAudioTTS
let model = try await FishAudioDrama3Model.fromBundle(bundleURL, memoryOptions: .balanced)
let pcm = try await model.generate(text: "Hello from Drama 3.", options: .init(seed: 42))
try await model.generateStreaming(text: "Hello from Drama 3.", options: .init(seed: 42, streamingChunkFrames: 3)) { chunk in
print(chunk.frameIndex, chunk.samples.count, chunk.isFinal)
}| Opcja | Domyślne |
|---|---|
--fish-drama3-model-id | mlx-community/fish-audio-drama-3-4bit |
--fish-drama3-bundle-dir | — |
--fish-drama3-reference-text | — |
--fish-drama3-max-frames | 2048 |
--fish-drama3-temperature | 1 |
--fish-drama3-top-k | 30 |
--fish-drama3-top-p | 0.9 |
--voice-sample | — |
--seed | 0 |
--stream | false |
--fish-drama3-chunk-frames | 3 |
--fish-drama3-memory-mode | balanced |
Zbudowany z Fish Audio. Bundles zachowuje licencję wspólnotową i NOTICE.
Wskaźnik 4- bitowy
| Tryb | Pierwsza PCM, ms | Ciepła synteza, s | Audio, s | RTF | Szczyt RSS, GiB | Maksymalny ślad fizyczny, GiB |
|---|---|---|---|---|---|---|
| Tylko tekst / buforowane | — | 2.306 | 3.483 | 0.662 | 14.457 | 24.220 |
| Klonowanie referencyjne / buforowane | — | 2.681 | 3.204 | 0.837 | 15.064 | 24.789 |
| Text- only / Streaming | 275.3 | 2.529 | 3.483 | 0.726 | 15.571 | 22.321 |
| Klonowanie referencyjne / strumieniowanie | 730.2 | 2.860 | 3.204 | 0.893 | 14.676 | 23.885 |
Jabłko M5 Pro, 48 GiB, wypuść go. 2026-10-17. Mediana trzech ciepłych połączeń, pomiar kompletnej generacji fali. WAV Plik I / O jest wykluczony; klonowanie zawiera kodowanie odniesienia przy każdym wywołaniu. RTF = czas syntezy / czas trwania dźwięku. Niezależny ASR: 16/16 klipy, zero błędów wyrazów. Użyj fizycznego odcisku stopy dla unified- memory size. Pierwsza PCM jest pierwszym niepustym streaming callback; buforowane wiersze nie mają odsyłania fragmentów. Domyślny fragment zawiera 139.3 ms of audio. Nie mierzono dźwiękowego początku odtwarzania.