Лучшие синтезаторы речи онлайн. Синтезаторы речи с русскими голосами Синтез речи виды синтеза

На сегодняшний день синтезаторы речи, которые используются в стационарных компьютерных системах или мобильных устройствах, уже не кажутся чем-то необычным. Технологии уже шагнули далеко вперед и дали возможность воспроизводить человеческий голос. Ниже мы рассмотрим, как это все работает, где используется речевой синтезатор, как выбирать подобное устройство, а также с какими потенциальными проблемами может столкнуться пользователь при приобретении такого устройства. Что же собой представляют речевые синтезаторы? Где они могут быть использованы? Синтезаторы речи представляют собой специальные программы, которые состоят из нескольких модулей. Данные программы позволяют переводить набранный на клавиатуре текст в обычную человеческую речь в виде звукового сопровождения. Наивно было бы полагать, что сопутствующие библиотеки содержат совершенно все слова или возможные фразы, которые записаны в студиях реальными людьми. Это невозможно просто на физическом уровне. Библиотеки фраз к тому же имели бы такой размер, что их просто нельзя было бы установить даже на современные жесткие диски большого объема, не говоря уже о мобильных устройствах. Кроме того была разработана технология, которая получила название Text-to-Speech,что в переводе означает «текст в речь». Синтезаторы речи получили наибольшее распространение в нескольких областях. К одной из таких областей можно отнести самостоятельное изучение иностранных языков, когда пользователю необходимо слышать правильное произношение слова. Также синтезаторы речи используются для прослушивания книг вместо чтения, создания локальных и речевых партий при записи музыки, для выдачи поисковых запросов в виде озвученных фраз или слов. Подобные устройства также могут использоваться людьми с ограниченными возможностями.

Синтезаторы речи: типы программ

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

Преимущества и недостатки простейших речевых приложений. Что касается преимуществ и недостатков программ данного типа, то для начала давайте рассмотрим недостатки. Прежде всего, стоит сказать, что компьютер это все-таки техническое устройство. На данном этапе развития он может весьма приблизительно синтезировать человеческую речь. Зачастую в простейших программах наблюдаются проблемы с постановкой ударений в словах, низкое качество звука. На мобильных устройствах обычно наблюдается повышенное энергопотребление. В некоторых случаях наблюдается также несанкционированная загрузка речевых модулей. Однако и преимуществ здесь также хватает. Многие лучше воспринимают звуковую информацию, а не визуальную. Так что, явным преимуществом является удобство восприятия. Как же правильно использовать синтезатор речи? Скажем еще немного об основных принципах использования такого типа программ. Во-первых, устанавливается синтезатор речи любого типа безо всяких проблем. В стационарных системах применяется стандартный инсталлятор, основной задачей которого будет выбор поддерживаемых языковых модулей. Для мобильных устройств можно скачать установочный файл из официального магазина или хранилища типа AppStore или Google Play.

После этого приложение будет установлено в автоматическом режиме. При первом запуске, как правило, никаких настроек, кроме выбора языка, используемого по умолчанию, выполнять не нужно. Однако в некоторых случаях программа может предложить выбрать качество звучания. Повсеместно применяется стандартный вариант с частотой дискретизации 4410 Гц, глубиной 16 бит и битрейтом 128 кбит/с. В мобильных устройствах аналогичные показатели немного ниже. За основу берется определенный голос. При использовании стандартного шаблона произношения путем использования эквалайзеров и фильтров можно достичь звучания именно такого тембра. При использовании можно выбрать несколько вариантов перевода текста: перевод текста в ручном режиме, озвучивание из файла уже имеющегося текста, интеграция в другие приложения с возможностью активации выдачи поисковых результатов или прочтения на страницах онлайн текстового содержимого. Здесь достаточно будет выбрать нужный вариант действий, голос и язык, на котором будет произноситься текст. У многих программ есть сразу несколько разновидностей голосов, как женских, так и мужских. Чтобы активировать процесс воспроизведения, можно использовать кнопку старта.

Если говорить о том, как отключить синтезатор речи, то здесь может быть несколько вариантов. В простейшем случае можно использовать в самой программе кнопку остановки воспроизведения. В том случае, если синтезатор интегрирован в браузер, деактивация осуществляется в настройках расширений путем полного удаления плагина. С мобильными устройствами, несмотря на непосредственное отключение, могут возникнуть некоторые проблемы, о которых речь пойдет далее. Так, например, ввод текста и настройки осуществляются более сложным путем. Рассмотрим приложение FLStudio. Тут имеется собственный речевой модуль, в котором можно выбрать несколько типов голосов, изменить скорость воспроизведения или настройки тональности. Чтобы поставить ударение, перед слогом необходимо использовать символ «_». Однако такой синтезатор подойдет только для создания роботизированных голосов. Пакет Vocaloid от компании Yamaha уже можно отнести к программам профессионального уровня. Здесь в наиболее полном объеме реализована технология Text-to-Speech.

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

