File size: 3,245 Bytes
b0b1ade
4f9e8c5
 
1a63ef2
528afc6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c576782
1a63ef2
4f9e8c5
1a63ef2
 
 
 
 
 
 
 
4f9e8c5
 
 
 
7c7805e
 
 
 
b2f9adc
 
7c7805e
b2f9adc
7c7805e
 
 
ec27395
b2f9adc
adcf092
7c7805e
348afcf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c2d790b
4f9e8c5
 
 
 
 
348afcf
4f9e8c5
 
348afcf
015f95f
 
c2d790b
348afcf
bfc18e8
015f95f
 
 
 
348afcf
4f9e8c5
 
 
b0b1ade
 
7c7805e
348afcf
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
from transformers import pipeline
asr_pipe = pipeline("automatic-speech-recognition", model="Abdullah17/whisper-small-urdu")
from difflib import SequenceMatcher
import json
import socket

def get_local_ip():
    try:
        # Create a socket connection to a remote host (here, google.com)
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))
        local_ip = s.getsockname()[0]
        s.close()
        return local_ip
    except Exception as e:
        print(f"Error getting local IP: {e}")
        return None

local_ip = get_local_ip()
if local_ip:
    print(f"Local IP Address: {local_ip}")
else:
    print("Local IP could not be determined.")

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
    i=0
    for sub_list in command_list:
     for command in sub_list:
        similarity = SequenceMatcher(None, statement, command).ratio()
        print(i,"similarity",similarity)
        if similarity > highest_similarity:
            highest_similarity = similarity
            best_match = command
            reply=i
     i+=1

    return best_match,reply


def send_data_to_db(order_id,col_name):
    import requests

# API endpoint URL
    url = 'https://pizzahut.softinfix.tech/api/save_order/'+order_id

# Data to send (in dictionary format)
    data = {
    col_name: col_value,
    }

# Send POST request with data
    response = requests.post(url, data=data)

# Print response
    print(response.status_code)
    print(response.text)

def transcribe_the_command(audio,menu_id,order_id,db_col="0"):

      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 = asr_pipe(file_name)["text"]
      if menu_id == "transcript_only":
        reply=transcript
        print(reply)
      else:
        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="id"),,gr.inputs.Textbox(label="col_name(optional)")],
    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()