我测试了文本语音转换模块,即pyttsx3,它工作正常,但是在打印文本时我听不到女性的声音。关于将性别从男性更改为女性有什么建议吗? 顺便说一句,我在树莓派上,并且正在使用Linux操作系统。
提前谢谢
tts.py
engine = pyttsx.init()
voices = engine.getProperty('voices')
for voice in voices:
engine.setProperty('voice', voice.id)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()
答案 0 :(得分:2)
我使用 pyttsx3 找到了一些可接受的女声(就我而言)。我使用的是 MacOS High Sierra、Python 3.7.3 和 Pyttsx3 2.90。我已在下面运行此代码以使用此 Samantha 语音 ID:
import pyttsx3
engine = pyttsx3.init()
engine.setProperty('voice', 'com.apple.speech.synthesis.voice.samantha')
我发现很多女性声音都在寻找性别属性('VoiceGenderFemale')。不过,大部分都很奇怪,上面这个是最能接受的。我发现它运行此代码:
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
voiceFemales = filter(lambda v: v.gender == 'VoiceGenderFemale', voices)
for v in voiceFemales:
engine.setProperty('voice', v.id)
engine.say('Hello world from ' + v.name)
engine.runAndWait()
答案 1 :(得分:1)
实际情况是,核心 pyttsx3 包中包含无女声。 但是如果您使用 linux/espeak,则有一个解决方案。您可以使用其中之一来模拟女声。
engine.setProperty('voice', 'english+f1')
engine.setProperty('voice', 'english+f2')
engine.setProperty('voice', 'english+f3')
engine.setProperty('voice', 'english+f4')
engine.setProperty('voice', 'english_rp+f3') #my preference
engine.setProperty('voice', 'english_rp+f4')
您也可以通过将 +f1 到 +f4 添加到其他基本语音中来进行播放。 有关更多信息,您可以在 github 中查看此问题:pyttsx female voice。
答案 2 :(得分:0)
来自official pypi page for pyttsx3:
voices = engine.getProperty('voices') #getting details of current voice
#engine.setProperty('voice', voices[0].id) #changing index, changes voices. o for male
engine.setProperty('voice', voices[1].id) #changing index, changes voices. 1 for female
答案 3 :(得分:0)
Pyttsx提供更改选项:
engine.setProperty('voice', voices[1].id)
我知道它不起作用。然后我想在Python上运行:
for voice in voices:
print("ID: %s" % voice.id)
print("Name: %s" % voice.name)
print("Age: %s" % voice.age)
print("Gender: %s" % voice.gender)
print("Languages Known: %s" % voice.languages)
当我看到输出时,没有女性声音。我在Windows上尝试了相同的库,一切都很好。因此,您可以通过更改ID来更改声音,但不能更改为女性声音,不能更改为Linux,也不使用标准软件包。也许可能有一种实现语音包的方法,但这可能很棘手。
我尝试了gTTS,但似乎不再工作了。我想Google会改变翻译包中的某些内容,并且gTTS崩溃(在6个月前有效,但现在不再可用)。我找到了解决方案,但我不知道这是否会让您满意:
Voila,您的声音是女性的。可以解决,但总比没有好。
答案 4 :(得分:0)
您可以通过编写以下 1 行来获得女声:
engine.setProperty('voice', voices[1].id) # this is female voice
您可以通过编写以下代码行来打印所有声音:
voices = engine.getProperty('voices')
for v in voices:
print(v)
示例输出:
<Voice id=com.apple.speech.synthesis.voice.Alex
name=Alex
languages=['en_US']
gender=VoiceGenderMale
age=35>
<Voice id=com.apple.speech.synthesis.voice.alice
name=Alice
languages=['it_IT']
gender=VoiceGenderFemale
age=35>
<Voice id=com.apple.speech.synthesis.voice.alva
name=Alva
languages=['sv_SE']
gender=VoiceGenderFemale
age=35>
<Voice id=com.apple.speech.synthesis.voice.amelie
name=Amelie
languages=['fr_CA']
gender=VoiceGenderFemale
age=35>
<Voice id=com.apple.speech.synthesis.voice.anna
name=Anna....
答案 5 :(得分:-1)
如果您在下面的代码中运行,则会得到女性的声音。。聆听并享受!!
import pyttsx3
engine = pyttsx3.init() # object creation
voices = engine.getProperty('voices') # getting details of current voice
#engine.setProperty('voice', voices[0].id) # changing index, changes voices. 0 for male
engine.setProperty('voice', voices[1].id) # changing index, changes voices. 1 for female
engine.say("I will speak this text")
engine.runAndWait()
Opps等待运行此代码之前,您需要安装其他软件包,只需在Powershell或您的环境中复制并粘贴以下文本
pip install pyttsx3
通常Windows内置语音
print(voices[0].id) # this guy name is David
print(voices[1].id) # beautiful women name ZIRA(hahaha)