В данном обзоре мы уделим внимание только простым приложениям. Рассмотрим самые популярные из них. По мнению большинства пользователей RH Voice является лучшим синтезатором речи. Эта российская разработка была создана Ольгой Яковлевой. В стандартном варианте программы доступно всего три голоса – Елена, Александр, Ирина. Настройка программы выполняется достаточно просто. Само по себе приложение может использоваться и как самостоятельная программа, совместимая с SAPi5,икак экранный модуль.

Еще одним интересным приложением является Acapеla. Его основной особенностью является практически идеальная озвучка текста более чем на 30 языках мира. В простой версии приложения доступен только один вариант голоса – Алена. Еще одно мощное приложение с женским голосом – Milena. Эта программа очень часто используется в call-центрах. Существует множество настроек постановки ударения, настройки громкости, скорости чтения, а также установки дополнительных словарей. Основное отличие данной программы состоит в том, что речевой движок должен встраиваться в программе наподобие Cool Reader, Full Screen Caller ID, Moon+ Reader Pro. Мощнейшей утилитой для синтеза и распознавания речи является программа Festival. Она предназначена для систем Mac OSX и Linux. Поставляется это приложение с открытым исходным кодом. Помимо стандартных языковых пакетов он обладает поддержкой финского языка и хинди. Еще одно речевое приложение – eSpeak. Оно поддерживает более 50 языков. Главный недостаток данной программы состоит в том, что файлы с синтезированной речью оно сохраняет исключительно в формате WAV. Данный формат, как известно, занимает очень много места. Данная программа является кроссплатформенной и может применяться даже в мобильных системах.

Google Android: проблемы с синтезатором речи

Пользователи при установке «родного» синтезатора речи от компании Google очень часто жалуются на то, что он самопроизвольно включает загрузку дополнительных языковых модулей. Это не только занимает длительный промежуток времени, но и серьезно расходует трафик. Избавиться от этой проблемы в системах Android очень просто. Для этого необходимо использовать меню настроек. Здесь переходим в раздел языка и голосового ввода. Тут нужно выбрать голосовой поиск на параметре распознавания речи в режиме оффлайн и нажать на крестик (отключение). Также рекомендуется дополнительно почистить кэш приложений и выполнить перезагрузку устройства. В некоторых случаях в самом приложении может потребоваться отключить показ уведомлений.

Что же получается в конечном итоге? Если подводить некий итог, то можно сказать, что рядовым пользователям подойдут самые простые программы. Лидером во многих рейтингах оказывается программа RHVoice.Однако для музыкантов, которым необходимо добиться естественного звучания голоса, чтобы не ощущалась разница между живым и компьютерным синтезом, лучше отдавать предпочтение программам типа Vocaloid.Для подобных программ сегодня выпускается множество дополнительных голосовых библиотек. Настройки данных приложений имеют столько возможностей, то примитивные приложения и рядом не стоят.

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

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

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

Лучшие онлайн говорилки

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

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

Acapela

Acapela – это один из самых популярных речевых синтезаторов. Веб-утилита поддерживает более 30 языков. Одно из главных достоинств этого интернет-ресурса – огромное количество голосов. Для того же английского доступно около 20 тембров (женщина, мужчина, ребенок, подросток, радостный и пр.). К сожалению, российский язык обделили. Для воспроизведения текста на русском доступен лишь один женский голос.

Веб-программа имеет минимальное количество настроек. Благодаря этому разобраться с управлением сможет любой. Чтобы воспроизвести текст надо всего лишь:

  1. Кликнуть на первое поле. Появится список, в котором необходимо выбрать язык воспроизведения.
  2. Нажмите на следующее поле. В списке нужно выбрать один из предложенных тембров.
  3. В большое поле введите текст, который необходимо превратить в аудио дорожку.
  4. Затем надо согласиться с правилами сервиса. Чтобы сделать это, ставим галочку напротив соответствующего пункта. Появится кнопка Listen, нажав на которую можно прослушать введенный ранее текст.

Звучание у веб-программы вполне достойное. Максимальное количество символов, которые можно озвучить – 300.

Linguatec

