评论
Python写了一个文本转语音的Edge TTS 工具

Python写了一个文本转语音的Edge TTS 工具

不想改变,这是最好的时光。如果有一秒钟不同,也许我就走不到你的身旁。全世界,我们来了

 预览

Python写了一个文本转语音的Edge TTS 工具
Python写了一个文本转语音的Edge TTS 工具

源代码

language_dict = {'英语 (美国)-Jenny-女': 'en-US-JennyNeural', '英语 (美国)-Guy-男': 'en-US-GuyNeural', '英语 (美国)-Ana-女': 'en-US-AnaNeural', '英语 (美国)-Aria-女': 'en-US-AriaNeural', '英语 (美国)-Christopher-男': 'en-US-ChristopherNeural', '英语 (美国)-Eric-男': 'en-US-EricNeural', '英语 (美国)-Michelle-女': 'en-US-MichelleNeural', '英语 (美国)-Roger-男': 'en-US-RogerNeural', '韩语 (韩国)-Sun-Hi-女': 'ko-KR-SunHiNeural', '韩语 (韩国)-InJoon-男': 'ko-KR-InJoonNeural', '日语 (日本)-Nanami-女': 'ja-JP-NanamiNeural', '日语 (日本)-Keita-男': 'ja-JP-KeitaNeural', '法语 (法国)-Denise-女': 'fr-FR-DeniseNeural', '法语 (法国)-Eloise-女': 'fr-FR-EloiseNeural', '法语 (法国)-Henri-男': 'fr-FR-HenriNeural','普通话 (中国大陆)-Xiaoxiao-女': 'zh-CN-XiaoxiaoNeural', '普通话 (中国大陆)-Yunyang-男': 'zh-CN-YunyangNeural', '普通话 (中国大陆)-Yunxi-男': 'zh-CN-YunxiNeural', '普通话 (中国大陆)-Xiaoyi-女': 'zh-CN-XiaoyiNeural', '普通话 (中国大陆)-Yunjian-男': 'zh-CN-YunjianNeural', '普通话 (中国大陆)-Yunxia-男': 'zh-CN-YunxiaNeural', '东北话 (中国大陆)-Xiaobei-女': 'zh-CN-liaoning-XiaobeiNeural', '中原官话 (中国陕西)-Xiaoni-女': 'zh-CN-shaanxi-XiaoniNeural', '粤语 (中国香港)-HiuMaan-女': 'zh-HK-HiuMaanNeural', '粤语 (中国香港)-HiuGaai-女': 'zh-HK-HiuGaaiNeural', '粤语 (中国香港)-WanLung-男': 'zh-HK-WanLungNeural', '台湾普通话-HsiaoChen-女': 'zh-TW-HsiaoChenNeural', '台湾普通话-HsiaoYu-女': 'zh-TW-HsiaoYuNeural', '台湾普通话-YunJhe-男': 'zh-TW-YunJheNeural'}
import tempfile
import edge_tts
import gradio as gr
async def text_to_speech_edge(text, language_code):
    voice = language_dict[language_code]
    communicate = edge_tts.Communicate(text, voice)
    with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
        tmp_path = tmp_file.name
    await communicate.save(tmp_path)
    return tmp_path

app = gr.Blocks(css="footer {visibility: hidden}")
with app:
    gr.Markdown("# <center>Edge TTS 工具</center>")
    with gr.Row():
        input_text = gr.Textbox(lines=5, placeholder="想说却还没说的 还很多 攒着是因为想写成歌",
                                label="请填写您想生成的文本(中英文皆可)")
        default_language = list(language_dict.keys())[15]
        language = gr.Dropdown(choices=list(language_dict.keys()), value=default_language,
                               label="请选择文本对应的语言")
    with gr.Row():
        btn_edge = gr.Button("一键开启真实拟声吧", variant="primary")
    with gr.Row():
        output_audio = gr.Audio(type="filepath", label="Edge TTS真实拟声")
    btn_edge.click(text_to_speech_edge, [input_text, language], output_audio)
    gr.Markdown( "### <center>注意❗:请不要生成会对个人以及组织造成侵害的内容,此程序仅供科研、学习及个人娱乐使用.</center>")
app.launch(show_error=True,inbrowser=True)

说明

怎么说呢,虽然在剪辑视频的时候很多工具都自带的文字转语音,10个语音总有一半是要收费的

或许是世界给我们的选择太多,导致纠结该选用哪个

TTS也是一股清流吧

 使用

下载工具,点击后自动打开浏览器,即可使用

 or 下载网盘里面的spec文件使用pyinstaller库打包桌面应用

在 or 复制上面代码直接vscode运行python代码

下载

防止文件过期,请及时保存到网盘

https://pan.quark.cn/s/1e93d6663e83