Fish Audio S2 Pro / Drama 3

Esta página da Soniqo documenta Fish Audio S2 Pro conforme a implementação local em speech-swift / speech-core. Os links do Hugging Face ficam abaixo das notas de integração.

Página interna primeiro

Cards e menus apontam primeiro para cá; os links do modelo fonte e dos bundles continuam disponíveis nesta página.

Visão geral

ModeloFish Audio S2 Pro
PapelExperimental multilingual TTS with raw-reference cloning and style markers
BackendMLX fp16
Saída44.1 kHz mono PCM
IdiomasMultilingual
LicençaResearch / non-commercial bundle; obtain Fish Audio license for commercial exposure
StatusProgrammatic runtime; CLI integration is still pending
FonteFish Audio S2 Pro
Produto SwiftFishAudioTTS
CLI / runtimeProgrammatic runtime today; planned speech speak --engine fish-audio

Uso

O trecho abaixo reflete a API ou comando atual exposto por speech-swift.

import FishAudioTTS

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

Links do modelo

Notas de implementação

Fish Audio Drama 3

O suporte nativo experimental ao Drama 3 em MLX está disponível por FishAudioDrama3Model. Uma rede MoE de 35 bilhões de parâmetros com atenção híbrida, um decodificador temporal e o codec Fish DAC produzem áudio mono de 44,1 kHz. O modelo de 4 bits passou nos testes de áudio e ASR independente para geração a partir de texto, clonagem com referência e saída CLI no Apple M5 Pro. As variantes de 8 bits e BF16 ainda não foram validadas.

O modo predefinido balanced liberta buffers MLX inativos acima de 512 MiB entre etapas. O limite partilhado também se aplica durante a vida do modelo, preservando orçamentos inferiores do chamador; nenhum destes controlos limita a memória total do processo. --fish-drama3-memory-mode unrestricted ou memoryOptions: .unrestricted carrega os pesos antecipadamente e omite a limpeza entre etapas, mantendo o limite de vida útil.

A geração somente de texto adia o carregamento de 794.4 MiB de pesos do codificador de referência. A primeira codificação os carrega e mantém; deixe codec.safetensors disponível até lá. Códigos de referência pré-calculados não precisam do codificador.

Forneça o texto completo. A clonagem exige uma gravação de referência e sua transcrição exata. São aceitas etiquetas de falante 0–15 e emoções no texto. O streaming PCM está disponível por generateStreaming, generateStream e --stream. O bloco padrão contém 3 quadros do codec, cerca de 139 ms de áudio. A divisão automática de textos longos e a entrada progressiva de texto continuam indisponíveis. Atingir o limite de quadros gera um erro.

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)
}
OpçãoPadrão
--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

Criado com Fish Audio. Os pacotes preservam a Community License e NOTICE.

Medição de 4 bits

ModoPrimeiro PCM, msSíntese aquecida, sÁudio, sRTFRSS máximo, GiBMemória física máxima, GiB
Somente texto / Completo—2.3063.4830.66214.45724.220
Clonagem com referência / Completo—2.6813.2040.83715.06424.789
Somente texto / Streaming275.32.5293.4830.72615.57122.321
Clonagem com referência / Streaming730.22.8603.2040.89314.67623.885

Apple M5 Pro, 48 GiB, compilação release, 2026-10-17. Mediana de três chamadas aquecidas para gerar a forma de onda completa. A carga do modelo e a E/S de arquivos WAV são excluídas; a clonagem inclui a codificação da referência em cada chamada. RTF = tempo de síntese / duração do áudio. ASR independente: 16/16 clipes, zero erros de palavras. Use a memória física para dimensionar a memória unificada. O primeiro PCM é o primeiro bloco não vazio; o modo completo não tem callbacks por bloco. O bloco padrão contém 139.3 ms de áudio. O início da reprodução audível não foi medido.