- macOS with Homebrew installed
- Docker Desktop running
- PulseAudio installed:
brew install pulseaudio - Ollama installed and running:
brew install ollama && ollama serve - Ollama model downloaded:
ollama pull llama3.1:8b
./start_aether.shThis script will:
- ✅ Start PulseAudio with TCP support
- ✅ Build Docker images (first time only)
- ✅ Start all Aether services
- ✅ Show live logs
Symptoms:
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
Fix:
# Kill any stuck instances
pulseaudio --kill
killall pulseaudio
# Set module path
export PULSE_MODULE_PATH=/opt/homebrew/lib/pulseaudio/modules
# Start manually
pulseaudio --daemonize=no --exit-idle-time=-1 \
--load="module-native-protocol-tcp auth-anonymous=1" \
--load="module-coreaudio-device" &
# Verify it's running
pactl infoSymptoms:
- System uses iPhone mic instead of built-in Mac mic
- Audio from wrong device
Fix:
# List available sources
./scripts/select_audio_input.sh
# Set built-in mic as default
pactl set-default-source coreaudio_input.0
# Verify
pactl info | grep "Default Source"Disable Continuity Camera (Permanent Fix):
- System Settings → General → AirDrop & Handoff
- Turn OFF "iPhone Cellular Calls"
- Turn OFF "Continuity Camera"
Symptoms:
[WARN] WhisperBridge not running - audio data dropped
Possible Causes:
- Python script not found
- Whisper not installed
- Python dependencies missing
Fix:
# Rebuild Docker image
docker-compose down
docker-compose build --no-cache aether_voice
docker-compose up
# Check logs for script path
docker-compose logs aether_voice | grep "script"Symptoms:
Cannot connect to Ollama: Connection refused
Fix:
# Start Ollama server
ollama serve
# In another terminal, verify model
ollama list
# Pull model if missing
ollama pull llama3.1:8b
# Test it
ollama run llama3.1:8b "Hello"Symptoms:
- Every word triggers separate LLM call
- Overlapping TTS responses
Status: ✅ FIXED in latest version
The GPT agent now accumulates speech and waits 2 seconds of silence before processing.
# Check status
pactl info
# List sources
pactl list sources short
# Test recording (5 seconds)
parecord --channels=1 --rate=16000 --duration=5 test.wav
# Play it back
paplay test.wav# Start services
docker-compose up
# In another terminal, check voice node
docker-compose logs -f aether_voice
# Speak into microphone
# You should see transcriptions in logs# Enter voice container
docker exec -it aether_os-aether_voice-1 bash
# List topics
ros2 topic list
# Monitor voice transcriptions
ros2 topic echo /voice_text
# Monitor AI responses
ros2 topic echo /aether_response┌─────────────┐
│ macOS │
│ Built-in │
│ Mic │
└──────┬──────┘
│
▼
┌─────────────┐
│ PulseAudio │
│ TCP:4713 │
└──────┬──────┘
│
▼
┌─────────────────────────────────────┐
│ Docker Container │
│ │
│ ┌──────────────┐ │
│ │ Voice Input │ │
│ │ (Whisper) │ │
│ └──────┬───────┘ │
│ │ /voice_text │
│ ▼ │
│ ┌──────────────┐ │
│ │ GPT Agent │ │
│ │ (Ollama) │ │
│ └──────┬───────┘ │
│ │ /aether_response │
│ ▼ │
│ ┌──────────────┐ │
│ │ TTS │ │
│ │ (Google) │ │
│ └──────┬───────┘ │
│ │ │
└─────────┼───────────────────────────┘
│
▼
┌─────────┐
│ Speaker │
└─────────┘
- You speak: "Hello, how are you?"
- Whisper transcribes: Partial words appear in logs
- After 2 sec silence: GPT agent processes complete sentence
- Ollama responds: "I'm doing well, thank you for asking!"
- TTS speaks: You hear the response
-
Use smaller Whisper model for faster transcription:
- Edit
docker-compose.yml - Change
WHISPER_MODEL=tiny(fastest) orbase(balanced)
- Edit
-
Use smaller Ollama model for faster responses:
ollama pull llama3.1:8b(recommended)- Or
ollama pull phi3:mini(faster, less capable)
-
Adjust silence threshold for faster/slower response:
- Edit
src/aether_gpt_agent/scripts/aether_gpt_agent_node.py - Change
self.silence_threshold = 2.0(lower = faster, higher = more patient)
- Edit
Press Ctrl+C in the terminal running start_aether.sh
This will:
- Stop Docker containers
- Stop PulseAudio
- Clean up resources
Check logs:
# All services
docker-compose logs
# Specific service
docker-compose logs aether_voice
docker-compose logs aether_gpt_agent
docker-compose logs aether_tts
# Follow logs live
docker-compose logs -f- See
VOICE_FLOW_FIX.mdfor technical details on speech accumulation - See
VOICE_CONVERSATION_SETUP.mdfor full system documentation - See
MACOS_AUDIO_SETUP.mdfor audio configuration details