Также стоит обратить свое внимание на сервис под названием Linguatec . Это немецкий интернет-ресурс, который пользуется огромной популярностью и за пределами родины. И это вовсе не удивительно. Веб-сервис поддерживает более чем 40 языков (само собой, в их число входит и русский). Что интересно, Linguatec способен воспроизводит различные диалекты. К примеру, имеется несколько версий английского: британский, американский, австралийский, ирландский и пр. Благодаря этой функции Linguatec – это отличная программа для тех, кто хочет узнать правильное произношение того или иного слова на иностранном языке.

Текст можно воспроизводить как мужским, так и женским голосом. Лимит бесплатного воспроизведения составляет 250 символов. Чтобы получить полный функционал, придется приобрести десктопный синтезатор речи. Его стоимость составляет 30 евро.

Как использовать онлайн синтезатор речи? Необходимо руководствоваться следующей инструкцией:

  1. Кликните на выпадающий список под надписью Voice Reader и определите язык воспроизведения.
  2. В выпадающем списке, который расположен немного ниже, определите голос. К примеру, для немецкого языка тут всего несколько вариантов произношения: мужской голос — Yannick и Markus, женский – Petra и Anna.
  3. Теперь введите текст, который надо воспроизвести, в соответствующее поле. Помните, что его размер не должен превышать 250 знаков (с учетом пробела).
  4. Чтобы преобразовать символы в аудио, необходимо кликнуть на кнопку со стрелочкой.

Oddcast

Oddcast – это довольно известная компания, которая занимается созданием интерактивных-компаньонов для различных брендов. Также у фирмы имеется свой собственный синтезатор речи, который можно использовать чтобы воспроизвести текст. Веб-утилита поддерживает около 30 языков. Большинство имеют несколько вариаций женского и мужского голоса. Программа способна воспроизвести текст величиной до 170 символов.

Отличительная черта данного сервиса – анимированная модель. Она следит за курсором и во время воспроизведения текста шевелит губами. Модель не несет в себе никакого полезного функционала. Ее цель – продемонстрировать возможности компании Oddcast.

Работать с Oddcast очень просто. Необходимо настроить основные характеристики веб-утилиты. Всего в программе предусмотрено 5 параметров:

  • Enter Text. Сюда пишем текст, который необходимо преобразовать в речь.
  • Language. Тут надо выбрать язык, на котором текст будет воспроизведен.
  • Voice. Выбираем голос для чтения (их количество зависит от выбранного языка).
  • Effect. Oddcast позволяет наложить на озвученный текст голосовые эффекты. Выбор довольно велик. Есть функция ускорения, эхо, питча и т.д.
  • Level. Позволяет настроить выбранный эффект. К примеру, если вы используете ускорение, то с помощью данного поля вы можете установить насколько быстро текст будет воспроизводиться.

Изменив характеристики под свои потребности, можете запустить говорилку. Для этого необходимо кликнуть на кнопку Say it.

iSpeech

Еще один сервис, на который стоит обратить свое внимание – iSpeech . Веб-утилита имеет хороший голосовой движок, что положительным образом сказывается на качестве аудио. Сервис поддерживает около 30 языков. Максимальное количество символов, которые можно озвучить – 150.

Интерфейс сервиса выполнен в минималистичном стиле. Все сделано очень наглядно. Чтобы выбрать язык, кликаем на соответствующий флаг. Если надо определить тембр, кликаем на женскую или мужскую иконку. Кроме этого, программа имеет три режима воспроизведения. Можно прослушать текст в медленном, нормальном или же ускоренном темпе. Установив нужные параметры, надо кликнуть на кнопку Play. Начнется преобразование текста в устную речь.

iSpeech идеально подойдет для изучения иностранного. Во время воспроизведения утилита подсвечивает слова, которые были произнесены вслух. Благодаря этому можно узнать правильное звучание конкретного слова, не отвлекаясь при этом от темы текста. Еще одна особенность сервиса заключается в том, что озвученный фрагмент можно скачать на свой ПК в виде аудио дорожки. Тем не менее эта услуга доступна только владельцам платных аккаунтов, стоимость которых довольно высока. Самая дешевая подписка обойдется в 500 долларов.

Text-To-Speech

Text-To-Speech – синтезатор речи, который может похвастаться хорошим голосовым движком. Интернет-утилита обладает очень простым, незамысловатым интерфейсом. Программа поддерживает около 10 самых популярных языков. Само собой, в их число входит и русский. Чтобы работать с этим веб-ресурсом достаточно:

  1. Выбрать параметры для озвучивания текста. Всего их два. Чтобы выбрать язык надо кликнуть на выпадающий список около надписи Language. Рядом можно заметить параметр Speed. Он отвечает за скорость чтения и устанавливается аналогичным образом.
  2. Теперь надо ввести текст в соответствующее поле. Веб-утилита способна обрабатывать фрагменты, размер которых не превышает 1000 символов.
  3. Далее необходимо кликнуть на кнопку Say it. Программа выдаст аудиофайл с вашим текстом. Прослушать его можно прямо на сайте.

