python实现tts文本转语音、音频
文章目录edge-tts实现通用部分-安装依赖生成不使用标签的音频生成使用标签的音频(有问题 todo)edge-tts实现这里用的是edge-tts来实现的。通用部分-安装依赖pip install edge_tts pip install asyncio生成不使用标签的音频代码importasyncioimportedge_tts# 定义文本转语音的异步函数asyncdeftext_to_speech(text,output_fileoutput.mp3,voicezh-CN-XiaoyiNeural,rate0%,volume0%): 将文本转为语音并保存为 MP3 文件 :param text: 要转换的文本内容 :param output_file: 输出音频文件路径 :param voice: 语音音色支持的音色列表可通过 edge-tts --list-voices 命令查看 :param rate: 语速0% 为默认50% 加快-50% 减慢 :param volume: 音量0% 为默认范围 -100% 到 100% try:# 创建 TTS 通信对象communicateedge_tts.Communicate(texttext,voicevoice,raterate,volumevolume)# 将语音流保存到文件awaitcommunicate.save(output_file)print(f语音文件已保存至{output_file})exceptExceptionase:print(f转换失败{e})# 主函数if__name____main__:# 要转换的文本内容text_content你好这是使用 edge_tts 实现的文本转语音示例支持自定义音色和语速。# 调用异步函数asyncio.run(text_to_speech(texttext_content,output_filemy_voice.mp3,voicezh-CN-YunxiNeural,# 云希男也可换为 zh-CN-XiaoyiNeural晓伊女rate10%,# 语速加快 10%volume0%# 音量默认))实测没问题生成了mp3且播放没问题。生成使用标签的音频(有问题 todo)代码import asyncio import edge_ttsasyncdeftext_to_speech_with_rhythm(output_filerhythm_voice.mp3): Win11 适配版带抑扬顿挫的文本转语音修复 SSML 解析问题# 精简 SSML 格式移除多余换行/空格确保 Win11 下解析正常ssml_textspeakversion1.0xmlnshttp://www.w3.org/2001/10/synthesisxml:langzh-CNprosodyrate5%pitch0Hzvolume0%你好/prosodybreaktime100ms/prosodyrate-10%pitch8Hzvolume5%这是使用 edge_tts 实现的/prosodybreaktime80ms/prosodyrate-15%pitch12Hzvolume8%抑扬顿挫的语音示例/prosodybreaktime150ms/prosodyrate0%pitch-2Hzvolume0%支持自定义音色、语速和音调。/prosody/speak# 去除 SSML 文本中的多余空格和换行关键避免 Win11 下解析异常ssml_text.join([line.strip()forlineinssml_text.splitlines()ifline.strip()])try:# Win11 下强制指定编码和协议提升兼容性communicateedge_tts.Communicate(textssml_text,voicezh-CN-XiaoyiNeural,# Win11 自带的晓伊音色兼容性最好 proxyNone # Win11 无需代理避免干扰)# 保存音频Win11 下指定绝对路径更稳定示例用相对路径awaitcommunicate.save(output_file)print(f✅ 语音生成成功文件路径{output_file})print(f 可直接在 Win11 中双击 {output_file} 播放)except Exceptionase:print(f❌ 转换失败{e})# Win11 下常见错误提示ifConnectioninstr(e):print( 建议检查网络Win11 需联网调用微软 TTS 服务)ifInvalidinstr(e):print( 建议确认 SSML 格式无误或更换音色如 zh-CN-YunxiNeural)if__name____main__:# Win11 下异步运行兼容 Python 3.8asyncio.run(text_to_speech_with_rhythm())实测有问题会连speak标签一起读出来期待的效果是不读speak标签只读标签里面的内容。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2430955.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!