|
import json |
|
import whisper |
|
import requests |
|
|
|
medium_en = whisper.load_model("medium.en") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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",[]) |
|
|
|
|
|
|
|
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) |
|
|
|
|
|
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() |