Я не могу изменить голоса с помощью модуля pyttsx3! Любая индексация возвращает мне только DAVID

#python #python-3.x #voice-recognition #pyttsx

#python #python-3.x #распознавание голоса #pyttsx

Вопрос:

Я пытаюсь создать виртуального помощника. Мне нужен голос с именем PaulM, который присутствует в моем regedit. Но любой индекс возвращает мне только DAVID voice, даже не ZIRA или любой другой.

 import pyttsx3
import datetime
import speech_recognition as sr

engine = pyttsx3.init('sapi5')

voices = engine.getProperty('voices')
engine.setProperty('voices', voices[2].id)
i=0
while i<5:
    print(voices[i].id)
    i  = 1
rate = engine.getProperty('rate')
engine.setProperty('rate', 150)

volume = engine.getProperty('volume')
engine.setProperty('volume',0.5 )

def speak(audio):
    engine.say(audio)
    engine.runAndWait()

def wishMe():
    hour = int(datetime.datetime.now().hour)
    if hour>=0 and hour<12:
        speak('Good morning')
    elif hour>=12 and hour<18:
        speak("Hi there, Good Afternoon")
    else:
        speak("Hi there, Good Evening")

if __name__ == "__main__":
    wishMe()
    speak("Good morning and thank you for one more day of knowing me to the core but still not leaving me. You’re a good friend indeed!")
  
 HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_EN-US_DAVID_11.0
HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_EN-GB_HAZEL_11.0
HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensMSTTS_V110_frFR_PaulM
HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_EN-US_ZIRA_11.0
HKEY_LOCAL_MACHINESOFTWAREMicrosoftSpeechVoicesTokensTTS_MS_FR-FR_HORTENSE_11.0
  

Ответ №1:

Это не зависит от pyttsx3. Голоса поступают из ‘sapi5’.Поэтому обязательно загрузите последнюю версию sapi5 с —https://www.microsoft.com/en-us/download/details.aspx?id=10121 Если на вашем компьютере предварительно установлен sapi5, вам нужно проверить, сколько лет вашему компьютеру, поскольку голоса теперь изменены на 2, но это не всегда одно и то же. Раньше был только David . HTH

Ответ №2:

Я видел ваш код, со мной была та же проблема. И я решил это, позвольте мне рассказать вам. Это ваш код:

     voices = engine.getProperty('voices')
    engine.setProperty('voices', voices[2].id)
  

и исправьте это, заменив свой код на:

     voices = engine.getProperty('voices')
    engine.setProperty('voice', voices[2].id)
  

Просто удалите «s» из «voices», IDK это ошибка. Но почему-то ошибка не отображается.

Надеюсь, это поможет!