stream / app.py
abdullahalioo's picture
Update app.py
3ea2c55 verified
Raw
History Blame Contribute Delete
1.12 kB
import numpy as np
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import io
from gtts import gTTS
import tempfile
import wave
app = FastAPI()
def generate_speech_pcm():
text = "Hello, this is ESP32 audio test"
tts = gTTS(text=text, lang='en')
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as f:
tts.save(f.name)
# Convert MP3 to PCM using wave fallback
import subprocess
wav_file = f.name.replace(".mp3", ".wav")
subprocess.run([
"ffmpeg", "-y",
"-i", f.name,
"-ar", "24000",
"-ac", "1",
"-f", "wav",
wav_file
], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
with wave.open(wav_file, "rb") as w:
frames = w.readframes(w.getnframes())
return frames
@app.get("/audio")
def stream_audio():
return StreamingResponse(
io.BytesIO(generate_speech_pcm()),
media_type="application/octet-stream"
)
import uvicorn
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)