Ru_tts - синтезатор русской речи для Linux. (language speech voice sound)

http://www.opennet.ru/base/rus/rus_speech.txt.html

Помню, как когда-то меня поразила работа программы "Говорилка" для
   Windows. Я впервые услышал, как компьютер читает голосом текстовый
   файл - вполне разборчиво и вполне по-русски. Фантастика. Позднее,
   когда Linux стал для меня системой номер 1, очень хотелось иметь что
   то подобное и в нем. Я даже провел небольшое исследование на эту тему
   - поиск голосовых движков для Linux, результатом чего явился обзор
   "Синтезаторы речи в Linux". Их оказалось много, но русского голоса
   не было ни в одном.

   Как это часто бывает в мире Open Source, хорошие новости пришли не от
   мэйнстрим-разработчиков ПО, а от энтузиастов.

   Совсем недавно, мне попалось сообщение о выходе новой версии
   дистрибутива Oralux. Это - Live CD на основе Knoppix, и предназначен
   он для людей с ослабленным зрением. В версии 0.6 alpha появилось
   звуковое меню на русском языке, и добавлены два новых синтезатора
   речи: ParleMax (французский язык) и Multispeech/Ru_tts (русский и
   английский). Сообщалось, что автором последнего является Игорь
   Порецкий, а ссылка вела на его ftp, куда я сразу же и отправился.

   Оказалось, что ru_tts разработан (судя по дате создания файлов) еще в
   феврале 2003 года совместно Игорем Порецким и Дмитрием Падучих. Это -
   полнофункциональный программный tts (text-to-speech). Он является
   полностью автономным в том смысле, что не нуждается в дополнительных
   голосовых базах или системных библиотеках кроме стандартных библиотек,
   входящих в любой дистрибутив. Синтезатор речи может работать со
   словарем ударений rulex, полученным из словаря Мюллера на 60 000 слов.
   Входной текст ru_tts воспринимает в кодировке koi8-r. На упомянутом
   выше ftp есть также программы, позволяющие использовать ru_tts в среде
   Emacs.


Установка.

   Синтезатор речи и словарь доступны в виде уже скомпилированных пакетов
   ru_tts-0.4-i586-1.tgz (188кб) и rulex-0.9.14-noarch-1.tgz (5,6Мб). Их
   надо скачать и разархивировать в соответствующие подкаталоги каталога
   /usr. В каждом пакете есть файл документации на русском языке.

   Вместо пакета ru_tts-0.4-i586-1 можно использовать один файл
   ru_tts.static (870кб), поместив его в каталог /usr/local/bin. Разницы
   в работе я не заметил.

   Синтезатор ru_tts не занимается выводом звука, он только
   подготавливает для этого звуковой файл, разбирая входной текст и
   выстраивая в цепочку нужные звуки. Поэтому нужно, чтобы в системе был
   установлен какой либо подходящий пакет для проигрывания звука,
   например sox. Это мощный проигрыватель и конвертор звуковых файлов.
   Естественно, что sox есть практически во всех дистрибутивах Linux.
   Исключение составляют некоторые специальные, например одно- двух-
   дискетные дистрибутивы. Это нужно учитывать при попытке встроить в них
   синтезатор речи, а его небольшой размер это вполне позволяет, если не
   включать словарь.

   На этом установку синтезатора речи можно считать законченной и
   приступить к его проверке. Нужно только учитывать, что в Linux звук в
   разных режимах выводится по разному. В консольном режиме это может
   быть просто звуковое устройство, в графическом - звуковой сервер;
   можно также выводить звук в файл. Важно, чтобы синтезатор выводил звук
   туда, куда нужно. Все рассказанное ниже относится к работе с сервером
   звука aRts в KDE.

   До сих пор я сознательно не оговаривал тип дистрибутива Linux. Похоже,
   что это для ru_tts не имеет значения. Я устанавливал его в Linux XP,
   причем делал это так, как рассказано выше. Кроме того, проверил работу
   синтезатора в Knoppix 3.4 - просто переписал ru_tts_static в домашний
   каталог. Все отлично работало. Судя по всему, то же самое будет и в
   любой другой Linux-системе.


