Hev832 commited on
Commit
34ba0e8
·
verified ·
1 Parent(s): 085034f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -11
app.py CHANGED
@@ -3,6 +3,8 @@ import yt_dlp
3
  import numpy as np
4
  import librosa
5
  import soundfile as sf
 
 
6
 
7
  # Function to download audio from YouTube and save it as a WAV file
8
  def download_youtube_audio(url, audio_name):
@@ -134,28 +136,39 @@ class Slicer:
134
  # Function to slice and save audio chunks
135
  def slice_audio(file_path, audio_name):
136
  audio, sr = librosa.load(file_path, sr=None, mono=False)
 
137
  slicer = Slicer(sr=sr, threshold=-40, min_length=5000, min_interval=500, hop_size=10, max_sil_kept=500)
138
  chunks = slicer.slice(audio)
139
  for i, chunk in enumerate(chunks):
140
  if len(chunk.shape) > 1:
141
  chunk = chunk.T
142
  sf.write(f'dataset/{audio_name}/split_{i}.wav', chunk, sr)
143
- return f"Audio sliced and saved in dataset/{audio_name}/"
 
 
 
 
 
 
 
 
 
 
 
144
 
145
  # Gradio interface
146
  def process_audio(url, audio_name):
147
  file_path = download_youtube_audio(url, audio_name)
148
- result = slice_audio(file_path, audio_name)
149
- return result
 
150
 
151
  with gr.Blocks() as demo:
152
- gr.Markdown("RVC DATASET MAKER 2.0")
153
- with gr.Tabs():
154
- with gr.Row():
155
- url_input = gr.Textbox(label="YouTube URL")
156
- audio_name_input = gr.Textbox(label="Audio Name")
157
- result_output = gr.Textbox(label="Output Directory")
158
- run_button = gr.Button("Download and Slice Audio")
159
- run_button.click(fn=process_audio, inputs=[url_input, audio_name_input], outputs=result_output)
160
 
161
  demo.launch()
 
3
  import numpy as np
4
  import librosa
5
  import soundfile as sf
6
+ import os
7
+ import zipfile
8
 
9
  # Function to download audio from YouTube and save it as a WAV file
10
  def download_youtube_audio(url, audio_name):
 
136
  # Function to slice and save audio chunks
137
  def slice_audio(file_path, audio_name):
138
  audio, sr = librosa.load(file_path, sr=None, mono=False)
139
+ os.makedirs(f'dataset/{audio_name}', exist_ok=True)
140
  slicer = Slicer(sr=sr, threshold=-40, min_length=5000, min_interval=500, hop_size=10, max_sil_kept=500)
141
  chunks = slicer.slice(audio)
142
  for i, chunk in enumerate(chunks):
143
  if len(chunk.shape) > 1:
144
  chunk = chunk.T
145
  sf.write(f'dataset/{audio_name}/split_{i}.wav', chunk, sr)
146
+ return f"dataset/{audio_name}/"
147
+
148
+ # Function to zip the dataset directory
149
+ def zip_directory(directory_path):
150
+ zip_file = f"{directory_path.rstrip('/').rstrip('\\')}.zip"
151
+ with zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
152
+ for root, dirs, files in os.walk(directory_path):
153
+ for file in files:
154
+ file_path = os.path.join(root, file)
155
+ arcname = os.path.relpath(file_path, start=directory_path)
156
+ zipf.write(file_path, arcname)
157
+ return zip_file
158
 
159
  # Gradio interface
160
  def process_audio(url, audio_name):
161
  file_path = download_youtube_audio(url, audio_name)
162
+ dataset_path = slice_audio(file_path, audio_name)
163
+ zip_file = zip_directory(dataset_path)
164
+ return zip_file
165
 
166
  with gr.Blocks() as demo:
167
+ url_input = gr.Textbox(label="YouTube URL")
168
+ audio_name_input = gr.Textbox(label="Audio Name")
169
+ result_output = gr.File(label="Download Sliced Audio Zip")
170
+
171
+ run_button = gr.Button("Download and Slice Audio")
172
+ run_button.click(fn=process_audio, inputs=[url_input, audio_name_input], outputs=result_output)
 
 
173
 
174
  demo.launch()