Fish Audio S2 Pro / Drama 3

Diese Soniqo-Seite dokumentiert Fish Audio S2 Pro aus der lokalen speech-swift- / speech-core-Implementierung. Hugging-Face-Bundles sind nach den Integrationshinweisen verlinkt.

Zuerst interne Seite

Landing-Karten und Docs-Menüs führen zuerst hierher; Quellen- und Bundle-Links bleiben auf dieser Seite verfügbar.

Überblick

ModellFish Audio S2 Pro
RolleExperimental multilingual TTS with raw-reference cloning and style markers
BackendMLX fp16
Ausgabe44.1 kHz mono PCM
SprachenMultilingual
LizenzResearch / non-commercial bundle; obtain Fish Audio license for commercial exposure
StatusProgrammatic runtime; CLI integration is still pending
QuelleFish Audio S2 Pro
Swift-ProduktFishAudioTTS
CLI / LaufzeitProgrammatic runtime today; planned speech speak --engine fish-audio

Verwendung

Das folgende Snippet entspricht der aktuellen API oder dem aktuellen Befehl aus speech-swift.

import FishAudioTTS

let model = try await FishAudioTTSModel.fromPretrained()
let pcm = try await model.generate(
    text: "आज मैं बहुत खुश हूँ। [excited]",
    referenceAudioURL: URL(fileURLWithPath: "reference.wav"),
    referenceText: "नमस्ते, यह संदर्भ आवाज है।"
)

Modelllinks

Implementierungsnotizen

Fish Audio Drama 3

Experimentelle native MLX-Unterstützung für Drama 3 steht über FishAudioDrama3Model bereit. Ein MoE-Modell mit 35 Milliarden Parametern, hybrider Aufmerksamkeit, zeitlichem Audiodecoder und Fish DAC erzeugt Mono-Audio mit 44,1 kHz. Der 4-Bit-Checkpoint bestand auf Apple M5 Pro die Audio- und unabhängigen ASR-Tests für Spracherzeugung aus Text, Stimmklonen mit Referenz und CLI-Ausgabe. 8-Bit und BF16 sind noch ungeprüft.

Der Standardmodus balanced gibt an Phasengrenzen ungenutzte MLX-Puffer oberhalb von 512 MiB frei. Zusätzlich gilt die gemeinsame Cache-Grenze während der Modelllebensdauer; niedrigere Aufruferbudgets bleiben erhalten. Beide Maßnahmen begrenzen nicht den gesamten Prozessspeicher. --fish-drama3-memory-mode unrestricted oder memoryOptions: .unrestricted lädt Gewichte vorab und überspringt die Phasenbereinigung, behält aber die Lebensdauergrenze bei.

Bei reiner Textsynthese werden 794.4 MiB Referenzencoder-Gewichte erst später geladen. Die erste Referenzkodierung lädt und behält sie; halten Sie codec.safetensors bis dahin verfügbar. Vorab berechnete Referenzcodes benötigen den Encoder nicht.

Übergeben Sie den vollständigen Text. Stimmklonen erfordert eine Referenzaufnahme und deren exaktes Transkript. Sprecher-Tags 0–15 und Emotionsangaben im Text werden unterstützt. PCM-Streaming ist über generateStreaming, generateStream und --stream verfügbar. Ein Chunk enthält standardmäßig 3 Codec-Frames, etwa 139 ms Audio. Automatische Aufteilung langer Texte und schrittweise Texteingabe werden noch nicht unterstützt. Bei Erreichen des Frame-Limits wird ein Fehler ausgelöst.

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.wav
import 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)
}
OptionStandardwert
--fish-drama3-model-idmlx-community/fish-audio-drama-3-4bit
--fish-drama3-bundle-dir—
--fish-drama3-reference-text—
--fish-drama3-max-frames2048
--fish-drama3-temperature1
--fish-drama3-top-k30
--fish-drama3-top-p0.9
--voice-sample—
--seed0
--streamfalse
--fish-drama3-chunk-frames3
--fish-drama3-memory-modebalanced

Mit Fish Audio erstellt. Die Pakete enthalten die Community License und NOTICE.

4-Bit-Messung

ModusErstes PCM, msWarme Synthese, sAudio, sRTFSpitzen-RSS, GiBPhysischer Spitzenbedarf, GiB
Sprache aus Text / Vollständig—2.3063.4830.66214.45724.220
Stimmklonen mit Referenz / Vollständig—2.6813.2040.83715.06424.789
Sprache aus Text / Streaming275.32.5293.4830.72615.57122.321
Stimmklonen mit Referenz / Streaming730.22.8603.2040.89314.67623.885

Apple M5 Pro, 48 GiB, Release-Build, 2026-10-17. Median aus drei warmen Aufrufen für die vollständige Wellenform. Modellladen und WAV-Dateizugriffe sind ausgeschlossen; beim Klonen wird die Referenz bei jedem Aufruf kodiert. RTF = Synthesezeit / Audiodauer. Unabhängige ASR: 16/16 Clips, keine Wortfehler. Für die Planung des gemeinsamen Speichers ist der physische Bedarf maßgeblich. Erstes PCM bezeichnet den ersten nichtleeren Streaming-Callback; die vollständige Erzeugung hat keine Chunk-Callbacks. Ein Standard-Chunk enthält 139.3 ms Audio. Der hörbare Wiedergabebeginn wurde nicht gemessen.