Проверка и настройка.

   Создайте в своем домашнем каталоге небольшой текстовый файл,
   содержащий одно-два предложения на русском языке, причем, как уже
   говорилось, обязательно в кодировке koi8-r. Пусть этот файл называется
   test.txt. Для начала попробуем с помошью синтезатора перевести этот
   текстовый файл в звуковой, в формате wav. Отправим наш тестовый файл
   по конвейеру сначала синтезатору ru_tts, который переведет его в
   голосовую форму, а затем - конвертору sox, который преобразует его в
   формат wav.
   # cat ~/test.txt | ru_tts | sox -t raw -s -w -r 10000 -c 1 -v 0.8 -
   ~/test.wav

   Команда должна выполниться без ошибок и не произведя никаких звуков, а
   в домашнем каталоге должен появиться файл test.wav, который можно
   воспроизвести любым музыкальным проигрывателем. Скорее всего, Вы
   услышите фразы из файла test.txt, произнесенные "кукольным" голосом,
   т.е. речь звучит слишком быстро и тембр ее сдвинут вверх. Это значит,
   что тест прошел успешно, и можно перейти к настройке синтезатора.
   Здесь самое место дать некоторые пояснения.

   Во-первых, ru_tts можно (но не обязательно, как видно из приведенного
   выше примера) использовать с параметрами. Вот их перечень:
   -h - как всегда - краткая справка об использовании.
   -p <pitch> - установка высоты голоса. Значение pitch может быть от 0
      (самый низкий голос) до 1. 0 (самый высокий).
   -r <rate> - Установка скорости речи. Опять-таки от 0 (самая быстрая
      речь) до 1. 0 (самая неспешная).
   -m - заставляет синтезатор говорить совершенно монотонно, без всяких
      интонаций. Заметно, что без этого ключа синтезированная речь
      воспринимается естественнее, например, понижением голоса выделяется
      окончание фразы, а соответствующим повышением - восклицательные
      предложения и т.п.
   -v <voice_file> - загрузка голосового файла. Это совершенно
      необязательно, так как в синтезаторе уже есть встроенный голос, но
      можно загрузить и другой. Есть ли другие, мне неизвестно. Возможно,
      авторы планируют их создание.
   -s <stress_dictionary> - файл словаря ударений. Речь здесь идет о
      словаре rulex, который у нас уже установлен. За параметром -s должен
      следовать путь к словарю в абсолютном виде. Хотя синтезатор работает и
      без него, подключение словаря сильно улучшает качество речи. Надо
      сказать, что создание словаря ударений - сама по себе большая работа,
      и его наличие говорит о тщательности, с какой авторы подошли к
      созданию голосового синтезатора.
   -l <log_file> - файл для накопления слов, не найденных в словаре.
      Имеет смысл лишь совместно с заданием ключа -s. Если есть терпение и
      время, то с помощью полученного таким образом списка словарь можно
      пополнять. В файле документации подробно рассказано, каким образом все
      это можно сделать.

   Во-вторых, вывод синтезатора представляет собой оцифрованный звук в
   формате "raw linear signet 16-bit 10 kHz". Отсюда появляются ключи
   программы sox: -t raw (тип звукового файла), -s (линейное
   кодирование), -w (число битов на отсчет 16), -r 10000 (частота
   дискретизации 10 кГц), -c 1 (один канал, т.е. моно), -v 0.8 (уровень
   громкости выхода на уровне 0,8 от максимума). Параметров много,
   поэтому есть смысл почитать man sox. Всегда лучше понимать, что
   делаешь.

   В-третьих, в приведенном выше примере вывод в файл использован для
   того, чтобы избежать на начальном этапе возможных проблем с указанием
   правильного звукового устройства для sox. Это лишь один из способов
   преобразования текста в речь. Существуют и другие, о них - немного
   позже.

   Итак, синтез речи работает. Но его надо настроить. Первая проблема -
   "кукольный" голос. Видимо, связано это с тем, что с момента создания
   синтезатора прошло уже некоторое время, и компьютеры стали более
   мощными. Они слишком быстро справляются с задачей синтеза. Во всяком
   случае, разработчики заложили возможность использования ключей -p и
   -r. Но, на мой взгляд, удобнее пользоваться аналогичными ключами
   программы sox: speed и stretch. Первый действует подобно изменению
   скорости протяжки пленки в аудиоплеере, а число, которое за ним
   следует, определяет коэффициент изменения этой скорости - меньше 1-
   замедление, больше 1 - ускорение. При этом соответствующим образом
   меняется и высота звука. А ключ stretch позволяет менять скорость, не
   влияя на частотные характеристики речи. Он может использоваться для
   подстройки, мало меняя уже подобранный тембр голоса. Хотя изменения
   все таки есть, и - не в лучшую сторону. Голос становится более
   "металлическим" ("робот"). А вообще, sox имеет много разных фильтров,
   так что можно поэкспериментировать.

   Вот такая команда читает голосом наш тестовый файл при подключенном
   словаре и приемлемых для моего компьютера скорости чтения и тембре
   голоса, вывод происходит на звуковой сервер aRts:

           cat ~/test.txt | ru_tts -s /usr/local/lib/ru_tts/lexicon | sox -t raw
           -s -w -r 10000 -c 1 -v 0.8 - -t raw - speed 0.054 | artscat


   А такие - создают звуковой файл test.wav или более компактный файл
   test.ogg с прочитанным текстом:

           cat ~/test.txt | ru_tts -s /usr/local/lib/ru_tts/lexicon | sox -t raw
           -s -w -r 10000 -c 1 -v 0.8 - ~/test.wav speed 0.52
           cat ~/test.txt | ru_tts -s /usr/local/lib/ru_tts/lexicon | sox -t raw
           -s -w -r 10000 -c 1 -v 0.8 - ~/test.ogg speed 0.52