Google Переводчик

Веб-сервис под названием Google Переводчик включает в себя говорилку. Пользоваться ей очень просто. Необходимо ввести текст в соответствующее поле и кликнуть на иконку динамика. Вуаля – робот прочитал указанный фрагмент. Google Переводчик имеет лимит на величину текста. Нельзя вводить больше 5000 символов.

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

From-Text-To-Speech

Большой объем текста позволяет обработать веб-сервис под названием From-Text-To-Speech . Утилита способна конвертировать до 50 тысяч символов за раз. Это на порядок выше чем у конкурентов. Веб-программа поддерживает 10 языков, которые пользуются наибольшей популярностью. В их число входит и русский.

Чтобы воспользоваться веб-сервисом для начала надо настроить параметры озвучки. Благо их тут не так много. В первую очередь надо выставить язык и определить голос, который будет читать текст. Для русского доступен лишь один тембр – женский. Затем надо настроить скорость чтения. Всего есть четыре варианта: медленный, нормальный, быстрый и очень быстрый. Выставив подходящие параметры необходимо кликнуть на кнопку Create Audio File.

Начнется процесс конвертации. Как правило, это занимает не больше минуты. По окончании превращения произойдет переход на новую страницу. Там будет гиперссылка в виде надписи Download audio file. Надо кликнуть на нее ПКМ и в выпадающем списке выбрать вариант «Сохранить ссылку как». Выбирайте место на своем ПК и загружайте аудио. Файл сохраняется в формате MP3.

2уха

Нельзя не отметить отечественные сервисы для преобразования текста в аудио. Одним из лучших в этом деле является веб-сайт под названием 2уха . Главное достоинство сервиса – возможность работать с большими объемами текста. Если другие ресурсы озвучивают небольшие фрагменты до 200-300 знаков, то 2уха способен обработать 100 КБ текста. Это около 100 тысяч символов. И, что самое главное, все совершенно бесплатно.

Как же работать с сайтом 2уха? Все очень просто. Чтобы конвертировать текст в устную речь надо всего лишь:

Данный сервис определенно заслуживает внимания. Качество озвученного текста на вполне достойном уровне. Да и возможность обрабатывать огромные файлы тоже не может не радовать. Однако есть у веб-сервиса 2уха и недостатки. К примеру, количество доступных языков. Сервис работает только с русским.

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

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

Синтез речи

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

Лингвистика

  1. Нормализация текста . Для начала нам нужно развернуть все сокращения, числа и даты в текст. 50е годы XX века должно превратиться в пятидесятые годы двадцатого века , а г. Санкт-Петербург, Большой пр. П.С. в город Санкт-Петербург, Большой проспект Петроградской Стороны . Это должно происходить так естественно, как если бы человека попросили прочитать написанное.
  2. Подготовка словаря ударений . Расстановка ударений может производиться по правилам языка. В английском ударение часто ставится на первый слог, а в испанском - на предпоследний. При этом из этих правил существует целая масса исключений, не поддающихся какому-то общему правилу. Их обязательно нужно учитывать. Для русского языка в общем смысле правил расстановки ударения вообще не существует, так что без словаря с расставленными ударениями совсем никуда не деться.
  3. Снятие омографии . Омографы - это слова, которые совпадают в написании, но различаются в произношении. Носитель языка легко расставит ударения: дверной замок и замок на горе . А вот ключ от замка - задача посложнее. Полностью снять омографию без учета контекста невозможно.

Просодика

  1. Выделение синтагм и расстановка пауз . Синтагма представляет относительно законченный по смыслу отрезок речи. Когда человек говорит, он обычно вставляет паузы между фразами. Нам нужно научиться разделять текст на такие синтагмы.
  2. Определение типа интонации . Выражение завершенности, вопроса и восклицания - самые простые интонации. А вот выразить иронию, сомнение или воодушевление задача куда сложнее.

Фонетика

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

Акустика

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

Реализации

Мы попытаемся найти End-2-End (E2E) реализацию синтеза, которая бы взяла на себя все сложности, связанные с тонкостями языка. Другими словами, мы хотим построить систему, основанную на нейронных сетях, которая бы на вход принимала текст, а на выходе давала бы синтезированную речь. Можно ли обучить такую сеть, которая позволила бы заменить целую команду специалистов из узких областей на команду (возможно даже из одного человека), специализирующуюся на машинном обучении?

