eSpeak (eSpeak)

Перейти к навигации Перейти к поиску

eSpeak
Логотип программы eSpeak
Тип синтезатор речи
Автор Джонатан Даддингтон (англ. Jonathan Duddington)
Написана на C++
Операционные системы Linux и др. UNIX-подобные, Windows
Первый выпуск 2006[1]
Последняя версия 1.48.04 (6 апреля 2014[1])
Репозиторий sourceforge.net/p/espeak…
svn.code.sf.net/p/espeak…
github.com/rhdunn/espeak/
Состояние неактивное
Лицензия GNU GPL
Сайт espeak.sourceforge.net
Логотип Викисклада Медиафайлы на Викискладе

eSpeak это компактный свободный программный синтезатор речи, поддерживающий Speech Synthesis Markup Language (SSML). В настоящее время исходный проект находится в неактивном состоянии в связи с исчезновением его автора Джонатана Даддингтона[2]. Сообществом разрабатывается его форк eSpeakNG[англ.]

Операционные системы

[править | править код]

Версии eSpeak существуют под такие операционные системы как Microsoft Windows, Mac OS X, Linux, RISC OS, а также доступен его исходный код на языке C++. Кроме того в официальной документации синтезатора даётся инструкция по его компиляции под Windows Mobile. Программа имеет одно существенное ограничение — генерация голоса возможна только в WAV файл.[3]

Помимо этого, eSpeak используется в мобильных операционных системах Android, начиная с версии 1.6, и Maemo, но эти проекты не курируются лично разработчиком, и на официальном сайте eSpeak соответствующие пакеты отсутствуют, да и Android-версия обладает рядом существенных ошибок при работе на некоторых языках, в частности и русском.[4]

Версии под Windows и Linux регулярно обновляются вместе с исходным кодом, а Mac- и RISC-варианты уже долгое время не поддерживаются.

Windows-версия eSpeak написана под платформу Microsoft Speech API 5.x, а также поставляется в виде консольной утилиты. Вариант под Mac OS X представляет собой отдельное приложение, которое не встраивается в системную речевую службу Apple и требует ручной настройки. Однако, существует вариант ускоренной установки при помощи специального пакета eSpeak Macintosh Installer.[5]

Поддерживаемые языки

[править | править код]

eSpeak поддерживает около пяти десятков различных языков. При инсталляции, пользователю требуется указать, поддержка каких именно диалектов его интересует.[6]

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

  • Албанский — sq
  • Английский (американский) — en-us
  • Английский (британский с северным акцентом) — en-n
  • Английский (британский с Уэст-Мидлендским акцентом) — en-wm
  • Английский (классический британский) — en
  • Английский (общепринятый разговорный) — en-rp
  • Английский (шотландский) — en-sc
  • Армянский (западный) — hy-west
  • Армянский (классический) — hy
  • Африкаанс — af
  • Боснийский — bs
  • Валлийский — cy
  • Венгерский — hu
  • Вьетнамский — vi
  • Голландский — nl
  • Голоса MBROLA (голос xxx) — mb-xxx
  • Греческий — el
  • Древнегреческий — grc
  • Индонезийский — id
  • Исландский — is
  • Испанский (классический) — es
  • Испанский (латиноамериканский) — es-la
  • Итальянский — it
  • Каталанский — ca
  • Китайский (кантонский диалект) — zh-yue
  • Китайский (путунхуа) — zh
  • Курдский — ku
  • Латинский — la
  • Латышский — lv
  • Ложбан — jbo
  • Македонский — mk
  • Немецкий — de
  • Норвежский — no
  • Польский — pl
  • Португальский (бразильский) — pt
  • Португальский (европейский) — pt-pt
  • Румынский — ro
  • Русский — ru
  • Сербский — sr
  • Словацкий — sk
  • Словенский — sw
  • Тамильский — ta
  • Турецкий — tr
  • Финский — fi
  • Французский — fr
  • Хинди — hi
  • Хорватский — hr
  • Чешский (разговорный) — cs
  • Шведский — sv
  • Эсперанто — eo

Список поддерживаемых языков также может быть расширен при помощи использования голосовых библиотек MBROLA, которые можно подключить к eSpeak.

MBROLA — это особый дифонный алгоритм синтеза речи, на основе которого создано множество различных программных продуктов с включением технологии преобразования текста в речь (TTS). Данный проект является рекордсменом среди прочих технологий синтеза речи по количеству различных языков, для которых он использовался. Хотя для некоторых распространённых языков MBROLA-голоса не созданы до сих пор, в том числе и для русского.[7]

eSpeak может работать в связке с MBROLA, что обеспечивает возможность использовать голосовые библиотеки этого проекта как составную часть самого eSpeak. Это позволяет ещё больше расширить список поддерживаемых языков для синтезирования речи по тексту.

