Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.68.96] |
|
Сообщ.
#1
,
|
|
|
Для примера http://aprodeus.narod.ru/mmedia.htm , fst_htk я написал несколько скриптов для автоматизации процесса
http://reidssoft.easyforum.ru/viewtopic.php?id=30 Если надо залью архив примера. На слитной речи из тимита модель дает большое количество ошибок. Хотелось бы узнать, разобрался кто-нибудь с тренировочными скриптами Demo scripts with MGE option ? Где скачать натренированный голос? Какую версию hts_engine.exe использовать? Я пытался адаптировать скрипт для Windows, но получил только нерабочий голос на выходе. Эта тема была разделена из темы "HTK" |
Сообщ.
#2
,
|
|
|
В документации HTK, в главе 3, рассмотрен пошаговый алгоритм создания простого устройства для распознавания отдельных слов.
В свое время на основе этого материала лаборатория Киевсого политехнического университета сдела 2 учебных примера: fst_htk и second_htk. Архивы примеров доступны на сайте Продеуса. Данная методика может быть использована для распознавания отдельных слов. Для распознавания слитной речи HTK предлагает немного видоизмененную технологию обучения HTK-моделей на размеченных звуковых корпусах. Тк границы фонем отмечены метками, этот метод рассматривается как дальнейшее развитие обучения моделей в стиле раздельных слов. Ставилась цель создать учебный пример для тренировки скрытых марковских моделей на размеченной слитной речи. За основу был взят демонстрационный пример HTKDemo из HTK-samples-3.4.1, в которм все фонемы поделены на группы: C, V, L, N и тишину S. Переименование фонем, а также создание списка фонем и новых файлов меток в формате HTK достигается с помощью утилиты HLED. Итак, скопируйте и переименуйте папку исходного примера. Для запуска демонстрации удобно использовать командный файл. _#_perl_test.bat perl.exe >_log.txt runDemo.pl configs\monPlainM1S3.dcf pause Я использовал perl.exe из Denver-a, но подходит любой интерпретатор perl, например, из пакета Matlab. Лог работы записывается в файл _log.txt. monPlainM1S3.dcf - файл конфигурации. После запуск скрипта HVite выдает результаты тестирования обученной модели на тренировочном и тестовом наборах : ... Testing on the training set HVite -A -C toolconfs\hvite.conf -d hmms\hmm.2 -l test -i recout.mlf -w networks\monLattice -D -L test -t 300.0 -T 1 -p 5.0 -s 0.0 -S train.scr lists\bcpvocab lists\bcplist HTK Configuration Parameters[4] Module/Tool Parameter Value # BINARYACCFORMAT FALSE # KEEPDISTINCT FALSE # SAVEGLOBOPTS TRUE # TARGETKIND MFCC_E_D Read 5 physical / 5 logical HMMs Read lattice with 8 nodes / 16 arcs Created network with 15 nodes / 23 links File: data\train\tr1.mfc S C V C V C C V C C V C N C V V C L V C C L V L L V C V L S == [303 frames] -58.4550 [Ac=-17866.9 LM=155.0] (Act=12.9) File: data\train\tr2.mfc S L V N C L V C V L C S V C C V C L V N V N C L C S C C C V S N C V N V C V C S C S == [381 frames] -57.9612 [Ac=-22298.2 LM=215.0] (Act=13.0) File: data\train\tr3.mfc S C C V C C V N C V C V C C V N V C C L V C V C C V C L S == [266 frames] -57.8991 [Ac=-15551.2 LM=150.0] (Act=12.9) File: data\train\tr4.mfc S V C V N V V C C V V C V C V C C C N V N V C V C S == [241 frames] -58.2675 [Ac=-14177.5 LM=135.0] (Act=12.9) File: data\train\tr5.mfc S L L L L V C L C L V N N L V C V C V S S == [214 frames] -56.2733 [Ac=-12152.5 LM=110.0] (Act=12.9) File: data\train\tr6.mfc S C V C L V C S C V C C V S C N C N L C V C S == [212 frames] -57.8863 [Ac=-12391.9 LM=120.0] (Act=12.9) File: data\train\tr7.mfc S C V C V N C C C L V C V C V C S == [194 frames] -56.5175 [Ac=-11054.4 LM=90.0] (Act=12.9) ... Для того, чтобы скрипт мог обучать модели на исходном наборе фонем, необходимо разрешить использование HLed в файле конфигурации monPlainM1S3.dcf и внести изменения в файл edfiles/edlabs.led. Исходный файл конфигурации monPlainM1S3.dcf заканчивается строками: <BEGINtool_steps> HCopy: n HList: n HQuant: n HLEd: n HInit: y HRest: y HERest: y HSmooth: n HVite: y <ENDtool_steps>: <ENDtest_config_file>: Где символ n после названия утилиты запрещает использование утилиты, а символ y - разрешает. Не лишним будет разрешить создание нового обучающего набора из параметрических файлов с помощью утилиты HCopy Поэтому меняете HLEd: n на HLEd: y, HCopy: n на HCopy: н и получаете следующее: <BEGINtool_steps> HCopy: y HList: n HQuant: n HLEd: y HInit: y HRest: y HERest: y HSmooth: n HVite: y <ENDtool_steps>: <ENDtest_config_file>: После перенаправления лога работы в файл некоторые сообщения perl не выводятся на экран, поэтому после запуска нажмите клавиши y и Enter, отключите перенаправление в файл: perl.exe runDemo.pl configs\monPlainM1S3.dcf pause или закоментируйте (#) соответствующие строки в скрипте runDemo.pl : #*************************** TRAINING ************************ if($configParams{"Context"} =~ /^[tTlLrR]/){ print "Has the appropriate monophone system been generated Y/N?:"; chop($ans = <STDIN>); if ($ans =~ /^[yY]/){ }else{ $hmmList=$monHmmList; ... Теперь исправьте файл HTKDemo\edfiles\edlabs.led S D q R V iy ih eh ae ix ax ah ax-h uw uh ao aa ey ay oy aw ow ux R L l el r y w er axr R N m n en ng em nx eng R C ch j jh dh b d dx g p t k z zh v f th s sh hh hv pcl tcl kcl qcl bcl dcl gcl epi R S sil h# #h pau S - сортировка фонем, D - удаление фонем, R - переименование фонем. D q - удалить фонему q из списка фонем. R V iy ih eh ae ix ax ah ax-h uw uh ao aa ey ay oy aw ow ux - переименовать фонемы из группы, те заменить имя каждой перечисленной фонемы на символ V Прежде чем менять файл, следует сделать некоторые допущения: S лучше заменить на SIL, тк S совпадает с именем фонемы s. Группы V L N C лучше переименовать, например, в V1 L1 N1 C1, тк название групп совпадает с названием соответствующих фонем v, l, n, c. Утилита не различает прописные и строчные буквы и выдает ошибку. Можете попробовать оставить как есть. Далее для успешного обучения каждая фонема должна встречаться в обучающем наборе не менее 2-4 раз, а еще лучше 2 раза в одном предложении, иначе HInit выдаст, ошибку (мало данных в обучающем наборе). Поэтому предлагаю добавлять фонемы по одной. Начните с sh, тк данная фонема встречается часто и с нее начинается первое тренировочное предложение. С учетом допущений файл примет следующий вид (sh удалено из C1): S D q R V1 iy ih eh ae ix ax ah ax-h uw uh ao aa ey ay oy aw ow ux R L1 l el r y w er axr R N1 m n en ng em nx eng R C1 ch j jh dh b d dx g p t k z zh v f th s hh hv pcl tcl kcl qcl bcl dcl gcl epi R SIL sil h# #h pau Теперь необходимо поменять файл грамматики networks\monNetwork и сгенерировать новый файл решетки networks\monLattice, а также внести изменения в файл словаря lists\bcpvocab. Новый networks\monNetwork: $phn = V1 | C1 | L1 | N1 | SIL | sh; (<$phn>) Генерация нового файла решетки networks\monLattice. Можно скопировать утилиту HParse.exe в каталог networks и выполнить команду HParse monNetwork monLattice Новый файл решетки: VERSION=1.0 N=9 L=19 I=0 W=sh I=1 W=!NULL I=2 W=SIL I=3 W=N1 I=4 W=L1 I=5 W=C1 I=6 W=V1 I=7 W=!NULL I=8 W=!NULL J=0 S=1 E=0 J=1 S=8 E=0 J=2 S=0 E=1 J=3 S=2 E=1 J=4 S=3 E=1 J=5 S=4 E=1 J=6 S=5 E=1 J=7 S=6 E=1 J=8 S=1 E=2 J=9 S=8 E=2 J=10 S=1 E=3 J=11 S=8 E=3 J=12 S=1 E=4 J=13 S=8 E=4 J=14 S=1 E=5 J=15 S=8 E=5 J=16 S=1 E=6 J=17 S=8 E=6 J=18 S=1 E=7 Еще можно скопировать эту утилиту в корень демонстрации и добавить новую строку в скрипт в раздел TRAINING: #*************************** TRAINING ************************ system("HParse networks/monNetwork networks/monLattice"); Новый файл lists\bcpvocab : SIL SIL C1 C1 V1 V1 N1 N1 L1 L1 sh sh Второй ряд в соваре должен совпадать с набором фонем из networks\monNetwork Если все сделано правильно, то HVite выдаст следующий результат: Testing on the training set HVite -A -C toolconfs\hvite.conf -d hmms\hmm.2 -l test -i recout.mlf -w networks\monLattice -D -L test -t 300.0 -T 1 -p 5.0 -s 0.0 -S train.scr lists\bcpvocab lists\bcplist HTK Configuration Parameters[4] Module/Tool Parameter Value # BINARYACCFORMAT FALSE # KEEPDISTINCT FALSE # SAVEGLOBOPTS TRUE # TARGETKIND MFCC_E_D Read 6 physical / 6 logical HMMs Read lattice with 9 nodes / 19 arcs Created network with 17 nodes / 27 links File: data\train\tr1.mfc SIL sh V1 C1 V1 C1 C1 V1 C1 C1 V1 L1 N1 C1 N1 C1 V1 C1 L1 V1 sh L1 L1 L1 V1 V1 L1 SIL == [303 frames] -57.8676 [Ac=-17678.9 LM=145.0] (Act=14.9) File: data\train\tr2.mfc SIL L1 V1 N1 C1 L1 V1 C1 V1 L1 C1 SIL V1 C1 C1 V1 C1 L1 V1 N1 V1 N1 C1 L1 C1 C1 C1 C1 V1 SIL N1 C1 V1 N1 V1 C1 V1 C1 SIL C1 SIL == [381 frames] -57.8051 [Ac=-22233.8 LM=210.0] (Act=15.0) File: data\train\tr3.mfc SIL C1 C1 V1 C1 C1 V1 N1 C1 V1 C1 V1 C1 V1 N1 V1 C1 C1 V1 V1 C1 V1 C1 C1 V1 C1 L1 SIL == [266 frames] -57.7187 [Ac=-15498.2 LM=145.0] (Act=14.9) File: data\train\tr4.mfc SIL V1 C1 V1 N1 V1 V1 C1 C1 V1 C1 V1 C1 C1 V1 C1 C1 C1 N1 V1 N1 V1 C1 C1 V1 C1 SIL == [241 frames] -58.2659 [Ac=-14182.1 LM=140.0] (Act=14.9) File: data\train\tr5.mfc SIL L1 L1 L1 L1 V1 C1 L1 C1 L1 V1 N1 N1 L1 V1 C1 V1 C1 V1 SIL SIL == [214 frames] -55.9375 [Ac=-12080.6 LM=110.0] (Act=14.9) File: data\train\tr6.mfc SIL sh V1 C1 V1 C1 SIL C1 V1 C1 C1 V1 C1 C1 N1 C1 N1 L1 C1 V1 C1 SIL == [212 frames] -57.3431 [Ac=-12271.7 LM=115.0] (Act=14.9) File: data\train\tr7.mfc SIL C1 V1 sh V1 N1 C1 C1 C1 V1 C1 V1 C1 C1 V1 C1 SIL == [194 frames] -55.8489 [Ac=-10924.7 LM=90.0] (Act=14.9) Аналогично в список моделей добавляются остальные фонемы. Далее необходимо склеить некоторые фонемы TIMIT (dcl d -> d и тд). На данный момент заменены практически все фонемы, кроме y, b, th и некоторых других. Пока модель выдает очень близкий, но не точный результат. Также не работает распознавание слова по полученному набору фонем, хотя это слово добавлено в словарь и в грамматику. Окончательный вариант учебного примера будет готов не скоро. Прикреплённый файлHTKDemo_upd.rar (74,34 Кбайт, скачиваний: 151) Добавлено Часть лога работы после всех изменений: Testing on the training set HVite -A -C toolconfs\hvite.conf -d hmms\hmm.2 -l test -i recout.mlf -w networks\monLattice -D -L test -t 300.0 -T 1 -p 5.0 -s 0.0 -S train.scr lists\bcpvocab lists\bcplist HTK Configuration Parameters[4] Module/Tool Parameter Value # BINARYACCFORMAT FALSE # KEEPDISTINCT FALSE # SAVEGLOBOPTS TRUE # TARGETKIND MFCC_E_D Read 30 physical / 30 logical HMMs Read lattice with 33 nodes / 91 arcs Created network with 66 nodes / 124 links File: data\train\tr1.mfc SIL d sh iy hh ae d C1 iy d aa r k s C1 uw t C1 n g r iy s C1 w aa sh w ao L1 ao l L1 iy iy L1 SIL == [303 frames] -53.3211 [Ac=-16346.3 LM=190.0] (Act=59.1) File: data\train\tr2.mfc SIL w ay n g l ae s iy l z SIL V1 t C1 iy f V1 n d ao n C1 V1 t SIL hh ay iy n SIL n s V1 m ay hh ay t s SIL == [381 frames] -53.9372 [Ac=-20760.1 LM=210.0] (Act=58.9) File: data\train\tr3.mfc SIL C1 k aa r t V1 n f iy d C1 iy z t iy m V1 s k r ae t ax t ae d p V1 l SIL == [266 frames] -54.4079 [Ac=-14632.5 LM=160.0] (Act=59.4) File: data\train\tr4.mfc SIL iy v iy n ay l k ey C1 l iy g iy t d N1 V1 n d ey d C1 l uw z SIL == [241 frames] -53.4191 [Ac=-13014.0 LM=140.0] (Act=59.5) File: data\train\tr5.mfc SIL ao l d V1 ao w ey z ax l V1 n w iy s ax v ay v SIL == [214 frames] -52.3571 [Ac=-11314.4 LM=110.0] (Act=59.3) File: data\train\tr6.mfc SIL sh iy d C1 L1 ae s C1 iy k ae p t N1 s C1 m ao l z uw z SIL == [212 frames] -53.2821 [Ac=-11420.8 LM=125.0] (Act=57.6) File: data\train\tr7.mfc SIL p iy sh ao N1 C1 s k ao t f iy d C1 ao V1 iy s SIL == [194 frames] -52.4931 [Ac=-10288.7 LM=105.0] (Act=58.1) HTK Configuration Parameters[4] Module/Tool Parameter Value # BINARYACCFORMAT FALSE KEEPDISTINCT FALSE SAVEGLOBOPTS TRUE TARGETKIND MFCC_E_D HResults -A -s -L labels\bcplabs\mon lists\bcplist recout.mlf ====================== HTK Results Analysis ======================= Date: Wed Sep 30 10:32:45 2015 Ref : labels/bcplabs/mon Rec : recout.mlf ------------------------ Overall Results -------------------------- SENT: %Correct=0.00 [H=0, S=7, N=7] WORD: %Corr=87.06, Acc=82.09 [H=175, D=10, S=16, I=10, N=201] =================================================================== Testing on the test set HVite -A -C toolconfs\hvite.conf -d hmms\hmm.2 -l test -i recout.mlf -w networks\monLattice -D -L test -t 300.0 -T 1 -p 5.0 -s 0.0 -S test.scr lists\bcpvocab lists\bcplist HTK Configuration Parameters[4] Module/Tool Parameter Value # BINARYACCFORMAT FALSE # KEEPDISTINCT FALSE # SAVEGLOBOPTS TRUE # TARGETKIND MFCC_E_D Read 30 physical / 30 logical HMMs Read lattice with 33 nodes / 91 arcs Created network with 66 nodes / 124 links File: data\test\te1.mfc SIL C1 V1 n V1 ae s t d iy t iy t t k ae iy n hh ao l iy L1 ae ao ae t g l ay iy k t ae V1 SIL t SIL == [246 frames] -58.8445 [Ac=-14670.8 LM=195.0] (Act=60.0) File: data\test\te2.mfc t SIL p w l d iy t aa ay t C1 iy iy n C1 n L1 iy l w iy iy t iy SIL SIL C1 iy iy ae t s iy d t k r iy k l iy t == [278 frames] -58.6436 [Ac=-16522.9 LM=220.0] (Act=61.2) File: data\test\te3.mfc SIL k ao V1 z C1 t L1 SIL k r iy z V1 l d s C1 ao ao SIL C1 V1 n iy k l z t k ao ao iy s iy t t hh ay n C1 iy iy z C1 n d r iy z C1 ao m ao SIL t k SIL == [418 frames] -58.3783 [Ac=-24697.1 LM=295.0] (Act=59.7) HTK Configuration Parameters[4] Module/Tool Parameter Value # BINARYACCFORMAT FALSE KEEPDISTINCT FALSE SAVEGLOBOPTS TRUE TARGETKIND MFCC_E_D HResults -A -s -L labels\bcplabs\mon lists\bcplist recout.mlf ====================== HTK Results Analysis ======================= Date: Wed Sep 30 10:32:45 2015 Ref : labels/bcplabs/mon Rec : recout.mlf ------------------------ Overall Results -------------------------- SENT: %Correct=0.00 [H=0, S=3, N=3] WORD: %Corr=53.85, Acc=26.50 [H=63, D=10, S=44, I=32, N=117] =================================================================== |
Сообщ.
#3
,
|
|
|
tr1
She had your dark suit in greasy wash water all year. (sa1) TIMIT, из allphonelist.txt h# sh iy hv ae dcl d y er dcl d aa r kcl k s uw dx ih ng gcl g r iy s iy w aa sh epi w aa dx er q ao l y iy axr h# в tr1.phn метки из демо немного отличаются. HTK, после транскибизации по словарю (от Сфинкса) SIL sh iy hh ae d y ao r d aa r k s uw t ih n g r iy s iy w aa sh w ao t er ao l y ih r |
Сообщ.
#4
,
|
|
|
Теперь можно проверить тренировочный скрипт на размеченных wav-файлах. Для этой цели подойдет любая демонстрационная база, например,
HTS-demo_CMU-ARCTIC-SLT_STRAIGHT. Ссылка на архив https://www.sendspace.com/file/3ta6bd. Файлы граматики monNetwork, скрипт для hled , файл конфигурации hcopy_my.conf надо скопировать в соответст. папки. Файл инструкции. В папке 10 переименованных wav-файлов из базы HTS-demo_CMU-ARCTIC-SLT_STRAIGHT и 10 файлов меток. 7 тренировочных файлов и три проверочных файла. Для простоты обучающие файлы получены копировнием 3 первых тренировочных. z.bat исп-ся для визуального отображения пофонемной сегментации файла. HSLab.exe -F WAV tr1.adc pause HSLab.exe автоматически подхватывает одноименные файлы меток с расширением .lab . Проверка меток потребовалось после тренировки и проверки, тк программа выдала результат на 100% далекий от ожидаемого. Файлы меток правильные. --- Причина - неправильные файлы *.mfc, полученные из обучающих файлов с помощью утилиты hcopy Для их получения исп-ся командный файл _##_hcopy.bat. Файл конигурации для этой утилиты из каталога toolconf SOURCEKIND = WAVEFORM SOURCEFORMAT = WAV SOURCERATE = 625 ZMEANSOURCE = FALSE TARGETKIND = MFCC_E TARGETFORMAT = HTK TARGETRATE = 100000 ... Сразу вызвал подозрение параметр SOURCERATE = 625. В TIMIT частота дискретизации звуковых файлов 16000 Гц, параметрические вектора снимаются на интервале 25,6 мсек. 16000/25,6 ~ 625. Более подробно назначение этого параметра расписано в документации HTK. В arctic_slt частота дискретизации равна 48000 Гц. После деления на 25,6 получается 1875, на 25 - 1920 После подстановки SOURCERATE = 1920 получился неудовлетворительный результат. Остается непроверенный вариант с 1875 В итоге рабочий файл конфигурации выглядит так(параметр закоментирован): SOURCEKIND = WAVEFORM SOURCEFORMAT = WAV #SOURCERATE = 625 ZMEANSOURCE = FALSE TARGETKIND = MFCC_E TARGETFORMAT = HTK TARGETRATE = 100000 Дальнейшее улучшение качества распознавания связано с установкой парметра TARGETKIND = MFCC_0_D_A. |
Сообщ.
#5
,
|
|
|
В архиве HTKDemo_upd.rar отсутсвует файл edlabs.led
[attach=47654]S D q #D epi ME b bcl b ME d dcl d ME t tcl t ME k kcl k ME g gcl g ME p pcl p R iy ix R n ng R t dx R ao er R hh hv R ih ax-h R d dh R p pcl R t tcl R d dcl #R r axr R r er R V1 eh ix ah uh oy aw ow ux R L1 el y axr R N1 en em nx eng R C1 ch j jh b zh th epi R SIL sil h# #h pau[/attach] Прикреплённый файлedlabs.rar (287 байт, скачиваний: 115) |
Сообщ.
#6
,
|
|
|
Данную тему могут прочитать не только аспиранты и люди с высшим образованием, но и учащиеся ср. школ.
Замена параметра TARGETKIND = MFCC_E на другой, например, TARGETKIND = MFCC_0_D_A Согласно документации в последнем виде кодировки размер вектора 39 параметров (13+13+13). Потребуется заменить этот параметр в некоторых файлах каталогов HTKDemo\protoconfs и HTKDemo\toolconfs Сначала следует разобраться с файлом прототипа модели. Чтобы быстро определить, какой файл используется, достаточно переместить все файлы прототипа во временный каталог и запустить скрипт. После запуска скрипт выдал ошибку и подсказал имя файла прототипа - proto_s3_m1_1_1_dc.pcf. Теперь нужно обратно скопировать этот файл прототипа на место. После редактирования файл будет содержать следующие строки: <BEGINproto_config_file> <COMMENT> This PCF produces a 3 stream, single mixture prototype system. <BEGINsys_setup> hsKind: P covKind: D nStates: 3 nStreams: 3 sWidths: 13 13 13 mixes: 1 1 1 parmKind: MFCC_0_D_A vecSize: 39 outDir: proto hmmList: lists/bcplist <ENDsys_setup> <ENDproto_config_file> Далее следует заменить параметр TARGETKIND в конфигурационных файлах в каталоге toolconfs. Скрипт берет текущие настройки из файлов вида hcopy.conf, те с именем утилиты и расширением. В эти файлы копируются данные из файлов вида hcopyDA.conf/hcopyFB.conf или herestVQ.conf За выбор того или иного набора файлов отвечает параметр covKind: D в файле конфигурации (monPlainM1S3.dcf). Потребуется поиск в коде скрипта и редактирование соответствующего набора файлов. Но предлагаю использовать более простой способ - замену параметра TARGETKIND = MFCC_E на TARGETKIND = MFCC_0_D_A во всех файлах каталога HTKDemo\toolconfs. |
Сообщ.
#7
,
|
|
|
Исходный архив с исходным кодом примера можно загрузить на странице Download HTK
См. HTK samples (zip archive for Windows users) h t t p://htk.eng.cam.ac.uk/ftp/software/HTK-samples-3.4.1.zip Для доступа к фтп потребуеся бесплатная регистрация. Можно указать почтовый ящик mail.ru |