learnable-ai / src /apis /speech_processing_api.py
ishworrsubedii's picture
Added new features and improved code formatting:
32a0eda
"""
Created By: ishwor subedi
Date: 2024-08-13
"""
from fastapi import HTTPException
from fastapi.routing import APIRouter
from src.models.models import SpeechToTextRequest, TextToSpeechRequest
from src.pipeline.speech_processing_pipeline import SpeechTranscriptionPipeline
from fastapi.responses import JSONResponse
speech_transcription_router = APIRouter()
speech_transcription_pipeline = SpeechTranscriptionPipeline()
@speech_transcription_router.post("/speech_to_text")
async def speech_to_text(request: SpeechToTextRequest):
try:
transcript = speech_transcription_pipeline.speech_to_text(request.audio, request.lang)
json = {'transcript': transcript, 'status_code': 200}
return json
except Exception as e:
raise HTTPException(status_code=500, detail=str)
@speech_transcription_router.post("/text_to_speech")
async def text_to_speech(request: TextToSpeechRequest):
try:
audio_bytes = speech_transcription_pipeline.text_to_speech(request.text, request.lang, request.tld)
if not audio_bytes:
raise ValueError("Audio generation failed.")
return JSONResponse(content={"audio": audio_bytes, "status_code": 200}, status_code=200)
except Exception as e:
raise HTTPException(status_code=500, detail="Internal Server Error")