Spaces:
Runtime error
Runtime error
# Utils | |
import os | |
import timeit | |
import soundfile as sf | |
# Streamlit | |
import streamlit as st | |
# Custom elements | |
from elements.component import ( | |
centered_text, | |
) | |
def generate_voice( | |
input_text, | |
): | |
# TTS Inference | |
start_time = timeit.default_timer() | |
c, c_length, phoneme = st.session_state.TTS.tokenize(input_text) | |
tok_time = timeit.default_timer() - start_time | |
start_time = timeit.default_timer() | |
voice = st.session_state.TTS.vocalize(c, c_length) | |
tts_time = timeit.default_timer() - start_time | |
# Time stats | |
total_infer_time = tts_time + tok_time | |
audio_time = voice.shape[-1] / 22050 | |
rtf = total_infer_time / audio_time | |
rt_ratio = 1 / rtf | |
# Save audio (bug in Streamlit, can't play numpy array directly) | |
sf.write(f"cache_sound/{st.session_state.random_str}.wav", voice[0,0], 22050) | |
# Play audio | |
st.audio(f"cache_sound/{st.session_state.random_str}.wav", format = "audio/wav") | |
os.remove(f"cache_sound/{st.session_state.random_str}.wav") | |
st.caption("Generated Voice") | |
st.code( | |
f"💬 Output Audio: {str(audio_time)[:6]} sec.\n\n⏳ Elapsed time for:\n => Tokenization: {str(tok_time)[:6]} sec.\n => Model Inference: {str(tts_time)[:6]} sec.\n\n⏰ Real-time Factor (RTF): {str(rtf)[:6]}\n\n🏃 The model runs {str(rt_ratio)[:6]} x faster than real-time \ | |
", | |
language = "bash", | |
) | |
st.caption("Elapsed Time Stats") |