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()