Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
sachin
commited on
Commit
·
1b365ce
1
Parent(s):
7220fec
update-tansc
Browse files- src/server/main.py +11 -35
src/server/main.py
CHANGED
@@ -179,32 +179,6 @@ class VisualQueryRequest(BaseModel):
|
|
179 |
class VisualQueryResponse(BaseModel):
|
180 |
answer: str
|
181 |
|
182 |
-
# TTS Service Interface
|
183 |
-
class TTSService(ABC):
|
184 |
-
@abstractmethod
|
185 |
-
async def generate_speech(self, payload: dict) -> requests.Response:
|
186 |
-
pass
|
187 |
-
|
188 |
-
class ExternalTTSService(TTSService):
|
189 |
-
async def generate_speech(self, payload: dict) -> requests.Response:
|
190 |
-
try:
|
191 |
-
return requests.post(
|
192 |
-
settings.external_tts_url,
|
193 |
-
json=payload,
|
194 |
-
headers={"accept": "*/*", "Content-Type": "application/json"},
|
195 |
-
stream=True,
|
196 |
-
timeout=60
|
197 |
-
)
|
198 |
-
except requests.Timeout:
|
199 |
-
logger.error("External TTS API timeout")
|
200 |
-
raise HTTPException(status_code=504, detail="External TTS API timeout")
|
201 |
-
except requests.RequestException as e:
|
202 |
-
logger.error(f"External TTS API error: {str(e)}")
|
203 |
-
raise HTTPException(status_code=502, detail=f"External TTS service error: {str(e)}")
|
204 |
-
|
205 |
-
def get_tts_service() -> TTSService:
|
206 |
-
return ExternalTTSService()
|
207 |
-
|
208 |
# Endpoints with enhanced Swagger docs
|
209 |
@app.get("/v1/health",
|
210 |
summary="Check API Health",
|
@@ -304,8 +278,7 @@ async def generate_audio(
|
|
304 |
input: str = Query(..., description="Base64-encoded encrypted text to convert to speech (max 1000 characters after decryption)"),
|
305 |
response_format: str = Query("mp3", description="Audio format (ignored, defaults to mp3 for external API)"),
|
306 |
credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme),
|
307 |
-
x_session_key: str = Header(..., alias="X-Session-Key")
|
308 |
-
tts_service: TTSService = Depends(get_tts_service)
|
309 |
):
|
310 |
user_id = await get_current_user(credentials)
|
311 |
session_key = base64.b64decode(x_session_key)
|
@@ -330,12 +303,14 @@ async def generate_audio(
|
|
330 |
"user_id": user_id
|
331 |
})
|
332 |
|
|
|
333 |
payload = {
|
334 |
"text": decrypted_input
|
335 |
}
|
336 |
|
337 |
try:
|
338 |
-
response =
|
|
|
339 |
response.raise_for_status()
|
340 |
except requests.HTTPError as e:
|
341 |
logger.error(f"External TTS request failed: {str(e)}")
|
@@ -588,18 +563,19 @@ async def translate(
|
|
588 |
|
589 |
logger.debug(f"Received translation request: {len(decrypted_sentences)} sentences, src_lang: {decrypted_src_lang}, tgt_lang: {decrypted_tgt_lang}, user_id: {user_id}")
|
590 |
|
591 |
-
external_url = f"{settings.external_api_base_url}/v1/translate"
|
592 |
|
593 |
-
payload = {
|
594 |
-
"sentences": decrypted_sentences,
|
595 |
-
"src_lang": decrypted_src_lang,
|
596 |
-
"tgt_lang": decrypted_tgt_lang
|
597 |
-
}
|
598 |
|
599 |
try:
|
600 |
response = dwani.Translate.run_translate(sentences=decrypted_sentences, src_lang=decrypted_src_lang, tgt_lang=decrypted_tgt_lang)
|
601 |
|
602 |
'''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
603 |
response = requests.post(
|
604 |
external_url,
|
605 |
json=payload,
|
|
|
179 |
class VisualQueryResponse(BaseModel):
|
180 |
answer: str
|
181 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
# Endpoints with enhanced Swagger docs
|
183 |
@app.get("/v1/health",
|
184 |
summary="Check API Health",
|
|
|
278 |
input: str = Query(..., description="Base64-encoded encrypted text to convert to speech (max 1000 characters after decryption)"),
|
279 |
response_format: str = Query("mp3", description="Audio format (ignored, defaults to mp3 for external API)"),
|
280 |
credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme),
|
281 |
+
x_session_key: str = Header(..., alias="X-Session-Key")
|
|
|
282 |
):
|
283 |
user_id = await get_current_user(credentials)
|
284 |
session_key = base64.b64decode(x_session_key)
|
|
|
303 |
"user_id": user_id
|
304 |
})
|
305 |
|
306 |
+
|
307 |
payload = {
|
308 |
"text": decrypted_input
|
309 |
}
|
310 |
|
311 |
try:
|
312 |
+
response = dwani.Audio.speech(input="ಕರ್ನಾಟಕ ದ ರಾಜಧಾನಿ ಯಾವುದು", response_format="mp3")
|
313 |
+
|
314 |
response.raise_for_status()
|
315 |
except requests.HTTPError as e:
|
316 |
logger.error(f"External TTS request failed: {str(e)}")
|
|
|
563 |
|
564 |
logger.debug(f"Received translation request: {len(decrypted_sentences)} sentences, src_lang: {decrypted_src_lang}, tgt_lang: {decrypted_tgt_lang}, user_id: {user_id}")
|
565 |
|
|
|
566 |
|
|
|
|
|
|
|
|
|
|
|
567 |
|
568 |
try:
|
569 |
response = dwani.Translate.run_translate(sentences=decrypted_sentences, src_lang=decrypted_src_lang, tgt_lang=decrypted_tgt_lang)
|
570 |
|
571 |
'''
|
572 |
+
external_url = f"{settings.external_api_base_url}/v1/translate"
|
573 |
+
|
574 |
+
payload = {
|
575 |
+
"sentences": decrypted_sentences,
|
576 |
+
"src_lang": decrypted_src_lang,
|
577 |
+
"tgt_lang": decrypted_tgt_lang
|
578 |
+
}
|
579 |
response = requests.post(
|
580 |
external_url,
|
581 |
json=payload,
|