MeloTTS是一个由MyShell AI开发的高质量文本转语音(Text-to-Speech, TTS)框架,它被设计用于生成自然流畅的人声。
这个框架的特点在于其灵活性和定制能力,允许用户根据特定的需求训练出具有独特音色和口音的TTS模型。
MeloTTS的语音合成速度快,即使在没有GPU加速的普通CPU上也能实现实时语音合成,生成高质量、自然流畅的语音输出。
MeloTTS支持多种语言,包括英语、西班牙语、法语、中文、日语和韩语等,能够将文本转换成自然流畅的语音输出。
它特别针对中文用户,支持中英文混合发音,可以处理包含英文单词的中文文本,这对于多语言交流和国际化应用场景非常有用。
github项目地址为:https://github.com/myshell-ai/MeloTTS。
一、环境安装
1、python环境
建议安装python版本在3.10以上。
2、pip库安装
cd MeloTTS
pip install -e .
python -m unidic download
二、功能测试
1、文本转语音命令行测试
python melo/app.py
2、python web接口代码测试
import gradio as gr
import io
from melo.api import TTS
import click
#设置语速
speed = 1.0
device = 'auto'
models = {
'EN': TTS(language='EN', device=device),
'ES': TTS(language='ES', device=device),
'FR': TTS(language='FR', device=device),
'ZH': TTS(language='ZH', device=device),
'JP': TTS(language='JP', device=device),
'KR': TTS(language='KR', device=device),
}
speaker_ids = models['EN'].hps.data.spk2id
default_text_dict = {
'EN': 'The field of text-to-speech has seen rapid development recently.',
'ES': 'El campo de la conversión de texto a voz ha experimentado un rápido desarrollo recientemente.',
'FR': 'Le domaine de la synthèse vocale a connu un développement rapide récemment',
'ZH': 'text-to-speech 领域近年来发展迅速',
'JP': 'テキスト読み上げの分野は最近急速な発展を遂げています',
'KR': '최근 텍스트 음성 변환 분야가 급속도로 발전하고 있습니다.',
}
#合成语音函数
def synthesize(speaker, text, speed, language, progress=gr.Progress()):
bio = io.BytesIO()
models[language].tts_to_file(text, models[language].hps.data.spk2id[speaker], bio, speed=speed, pbar=progress.tqdm, format='wav')
return bio.getvalue()
#加载发音人及文本函数
def load_speakers(language, text):
if text in list(default_text_dict.values()):
newtext = default_text_dict[language]
else:
newtext = tex
return gr.update(value=list(models[language].hps.data.spk2id.keys())[0], choices=list(models[language].hps.data.spk2id.keys())), newtext
#创建Gradio界面
with gr.Blocks() as demo:
gr.Markdown('#MeloTTS WebUI\n\n这是一个MeloTTS的Web界面。')
with gr.Group():
speaker = gr.Dropdown(speaker_ids.keys(), interactive=True, value='EN-US', label='发音人')
language = gr.Radio(['EN', 'ES', 'FR', 'ZH', 'JP', 'KR'], label='语言', value='EN')
speed = gr.Slider(label='速度', minimum=0.1, maximum=10.0, value=1.0, interactive=True, step=0.1)
text = gr.Textbox(label="文本转语音", value=default_text_dict['EN'])
language.input(load_speakers, inputs=[language, text], outputs=[speaker, text])
btn = gr.Button('合成', variant='primary')
aud = gr.Audio(interactive=False)
btn.click(synthesize, inputs=[speaker, text, speed, language], outputs=[aud])
gr.Markdown('MeloTTS WebUI Demo')
@click.command()
@click.option('--share', '-s', is_flag=True, show_default=True, default=False)
@click.option('--host', '-h', default="0.0.0.0")
@click.option('--port', '-p', type=int, default=7865)
def main(share, host, port):
demo.queue(api_open=False).launch(show_api=False, share=share, server_name=host, server_port=port)
if name == "__main__":
main()
3、python流式分段推理接口代码测试
未完......
更多详细的内容欢迎关注:杰哥新技术