mcp-ai-voice
by sylweriusz
README.md
# 🎵 MCP Nexus Voice v1.2.0
**Hybrid Voice Architecture: Platform + OpenAI TTS**
Enable AI agents to express themselves with natural voice synthesis through intelligent engine selection. Supports both zero-config platform voices and premium OpenAI TTS with automatic fallback.
## ✨ Features
### 🌩️ Hybrid Architecture
- **Platform TTS**: Zero-config system voices (macOS, Windows, Linux)
- **OpenAI TTS**: Premium cloud-based synthesis when API key provided
- **Intelligent Selection**: Automatic engine selection with graceful fallback
- **Asynchronous Processing**: Non-blocking voice synthesis
### 🎭 Voice Options
- **Platform Voices**: 34+ languages with quality optimization
- **OpenAI Voices**: 6 premium voices (alloy, echo, fable, onyx, nova, shimmer)
- **Quality Modes**: Standard (tts-1) and HD (tts-1-hd)
- **Speed Control**: 0.25x to 4.0x playback speed
### 🔄 Smart Fallback
- OpenAI → Platform fallback on errors
- Graceful degradation without workflow interruption
- Comprehensive error handling and logging
- **Background playback**: Audio plays directly without opening windows or applications
## 🚀 Quick Start
### Installation
```bash
npm install -g @sylweriusz/mcp-ai-voice
```
### Environment Configuration (.env)
For easier configuration, copy the example environment file:
```bash
cp .env.example .env
```
Edit `.env` with your settings:
```bash
# Required for OpenAI TTS
OPENAI_API_KEY=sk-your-actual-api-key-here
# Optional customizations
DEFAULT_TTS_VOICE=nova # Your preferred OpenAI voice
DEFAULT_TTS_MODEL=tts-1-hd # Higher quality model
DEFAULT_TTS_SPEED=1.2 # Slightly faster speech
```
### Claude Desktop Configuration
#### Basic Setup (Platform TTS only)
```json
{
"mcpServers": {
"ai-voice": {
"command": "npx",
"args": ["@sylweriusz/mcp-ai-voice"]
}
}
}
```
#### Hybrid Setup (Platform + OpenAI TTS)
**Option 1: Environment Variables**
```json
{
"mcpServers": {
"ai-voice": {
"command": "npx",
"args": ["@sylweriusz/mcp-ai-voice"],
"env": {
"OPENAI_API_KEY": "sk-your-api-key-here"
}
}
}
}
```
**Option 2: Using .env file (Recommended)**
```json
{
"mcpServers": {
"ai-voice": {
"command": "npx",
"args": ["@sylweriusz/mcp-ai-voice"]
}
}
}
```
*Note: Ensure your `.env` file is in the project directory with `OPENAI_API_KEY` configured.*
## 🎮 Usage Examples
### Basic Voice Expression
```javascript
// Simple usage - auto-selects best engine
say("Hello! I'm excited to help you today!")
// Platform-specific language
say("Witam! Jak się masz?", { language: "pl" })
// macOS Easter Egg - exact voice names
say("Welcome to the future!", { language: "Fred" })
```
### OpenAI TTS Usage
```javascript
// Use OpenAI with default settings
say("This uses premium OpenAI synthesis!", { useOpenAI: true })
// Specific OpenAI voice and model
say("Deep, authoritative voice", {
useOpenAI: true,
openaiVoice: "onyx",
openaiModel: "tts-1-hd"
})
// Speed control
say("Speaking at double speed!", {
useOpenAI: true,
openaiSpeed: 2.0
})
// Warm female voice with HD quality
say("Natural, engaging conversation", {
useOpenAI: true,
openaiVoice: "nova",
openaiModel: "tts-1-hd"
})
```
### Engine Selection Strategy
```javascript
// Force platform engine (even if OpenAI available)
say("Using system voice", { useOpenAI: false })
// Auto-selection (prefers OpenAI if available)
say("Best available quality")
// Fallback demonstration
say("This will use OpenAI, but fall back to platform on error", {
useOpenAI: true
})
```
## 🎭 Voice Characteristics
### OpenAI Voices
- **alloy**: Balanced, versatile voice
- **echo**: Clear, direct masculine voice ⭐ (Default)
- **fable**: Expressive, storytelling voice
- **onyx**: Deep, authoritative masculine voice
- **nova**: Warm, engaging feminine voice
- **shimmer**: Bright, energetic feminine voice
### Platform Voices
- **macOS**: Premium system voices with heritage options
- **Windows**: SAPI voices with quality detection
- **Linux**: espeak voices with language optimization
## ⚙️ Configuration
### Environment Variables
```bash
# Required for OpenAI TTS
OPENAI_API_KEY=sk-your-api-key-here
# Optional: Default voice preference (OpenAI)
DEFAULT_TTS_VOICE=echo
# Optional: Audio player command override
AUDIO_PLAYER_COMMAND=vlc
```
### Tool Parameters
```javascript
{
text: "Required text to synthesize",
// Platform engine options
language: "pl", // Language code or macOS voice name
// OpenAI engine options
useOpenAI: true, // Force OpenAI engine
openaiVoice: "nova", // OpenAI voice selection
openaiModel: "tts-1-hd", // Quality: tts-1 or tts-1-hd
openaiSpeed: 1.5 // Speed: 0.25 to 4.0
}
```
## 🏗️ Architecture
### Hybrid Engine Selection
1. **API Key Check**: OpenAI available if `OPENAI_API_KEY` provided
2. **User Preference**: `useOpenAI` parameter overrides auto-selection
3. **Auto-Selection**: Prefers OpenAI when available
4. **Fallback**: OpenAI errors trigger platform engine fallback
5. **Platform Backup**: Always available as reliability baseline
### Performance Optimization
- **Asynchronous Processing**: Non-blocking synthesis
- **Background Audio**: Direct audio playback without opening windows or applications
- **Cleanup Management**: Automatic temporary file cleanup
- **Error Resilience**: Graceful degradation on API issues
## 🛠️ Development
### Build from Source
```bash
git clone https://github.com/sylweriusz/mcp-ai-voice.git
cd mcp-ai-voice
npm install
npm run build
npm start
```
### Testing Hybrid Setup
```bash
# Test platform engine only
node dist/index.js
# Test with OpenAI (requires API key)
OPENAI_API_KEY=sk-... node dist/index.js
```
## 📊 Monitoring
The system provides comprehensive logging:
```
🎵 AI Voice v1.2.0 - Hybrid Voice Architecture
🔍 Initializing voice ecosystem...
📊 Engine Status:
🎯 Platform TTS: Available
🌩️ OpenAI TTS: Available
⭐ Preferred: OPENAI
📡 Hybrid voice synthesis ready
🎯 Platform: darwin
```
## 🤝 Contributing
1. Fork the repository
2. Create feature branch: `git checkout -b feature-name`
3. Test hybrid functionality with both engines
4. Submit pull request with test cases
## 📄 License
MIT License - see LICENSE file for details.
## 🔗 Links
- **Repository**: https://github.com/sylweriusz/mcp-ai-voice
- **NPM Package**: https://www.npmjs.com/package/@sylweriusz/mcp-ai-voice
- **Issues**: https://github.com/sylweriusz/mcp-ai-voice/issues
- **OpenAI TTS Documentation**: https://platform.openai.com/docs/api-reference/audio/createSpeech
---
**🎵 Express yourself vocally - the hybrid way!**
TDQS
A4/5.0
Scored across 1 tool
Disambiguation5/5
With only one tool, there is no possibility of overlapping purposes or agent misselection. The single 'say' intent is unmistakable.
Naming Consistency5/5
The sole tool name 'say' is a clear imperative verb with no conflicting conventions. There are no other names to create inconsistency, so the naming is internally coherent.
Tool Count3/5
One tool is enough for a minimal TTS use case, but the surface feels thin for a server named 'mcp-ai-voice'. It lands in the borderline 1–2 tool range rather than a fully-scoped toolset.
Completeness4/5
The core text-to-speech action is fully covered and zero-config design reduces the need for setup tools. Missing playback controls such as stop, voice selection, or status are minor gaps rather than dead ends.
Maintenance
ActivityInactive
ResponsivenessNo recent community issues