from fastapi import FastAPI from fastapi.responses import FileResponse import subprocess import uuid import os app = FastAPI() MODEL_PATH = "/models/id_ID.onnx" @app.post("/speak") async def speak(text: str): filename = f"/tmp/{uuid.uuid4()}.wav" subprocess.run( f'echo "{text}" | piper --model {MODEL_PATH} --output_file {filename}', shell=True, check=True ) return FileResponse( filename, media_type="audio/wav", filename="speech.wav" )