6

我测试了文本转语音模块,即 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()
4

7 回答 7

5

现实情况是,核心 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 女声

于 2021-02-17T00:24:41.587 回答
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()
于 2021-02-18T18:00:30.653 回答
2

您可以通过编写以下 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....
于 2021-05-16T12:01:10.697 回答
0

去尝试一下:

engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('rate', 196)
engine.setProperty('volume', 2.7)
engine.setProperty('voice', voices[1].id)
于 2021-08-31T09:17:42.943 回答
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,但它似乎不再起作用了。我猜谷歌正在更改翻译包中的某些内容并且 gTTS 崩溃(6 个月前工作但现在不再)。我找到了一个解决方案,但我不知道这是否会让您满意:

  1. 编写一个使用 SVOX pico2wave 进行文本到语音的 bash 脚本(这是我发现的唯一一个带有女性声音的库,我不能在 Python 中使用,但在 Bash 中可以正常工作)。
  2. 让你的 Python 项目没有语音输入/输出部分,就像文本输入/输出一样。
  3. 为语音转文本制作另一个 Bash 脚本。
  4. 制作另一个使用 3 比 2 比 1 的 Bash 脚本。想法是:
    • 通过 Bash 获取语音,输出应发送到 Python 代码。
    • Python 代码应该管理数据并给出输出。
    • 输出应触发文本到语音 Bash 脚本。

瞧,你有一个女性的声音。解决方法,但总比没有好。

于 2020-11-05T21:55:22.023 回答
-1

pyttsx3 的官方 pypi 页面

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

于 2019-09-02T04:55:15.360 回答
-2

如果您在下面运行代码,您将获得女性声音.. 聆听并享受!

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()

在运行此代码之前,请等待等待,您需要安装附加包,只需复制并粘贴到您的 powershell 或环境中的文本下方

pip install pyttsx3

通常windows都有内置语音

print(voices[0].id) # this guy name is David

print(voices[1].id) # beautiful women name ZIRA(hahaha)
于 2020-10-10T08:17:41.747 回答