| from __future__ import annotations | |
| import logging | |
| from fastapi import APIRouter, Depends, Query | |
| from fastapi.responses import Response | |
| from app.api.auth import get_current_user_id | |
| from app.pipelines.tts import generate_speech | |
| router = APIRouter(tags=["tts"]) | |
| log = logging.getLogger(__name__) | |
| async def tts_endpoint( | |
| text: str = Query(max_length=500), | |
| voice: str = Query(default="Kore"), | |
| _user_id: int = Depends(get_current_user_id), | |
| ) -> Response: | |
| """Generate speech audio via Gemini Live. Cached: same text+voice = instant replay.""" | |
| ogg = await generate_speech(text, voice) | |
| return Response(content=ogg, media_type="audio/ogg") | |