Нека първо обясня някои съкращения и някои основни термини, които ще използваме в тази публикация.
За тези, които не знаят какво означава TTS, това означава Text To Speech.
По принцип това, което искаме да направим, е да дадем някакъв текст на нашата програма и тя ще преобразува този текст в речта и ще ни го прочете.
С други думи, това е да накараме компютъра да ни чете.
Сега има различни начини да се направи този TTS, но тук ще обсъдим библиотека, която лично съм използвал и постигна добри резултати.
Ще използваме pyttsx3
.
какво е pyttsx3
pyttsx3 е библиотека на Python, която ни позволява да конвертираме текст в реч. Така че ние ще го предоставим, нашия текст и той ще преобразува този текст в аудио.
Това е обвивка около няколко машини за преобразуване на текст в говор, включително двигателя на Microsoft Text-to-Speech (TTS).
Забавните неща
Сега нека видим как да използваме тази библиотека за TTS.
Първото и най-важно нещо, което трябва да направим, е да инсталираме тази библиотека и можем да направим това с помощта на pip
, който идва в пакет с инсталацията на python.
Синтаксисът за тази инсталация е подобен на всички pip installs
.
pip install pyttsx3
Ако в случай, че тази инсталация ви даде грешка cmd not found
, опитайте да използвате pip3
вместо pip
като:
pip3 install pyttsx3
След инсталирането нека проверим дали е инсталирано успешно или не, като изпълним тази команда:
pip3 freeze
Той ще върне списък на всички пакети, инсталирани в нашия env. Ако намерите pyttsx3
в този списък, значи сме инсталирали успешно pyttsx3
и сме готови да го използваме в нашия проект.
След като инсталацията приключи, трябва да импортираме тази библиотека в нашия проект и след това трябва да инициализираме двигателя за текст към реч. Този двигател е най-важната част и именно той ще изпълни TTS вместо нас.
Importing pyttsx3 and initializing the text-to-speech engine:
import pyttsx3
engine = pyttsx3.init()
.init()
е методът, който трябва да бъде извикан, за да се инициализира двигателят.
Сега, когато нашият двигател е инициализиран, можем да го използваме за нашия TTS, като извикаме метода say(text)
.
engine.say(text)
engine.runAndWait()
Тази скорост и обем на изговорения текст ще бъдат зададени по подразбиране и можем да ги променим по следните начини.
Всичко, от което се нуждаем, е да зададем някои стойности за нашия двигател. Това е като да казваш на двигателя какво да използва.
И така, трябва да направим това по следния начин:
- Първо ще получим това свойство с помощта на
getProperty(name)
- След това ще зададем това свойство с помощта на
setProperty(name, value)
Ще зададем скоростта, а също и обема на двигателя.
Настройка на скоростта и силата на звука на речта:
rate = engine.getProperty('rate')
engine.setProperty('rate', rate-100)
По подразбиране скоростта е 200, така че ще я намалим до 100. rate
е скоростта на говорене, а 200 е висока за нас. Затова го намалихме.
Изяснете каква е тази ставка??
След като зададем скоростта, ще променим или зададем силата на звука, като първо получим свойството обем и след това го зададем.
volume = engine.getProperty('volume')
engine.setProperty('volume', volume+0.50)
Обемът по подразбиране е 1, т.е. 100%, ние ще го увеличим до 150%, като добавим .50 към получената стойност от четене на свойството обем.
Сега сме готови с настройката на тези две свойства, ще извикаме say()
и речта вече ще има нашия параметър, т.е. 1x
скорост и 1.50
обем.
engine.say("Hello, This is the test for the pyttsx3")
engine.runAndWait()
Сега това runAndWait
е важно за нас. Искаме да стартираме този двигател и да продължим да работи, докато не завърши TTS на предадения текст.
Освен това, променяйки силата на звука, можем да променим и гласа, който се говори. Сега тук има 2 гласа. Единият е за жена и един за мъж.
Ще използваме същия синтаксис за настройка на нашето свойство, както направихме по-рано.
Имайте предвид:
voices[0]
е за мъж.voices[1]
е за жена.
Нека променим гласа:
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
Ще трябва да извикаме свойството id
на избрания глас и тогава сме готови.
Можем да копираме горния код на .say()
и този път гласът ще бъде женски вместо този по подразбиране, който е мъжки.
След като приключим с настройването на параметрите и тестването на TTS, вече можем да запазим аудио файла на генерирания TTS.
Вместо да извикаме .say()
, този път ще извикаме .save_to_file
и ще предадем текста, както и името на изходящия файл, в който искаме да бъде записано нашето TTS аудио.
Този път няма да прочете текста на глас, а ще го запази във файла, чието име сме предали.
engine.save_to_file("Hello, this is test for pyttsx3.", "test.mp3")
engine.runAndWait()
След като стартираме това, ще имаме файл с име,test.mp3
с генерирания TTS.
Също така, че pyttsx3 има няколко други метода и свойства, които можете да използвате, за да персонализирате изхода от текст към говор, като например настройка на височината, език и т.н. Можете да намерите повече информация за тях в документацията на pyttsx3.
Заключителни думи
Вижте колко лесно е да генерирате TTS от текст или дори от файла, съдържащ текста.
Можем да използваме тези генерирани TTS за различни цели и зависи от вас.
Знам, че сега ще можете да изпълнявате този TTS с лекота и ще правите страхотни проекти, използвайки това.
Сега направете едно нещо, последвайте ме в twitter, ако харесвате съдържанието и искате да останете свързани.
Благодарим ви, че прочетохте, насладете се на съдържанието.