MOSS-VoiceGenerator

Experimentell

Die native SDK-Unterstützung aus dem main-Quellcode bauen. Homebrew und andere vorgefertigte CLI-Versionen enthalten diese Engines möglicherweise noch nicht.

Natives MLX-Stimmdesign aus unverändertem Sprechtext und einer Stimmanweisung. Mono-PCM mit 24 kHz; keine Referenzaufnahme erforderlich.

MOSS-VoiceGenerator behält BF16-Sprachgewichte und den FP32-Synthesecodec. --stream liefert inkrementelles PCM. --language weglassen und Sprachanforderungen in --instruct setzen. Vor Abschluss werden alle sechzehn Codebücher geleert.

SDK aus Quellcode bauen

Implementierung (PR #541): main

git clone --single-branch --branch main https://github.com/soniqo/speech-swift.git
cd speech-swift
make build

Veröffentlichte MLX-Bundles: aufklarer/MOSS-VoiceGenerator-MLX-bf16

Befehlszeile

.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

Ein Textargument, --instruct und genau ein Bundle-Verzeichnis oder eine kompatible Modell-ID sind erforderlich. Referenzaudio, feste Sprecher und Batch-Eingaben werden nicht unterstützt.

Text und Anweisung sind jeweils auf 32.768 UTF-8-Bytes begrenzt. Der vollständig gerenderte Eingabeprompt einschließlich Vorlage darf 4.096 Tokens nicht überschreiten. Eingaben oberhalb einer dieser Grenzen werden abgewiesen.

Optionen für anweisungsgesteuertes 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()

Laufzeitmessungen mit Kurztexten

M5 Pro, 48 GiB, Release. Ein kurzer neutraler Text pro Sprache; Median aus drei warmen Anfragen nach der ersten. Laden und Gewichtsprüfung sind ausgeschlossen; Dateisystem-Caches waren warm. RTF = Laufzeit / Audiodauer: kleiner ist schneller. Physischer Speicher ist der Prozesshöchstwert über das Laden und vier Anfragen in dezimalen GB.

TextAudio (s)Erstes PCM, warm (s)RTFMaximaler physischer Speicher (GB)
Englisch3.440.4700.6108.448
Mandarin4.880.4570.5728.619

Beim englischen Messaudio besteht ein ungeklärter Erkennerunterschied: Parakeet fügt am Ende „and“ hinzu, Qwen3-ASR erkennt den vollständigen Text. Beide Ergebnisse bleiben erhalten.

Validierungsumfang

Die Anweisungsbefolgung ist unbewertet. Kurztextmessungen beschreiben den getesteten Aufbau; die Latenz-Regressionsprüfung bestehender Modelle bleibt ohne eindeutiges Ergebnis.

Natives anweisungsgesteuertes TTS

Quellen