Fish Audio S2 Pro / Drama 3

Эта страница Soniqo описывает Fish Audio S2 Pro из локальной реализации speech-swift / speech-core. Ссылки на Hugging Face находятся ниже после заметок по интеграции.

Сначала внутренняя страница

Карточки и меню документации сначала ведут сюда; ссылки на исходную модель и бандлы остаются на этой странице.

Кратко

МодельFish Audio S2 Pro
РольExperimental multilingual TTS with raw-reference cloning and style markers
BackendMLX fp16
Вывод44.1 kHz mono PCM
ЯзыкиMultilingual
ЛицензияResearch / non-commercial bundle; obtain Fish Audio license for commercial exposure
СтатусProgrammatic runtime; CLI integration is still pending
ИсточникFish Audio S2 Pro
Swift-продуктFishAudioTTS
CLI / runtimeProgrammatic runtime today; planned speech speak --engine fish-audio

Использование

Фрагмент ниже соответствует текущему API или команде из speech-swift.

import FishAudioTTS

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

Ссылки модели

Заметки реализации

Fish Audio Drama 3

Экспериментальная нативная поддержка Drama 3 в MLX доступна через FishAudioDrama3Model. Модель MoE с 35 млрд параметров, гибридным вниманием, временным аудиодекодером и кодеком Fish DAC создаёт монофонический звук 44,1 кГц. Версия с 4-битными весами прошла на Apple M5 Pro проверку звука и независимую ASR-проверку для генерации по тексту, клонирования по образцу и вывода CLI. Варианты 8 бит и BF16 ещё не проверены.

Режим balanced по умолчанию очищает неиспользуемые буферы MLX свыше 512 MiB на границах этапов. Также действует общий лимит кэша на время жизни модели с сохранением более низкого бюджета вызывающего кода; ни один из механизмов не ограничивает общую память процесса. --fish-drama3-memory-mode unrestricted или memoryOptions: .unrestricted загружает веса заранее и отключает очистку между этапами, но сохраняет лимит на время жизни модели.

При синтезе только по тексту загрузка 794.4 MiB весов энкодера образца откладывается. Первое кодирование образца загружает и сохраняет их; до этого файл codec.safetensors должен оставаться доступным. Заранее вычисленные коды образца не требуют энкодера.

Передавайте полный текст. Для клонирования нужны образец голоса и его точная расшифровка. Поддерживаются теги говорящих 0–15 и указания эмоций в тексте. Потоковый PCM доступен через generateStreaming, generateStream и --stream. По умолчанию блок содержит 3 кадра кодека, около 139 мс аудио. Автоматическое разбиение длинного текста и потоковый ввод текста пока не поддерживаются. При достижении лимита кадров возникает ошибка.

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)
}
ПараметрПо умолчанию
--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

Создано с Fish Audio. Пакеты сохраняют Community License и NOTICE.

Измерения 4-битной версии

РежимПервый PCM, мсПрогретый синтез, сАудио, сRTFПиковый RSS, GiBПиковая физическая память, GiB
По тексту / Целиком—2.3063.4830.66214.45724.220
Клонирование по образцу / Целиком—2.6813.2040.83715.06424.789
По тексту / Поток275.32.5293.4830.72615.57122.321
Клонирование по образцу / Поток730.22.8603.2040.89314.67623.885

Apple M5 Pro, 48 GiB, сборка release, 2026-10-17. Медиана трёх прогретых вызовов до получения полной звуковой волны. Загрузка модели и чтение/запись WAV исключены; клонирование включает кодирование образца при каждом вызове. RTF = время синтеза / длительность аудио. Независимая ASR: 16/16 записей, без ошибок в словах. Для расчёта общей памяти используйте физический объём. Первый PCM — первый непустой потоковый блок; режим целиком не вызывает обработчик блоков. Стандартный блок содержит 139.3 мс аудио. Момент начала слышимого воспроизведения не измерялся.