Skip to content

jamescodes84/molt-speak

Repository files navigation

Molt Speak πŸ¦žπŸ€–

Introducing Molt Speak, the free app designed to allow Moltys (Clawd Bots) to actually speak to their Humans.

Stop typing. Start talking. Molt Speak πŸ¦žπŸ€–

Version 1.1 Released β€” The free truly conversational interface for Open Claw. Run moltspeak update for the latest.

Requirements

  • macOS (Apple Silicon or Intel)
  • Python 3.9+
  • An AI agent running in Terminal (e.g., OpenClaw TUI, Claude Code)

Quick Install

curl -fsSL https://raw.githubusercontent.com/jamescodes84/molt-speak/main/install.sh | bash

Note: You may see "OpenSpeak" in installer output β€” this is the same product as Molt Speak.

Usage

  1. Start your AI agent in a Terminal window
  2. Launch Molt Speak:
    moltspeak start
  3. Start talking β€” your voice is transcribed and sent to the agent
  4. Listen β€” the agent's responses are spoken aloud

Commands

Command Description
moltspeak start Open menu bar app and start voice loop
moltspeak stop Stop the voice loop (menu bar stays open)
moltspeak quit Quit everything
moltspeak status Check if voice loop is running
moltspeak logs View logs (moltspeak logs audio or moltspeak logs integration)
moltspeak update Update to latest version
moltspeak elapi Set ElevenLabs API key
moltspeak kill Force-kill all processes (use if stuck)

Menu Bar App

Once running, you'll see a lobster icon in your menu bar:

  • πŸ”΄πŸ¦ž = Voice loop stopped
  • 🟒🦞 = Voice loop active

Click to access:

  • Start/Stop voice loop
  • Select TTS provider (Edge-TTS free / ElevenLabs premium)
  • Change voice (24+ Edge-TTS voices across 6 English accents)
  • Agent Boldness (conversation eagerness)
  • Microphone sensitivity (continuous slider)
  • Barge-in sensitivity (continuous slider)
  • Debug mode toggle
  • Set honorific (Sir / Madam / Custom text)
  • Check for updates
  • View logs

Voices & TTS Providers

Edge-TTS (Default, Free)

No API key required. Default voice: en-US-ChristopherNeural.

Region Voices
American ChristopherNeural, AriaNeural, JennyNeural, GuyNeural, DavisNeural, AmberNeural, AnaNeural, BrandonNeural, CoraNeural, EricNeural
British RyanNeural, SoniaNeural, LibbyNeural, ThomasNeural, MaisieNeural
Australian NatashaNeural, WilliamNeural
Irish EmilyNeural, ConnorNeural
South African LeahNeural, LukeNeural
Indian NeerjaNeural, PrabhatNeural

ElevenLabs (Premium)

High-quality AI voices. Requires an API key:

moltspeak elapi

Uses the eleven_turbo_v2_5 model for low latency. Voice list is loaded dynamically from your ElevenLabs account.

Local macOS (Developer/Fallback)

Uses the macOS say command (Alex, Samantha, Daniel, etc.). Available when running the Mouth component directly for development.

Configuration

Runtime Config

Most settings are accessible from the menu bar. They are stored in runtime/molt_speak_config.json:

{
  "preferred_voice": "en-US-ChristopherNeural",
  "user_title": "sir",
  "tts_provider": "edge-tts",
  "elevenlabs_api_key": null,
  "elevenlabs_voice_id": "21m00Tcm4TlvDq8ikWAM",
  "elevenlabs_model": "eleven_turbo_v2_5",
  "mic_sensitivity": "medium",
  "barge_sensitivity": "medium",
  "agent_boldness": 50,
  "debug_mode": false
}

Environment Variables

Create a .env file in the install directory to customize advanced behavior:

Variable Default Description
ENABLE_INTEGRATION true Enable echo prevention coordinator
ENABLE_BIDIRECTIONAL false Pause Mouth when Ears is transcribing (experimental)
MOUTH_STATUS_POLL_INTERVAL 0.1 Poll frequency in seconds
MOUTH_STATUS_DEBOUNCE_MS 200 Debounce delay after speech stops
LOG_LEVEL INFO Logging verbosity (DEBUG, INFO, WARNING, ERROR)
LOG_FILE (none) Optional log file path
MAX_QUEUE_SIZE 10 Transcription queue size
PROCESSING_TIMEOUT 30.0 Processing timeout in seconds
POSTHOG_DISABLED false Set to true to disable analytics

How It Works

You speak β†’ Ears transcribes β†’ Types into agent terminal
                                      ↓
You hear ← Mouth speaks ← Agent writes response

Echo Prevention: When the agent speaks, your microphone automatically pauses to prevent feedback loops.

File Locations

All runtime files are stored in ~/openclaw-workspace/molt-speak/app/runtime/:

File Purpose
speech_output.txt Agent writes here to speak
mouth_status.txt Tracks speaking state
ears_pause.signal Pauses mic during playback
molt_speak_config.json User preferences (voice, provider, sensitivity)

Agent Integration

For your AI agent to speak, it writes to the speech output file:

echo "Hello! How can I help you?" >> ~/openclaw-workspace/molt-speak/app/runtime/speech_output.txt

Or in Python:

from pathlib import Path

speech_file = Path.home() / "openclaw-workspace/molt-speak/app/runtime/speech_output.txt"
with open(speech_file, "a") as f:
    f.write("Hello! How can I help you?\n")

Troubleshooting

Voice loop won't start

  1. Make sure your AI agent is running in Terminal first
  2. Check that Terminal has microphone permissions (System Settings β†’ Privacy & Security β†’ Microphone)

Can't hear speech

  1. Check your system volume
  2. Verify the speech file exists: ls ~/openclaw-workspace/molt-speak/app/runtime/speech_output.txt

Update stuck on old version

If moltspeak update doesn't pick up the latest version, do a clean reinstall:

moltspeak kill
rm -rf ~/openclaw-workspace/molt-speak
curl -fsSL https://raw.githubusercontent.com/jamescodes84/molt-speak/main/install.sh | bash

Your runtime config (voice, provider, sensitivity) will be preserved automatically.

Permission denied errors

Run a clean reinstall:

moltspeak quit
rm -rf ~/openclaw-workspace/molt-speak/app
moltspeak update
moltspeak start

Echo/feedback issues

The system should automatically pause your mic when the agent speaks. If you hear echo:

  1. Stop and restart: moltspeak stop && moltspeak start
  2. Check logs: Click menu bar β†’ View Logs

Processes stuck / won't quit

If the voice loop won't stop normally:

moltspeak kill

Uninstall

moltspeak quit
rm -rf ~/openclaw-workspace/molt-speak/app
sudo rm /usr/local/bin/moltspeak
# Optional: Remove analytics data
rm -rf ~/Library/Application\ Support/molt-speak/

Version History

