主题
python
import streamlit as st
from kokoro import KPipeline
from IPython.display import display, Audio
import soundfile as sf
import os,time
def tts(text):
pipeline = KPipeline(lang_code='z')
tts_dir = os.path.join(os.getcwd(), 'tts_voice')
if not os.path.exists(tts_dir):
os.makedirs(tts_dir)
voice_path = os.path.join(tts_dir,str(int(time.time())))
generator = pipeline(
text, voice='zm_yunxi',
speed=1, split_pattern=r'\n+'
)
for i, (gs, ps, audio) in enumerate(generator):
# print(i) # i => index
# print(gs) # gs => graphemes/text
# print(ps) # ps => phonemes
# display(Audio(data=audio, rate=24000, autoplay=False))
sf.write(f'{voice_path}.wav', audio, 24000) # save each audio file
st.audio(f'{voice_path}.wav', format="audio/mpeg", loop=False)
data = st.text_area("请输入要转换的文本",value="你好,我是Kokoro,一个基于LLM的语音播报工具。")
if st.button("转换"):
with st.spinner("转换中...", show_time=True):
tts(data)