Мой 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.