pyttsx3python3使⽤说明python3 pyttsx3 ⽂字转语⾳库使⽤ 最近再做⼀个项⽬,需要⽂字转语⾳,决定使⽤此库了。 1.安装
pip install pyttsx3
# 若未安装pywin32, 需要安装此库的
pip install pywin32
2.官⽅⽂档
3.使⽤
简单使⽤
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()
播放中⽂语⾳,python3下直接写就好了,不需要设置语⾔blabla的
就不要在意合成语⾳的僵硬问题了。。。
import pyttsx3
# 初始化,必须要有奥
engine = pyttsx3.init()
engine.say('语⾳合成开始')
engine.say('我会说中⽂了,开森,开森')
# 注意,没有本句话是没有声⾳的
engine.runAndWait()
我在这项⽬要⽤的,如果要多次调⽤say()函数,并不是⼀次调⽤就结束了。 每次调⽤都有加上engine.runAndWait()就可以了
import pyttsx3
# 初始化,必须要有奥
engine = pyttsx3.init()
engine.say('语⾳合成开始')
engine.say('我会说中⽂了,开森,开森')
# 注意,没有本句话是没有声⾳的
engine.runAndWait()
engine.say('我能说第⼆句话了')
engine.runAndWait()
import pyttsx3
engine = pyttsx3.init()
def VOICE_TEXT(names):
unknown_name = []
known_name = []
for name in names:
if name == 'Unknown':
unknown_name.append(name)
else:
known_name.append(name)
# 记录两类⼈数量
num_known = len(known_name)
num_unknown = len(unknown_name)
if len(names) == 0:
return
# 5s 播报⼀次
elif num_unknown == 0:
text = '欢迎'
for index in range(num_known):
if index + 1 == num_known and index != 0:
text += '和{}'.format(known_name[index])
else:
text += known_name[index]
engine.say(text)
engine.runAndWait()
# 3s 播报⼀次
elif num_known == 0:
text = '警告,警告,有陌⽣⼈未识别,有陌⽣⼈未识别'
ca3660engine.say(text)
engine.runAndWait()
# 7s 播报⼀次
else:
text = '欢迎'
for index in range(num_known):
if index + 1 == num_known and index != 0:
text += '和{}'.format(known_name[index])
else:
text += known_name[index]
engine.say(text)
engine.say('请注意,您旁边有未识别⼈员,您将不允许进⼊,请询问值班⼈员,谢谢合作')
engine.runAndWait()
if __name__ == '__main__':
names = ['醉陌', '醉陌']
VOICE_TEXT(names)
names_ = ['Unknown', '醉陌']
VOICE_TEXT(names_)
names__ = ['Unknown']
VOICE_TEXT(names__)
最终实现, 程序中定时调⽤某⼀个函数,⽽在此函数中调⽤语⾳播报函数,于是添加了⼏个变量来维护函数播报与否import pyttsx3
import pyttsx3
KUNOWN = 0
UNKNOWN = 0
UNKNOWN_KNOWN = 0
engine = pyttsx3.init()
engine.setProperty('voice', 'zh')
毛发生长剂def VOICE_TEXT(names):
unknown_name = []
known_name = []
for name in names:
if name == 'Unknown':
unknown_name.append(name)
else:
known_name.append(name)
# 记录两类⼈数量
num_known = len(known_name)
num_unknown = len(unknown_name)
if len(names) == 0:
return
# 5s 播报⼀次
elif num_unknown == 0:
global KUNOWN
KUNOWN += 1
print('KUNOWN:', KUNOWN)
家电控制板if KUNOWN == 15:
KUNOWN = 1
text = '欢迎'
for index in range(num_known):
if index + 1 == num_known and index != 0:
text += '和{}'.format(known_name[index])
张力控制
else:
text += known_name[index]
engine.say(text)
engine.runAndWait()
# 3s 播报⼀次
elif num_known == 0:
global UNKNOWN
UNKNOWN += 1
print('UNKNOWN', UNKNOWN)
if UNKNOWN == 10 :
UNKNOWN = 1
text = '警告,警告,有陌⽣⼈未识别,有陌⽣⼈未识别' engine.say(text)
engine.runAndWait()
# 7s 播报⼀次
贴片led封装else:
global UNKNOWN_KNOWN
UNKNOWN_KNOWN += 1
print('UNKUOWN_KNOWN', UNKNOWN_KNOWN) if UNKNOWN_KNOWN == 25:
UNKNOWN_KNOWN = 2
text = '欢迎'
for index in range(num_known):
if index + 1 == num_known and index != 0:
text += '和{}'.format(known_name[index])
else:
text += known_name[index]
engine.say(text)
engine.say(text)
engine.say('请注意,您旁边有未识别⼈员,您将不允许进⼊,请询问值班⼈员,谢谢合作') engine.runAndWait()
if __name__ == '__main__':
卷纸架
names = ['醉陌', '醉陌']
VOICE_TEXT(names)