На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Оптимизация PocketSphinx для аппаратной реализации
    Хотелось бы узнать, пробовал ли кто-нибудь реализовать распознавание речи с ограниченным словарем ( < 100 слов) на основе МК. Какие требования по производительности и памяти следует предъявлять к МК для реализации такой системы?

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

    Например, существует различные форматы для хранения языковой модели (.lm, .dmp, .fsg, .jsgf) одни из которых представляют данные в текстовом виде, другие в бинарном. Аналогично и с акустической моделью. А нет ли возможности, после инициализации объекта декодера, полностью сохранить его состояние в память, а затем загрузить его минуя стадию разбора командной строки и построения внутренних объектов на основе данных из текстовых файлов?

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

    Если уменьшить число коэффициентов в акустической модели уже после обучения. Будет ли она работоспособна? :scratch:
      Тоже интересует данная тема.
      Про Sphinx ничего не скажу, но Microchip когда-то делал оптимизированную голосовую библиотеку для своих контроллеров.
      Цитата
      dsPIC30F
      SPEECH RECOGNITION
      WORD LIBRARY BUILDER
      USER’S GUIDE

      и также
      Цитата
      dsPIC30F Speech Recognition Library


      Про ресурсы написано такое:
      Цитата
      Resource Requirements
      Sampling Interface: Si-3000 Audio Codec operating at 12.0 kHz
      System Operating Frequency: 12.288, 18.432 or 24.576 MHz
      Computational Power: 8 MIPs
      Program Flash Memory: 18 KB + 1.5 KB for each library word
      RAM: <3.0 KB


      Пробовать не пришлось т.к. процы для меня экзотические, да и библиотека сама в объектных кодах и распространяется на CD.
        Цитата
        Во-вторых, нельзя ли сократить размер акустической модели? Наверняка, для фраз из ограниченного набора слов, некоторая часть моделей трифонов не будет использована. Можно ли вырезать избыточные модели или вообще преобразовать модель к контекстно-независимым звуковым единицам? Если уменьшить число коэффициентов в акустической модели уже после обучения. Будет ли она работоспособна?


        Да, можно так сделать.
          Продолжаю вникать в PocketSphinx, пытаясь понять внутреннюю организацию библиотеки. В исходниках довольно мало комментариев, а на сайте CMU Sphinx я нашел только общее описание применяемых подходов. Более подробное описание нашел в статье, описывающей некоторые детали реализации декодера http://www.merl.com/publications/docs/TR2003-110.pdf

          Есть ли еще какие-нибудь источники описывающие особенности реализации PocketSphinx?
            Цитата
            Есть ли еще какие-нибудь источники описывающие особенности реализации PocketSphinx?


            Наиболее подробно алгоритмы Pocketsphinx описаны в диссертации:

            Efficient algorithms for speech recognition
            http://citeseerx.ist.psu.edu/viewdoc/summa...=10.1.1.72.3560
              nsh, спасибо, очень интересная работа!
                У меня возник вопрос, связанный с форматами лингвистических моделей(.lm, .dmp, .fsg, .jsgf), поддерживаемых в PocketSphinx.

                Приводятся ли все эти LM к некоторой единой форме, или для разных моделей используются различные алгоритмы декодирования?

                Если задаю LM через грамматику, которую конвертирую в fsg формат, является ли такое представление LM оптимальным?
                  Цитата
                  Приводятся ли все эти LM к некоторой единой форме, или для разных моделей используются различные алгоритмы декодирования?


                  Да, приводятся. LM можно преобразовать в FSG. Вот тут можете посмотреть страница 102:

                  http://www.lvcsr.com/static/pubs/apsipa_09...dixon_furui.pdf

                  Цитата
                  или для разных моделей используются различные алгоритмы декодирования?


                  Алгоритмы разные и используют особенности моделей языка.

                  Цитата
                  Если задаю LM через грамматику, которую конвертирую в fsg формат, является ли такое представление LM оптимальным?


                  Нет не является, в lm представлении можно отслеживать эффективно контекст. Например, триграммную модель можно быстро превратить в биграмную. В FSG представлении эта информация теряется.
                  Сообщение отредактировано: nsh -
                    Цитата
                    Нет не является, в lm представлении можно отслеживать эффективно контекст


                    Хорошо, а если преобразовать грамматику или fsg в lm модель, можно ли получить от этого какую-то выгоду?

                    Я читал, что можно на основе грамматики сгенерировать список всевозможных фраз, а затем по нему построить лингвистическую модель. Будет ли такая модель лучше fsg представления?
                      Цитата
                      Хорошо, а если преобразовать грамматику или fsg в lm модель, можно ли получить от этого какую-то выгоду?


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

                      Цитата
                      Я читал, что можно на основе грамматики сгенерировать список всевозможных фраз, а затем по нему построить лингвистическую модель. Будет ли такая модель лучше fsg представления?


                      Такая модель не будет эквивалентна fsg представлению, например если в грамматики слова следовали строго одно за другим, в lm появится возможность пропускать слова. Для некоторых приложений такое преобразование имеет смысл.
                        Спасибо за объяснения. Они очень помогли :good:

                        До этого я спрашивал о возможных путях сокращения размера акустической модели и в итоге остановился на том,
                        что для небольшого словаря можно использовать контекстно независимые модели (-allphone_cd). Это позволило сократить общий размер акустической модели с 8 Mb (сделав mdef бинарным, общий размер станет ~5Mb) до 400 kB.
                        При этом при распознавании фраз, определенных грамматикой, существенной разницы в точности я не заметил.

                        Однако, совсем иная картина складывается при использовании поиска ключевого слова (-kws). Похоже, что данный поиск не поддерживает контекстно-независимого режима (-allphone_cd)? Или он очень чувствителен по отношению к контекстно зависимым фонемам?

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

                        Собственно для этого, я хотел узнать:
                        - Если есть фраза "раз два" то для ее транскрипции необходимы следующие трифоны:
                        ExpandedWrap disabled
                          #base lft  rt p
                              r SIL  aa b  
                             aa   r   s i
                              s  aa SIL e    <-  После звука 's' идет SIL или
                              s  aa   d e    <-  после звука 's' идет 'd' от следующего слова
                              d SIL   v b    <-  Перед звуком 'd' идет SIL или
                              d   s   v b    <-  перед звуком 'd' идет 's' от предыдущего слова
                              v   d  aa i
                             aa   v SIL e

                        Правильно, или тут что-то лишнее или наоборот, чего-то не хватает?

                        - Достаточно ли сохранить используемые трифоны для правильной работы алгоритма поиска ключевого слова?
                          Цитата
                          - Если есть фраза "раз два" то для ее транскрипции необходимы следующие трифоны:


                          В целом правильно, но kws SIL по умолчанию не вставляет. Если хочется с SIL, нужно просто добавить вторую фразу в поиск: "раз <sil> два".

                          Цитата
                          Достаточно ли сохранить используемые трифоны для правильной работы алгоритма поиска ключевого слова?


                          Да

                          Цитата
                          При этом при распознавании фраз, определенных грамматикой, существенной разницы в точности я не заметил.


                          Точность должна быть ниже при использовании ci модели

                          Цитата
                          что для небольшого словаря можно использовать контекстно независимые модели (-allphone_cd). Это позволило сократить общий размер акустической модели с 8 Mb (сделав mdef бинарным, общий размер станет ~5Mb) до 400 kB.


                          Этот ключ действует только в режиме поиска фонем

                          Цитата
                          Похоже, что данный поиск не поддерживает контекстно-независимого режима (-allphone_cd)? Или он очень чувствителен по отношению к контекстно зависимым фонемам?


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

                          Добавлено
                          Цитата
                          Это позволило сократить общий размер акустической модели с 8 Mb (сделав mdef бинарным, общий размер станет ~5Mb) до 400 kB.


                          Размер CI модели с десятком CD сенонов должен быть меньше 100кб. Откуда 400 взялось - не очень понятно.
                            Цитата
                            Размер CI модели с десятком CD сенонов должен быть меньше 100кб. Откуда 400 взялось - не очень понятно.

                            У меня выходит, что размер mean и var примерно равен 51 (фонем) x 3(кол-во сенонов на фонему) x 39 (mfcc) x 8 (гаусс) x 4 (sizeof(float)) = 186 kB
                            Плюс остальные файлы. Вот и выходит примерно 400 kB

                            Цитата
                            Этот ключ действует только в режиме поиска фонем

                            Не совсем понял, что имелось ввиду. Я думал флаг -allphone_cd yes и означает включение режима поиска фонем

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


                            Да, я как раз пробовал с фразой "голосовое управление". Очень хорошо работало с контекстно-зависимой моделью,
                            но для контекстно-независимой, даже при очень чувствительном пороге (-kws_threshold 1e-60...1e-300) приходилось по несколько раз повторять фразу, чтобы добиться реакции. Поэтому я и решил оставить трифоны
                            Сообщение отредактировано: AndKy -
                              Цитата
                              Я думал флаг -allphone_cd yes и означает включение режима поиска фонем


                              Режим поиска фонем включается -allphone <lm>.
                                Цитата
                                Режим поиска фонем включается -allphone <lm>.


                                Понятно, спасибо

                                Так, значит декодер сам определяет есть ли в акустической модели необходимые трифоны и, если их нет, то берет соответствующие контекстно-независимые фонемы?
                                Сообщение отредактировано: AndKy -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0391 ]   [ 15 queries used ]   [ Generated: 8.09.24, 11:06 GMT ]