WikiDer > FMLLR
В обработка сигналов, Пространство признаков Линейная регрессия максимального правдоподобия (fMLLR) - это глобальное преобразование функции, которое обычно применяется адаптивно к говорящему, где fMLLR преобразует акустические характеристики в характеристики, адаптированные к динамикам, посредством операции умножения с матрицей преобразования. В некоторой литературе fMLLR также известен как Ограниченная линейная регрессия максимального правдоподобия (cMLLR).
fMLLR преобразования обучаются в смысле максимального правдоподобия на данных адаптации. Эти преобразования могут быть оценены разными способами, но только оценка максимального правдоподобия (ML) рассматривается в fMLLR. В fMLLR преобразование обучается на конкретном наборе данных адаптации, так что оно максимизирует вероятность этих данных адаптации с учетом текущего набора моделей.
Этот метод широко используется для адаптации динамика в ХМ-основан распознавание речи,[1][2]
более позднее исследование[3] также показывает, что fMLLR отличная акустическая характеристика для DNN / HMM[4] гибридные модели распознавания речи.
Преимущество фМЛР включает следующее:
- процесс адаптации может выполняться на этапе предварительной обработки и не зависит от ASR процесс обучения и декодирования.
- этот тип адаптированной функции может быть применен к глубокие нейронные сети (DNN) заменить традиционно используемые мел-спектрограмма в моделях сквозного распознавания речи.
- Процесс адаптации динамиков в fMLLR приводит к значительному увеличению производительности для ASR модели, следовательно, превосходящие другие преобразования или функции, такие как MFCC (Кепстральные коэффициенты Mel-частоты) и ФБАНК (Банк фильтров) коэффициенты.
- Возможности fMLLR могут быть эффективно реализованы с помощью таких речевых инструментов, как Kaldi.
Основная проблема и недостаток фМЛР:
- когда объем данных адаптации ограничен, матрицы преобразования имеют тенденцию легко переобучать предоставленные данные.
Вычисление преобразования fMLLR
Преобразование функций fMLLR может быть легко вычислено с помощью инструмента речи с открытым исходным кодом. Kaldi, сценарий Kaldi использует стандартную схему оценки, описанную в Приложении B исходной статьи,[1] в частности, раздел Приложение B.1 «Прямой метод над строками».
В формулировке Калди fMLLR - это аффинное преобразование признаков вида →, который можно записать в виде → W, куда = это акустическая особенность с добавленной 1. Обратите внимание, что это отличается от некоторых литературных источников, где 1 стоит на первом месте как =.
Достаточная сохраненная статистика:
куда - это обратная ковариационная матрица.
И для куда размер функции:
Подробный обзор, объясняющий fMLLR и широко используемые методы оценки, см. В исходной статье «Линейные преобразования максимального правдоподобия для распознавания речи на основе HMM.[1] ".
Обратите внимание, что сценарий Kaldi, выполняющий преобразования функций fMLLR, отличается от [1] используя столбец обратного вместо строки кофактора. Другими словами, фактор детерминанта игнорируется, так как он не влияет на результат преобразования и может вызвать потенциальную опасность потери числового значения или переполнения.
Сравнение с другими функциями или преобразованиями
Результат эксперимента показывает, что при использовании функции fMLLR в распознавании речи достигается постоянное улучшение по сравнению с другими акустическими функциями на различных обычно используемых наборах данных эталонных тестов (ТИМИТ, LibriSpeech, так далее).
В частности, функции fMLLR превосходят MFCC и ФБАНК коэффициентов, что в основном связано с процессом адаптации динамика, который выполняет fMLLR.[3]
В,[3] коэффициент фонемных ошибок (PER,%) сообщается для тестового набора ТИМИТ с различными нейронными архитектурами:
Модели / особенности | MFCC | ФБАНК | fMLLR |
---|---|---|---|
MLP | 18.2 | 18.7 | 16.7 |
RNN | 17.7 | 17.2 | 15.9 |
LSTM | 15.1 | 14.3 | 14.5 |
ГРУ | 16.0 | 15.2 | 14.9 |
Ли-ГРУ | 15.3 | 14.9 | 14.2 |
Как и ожидалось, функции fMLLR превосходят MFCC и ФБАНК коэффициенты, несмотря на использование другой архитектуры модели.
Где MLP (многослойный перцептрон) служит простой базой, с другой стороны RNN, LSTM, и ГРУ все хорошо известные рекуррентные модели.
Ли-ГРУ[5] Архитектура основана на единственном вентиле и, таким образом, экономит 33% вычислений по сравнению со стандартной моделью GRU, Li-GRU, таким образом, эффективно решает проблему исчезновения градиента рекуррентных моделей.
В результате лучшая производительность достигается с моделью Li-GRU по функциям fMLLR.
Извлечение функций fMLLR с помощью Kaldi
fMLLR можно извлечь, как указано в рецепте s5 Kaldi.
Сценарии Kaldi, безусловно, могут извлекать функции fMLLR из разных наборов данных, ниже приведены основные примеры шагов для извлечения функций fMLLR из речевых корпусов с открытым исходным кодом. Либриспич.
Обратите внимание, что инструкции ниже предназначены для подмножеств поезд-чистый-100
,поезд-чистый-360
,dev-clean
, и тестовая чистка
,
но их можно легко расширить для поддержки других наборов dev-другое
, тест-другой
, и поезд-прочее-500.
- Эти инструкции основаны на кодах, приведенных в этом Репозиторий GitHub, который содержит рецепты Kaldi в корпусе LibriSpeech для выполнения процесса извлечения функции fMLLR, замените файлы в
$ KALDI_ROOT / egs / librispeech / s5 /
с файлами в репозитории. - Установить Kaldi.
- Установить Kaldiio.
- Если вы работаете на одной машине, измените следующие строки в
$ KALDI_ROOT / egs / librispeech / s5 / cmd.sh
заменитьqueue.pl
кrun.pl
:1 экспорт train_cmd="run.pl --mem 2G"2 экспорт decode_cmd="run.pl --mem 4G"3 экспорт mkgraph_cmd="run.pl --mem 8G"
- Изменить
данные
путь вrun.sh
к вашему пути к данным LibriSpeech, каталогLibriSpeech /
должен быть под этим путем. Например:данные=/ медиа / пользователь / SSD # пример пути
- Установить
flac
с:sudo apt-get install flac
- Запустите рецепт Kaldi
run.sh
для LibriSpeech по крайней мере до Stage 13 (включительно), для простоты вы можете использовать модифицированный run.sh. - Копировать
exp / tri4b / trans. *
файлы вexp / tri4b / decode_tgsmall_train_clean _ * /
с помощью следующей команды:mkdir exp / tri4b / decode_tgsmall_train_clean_100 && cp exp / tri4b / trans. * exp / tri4b / decode_tgsmall_train_clean_100 /
- Вычислите функции fMLLR, запустив следующий сценарий, сценарий также можно загрузить здесь:
1 #! / bin / bash 2 3 . ./cmd.sh ## Вы захотите изменить cmd.sh на то, что будет работать в вашей системе. 4 . ./path.sh ## Источник tools / utils (импортируйте queue.pl) 5 6 gmmdir=exp / tri4b 7 8 за кусок в dev_clean test_clean train_clean_100 train_clean_360 ; делать 9 реж=fmllr /$ кусок10 шаги / nnet / make_fmllr_feats.sh --nj 10 --cmd "$ train_cmd" \11 --transform-dir $ gmmdir/ decode_tgsmall_$ кусок \12 $ dir данные/$ кусок $ gmmdir $ dir/бревно $ dir/данные || выход 113 14 вычислить-cmvn-stats --spk2utt=ark: data /$ кусок/ spk2utt scp: fmllr /$ кусок/feats.scp ark:$ dir/data/cmvn_speaker.ark15 сделано
- Вычислить выравнивания, используя:
1 # выравнивания на dev_clean и test_clean2 шаги / align_fmllr.sh --nj 10 данные / dev_clean data / lang exp / tri4b exp / tri4b_ali_dev_clean3 шаги / align_fmllr.sh --nj 10 данные / test_clean данные / lang exp / tri4b exp / tri4b_ali_test_clean4 шаги / align_fmllr.sh --nj 30 data / train_clean_100 data / lang exp / tri4b exp / tri4b_ali_clean_1005 шаги / align_fmllr.sh --nj 30 data / train_clean_360 data / lang exp / tri4b exp / tri4b_ali_clean_360
- Подать заявление CMVN и сбросить функции fMLLR в новые файлы .ark, скрипт также можно скачать здесь:
1 #! / bin / bash 2 3 данные=/ пользователь / калди / egs / librispeech / s5 ## Вы захотите изменить этот путь на то, что будет работать в вашей системе. 4 5 rm -rf $ данные/ fmllr_cmvn / 6 mkdir $ данные/ fmllr_cmvn / 7 8 за часть в dev_clean test_clean train_clean_100 train_clean_360; делать 9 mkdir $ данные/ fmllr_cmvn /$ часть/10 применить-cmvn --utt2spk=ковчег:$ данные/ fmllr /$ часть/ utt2spk ark:$ данные/ fmllr /$ часть/data/cmvn_speaker.ark scp:$ данные/ fmllr /$ часть/feats.scp ark: - | add-deltas --delta-order=0 ковчег: - ковчег:$ данные/ fmllr_cmvn /$ часть/fmllr_cmvn.ark11 сделано12 13 дю-ш $ данные/ fmllr_cmvn / *14 эхо "Выполнено!"
- Используйте скрипт Python для преобразования сгенерированных Kaldi функций .ark в .npy для вашего собственного загрузчика данных, пример Скрипт Python предоставлен:
Python ark2libri.py
Смотрите также
Рекомендации
- ^ а б c d M.J.F. Гейлс (1998). «Линейные преобразования максимального правдоподобия для распознавания речи на основе HMM». Компьютерная речь и язык. 12 (2): 75–98. CiteSeerX 10.1.1.37.8252. Дои:10.1006 / csla.1998.0043.
- ^ Цзин Хуанг; E Marcheret; К. Висвесвария (2005). Быстрая адаптация пространственных динамиков для многопоточного аудиовизуального распознавания речи на основе HMM. Международная конференция IEEE по мультимедиа и выставкам (ICME). IEEE. С. 338–341. Дои:10.1109 / ICME.2005.1521429.
- ^ а б c d Раванелли, Мирко; Парколле, Титуан; Бенджио, Йошуа (18 ноября 2018 г.). «Набор средств распознавания речи PyTorch-Kaldi». arXiv:1811.07453 [eess.AS].
- ^ Ли, Лунфэй; Чжао, Юн; Цзян, Дунмэй; Чжан, Яньнин; Ванга, Фенна; Гонсалес, Изабель; Валентин, Энеску; Сахли, Хичем (сентябрь 2013 г.). «Гибридная глубокая нейронная сеть - распознавание эмоций речи на основе скрытой марковской модели (DNN-HMM)». Конференция ассоциации Humaine по эффективным вычислениям и интеллектуальному взаимодействию, 2013 г.. IEEE: 312–317. Дои:10.1109 / acii.2013.58. ISBN 978-0-7695-5048-0.
- ^ Раванелли, Мирко; Бракел, Филимон; Омолого, Маурицио; Бенджио, Йошуа (2017-08-20). «Улучшение распознавания речи путем пересмотра закрытых рекуррентных единиц». Интерспич 2017. ISCA: ISCA: 1308–1312. arXiv:1710.00641. Bibcode:2017arXiv171000641R. Дои:10.21437 / interspeech.2017-775.