File size: 2,389 Bytes
761c854
5670b85
761c854
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1fe563d
 
 
 
761c854
 
 
 
 
 
 
 
 
5670b85
761c854
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
from transformers import pipeline
# asr_pipe = pipeline("automatic-speech-recognition", model="Abdullah17/whisper-small-urdu")
transcript_pipe = pipeline("automatic-speech-recognition", model="ihanif/whisper-medium-urdu")
from difflib import SequenceMatcher
import json




with open("tasks.json", "r",encoding="utf-8") as json_file:
    urdu_data = json.load(json_file)
# List of commands
# commands = [
#     "نمائندے ایجنٹ نمائندہ",
#     "  سم  ایکٹیویٹ ",
#     " سم  بلاک بند ",
#     "موبائل پیکیجز انٹرنیٹ پیکیج",
#     " چالان جمع چلان",
#     " گانا "
# ]
# replies = [
# 1,2,
# ]
# Function to find the most similar command
def find_most_similar_command(statement, command_list):
    best_match = None
    highest_similarity = 0
    for index,file_list in command_list.items():
     for command in  file_list:
        similarity = SequenceMatcher(None, statement, command).ratio()
        print(index,"similarity",similarity)
        if similarity > highest_similarity:
            highest_similarity = similarity
            best_match = command
            reply=index
    if highest_similarity > 0.7:
     return best_match,reply
    else:
     return "repeat_command",404

def transcribe_the_command(audio,menu_id,abc):
      import soundfile as sf
      sample_rate, audio_data = audio
      file_name = "recorded_audio.wav"
      sf.write(file_name, audio_data, sample_rate)
    # Convert stereo to mono by averaging the two channels
      print(menu_id)

      transcript = transcript_pipe(file_name)["text"]
      commands=urdu_data[menu_id]
      print(commands)
      most_similar_command,reply = find_most_similar_command(transcript, commands)
      print(f"Given Statement: {transcript}")
      print(f"Most Similar Command: {most_similar_command}\n")
      print(reply)
      return reply
# get_text_from_voice("urdu.wav")
import gradio as gr


iface = gr.Interface(
    fn=transcribe_the_command,
    inputs=[gr.inputs.Audio(label="Recorded Audio",source="microphone"),gr.inputs.Textbox(label="menu_id"),gr.inputs.Textbox(label="dfs")],
    outputs="text",
    title="Whisper Small Urdu Command",
    description="Realtime demo for Urdu speech recognition using a fine-tuned Whisper small model and outputting the estimated command on the basis of speech transcript.",
)

iface.launch()