На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
  
> Shinxtrain ru
    Т.к. не нашёл русского руководства для видны, а в английском для линукса запутался, решил перевести туториал, а результатом поделиться здесь. http://cmusphinx.sourceforge.net/wiki/tutorialadapt. Перевод первичный googl'ом + напильником, где понимал, что имелось в виду.


    Цитата
    Адаптация акустической модели по умолчанию

    Эта страница описывает, как делать некоторые простые адаптации акустической модели, улучшить распознавание речи в вашей конфигурации. Пожалуйста, обратите внимание, что адаптация вовсе не обязательно адаптировать для конкретного человека. Это только улучшает соответствие между адаптированными данными и моделью. Например, вы можете адаптировать свой собственный голос, чтобы диктовку воспринимало лучше, но вы также можете адаптировать к конкретной окружающая обстановке, аудио каналу передачи, вашему акценту или акценту пользователей. Вы можете использовать модель тренированную с чистыми транслируемыми данными и телефонные данные для создания акустической модели телефона, делая адаптацию. Кросс-языковая адаптация также имеет смысл, например, вы можете адаптировать английскую модель на звуки другого языка путем создания фонетической карты и создания другого фонетического словаря английского языка.
    Процесс адаптации берет переписанные данные и улучшает модель которая у вас уже есть. Это более надежный, чем обучение и может привести к хорошим результатам, даже если в вашей адаптации мало данных. Например, достаточно иметь 5 минут речи, чтобы значительно улучшить точность диктовки по адаптации к конкретному спикеру.
    Методы адаптации немного отличаются между PocketSphinx и Sphinx4 из-за различных типов акустических моделей. Для получения дополнительной технической информации об этом см. AcousticModelTypes .
    Создание основы адаптации
    Первое, что нужно сделать, это создать основу адаптации данных. Он будет состоять из списка предложений, словарь описывающий произношение всех слов в этом списке предложений, а далее вы записываете произношение каждого из этих предложений.
    Необходимые файлы
    Фактически множество предложений вы используете несколько произвольно, но в идеале он должен иметь хорошее область наиболее часто используемых слов или фонем в множество предложений или типе текста, который нужно распознавать. У нас были хорошие результаты просто с использованием предложений от CMU ARCTIC базы данных текста-в-речь. С этой целью здесь первые 20 предложений от ARCTIC, управляющий файл, транскрипция файл, и словарь для них:

    *
    arctic20.txt

    *
    arctic20.fileids

    *
    arctic20.transcription

    *
    arctic20.dic


    В нижеследующих разделах будут ссылаться на эти файлы, так что было бы хорошей идеей, чтобы скачать их сейчас. Вы также должны убедиться, что вы скачали и скомпилировали SphinxBase и SphinxTrain.
    Запись данных адаптации
    В случае, если Вы адаптируете к одному спикеру можно записать данные адаптации самостоятельно. К сожалению, это немного сложнее, чем она должна быть. В принципе, вам нужно записать одну звуковой файл для каждого предложения в основу адаптации, именование файлов должно быть по именам, перечисленным в arctic20.transcription и arctic20.fileids . Кроме того, вы должны удостовериться, что данные которые вы записываете будут с частотой дискретизации 16 кГц (или 8 кГц, если вам адаптироваться телефон модели) в моно и с одно канальные.
    Если вы находитесь в Linux командной строки, вы можете сделать это в очень скучном стиле с следующией попыткой в одну строку из каталога, в который вы скачали arctic20.txt :

    for i in `seq 1 20`; do
    fn=`printf arctic_%04d $i`;
    read sent; echo $sent;
    rec -r 16000 -e signed-integer -b 16 -c 1 $fn.wav 2>/dev/null;
    done < arctic20.txt



    Это будет выводить каждое предложение на экран и немедленно начинать запись. Нажмите Ctrl-C, чтобы перейти к следующему предложению. Вы должны увидеть следующие файлы в текущем каталоге после всего:
    arctic_0001.wav
    arctic_0002.wav
    .....
    arctic_0019.wav
    arctic20.dic
    arctic20.fileids
    arctic20.transcription
    arctic20.txt
    Вы должны убедиться, что эти записи звучат хорошо. Чтобы сделать это, вы можете воспроизводить их с помощью:

    for i in *.wav; do play $i; done



    Если Вы адаптируете к каналу, акценту или некоторым другим общим свойствам звука, то вам нужно собрать немного больше записей вручную. Например, в колл-центре Вы сможете записывать и переписывать сотни звонков и использовать их для повышения точности распознавания с помощью адаптации.
    Адаптация акустической модели
    Сначала мы будем копировать ту акустическую модель, которая по умолчанию в PocketSphinx в текущем каталоге для того, чтобы работать с ним. Предполагая, что вы установили PocketSphinx в /usr/local, каталог акустической модели / usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k .Скопируйте этот каталог в каталог, где работаете:
    CP-/ usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k.

    Создание файлов акустических особенностей
    Для того чтобы запустить адаптацию инструментов, необходимо создать набор файлов особенностей акустической модели из этих записей WAV.Это может быть сделано с помощью sphinx_fe - инструмент SphinxBase. Крайне важно, чтобы вы убедитесь, что вы используете те же же акустические параметры для извлечения этих функций, которые были использованы для подготовки стандартной модели акустики. С PocketSphinx 0,4, они хранятся в файле под названием feat.params в акустической модели каталога. Вы можете просто добавить его в командной строке для sphinx_fe , вроде этого:

    sphinx_fe-argfile hub4wsj_sc_8k/feat.params \
    Samprate-16000-C arctic20.fileids \
    -Ди. -Делать. -EI WAV-ео MFC-да mswav

    Если вы используете Sphinx4 и модель не имеет feat.params файл, просто не используйте argfile параметр, чтобы использовать настройки по умолчанию.

    Теперь вы должны иметь следующие файлы в вашем рабочем каталоге:
    arctic_0001.mfc
    arctic_0001.wav
    arctic_0002.mfc
    arctic_0002.wav
    arctic_0003.mfc
    arctic_0003.wav
    .....
    arctic_0020.wav
    arctic20.dic
    arctic20.fileids
    arctic20.transcription
    arctic20.txt
    Преобразование sendump и mdefфайлов

    Некоторые модели не имеют достаточно данных для адаптации. Существует дополнительный файл, который вам нужно который не включен в PocketSphinx дистрибутив в целях экономии размера. Вы можете скачать bzip2-сжатую версию http://cmusphinx.svn.sourceforge.net/viewv...extra/?view=tar и разархивировать его. Скопируйте файл из mixture_weights pocketsphinx-extra/model/hmm/en_US/hub4_wsj_sc_3s_8k.cd_semi_5000 папку с акустической моделью.
    Иногда sendump файл может быть преобразован обратно в файл mixture_weights. Это возможно только для старых файлов sendump. Если у вас установлен SphinxTrain модулей Python , вы можете использовать sendump.py для преобразования sendump файл с акустической модели mixture_weights файл. Для акустических моделей hub4_wsj она не будет работать.
    Вам также необходимо преобразовать MDEF файл из акустической модели в формате обычного текста используется SphinxTrain инструментов. Чтобы сделать это, используйте pocketsphinx_mdef_convert программу:
    pocketsphinx_mdef_convert текста hub4wsj_sc_8k/mdef hub4wsj_sc_8k/mdef.txt

    Суммирование накопленных наблюдений
    Следующим шагом в адаптации - сбор статистики из адаптационных данных. Это делается с помощью BW программы из SphinxTrain. Вы должны быть в состоянии найти его в директории с именем bin.i686-pc-linux-gnu или bin-x86_64-unknown-linux-gnu (на Linux) или в bin \ Debug или Bin \ Release (на Windows) внутри SphinxTrain каталог. Скопируйте его в рабочий каталог вместе с map_adapt и mk_s2sendump программами из того же каталога.
    Теперь, для сбора статистических данных, выполните:./bw \
    -hmmdir hub4wsj_sc_8k \
    -moddeffn hub4wsj_sc_8k/mdef.txt \
    -ts2cbfn .semi. \
    -feat 1s_c_d_dd \
    -svspec 0-12/13-25/26-38 \
    -cmn current \
    -agc none \
    -dictfn arctic20.dic \
    -ctlfn arctic20.fileids \
    -lsnfn arctic20.transcription \
    -accumdir .


    Убедитесь, что аргументы в BW команды должны совпадать с параметрами в feat.params файлов внутри папки акустической модели. Пожалуйста, обратите внимание, что не все параметры из feat.param поддерживается bw, лишь немногие из них. bw , например, не поддерживает upperf или другие параметры выделения признаков. Вам нужно всего лишь использовать параметры, которые будут приняты, другие параметры из feat.params должны быть пропущены.
    Например, для большинства непрерывных моделей (например, те, которые используются Sphinx4) вам не нужно включать опцию svspec. Вместо этого вам нужно использовать только -ts2cbfn .cont. для PTM(Phonetically Tied Mixtures -фонетически связанные смеси :/ ) моделей используйте -ts2cbfn .ptm.
    Иногда, если вы пропустите файл noisedict необходимо также дополнительный шаг, скопируйте fillerdict файл в каталог, который вы выбираете в hmmdir параметре, переименовав его в noisedict .
    Создание преобразования с MLLR
    MLLR преобразования поддерживаются PocketSphinx и sphinx4. MLLR это дешевый метод адаптации, которая подходит, когда объем данных ограничен.Это хорошая идея использовать MLLR для интернет-адаптации. MLLR лучше всего подходит для непрерывной модели. Этот эффект для полунепрерывной модели очень ограничен, так как полу-непрерывные модели опирается главным образом на вес смеси. Если вы хотите большей точности можно объединить MLLR адаптацию с MAP адаптацией, которая приводится ниже.
    Далее мы будем генерировать MLLR преобразования, которые мы пройдем для декодера адаптации акустической модели при выполнении в реальном времени (run-time). Это делается с mllr_solve программой:
    . / Mllr_solve \
    -Meanfn hub4wsj_sc_8k/means \
    -Varfn hub4wsj_sc_8k/variances \
    -Outmllrfn mllr_matrix-accumdir.
    Эта команда создаст файл адаптационных данных, который называется mllr_matrix . Теперь, если вы хотите, распохнавать с адаптированной моделью, просто добавьте -mllr mllr_matrix (или любой другой путь к mllr_matrix созданному файлу) в командную строку PocketSphinx.
    Обновление акустические файлы модели с MAP
    MAP является другим методом адаптации. В этом случае в отличие от MLLR мы не создадим общие преобразования, но обновим каждый параметр в модели. Мы сейчас скопируем каталог акустической модели и перепишем вновь созданный каталог с файлами адаптированной модели:
    CP-hub4wsj_sc_8k hub4wsj_sc_8kadapt

    Для адаптации, используем map_adapt программу:
    map_adapt \
    -Meanfn hub4wsj_sc_8k/means \
    -Varfn hub4wsj_sc_8k/variances \
    -Mixwfn hub4wsj_sc_8k/mixture_weights \
    -Tmatfn hub4wsj_sc_8k/transition_matrices \
    -Accumdir. \
    -Mapmeanfn hub4wsj_sc_8kadapt/means \
    -Mapvarfn hub4wsj_sc_8kadapt/variances \
    -Mapmixwfn hub4wsj_sc_8kadapt/mixture_weights \
    -Maptmatfn hub4wsj_sc_8kadapt/transition_matrices
    Пересоздание адаптированного sendump файл
    Если вы хотите, чтобы сэкономить место для модели вы можете использовать sendump файлы поддерживающиеся PocketSphinx. Для sphinx4 вам не нужно это. Для воссоздания sendump файл с обновленным mixture_weights файл:
    ./mk_s2sendump \
    PocketSphinx-да \
    -Moddeffn hub4wsj_sc_8kadapt/mdef.txt \
    -Mixwfn hub4wsj_sc_8kadapt/mixture_weights \
    -Sendumpfn hub4wsj_sc_8kadapt/sendump
    Поздравляем! Теперь у вас есть адаптированные акустической модели! Вы можете удалить файлы wsj1adapt/mixture_weights и wsj1adapt/mdef.txt, чтобы сэкономить место, если хотите, потому что они не используются декодером.
    Другие акустические модели
    Для Sphinx4, адаптация такая же, как для PocketSphinx, за исключением того, что модель является непрерывной. Вы должны взять непрерывную модель из sphinx4 для адаптации. Непрерывные модели часто имеют текстовый файл MDEF, таким образом, вам не нужно распаковать бинарный MDEF и упаковать его обратно. Кроме того, во время BW типа модель .cont. и не .semi. и типа объекта, как правило, 1s_c_d_dd. Остальное же - BW + map_adapt будет делать свою работу.
    Тестирование адаптации
    После того как вы сделали адаптацию, очень важно, чтобы проверить качество адаптации. Для этого вам нужно настроить базу данных аналогичный тому, как вы использовали для адаптации:
    Создайте fileids файл adaptation-test.fileids:
    test1
    test2
    Создайте файл транскрипции adaptation-test.transcription:

    some text (test1)
    some text (test2)



    Положить аудио файлы в WAV папку. Убедитесь, что эти файлы имеют правильный формат и частоту дискретизации.
    wav/test1.wav
    wav/test2.wav
    Вы также можете использовать адаптации данных для тестирования, но для этого рекомендуется создать отдельный набор тестов. Теперь давайте запустим декодер:

    pocketsphinx_batch \
    -adcin yes \
    -cepdir wav \
    -cepext .wav \
    -ctl adaptation-test.fileids \
    -lm <your.lm> \
    -dict <your.dic, for example arctic.dic> \
    -hmm <your_new_adapted_model, for example hub4wsj_sc_8kadapt> \
    -hyp adapation-test.hyp

    word_align.pl adaptation-test.transcription adapation-test.hyp



    Убедитесь в том, что вы добавили
    -samprate 8000

    к приведенной команде, если вы распознаете 8 кГц файлы!

    Сценарий word-align.pl в Sphinxtrain сообщит вам точную оценку ошибки, которые вы можете использовать, чтобы решить, что адаптация работает успешно. Это будет выглядеть примерно так:

    TOTAL Words: 773 Correct: 669 Errors: 121
    TOTAL Percent correct = 86.55% Error = 15.65% Accuracy = 84.35%
    TOTAL Insertions: 17 Deletions: 11 Substitutions: 93



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

    Вам нужна только эта папка. Модель должна иметь следующие файлы:

    mdef
    feat.params
    mixture_weights
    means
    noisedict
    transition_matrices
    variances



    В зависимости от типа модели обучения.
    Чтобы использовать модель в PocketSphinx, просто переместите файлы модели к ресурсам приложения. Затем направьте к ним с помощью опции -hmm :

    pocketsphinx_continuous -hmm <your_new_model_folder> -lm <your_lm> -dict <your_dict>.



    Или с -hmm движком параметров конфигурации через cmd_ln_init функции. Или же вы можете заменить старые файлы модели с новыми.
    Для использования обученной модели в sphinx4, необходимо обновить расположение модели в файле конфигурации. Читайте документацию на использование SphinxTrain моделей в sphinx4 .
    Адаптация не улучшила результаты. Поиск и устранение неисправностей
    Теперь проверьте свою точность, чтобы увидеть, что это хорошо.
    Я понятия не имею, с чего начать искать проблемы

    1. Тест точности по адаптации оценивает, улучшается ли распознавание
    2. Точность улучшает адаптационный набор → проверьте, если ваши адаптационные установки совпадают с тестовыми установками
    3. Точность не улучшится с адаптационными установками→ Вы сделали ошибку в процессе адаптации


    на какое улучшение я мог бы рассчитывать путем адаптации
    Из нескольких предложений, вы должны получить около 10% относительного улучшения WER.
    Я заблудился
    будь то требуется больше / лучше обучающих данных, независимо от того что я не делаю адаптацию правильно ли моя модель языка является проблемой, или есть ли что-то принципиально неправильно с моей конфигурации
    Скорее всего, вы просто проигнорировали сообщения об ошибках, которые были напечатаны для вас. Вам очевидно необходимо предоставить более подробную информацию и предоставить доступ к вашим файлам эксперимента, чтобы получить более определенные советы.
    Что дальше
    Мы надеемся, адаптированные модели дали вам приемлемые результаты. Если нет, попробуйте улучшить свой процесс адаптации:

    1. Добавить больше адаптационных данных
    2. Адаптация модели языка / использовать лучшую модель языка





    Данный перевод не претендует ни на что, т.к. первый публикуемый :) знаю что вы можете и лучше и т.д. и т.п., специально для критиков есть место внизу страницы продемонстрировать как надо лучше, желательно в полном объеме статьи ;)
      Отличный перевод, спасибо!

      Сообщения были разделены в тему "Распознавание чисел"
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0230 ]   [ 14 queries used ]   [ Generated: 27.07.24, 08:30 GMT ]