File size: 3,490 Bytes
9225441
 
 
 
 
 
2213d3a
 
8359c9a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9225441
8359c9a
 
 
 
 
 
 
 
 
9225441
 
 
 
 
 
 
 
8359c9a
 
 
 
 
 
 
 
 
 
 
 
 
2213d3a
8359c9a
 
 
 
 
 
 
 
 
 
 
 
2213d3a
8359c9a
 
 
 
 
 
 
 
 
 
 
 
 
 
9225441
8359c9a
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import json
import tempfile
import shutil
temp_dir = tempfile.mkdtemp()
global ckpt_temp_file
global audio_temp_file
global config_temp_file
###################################################
from utils.hparams import hparams
from preprocessing.data_gen_utils import get_pitch_parselmouth,get_pitch_crepe
import numpy as np
import matplotlib.pyplot as plt
import IPython.display as ipd
import utils
import librosa
import torchcrepe
from infer import *
import logging
from infer_tools.infer_tool import *
import io
clip_completed = False
def render_audio(ckpt_temp_file, config_temp_file, audio_temp_file, title):
    logging.getLogger('numba').setLevel(logging.WARNING)
    title = int(title)
    project_name = "Unnamed"
    model_path = ckpt_temp_file
    config_path= config_temp_file
    hubert_gpu=True
    svc_model = Svc(project_name,config_path,hubert_gpu, model_path)
    print('model loaded')
    wav_fn = audio_temp_file
    demoaudio, sr = librosa.load(wav_fn)
    key = title # 音高调整,支持正负(半音)
    # 加速倍数

    pndm_speedup = 20
    wav_gen='queeeeee.wav'#直接改后缀可以保存不同格式音频,如flac可无损压缩
    f0_tst, f0_pred, audio = run_clip(svc_model,file_path=wav_fn, key=key, acc=pndm_speedup, use_crepe=True, use_pe=True, thre=0.05,
                                        use_gt_mel=False, add_noise_step=500,project_name=project_name,out_path=wav_gen)
    clip_completed = True
    if clip_completed:
    # If the 'run_clip' function has completed, use the st.audio function to show an audio player for the file stored in the 'wav_gen' variable
        st.audio(wav_gen)
#######################################################
st.set_page_config(
    page_title="DiffSVC Render",
    page_icon="🧊",
    initial_sidebar_state="expanded",
)
############
st.title('DIFF-SVC Render')

###CKPT LOADER
ckpt = st.file_uploader("Choose your CKPT", type= 'ckpt')
# Check if user uploaded a CKPT file
if ckpt is not None:
  #TEMP FUNCTION
  with tempfile.NamedTemporaryFile(mode="wb", suffix='.ckpt', delete=False) as temp:
    # Get the file contents as bytes
    bytes_data = ckpt.getvalue()
    # Write the bytes to the temporary file
    temp.write(bytes_data)
    ckpt_temp_file = temp.name
    # Print the temporary file name
    print(temp.name)

###CONFIG LOADER
config = st.file_uploader("Choose your config", type= 'yaml')
if config is not None:
  #TEMP FUNCTION
  with tempfile.NamedTemporaryFile(mode="wb", suffix='.yaml', delete=False) as temp:
    # Get the file contents as bytes
    bytes_data = config.getvalue()
    # Write the bytes to the temporary file
    temp.write(bytes_data)
    config_temp_file = temp.name
    # Print the temporary file name
    print(temp.name)

##WAV LOADER
audio = st.file_uploader("Choose your audio", type= 'wav' or 'mp3')
if audio is not None:
  #TEMP FUNCTION
  with tempfile.NamedTemporaryFile(mode="wb", suffix='.wav', delete=False) as temp:
    # Get the file contents as bytes
    bytes_data = audio.getvalue()
    # Write the bytes to the temporary file
    temp.write(bytes_data)
    audio_temp_file = temp.name
    # Print the temporary file name
    print(temp.name)
title = st.text_input('Key', '0')
gflag = st.slider('Gender Flag', 0.80, 1.20, 1.00)    

###DOWNLOAD
st.button('Render', on_click=render_audio(ckpt_temp_file, config_temp_file, audio_temp_file, title))