Список задач

I. В этом месте сайта хотелось бы подискутировать на тему пополнения словарного запаса, или, если быть более точным словаря произношений. В русский голос, напомним, что мы используем msu_ru_nsh_clunits, включен фаил-словарь произношения msu_ru_nsh_dict.scm (festival\lib\voices\russian\msu_ru_nsh_clunits\dict\msu_ru_nsh_dict.scm), который используется для указания части речи и ударного слога, но в будущем возможно будет поддержка сопоставления буквенной записи речи с фонетической (уместно посмотреть это).

От объёма и подбора слов по частоте использования зависит качество синтеза. Учитывая это становиться понятна необходимость его пополнения.

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

В программе должна быть реализована форма, которая позволяет пользователю внести:

  1. слово;
  2. его фонетическую запись;
  3. явное указание ударения
  4. и части речи;
  5. поиск в файле-словаре слова и вывод преобразованной к понятному для пользователя виду найденной информации.

Реализация формы не сложна и не требует пояснения. Поиск аналогов буквенной записи в словаре возможно реализовать через grep или sed. Сформированная в запись информация, которую ввел пользователь, может быть добавлена в фаил упоминавшейся утилитой sed. Указанные утилиты имеют портированные версии (http://sourceforge.net/projects/unxutils/) под MS Windows. Учетом путей утилит позволит программе оставаться кроссплатформенной без задействования  разных утилит для разных ОС.

Для выполнения поставленной задачи требуются следующие знания:

  1. формальная запись всех частей речи
  2. формализация фонетики
  3. как поступать в случае, когда для различных частей речи одна буквенная запись
  4. другое (выноситься на обсуждение)

Для ясности рассмотрим пункты по подробнее. В словаре имеется запись характеризующая произношение слова диктатура:

("диктатура" n (3))

Эта запись означает, что в слово является существительным, ударение падает на третий слог. Однако такая запись не является полной, т.к. не характеризует как именно читаются звуки. Приведем пример из английского словаря:

(lex.add.entry
'("February" n (((f eh b) 1) ((r ax) 0) ((er) 0) ((iy) 0))))

Из примеров видно, что для записи отражающей корректное произношение необходимо знать как записываются части речи, какие существуют для русского языка звуки и как они описываются.  Возможно они определяются в скрипте msu_ru_nsh_phoneset.scm (festival\lib\voices\russian\msu_ru_nsh_clunits\festvox). Правила транскрипции описаны в файле festvox/msu_ru_nsh_lexicon.scm.

К сожалению, в файле- словаре поддержка полной  транскрипции слова находится списке задач (http://festlang.berlios.de/docu/doku.php?id=rustasks).

Забегая в перед отметим, что хорошей идеей является организация удаленного хранилища словаря, который можно было бы синхронизировать. Такой словарь будет необходимо модерировать, или сделать рейтинговую систему утверждения записи (слова и соответствующего произношения) и добавления в основную ветвь словаря. Эту часть работы можно попытаться организовать на измененной (под эти нужды) основе движка (например wordpress) какого-нибудь сайта с дополнительными скриптами сценариями и т.п. на технологии php. Альтернативной технологией видится возможность задействовать svn-хранилище.

II. Еще одна задача: получение списка подключенных голосов. В festival имеется встроенная функция вызова списка голосов

festival> (voice.list)

однако перехватить ее вывод из Golos автору программы не удается. Тогда получить список голосов можно просканировав директорию voice на наличие папок с голосами.

III. Так как любой ПК имеет ограниченное количество оперативной памяти необходимо учитывать размер текста передаваемого в синтезатор, чтобы festival не «потребил» ею всю, спровоцировав нестабильность всей совокупности запущенных приложений и ОС.

Для этого необходимо принять за единицу (далее unit текста, или, просто unit) определенный «кусок» текста, который занимает не так много ОП, синтезировать его, записать результат в фаил. Затем повторить туже процедуру со следующим таким unit‘ом и дописать к уже имеющимся файлу.

К сожалению комментарии на сайте пришлось отключить из-за потока спама, но для обратной связи имеется e-mail:goloslinux@gmail.com

Добавить комментарий