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
Наконец, вы можете прослушать более понятный выходной голос по сравнению с исходным голосом.