На запрос end2end tts Google выдает целую массу результатов. Во главе - реализация Tacotron от самого Google. Самым простым мне показалось идти от конкретных людей на Github, которые занимаются исследованиям в этой области и выкладывают свои реализации различных архитектур.

Я бы выделил троих:

Загляните к ним в репозитории, там целый кладезь информации. Архитектур и подходов к задаче E2E-синтеза довольно много. Среди основных:
  1. Tacotron (версии 1, 2).
  2. DeepVoice (версии 1, 2, 3).
  3. Char2Wav.
  4. DCTTS.
  5. WaveNet.
Нам нужно выбрать одну. Я выбрал Deep Convolutional Text-To-Speech (DCTTS) от Kyubyong Park в качестве основы для будущих экспериментов. Оригинальную статью можно посмотреть по ссылке . Давайте поподробнее рассмотрим реализацию.

Автор выложил результаты работы синтеза по трем различным базам и на разных стадиях обучения. На мой вкус, как не носителя языка, они звучат весьма прилично. Последняя из баз на английском языке (Kate Winslet"s Audiobook) содержит всего 5 часов речи, что для меня тоже является большим преимуществом, так как моя база содержит примерно сопоставимое количество данных.

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

Еще один важный момент для такого рода систем - это время обучения. Tacotron на том железе, которое у меня есть, по моим оценкам учился бы порядка 2 недель. Для прототипирования на начальном уровне мне показалось это слишком ресурсоемким. Педали, конечно, крутить не пришлось бы, но на создание какого-то базового прототипа потребовалось бы очень много календарного времени. DCTTS в финальном варианте учится за пару дней.

У каждого исследователя есть набор инструментов, которыми он пользуется в своей работе. Каждый подбирает их себе по вкусу. Я очень люблю PyTorch. К сожалению, на нем реализации DCTTS я не нашел, и пришлось использовать TensorFlow. Возможно в какой-то момент выложу свою реализацию на PyTorch.

Данные для обучения

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

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

Начнем

Мы хотим создать сеть, которая на вход принимала бы текст, а на выходе давала бы синтезированный звук. Обилие реализаций показывает, что это возможно, но есть конечно и ряд оговорок.

Основные параметры системы обычно называют гиперпараметрами и выносят в отдельный файл, который называется соответствующим образом: hparams.py или hyperparams.py , как в нашем случае. В гиперпараметры выносится все, что можно покрутить, не трогая основной код. Начиная от директорий для логов, заканчивая размерами скрытых слоев. После этого гиперпараметры в коде используются примерно вот так:

From hyperparams import Hyperparams as hp batch_size = hp.B # размер батча берем из гиперпараметров
Далее по тексту все переменные имеющие префикс hp. берутся именно из файла гиперпараметров. Подразумевается, что эти параметры не меняются в процессе обучения, поэтому будьте осторожны перезапуская что-то с новыми параметрами.

Текст

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

Для примера возьмем простой алфавит:

["a", "b", "c"]
В процессе обучения мы выяснили, что оптимальные значения каждого их символов вот такие:

{ "a": , "b": , "c": }
Тогда для строчки aabbcc после прохождения embedding-слоя мы получим следующую матрицу:

[, , , , , ]
Эта матрица дальше подается на другие слои, которые уже не оперируют понятием символ.

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

В своих экспериментах я остановился на варианте:

# Алфавит задается в файле с гиперпараметрами vocab = "E абвгдеёжзийклмнопрстуфхцчшщъыьэюя-"
Это алфавит русского языка, дефис, пробел и обозначение конца строки. Тут есть несколько важных моментов и допущений:

  1. Я не добавлял в алфавит знаки препинания. С одной стороны, мы действительно их не произносим. С другой, по знакам препинания мы делим фразу на части (синтагмы), разделяя их паузами. Как система произнесет казнить нельзя помиловать ?
  2. В алфавите нет цифр. Мы ожидаем, что они будут развернуты в числительные перед подачей на синтез, то есть нормализованы. Вообще все E2E-архитектуры, которые я видел, требуют именно нормализованный текст.
  3. В алфавите нет латинских символов. Английский система уметь произносить не будет. Можно попробовать транслитерацию и получить сильный русский акцент - пресловутый лет ми спик фром май харт .
  4. В алфавите есть буква ё . В данных, на который я обучал систему, она стояла там, где нужно, и я решил этот расклад не менять. Однако, в тот момент, когда я оценивал получившиеся результаты, выяснилось, что теперь перед подачей на синтез эту букву тоже нужно ставить правильно, иначе система произносит именно е , а не ё .
В будущих версиях можно уделить каждому из пунктов более пристальное внимание, а пока оставим в таком немного упрощенном виде.

Звук

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

Считаются они следующим образом (код из этого листинга и всех последующих взят из реализации DCTTS, но видоизменен для наглядности):

# Получаем сигнал фиксированной частоты дискретизации y, sr = librosa.load(wavename, sr=hp.sr) # Обрезаем тишину по краям y, _ = librosa.effects.trim(y) # Pre-emphasis фильтр y = np.append(y, y - hp.preemphasis * y[:-1]) # Оконное преобразование Фурье linear = librosa.stft(y=y, n_fft=hp.n_fft, hop_length=hp.hop_length, win_length=hp.win_length) # Амплитудный спектр mag = np.abs(linear) # Мел-спектр mel_basis = librosa.filters.mel(hp.sr, hp.n_fft, hp.n_mels) mel = np.dot(mel_basis, mag) # Переводим в децибелы mel = 20 * np.log10(np.maximum(1e-5, mel)) mag = 20 * np.log10(np.maximum(1e-5, mag)) # Нормализуем mel = np.clip((mel - hp.ref_db + hp.max_db) / hp.max_db, 1e-8, 1) mag = np.clip((mag - hp.ref_db + hp.max_db) / hp.max_db, 1e-8, 1) # Транспонируем и приводим к нужным типам mel = mel.T.astype(np.float32) mag = mag.T.astype(np.float32) # Добиваем нулями до правильных размерностей t = mel.shape num_paddings = hp.r - (t % hp.r) if t % hp.r != 0 else 0 mel = np.pad(mel, [, ], mode="constant") mag = np.pad(mag, [, ], mode="constant") # Понижаем частоту дискретизации для мел-спектра mel = mel[::hp.r, :]
Для вычислений почти во всех проектах E2E-синтеза используется библиотека LibROSA (https://librosa.github.io/librosa/). Она содержит много полезного, рекомендую заглянуть в документацию и посмотреть, что в ней есть.

Теперь давайте посмотрим как амплитудный спектр (magnitude spectrum) выглядит на одном из файлов из базы, которую я использовал:


Такой вариант представления оконных спекторов называется спектрограммой. На оси абсцисс располагается время в секундах, на оси ординат - частота в герцах. Цветом выделяется амплитуда спектра. Чем точка ярче, тем значение амплитуды больше.

Мел-спектр - это амплитудный спектр, но взятый на мел-шкале с определенным шагом и окном. Количество шагов мы задаем заранее, в большинстве реализаций для синтеза используется значение 80 (задается параметром hp.n_mels ). Переход к мел-спектру позволяет сильно сократить количество данных, но этом сохранить важные для речевого сигнала характеристики. Мел-спектрограмма для того же файла выглядит следующим образом:


Обратите внимание на прореживание мел-спектров во времени на последней строке листинга. Мы берем только каждый 4 вектор (hp.r == 4 ), соответственно уменьшая тем самым частоту дискретизации. Синтез речи сводится к предсказанию мел-спектров по последовательности символов. Идея простая: чем меньше сети приходится предсказывать, тем лучше она будет справляться.

Хорошо, мы можем получить спектрограмму по звуку, но послушать мы ее не можем. Соответственно нам нужно уметь восстанавливать сигнал обратно. Для этих целей в системах часто используется алгоритм Гриффина-Лима и его более современные интерпретации (к примеру, RTISILA, ссылка). Алгоритм позволяет восстановить сигнал по его амплитудным спектрам. Реализация, которую использовал я:

Def griffin_lim(spectrogram, n_iter=hp.n_iter): x_best = copy.deepcopy(spectrogram) for i in range(n_iter): x_t = librosa.istft(x_best, hp.hop_length, win_length=hp.win_length, window="hann") est = librosa.stft(x_t, hp.n_fft, hp.hop_length, win_length=hp.win_length) phase = est / np.maximum(1e-8, np.abs(est)) x_best = spectrogram * phase x_t = librosa.istft(x_best, hp.hop_length, win_length=hp.win_length, window="hann") y = np.real(x_t) return y
А сигнал по амплитудной спектрограмме можно восстановить вот так (шаги, обратные получению спектра):

# Транспонируем mag = mag.T # Денормализуем mag = (np.clip(mag, 0, 1) * hp.max_db) - hp.max_db + hp.ref_db # Возвращаемся от децибел к аплитудам mag = np.power(10.0, mag * 0.05) # Восстанавливаем сигнал wav = griffin_lim(mag**hp.power) # De-pre-emphasis фильтр wav = signal.lfilter(, , wav)
Давайте попробуем получить амплитудный спектр, восстановить его обратно, а затем послушать.

Оригинал:


Восстановленный сигнал:
На мой вкус, результат стал хуже. Авторы Tacotron (первая версия также использует этот алгоритм) отмечали, что использовали алгоритм Гриффина-Лима как временное решение для демонстрации возможностей архитектуры. WaveNet и ему подобные архитектуры позволяют синтезировать речь лучшего качества. Но они более тяжеловесные и требуют определенных усилий для обучения.

Обучение

DCTTS, который мы выбрали, состоит из двух практически независимых нейронных сетей: Text2Mel и Spectrogram Super-resolution Network (SSRN).


Text2Mel предсказывает мел-спектр по тексту, используя механизм внимания (Attention), который увязывает два энкодера (TextEnc, AudioEnc) и один декодер (AudioDec). Обратите внимание, что Text2Mel восстанавливает именно разреженный мел-спектр.

SSRN восстанавливает из мел-спектра полноценный амплитудный спектр, учитывая пропуски кадров и восстанавливая частоту дискретизации.

Последовательность вычислений довольно подробно описана в оригинальной статье. К тому же есть исходный код реализации, так что всегда можно отладиться и вникнуть в тонкости. Обратите внимание, что автор реализации отошел в некоторых местах от статьи. Я бы выделил два момента:

  1. Появились дополнительные слои для нормализации (normalization layers), без которых, по словам автора, ничего не работало.
  2. В реализации используется механизм исключения (dropout) для лучшей регуляризации. В статье этого нет.
Я взял голос, включающий в себя 8 часов записей (несколько тысяч файлов). Оставил только записи, которые:
  1. В текстовках содержат только буквы, пробелы и дефисы.
  2. Длина текстовок не превышает hp.max_N .
  3. Длина мел-спектров после разреживания не превышает hp.max_T .
У меня получилось чуть больше 5 часов. Посчитал для всех записей нужные спекты и поочередно запустил обучение Text2Mel и SSRN. Все это делается довольно безхитростно:

$ python prepro.py $ python train.py 1 $ python train.py 2
Обратите внимание, что в оригинальном репозитории prepro.py именуется как prepo.py . Мой внутренний перфекционист не смог этого терпеть, так что я его переименовал.

DCTTS содержит только сверточные слои, и в отличие от RNN реализаций, вроде Tacotron, учится значительно быстрее.

На моей машине с Intel Core i5-4670, 16 Gb RAM и GeForce 1080 на борту 50 тыс. шагов для Text2Mel учится за 15 часов, а 75 тыс. шагов для SSRN - за 5 часов. Время требуемое на тысячу шагов в процессе обучения у меня почти не менялось, так что можно легко прикинуть, сколько потребуется времени на обучение с большим количеством шагов.

Размер батча можно регулировать параметром hp.B . Периодически процесс обучения у меня валился с out-of-memory, так что я просто делил на 2 размер батча и перезапускал обучение с нуля. Полагаю, что проблема кроется где-то в недрах TensorFlow (я использовал не самый свежий) и тонкостях реализации батчинга. Я с этим разбираться не стал, так как на значении 8 все падать перестало.

Результат

После того, как модели обучились, можно наконец запустить и синтез. Для этого заполняем файлик с фразами и запускаем:

$ python synthesize.py
Я немного поправил реализацию, чтобы генерировать фразы из нужного файла.

Результаты в виде WAV-файлов будут сохранены в директорию samples . Вот примеры синтеза системой, которая получилась у меня:

Выводы и ремарки

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

Остаются вопросы по управляемости таким синтезом. Пока невозможно даже исправить ударение в слове, если оно неверное. Мы жестко завязаны на максимальную длину фразы и размер мел-спектрограммы. Нет возможности управлять интонацией и скоростью воспроизведения.

Я не выкладывал мои изменения в коде оригинальной реализации. Они коснулись только загрузки обучающих данных и фраз для синтеза уже по готовой системе, а также значений гиперпараметров: алфавит (hp.vocab ) и размер батча (hp.B ). В остальном реализация осталась оригинальная.

В рамках рассказа я совсем не коснулся темы продакшн реализации таких систем, до этого полностью E2E-системам синтеза речи пока очень далеко. Я использовал GPU c CUDA, но даже в этом случае все работает медленнее реального времени. На CPU все работает просто неприлично медленно.

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

Теги: Добавить метки

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

Рисунок 2.2 - Акустическая обработка сигнала

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


Рисунок 2.3 - Синтез речи

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

Существует несколько подходов к решению поставленных задач:

1) системы аллофонного синтеза - обеспечивают стабильное, но недостаточно естественное, роботизированное звучание;

2) системы, основанные на подходе Unit Selection - обеспечивают гораздо более естественное звучание, однако могут содержать фрагменты речи с резкими провалами качества, вплоть до потери разборчивости;

