Spaces:
Running
Running
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() | |