Установка из исходников синтезатора речи Festival 2.4 на Ubuntu 14.04 Trusty Tahr. Добавление в синтезатор Festival поддержку русской речи.
Наткнулся недавно на такую замечательную программу Festival. Данная утилита является синтезатором речи, а именно с помощью нее можно заставить ваш ПК читать тексты, записывать прочтенный текст в звуковой файл. Мне показалась данная программа интересной и я решил разобрать как установить ее на Ubuntu 14.04 Trusty Tahr.
JUQwJUExJUQwJUJFJUQwJUIxJUQwJUI4JUQxJTgwJUQwJUIwJUQxJTgyJUQxJThDJTIwJUQxJThGJTIwJUQxJTgwJUQwJUI1JUQxJTg4JUQwJUI4JUQwJUJCJTIwJUQwJUI4JUQwJUI3JTIwJUQwJUI4JUQxJTgxJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUJEJUQwJUI4JUQwJUJBJUQwJUJFJUQwJUIyJTIwJUQwJUI4JTIwJUQwJUJGJUQwJUJFJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQwJUJEJUQxJThFJUQxJThFJTIwJUQwJUIyJUQwJUI1JUQxJTgwJUQxJTgxJUQwJUI4JUQxJThFJTIwJUQwJUJEJUQwJUIwJTIwJUQwJUI0JUQwJUIwJUQwJUJEJUQwJUJEJUQxJThCJUQwJUI5JTIwJUQwJUJDJUQwJUJFJUQwJUJDJUQwJUI1JUQwJUJEJUQxJTgyJTIwMi40LiUyMCVEMCU5MiUyMCVEMSU4MCVEMCVCNSVEMCVCRiVEMCVCRSVEMCVCNyVEMCVCOCVEMSU4MiVEMCVCRSVEMSU4MCVEMCVCOCVEMSU4RiVEMSU4NSUyMFVidW50dSUyMDE0LjA0JTIwVHJ1c3R5JTIwVGFociVDMiVBMCVEMCVCRCVEMCVCMCVEMSU4NSVEMCVCRSVEMCVCNCVEMCVCOCVEMSU4MiVEMSU4MSVEMSU4RiUyMCVEMCVCMiVEMCVCNSVEMSU4MCVEMSU4MSVEMCVCOCVEMSU4RiUyMDIuMS4lMjAlRDAlQTIlRDAlQjAlRDAlQkElMjAlRDAlQjYlRDAlQjUlMjAlRDElODAlRDAlQjAlRDAlQjclRDAlQkUlRDAlQjElRDElODAlRDAlQjAlRDAlQkIlMjAlRDAlQkElRDAlQjAlRDAlQkElMjAlRDAlQjclRDAlQjAlRDElODElRDElODIlRDAlQjAlRDAlQjIlRDAlQjglRDElODIlRDElOEMlMjBGZXN0aXZhbCUyMCVEMCVCMyVEMCVCRSVEMCVCMiVEMCVCRSVEMSU4MCVEMCVCOCVEMSU4MiVEMSU4QyUyMCVEMCVCRiVEMCVCRS0lRDElODAlRDElODMlRDElODElRDElODElRDAlQkElRDAlQjgu
Создаем временный каталог, куда будем скачивать необходимые файлы для сборки Festival
sudo mkdir /usr/src/temp
Переходим в созданный каталог
cd /usr/src/temp
Скачиваем архивы сборки Festival
sudo wget http://jakondo.ru/wp-content/uploads/file-manager/Festival/speech_tools-2.4-release.tar.gz sudo wget http://jakondo.ru/wp-content/uploads/file-manager/Festival/festival-2.4-release.tar.gz sudo wget http://jakondo.ru/wp-content/uploads/file-manager/Festival/festlex_CMU.tar.gz sudo wget http://jakondo.ru/wp-content/uploads/file-manager/Festival/festlex_OALD.tar.gz sudo wget http://jakondo.ru/wp-content/uploads/file-manager/Festival/festlex_POSLEX.tar.gz
JUQwJUEwJUQwJUIwJUQxJTgxJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUJFJUQwJUIyJUQxJThCJUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJBJUQwJUIwJUQxJTg3JUQwJUIwJUQwJUJEJUQwJUJEJUQxJThCJUQwJUI1JTIwJUQwJUIwJUQxJTgwJUQxJTg1JUQwJUI4JUQwJUIyJUQxJThC
sudo tar -zxvf speech_tools-2.4-release.tar.gz -C /usr/src/ sudo tar -zxvf festival-2.4-release.tar.gz -C /usr/src/ sudo tar -xvf festlex_CMU.tar.gz -C /usr/src/ sudo tar -xvf festlex_OALD.tar.gz -C /usr/src/ sudo tar -xvf festlex_POSLEX.tar.gz -C /usr/src/
Установим зависимость, для успешной сборки пакетов
sudo apt-get install libncurses-dev
JUQwJUEyJUQwJUI1JUQwJUJGJUQwJUI1JUQxJTgwJUQxJThDJTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUJGJUQxJTgwJUQwJUI4JUQxJTgxJUQxJTgyJUQxJTgzJUQwJUJGJUQwJUIwJUQxJTgyJUQxJThDJTIwJUQwJUJBJTIwJUQxJTgxJUQwJUIxJUQwJUJFJUQxJTgwJUQwJUJBJUQwJUI1JTIwJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUI1JUQxJTgyJUQwJUJFJUQwJUIyLiUyMCVEMCVBMSVEMCVCRiVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCMCUyMCVEMSU4MSVEMCVCRSVEMCVCMSVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCQyUyMCVEMCVCRiVEMCVCMCVEMCVCQSVEMCVCNSVEMSU4MiUyMHNwZWVjaF90b29scyUzQQ==
cd /usr/src/speech_tools sudo ./configure sudo make sudo make install
JUQwJUEyJUQwJUI1JUQwJUJGJUQwJUI1JUQxJTgwJUQxJThDJTIwJUQxJTgxJUQwJUJFJUQwJUIxJUQwJUI4JUQxJTgwJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUI1JUQxJTgyJTIwZmVzdGl2YWwlM0E=
cd .. cd festival sudo ./configure sudo make sudo make install
Добавляем в PATH путь до бинарных файлов:
export PATH=$PATH:/usr/src/festival/bin/
Переходим во временный каталог:
cd /usr/src/temp
JUQwJUExJUQwJUJBJUQwJUIwJUQxJTg3JUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI3JUQwJUIyJUQxJTgzJUQwJUJBJUQwJUJFJUQwJUIyJUQxJThCJUQwJUI1JTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQxJThCJTJDJTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTgyJUQxJThCJTIwRmVzdGl2YWwlMjAoJUQwJTkwJUQwJUJEJUQwJUIzJUQwJUJCJUQwJUI4JUQwJUI5JUQxJTgxJUQwJUJBJUQwJUI4JUQwJUI5JTJDJTIwJUQwJUEwJUQxJTgzJUQxJTgxJUQxJTgxJUQwJUJBJUQwJUI4JUQwJUI5KS4lMjAlRDAlOTAlRDAlQkQlRDAlQjMlRDAlQkIlRDAlQjglRDAlQjklRDElODElRDAlQkElRDAlQjAlRDElOEYlMjAlRDElODAlRDAlQjUlRDElODclRDElOEMlMkMlMjAlRDAlQjQlRDAlQkUlRDElODElRDElODIlRDElODMlRDAlQkYlRDAlQkQlRDAlQjAlMjAlRDAlQjIlMjAlRDAlQkMlRDElODMlRDAlQjYlRDElODElRDAlQkElRDAlQkUlRDAlQkMlMjAlRDAlQjglMjAlRDAlQjYlRDAlQjUlRDAlQkQlRDElODElRDAlQkElRDAlQkUlRDAlQkMlMjAlRDAlQjglRDElODElRDAlQkYlRDAlQkUlRDAlQkIlRDAlQkQlRDAlQjUlRDAlQkQlRDAlQjglRDAlQjglMkMlMjAlRDAlQjAlMjAlRDElODAlRDElODMlRDElODElRDElODElRDAlQkElRDAlQjAlRDElOEYlMjAlRDElODAlRDAlQjUlRDElODclRDElOEMlMjAlRDElODIlRDAlQkUlRDAlQkIlRDElOEMlRDAlQkElRDAlQkUlMjAlRDAlQjIlMjAlRDAlQkMlRDElODMlRDAlQjYlRDElODElRDAlQkElRDAlQkUlRDAlQkMu
sudo wget http://jakondo.ru/wp-content/uploads/file-manager/Festival/kal_diphone.tar.gz sudo wget http://jakondo.ru/wp-content/uploads/file-manager/Festival/msu_ru_nsh_clunits-0.5.tar.bz2
Создаем каталоги для расположения речевых данных:
sudo mkdir -p /usr/src/festival/lib/voices/english sudo mkdir -p /usr/src/festival/lib/voices/russian
Распаковываем архив с английской речью:
sudo tar -zxvf kal_diphone.tar.gz -C /usr/src/festival/lib/voices/english/
JUQwJUEwJUQwJUIwJUQxJTgxJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUJFJUQwJUIyJUQxJThCJUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUIwJUQxJTgwJUQxJTg1JUQwJUI4JUQwJUIyJTIwJUQxJTgxJTIwJUQxJTgwJUQxJTgzJUQxJTgxJUQxJTgxJUQwJUJBJUQwJUJFJUQwJUI5JTIwJUQxJTgwJUQwJUI1JUQxJTg3JUQxJThDJUQxJThFJTNB
sudo tar -jxvf msu_ru_nsh_clunits-0.5.tar.bz2 -C /usr/src/festival/lib/voices/russian/
JUQwJTkyJUQwJUJEJUQwJUI1JUQxJTgxJUQwJUI1JUQwJUJDJTIwJUQwJUJEJUQwJUI1JUQwJUJFJUQwJUIxJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUI4JUQwJUJDJUQxJThCJUQwJUI1JTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI5JUQwJUJBJUQwJUI4JTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwJUQwJUIyJUQwJUJFJUQxJTgxJUQwJUJGJUQxJTgwJUQwJUJFJUQwJUI4JUQwJUI3JUQwJUIyJUQwJUI1JUQwJUI0JUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTIwJUQxJTgwJUQxJTgzJUQxJTgxJUQxJTgxJUQwJUJBJUQwJUJFJUQwJUI5JTIwJUQxJTgwJUQwJUI1JUQxJTg3JUQwJUI4LiUyMCVEMCVBMCVEMCVCNSVEMCVCNCVEMCVCMCVEMCVCQSVEMSU4MiVEMCVCOCVEMSU4MCVEMSU4MyVEMCVCNSVEMCVCQyUyMCVEMSU4NCVEMCVCMCVEMCVCOSVEMCVCQiUyMCVEMCVCRCVEMCVCMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCOSVEMCVCQSVEMCVCOCUyMCVEMSU4RiVEMCVCNyVEMSU4QiVEMCVCQSVEMCVCRSVEMCVCMiUzQQ==
sudo nano /usr/src/festival/lib/languages.scm
JUQwJTkyJTIwJUQwJUJEJUQwJUIwJUQxJTg3JUQwJUIwJUQwJUJCJUQwJUJFJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQwJUIwJTIwJUQwJUI0JUQwJUJFJUQwJUIxJUQwJUIwJUQwJUIyJUQwJUJCJUQxJThGJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUJBJUQwJUI4JTNB
(define (language_russian) "(language_russian) Set up language parameters for Russian." (set! male1 voice_msu_ru_nsh_clunits) (male1) (Parameter.set 'Language 'russian) )
Находим строки:
((equal? language 'americanenglish) (language_american_english))
JUQwJTlEJUQwJUI4JUQwJUI2JUQwJUI1JTIwJUQwJUIyJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUIyJUQwJUJCJUQxJThGJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQxJTgzJUQxJThFJUQxJTg5JUQwJUI4JUQwJUI1JTIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUJBJUQwJUI4JTNB
((equal? language 'russian) (language_russian))
JUQwJUExJUQwJUJFJUQxJTg1JUQxJTgwJUQwJUIwJUQwJUJEJUQxJThGJUQwJUI1JUQwJUJDJTIwJUQwJUI4JTIwJUQwJUI3JUQwJUIwJUQwJUJBJUQxJTgwJUQxJThCJUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI1JUQwJUJBLiUyMCVEMCU5RCVEMCVCMCUyMCVEMSU4RCVEMSU4MiVEMCVCRSVEMCVCQyUyMCVEMSU4MyVEMSU4MSVEMSU4MiVEMCVCMCVEMCVCRCVEMCVCRSVEMCVCMiVEMCVCQSVEMCVCMCUyMCVEMCVCOCUyMCVEMCVCRCVEMCVCMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCOSVEMCVCQSVEMCVCMCUyMEZlc3RpdmFsJTIwJUQwJUI3JUQwJUIwJUQwJUIyJUQwJUI1JUQxJTgwJUQxJTg4JUQwJUI1JUQwJUJEJUQwJUIwLiUyMCVEMCU5RiVEMSU4MCVEMCVCRSVEMCVCMiVEMCVCNSVEMSU4MCVEMCVCOCVEMCVCQyUyMCVEMSU4MCVEMCVCMCVEMCVCMSVEMCVCRSVEMSU4MiVEMSU4MyUyMCVEMCVCRiVEMSU4MCVEMCVCRSVEMCVCMyVEMSU4MCVEMCVCMCVEMCVCQyVEMCVCQyVEMSU4QiUyQyUyMCVEMCVCMiVEMCVCRSVEMSU4MSVEMCVCRiVEMSU4MCVEMCVCRSVEMCVCOCVEMCVCNyVEMCVCMiVEMCVCNSVEMCVCNCVEMCVCNSVEMCVCQyUyMCVEMSU4MiVEMCVCNSVEMCVCQSVEMSU4MSVEMSU4MiUyMCVEMCVCRCVEMCVCMCUyMCVEMCVCMCVEMCVCRCVEMCVCMyVEMCVCQiVEMCVCOCVEMCVCOSVEMSU4MSVEMCVCQSVEMCVCRSVEMCVCQyUzQQ==
echo "Hello world" | festival --tts
JUQwJTk0JUQwJUJCJUQxJThGJTIwJUQwJUIyJUQwJUJFJUQxJTgxJUQwJUJGJUQxJTgwJUQwJUJFJUQwJUI4JUQwJUI3JUQwJUIyJUQwJUI1JUQwJUI0JUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTIwJUQxJTgyJUQwJUI1JUQwJUJBJUQxJTgxJUQxJTgyJUQwJUIwJTIwJUQwJUJEJUQwJUIwJTIwJUQxJTgwJUQxJTgzJUQxJTgxJUQxJTgxJUQwJUJBJUQwJUJFJUQwJUJDJTNB
echo "Привет" | festival --tts --language russian
Если все сделали правильно, то услышим голос на английском и на русском.
JUQwJTk1JUQxJTgxJUQwJUJCJUQwJUI4JTIwJUQwJUJEJUQxJTgzJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUI4JUQxJTgyJUQxJThDJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQwJUJFJUQwJUIyJUQwJUIwJUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQxJTgwJUQxJTgzJUQxJTgxJUQxJTgxJUQwJUJBJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUIzJUQwJUJFJUQwJUJCJUQwJUJFJUQxJTgxJUQwJUIwJTIwJUQwJUJGJUQwJUJFLSVEMSU4MyVEMCVCQyVEMCVCRSVEMCVCQiVEMSU4NyVEMCVCMCVEMCVCRCVEMCVCOCVEMSU4RSUyQyUyMCVEMSU4MiVEMCVCRSUyMCVEMSU4MCVEMCVCNSVEMCVCNCVEMCVCMCVEMCVCQSVEMSU4MiVEMCVCOCVEMSU4MCVEMSU4MyVEMCVCNSVEMCVCQyUyMCVEMSU4NCVEMCVCMCVEMCVCOSVEMCVCQiUzQQ==
sudo nano /usr/src/festival/lib/siteinit.scm
JUQwJTlGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUI0JTIwJUQxJTgyJUQwJUI1JUQwJUJBJUQxJTgxJUQxJTgyJUQwJUJFJUQwJUJDJTNB
(provide 'siteinit)
Пишем следующее:
(set! voice_default 'voice_msu_ru_nsh_clunits)
JUQwJUEyJUQwJUI1JUQwJUJGJUQwJUI1JUQxJTgwJUQxJThDJTIwJUQxJTg3JUQxJTgyJUQwJUJFJUQwJUIxJUQxJThCJTIwJUQxJTgzJUQxJTgxJUQwJUJCJUQxJThCJUQxJTg4JUQwJUIwJUQxJTgyJUQxJThDJTIwJUQwJUIyJUQwJUJFJUQxJTgxJUQwJUJGJUQxJTgwJUQwJUJFJUQwJUI4JUQwJUI3JUQwJUIyJUQwJUI1JUQwJUI0JUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQwJUJEJUQwJUIwJTIwJUQxJTgwJUQxJTgzJUQxJTgxJUQxJTgxJUQwJUJBJUQwJUJFJUQwJUJDJTIwJUQwJUJEJUQwJUI1JTIwJUQwJUJEJUQxJTgzJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQxJThDJTIwJUQwJUJBJUQwJUJCJUQxJThFJUQxJTg3JTIwJUUyJTgwJTk0bGFuZ3VhZ2UlMjBydXNzaWFuLg==
RmVzdGl2YWwlMjAlRDElODIlRDAlQjAlRDAlQkElMjAlRDAlQjYlRDAlQjUlMjAlRDAlQkMlRDAlQkUlRDAlQjYlRDAlQjUlRDElODIlMjAlRDElODMlRDAlQkElRDAlQjAlRDAlQjclRDAlQjAlRDAlQkQlRDAlQkQlRDElOEIlRDAlQjklMjAlRDElODIlRDAlQjUlRDAlQkElRDElODElRDElODIlMjAlRDAlQjclRDAlQjAlRDAlQkYlRDAlQjglRDElODElRDAlQjAlRDElODIlRDElOEMlQzIlQTAlRDAlQjIlMjAlRDAlQjclRDAlQjIlRDElODMlRDAlQkElRDAlQkUlRDAlQjIlRDAlQkUlRDAlQjklMjAlRDElODQlRDAlQjAlRDAlQjklRDAlQkIlMjB3YXYlM0E=
cat test.txt | text2wave > test.wav
Вот так можно указать какой речевой язык использовать при создании звукового файла (пример. использовать русский язык):
cat test.txt | text2wave > test.wav -eval '(voice_msu_ru_nsh_clunits)'
JUQwJTk1JUQxJTgxJUQwJUJCJUQwJUI4JTIwJUQwJUJEJUQwJUI1JUQwJUJFJUQwJUIxJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUI4JUQwJUJDJUQwJUJFJTIwJUQwJUI3JUQwJUIwJUQwJUI0JUQwJUIwJUQxJTgyJUQxJThDJTIwJUQwJUIxJUQwJUI4JUQxJTgyJUQxJTgwJUQwJUI1JUQwJUI5JUQxJTgyJTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwJUQwJUIyJUQxJThCJUQxJTg1JUQwJUJFJUQwJUI0JUQxJThGJUQxJTg5JUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQwJUI3JUQwJUIyJUQxJTgzJUQwJUJBJUQwJUJFJUQwJUIyJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQwJUIwJTJDJTIwJUQxJTgyJUQwJUJFJTIwJUQwJUJBJUQwJUJFJUQwJUJDJUQwJUIwJUQwJUJEJUQwJUI0JUQwJUIwJTIwJUQwJUIxJUQxJTgzJUQwJUI0JUQwJUI1JUQxJTgyJTIwJUQwJUIyJUQxJThCJUQwJUIzJUQwJUJCJUQxJThGJUQwJUI0JUQwJUI1JUQxJTgyJUQxJThDJTIwJUQxJTgyJUQwJUIwJUQwJUJBJTNB
cat test.txt | text2wave > test.wav -F 8000
Запись воспроизведения текста с последующей конвертацией звукового файла в формат mp3:
cat text.txt | text2wave | lame - test.mp3
Чтобы добиться более приемлемого произношения текста, в текста можно указывать где использовать ударения в словах, для более точного произношения. Это делается знаками (+, —, .), например:
echo "До+брый день.. Хочу сказать спас+ибо Жак+онде. за предоставленный материал" | festival --tts --language russian
JUQwJUExJTIwJUQwJUJGJUQwJUJFJUQwJUJDJUQwJUJFJUQxJTg5JUQxJThDJUQxJThFJTIwJUQwJUI0JUQwJUIwJUQwJUJEJUQwJUJEJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQxJTgxJUQwJUI4JUQwJUJEJUQxJTgyJUQwJUI1JUQwJUI3JUQwJUIwJUQxJTgyJUQwJUJFJUQxJTgwJUQwJUIwJTIwJUQxJTgwJUQwJUI1JUQxJTg3JUQwJUI4JTJDJTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQxJTgwJUQwJUI1JUQwJUIwJUQwJUJCJUQwJUI4JUQwJUI3JUQwJUJFJUQwJUIyJUQxJThCJUQwJUIyJUQwJUIwJUQxJTgyJUQxJThDJTIwJUQwJUI4JUQwJUJEJUQxJTgyJUQwJUI1JUQxJTgwJUQwJUI1JUQxJTgxJUQwJUJEJUQxJThCJUQwJUI1JTIwJUQwJUIyJUQwJUI1JUQxJTg5JUQwJUI4JTJDJTIwJUQxJTgxJTIwJUQwJUJBJUQwJUJFJUQxJTgyJUQwJUJFJUQxJTgwJUQxJThCJUQwJUJDJUQwJUI4JTIwJUQxJThGJTIwJUQwJUJGJUQwJUJFJTIwJUQwJUIyJUQwJUJFJUQwJUI3JUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI4JTIwJUQwJUIxJUQxJTgzJUQwJUI0JUQxJTgzJTIwJUQwJUI0JUQwJUI1JUQwJUJCJUQwJUI4JUQxJTgyJUQxJTgxJUQxJThGLg==
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.