|
Статья подготовлена специально для Linux-библиотеки. Впервые опубликована на UNIX4ALL. Использованы, в том числе в виде цитат, файлы документации, входящие в пакеты ru_tts и rulex Игоря Порецкого и Дмитрия Падучих. Помню, как когда-то меня поразила работа программы "Говорилка" для 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, произнесенные "кукольным" голосом, т.е. речь звучит слишком быстро и тембр ее сдвинут вверх [1]. Это значит, что тест прошел успешно, и можно перейти к настройке синтезатора. Здесь самое место дать некоторые пояснения. Во-первых, ru_tts можно (но не обязательно, как видно из приведенного выше примера) использовать с параметрами. Вот их перечень: В-третьих, в приведенном выше примере вывод в файл использован для того, чтобы избежать на начальном этапе возможных проблем с указанием правильного звукового устройства для 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
Сравнение с другими программными синтезаторами речи.Поскольку ru_tts - первая ласточка, то и сравнивать его в Linux пока не с чем. Для платформы Windows существуют русскоязычные программные синтезаторы такого же класса, наиболее доступными из которых являются модуль для синтеза русской речи фирмы Lernout & Hauspie и аналогичный компонент Digalo французской компании Elan. Оба базируются на Microsoft Speech API, при этом первый можно установить бесплатно (для тех, кто уже заплатил за лицензию Windows), а второй стоит около 30 евро. Интересно, что ещё год назад Elan собиралась выпустить свой tts для Linux. Объявление о том, что это пока не сделано, до сих пор висит на зарезервированной для такого случая странице их сайта. В данном случае лучше один раз услышать, чем сто раз прочитать. Скачав файл в формате mp3 (размер 101 кб), Вы можете сами сравнить звучание синтезаторов речи. Этот файл сшит из трех файлов, полученных в результате работы голосовых движков 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 могут говорить на множестве языков, но не на русском. Теперь есть и русский, за что огромное спасибо его создателям - Игорю Порецкому и Дмитрию Падучих. ПослесловиеКомментарий Дмитрия Падучих: Неудивительно, что голос получается "кукольный". ru_tts генерирует 8-битный звук, поэтому на входе у sox должен быть ключ -b, а не -w. Примерно так: ~$ ru_tts < test.txt | sox -t raw -s -b -r 10000 -c 1 -v 0.8 - test.wav |
||||||||||
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2024 |
Социальные сети