Pull to refresh

Comments 8

Было бы здорово примеры произношения разных движков, или даже демку с распознаванием.

Nuance сильно лучше дотнетовского SpeechSynthesizer?
У Nuance есть демо для TTS на web. А вот M$ движок я давно не слушал. Несколько лет назад он был в меру ужасен, но сейчас возможно что-то изменилось.
Интересно, спасибо.
Только вот примеры написаны на чистейшем С, назвать это С++ язык не поворачивается
Угу, просто я выдирал примеры из плюсового проекта.
Sphinx выглядит многообещающе, но уже довольно давно :)
В принципе я верю, что его когда-нибудь допилят до нужной кондиции + добавят большинство распространенных языков. Но процесс идет как-то медленно. А может быть развитие пойдет по другому пути — все будут использовать облачные сервисы вместо встроенных…
Чтобы дать читателю представление о том, как процесс работы с TTS выглядит на нижнем уровне (используется С++) я приведу пример синтеза речи на базе движка Nuance.


При этом следует отметить, что основные OS уже имеют системный высокоуровневый TTS API. Если детального контроля за генерацией речи по тексту не требуется, а нужно просто зачитывание строк рядового текста вслух, то обычно имеет смысл использовать именно эти годовые API.

Возможно именно по этому до сих пор не существует сколь-нибудь широкого рынка Open Source решений для большинства языков.


Ну к open source термин рынок вообще обычно не очень подходит…

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

Казалось бы, ничто не мешает создать «универсальный» голос, который будет уметь произносить все фонемы IPA, и таким образом решит проблему многоязычных интерфейсов. Но этого почему-то никто не делает. Скорее всего, это и невозможно.


eSpeak — это живой пример именно такого подхода. Там есть некий объём фонем, из которых собирается поддержка нового языка. Зачастую на фонемах уже существующих языков удаётся собрать новый язык. Если же каких-то отдельных фонем не хватает, то они добавляются в проект. Например, как раз для русского пришлось отдельно записывать и добавлять фонему для звука [р].

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

Есть и такое понятие как псевдоязык, когда поддержку какого-то языка делают на базе фонетически схожего. Например, так часто делают синтез украинской речи, просто перед генерацией обрабатывая строку текста набором правил, типа заменить «е» на «э» и т.п. Ну это, конечно, уже не от хорошей жизни.
По мне так подход eSpeak имеет право на жизнь. Я вообще не против robotic voice и считаю, что железка пусть звучит как железка. Но широкому кругу пользователей такая идея не близка. Боюсь что такое качество трудно будет продать.

Насчет псевдоязыков — да, я тоже баловался такими вещами, например моделируя канадский английский на базе американского английского. Радости мало, но порой приходится идти на компромисс.
Sign up to leave a comment.

Articles