freya-tts-mlx

Turkish text-to-speech, running natively on Apple Silicon with MLX. Generate 48 kHz mono WAV audio from the original 183M FreyaTTS weights, with no PyTorch at runtime. No retraining or fine-tuning.

Quickstart

Requires macOS on Apple Silicon, Python 3.11+ and uv.

uvx --from https://huggingface.co/erayack/freya-tts-mlx/resolve/main/dist/freya_mlx-0.1.1-py3-none-any.whl \
  freya-mlx "Merhaba, nasılsınız?" out.wav

The first run downloads about 1.1 GB of model assets and verifies their pinned SHA-256 hashes. Subsequent runs reuse the local cache.

For an existing Python environment:

uv pip install https://huggingface.co/erayack/freya-tts-mlx/resolve/main/dist/freya_mlx-0.1.1-py3-none-any.whl
from freya_mlx.tts import FreyaMLX, write_wav

tts = FreyaMLX()  # Load once; reuse for subsequent requests.
s = tts.synthesize("Bugün hava çok güzel.")
write_wav("out.wav", s.wav)

Options

# Save normalized text, clause lengths and timing alongside the WAV.
freya-mlx "Merhaba." out.wav --meta out.json

# Opt-in Turkish decimal, percentage and signed-number readings.
freya-mlx "Ölçüm 7,008 oldu." out.wav --text-profile tr_numbers

# Work offline with a downloaded copy of this model repository.
freya-mlx "Merhaba." out.wav --bundle ./freya-tts-mlx
freya-mlx --check --bundle ./freya-tts-mlx

The default text normalization matches the reference. Optional tr_numbers reads 7,008 as yedi virgül sıfır sıfır sekiz, %37 as yüzde otuz yedi, and -8 as eksi sekiz. Python: tts.synthesize(text, text_profile="tr_numbers"). See the supported numeric forms and boundaries.

Performance

Measured on Apple M4 Pro, 24 GB, with models already loaded:

Measurement Result
Historical 0.1.0 median latency, MLX / Torch CPU (4 threads) 0.582 s / 1.826 s
Historical 0.1.0 median real-time factor, MLX / Torch CPU 0.194 / 0.589 (lower is better)
0.1.1 warm sweep latency improvement over 0.1.0 About 6.22%; all 28 frozen parity cases bit-identical

The historical comparison used 20 texts, 32 float32 Euler steps and the same seed-9 noise. The 0.1.1 result is a separate MLX-only comparison, not a new Torch benchmark. These timings exclude loading and downloads; they are not comparisons against CoreML, MPS or every Mac. Protocols, memory measurements, numerical parity and paired audio samples.

Official 495-case evaluation (runtime 0.1.1)

On all 495 pinned Freya-TR-Eval Turkish texts, band-matched large-v3-turbo ASR WER was 11.34% Torch / 11.28% MLX (444/3917 / 442/3917 edits); 488/495 transcripts agree exactly. 494/495 numerical screens pass: case0080 remains a 55.059 dB waveform-SNR failure against the frozen 60 dB gate. Paired audio, scores and protocol · detailed evaluation report. Semantic WER, UTMOS and human MOS were not measured. This is neither the publisher's 8% replication nor evidence of formal quality equivalence or MLX superiority. The historical tiny-ASR ~65% score used a different 20-text setup, not a before/after quality comparison. Fixed seed 9, 32 float32 Euler steps, fallback disabled on both; Torch CPU (four threads) versus MLX GPU. Runtime and weights are unchanged.

Scope and limitations

  • Inference port with unchanged weights, fixed seed-9 noise and 48 kHz mono output.
  • The reference voiced-check/seed-retry fallback is disabled; full pipeline equivalence is not claimed.
  • No batching or AudioVAE encoding. Empty input, invalid steps and clauses over 296 characters fail clearly rather than silently truncating text.
  • No human listening or naturalness study was performed. Numeric-profile tests validate normalized text, not acoustic quality. Historical machine-ASR results and their caveats are in the technical report.

Details and attribution

Technical report · Evaluation data and audio · Source and tests · Reproduction instructions

Code and FreyaTTS weights: Apache-2.0. VoxCPM2 AudioVAE: Apache-2.0. Vendored mlx-audio decoder code: MIT. See licenses and attribution.

Downloads last month
64
Safetensors
Model size
0.2B params
Tensor type
F32
·
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for erayack/freya-tts-mlx

Finetuned
(5)
this model