社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

枫瑞博客网 • 2 年前 • 342 次点击  
不想改变,这是最好的时光。如果有一秒钟不同,也许我就走不到你的身旁。全世界,我们来了

 预览


源代码

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 tempfileimport edge_ttsimport gradio as grasync 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("#
Edge TTS 工具
"
)
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( "###
注意❗:请不要生成会对个人以及组织造成侵害的内容,此程序仅供科研、学习及个人娱乐使用.
"
)
app.launch(show_error=True,inbrowser=True)


说明

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

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

TTS也是一股清流吧


 # 使用

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

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

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


# 下载

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

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


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/170809