В статье будет рассмотрена программа Festival, которая позволяет преобразовывать текст в речь. Я покажу пример её работы на Debian 11.
О программе
Festival — это система преобразования текста в речь. Помимо простого преобразования текста в речь, его можно использовать в интерактивном командном режиме для тестирования и разработки различных аспектов технологии синтеза речи.
Фестиваль имеет два основных режима: командный и интерактивный.
У программы довольно много недостатков:
- неприятный голос;
- в некоторых словах проглатываются определённые звуки;
- если в тексте встречается некая последовательность символов, то может вылететь с ошибкой.
Но небольшие полезности можно заставить её проделывать. В конце статьи я покажу небольшой скрипт, который будет проговаривать текущую дату.
Установка
Установить festival и пакет с поддержкой русского языка (festvox-ru) можно из стандартных репозиториев в Debian или Ubuntu:
$ sudo apt install festival festvox-ru
Работа в командном режиме
Festival умеет проговаривать текст получаемый из стандартного потока ввода. А для проговаривания на русском языке необходимо указать —language russian:
$ echo "Hello world!" | festival --tts $ echo "Привет мир!" | festival --language russian --tts
Но также можно озвучивать текст из файла:
$ echo "Привет, меня зовут Фестиваль" > test.txt $ festival --language russian --tts test.txt
Добавлю также, что этот синтезатор речи, не сможет проговорить текст, в котором будут встречаться одновременно русские и английские слова.
Работа в интерактивном режиме
Существует интерактивный режим, войти в который можно просто выполнив festival без дополнительных опций:
$ festival Festival Speech Synthesis System 2.5.0:release December 2017 Copyright (C) University of Edinburgh, 1996-2010. All rights reserved. clunits: Copyright (C) University of Edinburgh and CMU 1997-2010 clustergen_engine: Copyright (C) Carnegie Mellon University 2005-2017 hts_engine: All rights reserved. For details type `(festival_warranty)' festival>
Приведу несколько примеров работы в интерактивном режиме.
- Произнести текст на английском:
festival> (SayText "Hello!")
- Посмотреть, какие языки установлены в систему:
festival> (voice.list) (kal_diphone msu_ru_nsh_clunits)
- Поменять язык на русский и произнести текст на русском:
festival>(voice_msu_ru_nsh_clunits) festival>(SayText "Привет!")
- Выйти из интерактивного режима:
festival> (exit)
Скрипт проговаривания текущей даты
Начнём создавать наш скрипт:
$ nano say_date.sh
Текст скрипта:
#!/bin/bash # Вычисляем день и месяц и заносим их в переменные d=$(date "+%_d") m=$(date "+%_m") # Массив дней days=(" " "первое" "второе" "третье" "четвертое" "пятое" "шестое" "седьмое" "восьмое" "девятое" "десятое" "одиннадцатое" "двенадцатое" "тринадцатое" "четырнадцатое" "пятнадцатое" "шестнадцатое" "семнадцатое" "восемнадцатое" "девятнадцатое" "двадцатое" "двадцать первое" "двадцать второе" "двадцать третье" "двадцать четвертое" "двадцать пятое" "двадцать шестое" "двадцать седьмое" "двадцать восьмое" "двадцать девятое" "тридцатое" "тридцать первое") # Массив месяцев months=(" " "января" "февраля" "марта" "апреля" "мая" "июня" "июля" "августа" "сентября" "октября" "ноября" "декабря") # Проговариваем echo ${days[$d]} ${months[$m]} | festival --tts --language russian
Даём скрипту право на запуск:
$ chmod u+x say_date.sh
И проверяем его работу:
$ ./say_date.sh
Итог
Я познакомил вас с системой перевода текста в речь — festival. Эта система может использоваться в разных связках с другими системами. Например её можно использовать в связке с сервером телефонии asterisk. Я такую связку не настраивал, но вот пример настройки.
Возможно вам понравятся другие статьи:
- Как сгенерировать пароль в терминале Linux
- Кеширующее зеркало репозитория для python – DevPi
- Nginx. Reverse Proxy