Spaces:
Runtime error
Runtime error
| """ | |
| Text-to-Speech Generator - Converts bot responses to audio | |
| Uses gTTS with professional customer support voice | |
| """ | |
| from gtts import gTTS | |
| from pathlib import Path | |
| from datetime import datetime | |
| import json | |
| class TTSGenerator: | |
| """Generates audio files for bot responses""" | |
| def __init__(self, output_dir: str = "data/audio_output"): | |
| """Initialize TTS generator | |
| Args: | |
| output_dir: Directory to save audio files | |
| """ | |
| self.output_dir = Path(output_dir) | |
| self.output_dir.mkdir(parents=True, exist_ok=True) | |
| def generate_audio(self, text: str, customer_id: str, session_id: str) -> str: | |
| """ | |
| Generate audio file from text | |
| Args: | |
| text: Response text to convert to speech | |
| customer_id: Customer ID for file organization | |
| session_id: Session ID for context | |
| Returns: | |
| Path to generated audio file | |
| """ | |
| try: | |
| # Create filename with timestamp | |
| timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") | |
| filename = f"bot_response_{customer_id}_{session_id[:8]}_{timestamp}.mp3" | |
| filepath = self.output_dir / filename | |
| # Generate speech with gTTS | |
| # Using slower speech rate (slow=True) for clarity | |
| # Language: English (US) for professional tone | |
| tts = gTTS( | |
| text=text, | |
| lang='en', | |
| slow=True, # Slower speech for clarity | |
| tld='com' # Top-level domain for better quality | |
| ) | |
| # Save to file | |
| tts.save(str(filepath)) | |
| print(f"[TTS] Generated audio: {filename} ({len(text)} chars)") | |
| return str(filepath) | |
| except Exception as e: | |
| print(f"[TTS ERROR] Failed to generate audio: {str(e)}") | |
| return "" | |
| def generate_greeting(self, customer_id: str) -> str: | |
| """Generate audio for greeting message""" | |
| greeting_text = "Hello! How can I help you today?" | |
| timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") | |
| filename = f"greeting_{customer_id}_{timestamp}.mp3" | |
| filepath = self.output_dir / filename | |
| try: | |
| tts = gTTS( | |
| text=greeting_text, | |
| lang='en', | |
| slow=True, | |
| tld='com' | |
| ) | |
| tts.save(str(filepath)) | |
| print(f"[TTS] Generated greeting: {filename}") | |
| return str(filepath) | |
| except Exception as e: | |
| print(f"[TTS ERROR] Failed to generate greeting: {str(e)}") | |
| return "" | |
| # Global TTS generator instance | |
| _tts_generator = None | |
| def get_tts_generator() -> TTSGenerator: | |
| """Get or create global TTS generator""" | |
| global _tts_generator | |
| if _tts_generator is None: | |
| _tts_generator = TTSGenerator() | |
| return _tts_generator | |