5

此代码有效,但我只能在 Microsoft Windows 中预装的声音之间切换。这些声音是“Microsoft David Mobile”和“Microsoft Zira Mobile”。

后来我安装了“Microsoft Kalpana Mobile”并将其设置为默认的 Windows 语音。但我仍然无法切换到“Microsoft Kalpana Mobile”。代码是-

import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) #changing index changes voices but ony 0 and 1 are working here
engine.say('Hello World')
engine.runAndWait()

只有 0 和 1 在voices[]中用作索引。

我想让“Microsoft Kalpana Mobile”发言。在过去的两个月里,我一直在做这个项目。如果这不起作用,我所有的努力都会付诸东流。请帮忙:(

提前致谢。

4

6 回答 6

15

你可以试试这段代码:

import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
    print(voice, voice.id)
    engine.setProperty('voice', voice.id)
    engine.say("Hello World!")
    engine.runAndWait()
    engine.stop()

然后代替 for 循环,只需选择您喜欢的 voice.id

于 2017-07-05T16:36:32.890 回答
4

我刚刚注意到。设置语言⇓ 这只是我的默认语言设置是“ja_JP”。

import pyttsx3

engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
    print voice
    if voice.languages[0] == u'en_US':
        engine.setProperty('voice', voice.id)
        break

engine.say('Hello World')
engine.runAndWait()

或者

voice.name == 'Alex'
于 2018-01-08T10:01:25.763 回答
0
import pyttsx3

engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[3].id)
engine.say("hello")
engine.runAndWait()

如果您已经有如下代码:

brain = "hello"

你可以试试这个:

import pyttsx3

engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
engine.say(brain)
engine.runAndWait()
于 2021-01-23T13:17:05.873 回答
0

您必须在窗口的注册表文件中添加语音“Microsoft Kalpana Mobile”。请检查此链接,以便您清楚如何在窗口的注册表中添加语音。

  1. 单击窗口键 + r
  2. 输入 regedit 并按 Enter
  3. 展开 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\
  4. 在那里你找到了你所有的声音。将“Microsoft Kalpana Mobile”导出到您的特定语音文件夹中。
  5. 在记事本中打开导出的文件,将整个文件中的“Speech_OneCore”替换为“Speech”,然后再次保存。
  6. 现在双击该文件并再次合并它。现在尝试使用“Microsoft Kalpana Mobile”语音。
于 2021-12-12T10:01:11.023 回答
0
voices = engine.getProperty('voices')

“声音”是声音列表。所以我们需要确定我们想要设置的语音索引。从索引 = 0 开始。第一声部

运行一个循环,您将看到带有索引和名称的声音

import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
index = 0
for voice in voices:
   print(f'index-> {index} -- {voice.name}')
   index +=1
engine.runAndWait()

然后只需为第四个声音设置索引“voices[3].id”,例如索引“3”

engine.setProperty('voice', voices[3].id)

完整的代码可能如下所示:

import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[3].id)
engine.say("hello I am the voice from your PC")
engine.runAndWait()
于 2021-01-19T01:39:19.190 回答
0

注册表编辑器

Windows 11 在其父语音文件夹中的Voices文件夹中安装了 3 个音频。

您需要在窗口的注册表文件中添加“Microsoft Kalpana Mobile”。

很少有声音及其地址位置。

  1. 大卫(索引 = 0)
  2. 榛树(指数 = 1)
  3. ZIRA(索引 = 2)

这些声音存储在:* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices*

您可以使用以下代码在任何编辑器中打印这些地址:

import pyttsx3

engine = pyttsx3.init('sapi5')

print('DAVID: ' + voices[0].id)
print('HAZEL: ' + voices[1].id)
print('ZIRA: ' + voices[2].id)

您也可以通过以下方法知道音频的名称。

。姓名

于 2022-02-06T17:16:16.420 回答