malek-messaoudii
Update chat voice part
a71355d
raw
history blame
1.25 kB
from fastapi import APIRouter, HTTPException
from fastapi.responses import FileResponse
from models.tts import TTSRequest
from services.tts_service import text_to_speech
from pathlib import Path
router = APIRouter(prefix="/tts", tags=["Text To Speech"])
@router.post("/")
async def generate_tts(request: TTSRequest):
"""
Convert text to speech (English only)
"""
try:
# Generate audio
audio_path = text_to_speech(
text=request.text,
voice=request.voice,
fmt=request.format
)
# Verify file exists
if not Path(audio_path).exists():
raise HTTPException(status_code=500, detail="Audio file generation failed")
# Determine MIME type
media_type = "audio/wav" if request.format == "wav" else "audio/mpeg"
# Return audio file
return FileResponse(
path=audio_path,
filename=f"speech.{request.format}",
media_type=media_type,
headers={
"Content-Disposition": f"attachment; filename=speech.{request.format}"
}
)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))