Version Date Highlights
0.1.0 2026-02-06 Initial foundation β€” Whisper STT, Edge-TTS, echo prevention coordinator, macOS menu bar app, PostHog analytics
0.5.0 2026-02-06 Stability & polish β€” Persistent analytics across uninstalls, daily active user heartbeat, voice selection fixes, async/sync corrections
0.9.0 2026-02-06 Command rename molt-speak β†’ moltspeak, ElevenLabs premium TTS, CodeRabbit CI integration, lint & error handling fixes
1.0.0 2026-02-06 Public release β€” Custom honorific text input, privacy section, mic & barge-in sensitivity tuning, 24+ Edge-TTS voices, full documentation
1.0.5 2026-02-10 Update fix β€” Fixed update dialog crash (NSWindow threading), hardened install script with fresh-clone fallback, fixed PostHog analytics (flush before exit, correct identify API, explicit API key passthrough)
1.1.0 2026-02-25 The conversational update β€” Agent Boldness (adjustable conversation eagerness), Contextual Awareness via Social Cue Heuristics, Smart Silence ([MOLT SPEAK: SILENT RESPONSE]), Smart Bow-Out, Continue the Joke (barge-in resume β€” yes, it's a Boondock Saints reference. IYKYK), greatly reduced round-trip latency (Faster Whisper ~1s STT, sentence-level TTS), Debug Mode, new menu with lobster-robot button and continuous-value sliders for mic/barge-in sensitivity. All features tested on Haiku 4-5.

Developer Information

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Molt Speak System                   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Ears    β”‚    β”‚  Mouth   β”‚    β”‚ Coordinator  β”‚  β”‚
β”‚  β”‚  (STT)   β”‚    β”‚  (TTS)   β”‚    β”‚ (Echo Prev)  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚       ↓               ↑                ↕            β”‚
β”‚  Transcribes     Speaks text      Monitors &       β”‚
β”‚  your voice      from file        signals pause    β”‚
β”‚                                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Components

Component Directory Purpose
Ears open_ears/ Speech-to-text using Whisper
Mouth open_mouth/ Text-to-speech using Edge-TTS / ElevenLabs
Coordinator src/ Echo prevention coordination
Menu Bar unified_menu_bar.py GUI control interface

Running Components Separately

For development, you can run each component in its own terminal:

Terminal 1 - Coordinator:

python main.py

Terminal 2 - Mouth:

cd open_mouth && python main.py

Terminal 3 - Ears:

cd open_ears && python main.py

Signal File Format

mouth_status.txt:

2026-02-01T12:15:24.161586|SPEAKING|Hello, this is a test
2026-02-01T12:15:25.167795|IDLE|

ears_pause.signal: Unix timestamp (file existence = pause mic)


Privacy & Analytics

What We Track

Molt Speak uses PostHog analytics to understand usage patterns and improve the product. We track:

  • Installation & Updates β€” When you install or update the app
  • Session Duration β€” How long you use the app
  • Feature Usage β€” Which features you use (voice input, output, etc.)
  • Performance Metrics β€” Transcription times, synthesis times
  • Anonymous User ID β€” A randomly generated UUID (not linked to your identity)

Analytics state (anonymous ID, session counts) persists in ~/Library/Application Support/molt-speak/ and survives reinstalls. Remove this directory to fully clear analytics data.

What We DON'T Track

  • No transcribed speech content
  • No text-to-speech content
  • No personal information (name, email, etc.)
  • No file contents or system information beyond platform type
  • No IP addresses (PostHog anonymizes these)

Opting Out

To disable analytics entirely, edit your .env file:

POSTHOG_DISABLED=true

Restart Molt Speak after changing this setting. The app functions identically with analytics disabled.


Terms & Conditions

USE AT YOUR OWN RISK

This software is provided "as is", without warranty of any kind, express or implied. By using Molt Speak, you acknowledge and agree that:

  • The software may have bugs, errors, or unexpected behavior
  • Voice recognition and text-to-speech accuracy is not guaranteed
  • The developers are not responsible for any damages, data loss, or issues arising from use of this software
  • You are solely responsible for ensuring the software meets your needs
  • Audio recording features require appropriate permissions and should be used in compliance with applicable laws
  • This software is not intended for use in critical, medical, or safety-related applications

Use of this software constitutes acceptance of these terms.


License

MIT License

Contributing

Issues and PRs welcome at github.com/jamescodes84/molt-speak


Appendix A: Legacy Commands

Prior versions of Molt Speak used the hyphenated command molt-speak. The current command is moltspeak (no hyphen). If you have an older installation, the legacy command may still work.

Legacy Command Current Command
molt-speak start moltspeak start
molt-speak stop moltspeak stop
molt-speak quit moltspeak quit
molt-speak status moltspeak status
molt-speak update moltspeak update

To ensure you're using the latest command, run moltspeak update.

About

Introducing Molt Speak πŸ¦žπŸ€–, the FREE Conversational Interface for Open Claw. Stop typing. Start talking. Molt Speak πŸ¦žπŸ€–

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors