Spaces:
Sleeping
Sleeping
| from typing import Optional | |
| from fastapi import HTTPException | |
| import logging | |
| import io | |
| from gtts import gTTS | |
| # Configure logging | |
| logger = logging.getLogger(__name__) | |
| def text_to_speech(text: str, language: str = "en", slow: bool = False) -> bytes: | |
| """ | |
| Convert text to speech using gTTS (Google Text-to-Speech) | |
| Args: | |
| text (str): The text to convert to speech | |
| language (str): Language code (default: "en") | |
| slow (bool): Whether to speak slowly (default: False) | |
| Returns: | |
| bytes: MP3 audio data | |
| """ | |
| try: | |
| tts = gTTS(text=text, lang=language, slow=slow) | |
| mp3_fp = io.BytesIO() | |
| tts.write_to_fp(mp3_fp) | |
| mp3_fp.seek(0) | |
| return mp3_fp.read() | |
| except Exception as e: | |
| logger.error(f"Error in text-to-speech conversion: {e}") | |
| raise HTTPException(status_code=500, detail="Error generating speech") |