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

Урок 3

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

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

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

Шаг 5.

----------

В редакторе скопировать monophones в monophones_num.

В monophones_num через пробел поставить число актуальных состояний для каждой фонемы (рекомендовано 3 (три)):

а 3
д' 3
и+ 3
н 3
д 3
в 3
а+ 3
т 3
р' 3
ч' 3
и 3
ы+ 3
э 3
п' 3
т' 3
ш 3
э+ 3
с' 3
м' 3
о+ 3
ь 3
в' 3
ъ 3
ц 3
р 3
ы 3
с 3
м 3
к 3
з' 3
sil 3

Шаг 6.

----------

Создать hmmdefs определений HMM для фонем, запустив файл m.bat, который содержит командную строку:

make_hmmdefs.exe proto monophones_num hmmdefs

Входные файлы:

proto - прототип определений HMM (модели фонем);

monophones_num - список фонем с числом состояний.

Выходной файл:

hmmdefs - определения HMM для фонем.

В файле hmmdefs будут находиться определения HMM для тех фонем, которые встречаются в обучающей выборке!

Создать директорию hmm0, переместить hmmdefs в hmm0.

Шаг 7.

----------

Отредактировать файл gram так, чтобы распознавались эти самые наши числа.

Файл gram будет содержать запись:

$wrd =
оди+н |
два+ |
три+ |
четы+ре |
пя+ть |
ше+сть |
се+мь |
во+семь |
де+вять |
де+сять |
оди+ннадцать |
двена+дцать |
трина+дцать |
четы+рнадцать |
пятна+дцать |
шестна+дцать |
семна+дцать |
восемна+дцать |
девятна+дцать |
два+дцать |
три+дцать |
со+рок |
пятьдеся+т |
шестьдеся+т |
се+мьдесят |
во+семьдесят |
девяно+сто |
сто+ |
две+сти |
три+ста |
четы+реста |
пятьсо+т |
шестьсо+т |
семьсо+т |
восемьсо+т |
девятьсо+т ;
( sil $wrd sil )

Эту запись необходимо отредактировать следующим образом.

Запись

$wrd =

в первой строке заменить на

$dig =

Строку с записью

девятна+дцать |
заменить на
девятна+дцать ;
$dig =

Строку с записью

сто+ |

заменить на

сто+ ;

$dig =

Последнюю строку

( sil $wrd sil )

необходимо заменить на

( sil )

Угловые скобки <>, как и ранее, означают возможное повторение того, что находится внутри их. Значок | означает "или". Квадратные скобки [] означают, что их содержимое может присутствовать, а может и нет. Окончательно отредактированный файл gram будет содержать запись:

$dig =
оди+н |
два+ |
три+ |
четы+ре |
пя+ть |
ше+сть |
се+мь |
во+семь |
де+вять |
де+сять |
оди+ннадцать |
двена+дцать |
трина+дцать |
четы+рнадцать |
пятна+дцать |
шестна+дцать |
семна+дцать |
восемна+дцать |
девятна+дцать ;
$des =
два+дцать |
три+дцать |
со+рок |
пятьдеся+т |
шестьдеся+т |
се+мьдесят |
во+семьдесят |
девяно+сто ;
$sot =
сто+ |
две+сти |
три+ста |
четы+реста |
пятьсо+т |
шестьсо+т |
семьсо+т |
восемьсо+т |
девятьсо+т ;

( sil )

Таким образом, данная грамматика будет задавать распознавание словосочетаний - чисел от 1 до 999.

Подготовить сеть слов wdnet для распознавания, запустив файл step6.bat (прилагается), который содержит командную строку:

HParse.exe gram wdnet

Шаг 8.

----------

Скопировать phonems.ml в phones.mlf (описание файлов обучения).

Откорректировать названия файлов, в которых находятся реализации слов из обучающей выборки:

#!MLF!#
"wavs/t0001.lab"
sil
а
д'
и+
н
sil
.

...
"wavs/t0010.lab"
sil
д'
э+
с'
ь
т'
sil
.

"wavs/v0001.lab"
sil
а
д'
и+
н
sil
.
...
"wavs/v0010.lab"
sil
д'
э+
с'
ь
т'
sil
.
"wavs/v0011.lab"
sil
а
д'
и+
н
ъ
ц
ъ
т'
sil
.
...
"wavs/v0019.lab"
sil
д'
ь
в'
и
т
н
а+
ц
ъ
т'
sil
.
"wavs/v0020.lab"
sil
д
в
а+
ц
ъ
т'
sil
.
...
"wavs/v0027.lab"
sil
д'
ь
в'
и
н
о+
с
т
а
sil
.
"wavs/v0028.lab"
sil
с
т
о+
sil
.
.
"wavs/v0036.lab"
sil
д'
ь
в'
и
т'
с
о+
т
sil
.