Spaces:
Edmond98
/
Running on A100

Afrinetwork7 commited on
Commit
521a4ba
1 Parent(s): f84bdcd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -11
app.py CHANGED
@@ -115,6 +115,7 @@ def extract_audio_from_file(input_bytes):
115
 
116
  @app.post("/transcribe")
117
  async def transcribe_audio(request: AudioRequest):
 
118
  try:
119
  input_bytes = base64.b64decode(request.audio)
120
  audio_array, sample_rate = extract_audio_from_file(input_bytes)
@@ -127,20 +128,23 @@ async def transcribe_audio(request: AudioRequest):
127
  audio_array = librosa.resample(audio_array, orig_sr=sample_rate, target_sr=ASR_SAMPLING_RATE)
128
 
129
  result = transcribe(audio_array, request.language)
130
- return JSONResponse(content={"transcription": result})
 
131
  except Exception as e:
132
  logger.error(f"Error in transcribe_audio: {str(e)}", exc_info=True)
133
  error_details = {
134
  "error": str(e),
135
  "traceback": traceback.format_exc()
136
  }
 
137
  return JSONResponse(
138
  status_code=500,
139
- content={"message": "An error occurred during transcription", "details": error_details}
140
  )
141
 
142
  @app.post("/synthesize")
143
  async def synthesize_speech(request: TTSRequest):
 
144
  logger.info(f"Synthesize request received: text='{request.text}', language='{request.language}', speed={request.speed}")
145
  try:
146
  # Extract the ISO code from the full language name
@@ -204,7 +208,8 @@ async def synthesize_speech(request: TTSRequest):
204
  url = f"https://s3.{S3_REGION}.amazonaws.com/{S3_BUCKET}/{filename}"
205
  logger.info(f"Public URL generated: {url}")
206
 
207
- return JSONResponse(content={"audio_url": url})
 
208
 
209
  except NoCredentialsError:
210
  logger.error("AWS credentials not available or invalid")
@@ -215,9 +220,10 @@ async def synthesize_speech(request: TTSRequest):
215
 
216
  except ValueError as ve:
217
  logger.error(f"ValueError in synthesize_speech: {str(ve)}", exc_info=True)
 
218
  return JSONResponse(
219
  status_code=400,
220
- content={"message": "Invalid input", "details": str(ve)}
221
  )
222
  except Exception as e:
223
  logger.error(f"Unexpected error in synthesize_speech: {str(e)}", exc_info=True)
@@ -226,57 +232,67 @@ async def synthesize_speech(request: TTSRequest):
226
  "type": type(e).__name__,
227
  "traceback": traceback.format_exc()
228
  }
 
229
  return JSONResponse(
230
  status_code=500,
231
- content={"message": "An unexpected error occurred during speech synthesis", "details": error_details}
232
  )
233
  finally:
234
  logger.info("Synthesize request completed")
235
 
236
  @app.post("/identify")
237
  async def identify_language(request: AudioRequest):
 
238
  try:
239
  input_bytes = base64.b64decode(request.audio)
240
  audio_array, sample_rate = extract_audio_from_file(input_bytes)
241
  result = identify(audio_array)
242
- return JSONResponse(content={"language_identification": result})
 
243
  except Exception as e:
244
  logger.error(f"Error in identify_language: {str(e)}", exc_info=True)
245
  error_details = {
246
  "error": str(e),
247
  "traceback": traceback.format_exc()
248
  }
 
249
  return JSONResponse(
250
  status_code=500,
251
- content={"message": "An error occurred during language identification", "details": error_details}
252
  )
253
 
254
  @app.get("/asr_languages")
255
  async def get_asr_languages():
 
256
  try:
257
- return JSONResponse(content=ASR_LANGUAGES)
 
258
  except Exception as e:
259
  logger.error(f"Error in get_asr_languages: {str(e)}", exc_info=True)
260
  error_details = {
261
  "error": str(e),
262
  "traceback": traceback.format_exc()
263
  }
 
264
  return JSONResponse(
265
  status_code=500,
266
- content={"message": "An error occurred while fetching ASR languages", "details": error_details}
267
  )
268
 
269
  @app.get("/tts_languages")
270
  async def get_tts_languages():
 
271
  try:
272
- return JSONResponse(content=TTS_LANGUAGES)
 
273
  except Exception as e:
274
  logger.error(f"Error in get_tts_languages: {str(e)}", exc_info=True)
275
  error_details = {
276
  "error": str(e),
277
  "traceback": traceback.format_exc()
278
  }
 
279
  return JSONResponse(
280
  status_code=500,
281
- content={"message": "An error occurred while fetching TTS languages", "details": error_details}
282
  )
 
115
 
116
  @app.post("/transcribe")
117
  async def transcribe_audio(request: AudioRequest):
118
+ start_time = time.time()
119
  try:
120
  input_bytes = base64.b64decode(request.audio)
