Python语音合成探究(三、合成语音的输出及文字同步显示)

        语音合成如果只是发出声音,还是没有多少实用价值。

        一方面,可以增加语音输出功能,如把一段文字转化成音频播放器可以播放的声音文件,如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()

......

      运行结果如下:

Python语音合成探究(三、合成语音的输出及文字同步显示)_第1张图片

220

你可能感兴趣的:(菜鸟学python,语音识别,人工智能)