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

news/2025/2/22 6:01:17/

Python文字转语音

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

安装pyttsx3

安装

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

我们先安装需要的库pyttsx3:

pip install pyttsx3

语音引擎工厂

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

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

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

      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

函数说明:

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

简单的中文发音

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

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

设置参数的发音方式

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

# 语音播报模块
import pyttsx3
​
# 模块初始化
engine = pyttsx3.init()
print('准备开始语音播报...')
​
# 设置发音速率,默认值为200
rate = engine.getProperty('rate')
engine.setProperty('rate', rate - 50)
# 设置发音大小,范围为0.0-1.0
volume = 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()

有趣的中文方言发音

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

# 语音播报模块
import pyttsx3
​
msg = '''今天我,寒夜里看雪飘过
​
怀着冷却了的心窝漂远方
​
风雨里追赶,雾里分不清影踪
​
天空海阔你与我
​
可会变(谁没在变)
​
多少次,迎着冷眼与嘲笑
​
从没有放弃过心中的理想
​
一刹那恍惚, 若有所失的感觉
​
不知不觉已变淡
​
心里爱(谁明白我)
​
原谅我这一生不羁放纵爱自由
​
也会怕有一天会跌倒
​
背弃了理想 ,谁人都可以
​
哪会怕有一天只你共我
'''
# 模块初始化
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()

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


http://www.ppmy.cn/news/853555.html

相关文章

大家整齐的qipaifans朗读声忽然乱了

点宽即时通讯(DOTWIDE)通讯员(陈飞飞)同学们垂头丧气回到教室,直奔后面是什么字啊,拍拍灰又爬起来,我有个慈祥的爷爷,小谢老师,他和我在不同的城市生活,班长和…

朗读者 (一) 节选

致儿子的一封信 麦家 儿子,当你看到这封信时,你已在我万里之外,我则在你地球的另一端。地球很大,我们太小了,但我们不甘于小,我们要超过地球,所以你出发了。这是一次蓄谋已久的远行,…

Linux中文朗读软件--espeak

一、 介绍 1. 用途:可识别多语言的朗读软件 2. 特点: 1) 能读中文:相对英文,更适合朗读中文 2) 可以在程序中被调用——提供c接口及库 3) 支持词的识别和 4) 安装简单&…

C++实现TTS文字语音朗读Microsoft Speech SDK

转自http://www.zhimax.com/article/vc/ttsvoice.html 一. TTS概述 随着语音技术的发展,微软也推出了相应的语音开发工具,即Microsoft Speech SDK,这个SDK中包含了语音应用设计接口(SAPI)、微软的连续语音识别引擎&am…

Unity TTS文字转语音 朗读 基于SpeechLib

本教程适用于不借助第三方语音平台,仅用Windows平台组件 进行文字转语音,基于SpeechLib 什么是TTS?TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。 教程需要用到两个d…

C#实现语音朗读功能

C#实现语音朗读功能 第一步:新建项目 TTS(从文本到语音(TextToSpeech)) 第二步:添加引用 System.Speech 第三步:主界面以及后台代码 using System;using System.Globalization;using System.Linq;using System.Speech…

html5 | 通过js实现对网页文本内容语音朗读 | 教程

简介 网页文字语音阅读功能实现的核心是通过 网页语音 API 的SpeechSynthesis 接口是语音服务的控制接口;它可以用于获取设备上关于可用的合成声音的信息,开始、暂停语音,或除此之外的其他命令。 在定义了一些必要的变量后,我们…

使用window小娜实现文本转语音

使用window小娜实现文本转语音 python 下载地址安装所需依赖python代码启动测试 python 下载地址 http://npm.taobao.org/mirrors/python/3.7.4/python-3.7.4-amd64.exe 下载、安装完成后,更新pip # 更新pip3 python -m pip install -U pip # 设置pip镜像源,加快…