MOSS-VoiceGenerator

Экспериментальная версия

Пакеты MLX опубликованы. SDK требует указанную ниже ветку проверки (черновик PR #541).

Нативный MLX создаёт голос по точному тексту и голосовой инструкции. Выход — моно PCM 24 кГц; эталонная запись не нужна.

MOSS-VoiceGenerator сохраняет языковые веса BF16 и кодек синтеза FP32. Для постепенной выдачи PCM используйте --stream. Не задавайте --language: укажите язык в --instruct. Завершение полностью выводит все шестнадцать кодовых книг.

Ветка проверки SDK

Ветка проверки SDK (PR #541): feat/instructtts-candidates-20261029

git clone --single-branch --branch feat/instructtts-candidates-20261029 https://github.com/soniqo/speech-swift.git
cd speech-swift
make build

Опубликованные пакеты MLX: aufklarer/MOSS-VoiceGenerator-MLX-bf16

Командная строка

.build/release/speech speak "The little boat crossed the quiet lake before sunset." \
  --engine moss-voicegenerator \
  --moss-voicegenerator-model-id aufklarer/MOSS-VoiceGenerator-MLX-bf16 \
  --instruct "A warm adult female voice, speaking English slowly." \
  --stream --seed 42 --output moss.wav

Укажите один текст, --instruct и ровно один каталог пакета или ID совместимой модели. Эталонное аудио, фиксированные дикторы и пакетный ввод не поддерживаются.

Параметры TTS с инструкциями

Swift API

import MossVoiceGeneratorTTS

let model = try await MossVoiceGeneratorModel.fromPretrained(
    modelId: "aufklarer/MOSS-VoiceGenerator-MLX-bf16")
let output = try await model.generate(
    text: "The little boat crossed the quiet lake before sunset.",
    instruction: "A warm adult female voice, speaking English slowly.",
    options: .init(maxFrames: 150, seed: 42))
let pcm = output.samples
model.unload()

Измерения на коротких текстах

M5 Pro, 48 GiB, Release. Один короткий нейтральный текст на язык; медиана трёх прогретых запросов после первого. Загрузка и проверка весов исключены; файловый кеш прогрет. RTF = время работы / длительность аудио: меньше означает быстрее. Физическая память — максимум процесса за загрузку и четыре запроса, в десятичных GB.

ТекстАудио (s)Первый PCM, прогретый запуск (s)RTFПиковая физическая память (GB)
Английский3.440.4700.6108.448
Мандаринский4.880.4570.5728.619

Для английского аудио остаётся расхождение распознавателей: Parakeet добавляет в конце «and», а Qwen3-ASR точно распознаёт весь текст. Оба результата сохранены.

Область проверки

Качество выполнения инструкций ещё не оценивалось. Короткие тексты описывают лишь проверенную конфигурацию; проверка регрессии задержки остаётся без однозначного результата.

Нативный TTS с инструкциями

Источники