espeak текст в речь звучит очень странно при запуске кода pyttsx3 на Ubuntu 20.04 LTS

Я немного новичок в Linux, и я попытался запустить этот код Python. В первый раз он попросил меня установить libespeak-dev и попробовать снова запустить код. После его установки, когда я запускал код, звук был очень странным и очень роботизированным, и его было ужасно слушать. Вот код:

      import pyttsx3

engine = pyttsx3.init()


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


speak("Hello World and this is a test.")

Когда я пытался запустить тот же код в Windows 10 с той же версией Python, он звучал нормально, но когда я пытался запустить код в Ubuntu 20.04 LTS, он звучал очень ужасно.

По некоторым причинам я не могу прикрепить mp3-файл, чтобы рассказать, как ужасно это звучит. Кстати, я использую Ubuntu 20.04 LTS, которая поставляется с установкой Python 3.8.5 по умолчанию. Есть ли какое-нибудь решение для этого? Потому что звучит очень плохо. Заранее спасибо...

1 ответ

Я также столкнулся с такой проблемой, когда компилировал программу JARVIS , подобную этой, в Ubuntu20.04 LTS, и голос был очень ужасным. Поэтому после некоторых исследований я пришел к решению.

Написанный вами код будет нормально работать в таких ОС, как Windows, потому что, согласно библиотеке pyttsx3 , следующие драйверы используются в разных ОС.

  • sapi5 — SAPI5 в Windows
  • nsss — NSSpeechSynthesizer в Mac OS X
  • espeak — eSpeak на любой другой платформе (Linux)

Так как вы компилируете в Ubuntu20.04, сначала вам нужно скачать espeak

      $ sudo apt-get install espeak

вы можете использовать код следующим образом:

      import pyttsx3

engine = pyttsx3.init("espeak")
voices = engine.getProperty('voices')
engine.setProperty('voice',voices[11].id) #English

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


speak("Hello World and this is a test.")

В строке 4 voices[11].idиспользуется для объявления языка вывода голоса, и теперь он установлен на английский, при изменении индекса язык изменится. Чтобы увидеть все голоса, присутствующие в модуле espeak , выполните следующую команду в терминале

      sudo espeak --voices

Наконец, вы можете прослушать более понятный выходной голос по сравнению с исходным голосом.

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