Оглавление.

Введение. Общие вопросы компьютерного распознавания и порождения речи.

1. Программирование звука в Windows.

2. Основы цифровой обработки звуковых сигналов.

3. Определение параметров речевого сигнала.

4. Алгоритмы распознавания.

5. Использование Microsoft Speech API 5.1 для синтеза и распознавания речи.

6. Использование Microsoft Speech API 4.0 для синтеза речи.

Ссылки.

Об авторе.

Компьютерное распознавание и порождение речи

Глава 4. Алгоритмы распознавания.

Назад В начало главы Дальше

4.2. Применение скрытых марковских моделей для распознавания речи.

Скрытой Марковской моделью (СММ) называется модель состоящая из N состояний, в каждом из которых некоторая система может принимать одно из M значений какого-либо параметра. Вероятности переходов между состояниями задается матрицей вероятностей A={aij}, где aij – вероятность перехода из i-го в j-е состояние. Вероятности выпадения каждого из M значений параметра в каждом из N состояний задается вектором B={bj(k)}, где bj(k) – вероятность выпадения k-го значения параметра в j-м состоянии. Вероятность наступления начального состояния задается вектором π={πi}, где πi – вероятность того, что в начальный момент система окажется в i-м состоянии.
Таким образом, скрытой марковской моделью называется тройка λ={A,B,π}. Использование скрытых марковских моделей для распознавания речи основано на двух приближениях:

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

2) Вероятность каждого фрагмента зависит только от текущего состояния системы и не зависит от предыдущих состояний.

Модель называется «скрытой», так как нас, как правило, не интересует конкретная последовательность состояний, в которой пребывает система. Мы либо подаем на вход системы последовательности типа O={o1,o2,…o?} - где каждое oi – значение параметра (одно из M), принимаемое в i-й момент времени, а на выходе ожидаем модель ?={A,B,?}с максимальной вероятностью генерирующую такую последовательность, - либо наоборот подаем на вход параметры модели и генерируем порождаемую ей последовательность. И в том и другом случае система выступает как “черный ящик”, в котором скрыты действительные состояния системы, а связанная с ней модель заслуживает названия скрытой.

Если последние высказывания несколько запутали вас, то не оттаивайтесь: дальше все должно проясниться.

Относительно скрытых Марковских моделей решаются как правило три задачи:

Задача 1.

Дана последовательность наблюдений O={o1,o2,…oτ} и модель λ={A,B,π}. Необходимо вычислить вероятность появления указанной последовательности для данной модели.
То есть решение этой задачи непосредственно связано с задачей распознавания речи. Если, например, состояния модели соответствуют отрезкам времени, в которые снимаются параметры речевого сигнала, и в каждом из этих состояний (отрезков) некие параметры речевого сигнала принимают некоторые значения, которые мы представляем в виде O={o1,o2,…oτ}, то решив задачу отыскания вероятности появления этой последовательности для каждой из имеющихся у нас моделей λ={A,B,π}, соответствующих, например, фонемам (звукам речи) или словам, мы можем выбрать ту из фонем (слов), которая(ое) в наибольшей степени соответствует исходному отрезку речевого сигнала. А это и значит распознать речевую единицу (фонему или слово).

Задача 2.

Дана последовательность наблюдений O={o1,o2,…oτ} и модель λ={A,B,π}. Необходимо выбрать последовательность состояний Q= {q1,q2,…qτ}, которая с наибольшей вероятностью порождает указанную последовательность.
Данные, полученные при решении этой задачи используются для изучения поведения полученной модели.

Задача 3.

Дана последовательность наблюдений O={o1,o2,…oτ} и модель λ={A,B,π}. Необходимо подобрать параметры модели так, чтобы максимизировать вероятность данной последовательности наблюдений.
Это в чистом виде задача обучения модели на наборах входных данных, для того чтобы в дальнейшем использовать эту модель для решения задачи 1, то есть распознавания. То есть опять же состояния модели соответствуют отрезкам времени ( как правило 10-30 мс), в которых снимаются значения параметра речевого сигнала, а принимаемые на некотором временном отрезке значения параметра и образуют последовательность наблюдений O.

Рассмотрим алгоритмы решения указанных задач.

Итак,

Решение задачи 1, распознавание.


