Назад в библиотеку

Sphinx4 — гибкая система с открытым кодом для распознавания речи

Автор: Вилли Волкер, Пол Ламьер, Филипп Квок, Бхикша Радж, Рита Синь, Эвандро Гувеа, Питер Вульф, Джо Вьюлфель, Бакаленко В. С.
Источник: Вилли Волкер, Пол Ламьер, Филипп Квок, Бхикша Радж, Рита Синь, Эвандро Гувеа, Питер Вульф, Джо Вьюлфель Sphinx4 — гибкая система с открытым кодом для распознавания речи
Перевод: Бакаленко В. С.

Перевод части этой статьи уже имеется на портале(ссылка). Мой перевод является дополнением.

5. Лингвист

Лингвист генерирует Граф Поиска, который используется декодером в процессе поиска, в то же время, скрывая сложности, связанные с генерированием этого Графа. Как и в случае со всей системой Sphinx-4, Лингвист это подключаемый модуль, что позволяет пользователям динамически конфигурировать систему с различными реализациями Лингвиста.

Типичная реализация Лингвиста строит Граф Поиска используя структуру языка в виде Языковой Модели и топологической структуры Акустической Модели (СММ для основных звуковых единиц, используемых в системе). Лингвист может также использовать словарь (как правило, словарь с произношениями), чтобы отобразить слова из Языковой Модели в последовательности элементов Акустической Модели. При генерации Графа Поиска, Лингвист может также включать единицы суб-слова с контекстом произвольной длины, если это предусмотрено.

Именно то, что имеется возможность подключать во время выполнения различные конфигурации лингвиста, позволяет разработчикам создавать конфигурации для различных системных требований и требований распознавания. Например, простая программа, распознающая цифры может использовать простого Лингвиста, который будет целиком, находится в памяти. С другой стороны, приложение со словарем в 100тыс. слов может использовать сложную структуру Лингвиста, который будет содержать в памяти лишь малые части потенциального пространства поиска одновременно.

Сам Лингвист состоит из трех компонентов: Языковая модель, Словарь, Акустическая модель, которые будут описаны в следующих разделах.

А. Языковая модель

Языковая модель — это модуль Лингвиста, который предоставляет структуру языка на уровне слов, которые могут быть представлены в любом количестве подключаемых реализаций. Эти реализации обычно попадают в одну из двух категорий: грамматика, основанная на графах и стохастические модели N- Gram. Грамматика, основанная на графах представляет собой направленный граф со словами, где каждый узел представляет собой одно слово и каждая дуга представляет собой вероятность перехода слова. Стохастические модели N-Gram обеспечивают вероятности, для слов, исходя из предыдущих n-1 слов.

Языковая Модель в Sphinx-4 поддерживает различные форматы, в том числе следующие:

Б. Словарь

Словарь обеспечивает произношение для слов, найденных в Языковой модели. Произношение разбивает речь на более мелкие суб-слова в Акустической модели. Интерфейс Словаря также поддерживает классификацию слов и позволяет одному слову быть в нескольких классах.

Sphinx-4 в настоящее время обеспечивает реализацию интерфейса словаря для поддержки CMU Словаря Произношений [23]. Различные варианты выполнения оптимизации модели используются в зависимости от размера активного словаря. Например, одна реализация будет загружать весь словарный запас во время инициализации системы, в то время как другая реализация будет получать только произношения по требованию.

В. Акустическая модель

Модуль Акустическая Модель обеспечивает отображение между единицей речи и СММ, что может быть засчитано против возможностей, предоставляемых FrontEnd. Как и в других системах, отображение может также принять контекстную информацию и положение слова во внимание. Например, в случае трифонов, контекст представляет собой отдельные фонемы слева и справа от данной фонемы, а положение слова, находится ли трифон в начале, середине или в конце слова (или это и есть само слово). Контекстное определение не фиксируется Sphinx-4, что позволяет использование Акустических Моделей, которые содержат аллофоны, а также Акустических Моделей, контексты которых не должны быть рядом с блоком.

Как правило, Лингвист ломает каждое слово в активном словаре в последовательности контекстно-зависимых единиц суб-слов. Лингвист затем отправляет блоки и их контексты в Акустическую Модель, получая СММ графы, связанные с этими блоками. Затем он использует эти СММ графы в сочетании с Языковой Моделью для построения Графа Поиска.

В отличие от большинства систем распознавания речи, которые представляют СММ графы в виде фиксированной структуры в памяти, Sphinx-4 СММ является лишь ориентированным графом объектов. На этом графе, каждый узел соответствует СММ-состоянию, и каждая дуга представляет собой вероятность перехода из одного состояния в другое в СММ. Представляя СММ как ориентированный граф объектов вместо фиксированной структуры, реализация Акустической Модели легко сопоставляет СММ с различными топологиями. Например, интерфейсы Акустической Модели не ограничивают СММ с точки зрения ряда состояний, число переходов из любого состояния, или направление перехода (вперед или назад). Кроме того, Sphinx-4 позволяет меняться количеству состояний в СММ от одного устройства к другому в той же Акустической Модели.

Каждое состояние СММ способно производить оценку от наблюдаемого объекта. Реальный код для вычисления оценки выполняется самим СММ состоянием, что позволяет скрыть его реализацию от остальной части системы, позволяя использовать различные функции плотности распределения вероятностей в состояниях СММ. Акустическая модель также позволяет совместное использование различных компонентов на всех уровнях. То есть, компоненты, входящие в состав конкретного состояния, такие как СММ гауссовых смесей, переходных матриц и весов смеси могут быть разделены с помощью любого из состояний СММ в порядке степени.

