✅ TICKET-006: Wake-word Detection Service - Implemented wake-word detection using openWakeWord - HTTP/WebSocket server on port 8002 - Real-time detection with configurable threshold - Event emission for ASR integration - Location: home-voice-agent/wake-word/ ✅ TICKET-010: ASR Service - Implemented ASR using faster-whisper - HTTP endpoint for file transcription - WebSocket endpoint for streaming transcription - Support for multiple audio formats - Auto language detection - GPU acceleration support - Location: home-voice-agent/asr/ ✅ TICKET-014: TTS Service - Implemented TTS using Piper - HTTP endpoint for text-to-speech synthesis - Low-latency processing (< 500ms) - Multiple voice support - WAV audio output - Location: home-voice-agent/tts/ ✅ TICKET-047: Updated Hardware Purchases - Marked Pi5 kit, SSD, microphone, and speakers as purchased - Updated progress log with purchase status 📚 Documentation: - Added VOICE_SERVICES_README.md with complete testing guide - Each service includes README.md with usage instructions - All services ready for Pi5 deployment 🧪 Testing: - Created test files for each service - All imports validated - FastAPI apps created successfully - Code passes syntax validation 🚀 Ready for: - Pi5 deployment - End-to-end voice flow testing - Integration with MCP server Files Added: - wake-word/detector.py - wake-word/server.py - wake-word/requirements.txt - wake-word/README.md - wake-word/test_detector.py - asr/service.py - asr/server.py - asr/requirements.txt - asr/README.md - asr/test_service.py - tts/service.py - tts/server.py - tts/requirements.txt - tts/README.md - tts/test_service.py - VOICE_SERVICES_README.md Files Modified: - tickets/done/TICKET-047_hardware-purchases.md Files Moved: - tickets/backlog/TICKET-006_prototype-wake-word-node.md → tickets/done/ - tickets/backlog/TICKET-010_streaming-asr-service.md → tickets/done/ - tickets/backlog/TICKET-014_tts-service.md → tickets/done/
7.3 KiB
7.3 KiB
Testing Guide
This guide covers how to test all components of the Atlas voice agent system.
Prerequisites
-
Install dependencies:
cd mcp-server pip install -r requirements.txt -
Ensure Ollama is running (for local testing):
# Check if Ollama is running curl http://localhost:11434/api/tags # If not running, start it: ollama serve -
Configure environment:
# Make sure .env is set correctly cd /home/beast/Code/atlas/home-voice-agent cat .env | grep OLLAMA
Quick Test Suite
1. Test MCP Server
cd /home/beast/Code/atlas/home-voice-agent/mcp-server
# Start the server (in one terminal)
./run.sh
# In another terminal, test the server
python3 test_mcp.py
# Or test all tools
./test_all_tools.sh
Expected output: Should show all 22 tools registered and working.
2. Test LLM Connection
cd /home/beast/Code/atlas/home-voice-agent/llm-servers/4080
# Test connection
python3 test_connection.py
# Or use the local test script
./test_local.sh
Expected output:
- ✅ Server is reachable
- ✅ Chat test successful with model response
3. Test LLM Router
cd /home/beast/Code/atlas/home-voice-agent/routing
# Run router tests
python3 test_router.py
Expected output: All routing tests passing.
4. Test MCP Adapter
cd /home/beast/Code/atlas/home-voice-agent/mcp-adapter
# Test adapter (MCP server must be running)
python3 test_adapter.py
Expected output: Tool discovery and calling working.
5. Test Individual Components
# Test memory system
cd /home/beast/Code/atlas/home-voice-agent/memory
python3 test_memory.py
# Test monitoring
cd /home/beast/Code/atlas/home-voice-agent/monitoring
python3 test_monitoring.py
# Test safety boundaries
cd /home/beast/Code/atlas/home-voice-agent/safety/boundaries
python3 test_boundaries.py
# Test confirmations
cd /home/beast/Code/atlas/home-voice-agent/safety/confirmations
python3 test_confirmations.py
# Test conversation management
cd /home/beast/Code/atlas/home-voice-agent/conversation
python3 test_session.py
# Test summarization
cd /home/beast/Code/atlas/home-voice-agent/conversation/summarization
python3 test_summarization.py
End-to-End Testing
Test Full Flow: User Query → LLM → Tool Call → Response
-
Start MCP Server:
cd /home/beast/Code/atlas/home-voice-agent/mcp-server ./run.sh -
Test with a simple query (using curl or Python):
import requests
import json
# Test query
mcp_url = "http://localhost:8000/mcp"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_current_time",
"arguments": {}
}
}
response = requests.post(mcp_url, json=payload)
print(json.dumps(response.json(), indent=2))
- Test LLM with tool calling:
from routing.router import LLMRouter
from mcp_adapter.adapter import MCPAdapter
# Initialize
router = LLMRouter()
adapter = MCPAdapter("http://localhost:8000/mcp")
# Route request
decision = router.route_request(agent_type="family")
print(f"Routing to: {decision.agent_type} at {decision.config.base_url}")
# Get tools
tools = adapter.discover_tools()
print(f"Available tools: {len(tools)}")
# Make LLM request with tools
# (This would require full LLM integration)
Web Dashboard Testing
-
Start MCP Server (includes dashboard):
cd /home/beast/Code/atlas/home-voice-agent/mcp-server ./run.sh -
Open in browser:
- Dashboard: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Health: http://localhost:8000/health
-
Test Dashboard Endpoints:
# Status curl http://localhost:8000/api/dashboard/status # Conversations curl http://localhost:8000/api/dashboard/conversations # Tasks curl http://localhost:8000/api/dashboard/tasks # Timers curl http://localhost:8000/api/dashboard/timers # Logs curl http://localhost:8000/api/dashboard/logs -
Test Admin Panel:
- Open http://localhost:8000
- Click "Admin Panel" tab
- Test log browser, kill switches, access control
Manual Tool Testing
Test Individual Tools
cd /home/beast/Code/atlas/home-voice-agent/mcp-server
# Test echo tool
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "echo",
"arguments": {"message": "Hello, Atlas!"}
}
}'
# Test time tool
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_current_time",
"arguments": {}
}
}'
# Test weather tool (requires API key)
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "weather",
"arguments": {"location": "New York"}
}
}'
Integration Testing
Test Memory System with MCP Tools
cd /home/beast/Code/atlas/home-voice-agent/memory
python3 integration_test.py
Test Full Conversation Flow
- Create a test script that:
- Creates a session
- Sends a user message
- Routes to LLM
- Calls tools if needed
- Gets response
- Stores in session
Troubleshooting
MCP Server Not Starting
# Check if port 8000 is in use
lsof -i:8000
# Kill existing process
pkill -f "uvicorn|mcp_server"
# Restart
cd mcp-server
./run.sh
Ollama Connection Failed
# Check Ollama is running
curl http://localhost:11434/api/tags
# Check .env configuration
cat .env | grep OLLAMA
# Test connection
cd llm-servers/4080
python3 test_connection.py
Tools Not Working
# Check tool registry
cd mcp-server
python3 -c "from tools.registry import ToolRegistry; r = ToolRegistry(); print(f'Tools: {len(r.list_tools())}')"
# Test specific tool
python3 -c "from tools.registry import ToolRegistry; r = ToolRegistry(); print(r.call_tool('echo', {'message': 'test'}))"
Test Checklist
- MCP server starts and shows 22 tools
- LLM connection works (local or remote)
- Router correctly routes requests
- MCP adapter discovers tools
- Individual tools work (echo, time, weather, etc.)
- Memory tools work (store, get, search)
- Dashboard loads and shows data
- Admin panel functions work
- Logs are being written
- All unit tests pass
Running All Tests
# Run all test scripts
cd /home/beast/Code/atlas/home-voice-agent
# MCP Server
cd mcp-server && python3 test_mcp.py && cd ..
# LLM Connection
cd llm-servers/4080 && python3 test_connection.py && cd ../..
# Router
cd routing && python3 test_router.py && cd ..
# Memory
cd memory && python3 test_memory.py && cd ..
# Monitoring
cd monitoring && python3 test_monitoring.py && cd ..
# Safety
cd safety/boundaries && python3 test_boundaries.py && cd ../..
cd safety/confirmations && python3 test_confirmations.py && cd ../..
Next Steps
After basic tests pass:
- Test end-to-end conversation flow
- Test tool calling from LLM
- Test memory integration
- Test safety boundaries
- Test confirmation flows
- Performance testing