语音合成如果只是发出声音,还是没有多少实用价值。
一方面,可以增加语音输出功能,如把一段文字转化成音频播放器可以播放的声音文件,如WAV或mp3。微软语音的优点是支持离线语音合成,缺点是不能支持多音字的选择,对多音字的处理,只能用单音的同音字替代。支持多音字选择的语音模块需要收费且配置复杂,需要在线语音合成。
另一方面,可以增加文字同步显示功能。将程序打造成文本朗读工具。
部分代码如下(完整代码请到资源中下载):
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
import pyttsx3
import chardet
from pathlib import Path
def user_tts():
# 创建对象
engine = pyttsx3.init()
# 获取当前语音速率
rate = engine.getProperty('rate')
# print(f'语音速率:{rate}')
# 设置新的语音速率
engine.setProperty('rate', 150)
# 获取当前语音音量
volume = engine.getProperty('volume')
# print(f'语音音量:{volume}')
# 设置新的语音音量,音量最小为 0,最大为 1
engine.setProperty('volume', 1.0)
# 获取当前语音声音的详细信息
voices = engine.getProperty('voices')
for voice in voices: # 打印已安装语音信息
print(f'您的电脑系统已安装的语音声音有:{voice}\n')
# 设置当前语音声音
engine.setProperty('voice', voices[0].id)
print(f'您选择电脑系统语音声音为:{voices[0]}')
# 获取当前语音声音
voice = engine.getProperty('voice')
# print(f'当前语音速率为:{rate},音量大小为:{volume}')
return engine
def talking(file,test):
lines = file.readlines()
print('')
for line in lines:
for a in range(1, len(line) // 60 + 2): # 将长文截成50字每行
print(line[(60 * (a - 1)):60 * a].strip())
# 将语音文本说出来
engine.say(line)
engine.runAndWait()
test = test + line.strip()
engine.runAndWait()
engine.stop()
# 保存为音频文件
engine.say("正在为您转换为声音文件,请稍候......")
engine.save_to_file(test, '%s.mp3' % (txt_name)) # 可用酷狗打开,千千静听不行
engine.say("转换完成!")
engine.runAndWait()
def openTxt():
# 提取同文件夹中文本清单,确定需要朗读的文本
list = []
paths = Path.cwd()
print(paths)
os.system('dir *.txt /a/b >list.txt') # 运行Win命令获取目录信息
print('TXT文件有:')
with open('list.txt') as file_txt:
for line in file_txt:
line1 = line.rstrip('\n')
list.append(line1)
print(list.index(line1), line1) # 打印序号的内容
return list
if __name__ == '__main__':
engine = user_tts()
list = openTxt()
......
运行结果如下:
220
极域电子教室座位表程序下载链接:链接:https://pan.baidu.com/s/1X0WUTtXmr1EhFg9CNgoIKA?pwd=odvs
提取码:odvs
考试指令系统下载链接:https://pan.baidu.com/s/11x9fS1gUEPCd6w15KHCxSw?pwd=zvw3
提取码:zvw3
照片插入电子表格程序链接:https://pan.baidu.com/s/1dvW5q9G53prkUDVcO6uffA?pwd=w3jp
提取码:w3jp