flare / tts_interface.py
ciyidogan's picture
Update tts_interface.py
b8b2edf verified
raw
history blame
1.38 kB
"""
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