Наиболее простое решение состоит в том, чтобы посчитать вероятность появления последовательности наблюдений для каждой возможной последовательности состояний модели, а затем сложить эти вероятности. Пусть Q={Q1,Q2,…Qs}- множество всех возможных последовательностей состояний той же длины, что последовательность O. Их число будет равно S=Nτ -1, где N – число состояний, τ – длина последовательности. Пусть i-я последовательность Qi представляет ряд состояний {qi1,qi2,…,q}. Тогда для i-й последовательности состояний вероятность появления последовательности наблюдений O равна:

ττ
P(O|Qi,λ)=P(oj|qij,λ)= bqij(oj)
j=1j=1

Вероятность же появления самой i-й последовательности состояний равна

τ
P(Qi|λ)=πqi1a[qi,j-1,qi,j]
j=2

По определению скрытой Марковской модели вероятности наблюдения в каждом из состояний зависит только от самого состояния и не зависит от предыдущих состояний. Поэтому вероятность появления указанной последовательности наблюдений O для нашей модели можно рассчитать так:

Nτ-1Nτ-1τ
P(O|λ)=P(O|Qi,λ) P(Qi|λ)= qi1 bqi1(o1) a[qi,j-1,qi,j] bqij(oj))
i=1i=1j=2

Очевидно, что нам потребуется (2?-1) N? умножений и N? -1 сложений, что уже для N=10 состояний и длины последовательности наблюдений ?=10 дает число вычислений, равное 19*1010+1010-1=2*1011-1. Это очень много.
К счастью, существуют более эффективные алгоритмы решения этой задачи. Наиболее известны два – алгоритм прямого хода и алгоритм обратного хода.


Алгоритм прямого хода.

Вводится переменная ?t(i) – вероятность того, что к моменту времени t система будет находиться в i-м состоянии, а последовательность порожденных ею до этого момента наблюдений равна о1,о2,…,ot.
Алгоритм следующий.

1 шаг. Для всех i от 1 до N

α0(i)=πi bi(o1)

2 шаг. Для всех t от 1 до ? и для всех j от 1 до N

N
αt(j) =[ αt-1(i)aij] bj(ot)
i=1

3 шаг.
N
P(O|λ)=αt(i)
i=1


Алгоритм обратного хода.

Вводится переменная τt(i) – вероятность того, что к моменту времени t система будет находиться в i-м состоянии, а последовательность порожденных ею после этого наблюдений равна оt+1, оt+2,…oτ-1,oτ
Алгоритм следующий.

1 шаг. Для всех i от 1 до N

βτ(i)=1

2 шаг. Для всех t, идущих в обратном порядке от τ-1 до 1 и для всех i от 1 до N

N
βτ(i)=aij bj(ot+1) βτ+1(j)
j=1

3 шаг.

N
P(O|λ)= πi bi(o1) β1(i)
i=1

Для осуществления распознавания на основе скрытых моделей Маркова необходимо построить кодовую книгу, содержащую множество эталонных наборов для характерных признаков речи (например, коэффициентов линейного предсказания, распределения энергии по частотам и т.д.). Для этого записываются эталонные речевые фрагменты, разбиваются на элементарные составляющие (отрезки речи, в течении которых можно считать параметры речевого сигнала постоянными) и для каждого из них вычисляются значения характерных признаков. Одной элементарной составляющей будет соответствовать один набор признаков из множества наборов признаков словаря.

На рисунке каждая запись кодовой книги относится к одному набору, каждое поле записи – содержит значение одного признака.

Построив кодовую книгу, мы должны настроить модель распознавания. Одна скрытая модель Маркова ?={A,B,?}ставится в соответствие некоторой распознаваемой единице речи, как правило, слову.

Фрагмент речи разбивается на отрезки, в течении которых параметры речи можно считать постоянными. Для каждого отрезка вычисляются характерные признаки и подбирается запись кодовой книги с наиболее подходящими характеристиками. Номера этих записей и образуют последовательность наблюдений O={o1,o2,…o?} для модели Маркова. Каждому слову словаря соответствует одна такая последовательность. Далее A – матрица вероятностей переходов из одного минимального отрезка речи (номера записи кодовой книги) в другой минимальный отрезок речи (номер записи кодовой книги). В – вероятности выпадения в каждом состоянии конкретного номера кодовой книги. В нашем случае ?i=1 при i=0, ?i=0 при i>0.

На этапе настройки моделей Маркова мы применяем алгоритм Баума-Уэлча для имеющегося словаря и сопоставления каждому из его слов матрицы A и B.

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


Распознавание речи. Обработка текстов на естественном языке.
Hosted by uCoz