bhupesh-sf's picture
first commit
f8ba6bf verified
"""
DungeonMaster AI - Voice Package
ElevenLabs integration for voice synthesis and narration.
This module provides:
- VoiceClient: Production-ready ElevenLabs client with circuit breaker
- NarrationProcessor: Text preprocessing for optimal TTS
- Voice profiles: Pre-configured voices for DM, NPCs, and monsters
- Comprehensive error handling and graceful degradation
Example Usage:
```python
from src.voice import VoiceClient, NarrationProcessor, VoiceType
# Initialize client
client = VoiceClient()
await client.initialize()
# Process and synthesize
processor = NarrationProcessor()
processed = processor.process_for_tts("Roll a 1d20 for HP!")
if client.is_available:
audio = await client.synthesize(processed, VoiceType.DM)
```
"""
# Exceptions
from src.voice.exceptions import (
VoiceAPIError,
VoiceAuthenticationError,
VoiceCircuitBreakerOpenError,
VoiceConfigurationError,
VoiceIntegrationError,
VoiceNotFoundError,
VoiceQuotaExhaustedError,
VoiceRateLimitError,
VoiceSynthesisError,
VoiceUnavailableError,
)
# Models
from src.voice.models import (
NarrationResult,
ProcessedNarration,
SynthesisRequest,
SynthesisResult,
TextSegment,
VoiceCircuitState,
VoiceModelType,
VoiceProfile,
VoiceServiceState,
VoiceServiceStatus,
VoiceSynthesisSettings,
VoiceType,
)
# Voice Profiles
from src.voice.voice_profiles import (
VOICE_PROFILES,
get_all_profiles,
get_voice_id,
get_voice_profile,
get_voice_profile_by_name,
get_voice_settings,
reset_profiles_cache,
select_voice_for_context,
select_voice_from_game_context,
select_voice_from_npc_data,
)
# Text Processing
from src.voice.text_processor import NarrationProcessor
# Voice Client
from src.voice.elevenlabs_client import (
AudioCache,
RateLimiter,
VoiceCircuitBreaker,
VoiceClient,
)
__all__ = [
# Exceptions
"VoiceIntegrationError",
"VoiceAPIError",
"VoiceRateLimitError",
"VoiceQuotaExhaustedError",
"VoiceAuthenticationError",
"VoiceUnavailableError",
"VoiceCircuitBreakerOpenError",
"VoiceNotFoundError",
"VoiceSynthesisError",
"VoiceConfigurationError",
# Models - Enums
"VoiceType",
"VoiceCircuitState",
"VoiceServiceState",
"VoiceModelType",
# Models - Settings
"VoiceSynthesisSettings",
"VoiceProfile",
# Models - Requests/Results
"SynthesisRequest",
"SynthesisResult",
"TextSegment",
"ProcessedNarration",
"NarrationResult",
# Models - Status
"VoiceServiceStatus",
# Voice Profiles
"VOICE_PROFILES",
"get_voice_profile",
"get_voice_profile_by_name",
"get_voice_id",
"get_voice_settings",
"get_all_profiles",
"reset_profiles_cache",
"select_voice_for_context",
"select_voice_from_npc_data",
"select_voice_from_game_context",
# Text Processing
"NarrationProcessor",
# Voice Client
"VoiceClient",
"VoiceCircuitBreaker",
"RateLimiter",
"AudioCache",
]