MOSS-VoiceGenerator
Compile el SDK nativo desde el código de main. Las versiones precompiladas de CLI, incluido Homebrew, podrían no incluir aún estos motores.
Diseño de voz con MLX nativo a partir de un guion exacto y una instrucción. PCM mono a 24 kHz, sin grabación de referencia.
MOSS-VoiceGenerator conserva pesos de lenguaje BF16 y el códec de síntesis FP32. Use --stream para PCM incremental. Omita --language e indique el idioma en --instruct. La finalización vacía los dieciséis libros de códigos.
Compilación del SDK desde fuentes
Implementación (PR #541): main
git clone --single-branch --branch main https://github.com/soniqo/speech-swift.git
cd speech-swift
make buildPaquetes MLX publicados: aufklarer/MOSS-VoiceGenerator-MLX-bf16
Línea de comandos
.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.wavIndique un texto, --instruct y exactamente un directorio de paquete o un ID de modelo compatible. No admite audio de referencia, voces fijas ni entrada por lotes.
Los campos de texto e instrucción tienen un límite individual de 32.768 bytes UTF-8. El mensaje de entrada completo, con su plantilla, debe caber en 4.096 tokens. Se rechazan las entradas que superen cualquiera de los límites.
Opciones de TTS por instrucciones
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()Mediciones con textos cortos
M5 Pro, 48 GiB, Release. Un texto neutro corto por idioma; medianas de tres solicitudes en caliente después de la primera. Se excluyen carga y verificación de pesos; la caché de archivos estaba caliente. RTF = tiempo de ejecución / duración del audio: menor es más rápido. La memoria física es el máximo del proceso durante la carga y las cuatro solicitudes, en GB decimales.
| Texto | Audio (s) | Primer PCM en caliente (s) | RTF | Memoria física máxima (GB) |
|---|---|---|---|---|
| Inglés | 3.44 | 0.470 | 0.610 | 8.448 |
| Mandarín | 4.88 | 0.457 | 0.572 | 8.619 |
El audio inglés de temporización presenta una discrepancia no resuelta: Parakeet añade “and” al final; Qwen3-ASR coincide con el texto completo. Se conservan ambos resultados.
Alcance de validación
El seguimiento de instrucciones aún no se ha puntuado. Las mediciones con textos cortos describen la configuración probada; la certificación de regresión de latencia sigue siendo inconclusa.