Spaces:
Build error
Build error
import streamlit as st | |
from Inference import Inferencer | |
def app_diffsingerkr(): | |
if not 'diffsingerkr_duration' in st.session_state.keys(): | |
st.session_state.diffsingerkr_duration = '' | |
if not 'diffsingerkr_lyric' in st.session_state.keys(): | |
st.session_state.diffsingerkr_lyric = '' | |
if not 'diffsingerkr_note' in st.session_state.keys(): | |
st.session_state.diffsingerkr_note = '' | |
if not 'inferencer' in st.session_state.keys(): | |
st.session_state.inferencer = Inferencer( | |
hp_path= 'Hyper_Parameters.yaml', | |
checkpoint_path= 'Checkpoint/S_200000.pt', | |
batch_size= 1 | |
) | |
st.title('DiffSinger-KR') | |
st.markdown('* This code is an implementation of DiffSinger for Korean.') | |
st.markdown('* When music score which is note, duration, and lyric information are entered, singing voices are synthesized accordingly.') | |
st.markdown('* Due to the range of the trained dataset, the supported notes are between 65 and 89.') | |
st.markdown('* Please refer to the [here](https://github.com/CODEJIN/DiffSingerKR) for the source code for training the model.') | |
st.markdown('''---''') | |
status_indicator = st.empty() | |
status_indicator.header('Insert the music!') | |
st.markdown('''---''') | |
example1_col, example2_col, example3_col, _ = st.columns(4) | |
if example1_col.button('Example 1'): | |
st.session_state.diffsingerkr_duration = '0.52,0.17,0.35,0.35,0.35,0.35,0.70,0.35,0.35,0.70,0.35,0.35,0.70,0.52,0.17,0.35,0.35,0.35,0.35,0.70,0.35,0.35,0.35,0.35,1.39' | |
st.session_state.diffsingerkr_lyric = '๋ด,๋ค,๋ด,๋ค,๋น,ํ,๊ธฐ,๋ ,์,๋ผ,๋ ,์,๋ผ,๋,์ด,๋,์ด,๋ ,์,๋ผ,์ฐ,๋ฆฌ,๋น,ํ,๊ธฐ' | |
st.session_state.diffsingerkr_note = '76,74,72,74,76,76,76,74,74,74,76,79,79,76,74,72,74,76,76,76,74,74,76,74,72' | |
st.experimental_rerun() | |
if example2_col.button('Example 2'): | |
st.session_state.diffsingerkr_duration = '0.53,0.52,0.50,0.57,0.58,0.46,0.48,0.50,0.37,0.13,0.43,0.21,0.57,0.43,0.49,1.44,0.26,0.49,0.14,0.13,0.57,0.26,0.06,0.15,0.63,0.26,0.51,0.20,0.48,0.72,0.22' | |
st.session_state.diffsingerkr_lyric = '๋ง,๋,๊ณ ,<X>,๋,์ธ,๋ก,์,์,<X>,์,์,์ด,๋ด,๊ฒ,<X>,๊ด,์ฌ,์กฐ,<X>,์ฐจ,<X>,์,<X>,๋ค,๋,๊ฑธ,<X>,์,๋ฉด,์' | |
st.session_state.diffsingerkr_note = '76,78,79,0,71,74,72,71,72,0,71,69,69,71,74,0,79,78,79,0,71,0,74,0,74,72,72,0,71,71,69' | |
st.experimental_rerun() | |
if example3_col.button('Example 3'): | |
st.session_state.diffsingerkr_duration = '0.33,0.16,0.33,0.49,0.33,0.16,0.81,0.33,0.16,0.16,0.33,0.16,0.49,0.16,0.82,0.33,0.16,0.33,0.49,0.33,0.16,0.33,0.49,0.33,0.33,0.16,0.33,1.47,0.33,0.16,0.33,0.49,0.33,0.16,0.81,0.33,0.16,0.16,0.33,0.16,0.49,0.16,0.82,0.33,0.16,0.33,0.16,0.33,0.49,0.16,0.33,0.33,0.33,0.33,0.16,0.33,0.82' | |
st.session_state.diffsingerkr_lyric = '๋ง,์,์ธ,์ ,ํ,๋ ,์,<X>,๊ฑฐ,๋ฆฌ,๋ฅผ,๊ฑธ,์ด,๋ณด,๊ณ ,ํฅ,๊ธฐ,๋ก,์ด,์นต,ํ ,์ผ,์,์ทจ,ํด,๋,๋ณด,๊ณ ,ํ,ํธ,์,์,๊ฐ,์,๋,<X>,์ ,์,ํ,์ฅ,๋,๊ฐ,๊ณ ,๋ฐค,์,๋,<X>,๋ก,๊ทธ,๋ฆฌ,์,์,ํธ,์ง,์ฐ,๊ณ ,ํ' | |
st.session_state.diffsingerkr_note = '80,80,80,87,85,84,82,0,84,84,84,85,84,79,79,77,77,77,80,80,78,77,75,77,80,79,80,82,80,80,80,87,85,84,82,0,84,84,84,85,84,79,79,77,77,77,79,80,80,77,75,75,77,80,79,82,80' | |
st.experimental_rerun() | |
st.markdown('''---''') | |
duration = st.text_input('Duration', value= st.session_state.diffsingerkr_duration) | |
lyric = st.text_input('Lyric', value= st.session_state.diffsingerkr_lyric) | |
note = st.text_input('Note', value= st.session_state.diffsingerkr_note) | |
singer = 'CSD' | |
genre = 'Children' | |
key_adjustment = st.select_slider( | |
label= 'Key adjustment', | |
options= [x for x in range(-6, 7)], | |
value= 0 | |
) | |
if st.button("Generate!"): | |
if duration != '' and lyric != '' and note != '': | |
status_indicator.header('Generating...') | |
audio = st.session_state.inferencer.Inference_Epoch( | |
message_times_list= [[float(x) for x in duration.strip().split(',')]], | |
lyrics= [[x for x in lyric.strip().split(',')]], | |
notes= [[ | |
(int(x) + key_adjustment if int(x) != 0 else int(x)) | |
for x in note.strip().split(',') | |
]], | |
singers= [singer], | |
genres= [genre] | |
)[0] | |
st.audio( | |
audio, | |
format="audio/wav", | |
start_time=0, | |
sample_rate= st.session_state.inferencer.hp.Sound.Sample_Rate | |
) | |
status_indicator.header('Done.') | |
if __name__ == '__main__': | |
app_diffsingerkr() |