Python语音合成探究(一、男声和女声的选择)

您所在的位置:网站首页 爸爸的语音女声 Python语音合成探究(一、男声和女声的选择)

Python语音合成探究(一、男声和女声的选择)

2024-03-22 05:22| 来源: 网络整理| 查看: 265

       python语音合成的代码网上很多,大多也能正常使用。但也存在简单到只能发出声音、不能选择男声女声等问题,并不具备多少实用价值。下面就是我在网上并找到做了少量修改的一段语音合成的代码:

#coding=utf-8 import pyttsx3 engine = pyttsx3.init() # 必不可少 # 打开文本文件 with open('诗经1.txt') as file: text = file.read() # 选择声音类型 # 男性(voices[0].id)、女性(voices[1].id) # sex = int(input('请选择声音种类,男声选0,女声选1')) voices = engine.getProperty('voices') engine.setProperty('voice', voices[0].id) #设置当前声音为“男性”,当前声音可读中文也可读英文 # engine.setProperty('voice', voices[1].id) #设置当前声音为“女性”,当前声音不可读中文 # 调整语速 # rate = int(input('请选择语速,0-500,正常约200')) rate = engine.getProperty('rate') #获取当前音频语速,范围一般为0-200,默认值为200 engine.setProperty('rate', 200) #改变语速 # 调整声量,范围在0~1之间 volume = engine.getProperty('volume') #设置音量 engine.setProperty('volume',0.8) #范围一般为0.0~1.0 默认值为1.0 # print("下面开始为您朗颂,请欣赏......") engine.say("下面开始为您朗颂,请欣赏......") engine.say(text) # 朗读 engine.runAndWait() #运行并且等到播放完毕,没有本语句是没有声音的 engine.runAndWait() engine.stop()

       最开始我也以为男声是(voices[0].id)、女声 是(voices[1].id),还加了个选择男声女声的代码,结果发现,不管如何选择,都只有女声。

        如何解决,应从以下几个方面来解决:

第一个问题:电脑系统有没有安装男声语音引擎?

        Win10系统中,在右下角“时间”任务栏上右击,选择“调整时间”,在弹出的“设置”页面中会有“语音"选项。点击“选择语音”中的下拉箭头,可以看到目前系统中安装的语音引擎。

        在本人的电脑系统中,已安装好几个语音引擎,经“预听语音”测试,至少有两个男声引擎(见图示),这说明本人的电脑,是具备男声语音合成条件的。

第二个问题:在python模块pyttsx3中,是不是(voices[0].id)代表男声、(voices[1].id)代表女声 ,或是相反?这个问题也很简单。

        在选择男声女声之前 ,我们可以增加几行代码,用来查询下系统的语音引擎。

# 获取当前语音声音的详细信息 voices = engine.getProperty('voices') for voice in voices: # 打印已安装语音信息 print(f'您的电脑系统已安装的语音声音有:{voice}\n')

       运行结果显示本人电脑系统有5个语音引擎,从voices[0].id逐一试到voices[4].id,结果仍只有女声。

       说明这个想法,图样图森破。方括号中的索引值并不一定只有0和1,要看你的系统中安装的语音引擎数量。

第三个问题:安装的语音引擎,究竟在哪能找到?

       系统明明安装有男声引擎,为什么在程序中却不能调出男声?

       网上搜索相关问题的解决方法,各种说法都有,主要是修改注册表,但并没说清为什么要改注册表,并且也并不一定能解决问题。

       从获取的语音信息来看,确实与注册表有关:

       电脑系统已安装的语音引擎的路径也能看出来:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3