import gradio as gr import time from playsound import playsound # Morse code dictionary MORSE_CODE_DICT = { 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..' } DOT_SOUND_FILE = "dot.wav" DASH_SOUND_FILE = "dash.wav" def play_morse_code(letter): morse_code = MORSE_CODE_DICT.get(letter.upper(), '') output = [] for symbol in morse_code: if symbol == '.': playsound(DOT_SOUND_FILE) output.append('•') elif symbol == '-': playsound(DASH_SOUND_FILE) output.append('—') time.sleep(0.2) # Pause between symbols return ''.join(output) def main(letter): if letter.upper() not in MORSE_CODE_DICT: return "Invalid input. Please enter a letter from A-Z." visual_representation = play_morse_code(letter) return f"Morse Code for {letter.upper()}: {visual_representation}" def interface(): return gr.Interface( fn=main, inputs=gr.Textbox(label="Enter a letter (A-Z):"), outputs=gr.Textbox(label="Morse Code Output:"), live=True ) if __name__ == "__main__": app = interface() app.launch()