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() | |