شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (3)

[گام ۱۱] اجرای pick_examples.tcl برای انتخاب فریم های آموزش از فایل‌های ایجاد شده توسط gen_catfiles.tcl. فایل های ورودی digit.train.info, corpora.txt, digit.train.spec, وdigit.train.numbers.files.
چهارشنبه، 5 خرداد 1395
تخمین زمان مطالعه:
پدیدآورنده: علی اکبر مظاهری
موارد بیشتر برای شما
شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (3)
  شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (3)

 

مترجم: حبیب الله علیخانی
منبع:راسخون




 
[گام ۱۱] اجرای pick_examples.tcl برای انتخاب فریم های آموزش از فایل‌های ایجاد شده توسط gen_catfiles.tcl. فایل های ورودی digit.train.info, corpora.txt, digit.train.spec, وdigit.train.numbers.files. هستند. خروجی این اسکریپت فایل digit.train.examples است که شامل لیست اسکی ASCII فایل‌ها، فریم های استفاده شده در هر فایل و دسته های وابسته به این فریم ها هستند.
pick_examples.tcl digit.train.info corpora.txt digit.train.spec digit.train.examples
Basename: digit
Partition: train
Corpus: numbers
cat_ext: cat
txt_ext: txt
format: NU-([0-9]+)\.[A-Za-z0-9_]+
lexicon: digit.lexicon
partition: {expr $ID % 5} {0 1 2}
cat_path: numbers_train
txt_path: W:/digit/tutorial/tutorial/data/txtfiles
id: regexp $format $filename filematch ID
remap: remap_tutorial.tcl
phn_ext: phn
filter: 1+1
wav_ext: wav
name: numbers
phn_path: W:/digit/tutorial/tutorial/data/phnfiles
want: 200
wav_path: W:/digit/tutorial/tutorial/data/speechfiles
require: wpt
digit.train.numbers.files, want=200, min_want=100
--------- numbers --------
$alv<& 122
&>$sil 116
<.pau> 200
$den<9r 200
$fnt_l<9r 200
<9r> 200
(etc.)
$alv
$fnt_l
$ret_l
200
z>$fnt_r 200
Selected from a total of 552 files
Randomizing order of frames...
Writing output file...
Done
[گام ۱۲] اجرای gen_examples.tcl برای محاسبه ویژگی‌های آکوستیک برای همه فریم ها داده شده در digit.train.examples. فایل‌های ورودی digit.train.info, digit.train.spec, وdigit.train.examples هستند. ویژگی‌های محاسبه شده و مقادیر دسته مقصد اختصاص یافته در فایل خروجی باینری digit.train.vec ذخیره می شود. توجه داشته باشید اگر شما بخواهید از ویژگی‌هایی که از ویژگی‌های استاندارد متفاوت هستند استفاده کنید،‌شما می‌توانید یک کد tcl برای ایجاد یک ویژگی جدید بنویسید. محل کد شما می‌تواند در فایل info با استفاده از رشته های featuresURI و contextURI مشخص شود. همچنین توضیحات قالب فایل برداردر بخش ۵ ممکن است مورد علاقه باشد.
gen_examples.tcl digit.train.info digit.train.spec digit.train.examples digit.train.vec
Basename: digit
Partition: train
Corpus: numbers
lexicon: digit.lexicon
partition: {expr $ID % 5} {0 1 2}
cat_path: numbers_train
remap: remap_tutorial.tcl
filter: 1+1
name: numbers
want: 200
require: wpt
Sampling freq: 8000
Frame size: 10
0: W:/digit/tutorial/tutorial/data/speechfiles/16/NU-1641.other1.wav
1: W:/digit/tutorial/tutorial/data/speechfiles/10/NU-1035.other1.wav
2: W:/digit/tutorial/tutorial/data/speechfiles/17/NU-1792.zipcode.wav
3: W:/digit/tutorial/tutorial/data/speechfiles/5/NU-591.streetaddr.wav
4: W:/digit/tutorial/tutorial/data/speechfiles/2/NU-237.streetaddr.wav
5: W:/digit/tutorial/tutorial/data/speechfiles/11/NU-1116.streetaddr.wav
(etc)
[گام ۱۳] اجرای checkvec.exe برای اطمینان از اینکه فایل بردار ایجاد شده قالب درستی داشته باشد و هر دسته‌ حداقل یک مثال برای آموزش داشته باشد. عدد ها در ستون چپ مقادیری هستند که وابسته به هر دسته (از ۱ تا تعداد کل دسته ها) و عدد ها در ستون سمت راست تعداد مثال‌هایی برای هر دسته هستند. فایل ورودی digit.train.vec است. تنها خروجی برای چک کردن کاربر در صفحه نمایش می‌آید اما ممکن است به یک فایل با استفاده از "> checkvec_output.txt" در پایان فرمان Dos راه یابند.
checkvec.exe digit.train.vec
1: 122
2: 116
3: 199
4: 200
5: 200
6: 200
(etc)
123: 200
124: 151
125: 26
126: 34
127: 200
128: 200
20703 vectors with 130 features
[گام ۱۴] اجرای nntrain برای آموزش شبکه عصبی با فایل بردار digit.train.vec. این برنامه یک فایل بار (weights) در هر تکرار ایجاد می کند. ما بهترین فایل بار را بعد از آموزش ۳۰ تکرار انتخاب خواهیم کرد. انتخاب l- نشان می‌دهد که پنالتی منفی برای جبران تفاوت تعداد مثال‌ها در دسته تنظیم خواهد شد.sn- 88 و -sv 88 اعداد تصادفی هستند.f- digitnet نام پایه digitnet برای فایل‌های خروجی را مشخص می کنند. a- 3 130 200 128 معماری شبکه را مشخص می کنند. ۳ لایه، با ۱۳۰ گره در لایه اول، ۲۰۰ گره در لایه پنهان و ۱۲۸ گره در لایه خروجی. مقدار ۳۰ آموزش را برای ۳۰ تکرار مشخص می کند. و پارامتر آخر فایل بردار استفاده شده برای آموزش است. فایل‌های خروجی در این حالت diginet.0 ، diginet.1، diginet.2 و … diginet.30 نامیده می‌شود که یک فایل خروجی برای هر تکرار نشان می دهد.
nntrain -l -sn 88 -sv 88 -f digitnet -a 3 130 200 128 30 digit.train.vec
creating net with seed 88
negpen 0 is 0.752830
negpen 1 is 0.715597
negpen 2 is 1.000000
negpen 3 is 1.000000
negpen 4 is 1.000000
negpen 5 is 1.000000
(etc)
negpen 125 is 0.208912
negpen 126 is 1.000000
negpen 127 is 1.000000
3 layers: 131 200 128
learning rate 0.050000
momentum 0.000000
negative weight 1.000000
training file digit.train.vec
numvec: 20703; tau: 103515.000000
vectors chosen in 1 blocks of 20703 with seed 88
time:8 learn_rate 0.041667; total error is 74753.695313
time:9 learn_rate 0.035714; total error is 56642.347656
time:8 learn_rate 0.031250; total error is 50545.117188
time:9 learn_rate 0.027778; total error is 46603.933594
time:9 learn_rate 0.025000; total error is 43362.011719
time:8 learn_rate 0.022727; total error is 40807.339844
time:9 learn_rate 0.020833; total error is 38606.566406
time:9 learn_rate 0.019231; total error is 36725.898438
(etc)
نکته: برای مشخص کردن معماری، توجه داشته باشید که تعداد گره‌ها در لایه اول همیشه برای مجموعه ویژگی‌های استاندارد ۱۳۰ خواهد بود. تعداد گره‌های پنهان توسط کاربر تصمیم گیری می‌شود اما ۲۰۰ یک عدد منطقی است. تعداد گره‌های خروجی (در این حالت ۱۲۸) بایستی با بزرگترین مقدار در ستون سمت چپ از خروجی checkvec.exe یکی باشد. عدد ۱۲۸ در این مثال ممکن است وابسته به تعداد حالت‌های ارتباط داده شده و اطلاعات فایل‌های grammer. و lexicon. و parts. تغییر داده شود .
تنها ورودی فایل nntrain.exe فایل بردار است. فایل‌های خروجی فایل‌های بار شبکه عصبی برای هر تکرار است.(نام پیش‌فرض nnet.X است که X یک عدد صحیح است که از صفر تا تعداد تکرار ها است)
[گام ۱۵] اجرای select_best.tcl برای ارزیابی کارایی هر تکرار (فایل بار) روی داده‌های مجموعه توسعه. این اسکریپت ممکن است زمان طولانی بگیرد مخصوصاً اگر تعداد زیادی فایل در مجموعه توسعه باشد. این اسکریپت دو اسکریپت دیگر را فراخوانی می کند،" asr_multi.tcl" و "eval_results.tcl" که در همین دایرکتوری select_best.tcl هستند یعنی ...\CSLU\Toolkit\2.0\script\training_1.0. فایل های ورودی فایل‌های شبکه عصبی هستند که توسط nntrain.exe ،ایجاد می شوند.
فایل digit.dev.numbers.files و همه شکل موج‌ها و فایل‌های متنی مشخص شده در فایل digit.dev.numbers.files، فایل grammer، فایل lexicon و فایل spec ایجاد می شوند. فایل‌های خروجی فایل‌های ali هستند (با نام پایه wrdalign_dig itnet در این مثال) و یک فایل summery. فایل summery کارایی هر تکرار را ،(ستون Wrdacc% دقت سطح کلمه را نشان می‌دهد و ستون sntcorr درصدجمله بدرستی شناسایی شده را (توالی رقمی کل در این حالت ) نشان میدهد) به خوبی نتایج بهترین تکرار ها نشان می دهد.
select_best.tcl digitnet digit.dev.numbers.files digit.grammar digit.lexicon \
digit.train.spec digit.dev.summary -g 10 -b 15
Beginning at iteration 15, stopping after iteration 30
Evaluating every 1 iterations
Garbage value is 10
Basename for the .ali files is wrdalign_digitnet
Summary file is digit.dev.summary
Starting Iteration 30...
Starting Iteration 29...
Starting Iteration 28...
Starting Iteration 27...
Starting Iteration 26...
Starting Iteration 25...
(etc)
Starting Iteration 18...
Starting Iteration 17...
Starting Iteration 16...
Starting Iteration 15...
Itr #Snt #Words Sub% Ins% Del% WrdAcc% SntCorr
30 100 444 3.83% 1.13% 0.90% 94.14% 78.00%
29 100 444 3.38% 0.90% 1.13% 94.59% 79.00%
28 100 444 3.83% 0.90% 0.68% 94.59% 79.00%
27 100 444 3.60% 0.90% 0.68% 94.82% 79.00%
26 100 444 3.83% 0.90% 1.13% 94.14% 78.00%
25 100 444 3.60% 0.90% 1.13% 94.37% 78.00%
24 100 444 3.60% 0.90% 0.90% 94.59% 79.00%
23 100 444 3.38% 0.90% 1.13% 94.59% 79.00%
22 100 444 4.05% 0.90% 1.35% 93.69% 77.00%
21 100 444 3.38% 0.90% 1.13% 94.59% 79.00%
20 100 444 3.83% 0.90% 0.90% 94.37% 78.00%
19 100 444 3.83% 1.13% 1.13% 93.92% 78.00%
18 100 444 4.28% 1.13% 0.90% 93.69% 78.00%
17 100 444 2.93% 0.68% 1.13% 95.27% 81.00%
16 100 444 3.60% 1.13% 1.13% 94.14% 80.00%
15 100 444 3.15% 0.90% 1.35% 94.59% 79.00%
Best results (95.27, 81.00) with network digitnet.17
Evaluated 16 networks
توجه داشته باشید آموزش بر روی ۲۰۰ مثال در هر دسته یک اثر منفی بر نتایج دارد زمانی که آموزش با استفاده از همه مثال‌های در دسترس به جای ۲۰۰ در هر دسته (با استفاده از کلید واژه ALL به جای ۲۰۰ در digit.train.info) نتایج روی همین داده‌های توسعه 97.07% برای دقت کلمه و 88.00% برای دقت جمله بود. نقطه ضعف برای آموزش همه مثال‌ها این است که pick_examples.tcl, gen_examples.tcl و به‌خصوص nntrain.exe زمان بیشتر ی را برای اجرا نیاز دارند.
[گام ۱۶] اکنون سیکل اولیه آموزش به پایان رسیده است. اگر برای سطح عمل‌کرد مجموعه توسعه خوشحال هستیم ما می‌توانیم فرآیند آموزش را قطع کرده و مجموعه آزمون را ارزیابی کنیم. (گام ۱۹) اگر می‌خواهیم برای بهبود کارایی مجموعه توسعه تلاش کنیم، میتوانیم سیکل دیگری از آموزش را با داده‌های هم تراز اجباری انجام دهیم. ما می‌توانیم یک فایل info دیگر برای انجام همتراز اجباری با استفاده از فایل آموزش به عنوان نمونه ایجاد کنیم این فایل جدید digit.trainfa.info نامیده خواهد شد.
copy digit.train.info digit.trainfa.info
edit digit.trainfa.info
type digit.trainfa.info
basename: digit;
partition: trainfa;
sampling_freq: 8000;
frame_size: 10;
min_samp: 100;
corpus: name: numbers
cat_path: numbers_trainfa
require: wt
partition: "{expr $ID % 5} {0 1 2}"
filter: 1+1
lexicon: digit.lexicon
force_cat: "fa.tcl digitnet.17 digit.train.spec digit.lexicon
WAV TXT c OUT"
want: 200;
(توجه داشته باشید در رشته :force_cat، اسکریپت و پارامتر های اختصاص یافته در دو خط مشخص می شوند. مارکر خاصی (از جمله) نیاز نیست)
ما می‌توانیم نام پارتیشن و مسیر برای فایل‌های دسته (به number_trainfa) را تغییر دهیم. همچنین با مشخص کردن require: wt، اکنون ما نیاز به وجود فایل‌های wav. و txt. و نه فایل‌های phn. خواهیم داشت. (زیرا ما برچسب‌های آوایی هم تراز زمانی را از رونوشت های متنی با استفاده از فایل‌های lexicon و همتراز اجباری ایجاد می کنیم). همچنین با اضافه کردن یک رشته جدید به توضیحات نوشته نشاندهنده این است که ما می‌خواهیم هم تراز زمانی را انجام دهیم و برچسب‌های سطح دسته را ایجاد کنیم. (بر خلاف سطح آوا) همچنین توجه داشته باشید این خط مشخص می‌کند استفاده از تکرار ۱۷ ، آموزش را به پایان می رساند، بنابراین این تکرار بهترین کارایی سطح کلمه را دارد. زیرا با انجام همتراز اجباری، نیاز به استفاده از دوباره نویسی اسکریپت که برچسب‌های ایجاد شده به صورت دستی را به مجموعه برچسب‌های استفاده شده توسط شناساگر دوباره نویسی می‌کنند نیست.
[گام ۱۷] اکنون ما دوباره فایل‌هایی را که برای آموزش می‌خواهیم توسط اجرای find_files.tcl پیدا می کنیم و سپس برچسب‌های همتراز زمانی سطح دسته را با استفاده از gen_catfiles.tcl تولید می کنیم. به عنوان یک قسمت از فرایند ایجاد فایل‌های برچسب سطح دسته به صورت اتوماتیک فایل‌های counts و dur جدید را ایجاد می کنیم. سرانجام ما یک فایل spec جدید با اطلاعات جدید در فایل‌های counts و dur با استفاده از revise_spec.tcl ایجاد خواهیم کرد. در این حالت ، ما دسته ها را با ۳ رخداد یا بیشتر مرتبط نمی‌کنیم، بیشتر برای نشان دادن گزینه های در دسترس به هر دلیلی از تئوری صدا.
find_files.tcl digit.trainfa.info corpora.txt
gen_catfiles.tcl digit.trainfa.info digit.parts digit.train.spec \
corpora.txt digit.trainfa.dur digit.trainfa.counts
revise_spec.tcl digit.orig.spec digit.trainfa.dur digit.trainfa.counts \
digit.trainfa.spec -min 3
[گام ۱۸] سپس ماگام های آموزش را برای آموزش و انتخاب بهتر شبکه هم تراز اجباری تکرار می‌کنیم.
pick_examples.tcl digit.trainfa.info corpora.txt \
digit.trainfa.spec digit.trainfa.examples
gen_examples.tcl digit.trainfa.info digit.trainfa.spec \
digit.trainfa.examples digit.trainfa.vec
checkvec.exe digit.trainfa.vec
nntrain.exe -l -sn 88 -sv 88 -f digitfanet -a 3 130 200 134 30 digit.trainfa.vec
select_best.tcl digitfanet digit.dev.numbers.files digit.grammar digit.lexicon \
digit.trainfa.spec digit.devfa.summary -g 10 -b 15
توجه داشته باشید که فایل‌های بار شبکه نام پایه digitfanet را دارند. نتایج select_best به صورت زیر است:
Itr #Snt #Words Sub% Ins% Del% WrdAcc% SntCorr
30 100 444 2.70% 1.35% 0.45% 95.50% 85.00%
29 100 444 2.93% 1.35% 0.45% 95.27% 84.00%
28 100 444 3.38% 1.13% 0.23% 95.27% 84.00%
27 100 444 2.93% 1.35% 0.45% 95.27% 84.00%
26 100 444 3.15% 0.90% 0.23% 95.72% 85.00%
25 100 444 3.15% 0.90% 0.23% 95.72% 85.00%
24 100 444 3.38% 0.68% 0.45% 95.50% 85.00%
23 100 444 3.15% 1.13% 0.23% 95.50% 85.00%
22 100 444 3.38% 0.90% 0.23% 95.50% 85.00%
21 100 444 3.60% 1.35% 0.23% 94.82% 81.00%
20 100 444 3.38% 1.35% 0.23% 95.05% 82.00%
19 100 444 3.15% 1.13% 0.23% 95.50% 84.00%
18 100 444 3.15% 1.13% 0.23% 95.50% 83.00%
17 100 444 3.15% 0.68% 0.23% 95.95% 84.00%
16 100 444 3.83% 0.90% 0.23% 95.05% 81.00%
15 100 444 3.38% 0.90% 0.45% 95.27% 83.00%
Best results (95.95, 84.00) with network digitfanet.17
با مجموعه توسعه، این قابل قبول است که پارامتر های سیستم را برای بیشینه کردن کارایی تغییر دهیم. برای مثال،نرخ درج یک مقداری بیشتر از نرخ حذف در این مثال است . بنابراین، عمل‌کرد ممکن است با کاهش یک مقدار پارامتر زباله از ۱۰ به ۷ بهبود یابد. بنابراین نرخ درج کاهش خواهد یافت. (این باعث افزایش نرخ حذف می‌شود... هدف در اینجا این است که کمترین میزان خطا ترکیبی که معمولاً زمان رخداد نرخ خطای حذف و درج تقریباً نزدیک به هم، بوجود آید ) اگر سعی کنیم:
select_best.tcl digitfanet digit.dev.numbers.files digit.grammar \
digit.lexicon digit.trainfa.spec digit.devfa.summary -g 7 -b 15
ما دیدیم که بهترین دقت در سطح کلمه 95.27% بوده که اندکی کمتر 95.95% برای دقت با مقدار ذباله ۱۰ است. بنابراین مقدار ۱۰ را برای مقدار ذباله حذف می‌کنیم.
[گام۱۸ ] شبکه نتیجه ، مقدار digitfanet.17 شبکه نهایی است. گام نهایی ارزیابی این شبکه برای مجموعه آزمون است. در اینجا select_best.tcl را دوباره اجرا می‌کنیم اما فقط با ارزیابی تکرار ۱۷ شبکه با استفاده از "-o 17".
select_best.tcl digitfanet digit.test.numbers.files digit.grammar digit.lexicon \
digit.trainfa.spec digit.test.summary -g 10 -o 17
در این حالت خروجی به صورت زیر است:
Itr #Snt #Words Sub% Ins% Del% WrdAcc% SntCorr
17 19 111 0.00% 3.60% 0.00% 96.40% 78.95%
Best results (96.40, 78.95) with network digitfanet.17
در اینجا نتیجه نهایی 96.40% برای سطح کلمه اندکی بهتر از دقت کلمه در مجموعه توسعه است و دقت سطح جمله 78.95% اندکی بدتر از دقت سطح جمله مجموعه توسعه است. معمولا، کارایی مجموعه آزمون اندکی بدتر از کارایی مجموعه توسعه برای هر دو دقت سطح کلمه و سطح جمله است زیرا کارایی مجموعه توسعه بیشترین کارایی روی تعداد تکرار و مقادیر ذباله بوده در حالی که کارایی مجموعه آزمون یک ارزیابی تنها را منعکس می‌کند که به معنی نشان دادن کارایی که می‌تواند برای یک سیستم نهایی با داده‌های دیده نشده انتظار می‌رود، باشد.
قالب‌های فایل
در قالب‌های فایل‌ زیر متن های با فونت ثابت بولد کلید واژه‌هایی هستند که باید کلمه به کلمه استفاده شوند.
فایل wave
یک فایل wav شامل شکل موج‌های صحبت می باشد که بایستی آموزش داده و یا شناسایی شود. قالب این فایل ممکن است Microsoft .wav format یا NIST Sphere ulaw باشد.
فایل txt
یک فایل txt شامل یک رونوشت متنی از کلمات در شکل موج صحبت است. این فایل به آسانی یک فایل ASCII شامل کلماتی جدا شده توسط فاصله بوده و می‌تواند توسط هر ویرایشگر متنی که دارای خروجی txt. است، ایجاد شود.
فایل‌های برچسب ((.phn, .cat, .wrd
فایل‌های نشاندار،‌که معمولاً پسوند phn. وcat. و wrd. داشته و شامل برچسب‌های همتراز زمانی از یک شکل موج سخن است. اگر فایل پسوند phn. داشته باشد برچسب‌ها برچسب آوایی هستند. اگر برچسب‌ها دارای پسوند cat. باشند برچسب‌ها دسته های خروجی شبکه عصبی هستند (معمولا واحد های زیر آوایی زمینه مستقل) و اگر فایل‌ دارای پسوند wrd. باشد برچسب‌ها کلمات هستند. یک فایل برچسب دارای قالب زیر است:
MillisecondsPerFrame:
END OF HEADER


...
که:

مقدار به میلی ثانیه در یک فریم صحبت (معمولا مقدار 1.0)

زمانی که برچسب شروع می شود

زمانی که برچسب پایان می یابد

 



مقالات مرتبط
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط