Нека първо обясня някои съкращения и някои основни термини, които ще използваме в тази публикация.

За тези, които не знаят какво означава 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, ако харесвате съдържанието и искате да останете свързани.

Благодарим ви, че прочетохте, насладете се на съдържанието.