Использовать связку eSpeak и MBROLA можно на таких операционных системах как Windows, Linux[7] и Mac OS X[5].

Однако интеграцию с eSpeak поддерживают не все голосовые библиотеки MBROLA.

Принципы реализации

[править | править код]

Слова входного текста для синтезирования проходят два этапа обработки:

  • слово в буквенном представлении преобразуется в последовательность фонем;
  • генерируется звуковой сигнал на основе полученной последовательности.

Правила для получения последовательности фонем хранятся в виде «A, B, C = D». Где B — это рассматриваемая буква, A и C — контекст окружения этой буквы в слове, и D — это фонема, в которую эта буква может быть преобразована. Контекст окружения может задаваться как конкретными буквами, так и специальными символами, обозначающими группы букв. Правила синтезатора допускают неоднозначное определение таких цепочек. Для разрешения этой неоднозначности синтезатор назначает приоритет каждому правилу, который вычисляется на основе количества букв, задействованных в правиле, и степени конкретности определения контекста окружения. В правилах также можно указывать различия в трансляции в зависимости от ударения.

В eSpeak гласные звуки всегда синтезируются, звонкие согласные получаются путём смешивания синтезируемых звуков с предварительно записанными шумами голоса, а все остальные звуки просто записаны, например, [ш].

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

Вместе с синтезатором поставляется утилита eSpeak Edit. Это GUI-приложение, написанное при помощи библиотеки WXLib. Оно позволяет визуально редактировать готовые фонемы. Фонема представляется в виде графика кривой, где последовательно можно выбирать форманты и изменять их значения, такие как частота, высота и ширина. Благодаря этим возможностям, на основе уже готовых фонем можно получать новые, более верные звуки для некоторого языка. В то же время, некоторые из фонем получить модификацией существующих не получается. Например, при разработке русскоязычной части eSpeak был специально записан звук [р], так как для него не нашлось достойного аналога в других языках.[8]

Проекты с использованием eSpeak

[править | править код]

eSpeak является open source проектом, благодаря этому, некоторые разработчики интегрировали его в свои продукты.

eSpeak использован в качестве основного синтезатора речи в некоммерческой программе экранного доступа с открытым исходным кодом NVDA. При его помощи озвучен процесс установки программы, а также он является голосом по умолчанию, при её первом запуске.

Речевой Синтезатор «Капитан»

[править | править код]

В другом синтезаторе речи — Капитан, разработанным Анатолием Камыниным и Геннадием Нефедовым, на базе eSpeak построен дополнительный пакет, который обеспечивает раздельное чтение многоязычных текстов: русский или украинский текст читается синтезатором Капитан, а английский, французский или немецкий синтезатором eSpeak. Данная функция реализована в Речевом синтезаторе Капитан как в версии под MS Speech API 4[9], так и в версии под MS Speech API 5.x[10].

Сторонние дополнения

[править | править код]

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

Помимо русского, сторонние компоненты коррекции речи eSpeak ещё есть для китайского (путунхуа и кантонский).

Скачать эти словари можно с официального сайта проекта.

Примечания

[править | править код]
  1. 1 2 Репозиторий eSpeak. Дата обращения: 14 августа 2013. Архивировано 17 мая 2013 года.
  2. Taking ownership of the eSpeak project and its future. Дата обращения: 14 января 2019. Архивировано 15 января 2019 года.
  3. Манахов П. — Обзор мобильных Text-To-Speech движков. Дата обращения: 20 мая 2011. Архивировано 12 октября 2011 года.
  4. Цейковец Н. — Обзор русскоязычных синтезаторов речи для Android OS. Дата обращения: 26 марта 2012. Архивировано 3 апреля 2012 года.
  5. 1 2 Цейковец Н. — Установка синтезатора eSpeak в среде Mac OS X посредством eSpeak Macintosh Installer. Дата обращения: 2 мая 2011. Архивировано 11 октября 2011 года.
  6. Инструкция по установке eSpeak. Дата обращения: 2 мая 2011. Архивировано 22 января 2012 года.
  7. 1 2 Цейковец Н. — Использование голосов MBROLA в среде MS Windows. Дата обращения: 2 мая 2011. Архивировано 3 июня 2011 года.
  8. Пожидаева Р. — Русификация речевого синтезатора espeak: Введение. Дата обращения: 2 мая 2011. Архивировано 16 июня 2012 года.
  9. Речевой Синтезатор «Капитан» (версия для MS SAPI 4). Дата обращения: 2 мая 2011. Архивировано 28 июня 2012 года.
  10. Речевой Синтезатор «Капитан» (версия для MS SAPI 5.x). Дата обращения: 2 мая 2011. Архивировано 17 июля 2011 года.