Краткий учебный курс по HTK

Урок 3

{Распознавание сочетаний слов, задаваемых грамматиками (например, числа) }

----------------------------------------------------------------------------------------------------

{Краткая инструкция пользователя(пошаговая) в HTK }

Шаг 9.

---------

Создать список файлов для обучения - файл train.scp:

wavs/t0001.wav
wavs/t0002.wav
wavs/t0003.wav
wavs/t0004.wav
wavs/t0005.wav
wavs/t0006.wav
wavs/t0007.wav
wavs/t0008.wav
wavs/t0009.wav
wavs/t0010.wav
wavs/v0001.wav
wavs/v0002.wav
wavs/v0003.wav
wavs/v0004.wav
wavs/v0005.wav
wavs/v0006.wav
wavs/v0007.wav
wavs/v0008.wav
wavs/v0009.wav
wavs/v0010.wav
wavs/v0011.wav
wavs/v0012.wav
wavs/v0013.wav
wavs/v0014.wav
wavs/v0015.wav
wavs/v0016.wav
wavs/v0017.wav
wavs/v0018.wav
wavs/v0019.wav
wavs/v0020.wav
wavs/v0021.wav
wavs/v0022.wav
wavs/v0023.wav
wavs/v0024.wav
wavs/v0025.wav
wavs/v0026.wav
wavs/v0027.wav
wavs/v0028.wav
wavs/v0029.wav
wavs/v0030.wav
wavs/v0031.wav
wavs/v0032.wav
wavs/v0033.wav
wavs/v0034.wav
wavs/v0035.wav
wavs/v0036.wav

Шаг 10.

----------

Запустить файл trn.bat - обучение распознаванию (вычисление параметров моделей фонем)

{(файл trn.bat прилагается, смотри содержимое данного файла)} :

mkdir hmm1

HERest -T 3 -C config -t 250.0 150.0 1000.0 -I phones.mlf -S train.scp -H hmm0/hmmdefs -M hmm1 monophones >hmm1/lst1.txt

...

mkdir hmm7

HERest -T 3 -C config -t 250.0 150.0 1000.0 -I phones.mlf -S train.scp -H hmm6/hmmdefs -M hmm7 monophones >hmm7/lst7.txt

где:

config - файл конфигурации {(прилагается)},

phones.mlf - описание файлов обучения,

train.scp - список файлов для обучения,

hmm0/hmmdefs - файлы результатов обучения предыдущего шага,

hmm1 - директорий, куда будут записываться результаты первого шага обучения (не путать с шагами данной инструкции),

monophones - список фонем,

lst1.txt - листинг для просмотра процесса обучения(на первом шаге), записывается соответственно в директорий hmm1.

Обучение производится 7 раз (рекомендовано авторами, минимум два). На каждом шаге обучения используются результаты предыдущего шага.

Шаг 11.

----------

Произнести контрольную выборку (КВ) для распознавания - на Ваше усмотрение произвольную последовательность чисел от 1 до 999 (произношение чисел рассматриваем как словосочетания, между ними обязательно должна быть пауза не меньше 0.3 сек). Записать КВ в файл test.wav.

Создать список файлов для распознавания - файл test.scp:

wavs/test.wav

Шаг 12.

----------

Запустить файл tst.bat - распознавание {(файл tst.bat прилагается, смотри содержимое данного файла)} :

HVite -o ST -T 1 -l '*' -C config -a -H hmm1/hmmdefs -i hmm1/recout1.mlf -p 0.0 -s 5.0 -S test.scp -w wdnet dict.trn monophones

...

HVite -o ST -T 1 -l '*' -C config -a -H hmm7/hmmdefs -i hmm7/recout7.mlf -p 0.0 -s 5.0 -S test.scp -w wdnet dict.trn monophones

где:

config - файл конфигурации {(прилагается)},

hmm1/hmmdefs - файлы результатов обучения одного шага {(конкретно, после первого шага обучения, ибо

после hmm стоит цифра 1)},

recout1.mlf - результат распознавания, записывается в директорию hmm1,

test.scp - список файлов для распознавания,

wdnet - сеть допустимых слов и выражений (в данном случае - словосочетания),

dict.trn - словарь распознавания,

monophones - список фонем.

