MYA
Hands-free voice for the terminal: dictate, translate in one key, hear MYA read Claude's answers aloud, and see a phone ring in a live band above your prompt when it is your turn.
What it does
then
A one-line MYA band above the prompt shows what it is doing: waiting, listening (with a moving level meter), thinking or speaking.
then
When Claude has finished and is waiting for you, a telephone rings in the band (and, if you turn it on, an old-fashioned bell rings). MYA also has a few lines of its own: a greeting at the start and a line when it did not hear you.
Right Ctrl
Tap, speak, tap again: your words are transcribed and sent to Claude.
Right Ctrl + Space
Tap with the chord, speak, tap: your words are transcribed, translated (English by default) and sent.
Right Ctrl + Right Shift
Switch the hotkey off while you copy-paste elsewhere, and on again (also /mya off and /mya on). A Ctrl held a while, or used with a key, a click or the wheel, is never taken for a tap.
then
When you asked by voice, MYA reads Claude's answer aloud with a human-like Cartesia voice. Long answers are first condensed into a few spoken sentences; code and paths are not read out. Prefer something else? An ffmpeg robot effect, or a local machine voice (eSpeak NG, no key, no network), are one option away.
Right Ctrl
Tap while Claude is talking to cut it off and start your next question.
/mya | Fill the prompt with the dictation instead of sending it. |
/mya go | Dictate and send. |
/mya stop | End a recording. |
/mya mute | Toggle MYA's voice. |
/mya off | Switch the Right Ctrl hotkey off. |
/mya on | Switch it on again. |
Requirements
- Linux (not macOS or Windows). On X11 the hotkey is read with xinput; on Wayland it is three GNOME keyboard shortcuts that the included installer sets up
- arecord and aplay (alsa-utils), xinput (X11 only) and Python 3. ffmpeg only for the optional robot effect and bell; libespeak-ng only for the optional machine voice. The helpers use the standard library only: nothing to pip install
- A Deepgram API key for speech-to-text
- A Cartesia API key to hear replies (not needed with the machine voice)
Install
Get the code
git clone https://github.com/xaiksan1/modnest.gitLoad the mod
claude --plugin-dir modnest/mods/myaCheck it
claude plugin validate modnest/mods/myaThen set your keys in the plugin's options (/config, kept in secure storage) or in your shell environment as DEEPGRAM_API_KEY and CARTESIA_API_KEY. Never put keys in a file you commit.
Options
| Option | Default | Meaning |
|---|---|---|
| language | en | Deepgram language code of what you say; also the speech language of replies |
| keyterms | Mya | Names Deepgram should favour; common mishearings (like "I car") are corrected |
| translateTo | English | Target language of the translate chord |
| speakReplies | true | Read answers aloud when the question was voiced |
| voiceEngine | cartesia | cartesia (human-like cloud voice) or machine (eSpeak NG, local) |
| machineVoice | en-us+klatt4 | Machine engine only: eSpeak NG voice and variant (fr+klatt, en+m3...) |
| voiceStyle | plain | Cartesia only: plain, robot (buzzing 90s computer) or soft (grit only) |
| machineRate / machineWordGap | 155 / 4 | Rhythm of the machine voice: words per minute and the pause between words |
| ringSound | false | Play a telephone bell when it is your turn |
| phrases | true | MYA's own spoken lines |
| voiceSpeed | 1.0 | Speaking speed from 0.5 (slow) to 2.0 (fast); lower it if a voice talks too fast |
| voiceId | (empty) | Cartesia voice id; empty uses MYA's original voice (Katie) |
| showBand | true | Show the MYA band above the prompt |
| micDevice | auto | ALSA capture device; auto prefers a USB microphone |
| speakerDevice | default | ALSA playback device |
| python | python3 | Python 3 command for the helpers |
| toggleKeycode / chordKeycode / lockKeycode | 105 / 65 / 62 | X11 only (under Wayland change the shortcuts in GNOME keyboard settings). X11 keycodes: Right Ctrl, Space (translate), Right Shift (hotkey on/off); list yours with xmodmap -pke |
| maxTapSeconds | 0.8 | A dictation key held longer than this is not a tap |
| hotkeyOnStart | true | Whether the hotkey is active when the session starts |
What it sends where
- Your microphone audio goes to Deepgram while you record.
- The text of Claude's answer, or its condensed version, goes to Cartesia when replies are spoken. With the machine voice nothing is sent for speech.
- Translating and condensing use a small haiku call through your own Claude Code session.
- Under Wayland the hotkey helper reads no key at all: GNOME runs mya-key when its own shortcut is pressed, and only three words are accepted through a private socket. On X11 it reads every key and mouse-button event with xinput and keeps only Right Ctrl and its two chord keys; every other key is dropped on the spot, nothing is stored or written. Read bin/hotkey.py before enabling it.
Known limits
- The chord's Space also reaches the terminal as Ctrl+Space.
- Recording is manual: it ends when you tap the key again, or after three minutes.
- Wayland: the one-command installer of the shortcuts is for GNOME; elsewhere bind any shortcut to bin/mya-key toggle, translate and lock yourself. Not tested on other desktops or distributions.