Мой pyttsx3 не работает должным образом, так как не дает голоса Дэвида

Мне нужен Microsoft David Voice для моего модуля pyttsx3. Я написал следующий код. С участием voices[0].id он издает Зиру (женский голос), и когда я использую voices[1].id это показывает ошибку list is out of index. Пожалуйста помоги. Как мне получить голос Дэвида?

import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id) #changing index changes voices but ony 0 and 1 are working here
engine.say('Hello World')
engine.runAndWait()
Traceback (most recent call last):
  File "C:/Users/admin/Desktop/delet.py", line 4, in <module>
    engine.setProperty('voice', voices[1].id) #changing index changes voices but ony 0 and 1 are working here
IndexError: list index out of range

2 ответа

Я нашел этот учебник: https://puneet166.medium.com/how-to-added-more-speakers-and-voices-in-pyttsx3-offline-text-to-speech-812c83d14c13 .

В моем случае мне просто нужно было добавить больше голосов для диктора Windows. Для голоса Дэвида я добавил «английский (США)».

У меня тоже была такая же проблема. Это возникает, когда в наших окнах нет голоса. вы можете проверить, выполнив поиск настроек речи на значке Windows (Windows 10)

При выборе голоса вы обнаружите, что у вас только 1 голос, но когда вы опуститесь, вы сможете добавить голос. там вы должны добавить английский (нас) или любой другой в соответствии с вашими требованиями.

когда голос будет загружен, вкладка настроек автоматически закроется, и через несколько секунд у вас будет 2 голоса в Python IDLE.

Вы можете проверить это:

      import pyttsx3
engine = pyttsx3.init('sapi5')
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()

раньше на выходе был 1 голос а теперь у меня 2 голоса то есть Зира и Давид.

убедитесь, что вы используете «sapi5» при инициализации pyttsx3.

Другие вопросы по тегам