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,要看你的系统中安装的语音引擎数量。

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

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

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

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

电脑系统已安装的语音引擎的路径也能看出来:<Voice id=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0

那就进注册表去看看。按Win+R键运行CMD进入命令窗口,运行regedit,打开注册表:

打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\项,可以看到系统安装的语音引擎,Kangkang在其中,加M的应是男声,但实际上使用时还是女声,HuiHuiM也是一样。可能当初安装语音引擎时根本就没安装这些引擎,只是当时照着网文修改了注册表,导致注册表中存在一些虚假的引擎信息。Danny的语音引擎干脆就没有显示其中。

既然系统已安装Danny语音引擎,注册表中为什么看不见呢?

注意到Speech项下还有个Speech_OneCore项,不妨打开看看,同样也进入Voices\Tokens:

你是不是有了新的发现?没错,系统安装的语音引擎都在这里(和语音设置里显示的引擎一致),现在的关键就是如何把Speech_OneCore项下的子项转移到Speech项下去。以Danny为例,选中MSTTS_V110_zhHK_DannyM子项,右击导出并保存为Danny.reg,右击编辑,将注册表中两个地方的Speech_OneCore修改为Speech(为的是修改路径),保存后双击运行文件,新的注册表值就导入电脑注册表了。

再运行下代码,电脑安装语音引擎就能看到Danny引擎了。

再试着修改 voices[0].id中的索引值,其中必有一个是广东话男声(注意Hong Kong S.A.R)。

KangKang 语音引擎的解决应该也能如法炮制。如原来就有相应语音引擎信息但不能用,不妨先删除再导入。

语音合成中的男声女声问题,应不再是个问题。大家可照些方法试试。

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

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

    语音合成如果只是发出声音,还是没有多少实用价值. 一方面,可以增加语音输出功能,如把一段文字转化成音频播放器可以播放的声音文件,如WAV或mp3.微软语音的优点是支持离线语音合成,缺点是不能支持多音字 ...

  2. python语音合成需要的库_语音合成的几种方案实现与分析

    1. 语音合成平台介绍语音合成是将人类语音用人工的方式所产生.若是将电脑系统用在语音合成上,则称为语音合成器,而语音合成器可以用软/硬件所实现.文字转语音(text-to-speech,TTS)系统则 ...

  3. 怎么用计算机改变声音的音调,男声变女声用什么软件?能电脑语音说话变声吗?...

    男声变女声用什么软件?能电脑语音说话变声吗?我们在刷短视频或者看直播的时候,会发现有些主播会突然把声音进行改变,变搞怪的声音或加些声音特效,更甚的是,突然把男声音改成女声音,那他们是怎么做到说话声音的 ...

  4. 数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码

    @数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...

  5. 用matlab实现女声变男声步骤,数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码...

    @数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...

  6. matlab编写fie滤波器,数字信号处理大作业mdash;mdash;基于matlab R2019a的男声变女声资料汇总与代码...

    @数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...

  7. 用MATLAB 进行男声和女声录音的频谱分析,指出频谱特征,然后尝试将男声变成女声和女声变成男声并分析频谱。 请问一下这个的代码怎么写呀...

    在 MATLAB 中,你可以使用内置函数如 audioread 和 spectrogram 来读取录音文件并进行频谱分析. 以下是一个简单的代码示例: % 读取录音文件 [audio,fs] = au ...

  8. 基于Matlab的语音变调不变速的实现(男声变女声、女声变男声)

    最近遇到一个实现语音变调不变速的项目,查了很多资料,最后发现Matlab已经内置了一个非常简单的函数:"shiftPitch(wav,n)",可以实现男声女声之间的相互转化. 这里 ...

  9. php和python区别-PHP与Python语言有哪些区别之处?选择哪一个好?

    其实针对不同阶段的学者来说,他们的需求自然也有所不同.本篇文章主要分析了php和python哪个好以及介绍PHP与Python的区别之处,希望对还在为学习PHP和Python中哪一个语言而摇摆不定的朋 ...

最新文章

  1. Blazor将.NET带回到浏览器
  2. ckks方案优化最好的_果断收藏:SEO高级优化技能升级策略!
  3. 怎样用u盘linux安装ntp协议,电脑中怎么配置NTP服务
  4. html读取servlet,简单html与servlet交互(HTML利用servlet读取txt)
  5. matplotlib 横坐标少了一个点_收藏起来!比 matplotlib 效率高十倍的数据可视化神器!...
  6. Vue-cli(四) 项目中引入Axios
  7. 【Flink】Flink 启动报错 DirectoryNotEmptyException Could not close resource
  8. MySQL索引,MySQL中索引的限制?
  9. is_numeric 检测变量是否为数字或数字字符串
  10. linux yum未找到命令,解决yum命令失效,vim: command not found
  11. linux下C语言获取微秒级时间
  12. 两个简单方法快速解决怎么把kux格式转mp4
  13. 新手配置Intel NUC8i5INH的Ubuntu 16.04 时无法上网
  14. PID为0的系统空闲进程连接状态为TIME_WAIT
  15. 回顾千年,领略周秦汉唐西安文史5日研学营
  16. LaTex关于数学公式的使用(11)--- 单位
  17. 控制进度-监控管理过程组
  18. UE4之添加开场动画
  19. sparql学习 sparql示例 dbpedia在线验证
  20. ADB向手机安装APK失败

热门文章

  1. JAVA计算机毕业设计社区生鲜电商平台(附源码、数据库)
  2. js+swiper实现视频上下滑动
  3. postgreSql数据库笔记
  4. mongo写入mysql_从mysql读取数据写入mongo
  5. Thumbnailator的简介和使用范例(图片压缩)
  6. 【电力电子】【2007.05】三相多电平逆变器的研究与分析
  7. 【skills】sublime text 3 自定义 修改 颜色主题 配色方案
  8. 《Qt 学习之路 2》
  9. 分享66个PHP聊天室类源码,总有一款适合您
  10. 华为手机计算机模式切换,华为m6切换电脑模式操作方法