赞
踩
pyttsx3是Python中的文本到语音转换库。与其他库不同,它可以脱机工作,并且与Python 2和3兼容。
import pyttsx3 # 导入pyttsx3模块
pyttsx3.speak("刘彤,你个大坏蛋")
import pyttsx3
engine = pyttsx3.init() #初始化语音引擎
# 语速 rate = engine.getProperty('rate') # 音量 volume = engine.getProperty('volume') """ 以下是pyttsx3的官方文档 getProperty(名称:字符串)→对象 获取引擎属性的当前值。 参数: 名称 - 要查询的属性的名称。 退货: 此调用时属性的价值。 以下属性名称对所有驱动程序都有效。 rate 以每分钟单词为单位的整数语音速率。默认为每分钟200字。 voice 活动语音的字符串标识符。 voices pyttsx3.voice.Voice描述符对象列表。 volume 浮动点体积在0.0到1.0(含)之间。默认为1.0。 """
engine.setProperty('rate', 100) #设置语速为100
engine.setProperty('volume',0.6) #设置音量为0.6
"""
以下是pyttsx3的官方文档
setProperty(名称,值)→无
排队设置引擎属性的命令。新属性值会影响在此命令之后排队的所有话语。
参数:
名称 - 要更改的属性的名称。
值 - 值设置为。
以下属性名称对所有驱动程序都有效
"""
voices = engine.getProperty('voices')
# 遍历
for voice in voices:
print(voice)
""" <Voice id=com.apple.speech.synthesis.voice.Alex name=Alex languages=['en_US'] gender=VoiceGenderMale age=35> <Voice id=com.apple.speech.synthesis.voice.alice name=Alice languages=['it_IT'] gender=VoiceGenderFemale age=35> <Voice id=com.apple.speech.synthesis.voice.alva name=Alva languages=['sv_SE'] gender=VoiceGenderFemale age=35> """
合成器的主要参数
如下:age 发音人的年龄,默认为None
id 关于Voice的字符串确认信息
languages 发音支持的语言列表,默认为一个空的列表
name 发音人名称,默认为None
注:默认的语音合成器有两个,两个语音合成器均可以合成英文音频,但只有第一个合成器能合成中文音频。如果需要其他的语音合成器需要自行下载和设置。
voices = engine.getProperty('voices')
engine.setProperty('voice',voices[0].id) #设置第一个语音合成器
engine.say("刘彤,你个大坏蛋,呜呜呜,有其他小哥哥不理我呜呜呜") engine.runAndWait() engine.stop() """ 关于官方文档中runAndWait()函数的用法 runAndWait() → 无 处理所有当前排队命令时的块。适当地调用引擎通知的回调。当此调用之前排队的所有命令从队列中清空时返回。 """ """ 关于say()函数的用法 say(文本:unicode,名称:字符串)→无 排队命令说一句话。语音是根据队列中此命令之前设置的属性输出的。 参数: 文本-文本说话。 名称-与话语关联的名称。包含在有关此话语的通知中。 """ """ 关于stop()的用法 stop() → 无 停止当前话语并清除命令队列。 """
import pyttsx3
engine = pyttsx3.init()
engine.say('我爱你.')
engine.say('I love you.')
engine.runAndWait()
import pyttsx3
engine = pyttsx3.init()
engine.save_to_file(' I love you' , 'test.mp3')
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.connect('started-utterance', onStart)
engine.connect('started-word', onWord)
engine.connect('finished-utterance', onEnd)
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.connect('started-word', onWord)
engine.say('i wish you happy')
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()
volume = engine.getProperty('volume')
engine.setProperty('volume', volume-0.25)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()
__init__(代理:pyttsx3.drivers.DriverProxy,*args,**kwargs)→无 构造函数。必须存储代理参考。 参数: 代理 - 由buildDriver()函数提供的代理实例。 destroy() 可选。pyttsx3.driver.DriverProxy在被销毁时调用,以便此委托可以清理任何合成器资源。如果不实现,代理将安全进行。 endLoop() → 无 运行的驱动程序事件循环立即结束。 getProperty(名称:字符串)→对象 Immediately gets the named property value. At least those properties listed in the pyttsx3.Engine.getProperty() documentation must be supported. 参数: 名称 - 要查询的属性的名称。 退货: 此调用时属性的价值。 say(文本:unicode,名称:字符串)→无 立即说出一句话。语音必须根据调用时应用的当前属性值输出。在返回此方法之前,它必须调用值为True的pyttsx3.driver.DriverProxy.setBusy(),以阻止命令队列的进一步处理,直到输出完成或中断。 此方法必须在输出开始时触发一个且只有一个开始话语通知,在话语中每个单词的开头触发一个开始单词通知,在输出完成时触发一个完成话语通知。 参数: 文本-文本说话。 名称-与话语关联的名称。包含在有关此话语的通知中。 setProperty(名称:字符串,值:对象)→无 Immediately sets the named property value. At least those properties listed in the pyttsx3.Engine.setProperty() documentation must be supported. After setting the property, the driver must invoke pyttsx3.driver.DriverProxy.setBusy() with value False to pump the command queue. 参数: 名称 - 要更改的属性的名称。 值 - 值设置为。 startLoop() 立即启动事件循环。该循环负责发送有关话语的通知,并使用赋予创建此对象的工厂函数的pyttsx3.driver.DriverProxy对象上的方法抽取命令队列。 stop() 立即停止当前话语输出。如果在持续输出期间调用,此方法必须触发完成话语通知。如果没有持续的输出,它必须不会触发通知。 停止输出并发送任何所需通知后,驱动程序必须调用值为False的pyttsx3.driver.DriverProxy.setBusy()来泵送命令队列。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。