flare / tts /tts_interface.py
ciyidogan's picture
Upload 6 files
9874d4d verified
"""
TTS Interface for Flare
"""
from abc import ABC, abstractmethod
from typing import Optional, Dict, Any, Set
from datetime import datetime
import sys
class TTSInterface(ABC):
"""Abstract base class for TTS providers"""
def __init__(self):
self.preprocessing_flags: Set[str] = set()
self.supports_ssml: bool = False
@abstractmethod
async def synthesize(self, text: str, voice_id: Optional[str] = None, **kwargs) -> bytes:
"""
Convert text to speech and return audio bytes
Args:
text: Text to convert to speech
voice_id: Optional voice ID specific to the provider
**kwargs: Additional provider-specific parameters
Returns:
Audio data as bytes (MP3 or WAV format)
"""
pass
@abstractmethod
def get_supported_voices(self) -> Dict[str, str]:
"""Get list of supported voices"""
pass
@abstractmethod
def get_provider_name(self) -> str:
"""Get provider name for logging"""
pass
def get_preprocessing_flags(self) -> Set[str]:
"""Get preprocessing flags for this provider"""
return self.preprocessing_flags
def supports_ssml_format(self) -> bool:
"""Check if provider supports SSML"""
return self.supports_ssml