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

Урок 1

Шаг 8.

--------

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

mkdir hmm1 - создание директория hmm1 (команда command.com MS-DOS)

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

...

где:

config - файл конфигурации {(прилагается)},
phones10.mlf - описание файлов обучения,
train.scp - список файлов для обучения,
hmm0/macros и hmm0/hmmdefs - файлы результатов обучения предыдущего шага,
hmm1 - директорий, куда будут записываться результаты первого шага обучения (не путать с шагами данной инструкции),
monophones21 (или monophones) - список фонем,
lst1.txt - листинг для просмотра процесса обучения(на первом шаге), записывается соответственно в директорий hmm1.

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

Шаг 9.

---------

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

{первая строка -}

HParse.exe gram10 wdnet10

{Это - }преобразование грамматики gram10 во внутреннее представление wdnet10. Фактически wdnet10 - это сеть, которая задает слова и их грамматику, допустимую при распознавании. В данном случае - дискретная речь.

{следующие семь строк} - распознавание для каждого шага обучения (семь разных) -

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

где:

config - файл конфигурации {(прилагается)},
hmm1/macros и hmm1/hmmdefs - файлы результатов обучения одного шага {(конкретно, после первого шага обучения, ибо после hmm стоит цифра 1)},
recout1.mlf - результат распознавания, записывается в директорию hmm1,
test.scp - список файлов для распознавания,
wdnet10 - сеть допустимых слов и выражений (в данном случае дискретная речь),
dict10 - словарь распознавания,
monophones (или monophones21) - список фонем.

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

Шаг 10.

--------

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

mkdir results
HResults -I words_test.mlf monophones > results/output1
HResults -I words_test.mlf monophones > results/output2
HResults -I words_test.mlf monophones > results/output3
HResults -I words_test.mlf monophones > results/output4
HResults -I words_test.mlf monophones > results/output5
HResults -I words_test.mlf monophones > results/output6
HResults -I words_test.mlf monophones > results/output7

где:

recout1.mlf - результат распознавания, записанный ранее соответственно в директорий hmm1,
output1 - результат анализа распознавания, записывается соответственно в директорию results,
monophones (или monophones21) - список фонем,
words_test.mlf - файл тестовых слов.

Файл тестовых слов words_test.mlf нужно сформировать вручную:

#!MLF!#
"*/10.lab"
sil
odin
sil
dva
sil
tri
sil
chetyre
sil
pat
sil
shest
sil
sem
sil
vosem
sil
devat
sil
desat
sil
.

Сначала, после строки #!MLF!#, нужно записать название файла, в котором записаны слова на распознавание - "*/10.lab", потом - последовательность произнесенных слов в файле 10.wav, с паузами между ними.

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

Например, в файле output1 записано:

====================== HTK Results Analysis =======================
Date: Mon Jan 10 13:58:13 2011
Ref : words_test.mlf
Rec : hmm1/recout1.mlf
------------------------ Overall Results --------------------------
SENT: %Correct=0.00 [H=0, S=1, N=1]
WORD: %Corr=95.24, Acc=95.24 [H=20, D=0, S=1, I=0, N=21]
===================================================================

Для информации о результатах распознавания нужны две последние строки.

SENT: %Correct=0.00 [H=0, S=1, N=1] - отображает надежность распознавания всего предложения в целом, от первого слова до последнего в целом с паузами между ними. Здесь %Correct=0.00 - процент правильно распознанных предложений; N=1 - количество предложений; H=0 - количество правильно распознанных предложений; S=1 - количество замен предложений(неправильно распознано).

WORD: %Corr=95.24, Acc=95.24 [H=20, D=0, S=1, I=0, N=21] - отображает надежность распознавания отдельных слов в предложении, от первого слова до последнего, учитывая паузы между ними как слова. Здесь %Corr=95.24 - процент правильно распознанных слов, представляет величину H/N ; N=21 - количество слов в предложении (сколько должно быть, а не сколько получилось); H=20 - количество правильно распознанных слов в предложении; D=0 - количество пропущенных слов при распознавании; S=1 - количество замен слов(неправильно распознано); I=0 - количество вставленных слов, которых нет в предложении.

С данной информацией необходимо обращаться осторожно. Пользователя интересует, прежде всего, правильное распознавание именно произнесенных им слов, а не слов вместе с паузами как словами. Запись WORD: %Corr=95.24 учитывает и правильно распознанные паузы, о чем следует помнить. Если необходимо знать надежность распознавания именно произнесенных слов, то в процессе вычисления процента нужно не учитывать паузы. В связи с этим, возможно, необходимо дополнительно обращаться за информацией к файлу recout1.mlf.

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

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

Здесь была представлена обучающая выборка (ОВ) в десять слов. Распознавались слова из этого же списка. Совершенно очевидно, что ОВ можно увеличивать многократно. Следствием этого будет возрастание объема словаря, слова из которого могут быть распознаны. Необходимо лишь повторить все действия урока 1 для всех этих изменений. Это во-первых. Во-вторых. Если наговорить некую немалую ОВ (выбор этой ОВ предоставляется пользователю на его усмотрение), провести обучение для этой ОВ согласно уроку 1, то потом можно распознавать слова из словаря, который будет содержать слов больше, чем в ОВ. Для этого нужно только расширить словарь dict и грамматику gram дополнительными словами. Тогда в командах на шаге 8 необходимо использовать dict и gram вместо dict10 и gram10 соответственно, monophones вместо monophones21. В этом случае желательно, чтобы ОВ содержала в своем составе все фонемы языка, иначе могут возникнуть проблемы при работе с фонемами в дополнительных словах, которых нет в ОВ! Повторение фонем в словах ОВ должно пойти только лишь на пользу (с этим - экспериментируйте!).

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

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

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

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