Update app.py
Browse files
app.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
-
import gradio as gr, glob, os, auditok, zipfile, wave, pytube.exceptions, urllib.error, requests, json
|
| 2 |
from pytube import YouTube
|
| 3 |
from moviepy.editor import *
|
| 4 |
-
import
|
| 5 |
|
| 6 |
|
| 7 |
def download_video(url, download_as, use_ytdlp):
|
|
@@ -107,9 +107,9 @@ def split_wav_or_mp3_file(audiofileuploader, mindur2, maxdur2, name_for_split_fi
|
|
| 107 |
if audiofileuploader == None:
|
| 108 |
raise gr.Error("Audio file cannot be empty!")
|
| 109 |
if mindur2 == maxdur2:
|
| 110 |
-
raise gr.Error(f"Cannot split mindur={
|
| 111 |
elif mindur2 > maxdur2:
|
| 112 |
-
raise gr.Error(f"Cannot split mindur={
|
| 113 |
elif name_for_split_files2 == None:
|
| 114 |
raise gr.Error("Split files name cannot be empty!")
|
| 115 |
else:
|
|
@@ -303,6 +303,19 @@ def mvsep_yt_link_request(mvsep_key2, sep_dropdown2, yt_link):
|
|
| 303 |
json_format = r.json()
|
| 304 |
hash_val = json_format['data']['hash']
|
| 305 |
return f"Request sent successfully! Your hash is: {hash_val}\n\nUse the next tab to check the status of your request."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 306 |
|
| 307 |
|
| 308 |
with gr.Blocks(theme='sudeepshouche/minimalist', title="Global Dataset Maker") as app:
|
|
@@ -369,6 +382,20 @@ with gr.Blocks(theme='sudeepshouche/minimalist', title="Global Dataset Maker") a
|
|
| 369 |
[gr.Text(label="Output"), gr.File(label="Zipped files")]
|
| 370 |
)
|
| 371 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 372 |
with gr.Tab("Audio only download"):
|
| 373 |
gr.Markdown("If you want to download only the audio (to isolate bgm using UVR, etc), use this method, which will only extract audio and not split the audio.")
|
| 374 |
gr.Markdown("# Currently broken. Use Stacher in the meantime.")
|
|
@@ -556,6 +583,7 @@ with gr.Blocks(theme='sudeepshouche/minimalist', title="Global Dataset Maker") a
|
|
| 556 |
)
|
| 557 |
|
| 558 |
with gr.TabItem("Changelog"):
|
|
|
|
| 559 |
gr.Markdown("v0.99.8 - Added new MVSep models.")
|
| 560 |
gr.Markdown("v0.99.7 - Temporarily fixed an issue causing a 400 error to happen whenever a youtube url was placed.")
|
| 561 |
gr.Markdown("v0.99.6 - Added a yt link request method for MVSEP.")
|
|
|
|
| 1 |
+
import gradio as gr, glob, os, auditok, zipfile, wave, pytube.exceptions, urllib.error, requests, json, traceback, yt_dlp, tempfile
|
| 2 |
from pytube import YouTube
|
| 3 |
from moviepy.editor import *
|
| 4 |
+
from pydub import AudioSegment
|
| 5 |
|
| 6 |
|
| 7 |
def download_video(url, download_as, use_ytdlp):
|
|
|
|
| 107 |
if audiofileuploader == None:
|
| 108 |
raise gr.Error("Audio file cannot be empty!")
|
| 109 |
if mindur2 == maxdur2:
|
| 110 |
+
raise gr.Error(f"Cannot split mindur={mindur2} and maxdur={maxdur2}, min and max are the same number.")
|
| 111 |
elif mindur2 > maxdur2:
|
| 112 |
+
raise gr.Error(f"Cannot split mindur={mindur2} and maxdur={maxdur2}, mindur is higher than maxdur.")
|
| 113 |
elif name_for_split_files2 == None:
|
| 114 |
raise gr.Error("Split files name cannot be empty!")
|
| 115 |
else:
|
|
|
|
| 303 |
json_format = r.json()
|
| 304 |
hash_val = json_format['data']['hash']
|
| 305 |
return f"Request sent successfully! Your hash is: {hash_val}\n\nUse the next tab to check the status of your request."
|
| 306 |
+
|
| 307 |
+
def split_by_dur(file_upload, dur_to_cut):
|
| 308 |
+
if file_upload == None:
|
| 309 |
+
raise gr.Error("Audio file cannot be empty!")
|
| 310 |
+
try:
|
| 311 |
+
audio = AudioSegment.from_file(file_upload)
|
| 312 |
+
trimmed_audio = audio[:dur_to_cut]
|
| 313 |
+
ms_to_min = round((dur_to_cut/(1000*60))%60, 1)
|
| 314 |
+
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as temp_file:
|
| 315 |
+
trimmed_audio.export(temp_file.name, format="mp3")
|
| 316 |
+
return f"Trimmed to {ms_to_min} minutes successfully.", temp_file.name
|
| 317 |
+
except Exception as e:
|
| 318 |
+
return gr.Error(traceback.format_exc())
|
| 319 |
|
| 320 |
|
| 321 |
with gr.Blocks(theme='sudeepshouche/minimalist', title="Global Dataset Maker") as app:
|
|
|
|
| 382 |
[gr.Text(label="Output"), gr.File(label="Zipped files")]
|
| 383 |
)
|
| 384 |
|
| 385 |
+
with gr.Tab("Split audio file by duration"):
|
| 386 |
+
gr.Markdown("If you have an audio file thats too long for MVSEP (or any other use cases), use this section to split the audio by duration.")
|
| 387 |
+
with gr.Row():
|
| 388 |
+
with gr.Column():
|
| 389 |
+
with gr.Row():
|
| 390 |
+
file_upload = gr.File(file_count='single', file_types=[".wav", ".mp3"], label="WAV or MP3 file")
|
| 391 |
+
dur_to_cut = gr.Number(label="Duration to split audio (in ms). Cannot be larger than the duration of the audio file.", precision=0)
|
| 392 |
+
begin = gr.Button("Split at given duration", variant='primary')
|
| 393 |
+
begin.click(
|
| 394 |
+
split_by_dur,
|
| 395 |
+
[file_upload, dur_to_cut],
|
| 396 |
+
[gr.Text(label="Output"), gr.File(label="Trimmed audio")]
|
| 397 |
+
)
|
| 398 |
+
|
| 399 |
with gr.Tab("Audio only download"):
|
| 400 |
gr.Markdown("If you want to download only the audio (to isolate bgm using UVR, etc), use this method, which will only extract audio and not split the audio.")
|
| 401 |
gr.Markdown("# Currently broken. Use Stacher in the meantime.")
|
|
|
|
| 583 |
)
|
| 584 |
|
| 585 |
with gr.TabItem("Changelog"):
|
| 586 |
+
gr.Markdown("v0.99.9 - Added new tool: Split audio file by duration.")
|
| 587 |
gr.Markdown("v0.99.8 - Added new MVSep models.")
|
| 588 |
gr.Markdown("v0.99.7 - Temporarily fixed an issue causing a 400 error to happen whenever a youtube url was placed.")
|
| 589 |
gr.Markdown("v0.99.6 - Added a yt link request method for MVSEP.")
|