Spaces:
Paused
Paused
| import gradio as gr | |
| from pydub import AudioSegment | |
| from pydub.generators import Sine | |
| import tempfile | |
| def morse_to_audio(morse_code, frequency=700, dot_duration=100): | |
| # Morse code dictionary | |
| morse_dict = { | |
| '.': dot_duration, | |
| '-': dot_duration * 3, | |
| ' ': dot_duration * 7 # space between words | |
| } | |
| # Create an empty audio segment | |
| audio = AudioSegment.silent(duration=0) | |
| # Generate the audio for each symbol | |
| for symbol in morse_code: | |
| if symbol in morse_dict: | |
| duration = morse_dict[symbol] | |
| if symbol != ' ': | |
| tone = Sine(frequency).to_audio_segment(duration=duration) | |
| silence = AudioSegment.silent(duration=dot_duration) # silence between dots/dashes | |
| audio += tone + silence | |
| else: | |
| audio += AudioSegment.silent(duration=duration) # silence between words | |
| # Save the audio to a temporary file | |
| temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".wav") | |
| audio.export(temp_file.name, format="wav") | |
| return temp_file.name | |
| with gr.Blocks(title="MTA", theme="nevreal/blues") as demo: | |
| gr.Markdown(" # Morse To Audio") | |
| with gr.Column(): | |
| morse_input = gr.Textbox(label="Enter Morse Code") | |
| freq_slider = gr.Slider(minimum=300, maximum=1000, value=700, label="Frequency (Hz)") | |
| dot_duration_slider = gr.Slider(minimum=50, maximum=500, value=100, label="Dot Duration (ms)") | |
| convert_button = gr.Button("Convert to Audio") | |
| with gr.Column(): | |
| audio_output = gr.Audio(label="Morse Code Audio") | |
| convert_button.click(morse_to_audio, inputs=[morse_input, freq_slider, dot_duration_slider], outputs=audio_output) | |
| demo.launch() | |