{Результат распознавания тестовой выборки слов (КВ) после первого шага обучения распознаванию записывается в файл recout1.mlf (файл будет находиться в директории hmm1) в виде последовательности распознанных слов после записи названия файла, если файл распознавания один, или в виде отдельных распознанных слов после записей названий файлов, если файлов распознавания несколько (смотри указания на шаге 6 урока 2). При этом паузы между словами распознаются как самостоятельные слова-паузы (смотри файл слов dict.trn). Результаты распознавания тестовой выборки слов после второго, третьего и т.д. шагов обучения распознаванию записываются в файлы recout2.mlf-recout7.mlf (файлы будут находиться соответственно в директориях hmm2-hmm7). Результаты обучения, взятые на любом шаге обучения и записанные в файле hmmdefs, могут быть использованы для дальнейшей работы по распознаванию слов. Конкретный выбор остается за пользователем, и зависеть этот выбор должен от результатов распознавания так, чтобы достигалась хорошая надежность распознавания (если не наилучшая).}

Шаг 13.

----------

Запустить файл res.bat - оценка результата распознавания (в процентах)

{(файл res.bat прилагается, смотри содержимое данного файла)} :

mkdir results

HResults -I words_test.mlf monophones hmm1/recout1.mlf > results/output1
HResults -I words_test.mlf monophones hmm2/recout2.mlf > results/output2
HResults -I words_test.mlf monophones hmm3/recout3.mlf > results/output3
HResults -I words_test.mlf monophones hmm4/recout4.mlf > results/output4
HResults -I words_test.mlf monophones hmm5/recout5.mlf > results/output5
HResults -I words_test.mlf monophones hmm6/recout6.mlf > results/output6
HResults -I words_test.mlf monophones hmm7/recout7.mlf > results/output7

где:

recout1.mlf - результат распознавания после первого шага обучения, записанный ранее соответственно в директорию hmm1,

output1 - результат анализа распознавания, записывается соответственно в директорию results,

monophones - список фонем,

words_test.mlf - файл тестовых слов (КВ).

Файл тестовых слов words_test.mlf нужно сформировать вручную. Сначала,после строки #!MLF!#, нужно записать название файла, в котором записаны слова на распознавание - "'*'/test.lab", потом - последовательность произнесенных слов в файле test.wav. Например, если в файле dict.trn последняя строка будет иметь вид:

sil [] sil ,

а последовательность произнесенных чисел

двадцать_пять сто_шесть,

то файл words_test.mlf должен содержать запись:

#!MLF!#
"'*'/test.lab"
два+дцать
пя+ть
сто+
ше+сть
.

Данный вид записи может вносить некоторую неопределенность (произнесли Вы два отдельных слова - сто и шесть, или одно словосочетание - сто шесть). Поэтому рекомендуется в файле dict.trn иметь последнюю строку такой:

sil sil

Тогда файл words_test.mlf должен содержать запись:

#!MLF!#
"'*'/test.lab"
sil
два+дцать
пя+ть
sil
сто+
ше+сть
sil
.

В качестве шаблона можно использовать файл words.ml, в котором записано:

#!MLF!#
"'*'/ValN2000.lab"
оди+н
.
"'*'/ValN2001.lab"
два+
.
...
"'*'/ValN2034.lab"
восемьсо+т
.
"'*'/ValN2035.lab"
девятьсо+т
.

Всю эту запись необходимо поменять на

#!MLF!#
"'*'/test.lab"
sil
два+дцать
пя+ть
sil
сто+
ше+сть
sil
.

или поменять только части ValN2 в названиях файлов (смотри указания на Шаге 6 урока 2).

Результаты анализа распознавания для каждого шага обучения отображаются в файлах output1-output7. Процесс расшифровки результатов анализа смотрите на Шаге 10 урока 2.

ВЫВОДЫ И НАПУТСТВИЯ.

Уважаемый пользователь!Выводы и напутствия, которые были изложены в уроке 1, совершенно уместны и в данном уроке. Вы можете, используя урок 3, распознавать свои словосочетания!

Желаем дальнейших успехов в освоении HTK!

с уважением, авторы:

1. Зам.зав.отделом "Розпізнавання та синтезу звукових образів" МННЦ ІТіС НАНУ старший научный сотрудник Пилипенко Валерий Васильевич. Светлая голова.

2. Научный сотрудник того же отдела Юхименко Александр Анатольевич. Просветленная голова.