如果您想了解在Python中将合成的文字转语音记录到文件中的相关知识,那么本文是一篇不可错过的文章,我们将对在python中将合成的文字转语音记录到文件中进行全面详尽的解释,并且为您提供关于12款免费
如果您想了解在Python中将合成的文字转语音记录到文件中的相关知识,那么本文是一篇不可错过的文章,我们将对在python中将合成的文字转语音记录到文件中进行全面详尽的解释,并且为您提供关于12 款免费的文字转语音的转换工具、gTTS —— 基于 Python 的文本转语音库、python 利用pyttsx3文字转语音、python 利用pyttsx3文字转语音(转)的有价值的信息。
本文目录一览:- 在Python中将合成的文字转语音记录到文件中(在python中将合成的文字转语音记录到文件中)
- 12 款免费的文字转语音的转换工具
- gTTS —— 基于 Python 的文本转语音库
- python 利用pyttsx3文字转语音
- python 利用pyttsx3文字转语音(转)
在Python中将合成的文字转语音记录到文件中(在python中将合成的文字转语音记录到文件中)
我正在尝试找到一种方法来提取合成语音并将其记录到音频文件中。我目前正在使用pyttsx作为我的文本到语音库,但是没有一种机制可以将输出保存到文件中,而只能直接从扬声器播放。我已经研究了检测和录制音频以及PyAudio的方法,但是这些方法似乎是从麦克风接收的,而不是将传出的音频重定向到文件。有已知的方法吗?
12 款免费的文字转语音的转换工具
TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。
本文向你推荐 12 个免费的 TTS 转换工具:
Marf
SmartRead
DSpeech
Emacspeak
Nvaccess
Cmusphinx
Balabolka
IVONA Text To Speech Voice
Panopreter Text To Speech Software
eSpeak
Natural Reader
The Festival Speech Synthesis System
via thedesignpixel
gTTS —— 基于 Python 的文本转语音库
gTTS 是一个 Python 库和 CLI 工具,用于与 Google Translate 的 text-to-speech API 交互。
python 利用pyttsx3文字转语音
# -*- coding: utf-8 -*-
import pyttsx3
f = open("all.txt",''r'')
line = f.readline()
engine = pyttsx3.init()
while line:
line = f.readline()
print(line, end = '''')
engine.say(line)
engine.runAndWait()
f.close()
安装
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
引擎接口
要想很好的运用一个库,不了解其API是不行的。下面来看看pyttsx3。engine.Engine的引擎API。
方法签名 | 参数列表 | 返回值 | 简单释义 |
connect(topic : string, cb : callable) | topic:要描述的事件名称;cb:回调函数 | → dict | 在给定的topic上添加回调通知 |
disconnect(token : dict) | token:回调失联的返回标记 | Void | 结束连接 |
endLoop() | None | → None | 简单来说就是结束事件循环 |
getProperty(name : string) | name有这些枚举值“rate, vioce,vioces,volumn | → object | 获取当前引擎实例的属性值 |
setProperty(name : string) | name有这些枚举值“rate, vioce,vioces,volumn | → object | 设置当前引擎实例的属性值 |
say(text : unicode, name : string) | text:要进行朗读的文本数据; name: 关联发音人,一般用不到 | → None | 预设要朗读的文本数据,这也是“万事俱备,只欠东风”中的“万事俱备” |
runAndWait() | None | → None | 这个方法就是“东风”了。当事件队列中事件全部清空的时候返回 |
startLoop([useDriverLoop : bool]) | useDriverLoop:是否启用驱动循环 | → None | 开启事件队列 |
元数据音调
在pyttsx3.voice.Voice中,处理合成器的发音。
age
发音人的年龄,默认为None
gender
以字符串为类型的发音人性别: male, female, or neutral.默认为None
id
关于Voice的字符串确认信息. 通过 pyttsx3.engine.Engine.setPropertyValue()来设置活动发音签名. 这个属性总是被定义。
languages
发音支持的语言列表,如果没有,则为一个空的列表。
name
发音人名称,默认为None.
更多测试
朗读文本
import pyttsx3
engine = pyttsx3.init()
engine.say(''Sally sells seashells by the seashore.'')
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
事件监听
import pyttsx3
def onStart(name):
print ''starting'', name
def onWord(name, location, length):
print ''word'', name, location, length
def onEnd(name, completed):
print ''finishing'', name, completed
engine = pyttsx3.init()
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
打断发音
import pyttsx3
def onWord(name, location, length):
print(''word'', name, location, length)
if location > 10:
engine.stop()
engine = pyttsx3.init()
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
更换发音人声音
engine = pyttsx3.init()
voices = engine.getProperty(''voices'')
for voice in voices:
engine.setProperty(''voice'', voice.id)
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
语速控制
engine = pyttsx3.init()
rate = engine.getProperty(''rate'')
engine.setProperty(''rate'', rate+50)
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
音量控制
engine = pyttsx3.init()
volume = engine.getProperty(''volume'')
engine.setProperty(''volume'', volume-0.25)
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
执行一个事件驱动循环
engine = pyttsx3.init()
def onStart(name):
print(''starting'', name)
def onWord(name, location, length):
print(''word'', name, location, length)
def onEnd(name, completed):
print(''finishing'', name, completed)
if name == ''fox'':
engine.say(''What a lazy dog!'', ''dog'')
elif name == ''dog'':
engine.endLoop()
engine = pyttsx3.init()
engine.say(''The quick brown fox jumped over the lazy dog.'', ''fox'')
engine.startLoop()
使用一个外部的驱动循环
engine = pyttsx3.init()
engine.say(''The quick brown fox jumped over the lazy dog.'', ''fox'')
engine.startLoop(False)
# engine.iterate() must be called inside externalLoop()
externalLoop()
engine.endLoop()
python 利用pyttsx3文字转语音(转)
原文链接
作者
# -*- coding: utf-8 -*-
import pyttsx3
engine = pyttsx3.init()
with open("all.txt",''r'',encoding=''utf-8'') as f:
while 1:
line = f.readline()
print(line, end = '''')
engine.say(line)
engine.runAndWait()
import pyttsx3
with open(''all.txt'',''r'',encoding=''utf-8'') as f:
line = f.read()#文件不大,一次性读取
engine = pyttsx3.init()
#调整频率
rate = engine.getProperty(''rate'')
engine.setProperty(''rate'', rate-50)
# 调整音量
volume = engine.getProperty(''volume'')
engine.setProperty(''volume'', volume+0.25)
engine.say(line)
engine.runAndWait()
安装
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
引擎接口
要想很好的运用一个库,不了解其API是不行的。下面来看看pyttsx3。engine.Engine的引擎API。
方法签名 | 参数列表 | 返回值 | 简单释义 |
connect(topic : string, cb : callable) | topic:要描述的事件名称;cb:回调函数 | → dict | 在给定的topic上添加回调通知 |
disconnect(token : dict) | token:回调失联的返回标记 | Void | 结束连接 |
endLoop() | None | → None | 简单来说就是结束事件循环 |
getProperty(name : string) | name有这些枚举值“rate, vioce,vioces,volumn | → object | 获取当前引擎实例的属性值 |
setProperty(name : string) | name有这些枚举值“rate, vioce,vioces,volumn | → object | 设置当前引擎实例的属性值 |
say(text : unicode, name : string) | text:要进行朗读的文本数据; name: 关联发音人,一般用不到 | → None | 预设要朗读的文本数据,这也是“万事俱备,只欠东风”中的“万事俱备” |
runAndWait() | None | → None | 这个方法就是“东风”了。当事件队列中事件全部清空的时候返回 |
startLoop([useDriverLoop : bool]) | useDriverLoop:是否启用驱动循环 | → None | 开启事件队列 |
元数据音调
在pyttsx3.voice.Voice中,处理合成器的发音。
age
发音人的年龄,默认为None
gender
以字符串为类型的发音人性别: male, female, or neutral.默认为None
id
关于Voice的字符串确认信息. 通过 pyttsx3.engine.Engine.setPropertyValue()来设置活动发音签名. 这个属性总是被定义。
languages
发音支持的语言列表,如果没有,则为一个空的列表。
name
发音人名称,默认为None.
更多测试
朗读文本
import pyttsx3
engine = pyttsx3.init()
engine.say(''Sally sells seashells by the seashore.'')
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
事件监听
import pyttsx3
def onStart(name): print ''starting'', name def onWord(name, location, length): print ''word'', name, location, length def onEnd(name, completed): print ''finishing'', name, completed engine = pyttsx3.init() engine.say(''The quick brown fox jumped over the lazy dog.'') engine.runAndWait()
打断发音
import pyttsx3
def onWord(name, location, length): print(''word'', name, location, length) if location > 10: engine.stop() engine = pyttsx3.init() engine.say(''The quick brown fox jumped over the lazy dog.'') engine.runAndWait()
更换发音人声音
engine = pyttsx3.init()
voices = engine.getProperty(''voices'')
for voice in voices:
engine.setProperty(''voice'', voice.id)
engine.say(''The quick brown fox jumped over the lazy dog.'') engine.runAndWait()
语速控制
engine = pyttsx3.init()
rate = engine.getProperty(''rate'')
engine.setProperty(''rate'', rate+50)
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
音量控制
engine = pyttsx3.init()
volume = engine.getProperty(''volume'')
engine.setProperty(''volume'', volume-0.25)
engine.say(''The quick brown fox jumped over the lazy dog.'')
engine.runAndWait()
执行一个事件驱动循环
engine = pyttsx3.init()
def onStart(name):
print(''starting'', name) def onWord(name, location, length): print(''word'', name, location, length) def onEnd(name, completed): print(''finishing'', name, completed) if name == ''fox'': engine.say(''What a lazy dog!'', ''dog'') elif name == ''dog'': engine.endLoop() engine = pyttsx3.init() engine.say(''The quick brown fox jumped over the lazy dog.'', ''fox'') engine.startLoop()
使用一个外部的驱动循环
engine = pyttsx3.init()
engine.say(''The quick brown fox jumped over the lazy dog.'', ''fox'')
engine.startLoop(False)
# engine.iterate() must be called inside externalLoop()
externalLoop()
engine.endLoop()
关于在Python中将合成的文字转语音记录到文件中和在python中将合成的文字转语音记录到文件中的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于12 款免费的文字转语音的转换工具、gTTS —— 基于 Python 的文本转语音库、python 利用pyttsx3文字转语音、python 利用pyttsx3文字转语音(转)等相关知识的信息别忘了在本站进行查找喔。
本文标签: