from fastapi import FastAPI import asyncio from src.pipeline.pipeline import Pipeline from fastapi.routing import APIRouter from fastapi.responses import StreamingResponse from fastapi.exceptions import HTTPException import io conversation=APIRouter() pipe=Pipeline() @conversation.get("/record") async def record_and_transcribe(): transcribed_text=pipe.speech_to_text_() return {"transcription": transcribed_text} @conversation.get("/text_response") async def get_text_response(): response=await pipe.text_to_text_() return {"response": response} @conversation.get("/speech_response") async def get_speech_response(): try: response_=await pipe.text_to_speech_() if not response_: raise HTTPException(status_code=400, detail="Failed to generate audio.") return StreamingResponse(io.BytesIO(response_), media_type="audio/wav") except ValueError as e: raise HTTPException(status_code=400, detail=str(e))