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

    1. При загрузке сочиненной мною языковой модели получаю сообщение, что слова <UNK> в словаре нет:
    Цитата
    sphinx4.config.edu.cmu.sphinx.linguist.dictionary.TextDictionary.dictionary INFO: The dictionary is missing a phonetic transcription for the word '<UNK>'

    Как мне кажется, это вообще ожидаемая ситуация, поскольку <UNK> - это плейсхолдер для неизвестных слов, так ведь?

    Все, что я нахожу в гугле по поводу данной ошибки сводится к советам удалить <UNK> из модели, что кажется мне странным. В коде сфинкса вроде бы упоминания <UNK> встречаются (Word.UNKNOWN). Вероятно, я что-то делаю не так? Модель я строю с параметром "-vocab_type 1"



    2. При попытке построения акустической модели, процесс застревает на сообщениях
    Цитата
    Waiting for c:/Dev/SpeechRecognizerJava/data/acoustic_model/model_parameters/model.ci_cont/mixture_weights


    Результаты поиска в гугле сводятся к тому, что нужно бы правильно собрать sphinxtrain или починить предыдущие ошибки.
    sphinxtrain я использую из сборки под винду, уже готовенький, вроде бы доустанавливать его не надо. Из ошибок в логах - только вот это:

    Цитата

    Phase 3: Forward-Backward
    Baum welch starting for 1 Gaussian(s), iteration: 1 (1 of 1)
    bw Log File
    ERROR: This step had 56 ERROR messages and 0 WARNING messages. Please check the log file for details.
    completed
    Current Overall Likelihood Per Frame = -150.230580053717
    Baum welch starting for 1 Gaussian(s), iteration: 2 (1 of 1)

    но все ошибки там такого характера:

    Цитата

    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: model_train_speaker_0038/wav_00048 ignored

    Слово "ignored" как будто намекает на то, что проблема не фатальна. Но других идей у меня нет, поэтому пока постепенно правлю эти ошибки.

    Как всегда, буду признателен за помощь!
      Цитата
      Все, что я нахожу в гугле по поводу данной ошибки сводится к советам удалить <UNK> из модели, что кажется мне странным. В коде сфинкса вроде бы упоминания <UNK> встречаются (Word.UNKNOWN). Вероятно, я что-то делаю не так? Модель я строю с параметром "-vocab_type 1"


      Нужно -vocab_type 0, слова <UNK> в модели быть не должно.

      Цитата
      sphinxtrain я использую из сборки под винду, уже готовенький, вроде бы доустанавливать его не надо. Из ошибок в логах - только вот это:


      Не только, если mixture_weights не создаётся, значит, была ошибка при его создании. Она должна быть в логах.
        Цитата nsh @
        Нужно -vocab_type 0, слова <UNK> в модели быть не должно.


        Спасибо за ответ! То есть модели с отсутствующими в словаре словами не поддерживаются сфинксом? А как же Word.UNKNOWN?


        Цитата nsh @
        Не только, если mixture_weights не создаётся, значит, была ошибка при его создании. Она должна быть в логах.


        И действительно, ошибка была в логах, но не в файлах с логами, а в консоли, где постоянно забивалась сообщениями об отсутствии mixture_weights, из-за чего я ее и не видел. Спасибо за помощь!
          Подскажите ещё раз по украинскому языку.

          Точнее, если необходимо распознавать двуязычную речь (русский и украинский) - то необходимо:
          1. создать фонетический словарь (.dic), в котором были б сразу 2 языка
          2. языковая модель (.lm) - опять же, скормить много двуязычного текста cmuclmtk'у
          3. акустическая модель - можно взять zero_ru.cd_cont_4000, и попробовать её адаптиваровать

          Я хотя бы правильно понял необходимые шаги?
            Добрый день.

            И да и нет.
            Как правило в каждом языке фонемы (и трифоны) различны, поэтому у меня большие сомнения, что текущую акустическую модель можно будет использовать для распознавания Украинского языка.

            Теоретически можно составить акустическую модель которая будет описывать сразу два языка. На сколько это будет хорошо работать, судить не могу.
              Уважаемые zamir, nsh, подскажите, пожалуйста, ещё по построению лингвистической модели. Несмотря на чёткий туториал, у меня всё равно возникли сложности :(

              Беру дамп украинской википедии, с помощью WikiExtractor.py извлекаю из него текст. Чищу его, нормализую как могу - в результате получаю ~2GB txt-файл. Скармливаю полученный текст SRILM'у (ngram-count), и получаю lm-файл на ~1.8GB с такими данными:
              ExpandedWrap disabled
                ngram 1=2307890
                ngram 2=31873691
                ngram 3=10729675


              2.3 миллиона 1-gram - это явно слишком (или плохо нормализовал/чистил текст, или особенности википедии). Тем более, словарь же должен содержать транскрипции всех 1-gram?
              Естественно, хочется уменьшить размер полученной лингвистической модели, удалить редко использумые слова. Но опция "-prune" влияет только на к-во 2-gram и 3-gram.

              Как правильно отфильтровать эти редко используемые слова?
                Составить список 500к самых частых слов с помощью скрипта python, затем отфильтровать модель с помощью ключей ngram

                ExpandedWrap disabled
                  ngram -lm your.lm -vocab your.vocab -limit-vocab -write-lm small.lm


                или при тренировке

                ExpandedWrap disabled
                  ngram-count -vocab your.vocab -limit-vocab ...
                  Точно, "ngram -lm your.lm -vocab your.vocab -limit-vocab -write-lm small.lm" - всё получилось. Спасибо :)

                  Пробовал ngram-count, но, похоже, нельзя использовать такое сочетание опций?
                  ExpandedWrap disabled
                    09:38:36 ~/wiki> ngram-count -vocab train.vocab -limit-vocab -kndiscount -interpolate -text  train.corpus -lm small.lm
                    one of modified KneserNey discounts is negative
                    error in discount estimator for order 1

                  Всё из-за моего непонимания используемых алгоритмов discounting...
                    Для kndiscount limit-vocab нужно применять в два шага, сначала вычислить параметры сглаживания:

                    ExpandedWrap disabled
                      ngram-count -text text.txt -kn text.kn


                    а затем уже тренировать модель

                    ExpandedWrap disabled
                      ngram-count -kn text.kn -text text.txt -lm text.lm -vocab text.vocab -limit-vocab


                    Описано в пункте C3 в FAQ
                      Подскажите ещё по grapheme-to-phoneme conversion с помощью g2p-seq2seq.
                      Какие рекомендации по размеру словаря для создания модели? Я понимаю, что чем больше - тем лучше, но всё же..
                        Цитата
                        Какие рекомендации по размеру словаря для создания модели? Я понимаю, что чем больше - тем лучше, но всё же..


                        Этот вопрос лучше задать здесь:

                        https://github.com/cmusphinx/g2p-seq2seq/issues/new

                        там разработчик Вам на него ответит.
                          Добрый день коллеги!

                          Скажите пожалуйста, как можно установить "уровень чувствительность" (назову это так) Sphinx? Команда ps_get_in_speech реагирует на каждый небольшой шум в канале, и начинает считать, что я начал произносить речь.
                            Цитата aileron @
                            Скажите пожалуйста, как можно установить "уровень чувствительность" (назову это так) Sphinx? Команда ps_get_in_speech реагирует на каждый небольшой шум в канале, и начинает считать, что я начал произносить речь.


                            -vad_threshold 3.0
                              Цитата nsh @
                              -vad_threshold 3.0

                              Спасибо большое, всё сработало! Немного правда повысил до 3.9. Там еще три параметра каких-то в группе VAD.
                                Доброе утро всем!

                                Никак не могу с этим VAD совладать...

                                Вычистил звук отдельно ladspa, и заметил удивительную вещь: первые фраймы, что я кормлю Sphinx всегда функция ps_get_in_speech выдает, что там речь. Хотя там вообще чистая линия синусоиды. Подскажите пожалуйста почему так?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0572 ]   [ 15 queries used ]   [ Generated: 18.07.25, 21:29 GMT ]