File size: 1,491 Bytes
70c64d3 432c8f5 70c64d3 432c8f5 70c64d3 432c8f5 70c64d3 d28b0cb 70c64d3 432c8f5 70c64d3 432c8f5 70c64d3 432c8f5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 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",[])
# api = params.get("api","")
# job_id = params.get("job_id","")
solutions=[]
for audio in audio_files:
result_medium = medium_en.transcribe(audio)
text = result_medium['text']
answer_dict = {}
answer_dict.update({'url':audio, 'answer':text})
solutions.append(answer_dict)
# result_url = f"{api}/{job_id}"
# send_results_to_api(solutions, result_url)
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() |