3) гибридная технология, основанная на подходе Unit Selection и дополненная единицами аллофонного синтеза.

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

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

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

Все системы распознавания речи можно разделить на два класса:

1) Системы, зависимые от диктора - настраиваются на речь диктора в процессе обучения. Для работы с другим диктором такие системы требуют полной перенастройки.


Рисунок 2.4 - Распознавание речи

2) Системы, не зависимые от диктора - работа которых не зависит от диктора. Такие системы не требуют предварительного обучения и способны распознавать речь любого диктора.

Изначально на рынке появились системы первого вида. В них звуковой образ команды хранился в виде целостного эталона. Для сравнения неизвестного произнесения и эталона команды использовались методы динамического программирования. Эти системы хорошо работали при распознавании небольших наборов из 10-30 команд и понимали только одного диктора. Для работы с другим диктором эти системы требовали полной перенастройки.

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

Кроме этого, существовало желание сделать систему, не зависящую от диктора. Это весьма сложная задача, поскольку у каждого человека индивидуальная манера произнесения: темп речи, тембр голоса, особенности произношения. Такие различия называются вариативностью речи. Чтобы ее учесть, были предложены новые статистические методы, опирающиеся в основном на математические аппараты Скрытых Марковских Моделей (СММ) или Искусственных Нейронных сетей. Вместо создания эталонов для каждого слова, создаются эталоны отдельных звуков, из которых состоят слова, так называемые акустические модели. Акустические модели формируются путём статистической обработки больших речевых баз данных, содержащих записи речи сотен людей.

