Python pyttsx3|文本朗读(各种语言)

简介: Python pyttsx3使用教程

 Python文字转语音

程序员,在其他人眼中往往都是高冷的存在,在他们的眼中能用代码解决的问题绝对不考虑其他的方法,本文让我们用Python来提升一下高冷的档次,让我们用代码来“说话”。

安装pyttsx3

安装

下面就让我们来看一下Python是怎样开口“说话“的。

我们先安装需要的库pyttsx3:

pipinstallpyttsx3

image.gif

语音引擎工厂

类似于设计模式中的“工厂模式”,pyttsx3通过初始化来获取语音引擎。当我们第一次调用init操作的时候,会返回一个pyttsx3的engine对象,再次调用的时候,如果存在engine对象实例,就会使用现有的,否则再重新创建一个。

pyttsx.init([driverName : string, debug : bool]) pyttsx.Engine

image.gif

从方法声明上来看,第一个参数指定的是语音驱动的名称,这个在底层适合操作系统密切相关的。如下:

     1.drivename:由pyttsx3.driver模块根据操作系统类型来调用,默认使用当前操作系统可以使用的最好的驱动。

           sapi5 - SAPI5 on Windows

           nsss - NSSpeechSynthesizer on Mac OS X

           espeak - eSpeak on every other platform

     2.debug: 这第二个参数是指定要不要以调试状态输出,建议开发阶段设置为True。

函数说明

本节我们再来了解一下pyttsx3.engine.Engine中所对应的函数说明。

- connect

参数:

 topic(string):要描述的事件名称;

 cb(callable):回调函数。

返回值:

 dict

函数说明:

 在给定的topic上添加回调通知

- disconnect

参数:

 token(dict):回调失联的返回标记

返回值:

 Void

函数说明:

 结束连接

- endLoop

函数说明:

 简单来说就是结束事件循环

- getProperty

参数:

 name(string):rate: 每分钟字数的语音速率,默认为每分钟200个。

  name(string):voice: 语音的字符串标识符。

  name(string):voices: pyttsx3.voice.Voice描述符对象列表。

  name(string):volume:音量的大小。

返回值:

 Object

函数说明:

 获取当前引擎实例的属性值。

- setProperty

参数:

 name(string):rate: 每分钟字数的语音速率,默认为每分钟200个。

  name(string):voice: 语音的字符串标识符。

  name(string):volume:音量的大小。

 value(int):rate: 设置每分钟读的字数。

 value:voice:设置发音,后文中会再讲到。

 valu(float):volume:设置音量大小,0.0-1.0之间;默认1.0。

返回值:

 Object

函数说明:

 获取当前引擎实例的属性值。

- say

参数:

 text(unicode):要进行朗读的文本数据。

 name(strin):关联发音人(一般用不到)

函数说明:

 预设要朗读的文本数据

- runAndWait

函数说明:

  当事件队列中事件全部清空的时候返回。

- startLoop

参数:

  [useDriverLoop(bool)]:是否启用驱动循环。

函数说明:

  开启事件队列

- stop

函数说明:

  停止当前讲话并清除命令队列。

简单的中文发音

先来让我们学习一下最简单的“说话”方法,我们不需要进行任何的设置,只要传入想要朗读的文本就可以了。

# 语音播报模块importpyttsx3# 模块初始化engine=pyttsx3.init() 
print('准备开始语音播报...')
engine.say('我高冷,我并不想说话~')
# 等待语音播报完毕 engine.runAndWait()

image.gif

设置参数的发音方式

在进行设置参数的发音方式的时候,我们需要注意一点,在该模块的内置声音选择函数执行的时候将并不能匹配中文发音,所以我们用英文来进行一下默认参数的尝试。

# 语音播报模块importpyttsx3# 模块初始化engine=pyttsx3.init()
print('准备开始语音播报...')
# 设置发音速率,默认值为200rate=engine.getProperty('rate')
engine.setProperty('rate', rate-50)
# 设置发音大小,范围为0.0-1.0volume=engine.getProperty('volume')
engine.setProperty('volume', 0.6)
# 设置默认的声音:voices[0].id代表男生,voices[1].id代表女生voices=engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
# 添加朗读文本engine.say('Not everyone can become a great artist.')
# 等待语音播报完毕engine.runAndWait()

image.gif

有趣的中文方言发音

虽然在内置的发音方式中我们不能更换音色,但是经过一番查找后我发现,我们还可以去调用其他的语音播报API,这样就完美的解决了更改发音的问题,并且还能支持很多方言,来用我们最开始听到的语音播报来举个例子,代码如下:

# 语音播报模块importpyttsx3msg='''今天我,寒夜里看雪飘过怀着冷却了的心窝漂远方风雨里追赶,雾里分不清影踪天空海阔你与我可会变(谁没在变)多少次,迎着冷眼与嘲笑从没有放弃过心中的理想一刹那恍惚, 若有所失的感觉不知不觉已变淡心里爱(谁明白我)原谅我这一生不羁放纵爱自由也会怕有一天会跌倒背弃了理想 ,谁人都可以哪会怕有一天只你共我'''# 模块初始化engine=pyttsx3.init()
volume=engine.getProperty('volume')
# 标准的粤语发音voices=engine.setProperty(
'voice', "com.apple.speech.synthesis.voice.sin-ji")
# 普通话发音# voices = engine.setProperty(#     'voice', "com.apple.speech.synthesis.voice.ting-ting.premium")# 台湾甜美女生普通话发音# voices = engine.setProperty(  #     'voice', "com.apple.speech.synthesis.voice.mei-jia")print('准备开始语音播报...')
# 输入语音播报词语engine.setProperty('volume', 0.7)
engine.say(msg)
engine.runAndWait()
engine.stop()

image.gif

是不是很有趣,点个赞再走吧~

相关文章
|
4月前
|
Python
python 找到并去除文本中的全部链接
这篇文章提供了一个使用Python正则表达式找到并删除文本中所有链接的代码示例。
|
10天前
|
Unix 编译器 C语言
[oeasy]python052_[系统开发语言为什么默认是c语言
本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
21 5
|
1月前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
225 3
|
2月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
55 2
|
2月前
|
机器学习/深度学习 自然语言处理 大数据
使用Python进行文本情感分析
【10月更文挑战第2天】使用Python进行文本情感分析
52 3
|
3月前
|
Linux 开发者 iOS开发
Python中使用Colorama库输出彩色文本
Python中使用Colorama库输出彩色文本
|
3月前
|
XML 数据格式 Python
Python技巧:将HTML实体代码转换为文本的方法
在选择方法时,考虑到实际的应用场景和需求是很重要的。通常,使用标准库的 `html`模块就足以满足大多数基本需求。对于复杂的HTML文档处理,则可能需要 `BeautifulSoup`。而在特殊场合,或者为了最大限度的控制和定制化,可以考虑正则表达式。
92 12
|
3月前
|
Python
python朗读播放中文和英文
python朗读播放中文和英文
|
3月前
|
机器学习/深度学习 自然语言处理 算法
使用Python实现简单的文本情感分析
【9月更文挑战第13天】本文将介绍如何使用Python编程语言进行基础的文本情感分析。我们将通过一个简单的例子,展示如何利用自然语言处理库nltk和机器学习库sklearn来实现对文本数据的情感倾向性判断。文章旨在为初学者提供一个入门级的指导,帮助他们理解并实践文本情感分析的基本步骤和方法。
55 6
|
3月前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
56 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
下一篇
DataWorks