exoclaw-tools-voice
Voice input for exoclaw — capture microphone audio and transcribe via an audio-capable LLM. Cross-runtime (CPython + MicroPython).
What it does
ListenAndTranscribeTool is the agent surface. When the agent calls
listen():
- Opens a board-supplied
AudioCapture(file-backed on the unix sim, I2S PDM mic on the reTerminal E1001). - Streams PCM bytes through a chunked base64 encoder into a chat-completions request body — never materialising the whole recording in memory.
- Routes the request to a dedicated audio-capable model (e.g.
openai/gpt-audio-minion OpenRouter), separate from the agent's main chat model. - Returns the transcription as plain text.
The agent's main loop never sees audio — it just gets text back from a
tool call, the same way web_search returns grounded text.
Architecture
The package is a Protocol seam:
AudioCaptureProtocol — what each board implementsListenAndTranscribeTool— cross-runtime tool that consumes the Protocolstream_audio_request_body— chunked JSON body generatorB64StreamEncoder— chunked base64 with mid-stream-padding-safe semantics
Concrete AudioCapture impls live in the firmware board tree:
boards/unix/audio.py—WavFileCapture(reads a pre-staged WAV)boards/reterminal_e1001/audio.py—I2SCapture(PDM mic viamachine.I2S, mic-power-enable on GPIO38, button K0 trigger)
Configuration
The firmware wires the tool when OPENAI_AUDIO_MODEL is set:
# mise.local.toml
[env]
OPENAI_AUDIO_MODEL = "openai/gpt-audio-mini"
Same pattern as OPENAI_SEARCH_MODEL for web_search. Unset → no
listen tool surface.
Release files for exoclaw-tools-voice 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| exoclaw_tools_voice-0.1.0.tar.gz | 9.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| exoclaw_tools_voice-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.2 kB
Release files / exoclaw_tools_voice-0.1.0.tar.gz
| Download URL | exoclaw_tools_voice-0.1.0.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3d78a37532fe716de50e2cf00b6c3ab6da77274130bddfdff3b0e9e0b9daedca
|
|
BLAKE2b-256 checksum How to use checksums |
d96dfffcfaceb47b5c14b029d343e2be7b53f9160b8c62046e76f4ec9fb75b81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / exoclaw_tools_voice-0.1.0-py3-none-any.whl
| Download URL | exoclaw_tools_voice-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6bf4137e856c3d67f6750afdd0b054d900eaa38086e77f57488c71dd789796af
|
|
BLAKE2b-256 checksum How to use checksums |
c5a52182116e8af8007f3584f887ce24351c8c421104edc8923870053ad13123
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|