Python将文本转为语音播放,并生成mp3音频文件(附源码)

文摘   科技   2024-03-04 19:56   北京  


ISEE小语


尼采在《善恶的彼岸》中所说:“当你凝视深渊的时候,深渊也在凝视你。”




    本次介绍一个非常强大的三方库pyttsx3。

    pyttsx3是一个文本到语音(Text-To-Speech, TTS)转换的Python库。这个库可以离线工作,不需要任何在线服务的支持。pyttsx3 接口对Python 2和Python 3都兼容,并且跨平台,可以在Windows、macOS和Linux操作系统上工作。

    重点是这个库可以离线工作、可以离线工作、离线工作。(重要的优点说三遍




环境:

IDE
Pycharm
Python
3.9.16
三方库

pyttsx3==2.90




导入:

import pyttsx3


接下来,我们做个小实例,逐步介绍


初始化引擎

engine = pyttsx3.init()

(左右滑动查看完整代码)


获取当前语速

默认情况下,当前语速是200

rate = engine.getProperty('rate')print(f"Current speech rate: {rate}")
结果:Current speech rate: 200

(左右滑动查看完整代码)

注:默认的200语速较快,个人建议语速的范围120-150较为合适。


设置新的语速

engine.setProperty('rate', 120)

(左右滑动查看完整代码)


获取当前音量

volume = engine.getProperty('volume')print(f"Current volume: {volume}")

结果:Current volume: 1.0

(左右滑动查看完整代码)

注:默认的1.0的最高音量,可设置范围是0.0到1.0之间,个人建议根据实际环境设置,本次取的范围0.6-0.8较为合适。

设置新的音量

engine.setProperty('volume', 0.6)

(左右滑动查看完整代码)



获取可使用的语音

语音的使用,根据实际操作系统中所安装的语音包进行选择。以windows 10为例,如果需要不同的语种,可以在【系统设置】—>【时间和语言】—>【语音】界面进行添加,如下:


小栈的实际环境是windows 10

voices = engine.getProperty('voices')for voice in voices:    print(f"Voice: {voice.name}")    
结果:Voice: Microsoft Huihui Desktop - Chinese (Simplified)Voice: Microsoft Zira Desktop - English (United States)

(左右滑动查看完整代码)


设置特定的语音

由于小栈的语音只有两个,默认情况下是选择第一个,如果需要设置第二个,则如下:

engine.setProperty('voice', voices[1].id)

(左右滑动查看完整代码)

注:

第一个是“简体中文”,即中文和英文均可转语音。

第二个是“英语(美国),只能在英文的时候可转语音。亲测,选择这个语音包,中文是不能使用的。

请根据实际文案进行选择。


将中文转换为语音播放

# 设置特定的语音engine.setProperty('voice', voices[0].id)
# 将文本转换为语音播放engine.say("尼采在《善恶的彼岸》中所说:“当你凝视深渊的时候,深渊也在凝视你。”")
# 等待语音播报完毕engine.runAndWait()

(左右滑动查看完整代码)


将英文转换为语音播放

建议在英文转语音的时候,选择第二个语音包,毕竟使用 英文语音包 转英文 比较合适。

# 设置特定的语音engine.setProperty('voice', voices[1].id)
# 将文本转换为语音播放engine.say("Hello everyone, welcome to today's event!")
# 等待语音播报完毕engine.runAndWait()

(左右滑动查看完整代码)


转换为mp3音频文件

以上已经可以语音播放了,剩下的保存为mp3音频文件即可。其实就在以上实现基础上使用了engine.save_to_file这个方法。

# 设置特定的语音engine.setProperty('voice', voices[0].id)
# 将文本转换为语音播放text1 = "尼采在《善恶的彼岸》中所说:“当你凝视深渊的时候,深渊也在凝视你。”"engine.say(text1)
# 将文本转换为语音并保存为mp3文件engine.save_to_file(text1, 'Chinese.mp3')
# 设置英文特定的语音engine.setProperty('voice', voices[1].id)
# 将文本转换为语音播放text2 = "Hello everyone, welcome to today's event!"engine.say(text2)# 将文本转换为语音并保存为mp3文件engine.save_to_file(text2, 'English.mp3')
# 等待语音播报完毕engine.runAndWait()

(左右滑动查看完整代码)


总结

pyttsx3的使用比较广泛,如    

桌面应用:助手软件、邮件提醒、系统通知等,通过语音而非文本来通知用户。
辅助技术:智能读屏软件、识别文字转语音、阅读辅助工具等。
教育软件:音辅助学习、语音朗读文章等,帮助学习语言或文学作品
多媒体应用:生成语音旁白,用于视频制作或音频指南。制作有声书或播客,将文本内容转换为语音记录。
游戏开发:为视频游戏角色提供动态语音,增强游戏互动体验。实现游戏内的读出文字说明、指令或对话框。

有兴趣的同学可以深入探索和学习!!!

获取:后台回复"text2mp3"即可!


     

文章就分享到这儿,喜欢就点个吧!



推荐阅读  点击标题可跳转


ISEE小栈
没有花里胡哨,简单才是王道。
 最新文章