- Оригинальный адрес:An Introduction to Speech Recognition using WFSTs
- Оригинальный автор:Desh Raj
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:sisibeloved
- Корректор:xionglong58, JackEggie
Раньше все мои сообщения в блоге были посвящены методам глубокого обучения или их применению в НЛП. И несколько недель назад я начал работать над автоматическим распознаванием речи (ASR). Поэтому сейчас я также опубликую несколько статей, связанных с речью.
Логика ASR очень проста (это байесовская теория, как и другие алгоритмы в области машинного обучения). По сути, ASR преобразует заданную форму речевого сигнала, например, распознает текст, соответствующий форме сигнала. ПредположениеYпредставляет собой вектор признаков, полученный из формы волны (примечание: само по себе это «извлечение признаков» — очень сложный процесс, о котором я подробно расскажу в другом посте),wПредставляя любую строку, можно вывести следующую формулу:
Две вероятности в формуле обучаются отдельно. Первый компонент, называемыйакустическое моделирование, обученный с использованием параллельного корпуса, содержащего высказывания и речевые сигналы. Второй компонент, называемыйязыковое моделирование, обученный на большом количестве текста без присмотра.
Хотя обучение ASR выглядит просто на абстрактном уровне, реализовать его гораздо сложнее. Обычно мы реализуем это с помощью взвешенной машины конечных состояний (WFST). В этом посте я представлю WFST и лежащие в его основе алгоритмы, а также кратко опишу, как использовать его для распознавания речи.
Взвешенный преобразователь конечных состояний (WFST)
Если вы уже проходили курс компьютерной теории, вы, вероятно, уже знаетеавтоматКонцепция чего-либо. Концептуально конечный автомат принимает язык (набор строк) в качестве входных данных. Они представлены ориентированными графами, как показано ниже.
Каждый автомат состоит из начального состояния, одного или нескольких конечных состояний и помеченных ребер, соединяющих состояния. Строка считается принятой, если она оказывается в конечном состоянии после прохождения некоторого пути в графе. Например, в приведенном выше DFA (детерминированные конечные автоматы, детерминированные конечные автоматы)a,acиaeбудет принято.
следовательнополучательСопоставляет любую входную строку с двоичным классом {0,1} в зависимости от того, принята строка или нет. иКонвертерНа каждом ребре есть 2 метки - входная метка и выходная метка.взвешенныйМашины переходов состояний делают еще один шаг вперед, с весами, соответствующими каждому ребру и каждому конечному состоянию.
Следовательно, WFST — это отображение пар строк в суммы весов. Пара строк формируется из входных/выходных меток по любому пути WFST. Для недостижимых пар узлов в графе вес соответствующего ребра бесконечен.
На самом деле у большинства языков есть соответствующие библиотеки, реализующие WFST. В С++,OpenFSTявляется более популярной библиотекой вСредство распознавания речи Kaldiтакже используется в .
В принципе, мы можем реализовать алгоритмы распознавания речи без использования WFST. Однако эта структура данных имеетМножественные проверенные результатыи алгоритмы, которые можно использовать непосредственно в ASR, не беспокоясь о правильности и сложности. Эти преимущества делают WFST практически непревзойденным в распознавании речи. Далее я подытожу некоторые алгоритмы WFST.
Основные алгоритмы в WFST
сливаться
Слияние, как следует из названия, представляет собой процесс объединения двух WFST для формирования одного WFST. Этот алгоритм позволил бы нам легко построить систему преобразования речи в текст, если бы у нас была машина для перевода произношения и грамматики на уровне слов.
Слияние следует 3 принципам:
- Объедините начальные состояния исходного WFST в пары, чтобы сформировать начальное состояние нового WFST.
- Точно так же объедините конечные состояния в пары.
- Если есть ситуация, когда выходная метка первого WFST равна входной метке второго WFST, добавьте ребро из начальной пары в конечную пару. Веса ребер представляют собой «сумму» исходных весов.
Вот пример слияния:
Определение «суммы» важно для весов ребер. посредствомполукольцоконцепции, WFST может принимать «язык» в широком смысле. Концептуально это набор элементов с двумя операторами, ⊕ и ⊗. Эти операторы могут иметь разные определения в зависимости от типа полукольца. Например, в тропическом полукольце ⊕ означает взять минимальное значение, а ⊗ означает добавить. Кроме того, в любом WFST сумма весов всего пути равна весам ребер вдоль пути ⊗ (примечание: «умножение» здесь означает сложение вместе для тропических полуколец), кратных путей Сумма весов равна ⊕ для путей с одинаковой последовательностью символов.
здесьЕсть реализация слияния в OpenFST.
Детерминированный
Убедитесь, что автомат является автоматом только с одним переходом каждого типа метки в каждом состоянии. С такими выражениями детерминированный WFST устраняет всю избыточность и значительно снижает сложность базовой грамматики. Итак, все ли WFST детерминированы?
близнец собственности: Предположим, что существует автомат A с двумя состояниями в Apиq. еслиpиqоба имеют одинаковый ввод строкиx, и петля с той же меткойy, это называетсяpиqСтатус брата. Концептуально два одноуровневых состояния являются побратимами, если общие веса путей до этого состояния (включая циклы) равны.
Этот WFST является детерминированным, когда все однородные состояния являются побратимами.
Это пример того, что я сказал ранее о том, что WFST является эффективной реализацией алгоритма, используемого в ASR. Существует несколько способов определения WFST. Один из алгоритмов выглядит так:
Упрощенные шаги алгоритма выглядят следующим образом:
- В каждом состоянии для каждой выходной метки, если эта метка имеет более одного выходного ребра, она заменяется одним ребром, вес которого равен сумме весов всех ребер, содержащих эту метку.
Поскольку это локальный алгоритм, его можно эффективно реализовать в памяти. Чтобы узнать, как выполнить детерминацию в OpenFST, см.здесь.
минимизировать
Хотя минимизация не так важна, как детерминация, она все же является хорошим методом оптимизации. Он используется для минимизации количества состояний и переходов в детерминированном WFST.
Шаг минимизации делится на два шага:
- Толчок веса: все веса перемещаются в начальное состояние. См. пример ниже.
- Как только это будет сделано, мы объединяем состояния с одним и тем же путем к конечному состоянию. Например, в приведенном выше WFST состояния 1 и 2 становятся одинаковыми после смещения веса, поэтому они объединяются в одно состояние.
В OpenFST вы можетездесьНайдите конкретную реализацию минимизации.
Изображение ниже (из[3]) показывает полный процесс оптимизации WFST:
Применение WFST в распознавании речи
При распознавании речи несколько WFST объединяются последовательно в следующем порядке:
- грамматика(G): языковые модели, обученные с использованием больших корпусов.
- Глоссарий(L): используется для кодирования информации о вероятности речи без контекста.
- Контекстно-зависимая обработка речи (C): Подобно моделям языка n-грамм, единственное отличие состоит в том, что он работает с обработкой речи.
- Архитектура ХММ (H): Модель для обработки сигналов.
В общем, нажимайтеH o C o L o GКомпозиция может представлять полный поток распознавания речи. Каждую из этих частей можно улучшать по отдельности, тем самым улучшая всю систему ASR.
WFST — важная часть системы ASR, в этой статье WFST представлена лишь вкратце. В других сообщениях, связанных с речью, я обсуждаю такие вещи, как извлечение признаков, популярные модели GMM-HMM и последние достижения в области глубокого обучения. я тоже читаюЭтидокумент, чтобы лучше понять, как ASR развивалась на протяжении многих лет.
использованная литература
- [1] Гейлз, Марк и Стив Янг, Скрытые марковские модели для распознавания речи, основы и тенденции® в обработке сигналов 1.3 (2008): 195–304.
- [2] Мори, Мехриар, Фернандо Перейра и Майкл Райли, Взвешенные конечные автоматы в распознавании речи, Компьютерная речь и язык 16.1 (2002): 69–88.
- [3] Проф. Цзян Хуэй (Йоркский университет)Раздаточные материалы для занятий
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.