import json import whisper import requests medium_en = whisper.load_model("medium.en") # def send_results_to_api(data, result_url): # headers = {"Content-Type": "application/json"} # response = requests.post(result_url, json= data, headers= headers) # if response.status_code == 200: # return response.json() # else: # return {"error": f"Failed to send results to API: {response.status_code}"} def process_audio(params): try: params = json.loads(params) except json.JSONDecodeError as e: return {"error": f"Invalid JSON input: {e.msg} at line {e.lineno} column {e.colno}"} audio_files = params.get("urls",[]) if not params.get("normalfileID",[]): file_ids = [None]*len(audio_files) else: file_ids = params.get("normalfileID",[]) # api = params.get("api","") # job_id = params.get("job_id","") solutions=[] print(params,"\n",audio_files) for audio, file_id in zip(audio_files,file_ids): result_medium = medium_en.transcribe(audio) text = result_medium['text'] answer_dict = {} answer_dict.update({'audioURL':audio, 'solutions':text, "qcUserId": None, "normalfileID": file_id }) solutions.append(answer_dict) # result_url = f"{api}/{job_id}" # send_results_to_api(solutions, result_url) print(json.dumps({"solutions":solutions})) return json.dumps({"solutions":solutions}) import gradio as gr inputt = gr.Textbox(label="Parameters in json format Eg. {'audio_files':['file1.mp3','file2.wav'], 'api':'https://api.example.com', 'job_id':'1001'}") outputt = gr.JSON() application = gr.Interface(fn=process_audio, inputs= inputt, outputs = outputt, title = "Audio Transcription with API Integration") application.launch()