sachin commited on
Commit
381b034
·
1 Parent(s): 12d0077

add-lanugae

Browse files
Files changed (1) hide show
  1. src/server/main.py +4 -75
src/server/main.py CHANGED
@@ -635,6 +635,7 @@ async def extract_text(
635
  request: Request,
636
  file: UploadFile = File(..., description="Encrypted PDF file to extract text from"),
637
  page_number: int = Query(1, description="Page number to extract text from (1-based indexing)"),
 
638
  credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme),
639
  x_session_key: str = Header(..., alias="X-Session-Key")
640
  ):
@@ -649,6 +650,7 @@ async def extract_text(
649
  try:
650
  encrypted_content = await file.read()
651
  decrypted_content = decrypt_data(encrypted_content, session_key)
 
652
  except Exception as e:
653
  logger.error(f"PDF decryption failed: {str(e)}")
654
  raise HTTPException(status_code=400, detail="Invalid encrypted PDF")
@@ -657,6 +659,7 @@ async def extract_text(
657
  "endpoint": "/v1/extract-text",
658
  "file_name": file.filename,
659
  "page_number": page_number,
 
660
  "client_ip": get_remote_address(request),
661
  "user_id": user_id
662
  })
@@ -664,7 +667,7 @@ async def extract_text(
664
  start_time = time()
665
  try:
666
  # Call external API
667
- external_url = f"{settings.external_pdf_api_base_url}/extract-text/?page_number={page_number}"
668
  files = {"file": (file.filename, decrypted_content, file.content_type)}
669
 
670
  response = requests.post(
@@ -894,80 +897,6 @@ async def speech_to_speech(
894
  logger.error(f"External speech-to-speech API error: {str(e)}", extra={"user_id": user_id})
895
  raise HTTPException(status_code=500, detail=f"External API error: {str(e)}")
896
 
897
- '''
898
- @app.post("/v1/speech_to_speech_v2",
899
- summary="Speech-to-Speech Conversion",
900
- description="Convert input encrypted speech to processed speech in the specified encrypted language by calling an external speech-to-speech API. Rate limited to 5 requests per minute per user. Requires authentication and X-Session-Key header.",
901
- tags=["Audio"],
902
- responses={
903
- 200: {"description": "Audio stream", "content": {"audio/mp3": {"example": "Binary audio data"}}},
904
- 400: {"description": "Invalid input, encrypted audio, or language"},
905
- 401: {"description": "Unauthorized - Token required"},
906
- 429: {"description": "Rate limit exceeded"},
907
- 504: {"description": "External API timeout"},
908
- 500: {"description": "External API error"}
909
- })
910
- async def speech_to_speech_v2(
911
- request: Request,
912
- file: UploadFile = File(..., description="Encrypted audio file to process"),
913
- language: str = Query(..., description="Base64-encoded encrypted language of the audio (kannada, hindi, tamil after decryption)"),
914
- ) -> StreamingResponse:
915
-
916
- # Decrypt the language
917
- try:
918
- encrypted_language = language
919
- decrypted_language = encrypted_language
920
- except Exception as e:
921
- logger.error(f"Language decryption failed: {str(e)}")
922
- raise HTTPException(status_code=400, detail="Invalid encrypted language")
923
-
924
- # Validate language
925
- allowed_languages = [lang.value for lang in SupportedLanguage]
926
- if decrypted_language not in allowed_languages:
927
- raise HTTPException(status_code=400, detail=f"Language must be one of {allowed_languages}")
928
-
929
- logger.info("Processing speech-to-speech request", extra={
930
- "endpoint": "/v1/speech_to_speech",
931
- "audio_filename": file.filename,
932
- "language": decrypted_language,
933
- "client_ip": get_remote_address(request),
934
- })
935
-
936
- try:
937
- encrypted_content = await file.read()
938
- file_content = encrypted_content
939
- files = {"file": (file.filename, file_content, file.content_type)}
940
- external_url = f"{settings.external_api_base_url}/v1/speech_to_speech?language={decrypted_language}"
941
-
942
- response = requests.post(
943
- external_url,
944
- files=files,
945
- headers={"accept": "application/json"},
946
- stream=True,
947
- timeout=60
948
- )
949
- response.raise_for_status()
950
-
951
- headers = {
952
- "Content-Disposition": f"inline; filename=\"speech.mp3\"",
953
- "Cache-Control": "no-cache",
954
- "Content-Type": "audio/mp3"
955
- }
956
-
957
- return StreamingResponse(
958
- response.iter_content(chunk_size=8192),
959
- media_type="audio/mp3",
960
- headers=headers
961
- )
962
-
963
- except requests.Timeout:
964
- logger.error("External speech-to-speech API timed out")
965
- raise HTTPException(status_code=504, detail="External API timeout")
966
- except requests.RequestException as e:
967
- logger.error(f"External speech-to-speech API error: {str(e)}")
968
- raise HTTPException(status_code=500, detail=f"External API error: {str(e)}")
969
-
970
- '''
971
  if __name__ == "__main__":
972
  parser = argparse.ArgumentParser(description="Run the FastAPI server.")
973
  parser.add_argument("--port", type=int, default=settings.port, help="Port to run the server on.")
 
635
  request: Request,
636
  file: UploadFile = File(..., description="Encrypted PDF file to extract text from"),
637
  page_number: int = Query(1, description="Page number to extract text from (1-based indexing)"),
638
+ encrypted_language: str = Query(..., description="Base64-encoded encrypted language of the audio (kannada, hindi, tamil after decryption)"),
639
  credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme),
640
  x_session_key: str = Header(..., alias="X-Session-Key")
641
  ):
 
650
  try:
651
  encrypted_content = await file.read()
652
  decrypted_content = decrypt_data(encrypted_content, session_key)
653
+ decrpyted_language = decrypt_data(encrypted_language, session_key)
654
  except Exception as e:
655
  logger.error(f"PDF decryption failed: {str(e)}")
656
  raise HTTPException(status_code=400, detail="Invalid encrypted PDF")
 
659
  "endpoint": "/v1/extract-text",
660
  "file_name": file.filename,
661
  "page_number": page_number,
662
+ "decrpyted_language" : decrpyted_language,
663
  "client_ip": get_remote_address(request),
664
  "user_id": user_id
665
  })
 
667
  start_time = time()
668
  try:
669
  # Call external API
670
+ external_url = f"{settings.external_pdf_api_base_url}/extract-text/?page_number={page_number}&language={decrpyted_language}"
671
  files = {"file": (file.filename, decrypted_content, file.content_type)}
672
 
673
  response = requests.post(
 
897
  logger.error(f"External speech-to-speech API error: {str(e)}", extra={"user_id": user_id})
898
  raise HTTPException(status_code=500, detail=f"External API error: {str(e)}")
899
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
900
  if __name__ == "__main__":
901
  parser = argparse.ArgumentParser(description="Run the FastAPI server.")
902
  parser.add_argument("--port", type=int, default=settings.port, help="Port to run the server on.")