|
|
import os |
|
|
import matplotlib.pyplot as plt |
|
|
|
|
|
import os |
|
|
import json |
|
|
import math |
|
|
import torch |
|
|
from torch import nn |
|
|
from torch.nn import functional as F |
|
|
from torch.utils.data import DataLoader |
|
|
|
|
|
import commons |
|
|
import utils |
|
|
from data_utils import TextAudioLoader, TextAudioCollate, TextAudioSpeakerLoader, TextAudioSpeakerCollate |
|
|
from models import SynthesizerTrn |
|
|
from text.symbols import symbols |
|
|
from text import text_to_sequence |
|
|
|
|
|
from scipy.io.wavfile import write |
|
|
|
|
|
import streamlit as st |
|
|
|
|
|
|
|
|
|
|
|
os.system('cd monotonic_align') |
|
|
os.system('python setup.py build_ext --inplace') |
|
|
os.system('cd ..') |
|
|
|
|
|
os.system("gdown 'https://drive.google.com/uc?id=1q86w74Ygw2hNzYP9cWkeClGT5X25PvBT'") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_text(text, hps): |
|
|
text_norm = text_to_sequence(text, hps.data.text_cleaners) |
|
|
if hps.data.add_blank: |
|
|
text_norm = commons.intersperse(text_norm, 0) |
|
|
text_norm = torch.LongTensor(text_norm) |
|
|
return text_norm |
|
|
|
|
|
|
|
|
hps = utils.get_hparams_from_file("./configs/ljs_base.json") |
|
|
|
|
|
|
|
|
net_g = SynthesizerTrn( |
|
|
len(symbols), |
|
|
hps.data.filter_length // 2 + 1, |
|
|
hps.train.segment_size // hps.data.hop_length, |
|
|
**hps.model) |
|
|
_ = net_g.eval() |
|
|
|
|
|
_ = utils.load_checkpoint("pretrained_ljs.pth", net_g, None) |
|
|
|
|
|
|
|
|
|
|
|
st.title("VITS Text-to-Speech Demo") |
|
|
|
|
|
|
|
|
text_input = st.text_input("Enter text to convert to speech", value="Hello world") |
|
|
|
|
|
if st.button("Generate Speech"): |
|
|
|
|
|
stn_tst = get_text(text_input, hps) |
|
|
|
|
|
with torch.no_grad(): |
|
|
x_tst = stn_tst.unsqueeze(0) |
|
|
x_tst_lengths = torch.LongTensor([stn_tst.size(0)]) |
|
|
audio = net_g.infer(x_tst, x_tst_lengths, noise_scale=.667, noise_scale_w=0.8, length_scale=1)[0][0,0].data.float().numpy() |
|
|
|
|
|
|
|
|
st.audio(audio, format="audio/wav", sample_rate=hps.data.sampling_rate) |
|
|
|