File size: 7,061 Bytes
b0b1ade
c49f2a7
7c7805e
 
 
 
a4fa720
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7c7805e
 
a4fa720
 
7c7805e
 
 
 
 
 
 
 
c482354
7c7805e
 
 
a4fa720
 
f3706eb
a4fa720
f3706eb
a4fa720
642099c
a4fa720
e487c36
a4fa720
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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
            if i<16:
             reply=replies[1]
            elif i>15 and i<31:
             reply=replies[2]
            elif i>30 and i<46:
             reply=replies[3]
            elif i>45:
             reply=replies[4]
            else:
             reply=replies[0]
        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()