Python语音合成探究(五、男声和女声选择的终极解决)

       我在《Python语音合成探究(一、男声和女声的选择)》文章中介绍了声音的选择,但有些朋友还是不能成功。我想,Win10中,在“调整时间”--“设置”--“语音”中,能预听各类语音的实际效果(但并一定保证你在python中正常使用,具体原因及解决方法参看《Python语音合成探究(一、男声和女声的选择)》文章),我何不写一段代码,也实现这样的功能呢?

import re
import sys, os
import pyttsx3
import win32com.client as wincl
import chardet
from pathlib import Path

def audition():
    # 创建对象
    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')
    
    # 從語音信息是提取機器人姓名並試音
    v = 0 # 语音索引号
    for voice in voices:
        # print(f'语音声音详细信息:{voice}')
        # print(type(voice))
        # str1 = str(voice)[82:100]
        str1 = str(voice)[100:140].lstrip() # 將多行語音信息提取部分並去掉左空格
        # print(v, '号', str1)
        # print(type(str1))
        pattern = r" (.*?) " # 匹配規則:匹配兩者之间的内容
        str2 = re.search(pattern, str1).group(1)
        str3 = str(voice)[50:100].lstrip()
        if 'CN' in str3:
            str3 = '普通话'
            str4 = '我会说'
        if 'HK' in str3:
            str3 = '粤语'
            str4 = '我会说'
        if 'TW' in str3:
            str3 = '国语'
            str4 = '我会说'
        if 'EN' in str3:
            str3 = 'English'
            str4 = 'I am the ',v,'voice robot, and my name is ',str2,'I can speak'

        print(v, '号', str2,str3)
        engine.setProperty('voice', voices[v].id)
        engine.say("大家好,我是%d号语音机器人%s,%s%s" %(v,str2,str4,str3))
        engine.runAndWait()
        v = v + 1
audition()

实现预听倒不难,难的是提取每种语音模型的名称及语音类别,经过摸索,好歹实现了功能。如果你的系统语音种类不多,可以在Win10“调整时间”--“设置”--“语音”安装,并按《Python语音合成探究(一、男声和女声的选择)》文章解决注册表问题,也许,你的系统就会和我的一样,有近十种语音模型供python选择了。这是我的电脑运行结果:

语音合成:
******************
  1、试听语音类型
  2、选择语音类型
  3、选择朗读文本文件
  4、保存文本声音文件
  5、退出
******************
请选择对应编号:>? 1
0 号 Huihui 普通话
1 号 Yaoyao 普通话
2 号 Danny 粤语
3 号 Yating 国语
4 号 Zhiwei 国语
5 号 David English
6 号 Zira English
7 号 Kangkang 普通话
8 号 Tracy 粤语
9 号 Hanhan 国语

运行时还有相应的声音介绍相应的语音模型,录像见视频语音模型试听-CSDN直播。只有在这里能试听的语音模型才能被python选用。

祝大家都能成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值