На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
Страницы: (23) « Первая ... 18 19 [20] 21 22 ... Последняя »  ( Перейти к последнему сообщению )  
> Работа с CMU Sphinx , Работа с CMU Sphinx 4.0
    Цитата
    Вычистил звук отдельно ladspa


    Различные алгоритмы обработки звука обычно повреждают сигнал и ухудшают качество распознавания

    Цитата
    Хотя там вообще чистая линия синусоиды. Подскажите пожалуйста почему так?


    В pocketsphinx VAD простой - он отслеживает уровень шума и уровень сигнала и просто смотрит, чтобы сигнал был больше шума. Синусоиду тоже может принять за сигнал.

    Если хочется более сложный VAD лучше попробовать https://github.com/wiseman/py-webrtcvad.
      Приветствую!

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

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

      Так как с недавних пор меня заинтересовала данная тема, я почитал информацию об этом, темы и вопросы, но не понял одного момента:

      1) Я скачал Pocketsphinx и все необходимое к нему для Windows, построил решения pocketsphinx и sphinxbase в Visual Studio 2012 (2010 как оказалось не подходит), скачал акустическую модель, словарь и языковую модель для русского языка. Запустил через командную строку pocketsphinx_continuous.exe
      с аргументам
      ExpandedWrap disabled
        pocketsphinx_continuous.exe -hmm c:\zero_ru.cd_cont_4000 -dict c:\ru.dic -lm c:\ru.lm -inmic yes


      Здесь все работает, оно и понятно. Тут другой вопрос, я пока решил просто с аргументами разобраться и посмотреть в общем как это работает, почитал про ключевую фразу\слово, что можно через -keyphrase задать слово\фразу или через файл, я выбрал через файл, т.к. через командную строку в винде русское слово не воспринимается. Файл я создал как было написано keyphrase.list и задал через параметр -kws. Файл создал в кодировке UTF-8 без BOM. И как я понял языковая модель при использовании kws не нужна. В общем запустил в таком виде:

      ExpandedWrap disabled
        pocketsphinx_continuous.exe -hmm z:\zero_ru.cd_cont_4000 -dict z:\ru_key.dic -inmic yes -kws keyphrase.list


      Опять же все работает, определяется только ключевое слово остальные не воспринимаются.

      Но есть еще тип файла .jsgf который тоже можно создать, я так понял это наподобие языковой модели только упрощенная. Здесь я не совсем понял для чего она, файл делал по примеру из этой же темы второе сообщение, сначала я думал, что воспринимается только определенная последовательность, т.е. сказал "один два три" он так и вывел, но если просто говоришь "три" или "два" то выводит опять тоже самое, т.е. как будто до этого один и два тоже звучали.

      И еще я правильно понял, что ключевое слово с этим файлом не работает? Потому как я пытался запустить их вместе, а ключевое слово никак не воспринималось:

      ExpandedWrap disabled
        pocketsphinx_continuous.exe -hmm z:\zero_ru.cd_cont_4000 -dict z:\ru_key.dic -jsgf z:\ru_key.jsgf -inmic yes -kws keyphrase.list


      Мне интересная активация по ключевому слову, с последующем вводом команды и я так почитал и понял, что используя аргументы для pocketsphinx_continuous.exe это не посмотреть. Скажите прав ли я в своим рассуждениях и выводах, чтобы не тратить время зря. Спасибо.
        Цитата therunman
        Здесь я не совсем понял для чего она


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

        Цитата therunman @
        что используя аргументы для pocketsphinx_continuous.exe это не посмотреть.


        Это так. Если нужно более сложное поведение, можно написать простую программу на Python.
          Цитата nsh @
          можно написать простую программу на Python.


          Т.е. это будет проще, чем в C++? Возможно ли потом использовать этот код для прошивки или создания приложения, просто я не знаю его?

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

          И еще вопрос, про синтез речи, это в рамках данной наработки или уже отдельный вопрос? Хотел использовать RHvoice, но голоса, даже новые слишком уж роботоподобные, хотя это бесплатно и если выбора не останется придется использовать их наверное.
            Цитата therunman @
            Т.е. это будет проще, чем в C++? Возможно ли потом использовать этот код для прошивки или создания приложения, просто я не знаю его?


            Можно и в C++, если хочется

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


            Распознаются предложения в соответствии со спецификацией. Если нужно, чтобы распознавались более короткие предложения, нужно включить их в спецификацию.

            Цитата
            И еще вопрос, про синтез речи, это в рамках данной наработки или уже отдельный вопрос? Хотел использовать RHvoice, но голоса, даже новые слишком уж роботоподобные, хотя это бесплатно и если выбора не останется придется использовать их наверное.


            Это вопросы к RHVoice. Есть другие синтезаторы - openmary, festival
              Цитата nsh @
              Распознаются предложения в соответствии со спецификацией.

              А что есть спецификация?
                Цитата therunman @
                А что есть спецификация?


                JSGF грамматика
                  Цитата nsh @
                  JSGF грамматика


                  Спасибо, буду разбираться дальше
                    Коллеги, добрый день.

                    Столкнулся с тем, что не очень понимаю, что делать вот в такой ситуации. Мы занимаемся распознаванием "живой" разговорной речи, в которой встречаются всякие "паразитные" звуки, издаваемые говорящими, типа "ээээ", "ммм", "аа".

                    Понятно, что можно для этих "слов" сделать транскрипцию и работать с ними как с "настоящими" словами, но не ясно, есть ли в этом смысл?
                    На сколько я понимаю, такие паразитные звуки должны, во-первых, портить языковую модель, а во-вторых — все равно скорее всего учесть все возможные звуки, издаваемые в таких случаях людьми, не реально.
                    С другой стороны, можно все такие ситуации разметить как шум, но тогда не ясно, что будет делать модель в процессе распознавания, когда встретит звук, состоящий в общем-то из нормальных фонем.

                    Сходная проблема с тем, что довольно часто в разговорной речи люди запинаются, или их перебивают, и получаются обрывки слов.
                    Опять же понятно, что можно все имеющиеся в обучающих данных обрывки транскрибировать и работать с ними, как с обычными словами. Но проблема строго такая же — во-первых должна портиться языковая модель, а во-вторых — не загонять же теперь в словарь все возможные варианты префиксов для всех возможных слов.

                    Пожалуйста подскажите, как решают такие проблемы?
                      Цитата mikemvpi @
                      Пожалуйста подскажите, как решают такие проблемы?


                      Недавно отвечал: https://sourceforge.net/p/cmusphinx/discuss...hread/167036a0/

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


                      Достаточно одну фонему GARBAGE натренировать для всех таких звуков.
                        Спасибо за ответ и за ссылки в тикете. Теперь понятно, как гуглить по проблеме дальше.
                          Здравствуйте.
                          Прочитал ветку, но не нашел решения моей проблемы.
                          Использую pocketsphinx для обработки непрерывного потока речи. Нужно распознавать несколько ключевых слов.
                          Всё хорошо, но есть проблема.
                          Для примера использую несколько слов: пицца, тест, чек.
                          Всё распознаёт отлично, но проблема в том, что он распознаёт слово, если совпадает хотя бы 2 буквы.
                          Например если сказать
                          "ца", "ица", "пи" - то слово распознаётся как пицца
                          "че", или "ек" - распознает чек
                          Если в произносимой фразе есть это сочетание букв, то произойдет тоже самое. Например:
                          "цапля" - распознает как пицца
                          "громче" - распознает как чек

                          Файл языковой модели:
                          Скрытый текст

                          \data\
                          ngram 1=5
                          ngram 2=3
                          ngram 3=0

                          \1-grams:
                          -1.8467 </s> 0.0000
                          -99.0000 <s> -0.5796
                          -5.8947 пицца -0.1995
                          -5.2345 тест -0.2794
                          -4.8681 чек -0.3578

                          \2-grams:
                          -0.7674 пицца </s> 0.0000
                          -0.7486 тест </s> 0.0000
                          -0.8450 чек </s> 0.0000

                          \3-grams:

                          \end\


                          Файл словаря:
                          Скрытый текст

                          пицца pj i0 c c a0
                          чек ch e0 k
                          тест tj e0 s t


                          Причём проблема не зависит от того, произвожу я поиск через keyphrase, или использую jsgf грамматику.
                          В чём может быть дело?
                            Цитата
                            В чём может быть дело?


                            В документации указано что ключевое слово должно быть минимум 4 слога. Ещё написано, как настраивать пороги:

                            http://cmusphinx.sourceforge.net/wiki/tuto...m#keyword_lists

                            Цитата
                            Файл языковой модели:


                            Языковая модель при поиске ключевых слов не используется.
                              Цитата
                              В документации указано что ключевое слово должно быть минимум 4 слога. Ещё написано, как настраивать пороги:
                              http://cmusphinx.sourceforge.net/wiki/tuto...m#keyword_lists


                              Спасибо, упустил этот момент) Вместо коротких ключевых слов сделал ключевые фразы, всё заработало.


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


                              Да, это знаю. Я просто пробовал тремя способами - с помощью языковой модели, грамматики и поиска ключевых слов, по отдельности.


                              Есть еще одна проблема. Буду очень благодарен, если подскажете.
                              В общем сделал поиск по ключевым фразам, вот 3 для примера:
                              Цитата
                              1. "включи свет"
                              2. "выключи свет"
                              3. "сделай фото"


                              С 1 и 3 проблем нет, а вот вторая ключевая фраза "выключи свет" очень часто определяется как "включи". Настройка порогов не повлияла на ситуацию. Решил сделать адаптацию звуковой модели по инструкции. http://cmusphinx.sourceforge.net/wiki/tutorialadapt

                              Записал 5 звуковых файлов:
                              "включи свет"
                              "выключи свет"
                              "сделай фото"
                              "включи"
                              "выключи"

                              Файл транскрипции arctic5.transcription
                              Цитата
                              <s> включи свет </s> (arctic_0001)
                              <s> выключи свет </s> (arctic_0002)
                              <s> сделай фото </s> (arctic_0003)
                              <s> включи </s> (arctic_0004)
                              <s> выключи </s> (arctic_0005)


                              Файл словаря arctic5.dic
                              Цитата
                              включи v k lj u0 ch i1
                              выключи v y1 k lj u0 ch i0
                              свет s vj e1 t
                              сделай s dj e1 l a0 j
                              фото f o1 t o0



                              При выполнении bw
                              Цитата
                              ./bw \
                              -hmmdir ru-ru \
                              -moddeffn ru-ru/mdef.txt \
                              -ts2cbfn .cont. \
                              -feat 1s_c_d_dd \
                              -cmn current \
                              -agc none \
                              -varnorm no \
                              -cmninit 40,3,-1 \
                              -dictfn arctic5.dic \
                              -ctlfn arctic5.fileids \
                              -lsnfn arctic5.transcription \
                              -accumdir .


                              упорно игнорируются записи в которых присутствует слово "выключи"

                              Цитата
                              ERROR: "backward.c", line 421: Failed to align audio to trancript: final state of the search is not reached
                              ERROR: "baum_welch.c", line 324: arctic_0002 ignored

                              ERROR: "backward.c", line 421: Failed to align audio to trancript: final state of the search is not reached
                              ERROR: "baum_welch.c", line 324: arctic_0005 ignored



                              Как можно решить эту ситуацию?

                              И ещё никак не получается сохранить дебаг-вывод утилиты bw в файл, может знаете как сделать?
                              Сообщение отредактировано: VMerk -
                                Цитата
                                Как можно решить эту ситуацию?


                                Файлы выложить надо сначала.

                                Цитата
                                И ещё никак не получается сохранить дебаг-вывод утилиты bw в файл, может знаете как сделать?


                                http://stackoverflow.com/questions/7526971...tderr-to-a-file
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0648 ]   [ 16 queries used ]   [ Generated: 25.04.24, 10:34 GMT ]