Traducere automată · Originalul în engleză
Fish Audio S2 Pro / Drama 3
Această primă parte Soniqo documente pagină Fish Audio S2 Pro de la local speech-swift / speech-core implementare. Pachetele Hugging Face sunt legate mai jos după notele de integrare.
Carduri de aterizare și meniuri docs punct acum aici primul; model sursă și link-uri de pachet rămân disponibile de la această pagină.
La o strălucire
| Model | Fish Audio S2 Pro |
|---|---|
| Rol | Multilingv experimental TTS cu clonare de referință brută și markeri de stil |
| Platformă | MLX fp16 |
| Ieșire | 44,1 kHz mono PCM |
| Limbi | Multilingv |
| Licență | Cercetare / pachet non-comercial; obţineţi Fish Audio licenţă pentru expunere comercială |
| Stare | Timpul de rulare programatic; integrarea CLI este încă în curs de desfășurare |
| Sursă | Fish Audio S2 Pro |
| Swift produs | FishAudioTTS |
| CLI / timpul de funcționare | Programatic runtime today; planned speech speak --engine fish-audio |
Utilizare
Fragmentul de mai jos reflectă curentul speech-swift API sau comanda expusă de repo.
import FishAudioTTS
let model = try await FishAudioTTSModel.fromPretrained()
let pcm = try await model.generate(
text: "आज मैं बहुत खुश हूँ। [excited]",
referenceAudioURL: URL(fileURLWithPath: "reference.wav"),
referenceText: "नमस्ते, यह संदर्भ आवाज है।"
)
Modele de legături
Note de punere în aplicare
- Descărcarea folosește noul manifest explicit de fișiere octe-ponderated, astfel încât progresul reflectă octeți reali transferați pe cioburile multi-GB.
- Printre markerii de control se numără [pauză], [emfază], [razand], [excitat], [supus], [șoaptă], [țipând], [strigând], [strigăt], [surprins] și [trist].
- Rularea generează 10 rânduri de coduri DAC, apoi decodează cărțile de coduri generate sau condiționate de referință prin intermediul FishAudioCodec.
- Testele actuale acoperă încărcarea pachetelor, generarea de coduri, codec code/decode, clonarea hindi și ASR.
Fish Audio Drama 3
Suport experimental nativ MLX pentru Drama 3 este disponibil prin FishAudioDrama3Model. A 35B hibrid-attention MoE coloana vertebrală, turn audio temporal și codec DAC de pește produce 44.1 kHz mono audio. Punctul de control 4-bit a trecut forma de undă și controale independente ASR pentru generarea numai text, clonarea de referință și CLI pe M5 Pro. 8 și BF16 rămân nevalidate.
Implicit balanced mode tamps inactiv MLX tampoane peste 512 MiB la limitele de etapă. Modelul comun-viață cache capac se aplică, de asemenea,, păstrarea bugete mai mici apelant; nici controlul limitează memoria totală proces. --fish-drama3-memory-mode unrestricted sau memoryOptions: .unrestricted sarcini greutăți cu nerăbdare și sări de tăiere etapă, păstrând în același timp capacul de viață.
Generaţia unică de text amână 794.4 MiB de greutăţi de codor de referinţă. Primele sarcini de codare de referinţă şi le păstrează, astfel încât să păstreze codec.safetensors disponibile până atunci. Codurile de referinţă precomputate nu au nevoie de codor.
Furnizați text complet de intrare. Clonarea vocală necesită un clip de referință și transcrierea exactă a acestuia. Tag-uri difuzor 0–15 și emoțiile de linie sunt susținute. PCM streaming este disponibil prin generateStreaming, generateStream şi --stream. Bucata implicita contine rame de codec 3, despre 139 ms de audio. Intrarea automată de text de lungă durată și streamed ZX0. Atingerea limitei de cadru aruncă o eroare.
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)
}| Opțiune | Implicit |
|---|---|
--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 |
Construit cu Fish Audio. Bundles păstrează licenţa comunitară şi NOTACE.
Indicator de referință pe 4 biți
| Mod | Primul PCM, ms | Sinteză caldă, s | Audio, s | RTF | Vârful RSS, GiB | Amprenta fizică maximă, GiB |
|---|---|---|---|---|---|---|
| Numai text / Buffered | — | 2.306 | 3.483 | 0.662 | 14.457 | 24.220 |
| Clonare de referință / Buffered | — | 2.681 | 3.204 | 0.837 | 15.064 | 24.789 |
| Numai text / Streaming | 275.3 | 2.529 | 3.483 | 0.726 | 15.571 | 22.321 |
| Clonarea / Streamingul de referință | 730.2 | 2.860 | 3.204 | 0.893 | 14.676 | 23.885 |
Mere M5 Pro, 48 GiB, eliberează clădirea. 2026-10-17Mediana a trei apeluri calde, masurand generarea completa a formei de undă. WAV fişierul I/O este exclus; clonarea include codificarea de referinţă a fiecărui apel. RTF = timpul de sinteză / durata audio. Independent ASR: 16/16 cleps, zero erori de cuvânt. Utilizați amprenta fizică pentru dimensionare unificat-memorie. Primul PCM este primul apel de streaming non-empty înapoi; rândurile tamponate nu au nici o bucată de apel înapoi. Bucata implicit conține 139.3 Ms de audio. Debutul audio de redare nu a fost măsurat.