Skip to main content

Local, free voice artifacts for AI agents

Project description

Agent Voice

Agent Voice logo

https://github.com/user-attachments/assets/975dcfd0-17ec-4912-b3b1-ec084077f858

Local text-to-speech for people and AI agents, powered by Kokoro-82M (only English is supported).

Agent Voice creates WAV, MP3, Opus, or M4A recordings on macOS, Linux, and Windows without an API key.

Prebuilt dependencies cover macOS arm64/x64, Linux x64, and Windows x64. Linux arm64 currently needs a C build toolchain for miniaudio. Native Windows arm64 lacks an imageio-ffmpeg wheel; use x64 Python under Windows emulation.

Quick start

uv tool install agent-voice
agent-voice setup
agent-voice speak "Hello from Agent Voice." --play

agent-voice setup downloads and verifies the speech model.

How to use

# See every recording option
agent-voice speak --help

# Create a recording
agent-voice speak "The build is finished."

# Play an existing recording
agent-voice play "/absolute/path/recording.mp3"

# Create an MP3 with a readable filename
agent-voice speak "Here is your summary." --format mp3 --label summary

# Choose a voice, speed, and exact output
agent-voice speak "A slower reading." \
  --voice bf_emma --speed 0.85 --output recording.opus

# Safely pass agent text through stdin
printf '%s' "$VISIBLE_TEXT" |
  agent-voice speak --format mp3

Every agent-voice speak command prints one machine-readable JSON receipt containing the recording's absolute path, percent-encoded file_uri, audio metadata, and a delivery object with optional browser_url, audio_url, and recording_path viewer facts.

Agent Voice stores the recording plus private transcript metadata in its managed recordings directory. A lightweight localhost viewer renders the branded player document—with the recording name, native audio controls, and response text—and serves the actual WAV, MP3, Opus, or M4A recording. It starts automatically on port 8779, or on a free port when 8779 is occupied.

Agents use exactly two delivery routes:

  1. Render path with the current surface's native audio player.

  2. Otherwise render the installed skill's editable recording-delivery.md template using the structured receipt values:

    Agent Voice recording recording.mp3
    Listen: [web player](http://127.0.0.1:8779/player/recording.html) · [media app](file:///absolute/path/recording.mp3) · [web audio](http://127.0.0.1:8779/recordings/recording.mp3)
    ```sh
    agent-voice play "/absolute/path/recording.mp3"
    ```
    

The CLI owns delivery facts, not agent-facing recording prose. Each independently installable skill carries references/recording-delivery.md, where its wording can be customized. The skill derives the media link and playback command from the receipt's file_uri and path, omitting viewer links when those optional delivery facts are unavailable.

The viewer prefers port 8779 so links survive restarts. If that port is occupied, it selects a free port and reports it in the receipt. The web player renders the complete branded document, the media-app link opens the local file with the operating system default, and web audio serves the recording directly over HTTP.

The virtual player URL uses the recording name with an .html extension. If that name already belongs to another format, Agent Voice adds -2, -3, and so on.

Manage the lightweight viewer explicitly when needed:

agent-voice viewer start
agent-voice viewer stop

--output still writes the exact requested path. For HTTP delivery, Agent Voice copies that audio into the managed recordings directory instead of serving arbitrary filesystem paths or creating symlinks.

Explore the available voices and models, manage defaults, or check that Agent Voice is ready:

agent-voice voices
agent-voice models
agent-voice config --voice bf_emma --speed 1.15
agent-voice doctor --json

Defaults

Run agent-voice config to view the active persisted settings and their configuration file.

Setting Built-in default Save as default Override once
Voice af_heart config --voice NAME speak --voice NAME
Speed 1.0× config --speed NUMBER speak --speed NUMBER
Audio format MP3 config --format FORMAT speak --format FORMAT
Recording directory Agent Voice's recordings/ directory config --output-dir DIR speak --output-dir DIR
Service timed for 10 minutes config --service MODE [--service-timeout MINUTES] speak --service MODE [--service-timeout MINUTES]

on leaves the service running, off uses embedded inference, and timed stops the service after the configured number of idle minutes.

The service setting is stored as one object. Timed mode includes its duration:

{
  "service": {
    "mode": "timed",
    "timeout_minutes": 10
  }
}

Agent skills

View Agent Voice on skills.sh.

# Create speech recordings or read text aloud
npx skills add yoav0gal/agent-voice --skill create-speech-recording --global --agent codex --yes

# Add audio to requested written responses
npx skills add yoav0gal/agent-voice --skill spoken-response --global --agent codex --yes

Use --agent '*' instead of --agent codex to install the same skills for all agent destinations recognized by the skills CLI.

Local speech API

agent-voice serve

curl http://127.0.0.1:8765/v1/audio/speech \
  -H 'Content-Type: application/json' \
  -d '{"input":"The task is complete.","voice":"af_heart","response_format":"mp3"}' \
  --output speech.mp3

The speech API binds only to localhost. It is separate from the lightweight recording viewer. agent-voice speak uses the speech API automatically when available and falls back to embedded inference.

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

agent_voice-0.5.0.tar.gz (981.4 kB view details)

Uploaded Source

Built Distribution

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

agent_voice-0.5.0-py3-none-any.whl (47.4 kB view details)

Uploaded Python 3

File details

Details for the file agent_voice-0.5.0.tar.gz.

File metadata

  • Download URL: agent_voice-0.5.0.tar.gz
  • Upload date:
  • Size: 981.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for agent_voice-0.5.0.tar.gz
Algorithm Hash digest
SHA256 2c48dbc593c656a48724c61ae457fd73b74cac69184b666f35d14b878ce5f9d4
MD5 6df53afc773c687a579048b133c2b161
BLAKE2b-256 72c02baa640d48f3781afefc9a86ff06050eab3cf6df1aac69d14b59662ab982

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_voice-0.5.0.tar.gz:

Publisher: publish.yml on yoav0gal/agent-voice

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

File details

Details for the file agent_voice-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: agent_voice-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 47.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for agent_voice-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ae4b9964813e759a65e6397cb7e2b90f0e8c75412cfd72a78e2e910653eecfb
MD5 55f2a9959717819402296279c1d7ac5d
BLAKE2b-256 b3331438b3c50dc91209ffceed54fbf6b461e49bd5f89af1d5c9e520928284f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_voice-0.5.0-py3-none-any.whl:

Publisher: publish.yml on yoav0gal/agent-voice

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