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

Урок 1

Шаг 4.

--------

Вручную сформировать сценарий файлов обучения, {записать в файл} train.scp:

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/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

Формируется список файлов для обучения. Видно, что каждое слово будет иметь два произнесения - в файлах v000*.wav и t000*.wav. {Файлы v0001.wav-v0010.wav,t0001.wav-t0010.wav должны быть записаны в поддиректорию wavs/, исключительно для удобства созерцания. Естественно, по поводу понятия "удобство созерцания" пользователь может иметь свою точку зрения. } Вручную сформировать сценарий файлов тестирования, {записать в файл} test.scp:

wavs/10.wav

Здесь в одном файле записаны все тестовые{(предназначенные к распознаванию)} слова. {Файл 10.wav также должен быть записан в поддиректорию wavs/}


Шаг 5.

--------

(ПРЕЖДЕ, ЧЕМ ВЫПОЛНЯТЬ, ПРОЧИТАЙТЕ ДАННЫЙ ШАГ ДО КОНЦА!!!!!)

Вручную сформировать описание файлов обучения, {записать в файл} phones10.mlf:

#!MLF!#

"*/v0001.lab"

sil
A
D'
I1
N
sil
.

"*/v0002.lab"
...
...
"*/v0010.lab"
sil
D'
E1
S'
A
T'
sil
.

"*/t0001.lab"
sil
A
D'
I1
N
sil
.
"*/t0002.lab"
...
...
"*/t0010.lab"
sil
D'
E1
S'
A
T'
sil
.

Для каждого файла из обучающей выборки составляется фонемная транскрипция, причем желательно именно то, что произносилось. В начале, в кавычках, указывается имя файла c расширением ".lab". Затем каждая строка содержит фонемную транскрипцию произнесенного. Транскрипция всегда начинается и заканчивается фонемой-паузой sil.

{ Однако, эту операцию можно произвести иначе. Вручную сформировать файл слов обучения words_trn.mlf:

#!MLF!#
"*/v0001.lab"
sil
odin
sil
.
"*/v0002.lab"
...
"*/v0010.lab"
sil
desat
sil
.
"*/t0001.lab"
sil
odin
sil
.
"*/t0002.lab"
sil
dva
sil
.
...
"*/t0010.lab"
sil
desat
sil
.

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

HLEd -l * -d dict10 -i phones10.mlf mkphones.led words_trn.mlf

где файл mkphones.led(прилагается, смотри содержимое данного файла) содержит запись:

EX
DE sp

Команда из файла led.bat и создаст файл phones10.mlf. }


Шаг 6.

--------

Вручную составить грамматику, {записать в файл} gram10:

$wrd =
odin |
dva |
tri |
chetyre |
pat |
shest |
sem |
vosem |
devat |
desat ;

( sil)

Это грамматика, в которой любое слово из словаря может следовать за любым через паузу.
{После ключевого слова $wrd через вертикальную черту идет перечисление слов из вашего словаря dict10, без транскрипций. $wrd обозначает слово, которое может быть произнесено. Имя может быть любое, на усмотрение пользователя,например, $main, $word и т.д. } Вертикальная черта означает выбор одного из вариантов {(одного из записанных слов)}. Это так называемая дискретная речь. Угловые скобки говорят, что их содержимое может повторяться один или несколько раз. Слова должны в точности иметь то же написание, что в {файле} dict10.

Шаг 7.

--------

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

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

HCompV -C config -f 0.01 -m -S train.scp -M hmm0 proto

где:

config - файл конфигурации {(прилагается)},
train.scp - список файлов для обучения,
hmm0 - директорий, куда будут записываться результаты,
proto - прототип фонем из текущего директория.

{Результатом работы файла prep.bat будут два созданных файла - vFloors и proto, которые будут находиться в директории hmm0.}

б) После окончания предварительного обучения необходимо вручную отредактировать результат в {директории} hmm0 (предварительно создав), а именно:

-переименовать файл vFloors {в}-> macros,

-переименовать файл proto {в}-> hmmdefs;

-в файле macros:

в начало файла macros нужно вручную вставить две следующие строки

~o
< VecSize> 39 < MFCC_0_D_A>

-в файле hmmdefs:

прототип фонемы начинается символами

~h "proto"

и заканчивается

< ENDHMM>

В редакторе нужно взять указанный участок в карман и повторить его (скопировать в файле hmmdefs) столько раз, сколько фонем в файле monophones21 (а именно, 21 раза - чтобы в результате получилось 22 прототипа (вместе с sil)). Затем нужно заменить сочетание "proto" на название фонемы из monophones21, например "A1".

Эту замену сделать для всех прототипов фонем:

A1
A
D
...
Y1
SH
sil

{ Соответственно, смотри "Шаг 3" настоящей инструкции, если пользователь будет применять файл monophones, то необходимо в файле hmmdefs сделать замену соответственно файлу monophones}.