На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
Страницы: (23) [1] 2 3 ...  22 23  ( Перейти к последнему сообщению )  
> Работа с CMU Sphinx , Работа с CMU Sphinx 4.0
    На днях начал разбираться с CMU Sphinx 4.0, но запутался во всех этих акустических и языковых моделях. Не очень понятно, как использовать, например, в той же программе HelloNGramm или в других какие-нибудь другие речевые базы и есть ли вообще какие-нибудь речевые базы, например, для русского и других языков?
      Вот тут акустические и лингвистические модели для различных языков
      http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

      альтеранативная акустическая модель русского языка есть здесь:
      https://github.com/zamiron/ru4sphinx/tree/master/split/msu_ru_zero.mllt_cd_cont_2000
      словарь для этой модели можно сгенерить самому при помощи скрипта:
      https://github.com/zamiron/ru4sphinx/tree/master/text2dict

      Добавлено
      Акустическая модель преобразует звук в фонемы
      Словарь пребразует фонемы в слова
      Языковая модель помогает построить предложения исходя из порядка слов

      все три составляющие обезательные
      вместо языковой модели возможно просто описать порядок слов в jsgf словаре
      примерно так:

      camera.jsgf

      ExpandedWrap disabled
        #JSGF V1.0;
         
        grammar camera;
         
        public <camera> = <do> ( <cam> <prenum> <num1> | <num2> <cam> );
        <do> = ( включить | выключить | отключить );
        <cam> = ( камеру | видео-камеру );
        <prenum> = [ номер ]
        <num1> = ( один | два | три | четыре | пять | шесть | семь | восемь | девять );
        <num2> = ( первую | вторую | третью | четвертую | пятую | шестую | седьмую | восьмую | девятую );


      sphinx4 не использовал поэтому никакой конкретики дать не могу (использовал только pocketsphinx и sphinx3)
        zamir спасибо за информацию, решил заодно посмотреть и pocketsphinx, хотя пока не решил, что выбрать.
        И еще вопрос - sphinx, я так понимаю, это всецело распознавание речи, есть ли какая-нибудь связанная с ней технология по синтезу речи, которая бы использовала бы ту же речевую базу?
          cmusphinx - это только распознавание речи. по отношению к системам синтеза речи cmusphinx может помочь сделать фонемную разметку, более ничем наверное не поможет.
          базы для синтеза и распознавания разные как правило.
          для синтеза нужна качетственная база с одним диктрором.
          для распознавания требования к качеству базы не такие жётские, но колличество дикротором должно быть существенно большим.
          база обучения есть здесь: http://www.voxforge.org/
          в ней же есть записи которые nsh использовал для создания синтезатора русской речи
            Не совсем понял про языковую модель. Вот, например, в том же HelloNGram используется языковая модель с расширением *.lm, а в базу на voxforge -есть файл с раширением *.lm.dmp - что из них является собственно языковой моделью - а то по документации не очень понятно?
              С языковой моделью вроде бы разобрался - построил в Visual Studio sphinxbase и затем им перековентировал dmp в lm.
              Правда теперь возник вопрос, а где брать словари по языковой модели, вообще есть ли они?
              А то в базах для русского языка на Voxforge я вроде бы не нашел их.
                Фонемные словари в базах есть http://sourceforge.net/projects/cmusphinx/files/Acoustic and Language Models
                Расширение .dic

                моё творение с языковой моделью nsh:
                http://z1.prolink.ru/sphinx/msu_ru_zero_8000Hz_v0.3.tar.gz
                творение nsh:
                http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Voxforge%20Russian/

                у меня к вам две просьбы:

                1) Сравните пожалуйста эти модели и сообщите результат
                2) Посодествуйте проекту voxforge пополнив базу своим голосом: http://www.voxforge.org/ru/read
                Сообщение отредактировано: zamir -
                  zamirага, это вроде бы понятно, хотя все равно не получается заставить весь этот комплекс работать. Пытаюсь сделать через NetBeans программу, но при отладке получаю сообщения, что такие то слова (наверное все) отсутствуют в словаре - типа такого "14:20:50.422 WARNING dictionary Missing word: грант" - при том это для обеих языковых моделей.
                  Вот пока разбираюсь, в чем проблема.

                  По поводу базы с голосом - рад бы, но у меня плохая дикция.
                    "14:20:50.422 WARNING dictionary Missing word: грант" - в языковой модели есть слово грант, но в фонетическом словаре его нет
                    в этом предупрежнении нет ничего страшного если оно выдаётся ни на каждое слово
                    в том материале что я вам выслал такого поведения нет. правда там тоже есть небольшая ошибка в словаре но она игнорируется
                    Цитата
                    ERROR: "dict.c", line 194: Line 77823: Phone 'e' is mising in the acoustic model; word 'нe' ignored

                    здесь есть английская буква "e" поэтому в странскрипции достаточно заменить
                    Цитата
                    нe n e

                    на
                    Цитата
                    нe n i


                    и пример запуска для распознавнания с микрофона приложен:
                    Цитата
                    #!/bin/sh

                    S2CONTINUOUS=/usr/bin/pocketsphinx_continuous
                    HMM=msu_ru_zero.mllt_cd_cont_2000
                    DICT=msu_ru_zero.dic
                    LMFILE=msu_ru_nsh.lm.dmp

                    $S2CONTINUOUS \
                    -dict $DICT \
                    -hmm $HMM \
                    -lm $LMFILE



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

                      Однако во время исполнения NetBeans выдает ошибку
                      Цитата
                      java.lang.ArrayIndexOutOfBoundsException: 29
                      at edu.cmu.sphinx.linguist.acoustic.tiedstate.MixtureComponent.getScore(MixtureComponent.java:195)
                      at edu.cmu.sphinx.linguist.acoustic.tiedstate.GaussianMixture.calculateScore(GaussianMixture.java:130)
                      at edu.cmu.sphinx.linguist.acoustic.tiedstate.ScoreCachingSenone.getScore(ScoreCachingSenone.java:40)
                      at edu.cmu.sphinx.linguist.acoustic.tiedstate.SenoneHMMState.getScore(SenoneHMMState.java:85)
                      at edu.cmu.sphinx.linguist.lextree.LexTreeLinguist$LexTreeHMMState.getScore(LexTreeLinguist.java:1345)
                      at edu.cmu.sphinx.decoder.search.Token.calculateScore(Token.java:177)
                      at edu.cmu.sphinx.decoder.scorer.SimpleAcousticScorer.doScoring(SimpleAcousticScorer.java:164)
                      at edu.cmu.sphinx.decoder.scorer.ThreadedAcousticScorer.doScoring(ThreadedAcousticScorer.java:198)
                      at edu.cmu.sphinx.decoder.scorer.SimpleAcousticScorer.calculateScores(SimpleAcousticScorer.java:87)
                      at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.scoreTokens(WordPruningBreadthFirstSearchManager.java:451)
                      at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.recognize(WordPruningBreadthFirstSearchManager.java:301)
                      at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.recognize(WordPruningBreadthFirstSearchManager.java:283)
                      I can't hear what you said.


                      Тот же ArrayIndexOutOfBoundsException выпадает при выполнении программы в консоле.

                      (Кстати забыл спросить для чего нужен файл mdef?)

                      И приведенный выше пример запускать под Линуксом в терминале, как я понял?
                        всё что в папке msu_ru_zero.mllt_cd_cont_2000 это акустическая модель
                        mdef наверное состояния фонем перечислены... у меня глубоких знаний нет, только поверхностные. nsh думаю знает глубоко.
                        всё что касается java NetBeans ничего не знаю и даже в тестах с java мне не приходилось компилировать акустическую модель
                        в xml файле aligner.xml указывал
                        <component name="wsjLoader" type="edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader">
                        <property name="logMath" value="logMath"/>
                        <property name="unitManager" value="unitManager"/>
                        <property name="location" value="/msu_ru_zero_8000Hz_v0.3/msu_ru_zero.cd_cont_1000"/>
                        <property name="dataLocation" value=""/>
                        </component>

                        Цитата
                        И приведенный выше пример запускать под Линуксом в терминале, как я понял?


                        да. я живу под linux поэтому не приходится пользоваться java...
                        под mandriva собрал пакет pocketsphinx но он пока в cooker лежит
                        в ubuntu наверника кто-то тоже собрал
                        возможно по windows тоже собирается но я не пробовал
                        Сообщение отредактировано: zamir -
                          Попроьывал сделать свою миниакустическую модель, выдрав 20 слов из имеющейся - вроде заработало и стало распознавать.

                          Может я не того лингвиста выбрал (использовал LexTreeLinguist) или объем базы слишком великоват для программы?

                          А в чем отличие sphinx 4.0 от pocketsphinx кроме применения последнего на мобильных платформах? В чем примущества последнего?
                            Тут я уже не понимаю о чём вы говорите
                            1) вы скорее уменьшили языковую модель нежели из 20 слов смогли создать акустическую
                            2) я не использовал sphinx4, я реально не знаю лингвиста LexTreeLinguist и не могу сравнить sphinx4 с чем либо, хотя думаю основное отличие всё таки в том что pocketsphinx написан на Cи, а sphinx4 на java. акустическую модель для sphinx4 как-то оптимизируют прежде использовать для лучшего результата распознавания
                            либо на этом форуме, либо http://www.voxforge.org/ru/forums тут это написано, и статья на официальном сайте где-то есть
                            3) pocketsphinx полноценный движёк для распознавания который пришёл на смену sphinx2 и sphinx3 и поддерживает оба типа акустической модели

                            может быть вот это вам поможет:
                            http://www.voxforge.org/home/forums/other-languages/russian/---sphinx-4#L4clFjodYVbVlA6L1DOC6A

                            p.s. мои просьбы остаются в силе :)
                              База nsh заработала, хотя распознавание неважное, очень мало что распознало, хотя опять же может это из-за плохой дикции.

                              zamirваша база не заработала - все та же ошибка выскакивает - ArrayIndexOutOfBoundsException.

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

                              Поэтому сложно сравнить обе базы.

                              По поводу записи - если бы пару фраз, а так текст читать сложновато - у меня микрофон в ноуте встроенный, а нормального нет.
                                Думаю у вас получилось с моделью 16кГц
                                У меня додель 8кГц
                                Жаль что не удалось сравнить :(
                                возможно ещё что у sphinx по другому параметры называются
                                файл feat.params

                                -frate 100
                                -samprate 8000

                                вписаны мной вручную - можно попробовать удалить поочереди

                                можно и через встроенный микрофон записать - там если послушать с такими шумами записывали - но для обучения вполне подходят
                                там как раз несколько коротких фраз и можно сколько угодно перезаписывать пока не получится более менее нормально а потом нажать кнопку отправить.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (23) [1] 2 3 ...  22 23


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0339 ]   [ 16 queries used ]   [ Generated: 19.03.24, 03:43 GMT ]