File size: 2,053 Bytes
d8d694f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from datetime import datetime
from pathlib import Path

import streamlit as st

# from utils.tts.sambert_hifigan.tts_sambert_hifigan import gen_tts_wav
from utils.model_loader import TTS_HANDLER
from utils.tts.gpt_sovits.inference_gpt_sovits import gen_tts_wav
from utils.web_configs import WEB_CONFIGS


def show_audio(tts_path):

    if tts_path is None:
        return

    with open(tts_path, "rb") as f_wav:
        audio_bytes = f_wav.read()
    st.audio(audio_bytes, format="audio/wav")


def gen_tts_in_spinner(cur_response):
    tts_save_path = None
    if TTS_HANDLER is not None and st.session_state.gen_tts_checkbox:
        with st.spinner("正在生成语音,请稍等... 如果觉得生成时间太久,可以将侧边栏的【生成语音】按钮取消选中,下次则不会生成"):
            save_tag = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + ".wav"
            tts_save_path = str(Path(WEB_CONFIGS.TTS_WAV_GEN_PATH).joinpath(save_tag).absolute())
            # gen_tts_wav(st.session_state.tts_handler, cur_response, tts_save_path)

            # inp_ref = r"/root/hingwen_camp/utils/tts/gpt_sovits/weights/ref_wav/【开心】处理完之前的事情,这几天甚至都有空闲来车上转转了。.wav"
            text_language = "中英混合"
            gen_tts_wav(
                cur_response,
                text_language,
                TTS_HANDLER.bert_tokenizer,
                TTS_HANDLER.bert_model,
                TTS_HANDLER.ssl_model,
                TTS_HANDLER.vq_model,
                TTS_HANDLER.hps,
                TTS_HANDLER.max_sec,
                TTS_HANDLER.t2s_model,
                TTS_HANDLER.inp_ref,
                TTS_HANDLER.prompt_text,
                TTS_HANDLER.prompt,
                TTS_HANDLER.refer,
                TTS_HANDLER.bert1,
                TTS_HANDLER.phones1,
                TTS_HANDLER.zero_wav,
                tts_save_path,
            )

            show_audio(tts_save_path)
            st.toast("生成语音成功!")
    return tts_save_path