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

       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(
### 如何在 `pyttsx3` 中使用配置语音包 #### 初始化 `pyttsx3` 为了开始使用 `pyttsx3` 进行文本到语音的转换,首先需要创建个表示语音引擎的对象。这可以通过调用 `init()` 方法来完成。 ```python import pyttsx3 engine = pyttsx3.init() ``` #### 获取可用的声音属性 通过访问 `engine.getProperty('voices')` 可以获得当前系统上所有可用的声音列表。这些声音代表不同的发音人以及可能的语言设置。 ```python voices = engine.getProperty('voices') for voice in voices: print(f"ID: {voice.id}, Name: {voice.name}") ``` #### 设置特定的语音包 要指定使用的具体语音包,可以利用 `setProperty` 函数更改默认的发声者。例如,如果想要切换成女性或男性声线,或者是改变语言环境至中文,则需找到对应 ID 的 Voice 对象并将其赋给 `voice` 属性。 对于解决 `pyttsx3` 不读取中文的问题,通常是因为缺少合适的中文 TTS 引擎支持[^2]。确保已经按照说明正确安装了 SAPI5 或 espeak-ng 并包含了中文的支持文件[^4]。 下面是个简单的例子展示如何设定为某个具体的语音: ```python # 假设 'zh' 表示中文发音人的标识符 desired_voice_id = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\TTS_MS_ZH-CN_HUIHUI_11.0" engine.setProperty('voice', desired_voice_id) # 测试输出段话 text_to_say = "你好世界!" engine.say(text_to_say) engine.runAndWait() ``` 请注意,实际应用中的 `desired_voice_id` 应该根据个人计算机上的实际情况而定;上述路径仅为示范用途。可通过前面提到的方法遍历所有的 `Voice` 来查找适合自己的选项。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值