Spaces:
Sleeping
Sleeping
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) | |
# Custom CSS for better mobile layout | |
custom_css = """ | |
#interface-container { | |
max-width: 100%; | |
margin: auto; | |
padding: 10px; | |
font-family: Arial, sans-serif; | |
} | |
.audio { | |
max-width: 100%; | |
} | |
""" | |
# Create the Gradio app with improved layout | |
interface = gr.Interface( | |
fn=compress_audio, | |
inputs=[ | |
gr.Audio(label="Upload Audio File", type="filepath", elem_id="audio-input"), | |
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.", | |
css=custom_css, | |
allow_flagging="never", | |
) | |
# Launch the app | |
interface.launch() | |