Сравнение с другими программными синтезаторами речи.

   Поскольку ru_tts - первая ласточка, то и сравнивать его в Linux пока
   не с чем. Для платформы Windows существуют русскоязычные программные
   синтезаторы такого же класса, наиболее доступными из которых являются
   модуль для синтеза русской речи фирмы Lernout & Hauspie и аналогичный
   компонент Digalo французской компании Elan. Оба базируются на
   Microsoft Speech API, при этом первый можно установить бесплатно (для
   тех, кто уже заплатил за лицензию Windows), а второй стоит около 30
   евро. Интересно, что еще год назад Elan собиралась выпустить свой tts
   для Linux. Объявление о том, что это пока не сделано, до сих пор висит
   на зарезервированной для такого случая странице их сайта.

   В данном случае лучше один раз услышать, чем сто раз прочитать. Скачав
   файл в формате mp3 (размер около 100 кб), Вы можете сами сравнить
   звучание синтезаторов речи. Этот файл сшит из трех файлов, полученных
   в результате работы голосовых движков Lernout & Hauspie, Digalo и
   ru_tts.


Использование.

   Первое, для чего я попробовал использовать ru_tts - вывод сообщений
   KDE типа "КДЕ запущен и готов к работе" или "Переход на четвертый
   рабочий стол" и т.п. Сделать это просто - надо создать файл с
   соответствующим текстом, затем перевести его в wav, а далее выбрать
   этот файл (Центр управления KDE - Звук и мультимедиа - Системные
   уведомления) в нужном пункте. После этого вместо бряканья и кваканья
   компьютер будет комментировать по-русски все Ваши действия. Мне
   кажется, что людям с ослабленным зрением такая модернизация может
   пригодиться.

   Возможность получить говорящую книгу в формате mp3 я тоже проверил.
   Озвученную книгу можно затем записать на CD и прослушивать с помощью
   плеера, например, по дороге на работу. Результат такой: текстовый файл
   размером 150 кб преобразовывался в формат mp3 около 3 минут и занял
   примерно 35 мб.

   Те, кто работает в среде Emacs, могут воспользоваться имеющейся там
   системой Emacspeak, которая может быть подключена к ru_tts. Кроме
   того, авторы ru_tts создали для Emacs программу чтения голосом книг
   rbook. Это должно обеспечить, как я понял, "чтение с листа"
   набираемого в редакторе или уже готового текста. Работу этих
   приложений я не проверял.

   Хотелось бы надеяться, что эта статья вызовет интерес к ru_tts, а
   также - появление приложений для него. И, на мой взгляд, включение
   русскоязычного синтезатора речи в отечественный дистрибутив - хорошая
   идея.

   А вот еще одна сфера применения для ru_tts. В апреле 2004 года, фирма
   Sony начала продажу первой в своем роде электронной книги Librie
   1000-EP на основе специальной, пока черно-белой, электронной бумаги.
   Это - планшет размера A4 и весом 300 грамм. И работает это чудо под
   управлением Linux. Синтезатора речи, насколько я знаю, в нем пока
   нет...


Заключение.

   Возможно, кто то скажет - игрушка, не более того. И будет неправ. Дело
   не только в том, что синтезатор речи может оказаться незаменимым для
   людей с ослабленным зрением, хотя это само по себе очень важно. Для
   всех нас речь остается самым удобным и привычным способом обмена
   информацией. Думаю, что при общении с компьютером голосовой интерфейс
   тоже окажется по меньшей мере полезным. Конечно - при условии
   доступности качественных синтезаторов голоса и систем распознавания
   речи, а также удобного управления ими. И сейчас наблюдается прогресс
   по всем этим направлениям.

   Существующие синтезаторы для Linux могут говорить на множестве языков,
   но не на русском.

   Теперь есть и русский, за что огромное спасибо его создателям - Игорю
   Порецкому и Дмитрию Падучих.

   Андрей Ракитин.
   июнь 2004 г

Добавить комментарий

Обратная связь

Интересуют вопросы реализации алгоритмов, программирования, выбора электроники и прочая информация, постараюсь осветить в отдельных статьях

пишите мне на netdm@mail.ru