TTS / app.py
Percy3822's picture
Create app.py
3a99d34 verified
raw
history blame contribute delete
917 Bytes
import io, math, wave, uuid
from fastapi import FastAPI
from pydantic import BaseModel
from fastapi.responses import FileResponse
app = FastAPI(title="TTS Space (stub)")
class SpeakIn(BaseModel):
text: str
def _beep_wav(duration_s=0.4, sr=16000, freq=440):
n = int(duration_s*sr)
buf = bytearray()
for i in range(n):
val = int(32767*0.2*math.sin(2*math.pi*freq*i/sr))
buf += val.to_bytes(2, byteorder="little", signed=True)
path = f"/tmp/{uuid.uuid4().hex}.wav"
with wave.open(path, "wb") as w:
w.setnchannels(1)
w.setsampwidth(2)
w.setframerate(sr)
w.writeframes(buf)
return path
@app.post("/speak")
def speak(inp: SpeakIn):
# Stub: ignore text, return a short beep so Brain can play audio.
path = _beep_wav()
return {"audio_path": path}
@app.get("/file/{name}")
def file(name: str):
return FileResponse(f"/tmp/{name}")