import gradio as gr from pydub import AudioSegment def compress_audio(input_audio_path, compression_rate=128, output_name="compressed_audio.mp3"): """ Compress an audio file. Args: input_audio_path: Path to the input audio file. compression_rate: Desired bitrate for compression (in kbps). output_name: Desired name for the compressed file. Returns: Compressed audio file path. """ try: # Load the audio file using pydub audio = AudioSegment.from_file(input_audio_path) # Ensure output name has the .mp3 extension if not output_name.endswith(".mp3"): output_name += ".mp3" # Export the compressed audio audio.export(output_name, format="mp3", bitrate=f"{compression_rate}k") return output_name except Exception as e: return str(e) # Create the Gradio app interface = gr.Interface( fn=compress_audio, inputs=[ gr.Audio(label="Upload Audio File", type="filepath"), gr.Slider(32, 320, step=16, label="Compression Rate (kbps)", value=128), gr.Textbox(label="Output File Name", placeholder="compressed_audio.mp3"), ], outputs=gr.File(label="Download Compressed Audio"), title="Audio Compressor", description="Upload an audio file, set the compression rate, and specify a name for the compressed file.", allow_flagging="never", ) # Launch the app interface.launch()