|
import os |
|
import gradio as gr |
|
from pydub import AudioSegment |
|
|
|
|
|
def merge_pcm_to_mp3(pcm_files): |
|
combined = AudioSegment.silent(duration=0) |
|
|
|
for pcm_file in pcm_files: |
|
try: |
|
|
|
audio = AudioSegment.from_file(pcm_file.name, format="raw", frame_rate=16000, channels=1, sample_width=2) |
|
|
|
|
|
combined += audio |
|
|
|
except Exception as e: |
|
print(f"Error processing {pcm_file.name}: {str(e)}") |
|
continue |
|
|
|
|
|
output_mp3_path = "combined_output.mp3" |
|
combined.export(output_mp3_path, format="mp3") |
|
|
|
return output_mp3_path |
|
|
|
|
|
def process_files(pcm_files): |
|
output_mp3 = merge_pcm_to_mp3(pcm_files) |
|
return output_mp3 |
|
|
|
|
|
with gr.Blocks() as demo: |
|
with gr.Row(): |
|
file_input = gr.File(label="Upload PCM files", file_count="multiple", file_types=["pcm"]) |
|
file_output = gr.File(label="Download Combined MP3") |
|
|
|
convert_button = gr.Button("Convert and Merge to MP3") |
|
convert_button.click(fn=process_files, inputs=file_input, outputs=file_output) |
|
|
|
|
|
demo.launch() |
|
|