В существующих системах распознавания речи используются два принципиально разных подхода:

Распознавание лексических

Отметим, что создание систем распознавания речи представляет собой чрезвычайно сложную задачу.

Все чаще в повседневной жизни стали использовать синтезаторы речи. Синтезаторы речи, как становится видно уже по одному названию, осуществляют синтез речи, то есть форматируют письменный текст в устный.

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

Сейчас же, любой пользователь может скачать одну из программ, установить ее на свой компьютер или телефон и синтезировать речь, в том числе и русскую.

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

1. Acapela

Acapela — один из самых распространенных речевых синтезаторов во всем мире. Программа распознает и озвучивает тексты более, чем на тридцати языках. Русский язык поддерживается двумя голосами: мужской голос — Николай, женский — Алена.
Женский голос появился значительно позднее мужского и является более усовершенствованным.

Установка программы проходит без проблем. Разработаны версии для операционных систем Windows, Linux, Mac, а также для мобильных ОС Android u IOS.

Программа платная, скачать ее можно с официального сайта Acapela.

2. Vokalizer

Вторым в нашем списке, но не по популярности является движок Милена от разработчика программы Vocalizer компании Nuance.
Голос звучит очень естественно, речь чистая. Есть возможность установить различные словари, а также подкорректировать громкость, скорость и ударение, что не маловажно.
Как и в случае с Акапелой, программа имеет различные версии для мобильных, автомобильных и компьютерных приложений. Прекрасно подходит для чтения книг.

Скачать все версии Vokalizer и русскоязычный движок Милена можно на официальном сайте производителя программы.

3. RHVoice

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

4. ESpeak

Первая версия бесплатного синтезатора речи eSpeak была выпущена в 2006 году. С тех пор компания-разработчик постоянно выпускает все более усовершенствованные версии. Последняя версия была представлена в конце весны две тысячи тринадцатого года.

eSpeak можно установить под следующие операционные системы:

  • Microsoft Windows,
  • Mac OS X,
  • Linux,
  • RISC OS

Возможна также компиляция кода для Windows Mobile, но делать ее придется самостоятельно.
А вот с мобильной ОС Android программа работает без проблем, хотя русские словари еще не до конца разработаны. Русскоязычных голосов много, можно выбрать на свой вкус.

5. Festival

Festival — это целая система распознавания и синтеза речи, которая была разработана в эдинбургском университете.
Программы и все модули абсолютно бесплатно и распространяются по системе open source. Скачать их и ознакомиться с демо-версиями можно на официальном

Понравилась статья? Поделиться с друзьями: