21 lines
572 B
Python
21 lines
572 B
Python
from fastapi import APIRouter, Response
|
|
from pydantic import BaseModel
|
|
from core.queue_client import push_job, await_result
|
|
|
|
router = APIRouter()
|
|
|
|
class SpeechRequest(BaseModel):
|
|
model: str
|
|
input: str
|
|
voice: str = "auto"
|
|
language: str | None = None
|
|
format: str = "wav"
|
|
voice_sample_url: str | None = None
|
|
voice_sample_base64: str | None = None
|
|
|
|
@router.post("/speech")
|
|
async def speech(req: SpeechRequest):
|
|
job_id = push_job(req.dict())
|
|
audio_bytes, mime = await_result(job_id)
|
|
return Response(content=audio_bytes, media_type=mime)
|