File size: 2,224 Bytes
b0b1ade
c49f2a7
7c7805e
 
 
 
62ff93b
571322c
 
 
 
7c7805e
 
571322c
a4fa720
7c7805e
 
 
 
 
 
 
 
c482354
7c7805e
 
 
571322c
d14d221
adcf092
7c7805e
2105e0b
963f3fd
aac73e4
963f3fd
aac73e4
ba51995
aac73e4
 
963f3fd
7c7805e
 
 
39e3e24
 
7c7805e
 
b0b1ade
 
 
 
7c7805e
bbb0ce5
b0b1ade
7d2b240
 
b0b1ade
 
ef798a3
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
from transformers import pipeline
asr_pipe = pipeline("automatic-speech-recognition", model="Abdullah17/whisper-small-urdu")
from difflib import SequenceMatcher

# List of commands
commands = [
    "نمائندے ایجنٹ نمائندہ",
    "  سم  ایکٹیویٹ ",
    " سم  بلاک بند ",
    "موبائل پیکیجز انٹرنیٹ پیکیج",
    " چالان جمع ",
]
replies = [
  "کیا آپ پیکیجز کی معلومات حاصل کرنا چاہتے ہیں؟","کیا آپ سم بلاک کرنا چاہتے ہیں؟","کیا آپ سم ایکٹیویٹ کرنا چاہتے ہیں؟" ,"کیا آپ نمائندے سے بات کرنا چاہتے ہیں؟",
    "کیا آپ چالان جمع کروانا چاہتے ہیں؟"
]
# Function to find the most similar command
def find_most_similar_command(statement, command_list):
    best_match = None
    highest_similarity = 0
    i=0
    for command in command_list:
        similarity = SequenceMatcher(None, statement, command).ratio()
        print(similarity)
        if similarity > highest_similarity:
            highest_similarity = similarity
            best_match = command
            reply=replies[i]
        i+=1

    return best_match,reply
def transcribe_the_command(audio):
      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(file_name)

      transcript = asr_pipe(file_name)["text"]
      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"),
    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()