Metadata-Version: 2.4
Name: wyoming-mlx-whisper
Version: 1.2.0
Summary: Wyoming Server for MLX whisper
Project-URL: Homepage, https://github.com/basnijholt/wyoming-mlx-whisper
Project-URL: Repository, https://github.com/basnijholt/wyoming-mlx-whisper.git
Author: Vincent Lin
Author-email: Bas Nijholt <bas@nijholt.com>
License-Expression: MIT
License-File: LICENSE
Keywords: mlx,rhasspy,stt,whisper,wyoming
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Text Processing :: Linguistic
Requires-Python: <3.14,>=3.10
Requires-Dist: mlx-whisper
Requires-Dist: numpy
Requires-Dist: typer
Requires-Dist: wyoming
Provides-Extra: dev
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-asyncio; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Description-Content-Type: text/markdown

# Wyoming MLX Whisper

[![PyPI](https://img.shields.io/pypi/v/wyoming-mlx-whisper)](https://pypi.org/project/wyoming-mlx-whisper/)
[![Python](https://img.shields.io/pypi/pyversions/wyoming-mlx-whisper)](https://pypi.org/project/wyoming-mlx-whisper/)
[![License](https://img.shields.io/github/license/basnijholt/wyoming-mlx-whisper)](https://github.com/basnijholt/wyoming-mlx-whisper/blob/main/LICENSE)
[![Pre-commit](https://github.com/basnijholt/wyoming-mlx-whisper/actions/workflows/pre-commit.yml/badge.svg)](https://github.com/basnijholt/wyoming-mlx-whisper/actions/workflows/pre-commit.yml)

[Wyoming protocol](https://github.com/rhasspy/wyoming) server for [mlx-whisper](https://pypi.org/project/mlx-whisper) speech-to-text on Apple Silicon.

Uses [`mlx-community/whisper-large-v3-turbo`](https://huggingface.co/mlx-community/whisper-large-v3-turbo) by default, which runs near real-time on M1 Pro and newer.

### Available Models

| Model | Size | Speed | Quality |
|-------|------|-------|---------|
| [`mlx-community/whisper-tiny`](https://huggingface.co/mlx-community/whisper-tiny) | 75 MB | ⚡⚡⚡ Fastest | Basic |
| [`mlx-community/whisper-small-mlx`](https://huggingface.co/mlx-community/whisper-small-mlx) | 481 MB | ⚡⚡ Fast | Good |
| [`mlx-community/whisper-large-v3-turbo`](https://huggingface.co/mlx-community/whisper-large-v3-turbo) | 1.6 GB | ⚡⚡ Near real-time | **Best** (default) |
| [`mlx-community/whisper-large-v3-turbo-q4`](https://huggingface.co/mlx-community/whisper-large-v3-turbo-q4) | 464 MB | ⚡⚡ Near real-time | Near-best |

Use `--model <name>` to select a different model.

<details><summary><b><u>[ToC]</u></b> 📚</summary>

<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->

- [Requirements](#requirements)
- [Installation](#installation)
  - [Using uvx (recommended, no install needed)](#using-uvx-recommended-no-install-needed)
  - [Using pip](#using-pip)
- [Usage](#usage)
  - [Run directly](#run-directly)
  - [Run as macOS service (launchd)](#run-as-macos-service-launchd)
- [Options](#options)
- [Home Assistant Integration](#home-assistant-integration)
- [Related Projects](#related-projects)
- [Development](#development)
- [Acknowledgements](#acknowledgements)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

</details>

## Requirements

- macOS with Apple Silicon (M1/M2/M3/M4)
- Python 3.10-3.13 (3.14 not yet supported by numba)
- [uv](https://docs.astral.sh/uv/) (recommended) or pip

## Installation

### Using uvx (recommended, no install needed)

```sh
uvx --python 3.12 wyoming-mlx-whisper
```

### Using pip

```sh
pip install wyoming-mlx-whisper
wyoming-mlx-whisper
```

## Usage

### Run directly

```sh
# With uvx (no install needed)
uvx --python 3.12 wyoming-mlx-whisper

# Or if installed with pip
wyoming-mlx-whisper
```

### Run as macOS service (launchd)

Download and run the install script:

```sh
curl -fsSL https://raw.githubusercontent.com/basnijholt/wyoming-mlx-whisper/main/scripts/install_service.sh | bash
```

The server runs at `tcp://localhost:10300` by default.

Uninstall the service:

```sh
curl -fsSL https://raw.githubusercontent.com/basnijholt/wyoming-mlx-whisper/main/scripts/uninstall_service.sh | bash
```

View logs:

```sh
tail -f ~/Library/Logs/wyoming-mlx-whisper/*.out ~/Library/Logs/wyoming-mlx-whisper/*.err
```

## Options

<details>
<summary>See the output of <code>wyoming-mlx-whisper --help</code></summary>

<!-- CODE:BASH:START -->
<!-- echo '```' -->
<!-- uv run wyoming-mlx-whisper --help -->
<!-- echo '```' -->
<!-- CODE:END -->
<!-- OUTPUT:START -->
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
```

 Usage: wyoming-mlx-whisper [OPTIONS]

 Run the Wyoming MLX Whisper server.

╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --uri                           TEXT  unix:// or tcp://                      │
│                                       [env var: WHISPER_URI]                 │
│                                       [default: tcp://0.0.0.0:10300]         │
│ --model                         TEXT  Name of MLX Whisper model to use       │
│                                       [env var: WHISPER_MODEL]               │
│                                       [default:                              │
│                                       mlx-community/whisper-large-v3-turbo]  │
│ --language                      TEXT  Language code (e.g., 'en')             │
│                                       [env var: WHISPER_LANGUAGE]            │
│ --debug           --no-debug          Log DEBUG messages                     │
│                                       [env var: WHISPER_DEBUG]               │
│                                       [default: no-debug]                    │
│ --log-format                    TEXT  Format for log messages                │
│                                       [default:                              │
│                                       %(levelname)s:%(name)s:%(message)s]    │
│ --version                             Print version and exit                 │
│ --help        -h                      Show this message and exit.            │
╰──────────────────────────────────────────────────────────────────────────────╯

```

<!-- OUTPUT:END -->

</details>

## Home Assistant Integration

1. Start the server (using any method above)
2. In Home Assistant, go to **Settings → Devices & Services → Add Integration**
3. Search for "Wyoming Protocol"
4. Enter `localhost` (or your Mac's IP) and port `10300`

The Whisper STT service will now be available for voice assistants.

## Related Projects

- **[agent-cli](https://github.com/basnijholt/agent-cli)** - Local-first AI-powered CLI agents for voice transcription, autocorrect, voice editing, and more. Uses `wyoming-mlx-whisper` as its default ASR backend on Apple Silicon.

## Development

```sh
uv sync
uv run pre-commit install
```

## Acknowledgements

- Forked from [vincent861223/wyoming-mlx-whisper](https://github.com/vincent861223/wyoming-mlx-whisper) by Vincent Lin
- Based on [wyoming-whisper-api-client](https://github.com/ser/wyoming-whisper-api-client) by Dr. Serge Victor
