datasetcuttertest / audio_processor.py
diablofx's picture
Update audio_processor.py
0e5c9f0
raw
history blame
1.51 kB
from pydub import AudioSegment
import os
import zipfile
import tempfile
def cut_audio(input_path, output_path, interval):
audio = AudioSegment.from_file(input_path)
duration = len(audio)
cuts = [audio[i:i + interval] for i in range(0, duration, interval)]
with tempfile.TemporaryDirectory() as temp_dir:
for i, cut in enumerate(cuts):
cut.export(os.path.join(temp_dir, f'cut_{i}.wav'), format="wav")
# Create a zip file
zip_file_path = os.path.join(output_path, "cuts.zip")
with zipfile.ZipFile(zip_file_path, 'w') as zipf:
for root, _, files in os.walk(temp_dir):
for file in files:
zipf.write(os.path.join(root, file), os.path.basename(file))
return zip_file_path
def process_audio(audio, interval):
# Convert the interval to an integer
interval = int(interval)
# Temporary directory to store the processed files
temp_output_dir = '/content' # This is writable in Hugging Face Spaces
# Process the audio file and get the path to the zip file
zip_file_path = cut_audio(audio.name, temp_output_dir, interval)
# Move the zip file to a publicly accessible location
public_zip_path = f'/content/{os.path.basename(zip_file_path)}'
os.rename(zip_file_path, public_zip_path)
# Create a download link
download_link = f'<a href="{public_zip_path}" download>Click here to download</a>'
# Return the download link as HTML
return download_link