- Python 100%
| .cursor/plans | ||
| assets/sounds | ||
| config | ||
| docs | ||
| src/cva | ||
| tests | ||
| .gitignore | ||
| IMPLEMENTATION_STATUS.md | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
DCS-CVA (DCS Cockpit Voice Agent)
Voice-controlled action system for DCS World using AI transcription and LLM intent parsing.
Features
- Push-to-Talk Voice Control: Keyboard, mouse, or game controller PTT support
- AI Transcription: faster-whisper backend with GPU acceleration (Vosk planned, not yet implemented)
- Intent Parsing: OpenRouter LLM API for natural language command interpretation
- Modular Architecture: Decorator-based Python definitions for commands, interactions, and actions
- DCS-BIOS Integration: Direct control of aircraft systems via UDP (send-only)
- Configuration UI: Planned (currently edit config/app.toml directly)
Quick Start
# Install dependencies (requires Python 3.10+)
uv sync --extra faster_whisper
# Set your OpenRouter API key (bash/Linux)
export OPENROUTER_API_KEY="your-api-key-here"
# Set your OpenRouter API key (Windows PowerShell)
$Env:OPENROUTER_API_KEY="your-api-key-here"
# Run default tests (unit + integration with mock UDP)
uv run -m pytest -q
# Run the application (as administrator on Windows)
uv run -m cva.main # Optional: pass custom config path as argument
For current feature status and known limitations, see Implementation Status.
For detailed setup instructions, troubleshooting, and examples, see Getting Started Guide.
Architecture
CVA uses a three-layer execution system:
- Commands: LLM-exposed tools with rich descriptions for AI parsing
- Interactions: Multi-action sequences (e.g., startup procedures)
- Actions: Atomic DCS-BIOS operations (e.g., flip switch)
All definitions are decorator-based Python functions for type safety and IDE support.
Documentation
- Getting Started - Installation, configuration, and examples
- Definitions Guide - Creating custom commands/interactions/actions
- Architecture - Technical details and design decisions
Project Structure
dcs-cva/
├── src/cva/ # Main application code
├── config/ # Configuration and definitions
│ ├── app.toml # Main config file
│ └── definitions/ # Python-based execution definitions
├── docs/ # Documentation
├── assets/ # Sound effects and resources
└── tests/ # Test suite
Key Advantages: Natural Language Understanding
DCS-CVA breaks away from traditional phrase-based voice control systems by leveraging LLM intent parsing for truly natural cockpit communication.
Module Prompts (Highly Recommended)
Each aircraft module can define a custom prompt that teaches the LLM about:
- Aircraft-specific terminology and naming conventions
- Unique quirks and operational oddities of that aircraft
- Contextual understanding to interpret pilot intent more accurately
# modules/YourAircraft/__init__.py
module = Module("YourAircraft", prompt="""
You are controlling a [Aircraft Name] in DCS World.
- Use [aircraft-specific terms] for [standard terms]
- [Aircraft] has [unique feature/behavior]
- Common pilot phrases: [natural language patterns]
""")
Conversation Context
The system maintains short conversation history, allowing natural follow-up commands:
- "Turn on the battery" → "Now turn it back off"
- "Set radio to 251.5" → "Change it to 252.0"
- "Deploy flaps" → "Retract them"
No More Rigid Phrases
Instead of memorizing exact commands like "BATTERY MASTER SWITCH ON", pilots can use natural language:
- "Battery on please"
- "I need the battery master switch"
- "Power up the electrical system"
- "Give me battery power"
This approach dramatically reduces the learning curve and makes voice control feel natural and intuitive.
License
[To be determined]
Contributing
[To be determined]