Как и в остальной части Sphinx-4, пользователи могут настроить Sphinx-4 с различными реализациями Акустической модели на основе их потребностей. Sphinx-4 в настоящее время обеспечивает единую реализацию Акустической модели, которую можно загрузить и использовать акустические модели, созданные тренером Sphinx-3.

Г. Граф Поиска

Даже не смотря на то, что Лингвисты могут быть реализованы по-разному и топологии поисковых пространств, порождаемые этими Лингвистами, могут значительно отличаться, все равно все поисковые пространства будут представлены, как Граф Поиска. На рисунке 3 приведен пример Графа Поиска, который является основной структурой данных, используемой в процессе декодирования.

Пример графа поиска

Рисунок 3 — Пример Графа Поиска. Граф Поиска — это ориентированный граф, состоящий из необязательных состояний поиска и дуг поиска с вероятностями перехода. Каждое состояние в графе может представлять компоненты из Языковой Модели (слова в прямоугольниках), Словаря(суб-слова в темных кругах) или Акустической Модели (СММ=НММ).

Граф — ориентированный граф, в котором каждый узел, называемый Состояние Поиска, представляет собой либо входящее, либо исходящее состояние. Входящее состояние может быть противопоставлено входящим акустическим особенностям, в то время как исходящее состояние, как правило, используется для представления более высокого уровня языковых конструкций, таких как слова и фонемы, которые непосредственно не противопоставляются. Дуги между состояниями, представляют собой возможные переходы между состояниями, каждое из которых имеет вероятность перехода по дуге.

Интерфейс Графа Поиска намеренно общий для обеспечения широкого диапазона вариантов реализации, освобождения от жёстких ограничений, найденных в предыдущих системах распознавания. В частности, Лингвист не накладывает ограничения на следующее:

Ключевой особенностью является то, что в Графе Поиска реализация Состояния Поиска не обязательно должна быть исправлена. Таким образом, каждый реализация Лингвиста, как правило, предоставляет свою собственную конкретную реализацию Состояния Поиска, которая может варьироваться в зависимости от характеристиках конкретного Лингвиста. Например, простой Лингвист может обеспечить Состояние Поиска, хранящееся в памяти, где каждое Состояние Поиска является просто отображением один-к-одному вершин графа в памяти. Лингвист, представляющий очень большой и сложный словарь, может создать компактное внутреннее представление Графа Поиска. В этом случае, Лингвист будет генерировать множество преемников Состояния Поиска и динамически расширять это компактное представление по требованию.

Манера, в которой Граф Поиска построен, влияет на объем памяти, скорость и точность распознавания. Модульная конструкция Sphinx-4, однако, позволяет различные стратегии компиляции Графа Поиска, которые будут использоваться без изменения других аспектов системы. Выбор между статической и динамической конструкцией языка для СММ зависит главным образом от размера словаря, сложности модели языка и желаемой памяти, занимаемый системой, и этот выбор может быть сделан самим приложением.

Д. Реализации

Как и во FrontEnd, Sphinx-4 предлагает несколько реализаций Лингвиста для поддержки различных задач.

FlatLinguist подходит для задач распознавания, которые используют контекстно-свободную грамматику (CFG), грамматики конечных состояний (FSG), преобразователи конечных состояний (FST) и маленькие модели N-Gram. FlatLinguist преобразует любой из этих внешних видов форматов языковых моделей во внутреннюю структуру грамматики. Грамматика представляет собой направленное слово график, где каждый Грамматический Узел представляет собой одно слово, и каждая дуга в графе представляет собой вероятность перехода. FlatLinguist генерирует Граф Поиска непосредственно из этой внутренней грамматики графа, храня весь Граф Поиска в памяти. Таким образом, FlatLinguist очень быстр, но имеет сложности обработки грамматики с высокими коэффициентами ветвления.

DynamicFlatLinguist похож на FlatLinguist в том, что он является подходящим для подобных задач распознавания. Главное отличие в том, что DynamicFlatLinguist динамически создает Граф Поиска по требованию, давая ему, возможность обрабатывать гораздо больше грамматики. Однако, благодаря этой возможности, приходится расплачиваться снижением производительности и увеличением времени выполнения.

LexTreeLinguist подходит для задач распознавания с большим словарным запасос, которые используют большие модели N-Gramm. LexTreeLinguist организует слова в Lex дерево [6], компактный способ представления больших словарей. LexTreeLinguist использует это дерево и динамически генерирует Состояния Поиска, что позволяет ему работать с очень большими словарями, используя только малый объем памяти. LexTreeLinguist поддерживает ASCII и бинарные модели языка, генерируемые CMU-Sphinx Toolkit [22].

Список использованной литературы

6. M. K. Ravishankar, Efficient algorithms for speech recognition, PhD Thesis (CMU Technical Report CS-96-143), Carnegie Mellon University, Pittsburgh, PA, 1996.
20. P. Kenny, R. Hollan, V. Gupta, M. Lenning, P. Mermelstein, and D.O’Shaugnessy, A-admissible heuristics of rapid lexical access, IEEE Transactions on Speech and Audio Processing, vol. 1, no. 1, pp. 49–59, Jan. 1993.
21. M. Mohri, Finite-state transducers in language and speech processing, Computational Linguistics, vol. 23, no. 2, pp. 269–311, 1997.
22. P. Clarkson and R. Rosenfeld, Statistical language modeling using the CMU-cambridge toolkit, in Proceedings of the 5th European Conference on Speech Communication and Technology, Rhodes, Greece, Sept. 1997.
23. S. J. Young, N. H. Russell, and J. H. S. Russell, Token passing: A simple conceptual model for connected speech recognition systems, Cambridge University Engineering Dept, UK, Tech. Rep. CUED/F-INFENG/TR38, 1989.