AI-API / main.py
Anicet
update: minors corrections
cc36729
Raw
History Blame Contribute Delete
3.27 kB
from fastapi import FastAPI, Request, HTTPException
from functions.translation import translateText
from functions.speech_to_text import speechToText
from functions.text_to_speech import textToSpeech
from language.moore.mos_stt import mooreSTT
from language.moore.mos_tts import mooreTTS
from language.dioula.dyu_stt import dioulaSTT
from language.dioula.dyu_tts import dioulaTTS
app = FastAPI(
version='1.0.0',
root_path='/api',
)
@app.post("/nllb/translateText")
async def translate(request: Request):
body: dict = await request.json()
try:
text = body.get('text')
sourceLang = body.get('sourceLang')
targetLang = body.get('targetLang')
translatedText = translateText(text=text, sourceLang=sourceLang, targetLang=targetLang)
return { 'translatedText': translatedText }
except Exception as e:
print(f"Translate error: {e}")
raise HTTPException(status_code=400, detail=f"Translate error: {e}")
@app.post("/whisper/speechToText")
async def whisperSpeechToText(request: Request):
body: dict = await request.json()
try:
audioBase64 = body.get('audioBase64')
sourceLang = body.get('sourceLang')
data = speechToText(audioBase64=audioBase64, sourceLang=sourceLang)
return data
except Exception as e:
print(f"STT error: {e}")
raise HTTPException(status_code=400, detail=f"STT error: {e}")
@app.post("/edge/textToSpeech")
async def edgeTextToSpeech(request: Request):
body: dict = await request.json()
try:
text = body.get('text')
voice = body.get('voice')
audioBase64 = await textToSpeech(text=text, voice=voice)
return { 'audioBase64': audioBase64 }
except Exception as e:
print(f"TTS error: {e}")
raise HTTPException(status_code=400, detail=f"TTS error: {e}")
@app.post("/mms/speechToText")
async def mmsSpeechToText(request: Request):
body: dict = await request.json()
try:
audioBase64 = body.get('audioBase64')
sourceLang = body.get('sourceLang')
if sourceLang == 'mos':
data = mooreSTT(audioBase64=audioBase64)
return data
elif sourceLang == 'dyu':
data = dioulaSTT(audioBase64=audioBase64)
return data
else:
raise HTTPException(status_code=400, detail=f"STT error: Invalid sourceLang - {sourceLang}")
except Exception as e:
print(f"STT error: {e}")
raise HTTPException(status_code=400, detail=f"STT error: {e}")
@app.post("/mms/textToSpeech")
async def mmsTextToSpeech(request: Request):
body: dict = await request.json()
try:
text = body.get('text')
sourceLang = body.get('sourceLang')
if sourceLang == 'mos':
audioBase64 = mooreTTS(text=text)
return { 'audioBase64': audioBase64 }
elif sourceLang == 'dyu':
audioBase64 = dioulaTTS(text=text)
return { 'audioBase64': audioBase64 }
else:
raise HTTPException(status_code=400, detail=f"STT error: Invalid sourceLang - {sourceLang}")
except Exception as e:
print(f"TTS error: {e}")
raise HTTPException(status_code=400, detail=f"TTS error: {e}")