Синтезаторы речи в Linux.

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

Речь по прежнему остается самым удобным и привычным способом обмена информацией между людьми. Понятно стремление получить похожий "интерфейс" и при общении с машинами. Действительно, таких устройств становится все больше. Телефоны и холодильники, автомобили и охранные системы, торговое, медицинское, авиационное оборудование и многое другое наделяются функциями распознавания (ASR) и синтеза (TTS) человеческой речи. И, конечно же, - компьютеры.

Первые персональные компьютеры выглядели игрушкой. И довольно долго именно так и использовались - для игр, да еще для набора текста. Звуковая плата была экзотикой, а когда звук и CD ROM стали нормой, они все равно годились только для игр и прослушивания музыки. Речевыми технологиями, которым требовались серьезные вычислительные мощности, можно было заниматься только на больших ЭВМ. Такие проекты не обещали быстрого коммерческого успеха, поэтому развивались в основном в университетах и исследовательских центрах, работающих на далекую перспективу. Вот оттуда все и пошло.

Сейчас мощности настольных систем возросли настолько, что речевые технологии становятся доступны практически на любом персональном компьютере. Количество приложений, использующих речь, стремительно увеличивается, а качество растет. Вот один из примеров использования качественного синтезатора речи - русскоязычная звуковая дорожка к мультфильму "Ледниковый период" на DVD. Большинство зрителей и не подозревают, что персонажи говорят "компьютерным" голосом. Развитие речевых технологий обещает изменения во всех областях жизни. Например, уже появились переводчики с одного языка на другой, которые работают по схеме "система распознавания речи - словарь - система синтеза речи".

Можно представить, что в будущих компьютерах возможность работы с голосом будет заложена на аппаратном уровне в устройствах, соответствующих тому, что сегодня называется звуковыми картами. Уже есть говорящие чипы, например в часах или телефонах, хотя синтезаторами речи они пока могут считаться лишь условно.

Несколько слов о том, как работают синтезаторы речи для компьютеров.

Считается, что человеческий язык состоит в основном из односложных и двухсложных звуков (алофонов и дифонов). Такой набор звуков можно составить для любого языка. Он гораздо больше, чем алфавит, во французском, например, их около1200. Звуки извлекаются из записи реального человеческого голоса и в виде аудиофайлов организуются в базу данных.

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

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

Посмотрим теперь, что же есть в этой области для Linux. Вот что выдал Google:

The Festival Speech Synthesis System - Festival is a general multi-lingual speech synthesis system developed at CSTR. It offers a full text to speech system with various APIs, as well an environment for development and research of speech synthesis techniques.

The Festvox Project - Free software tools and documentation for building new speech synthesis voices in English and other languages. From Carnegie Mellon.

Unix Speech Recognition - Special Synapse TAP Workstation translates speech into mouse events and keystrokes to control all environments - Unix, mainfame, and Mac with speech recognition.

Speaker - Text to Speech for Konqueror - A text to speech plug in for the KDE desktop file manager under Linux.

Flite - Flite (festival-lite) is a small, fast run-time synthesis engine developed at CMU and primarily designed for small embedded machines and/or large servers.

FreeTTS 1.1.1 - A speech synthesizer written entirely in the JavaTM programming language

KVoiceControl - just say it! - Kvoicecontrol is a speech recognition system that allows users to convert spoken commands to Linux/unix commands. For KDE and X windows.

The MBROLA PROJECT - Multi-lingual text to speech synthesis. Free multi platform software download for research purposes.

FreeSpeech - Free Speech Recognition for Linux - Openmind (Freespeech) is a free speech recognition project for Linux. It will be designed so that it can be easily integrated into any application or window manager as well as the KDE and Ggnome desktop environments.

IBM ViaVoice SDK for Linux - The ViaVoice Kit provide the necessary tools to develop applications that incorporate speech recognition using Linux

DDLinux Speech Recognition Mailing List - Announcements of speech recognition software for Linux.

BaBel Technologies - The specificity of MBROLA resides in the original process used to generate the synthetic diphones. This approach which is based on Multi-Band Excited (MBE) analysis allows spectral smoothing of the concatenation points, producing a much more natural voice than with any other concatenative systems.