121
  audio_array, sample_rate = extract_audio_from_file(input_bytes)
 
128
  audio_array = librosa.resample(audio_array, orig_sr=sample_rate, target_sr=ASR_SAMPLING_RATE)
129
 
130
  result = transcribe(audio_array, request.language)
131
+ processing_time = time.time() - start_time
132
+ return JSONResponse(content={"transcription": result, "processing_time_seconds": processing_time})
133
  except Exception as e:
134
  logger.error(f"Error in transcribe_audio: {str(e)}", exc_info=True)
135
  error_details = {
136
  "error": str(e),
137
  "traceback": traceback.format_exc()
138
  }
139
+ processing_time = time.time() - start_time
140
  return JSONResponse(
141
  status_code=500,
142
+ content={"message": "An error occurred during transcription", "details": error_details, "processing_time_seconds": processing_time}
143
  )
144
 
145
  @app.post("/synthesize")
146
  async def synthesize_speech(request: TTSRequest):
147
+ start_time = time.time()
148
  logger.info(f"Synthesize request received: text='{request.text}', language='{request.language}', speed={request.speed}")
149
  try:
150
  # Extract the ISO code from the full language name
 
208
  url = f"https://s3.{S3_REGION}.amazonaws.com/{S3_BUCKET}/{filename}"
209
  logger.info(f"Public URL generated: {url}")
210
 
211
+ processing_time = time.time() - start_time
212
+ return JSONResponse(content={"audio_url": url, "processing_time_seconds": processing_time})
213
 
214
  except NoCredentialsError:
215
  logger.error("AWS credentials not available or invalid")
 
220
 
221
  except ValueError as ve:
222
  logger.error(f"ValueError in synthesize_speech: {str(ve)}", exc_info=True)
223
+ processing_time = time.time() - start_time
224
  return JSONResponse(
225
  status_code=400,
226
+ content={"message": "Invalid input", "details": str(ve), "processing_time_seconds": processing_time}
227
  )
228
  except Exception as e:
229
  logger.error(f"Unexpected error in synthesize_speech: {str(e)}", exc_info=True)
 
232
  "type": type(e).__name__,
233
  "traceback": traceback.format_exc()
234
  }
235
+ processing_time = time.time() - start_time
236
  return JSONResponse(
237
  status_code=500,
238
+ content={"message": "An unexpected error occurred during speech synthesis", "details": error_details, "processing_time_seconds": processing_time}
239
  )
240
  finally:
241
  logger.info("Synthesize request completed")
242
 
243
  @app.post("/identify")
244
  async def identify_language(request: AudioRequest):
245
+ start_time = time.time()
246
  try:
247
  input_bytes = base64.b64decode(request.audio)
248
  audio_array, sample_rate = extract_audio_from_file(input_bytes)
249
  result = identify(audio_array)
250
+ processing_time = time.time() - start_time
251
+ return JSONResponse(content={"language_identification": result, "processing_time_seconds": processing_time})
252
  except Exception as e:
253
  logger.error(f"Error in identify_language: {str(e)}", exc_info=True)
254
  error_details = {
255
  "error": str(e),
256
  "traceback": traceback.format_exc()
257
  }
258
+ processing_time = time.time() - start_time
259
  return JSONResponse(
260
  status_code=500,
261
+ content={"message": "An error occurred during language identification", "details": error_details, "processing_time_seconds": processing_time}
262
  )
263
 
264
  @app.get("/asr_languages")
265
  async def get_asr_languages():
266
+ start_time = time.time()
267
  try:
268
+ processing_time = time.time() - start_time
269
+ return JSONResponse(content={"languages": ASR_LANGUAGES, "processing_time_seconds": processing_time})
270
  except Exception as e:
271
  logger.error(f"Error in get_asr_languages: {str(e)}", exc_info=True)
272
  error_details = {
273
  "error": str(e),
274
  "traceback": traceback.format_exc()
275
  }
276
+ processing_time = time.time() - start_time
277
  return JSONResponse(
278
  status_code=500,
279
+ content={"message": "An error occurred while fetching ASR languages", "details": error_details, "processing_time_seconds": processing_time}
280
  )
281
 
282
  @app.get("/tts_languages")
283
  async def get_tts_languages():
284
+ start_time = time.time()
285
  try:
286
+ processing_time = time.time() - start_time
287
+ return JSONResponse(content={"languages": TTS_LANGUAGES, "processing_time_seconds": processing_time})
288
  except Exception as e:
289
  logger.error(f"Error in get_tts_languages: {str(e)}", exc_info=True)
290
  error_details = {
291
  "error": str(e),
292
  "traceback": traceback.format_exc()
293
  }
294
+ processing_time = time.time() - start_time
295
  return JSONResponse(
296
  status_code=500,
297
+ content={"message": "An error occurred while fetching TTS languages", "details": error_details, "processing_time_seconds": processing_time}
298
  )