Николай — это самый популярный синтезатор речи для чтения книг.
Про николая не слышал, разве что начинающий пользователь компьютера. Почти каждому знаком его успокаивающий голос, порой, до смешного искажающий ударения в незнакомых ему словах, а уж особенно пользователям Макс-ридера, где Digalo николай является основным синтезатором.
На сегодняшний день есть несколько версий николая, которые активно используются. Это «Digalo nicolay», он обычно устанавливается с Макс-ридером и поддерживает только Sapi4. Отдельно эту версию синтезатора устанавливать смысла нет, так как Выпущена она была довольно давно, соответственно на современных системах, где sapi4 работает уже не так шустро надобность в использовании дигало вне макс-ридера, кажется сомнительной.
Так же существуют ещё две популярные версии Николая — Acapela Elan Speech Cube. Этот николай уже поддерживает Sapi5 Умеет читать латинские буквы, Имеет расширенный диапазон изменения высоты, но в сущности — это тот же самый Digalo.
R-KEEPER как работать на кассе
Версии николая для скачивания
Вашему вниманию предлагается две версии данного синтезатора.
- Скачать «acapela-elan-tts-speechcube-5.1-rus-nicolai_mme255_.msi» (11,3 МБ) — это наипопулярнейший пакет Николая. Поддерживает sapi4 и Sapi5 платформы. Если искать Николая в интернете, скорее всего эта версия найдётся первой.
- Скачать «Nicolai.exe» (11,9 МБ). Эта версия поставлялась на некоторых дисках с максридером, но точное происхождение этого пакета неизвестно.
Источник: aadblinder.ru
Это основной компонент, движек, для чтения текста с помощью компьютера вслух, например Вы сейчас можете раскладывать пасьянс и слушать, как компьютер прочитает эту страничку.
А вот что пишет об этом Старикович А.К., автор Спикера.
Зачем это все нужно? Слушать книжки, конечно же! А почему это удобнее, чем просто читать с экрана.
· На компьютере человек выполняет массу самых разнообразных работ. Часть из них бывает совершенно рутинной. Вот как раз во время выполнения оных можно одновременно слушать книжку.
· Читать с экрана — не самое приятное и полезное для глаз занятие. А если учесть, что есть люди с ослабленным зрением.
· Восприятие от прослушивания книжки в корне отличается от ее чтения. Нельзя однозначно сказать что лучше. Все люди разные. Но, как мне кажется, попробовать стоит. И не только попробовать, но и постараться хоть немного привыкнуть.
· Полезно это может оказаться при написании тестов статей, речей. Прослушать как бы со стороны, исправить стилистику, найти ошибки.
· Замечательно запоминать тексты, стихи.
Тут пошаговая инструкция для тех, кто не знает с чего начать.
Что такое DigaloEditor (редактор ударений Digalo )?
Как и все в мире не совершенно, так и движек Digalo произносит некоторые слова с неправильным ударением и произношением. Для этого, французская компания Elan I nformatique поставляет вместе с движками файлы со словарями и утилитками для их редактирования. Но почему-то для русского движка Digalo она решила этого не делать J . Мне это не понравилось и после выкачивания пары сотен мегабайт данных с их сайтов и прочтения многих страниц их документаций, я разобрался, как вернуть часть отобранного J .
Вообще Elan предлагает большие возможности по редактированию качества звучания голоса, например можно редактировать правила произнесения отдельных слов и звуков, кому интересно, вот как пример ссылка на документашку FrenchTTS на английском языке для движка с французским голосом, есть еще для семи языков кроме русского J . На Elan I nformatique еще описаны утилитки Lexitool и Prosel о которых в доке ни слова. Например утилитка для редактирования звуковых файлов, из кусков которых генерируется голос.. Честно говоря, они серьезно подошли к вопросу, не даром они некоторые последние версии движков всерьез предлагают использовать в аэропортах для объявлений. В общем, мне удалось сделать только самое главное: создать файлы со словарями: в одном аббревиатуры ( abb _ rus . txt ), а в другом так называемые исключения ( exc _ rus . txt ) – в нем можно редактировать ударения, при желании (если кто разберется) в нем можно еще редактировать фонетическое звучание слова. Так вот DigaloEditor написаная моим хорошим знакомым по моей просьбе, максимально упрощает занесение слов и словосочетаний в последний файл.
Почему я предпочел DigaloEditor вместо альтернативы?
+ Я использую WordAgent – это макрос для чтения из Word . На мой взгляд, работать с книгами в Word удобнее, но для него нет встроенного словаря как у Govorilka или ReaderTTS.
+ Я предпочитаю заносить слова, неправильно произносимые Дигало в словарь из Word . Судя по подчеркиванию в Word , я знаю, что слово с ошибкой и его сначала надо исправить и только потом заносить при необходимости (может без ошибки оно правильно читается) в словарь. Считаю занесение в словарь без проверки орфографии лишней тратой времени. Прочитав эту статью, я убежден, что текст сначала надо проверить на ошибки, а только потом требовать от синтезатора речи правильного его произношения.
+ Я могу пользоваться любой программой-оболочкой (включая программы без своих словарей) используя один, общий словарь для всех.
+ Родной словарь Digalo не использует звездочки (*), и я считаю это правильным. По моему субъективному мнению использование звездочек вместо окончания и предлогов ухудшает словарь, так как разные слова с разными ударениями могут иметь одинаковый корень и кто-нибудь да добавит этот корень с одним ударением, заставляя дигало читать все слова с одним ударением. Я долго пользовался Говорилкой, мои словари лежат на ее сайте отправленные с мейлов koljan_c(сабака-бабка)mail.ru и wolfskull(сабака-бабка)mail.ru, первый из них я послал автору аж 06.11.2001 года. Так что это я прочувствовал на себе, на сколько со временем ухудшилось чтение, мне кажется даже что без словаря он лучше читает. И не только я заметил это, почитайте что пишет Вера, автор одного из словарей размещенных на сайте Говорилки http://www.vector-ski.ru/vecs/govorilka/veraz.htm.
Зачем я выложил все это для скачивания?
DigaloEditor я использую с 2002 года, за два года в словаре появилось более 7 тысяч исключений (в 2 файлах). Это намного улучшило качество чтения. Но вот если бы два года над словарем работал не один, а скажем 10 человек, то я бы сейчас не писал бы эти строки, а наслаждался бы, слушая очередную книгу. Другими словами я призываю вас использовать мой словарь и дополнять его.
А так же не забывать присылать вашу версию мне, после добавления в него не менее 10-50 исключений. Я же, в свою очередь буду объединять ваши словари, и выкладывать для всеобщего скачивания один общий, большой словарь.
Скриншот
Примечание
Основное что нужно знать перед пополнением словаря, это:
! Исключение может содержать не более пяти слов. Количество пробелов в области исключения должно совпадать с количеством пробелов в области произношения.
! Не заносите в словарь слова, которые могут иметь два ударения, например «замок». В этом случае в словарь стоит добавлять только словосочетания где это слово может иметь только одно ударение, например «навесной замо
Иначе много работы может быть потеряно впустую. Подробности в FAQ .
И еще совет: не гонитесь за совершенством, боритесь только с тем, что Вас раздражает.
Загрузка
DigaloEditor v 1.0 (280 КБ) – редактор ударений и словари. При распаковке не меняйте путь. На рабочем столе появится ярлык к папке с нужными файлами.
Свежие словари – распакуйте в C:Program FilesDigaloDigalo 2000 Russianrussiandata
В exc_rus.txt 7095 исключений, изменен 29 июля 2004 г.
В abb_rus.txt 437 аббревиатур, изменен 7 июля 2004 г.
Чтобы они чаще пополнялись — присылайте мне свои версии.
Исходники на delphi6 v 1.0 (238 КБ) — для тех, кто хочет помочь улучшить утилитку. Я не умею программировать, эту утилитку мне написал мой хороший знакомый. За что ему большое спасибо.
Если не скачиваются – попробуйте позднее, возможно сервер перегружен…
Как использовать
Просмотрите файлы abb _ rus . txt и exc_rus.txt, в этих файлах хранятся словари исключений. Способ занесения исключения/исправления слова в файл abb _ rus . txt проще, чем в exc_rus.txt, поэтому первый легко можно править, например в блокноте. Во второй же добавить исключение гораздо сложнее из-за дополнительных знаков, которые приходиться набирать, поэтому была написана утилита DigaloEditor для автоматизации занесения слов и словосочетаний в этот словарь.
Способ занесения слов в словарь exc_rus.txt с помощью DigaloEditor:
В большом поле будут представлены все слова, входящие в ваш пользовательский словарь ударений. Эти слова отсортированы в алфавитном порядке для удобства поиска. Ударная гласная обозначается знаком < после нее.
Во-первых, нажмите кнопку «Добавить». Во-вторых, вводите слово в левое верхнее поле, во время ввода, список перемещается таким образом, чтобы показывать ближайшее похожее слово, которое начинается с тех же букв, что и набираемое вами. В правом верхнем поле автоматически набирается копия слова. Если слово уже присутствует в словаре – набираемое слово изменит свой цвет на красный.
Если набираемое вами слово отсутствует в словаре, в правом верхнем поле укажите ударную гласную с помощью знака <. Если вы хотите, чтобы Дигало обращал внимание на регистр набранного Вами слова – снимите галочку в правом верхнем углу. Чтобы удалить слово, выберете его в большом поле и нажмите кнопку «Удалить». Теперь можно сохранить все изменения, нажав кнопку «Сохранить». Если допустили ошибку и не хотите сохранять, соответственно нажмите «Выход» и ответьте на вопрос программы «Сохранить изменения?» нажав «Нет».
Обратите внимание: Чтобы изменения вступили в силу, словарь исключения должен быть перезагружен в памяти. В случае с WordAgent нужно нажать два раза кнопку с красным кружочком, так чтобы персонаж исчез и появился заново.
Способ занесения слов в словари без DigaloEditor:
Abbreviations, имя файла : abb_rus.txt
Сокращение (аббревиатура) или акроним — слово, сформированное из первых букв словосочетания, которое оно заменяет. Например: AGP, ASAP, snafu.
- Максимальная длинна словаря зависит от доступной оперативной памяти.
- Сокращение и его трансляция должны быть написаны на одной строке и не превышать 256 символов.
- Регистр учитывается.
- Первый пробел или табуляция отделяют поле сокращения от поля трансляции. (Лучше использовать табуляцию)
- Пробел — разделитель между словами в поле трансляции сокращения.
- Обратите внимание: После модификаций, словарь исключения должен быть перезагружен в память.
Используемые специальные символы в словарях:
space word boundary
Exceptions( исключения ), имя файла : exc_rus.txt
Для слов и словосочетаний.
- Максимальная длинна словаря зависит от доступной оперативной памяти.
- Исключение и его произношение должны находится на одной строке и не превышать 256 символов.
- Исключение может содержать не более пяти слов. Количество пробелов в области исключения должно совпадать с количеством пробелов в области произношения.
- Запрещается использование знаков препинания в области исключения. Поэтому невозможно добавить в словарь исключений сокращения (т.д.), для этого есть файл abb _ rus . txt .
- Обратите внимание: После модификаций, словарь исключения должен быть перезагружен в память.
Используемые специальные символы в словарях:
: end of exception word — разделитель области исключения и произношения
## word boundary — обозначаются пробелы в области произношения
/i to ignore case — игнорировать регистр
() word tag — . (неизвестно)
Схема занесения исключений в текстовый файл exc_rus.txt:
область исключения пробел : табуляция < область произношения>пробел знак игнорирования регистра
Более полную информацию о специальных символах можно узнать из FrenchTTS.
Другие программы
Вот еще несколько программ по теме, которые могут пригодиться:
MS-Agent (3,40 КБ) — Программа вызова окна свойств Microsoft Agent Алексей Ермакова, автора Говорун+
Word Agent (98,7 КБ) – дополнение к MS Word для чтения текста с использованием персонажей MS Agent.
Распакуйте в: C:. Application DataMicrosoftWordSTARTUP Точный путь для распаковки Вы можете узнать открыв: Word->Сервис->Параметры->Расположение->Автозагружаемые.
Верстка (91,6 КБ) — дополнение к MS Word содержащее в себе несколько макросов, самый нужный, это обработка текста MS — DOS , в котором в конце каждой строки стоит символ конца абзаца.
Распакуйте в: C:. Application DataMicrosoftWordSTARTUP Точный путь для распаковки Вы можете узнать открыв: Word->Сервис->Параметры->Расположение->Автозагружаемые.
Macros (8,34 КБ) – макрос для MS Word, написанный мной для нормализации текста под особенности движка Digalo . Особенности я вычитал в FrenchTTS и в доках к другим языкам.
DelIdent (10,0 КБ) — Макрос для удаления одинаковых ячеек от Олега Вдовиченко. Он был написан для Говорилки. В случае с дигаловским словарем сначала надо будет заменить знак табуляции на другой, например заменить пробел:знак табуляции< на = , а потом вернуть назад.
Genie (1,55 МБ ) — MS Agent, Джин . Я использую его в Word Agent, он быстрее пробегает абзацы. В Word Agent при каждом абзаце персонаж перелистывает страницу или выполняет еще какое-либо мультяшное действие. При чтении диалога или стихов у других персонажей получается довольно-таки долгий переход с одной строчки на другую, у Джина пошустрее. Если кто знает других персонажей, которые быстро пробегают абзацы, пожалуйста, напишите мне, буду очень благодарен.
FrenchTTS – документация к французскому движку Digalo .
Audiotools — запись всего того что слышите из колонок прямо в mp 3 или wma , либо другой формат. Море настроек, и т.д. Рекомендую.
Beyond Compare – хорошо подходит для объединения словарей.
FAQ
Совет: не гонитесь за совершенством, боритесь только с тем, что Вас раздражает.
Что такое «исключение»?
Это слово или словосочетание занесено в словарь в файле exc_rus.txt.
Добавил словосочетание, и теперь Дигало при загрузке выдает ошибку. Либо при чтении вдруг вылетает в ошибку!
Скорее всего, не соблюдено это правило: «Исключение может содержать не более пяти слов, необходимо, что бы в области произношения было столько же слов. Количество пробелов также должно совпадать в обеих областях». Хуже всего, когда движек загружается, но иногда вылетает в ошибку. Это все из-за несоблюдения этого правила, поэтому чаще сохраняйте резервные копии словарей и желательно несколько версий. Как раз и навсегда решить эту проблему?
Но в некоторых словосочетаниях нужно убрать между некоторыми словами пробел для более правильного произношения.
Обходится правило так: — недостающие пробелы ставятся в конце.
Как заставить читать в слове вместо «ё» — «е».
Перед «е» поставить «
А если слово может иметь два ударения, «замок» например?
В этом случае в словарь стоит добавлять только словосочетания где неправильно произносимое слово может иметь только одно ударение , иначе Вы и другие люди будут постоянно исправлять эти слова на свой лад.
большой замок : /i » — большим может быть и «за
С буквой «ё» то же самое:
Добавил слово, перезагрузил Дигало и все равно иногда произносит с неправильным ударением.
o Это происходит когда в тексте между словом и одним из следующих знаков <[<«()»>]># нет пробела. Увы, не лечиться.
o Сначала движок Дигало выбирает из словаря словосочетания, а потом слова. Это стоит учитывать при добавлении в словарь. Лечится это так: открываете файл exc_rus. txt в блокноте и ищете интересующее Вас слово, которое в данном случае произносится с неправильным ударением, скорее всего оно уже есть в каком-нибудь словосочетании. Удаляете это словосочетание, перезапускаете движок и слушаете, изменилось ли ударение.
Некоторые слова Дигало произносит с разным ударением в зависимости от предложения, почему?
Да, даже без внешнего словаря, Дигало меняет ударение в слове в зависимости от предложения. Возможно, движек меняет ударение в зависимости от слов стоящих до или после интересующего слова. Возможно движек проводит грамматический анализ предложения и определяет где поставить ударение. Я точно не знаю по какому принципу он работает в данном случае.
По какой схеме лучше всего заносить слова в словарь?
Я делаю так: Открываю книгу в Word , если это текст Dos — конвертирую Версткой. Обрабатываю макросом. Слушаю книгу с помощью WordAgent и на ходу меняю цвет интересующих слов в другой. Спустя десяток страниц, останавливаю чтение и заношу в словарь выделенные другим цветом слова.
Почему дигало длинные слова читает с разрывом и в предложении ставит паузу там, где ее не должно быть?
В доке к французскому языку есть такое описание:
Особенности при чтении предложения
Если предложение содержит больше 255 символов без знака препинания, то оно будет усечено между двумя словами, чтобы создать два или несколько предложений, которые будут меньше 255 символов.
Если предложение содержит больше 28 слов без знака препинания, то оно будет усечено между двумя словами, чтобы создать два или несколько предложений, которые будут меньше 28 слов.
Предложение должно всегда начинаться с заглавной буквы и заканчиваться с точкой. Обратите внимание, слово в начале предложения не имеет той же самой просодии слова в пределах предложения. Если предложение не начинается с заглавной буквы, система может применить просодию, которая не соответствует просодии начального слова, полагая что предыдущее слово и «.» — это сокращение.
Слово должно быть меньше 25 символов. Более длинные слова будут усечены после 25-ого символа.
В русском языке, насколько я заметил, эти ограничения отличаются. Учитывайте ограничения при добавлении в словарь длинных слов.
Поддержка
Не задавайте мне, пожалуйста, вопросы о других программах, у меня очень мало свободного времени, т.к. я работаю минимум 40 часов в неделю. Сайт поддерживаю в свободное время. Прошу искать ответы на вопросы, не касающиеся словаря на других сайтах, например в разделе ссылки. Там вы обязательно найдете ответы на свои вопросы, они там уже не раз задавались.
Если у вас есть вопрос по словарю, то:
ü Прочитайте эту страничку от начала до конца.
ü Прочитайте еще раз FAQ .
ü Попробуйте еще раз найти ответ/решить проблему самостоятельно.
ü Если так и не нашли ответа, задавайте пожалуйста вопросы по почте, я отвечу как только появится время.
Планы
— Автоматическая проверка количества пробелов в области исключения и в области произношения. И в случае не совпадения их количества в этих областях – выдавать предупреждение и не заносить в словарь.
— При наборе слова искать на совпадение еще и в словосочетаниях, т.е. поиск не по маске «слово*», а по «*слово*».
Но, к сожалению я не умею программировать и это не будет реализовано пока кто-нибудь не допишет утилитку используя исходники (delphi) или не напишет заново на языке подвластному добровольцу.
Источник: www.siyniezvezd.ru
Как слепой разработчик в одиночку создала синтезатор речи
Мы все, так или иначе, сталкивались с пользователями, имеющими проблемы зрения. Отвечающие за UI, не важно сайта, мобильного приложения или любого другого софта, скорее всего, знают про необходимость учитывать потребности таких людей и поэтому делали режимы повышенной контрастности, увеличенные шрифты и так далее.
А что, если пользователь совсем слепой и все эти режимы никак не упрощают его жизнь? Здесь на арену выходят программы для чтения экрана и синтезаторы звука, без которых им не обойтись. И вот про один из них я бы хотел вам сегодня рассказать.
Называется от RhVoice и упоминался в нескольких публикациях на Хабре. Но знаете ли вы, что многие считают его лучшим бесплатным синтезатором русской (и не только) речи, а написан он в одиночку полностью слепым разработчиком — Ольгой Яковлевой?
Сегодня восстанавливаем историческую справедливость и немного узнаем про сам синтезатор вообще, и Ольгу в частности.
Сразу раскроем все карты: гитхаб синтезатора
Код синтезатора распространяется бесплатно по GPL, а значит его может встроить в свой продукт любой желающий. Доступен на трех платформах: Windows, Linux и Android. Ведет разработку Ольга одна и работает в Linux. Лучшим (из опенсорсных) синтезатором русской речи, его считают сами пользователи и это не только люди с плохим зрением.
В своей работе синтезатор использует статистический параметрический синтез и был основан на наработках уже существующих проектов, таких как HTS, и опубликованных научных исследованиях. Это гибридная глубокая нейронная сеть, работающая со скрытой марковской моделью. Задача таких сетей, это разгадка неизвестных параметров на основе наблюдаемых.
Можно считать, что это простейшая Байесовская сеть. Сам HTS был основан на наработках другого проекта — HTK. Но нас тут больше всего интересует, что часть наработок была опубликована для свободного использования, включая описание алгоритмов и примененных техник.
Сам синтезатор позиционируется как средство для ежедневной работы. Его можно использовать и в более творческих целях вроде озвучивания книг, но все же лучше, когда их озвучивают люди.
Ольга начала свой проект почти 10 лет назад, когда стала изучать Linux и не нашла там удобного для себя синтезатора. Пишет весь код она сама, используя для этого специальный Брайлевский дисплей. Это специальное устройство предназначенное для отображения текстовой информации в виде шести точечных символов азбуки Брайля. Также в работе использует JAWS, программу для чтения с экрана, которая ведет свою историю со времен DOS и тоже созданную при активном участии слепого.
А теперь, когда вводные даны, давайте немного углубимся в мир синтезаторов речи.
Что же такое синтезатор речи и что в него входит?
Традиционно принято считать, что любой синтезатор состоит из двух частей: языковой компонент и компонент генерации речевого сигнала. Языковой компонент анализирует текст, получаемый от чтеца экрана. Его задача разбить текст на предложения, предложения на фразы, слова и слоги.
В конце строится транскрипция всех слов и по ней создается карта звуков (как всем известно, не всегда как пишется, так и говорится). Разбор этот можно делать с разной глубиной проработки. У RhVoice, например, нет ресурсов для сложных операций вроде определения роли в предложении или части речи. Но в любом случае в конце разбора у нас получается набор звуков, которые должен собрать компонент генерации речевого сигнала, используя базу пред записанных звуков. Немного позже мы подробнее остановимся на каждом из компонентов.
Демонстрация работы с синтезатором
История Ольги
Ольга живет в Чебоксарах, закончила математический факультет Чувашского государственного университета и работает программистом. Как и все незрячие люди, она училась в специализированных школах. Сначала были 6 классов в школе Нижнего Новгорода, потому что на тот момент в Чебоксарах не было мест, куда бы принимали полностью слепых детей.
Но спустя шесть лет все же получилось вернуться в родной город, и доучилась Ольга уже в Чебоксарах. Там же в школе, Ольга полюбила математику, что в дальнейшем позволило ей поступить на математический факультет. В какой-то момент она думала о поступлении на ИВТ, но тут свою роль сыграла неуверенность в собственных силах. Да и среди выпускников математического факультета было несколько незрячих, а на вступительном собеседовании декан сказал, что у них программистов готовят даже лучше, чем на ИВТ.
Первый опыт работы с компьютерами Ольга получила не в школе, а в университете, в библиотеку которого закупили специальные компьютеры, оборудованные для использования слепыми, с установленной программой JAWS (программа для чтения с экрана, ведущая свою историю аж с 1989 года). Там она изучала знаменитый учебник по Windows 95 от Сары Морли.
Скорее всего, вы сейчас удивитесь, ибо что за такой знаменитый учебник, про который вы и не слышали ни разу? Ответ кроется в его названии: «Windows 95 для незрячих и слабовидящих». Основное отличие подобных учебников от знакомых всем нам, это акцент на описании различных объектов и вариантах управления ими.
Так как незрячему человеку инструкция вида «щелкните мышкой на ниспадающий список и выберите нужный пункт меню» несколько бесполезна. Они не видят ни экран, ни курсор мышки и даже больше — не знает, как выглядит окно и ниспадающий список. Кстати, из-за этого возникает еще один неочевидный нюанс — незрячие люди могут оказаться заложниками битности используемого синтезатора. Так, лет пять назад, при переходе на Windows 8 многие столкнулись с отсутствием поддержки 64 bit приложений со стороны синтезаторов речи и перешли на RhVoice, где эта поддержка уже была реализована.
Но вернемся во времена, когда Ольга только начинала изучение новой для себя области. Синтезатором речи тогда выступала программа Digalo с голосом Nikolay. Это настолько каноничная связка, что результаты ее работы слышал абсолютно любой человек, выходивший в сеть. Его голос можно считать синонимом термина «робовойс», настолько плотно он вошел в интернет культуру и был использован в бесконечном количестве видео на ютубе. Вероятно, поэтому абсолютное большинств уверено, что Дигало это фамилия Николая.
Digalo Nikolay во всей красе
Начало работы над собственным проектом
Путешествие в мир синтезаторов началось для Ольги примерно в 2010 году с разработки драйвера NVDA (NonVisual Desktop Access) для синтезатора Festival. NVDA, это бесплатная программа экранного доступа, позволяющая слабовидящим и незрячим полноценно работать с компьютером. Подобный класс программ включает в себя синтезатор речи и возможность вывода на брайлевский дисплей.
Благодаря Festival Ольга погрузилась в мир синтезаторов речи и открыла для себя, что возможность заставить компьютер говорить есть не только у коммерческих компаний, но и у любого желающего. На тот момент уже существовало несколько открытых синтезаторов речи, которые, в основном, распространялись учеными изучавшими технологии речевого синтеза.
Поэтому первые свои эксперименты на основе трудов более опытных коллег, Ольга делала вокруг все того же Festival. Это академический синтезатор речи, созданный в 1995 году группой ученых во главе с Аланом Блэком. Они разрабатывали методы синтеза и на основе своих исследований сделали собственный синтезатор, который изначально был просто демонстрацией результатов их работы. Со временем к нему добавился не менее важный проект FestVox, позволяющие генерировать новые искусственные голоса, а сверху это было приправлено довольно неплохой документацией. В то время в Festival уже был русский голос Alexander с довольно неплохой речевой базой.
Что такое речевая база: в случае RhVoice это более тысячи специальных предложений, начитанных диктором с четким и безэмоциональным произношением. Предложения эти должны быть подобраны таким образом, чтобы в них содержались все дифоны, то есть все комбинации из двух фонем. И хорошо бы, чтобы по несколько раз каждая для большей вариативности.
По воспоминаниям в первых версиях использовалось около 600 фраз. В дальнейшем, синтезатор из этих фонем может сформировать любое слово. По-английски этот метод называется unit selection, а у нас он известен как метод выбора речевых единиц. Да, не самый модный и молодежный, однако работающий надежно как утюг.
Каждое предложение заносится в базу и анализируется: определяются звуки, их позиции в слогах, в словах, в предложениях. Классифицируются отдельные фонемы, их расположение относительно друг друга и так далее. Во время обратной операции, то есть синтеза речи, для каждой фонемы, полученной из транскрипции, вы просто выбираете наиболее подходящий (читай: близкий) пример из базы.
Иногда удается найти строгое соответствие, иногда приходится довольствоваться максимально похожим. В мире филологов это называется теоретической и практической фонетикой и придумано было далеко не вчера. Поэтому заниматься синтезаторами речи без чтения учебников по фонетике нельзя. К слову, особенно хорошие учебники выходили в свое время у МГУ.
А где брать эти предложения? Можно написать самому, но это довольно тяжелая затея и есть два альтернативных пути. Можно взять заранее написанный кем-то текст, но это может нарушить авторские права или стоить отдельных денег. Поэтому авторы некоторых голосов используют тексты с википедии.
Для больших языков вроде английского или русского, там можно легко найти необходимые примеры. Небольшим языкам в этом смысле не повезло. Например, с белорусской википедией такой трюк не прошел.
А в чем разница между языком и голосом? Ведь лет семь назад еще не было ни украинского, ни татарского диктора. Как же они появляются в синтезаторах?
Голоса в синтезаторах речи
Начинается все с анализа языка, который заключается в создании базы данных, где формально описывается фонетическая система этого языка. Такие базы могут быть уже сделаны кем-то и продаваться на рынке (за весьма хорошие деньги). В противном же случае приходится заниматься этим самостоятельно.
Для анализа каждого языка разрабатывается отдельная программа и это может занимать до полутора лет работы, в зависимости от сложности языка. Например, итальянский язык очень прост, с точки зрения синтеза речи, а такие языки, как арабский и китайский крайне сложны. Но в среднем анализатор языка создается за год. После его готовности пишется уже голос.
На это уходит уже около трех месяцев. Непосредственно запись самого диктора и прочая работа в студии занимает две-три недели. Это связано с тем, что качественно и красиво диктор может говорить примерно четыре часа в день. Дальше он устает и уже не звучит достаточно чисто. Если вы думаете, что это пижонство, то нет — к качеству этих записей предъявляются очень серьезные требования.
Коммерческие компании проводят целые кастинги, отбирая не только по субъективной красоте голоса, но и по возможности использовать конкретный голос для конкретного языка в своем синтезаторе.
Затем запись сегментируется на фрагменты, согласно базе данных, а затем с помощью анализатора языка, эти фрагменты комбинируются вместе. То есть делается разбор, что вот это существительное, это глагол, это стоит рядом с этим, значит должно звучать вот так и подставляется максимально близкая фонема. Так что роль анализатора чрезвычайно важна: он должен учитывать не только расположение слогов в слове, но и расположение слов в предложении и знаки препинания. Все это влияет на произношение. В некоторых языках, одно и то же слово может произноситься по-разному, в зависимости от того что это — существительное или глагол.
Но это больше путь для коммерческих продуктов, у создателей которых есть ресурсы для подобных углубленных исследований. Независимые разработчики используют варианты попроще: без полной классификации по частям речи, а, например, только на уровне самостоятельное слово/предлог/союз и т.д. Ольга пошла еще более своим путем и написала свой языковой модуль на основе учебников и статей по фонетике. Благо есть достаточное количество опубликованных исследований на эту тему.
А вы не замечали, что у большинства синтезаторов сначала появляются женские голоса? Это не из-за предпочтений авторов, а из-за сложности разработки именно женского голоса. Женский голос более высокий по своей природе, а высокие частоты обрабатывать сложнее, чем низкие. И если удается создать женский голос, то мужской уж точно получится. А вот наоборот, не факт.
Мотивация к созданию своего синтезатора речи
В случае Ольги, это личная увлеченность темой и, даже, необходимость. А что в случае с коммерческими разработками? Как они решают, какой язык добавить, а какой нет? Ответ на все, деньги. Первый, очевидный, вариант, это анализ возможного рынка сбыта для новых голосов. Если по-простому: каков экономический уровень страны и есть ли у ее жителей деньги для покупки их продукта.
Второй стимул уже более интересный. Это желание правительственных, или иных организаций, создать синтез речи для данного языка. Поэтому были сделаны синтезаторы речи для очень небольших языков, просто потому, что кто-то этим озаботился и выделил деньги на разработку. А, например, в скандинавских странах есть законы, что все письменные документы должны быть доступны незрячим и слабовидящим. Поэтому любая выходящая газета должна иметь свою аудиоверсию.
И для понимания порядка цен: разработка нового голоса, у частных компаний стоит примерно от десяти до сорока тысяч евро, в зависимости от сложности языка. Разработка модуля анализатора стоит в разы больше. Касательно RhVoice, тут у Ольги позиция принципиальная — ее проект будет бесплатным всегда. Тогда откуда тогда берутся деньги на дикторов?
На начальных этапах находились добровольцы, предложившие помощь. У них была своя студия и они предложили оплатить диктора, так что Ольге оставалось только прислать список предложений для озвучания. Так в RhVoice появилось несколько новых языков. Потом к ней уже стали обращаться с конкретными запросами.
Но судьба дальнейшей разработки зависит от нахождения в свободном доступе необходимых ресурсов. Например, для украинского языка раньше не было открытого словаря ударений, а построить синтезатор не зная, как расставляются ударения невозможно. Сейчас он уже добавлен, но работа была проведена большая. Русскому языку в смысле доступности материалов повезло намного больше. А каноничный голос «Александр», так и вовсе был выложен в открытый доступ его создателем, благодаря чему Ольга смогла начать свои первые эксперименты по созданию синтезатора речи.
А как можно создать синтезатор, если ты совсем не знаешь язык? Условно ты знаешь русский и английский, а просят разработать арабский? Технических ограничений нет, главное, найти в интернете какие-то статьи и материалы о языке, о его структурах или даже проконсультироваться с филологом. Этого может хватить для разработки первоначального синтезатора речи.
Ведь по большому счету, объем стартовой информации стандартен: список фонем, правила транскрипции от буквенного представления к произношению, детали о вспомогательных частях речи и т.д. Главная проблема будет в том, что разработчику никак не проверить результаты своей работы без участия носителя языка.
А носителю языка надо дать не просто отзыв понятно/непонятно говорит, но и объяснить все тонкости и нюансы мест, где что-то пошло не по плану. В случае с RhVoice таким сложным языком стал татарский. С ним Ольге очень помогли филологи, с которыми ее связали представители Казанской библиотеки для слепых и слабовидящих, которые и инициировали эти работы.
В ходе работы над синтезатором был даже составлен отдельный словарь корректного произношения заимствованных из русского языка слов. Чтобы заимствования звучали именно по правилам татарского языка, а не русского. И это хорошо, что такой словарь был составлен профессиональными филологами. Вот, например, для Киргизского такой словарь отсутствует и там очень много проблемных мест, пути разрешения которых пока не найдены просто технически.
Отдельная проблема — это расстановка ударений. В некоторых языках местоположение ударения можно предсказать, но в тех же русском и украинском без словаря никак не обойтись. Причем существуют алгоритмы предсказания ударений, на основе этих словарей. Но сделать такое, не обладая базовым словарем, невозможно.
Что в будущем? Вернее — каких новых функций, или доработки имеющихся, чаще всего просят пользователи? Безусловный лидер здесь это запрос на добавление того, или иного языка. Работа над новыми языками ведется, но как было сказано выше, это все не очень быстро и зависит от помощи внешних специалистов.
А также многие просят улучшить качество звучания, чтобы еще больше приблизить его к естественному. Однако с доступным Ольге инструментарием, каких-то драматических улучшений здесь не будет. Правда от версии к версии, изменения в звук все же вносятся.
Сейчас Ольга надеется, что появятся готовые компоненты для нейронных сетей, написанные на низкоуровневых С-подобных языках, которые смогут обеспечить достаточное быстродействие на мобильных устройствах. А если заведется на мобилках, значит и на остальных платформах будет работать. Подобные проекты уже разрабатываются, и тогда она сможет переработать свой синтезатор.
Другая важная проблема, которую предстоит решить — в RhVoice нет простого и понятного способа добавить свой язык и голос. Есть люди, которые готовы оплачивать эту работу, но проблема el classico: запросов много, Ольга одна, а как и в большинстве for fun проектов, кодовая база представляет собой настолько волшебный лес, что разобраться в ней кому-то, кроме создателя, задача гиблая. В большинстве подобных проектов разработчики предоставляют желающим набор инструментов и документацию, по которой, зная фонетику языка и обладая остальными знаниями, можно создавать свой модуль языка. Пока у Ольги нет ни того, ни другого. Но есть планы это сделать.
В завершении хочется сказать, что вот так, благодаря одному увлеченному человеку много лет делается очень хорошее дело. Больше вам спасибо, Ольга.
Если вам тоже хочется поблагодарить Ольгу за ее бескорыстный труд, а то и вовсе принять участие в развитии RhVoice, помочь проекту своими знаниями, наработками или спонсорством — то сделать это можно, связавшись с Ольгой через ее гитхаб.
- синтезатор речи
- синтез речи
- RhVoice
- разработка под android
- разработка под windows
- разработка под linux
- open source
Источник: habr.com