Bayonne - Telephony Server of the GNU Project - Bayonne is the free multi-line telephony server of the GNU project. Source code available for LINUX/UNIX targeted towards messaging, IVR with considerable extensibility. Bayonne supports a modular architecture, native scripting and TGI.

Не очень много, но здесь присутствуют как системы распознавания, так и синтеза речи. В данном обзоре мы рассмотрим системы синтеза.

На первом месте в списке стоит проект The Festival Speech Synthesis System. Это исследовательская программа, целью которой является изучение процесса синтеза человеческого голоса на компьютере. Festival разрабатывался и развивается под Unix.

Проект начат в апреле 1996 года в Центре изучения речевых технологий университета Эдинбурга, Шотландия (The Centre for Speech Technology Research University of Edinburgh). Код написан Alan W Black, Paul Taylor и Richard Caley. Базовой моделью для него послужил синтезатор, созданный Amy Isard в 1995 году, который, в свою очередь, использовал библиотеку голосовых средств (The Edinburgh Speech Tools Library), первая редакция которой относится к 1994 году. Позднее в проекте принял участие университет Карнеги-Меллона (The Carnegie Mellon University) в США, где работа шла, как кажется, в более прикладном ключе. Появилось много приложений, ориентированных на конечного пользователя. Среди разработок CMU (не обязательно связанных с проектом Festival) - такие, как говорящий интернет-броузер, читалка для детей, программа для обучения иностранному языку, система распознавания голоса и даже переводчик с одного языка на другой. Особенно нужно отметить проект FestVox, в котором проявилось стремление американцев автоматизировать все, что только возможно. Его уникальность в том, что он позволяет почти АВТОМАТИЧЕСКИ построить дифонные базы для нового языка, которые потом можно использовать в системе Festival. Это может быть новый голос на как английском, так и другом языке. Вместо нескольких месяцев работы новый язык может быть добавлен в систему за неделю, во всяком случае так утверждается. И даже говорится, что были эксперименты с русским (может не только эксперименты?). FestVox можно свободно скачать с сайта CMU и использовать.

Последние по времени версии программы Festival и библиотеки The Edinburgh Speech Tools Library появились в январе 2003 г. Проект Festival развивается в духе Open Sources. Он написан на С++, имеет собственный командный интерпретатор Scheme (SIOD), хорошо документирован, естественно на английском.

В настоящее время доступны языки: американский и британский английский, валлийский, испанский. Отмечается, что английский проработан лучше других. Поддерживается чтение текстов разного характера, учет интонации, чтение слов с нестандартным произношением. Можно подключать языковые базы MBROLA (см. ниже).

Дистрибутив включает:
-полный C++ исходный код,
-лексиконы CMULEX и OALD (для некоммерческого использования),
-низкоуровневую C++ библиотеку Edinburgh Speech Tools,
-дифонные базы для американского и британского английского, а также испанского языков,
-полный комплект документации.

Festival входит в состав многих дистрибутивов Linux. Чтобы попробовать, как он работает, можно, например, загрузиться с широко уже известного диска Knoppix. Есть он и в RedHat 9 в виде rpm-пакетов на втором установочном диске. Если нужна только функция чтения текста, то делаем
rpm -iv /.../festival-1.4.2-16.i386.rpm
rpm -iv /.../festival-devel-1.4.2-16.i386.rpm

Если есть желание изучить Festival глубже, то лучше все-таки устанавливать систему из исходников. Для установки необходимо скачать пакеты:
festival-1.4.3-release.tar.gz - собственно синтезатор голоса.
speech_tools-1.2.3-release.tar.gz - низкоуровневая библиотека голосовых средств The Edinburgh Speech Tools.
festvox_NAME.tar.gz - голосовые базы данных и лексиконы. Доступны разные (с разной политикой распространения). Каждый голос может потребовать отдельных дополнений, таких как частный лексикон. Кроме того, базы отличаются качеством синтезируемого голоса и своей организацией. Вот некоторые:
- festlex_en_1.tar.gz- британский английский, мужской голос
- festvox_us_1.tar.gz- американский английский, женский голос
- festvox_kedlpc16k.tar.gz - американский английский, мужской голос
- festvox_rablpc16k.tar.gz - британский английский, мужской голос
- festlex_CMU.tar.gz - лексикон
- festlex_OALD.tar.gz - лексикон
- festlex_POSLEX.tar.gz - лексикон
festdoc_1.4.0.tar.gz - документация на Festival и Speech Tools.
Для создания новых голосов нужен festvox-2.0-release.tar.gz со своим пакетом документации.

Все исходники нужно распаковать в отдельный каталог, например /opt/festival. Должно получиться два подкаталога:
speech_tools/
festival/
Если устанавливается и festvox, то будет и третий подкаталог.

Сначала нужно откомпилировать библиотеку голосовых средств The Edinburgh Speech Tools.
cd /opt/festival/speech_tools/
./configure
make
Исполняемые файлы никуда не перемещаются, а остаются здесь же.
Затем компилируется Festival:
cd /opt/festival/festival/
./configure
make
Аналогично поступаем с Festvox, который нужен, как уже говорилось только для создания нового голоса и не нужен для синтеза речи с использованием уже имеющихся баз.
Путь к исполняемым файлам нужно зафиксировать в файле /etc/profile. Добавим в соответствующие места строки:
pathmunge /opt/festival/speech_tools/bin
pathmunge /opt/festival/festival/bin

Теперь попробуем что-нибудь прочитать. Вся работа происходит в командной строке. Чтобы войти в программу, набираем:
festival
Запускается собственный командный интерпретатор, что видно по изменению приглашения командной строки:
festival>
По умолчанию включается английский язык. Проговорить текст можно так:
festival> (SayText "Hello World")
Сначала ничего не происходит. В документации написано, что программа должна обработать весь текст, прежде чем начнет говорить. Чтобы избежать этого, предусмотрен режим использования так называемого голосового спулера. Он включается опцией (audio_mode async). Тогда речь возникает сразу, не дожидаясь разбора текста до конца. Получилось? Теперь попробуем по-русски:
festival> (SayText "festival govorit po russki")
Разобрать можно, но... Как и следовало ожидать, необходимы русская дифонная база и русские правила синтеза. Об этом - немного позже.
Можно проговорить файл, конечно если он на английском (знаки "***", естественно, надо заменить на что-нибудь свое):
festival> (tts "***.txt" nil) (audio_mode async)
Выход из программы:
C-d или (quit) или Exit Festival
Возможно использование Festival прямо из shell:
festival --tts ./***.txt
Утилита text2wave переводит текстовый файл в звуковой.
/opt/festival/festival/bin/text2wave ~/***.txt -o ~/myfile.wav

Festival можно использовать отдельно (как в этом примере короткого сеанса), а можно встраивать в другие приложения, в том числе с использованием технологии Java, которая поддерживается начиная с версии 1.4.0. Возможностей много, а для того, чтобы получить новые, есть все средства. Отсутствие русского языка это конечно минус, но не разработчикам, а скорее нам. Как говорится спасение утопающего... и т.д. Как уже говорилось, все что нужно для создания нового голоса, имеется.

Проект Festival не единственный из области речевых технологий для Unix-подобных систем. Посмотрим, что еще есть в списке.

Бельгийский проект MBROLA. Он свободен для некоммерческого использования, хотя исходные коды авторы не дают. В принципе, их можно получить - на сайте по этому поводу есть информация. MBROLA является мультиплатформенным проектом и содержит базы для следующих языков: американский и британский английский, европейский и канадский французский, европейский и мексиканский испанский, итальянский, европейский и бразильский португальский, немецкий, шведский, датский, греческий, турецкий, эстонский, польский, румынский, хорватский, чешский, арабский, индийский, японский, корейский, индонезийский. Утверждается, что качество речи высокое.
Интересно то, что голосовые базы MBROLA можно использовать в проекте Festival. Так что, если понадобится индонезийский, то проблем не будет.
А вот русского опять нет. Но его можно добавить. Для этого нужно записать голос диктора (в соответствии с инструкциями, которые есть на сайте) и выслать эту запись разработчикам, которые на этой основе могут сделать голосовую базу. Процесс построения нового голоса может занять 6-8 недель.

Flite (festival-lite) - небольшой и быстрый синтезатор, созданный в университете Карнеги-Меллона с участием авторов Festival. Это - несколько измененный и облегченный Festival, предназначенный для голосов, построенных с помощью FestVox (снова американская автоматизация).

FreeTTS - разработчик Speech Integration Group of Sun Microsystems Laboratories. Мультиплатформенный, открытый проект, основанный на Java и только что упоминавшемся Flight, который, как мы уже знаем, ведет свое происхождение от проекта Festival. Следовательно, снова доступны базы этих проектов и MBROLA.

BaBel Technologies - мультиплатформенный синтезатор речи на основе технологии и голосовых баз MBROLA. Ведется построение новых голосов (в дополнение к тем, что есть в бельгийском проекте). Будем надеяться, что русский появится. Но, похоже, что это коммерческий проект.

IBM ViaVoice. Об этом проекте известно только, что русского языка там нет.

NeoSpeech - калифорнийская компания (с преимущественно корейским капиталом). На сайте предлагаются речевые технологии очень высокого качества для всех платформ, в том числе и для Linux. Сейчас существуют реализации для американского английского, корейского и китайского языков. Неизвестно, как их приобрести и по какой лицензии - для связи только e-mail.

Пожалуй, на этом можно закончить перечисление синтезаторов голоса, совместимых с Linux. Видно, что есть из чего выбрать. Проблема состоит в том, что пока нет русского голоса. Неужели у нас совсем никто не занимается синтезом русской речи?
Не совсем так. Вот две ссылки:
Клуб голосовых технологий МГУ им. М. В. Ломоносова, Москва.
Фирма "Сакрамент", Минск.
К сожалению, как я понял, это коммерческие проекты, ориентированные на Windows. Был бы рад ошибиться.

Можно ли самому построить новый голос?
Как уже упоминалось, специально для создания нового голоса есть целый комплекс программных средств - FestVox. Конечно, в нем надо разобраться. Конечно, вся документация на английском. Конечно, будет много ручной работы, потому что не все этапы автоматизированы. Естественно, придется разобраться и в том. как подключить этот голос к собственно синтезатору, и в том, как обеспечить поддержку кириллицы. Но во всем этом нет ничего невозможного.
Есть ли смысл этим заниматься?
Несомненно. Такая работа имеет все шансы войти в дистрибутивы Linux, по крайней, мере в отечеcтвенные. Наличие голосовых технологий в конкретном дистрибутиве даст ему ощутимые преимущества перед другими. Ведь интеграция с Open Office, Mozila и другими приложениями открывает перед пользователем совершенно новые возможности. Тот, кто раньше других покажет дорогу ко всем этим чудесам, не будет забыт.

Немного о создании нового голоса. Вот что советуют те же разработчики Festival и MBROLA.

Работа по созданию нового голоса требует времени, упорства и аккуратности (а какая не требует?). Есть некоторые особенности, которые нужно знать.

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

Качество записи должно быть наилучшим из всех возможных. Компьютер для записи не годится, даже если в нем установлена крутая звуковая карта. Шум вентиляторов все испортит. Идеальный, но и самый дорогой вариант - студия звукозаписи с профессиональным оборудованием. Хорошего качества можно добиться и более простыми средствами, например используя музыкальный центр. Еще лучше - минидисковый плеер с функцией записи. Он дает очень высокое качество записи, которое определяется в первую очередь качеством микрофона. Микрофон, конечно, тоже должен быть хорошим. Не надо даже пробовать капсюль, которым комплектуются компьютерные гарнитуры или бытовые телефоны. А вот микрофон для караоке может подойти. Помещение, в котором производится запись, не должно давать отраженного от стен звука и не должно пропускать внешние шумы (на ум приходит почему то платяной шкаф). Запись надо производить за один раз, это поможет избежать сильной коррекции уровней при дальнейшей работе. Темп речи должен быть постоянным, сама речь монотонной (без интонаций). Желательно сделать несколько записей и выбрать наилучшую.

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

Мультимедиа - это не только музыка и видео на компьютере. Голосовые технологии обязательно займут здесь одно из главных мест. Многие задачи из этой области успешно решаются для Linux, в том числе и задача синтеза речи. А то, когда Linux заговорит по-русски, зависит в первую очередь от нас самих.

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