Spaces:
Paused
Paused
- app.py +103 -62
- yt-dlp.conf +0 -1
app.py
CHANGED
|
@@ -14,28 +14,42 @@ from pydantic import BaseModel
|
|
| 14 |
from ultimate_rvc.common import AUDIO_DIR, MODELS_DIR, TEMP_DIR
|
| 15 |
from ultimate_rvc.core.generate.song_cover import get_named_song_dirs
|
| 16 |
from ultimate_rvc.core.generate.speech import get_edge_tts_voice_names
|
| 17 |
-
from ultimate_rvc.core.manage.audio import (
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
| 21 |
from ultimate_rvc.core.manage.config import get_config_names, load_config
|
| 22 |
-
from ultimate_rvc.core.manage.models import (
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
|
|
|
|
|
|
| 26 |
from ultimate_rvc.web.common import initialize_dropdowns
|
| 27 |
-
from ultimate_rvc.web.config.component import (
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
from ultimate_rvc.web.tabs.manage.audio import render as render_audio_tab
|
| 40 |
from ultimate_rvc.web.tabs.manage.models import render as render_models_tab
|
| 41 |
from ultimate_rvc.web.tabs.manage.settings import render as render_settings_tab
|
|
@@ -47,38 +61,60 @@ if TYPE_CHECKING:
|
|
| 47 |
from functools import partial
|
| 48 |
|
| 49 |
import gradio as gr
|
| 50 |
-
from ultimate_rvc.core.common import (
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
from ultimate_rvc.core.manage.audio import get_saved_output_audio
|
| 75 |
from ultimate_rvc.typing_extra import EmbedderModel
|
| 76 |
-
from ultimate_rvc.web.common import (
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
from ultimate_rvc.web.typing_extra import ConcurrencyId
|
| 83 |
|
| 84 |
type StrPath = str | PathLike[str]
|
|
@@ -319,8 +355,6 @@ class DatasetType(StrEnum):
|
|
| 319 |
EXISTING_DATASET = "Use existing dataset"
|
| 320 |
|
| 321 |
|
| 322 |
-
|
| 323 |
-
|
| 324 |
class EmbedderModel(StrEnum):
|
| 325 |
"""Enumeration of audio embedding models."""
|
| 326 |
|
|
@@ -1919,7 +1953,9 @@ class SpeechGenerationConfig(GenerationConfig):
|
|
| 1919 |
total_config = load_config(config_name, TotalConfig) if config_name else TotalConfig()
|
| 1920 |
|
| 1921 |
|
| 1922 |
-
def render_song_cover_multi_step_tab(
|
|
|
|
|
|
|
| 1923 |
"""
|
| 1924 |
Render "Generate song cover - multi-step generation" tab.
|
| 1925 |
|
|
@@ -2727,7 +2763,9 @@ def run_newpipeline(
|
|
| 2727 |
validate_model(custom_embedder_model, Entity.CUSTOM_EMBEDDER_MODEL)
|
| 2728 |
display_progress("[~] Retrieving song...", 0 / 9, progress_bar)
|
| 2729 |
song, song_dir = retrieve_song(source, cookiefile=cookiefile)
|
| 2730 |
-
display_progress(
|
|
|
|
|
|
|
| 2731 |
vocals_track, instrumentals_track = separate_audio(
|
| 2732 |
song,
|
| 2733 |
song_dir,
|
|
@@ -2735,7 +2773,7 @@ def run_newpipeline(
|
|
| 2735 |
SegmentSize.SEG_2048,
|
| 2736 |
)
|
| 2737 |
display_progress(
|
| 2738 |
-
"[~] Separating main vocals from backup vocals...",
|
| 2739 |
2 / 9,
|
| 2740 |
progress_bar,
|
| 2741 |
)
|
|
@@ -2745,14 +2783,14 @@ def run_newpipeline(
|
|
| 2745 |
SeparationModel.UVR_MDX_NET_KARA_2,
|
| 2746 |
SegmentSize.SEG_2048,
|
| 2747 |
)
|
| 2748 |
-
display_progress("[~] De-noising vocals...", 3 / 9, progress_bar)
|
| 2749 |
noise_track, clean_track = separate_audio(
|
| 2750 |
clean_track,
|
| 2751 |
song_dir,
|
| 2752 |
SeparationModel.UVR_DeNoise,
|
| 2753 |
SegmentSize.SEG_2048,
|
| 2754 |
)
|
| 2755 |
-
display_progress("[~] De-reverbing vocals...", 4 / 9, progress_bar)
|
| 2756 |
reverb_track, vocals_dereverb_track = separate_audio(
|
| 2757 |
main_vocals_track,
|
| 2758 |
song_dir,
|
|
@@ -2760,7 +2798,7 @@ def run_newpipeline(
|
|
| 2760 |
SegmentSize.SEG_2048,
|
| 2761 |
)
|
| 2762 |
|
| 2763 |
-
display_progress("[~] Converting vocals...", 5 / 9, progress_bar)
|
| 2764 |
converted_vocals_track = convert(
|
| 2765 |
audio_track=vocals_dereverb_track,
|
| 2766 |
directory=song_dir,
|
|
@@ -2782,7 +2820,7 @@ def run_newpipeline(
|
|
| 2782 |
sid=sid,
|
| 2783 |
content_type=RVCContentType.VOCALS,
|
| 2784 |
)
|
| 2785 |
-
display_progress("[~] Post-processing vocals...", 6 / 9, progress_bar)
|
| 2786 |
effected_vocals_track = postprocess(
|
| 2787 |
converted_vocals_track,
|
| 2788 |
song_dir,
|
|
@@ -2791,13 +2829,17 @@ def run_newpipeline(
|
|
| 2791 |
dry_level,
|
| 2792 |
damping,
|
| 2793 |
)
|
| 2794 |
-
display_progress(
|
|
|
|
|
|
|
| 2795 |
shifted_instrumentals_track = pitch_shift(
|
| 2796 |
instrumentals_track,
|
| 2797 |
song_dir,
|
| 2798 |
n_semitones,
|
| 2799 |
)
|
| 2800 |
-
display_progress(
|
|
|
|
|
|
|
| 2801 |
shifted_backup_vocals_track = pitch_shift(
|
| 2802 |
backup_vocals_track,
|
| 2803 |
song_dir,
|
|
@@ -3053,7 +3095,6 @@ def render_song_cover_one_click_tab(
|
|
| 3053 |
generate_btn.click(
|
| 3054 |
partial(
|
| 3055 |
exception_harness(
|
| 3056 |
-
info_msg="New pipeline engaged expect bugs.",
|
| 3057 |
run_newpipeline,
|
| 3058 |
info_msg="Song cover generated successfully!",
|
| 3059 |
),
|
|
|
|
| 14 |
from ultimate_rvc.common import AUDIO_DIR, MODELS_DIR, TEMP_DIR
|
| 15 |
from ultimate_rvc.core.generate.song_cover import get_named_song_dirs
|
| 16 |
from ultimate_rvc.core.generate.speech import get_edge_tts_voice_names
|
| 17 |
+
from ultimate_rvc.core.manage.audio import (
|
| 18 |
+
get_audio_datasets,
|
| 19 |
+
get_named_audio_datasets,
|
| 20 |
+
get_saved_output_audio,
|
| 21 |
+
get_saved_speech_audio,
|
| 22 |
+
)
|
| 23 |
from ultimate_rvc.core.manage.config import get_config_names, load_config
|
| 24 |
+
from ultimate_rvc.core.manage.models import (
|
| 25 |
+
get_custom_embedder_model_names,
|
| 26 |
+
get_custom_pretrained_model_names,
|
| 27 |
+
get_training_model_names,
|
| 28 |
+
get_voice_model_names,
|
| 29 |
+
)
|
| 30 |
from ultimate_rvc.web.common import initialize_dropdowns
|
| 31 |
+
from ultimate_rvc.web.config.component import (
|
| 32 |
+
AnyComponentConfig,
|
| 33 |
+
AudioConfig,
|
| 34 |
+
CheckboxConfig,
|
| 35 |
+
ComponentConfig,
|
| 36 |
+
DropdownConfig,
|
| 37 |
+
NumberConfig,
|
| 38 |
+
RadioConfig,
|
| 39 |
+
SliderConfig,
|
| 40 |
+
TextboxConfig,
|
| 41 |
+
)
|
| 42 |
+
from ultimate_rvc.web.config.tab import (
|
| 43 |
+
SongGenerationConfig,
|
| 44 |
+
SpeechGenerationConfig,
|
| 45 |
+
TrainingConfig,
|
| 46 |
+
)
|
| 47 |
+
from ultimate_rvc.web.tabs.generate.speech.multi_step_generation import (
|
| 48 |
+
render as render_speech_multi_step_tab,
|
| 49 |
+
)
|
| 50 |
+
from ultimate_rvc.web.tabs.generate.speech.one_click_generation import (
|
| 51 |
+
render as render_speech_one_click_tab,
|
| 52 |
+
)
|
| 53 |
from ultimate_rvc.web.tabs.manage.audio import render as render_audio_tab
|
| 54 |
from ultimate_rvc.web.tabs.manage.models import render as render_models_tab
|
| 55 |
from ultimate_rvc.web.tabs.manage.settings import render as render_settings_tab
|
|
|
|
| 61 |
from functools import partial
|
| 62 |
|
| 63 |
import gradio as gr
|
| 64 |
+
from ultimate_rvc.core.common import (
|
| 65 |
+
INTERMEDIATE_AUDIO_BASE_DIR,
|
| 66 |
+
OUTPUT_AUDIO_DIR,
|
| 67 |
+
copy_file_safe,
|
| 68 |
+
display_progress,
|
| 69 |
+
get_file_hash,
|
| 70 |
+
json_dump,
|
| 71 |
+
json_load,
|
| 72 |
+
validate_model,
|
| 73 |
+
validate_url,
|
| 74 |
+
)
|
| 75 |
+
from ultimate_rvc.core.exceptions import (
|
| 76 |
+
Entity,
|
| 77 |
+
InvalidLocationError,
|
| 78 |
+
Location,
|
| 79 |
+
NotFoundError,
|
| 80 |
+
NotProvidedError,
|
| 81 |
+
UIMessage,
|
| 82 |
+
YoutubeUrlError,
|
| 83 |
+
)
|
| 84 |
+
from ultimate_rvc.core.generate.common import (
|
| 85 |
+
convert,
|
| 86 |
+
get_unique_base_path,
|
| 87 |
+
mix_audio,
|
| 88 |
+
validate_audio_dir_exists,
|
| 89 |
+
validate_audio_file_exists,
|
| 90 |
+
wavify,
|
| 91 |
+
)
|
| 92 |
+
from ultimate_rvc.core.generate.song_cover import (
|
| 93 |
+
get_named_song_dirs,
|
| 94 |
+
get_song_cover_name,
|
| 95 |
+
run_pipeline,
|
| 96 |
+
)
|
| 97 |
+
from ultimate_rvc.core.generate.typing_extra import (
|
| 98 |
+
EffectedVocalsMetaData,
|
| 99 |
+
FileMetaData,
|
| 100 |
+
MixedAudioType,
|
| 101 |
+
PitchShiftMetaData,
|
| 102 |
+
RVCAudioMetaData,
|
| 103 |
+
SeparatedAudioMetaData,
|
| 104 |
+
SongSourceType,
|
| 105 |
+
)
|
| 106 |
from ultimate_rvc.core.manage.audio import get_saved_output_audio
|
| 107 |
from ultimate_rvc.typing_extra import EmbedderModel
|
| 108 |
+
from ultimate_rvc.web.common import (
|
| 109 |
+
PROGRESS_BAR,
|
| 110 |
+
exception_harness,
|
| 111 |
+
toggle_intermediate_audio,
|
| 112 |
+
toggle_visibility,
|
| 113 |
+
toggle_visible_component,
|
| 114 |
+
update_dropdowns,
|
| 115 |
+
update_output_name,
|
| 116 |
+
update_value,
|
| 117 |
+
)
|
| 118 |
from ultimate_rvc.web.typing_extra import ConcurrencyId
|
| 119 |
|
| 120 |
type StrPath = str | PathLike[str]
|
|
|
|
| 355 |
EXISTING_DATASET = "Use existing dataset"
|
| 356 |
|
| 357 |
|
|
|
|
|
|
|
| 358 |
class EmbedderModel(StrEnum):
|
| 359 |
"""Enumeration of audio embedding models."""
|
| 360 |
|
|
|
|
| 1953 |
total_config = load_config(config_name, TotalConfig) if config_name else TotalConfig()
|
| 1954 |
|
| 1955 |
|
| 1956 |
+
def render_song_cover_multi_step_tab(
|
| 1957 |
+
total_config: TotalConfig, cookiefile: str | None = None
|
| 1958 |
+
) -> None:
|
| 1959 |
"""
|
| 1960 |
Render "Generate song cover - multi-step generation" tab.
|
| 1961 |
|
|
|
|
| 2763 |
validate_model(custom_embedder_model, Entity.CUSTOM_EMBEDDER_MODEL)
|
| 2764 |
display_progress("[~] Retrieving song...", 0 / 9, progress_bar)
|
| 2765 |
song, song_dir = retrieve_song(source, cookiefile=cookiefile)
|
| 2766 |
+
display_progress(
|
| 2767 |
+
"[~] newpipeline: Separating vocals from instrumentals...", 1 / 9, progress_bar
|
| 2768 |
+
)
|
| 2769 |
vocals_track, instrumentals_track = separate_audio(
|
| 2770 |
song,
|
| 2771 |
song_dir,
|
|
|
|
| 2773 |
SegmentSize.SEG_2048,
|
| 2774 |
)
|
| 2775 |
display_progress(
|
| 2776 |
+
"[~] newpipeline: Separating main vocals from backup vocals...",
|
| 2777 |
2 / 9,
|
| 2778 |
progress_bar,
|
| 2779 |
)
|
|
|
|
| 2783 |
SeparationModel.UVR_MDX_NET_KARA_2,
|
| 2784 |
SegmentSize.SEG_2048,
|
| 2785 |
)
|
| 2786 |
+
display_progress("[~] newpipeline: De-noising vocals...", 3 / 9, progress_bar)
|
| 2787 |
noise_track, clean_track = separate_audio(
|
| 2788 |
clean_track,
|
| 2789 |
song_dir,
|
| 2790 |
SeparationModel.UVR_DeNoise,
|
| 2791 |
SegmentSize.SEG_2048,
|
| 2792 |
)
|
| 2793 |
+
display_progress("[~] newpipeline: De-reverbing vocals...", 4 / 9, progress_bar)
|
| 2794 |
reverb_track, vocals_dereverb_track = separate_audio(
|
| 2795 |
main_vocals_track,
|
| 2796 |
song_dir,
|
|
|
|
| 2798 |
SegmentSize.SEG_2048,
|
| 2799 |
)
|
| 2800 |
|
| 2801 |
+
display_progress("[~] newpipeline: Converting vocals...", 5 / 9, progress_bar)
|
| 2802 |
converted_vocals_track = convert(
|
| 2803 |
audio_track=vocals_dereverb_track,
|
| 2804 |
directory=song_dir,
|
|
|
|
| 2820 |
sid=sid,
|
| 2821 |
content_type=RVCContentType.VOCALS,
|
| 2822 |
)
|
| 2823 |
+
display_progress("[~] newpipeline: Post-processing vocals...", 6 / 9, progress_bar)
|
| 2824 |
effected_vocals_track = postprocess(
|
| 2825 |
converted_vocals_track,
|
| 2826 |
song_dir,
|
|
|
|
| 2829 |
dry_level,
|
| 2830 |
damping,
|
| 2831 |
)
|
| 2832 |
+
display_progress(
|
| 2833 |
+
"[~] newpipeline: Pitch-shifting instrumentals...", 7 / 9, progress_bar
|
| 2834 |
+
)
|
| 2835 |
shifted_instrumentals_track = pitch_shift(
|
| 2836 |
instrumentals_track,
|
| 2837 |
song_dir,
|
| 2838 |
n_semitones,
|
| 2839 |
)
|
| 2840 |
+
display_progress(
|
| 2841 |
+
"[~] newpipeline: Pitch-shifting backup vocals...", 8 / 9, progress_bar
|
| 2842 |
+
)
|
| 2843 |
shifted_backup_vocals_track = pitch_shift(
|
| 2844 |
backup_vocals_track,
|
| 2845 |
song_dir,
|
|
|
|
| 3095 |
generate_btn.click(
|
| 3096 |
partial(
|
| 3097 |
exception_harness(
|
|
|
|
| 3098 |
run_newpipeline,
|
| 3099 |
info_msg="Song cover generated successfully!",
|
| 3100 |
),
|
yt-dlp.conf
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
/data/yt-dlp.conf
|
|
|
|
|
|