MOSS-VoiceGenerator

Expérimental

Les bundles MLX sont publics. Le SDK exige la branche de revue ci-dessous (PR #541 en brouillon).

Création de voix en MLX natif à partir du texte exact et d’une instruction vocale. PCM mono à 24 kHz, sans enregistrement de référence.

MOSS-VoiceGenerator conserve les poids de langage BF16 et le codec de synthèse FP32. Utilisez --stream pour le PCM progressif. Omettez --language et précisez la langue dans --instruct. La fin vide les seize livres de codes.

Branche de revue du SDK

Branche de revue du 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

Bundles MLX publiés: aufklarer/MOSS-VoiceGenerator-MLX-bf16

Ligne de commande

.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

Fournissez un texte, --instruct et exactement un répertoire de paquet ou un identifiant compatible. Audio de référence, voix fixes et entrées par lots ne sont pas pris en charge.

Options TTS par instructions

API Swift

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()

Mesures sur textes courts

M5 Pro, 48 GiB, Release. Un court texte neutre par langue ; médianes de trois requêtes à chaud après la première. Chargement et vérification des poids exclus ; caches de fichiers chauds. RTF = temps écoulé / durée audio : plus bas signifie plus rapide. La mémoire physique est le maximum du processus pendant le chargement et les quatre requêtes, en Go décimaux.

TexteAudio (s)Premier PCM à chaud (s)RTFPic de mémoire physique (GB)
Anglais3.440.4700.6108.448
Mandarin4.880.4570.5728.619

L’audio anglais de mesure présente un désaccord non résolu : Parakeet ajoute « and » à la fin, Qwen3-ASR retrouve le texte entier. Les deux résultats sont conservés.

Périmètre de validation

Le suivi des instructions n’a pas encore été noté. Les mesures sur textes courts décrivent la configuration testée ; la certification de régression de latence reste non concluante.

TTS natif par instructions

Sources