RoRo

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ajaja Спасибо, за поддержку! 1) Дай, пожалуйста, в параллельной теме, ссылки на все версии Катерины доступные тебе. Я их на выходных посмотрю. И сделаю совместимость со всеми версиями. 2) Внутренний формат отличается от <ESC>/ следующими принципиальными вещами. a. Некоторое отличие в правилах разбиения на слоги, и другие символы разделители. Это очень важная вещь. b. Другие символы для задания ударных гласных. c. Все безударные гласные формата <ESC>/ проходят пост обработку, и заменяются на фонетические символы звуков согласно правилам описанным у меня в хелпе. Но не всегда это отображение нормально проходит. d. Существует ряд дополнительных символов которые изменяют произношение, и которым нет аналога в <ESC>/. 3) Те фонемы что использую я, эквивалентны внутренним фонемам движка. При передачи в движок эти фонемы оборачиваются во внутрь <ESC>/+ тегов. Что такое вообще <ESC> теги это последовательность байт Стандартные ограничители слов из словаря или ESC символы "\x11\x2f\x2b\x20" начало строки из словаря, начальный <ESC>/+ тег "\x20\x11\x2f\x2b" конец строки из словаря, конечный <ESC>/+ тег "\x11\x2f\x20" начало ESC строки "\x20\x11\x2f" конец ESC строки Соответственно, если использовать стандартные словари, в нутрии движка фонемы будут иметь вид: "\x11\x2f\x2b\x20" – далее идут символы L&H+ phonetic alphabet, which is compatible with the International Phonetic Alphabet (IPA) - "\x20\x11\x2f\x2b" В моем случае: "\x11\x2f\x2b\x20" – далее символы внутреннего формата - "\x20\x11\x2f\x2b" То есть, есть начальный и завершающий теги, в нутрии которых разное содержимое в зависимости от того, какой версией редактора пользоваться. 4) Идея моего патча в следующем. В момент, когда голосовой движок считывает фонемы из словаря, я сохраняю их у себя во внутреннем буфере. Но не все, а только те, что содержат пробелы. (На самом деле это тоже не совсем верно, пробелы в словосочетаниях заменены на символы подчеркивания). Нахожу в переданной строке все словосочетания, заменяю их на значения из словаря. Делаю еще кое-какие манипуляции со знаками препинания. Далее движок подменяет в строке все слова, что он сам находит в словаре. Соответственно словосочетания он не способен выявить. За него это сделал я уже. Далее все это хозяйство должно подвергнуться тотальному конвертированию, во внутренний формат. Так как все фонемы уже находятся во внутреннем формате, то их не нужно преобразовывать, но движок об этом не знает. И пытается их искорежить. Ряд мер помогают этого избежать. И в итоге, мы получаем корректную строку во внутреннем формате. Которая передается на последующую обработку. 5) Вообще хотя, как ты мог заметить, мой патч приклеивается к rs_sapi5_solo.dll, он не имеет к этой dll никакого отношения . Всю изменения функциональности касаются edct.dll и g2p_rur.dll. Так что важны версии именно этих двух файлов. 6) Цитата: Натравив ssft_ttsGetWordTranscriptions на огромную словарную базу порядка полумиллиона уникальных слов и сравнив результат работы на двух разных версиях Кати (старой и новой) получил отличия в 8% транскрипций (это очень много!!!). Так что, похоже, и словари уже придется составлять как минимум для двух разных версий Катерины. | Заметь что ssft_ttsGetWordTranscriptions() выдает фонемы в формате <ESC>/+. В нутрии движка вся работа происходит с внутренним форматом. Соответственно, изменения вполне возможно коснулись конвертации из внутреннего формата в <ESC>/+. И совершенно не влияют на конвертацию из обычного текста во внутренний формат. 7) Цитата: Согласен с тем, что главная проблема стандартного словаря - невозможность корректировать звучание словосочетаний и отсюда проблема с омографами. Главные его достоинства - универсальность, совместимость и, в конце-концов, то что это "родной" формат для движка и не надо патчить библиотеки. | Первое что бросается в глаза, это "не надо патчить библиотеки”. Почему все, так этого боятся. И предпочитают кейгены, крякам. Видимо в силу не понимания, что же это там такое сделала левый программист, может он там чего испортил. Хочу сказать сразу, это предрассудки. Если соблюсти совместимость на бинарном уровне, для чего достаточно проверить версию бинарника и вычислить его CRC32, а так же использовать проверенные временем средства расширения функционала, то проблем не должно быть. Когда я говорю проверенные временем, я имею в виду в частности детуры, которые не абы кто придумал, а являются одним из средств разработки Майкрософт. Которое она, начиная с последних версий, продает за большие деньги. Все равно для решения омографов, придется движок патчить. Иначе никак! Теперь, мы имеем несколько версий Катерины. Замечательно. Для пользователя важен конечный результат. Ему важно, что бы его текст был корректно произнесен. Добиться этого можно только с помощью словарей. Как бы разработчики Катерины не изгалялись с методами анализа текста. Но словарь является незаменимой частью. И мне, как пользователю, лучше иметь одну версию с хорошим словарем, чем прыгать от версии к версии и ждать когда интеллект движка дойдет до уровня, когда словари будут не нужны. С другой стороны мне как программисту, требуется обеспечить совместимость с новыми версиями движка, и я тут за. Но исправление одной буквы в ряде слов, погоду не сильно делает, при количестве допускаемых движком ошибок. L&H+ phonetic alphabet – это “родной” формат движка? Даже будучи в кавычках слово родной, на мой взгляд, не корректно. Скорее внешний формат. Формат, который предоставлен пользователю. А вот родной формат, тот на котором можно прекрасно писать фонемы от пользователя скрыт. Видимо потому, что ScanSoft не удосужилась его документировать, в силу очевидной сложности этого формата. Ибо правила задания одних безударных гласных в зависимости от позиции в слове, чего стоят. Проще их отдать на откуп алгоритму. И вообще объясните мне, в чем собственно заключается идея универсальности и совместимости L&H+ phonetic alphabet. В том, что они его используют в качестве внешнего интерфейса для словарей? Совместимость с чем? Универсальность по отношению к чему? А то что он как был так и остается не документированным, во всяком случае для русского языка. Да конечно этот формат является внешним интерфейсом. Вероятность его изменения равна нулю. Но простите, для внутреннего формата фонем, я составил подробное руководство. И если пользователь не будет сломя голову менять движок на новую версию, то все будет более чем хорошо работать, а уж доделать совместимость этого редактора с новой версии это вопрос времени. Таким образом мы имеем вполне законченный комплект движка и редактора фонем. Берем и начинаем создавать словарики, чего еще нужно. А развивать редактор нужно в совсем другом направлении. Все эти вопросы совместимости с новыми версиями это решаемые мелочи. За два месяца, чтения текстов и составления словарей, можно покрыть большинство ошибок движка Катерины, для этого достаточно, что бы пользователи выложили свои версии здесь на форуме. Есть прекрасные средства для объединения словарей. А что в конечном счете еще нужно? 8) Пользователям голосового движка нужно решить или <ESC>/+ без патчей и следовательно без омографов, или внутренний формат. Два формата я поддерживать отказываюсь, это вообще не имеет смысла. All Навскидку, задачка для всех, чтоб поняли, в чем проблема омографов. Как сделать корректным произношение этой фразы (немного странной по смыслу): “Запах французских духов от аэропортных киосков пугал духов.” (Речь в начале про парфюм ясное дело идет) В любой программе синтеза речи, с голосовым движком Катерина, используя редактор словарей ScanSoft Nuance. И не используя мой редактор и документацию к нему!! Добавлено: Ajaja Да конвертер в обе стороны наверно сделать можно и нужно. Это предложение мне больше нравится. К тому же это застрахует нас от изменения внутреннего формата в будущем. Но вот обеспечивать одновременную работы и ESC>/+ и внутреннего формата в программах синтеза речи, мне бы очень очень очень очень не хотелось, это еще тот гемор. Да и пользователю это не принесет никакой выгоды, так как придется изучать два разных фонетических алфавита. короче конвертер из ESC>/+ во внутренний формат я сделаю, а обратный конвертер в случае острой необходимости, вызванной сменой внутреннего формата фонетического представления слов. | Всего записей: 171 | Зарегистр. 03-01-2002 | Отправлено: 12:41 13-02-2008 | Исправлено: RoRo, 13:18 13-02-2008 |
|