File size: 1,319 Bytes
32a0eda
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""
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")