Skip to main content

MLX-native speech library for Apple Silicon.

Project description

mlx-speech

License: MIT Python 3.13+ Platform

[!NOTE] This project wouldn't exist without the inspiration and generous support of the incredible community at linux.do.

Local speech synthesis, editing, and transcription on Apple Silicon, running pure MLX. No cloud, no PyTorch.

Alias Type Description
fish-s2-pro TTS Fish S2 Pro — dual-AR TTS, voice cloning, emotion tags
vibevoice TTS VibeVoice Large — hybrid LLM+diffusion TTS, voice cloning
longcat TTS LongCat AudioDiT — flow-matching diffusion TTS
moss-local TTS OpenMOSS TTS Local — local-attention multi-VQ TTS
moss-ttsd TTS OpenMOSS TTS Delay — delay-pattern dialogue TTS
cohere-asr ASR Cohere Transcribe — multilingual ASR

Requirements

  • Apple Silicon Mac (M1 or later)
  • Python 3.13+

Installation

pip install mlx-speech

Quick Start

Models download automatically from HuggingFace on first use.

Python API:

import mlx_speech

# Text-to-speech
model = mlx_speech.tts.load("fish-s2-pro")
result = model.generate("Hello from mlx-speech!")
# result.waveform: mx.array, result.sample_rate: int

# Voice cloning with emotion tags
result = model.generate(
    "[excited] This is amazing!",
    reference_audio="reference.wav",
    reference_text="Transcript of the reference audio.",
)

# Speech-to-text
asr = mlx_speech.asr.load("cohere-asr")
result = asr.generate("audio.wav")
print(result.text)

# List available models
mlx_speech.tts.list_models()
mlx_speech.asr.list_models()

CLI:

# Generate speech
mlx-speech-tts --model fish-s2-pro --text "Hello!" -o output.wav

# Voice cloning
mlx-speech-tts --model fish-s2-pro \
  --text "[whisper] Just between us..." \
  --reference-audio ref.wav \
  --reference-text "Transcript of reference." \
  -o cloned.wav

# Transcribe audio
mlx-speech-asr --model cohere-asr --audio speech.wav

# List available models
mlx-speech-tts --list-models
mlx-speech-asr --list-models

Local model paths work too:

mlx-speech-tts --model models/fish_s2_pro/mlx-int8 --text "Hello!" -o output.wav

Models

Pre-converted MLX weights are on Hugging Face under appautomaton. Use mlx_speech.tts.load("alias") or mlx_speech.tts.load("appautomaton/repo-name") to load them.

Alias HF Repo Quant
fish-s2-pro fishaudio-s2-pro-8bit-mlx int8
vibevoice vibevoice-mlx int8
longcat longcat-audiodit-3.5b-8bit-mlx int8
moss-local openmoss-tts-local-mlx int8
moss-ttsd openmoss-ttsd-mlx int8
cohere-asr cohere-asr-mlx int8

Additional models available via scripts/:

Model Script Notes
MOSS-SoundEffect scripts/generate_moss_sound_effect.py Text-to-sound-effect
Step-Audio-EditX scripts/generate_step_audio_editx.py Voice cloning and audio editing

Conversion

Convert from upstream source weights:

python scripts/convert_fish_s2_pro.py
python scripts/convert_longcat_audiodit.py
python scripts/convert_vibevoice.py
python scripts/convert_moss_local.py
python scripts/convert_moss_ttsd.py
python scripts/convert_cohere_asr.py

Model Guides

Each family has a doc covering behavior, flags, and known limitations:

Development

git clone https://github.com/appautomaton/mlx-speech.git
cd mlx-speech
uv sync
uv run pytest tests/unit/
uv run ruff check .
mlx-speech/
  src/mlx_speech/    library code
  scripts/           conversion and generation entry points
  models/            local checkpoints (not in git)
  tests/             unit, checkpoint, runtime, integration tests
  docs/              model-family behavior guides

License

MIT — see LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mlx_speech-0.2.0.tar.gz (193.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mlx_speech-0.2.0-py3-none-any.whl (250.7 kB view details)

Uploaded Python 3

File details

Details for the file mlx_speech-0.2.0.tar.gz.

File metadata

  • Download URL: mlx_speech-0.2.0.tar.gz
  • Upload date:
  • Size: 193.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mlx_speech-0.2.0.tar.gz
Algorithm Hash digest
SHA256 76bd5dfa1a56e0839f6942bfb2b9d9326dd7a5dde7368e935b118373769be67d
MD5 61f387095d710aa8bca79fda7ab0cdb8
BLAKE2b-256 eb80cd93d407004d6d619c7d6d44a0f49ecf05441e37e3e29b23bc9fc863c963

See more details on using hashes here.

Provenance

The following attestation bundles were made for mlx_speech-0.2.0.tar.gz:

Publisher: publish.yml on appautomaton/mlx-speech

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mlx_speech-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: mlx_speech-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 250.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mlx_speech-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5476dd14f5c3b903a458bf3ecc690c48b14dba1a28f6b5231738f5263533022c
MD5 c3e721997a29a2f5eeebee46a7fd8aa9
BLAKE2b-256 637076e8ffbc64116b663d8e7fbd81fdc2feb0ea750ca83eedb7f29b5103e36d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mlx_speech-0.2.0-py3-none-any.whl:

Publisher: publish.yml on appautomaton/mlx-speech

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page