ASR_HW1 - Solution.pdf

‫به نام خدا‬
‫بازشناسی گفتار‬
‫نیمسال دوم ‪59-59‬‬
‫دکتر صامتی‬
‫دانشکده مهندسی کامپیوتر‬
‫پاسخ تمرین سری اول‬
‫پردازش ‪ front-end‬گفتار‬
‫زمان تحویل‪ 26 :‬اسفند ‪9359‬‬
‫سوال ‪ .1‬می دانیم که قبل از انجام تحلیل پیشبینی خطی (‪ )LPC‬از تکنیک پنجرهگذاری استفاده میشود‪ .‬به طور دقیقتر‪ ،‬اگر‬
‫سیگنال صوت را با ]𝑛[𝑥 و پنجره را با ]𝑛[𝑤 نشان دهیم طوریکه‬
‫𝑛 ≤ 𝑁 & ‪𝑓𝑜𝑟 𝑛 < 0‬‬
‫‪𝑤[𝑛] = 0‬‬
‫برای تحلیل پیشبینی خطی ابتدا یک قسمت از سیگنال را با استفاده از ]𝑚 ‪ 𝑥𝑚 [𝑛] = 𝑥[𝑛]𝑤[𝑛 −‬انتخاب می کنیم و سپس‬
‫تحلیل را بر روی سیگنال ]𝑛[ 𝑚𝑥 که طول محدود 𝑁 را دارد انجام میدهیم‪.‬‬
‫الف) توضیح دهید چرا از این تکنیک استفاده میشود؟ چرا تحلیل را روی کل سیگنال ]𝑛[𝑥 انجام نمیدهیم؟‬
‫ب) تاثیر نوع پنجره چیست؟ میدانیم که برای مثال پنجرۀ همینگ در دو انتهایش به سمت صفر میل میکند و از آنجایی‬
‫که در سیگنال اولیه ضرب میشود‪ ،‬منجر به کاهش اندازه سیگنال در دو سمت (نسبت به وسط پنجره) میشود‪.‬‬
‫ب‪ )1-‬آیا این مساله مشکلی در محتوای سیگنال ایجاد نمی کند؟‬
‫ب‪ )2-‬چرا با وجود اینکه پنجره مستطیلی این مشکل را ندارد‪ ،‬در عمل پنجرۀ همینگ ترجیح داده میشود؟‬
‫پ) تاثیر طول پنجره چیست؟ چه طولی را می توان بهینه دانست؟ آیا طول بهینه به سن‪/‬جنسیت گوینده (در سیگنال‬
‫گفتار) بستگی دارد ؟ اگر پاسخ مثبت است‪ ،‬چگونه؟ اگر غیر اینصورت‪ ،‬علت را شرح دهید؟‬
‫ت) فرض کنید ‪ w‬یک پنجره ی مستطیلی باشد‪ .‬تبدیل فوریه سیگنال پنجره گذاری شده را بر اساس تبدیل فوریه سیگنال‬
‫اولیه به دست آورید‬
‫پاسخ‪:‬‬
‫الف) سیگنال گفتار ایستا نیست‪ ،‬بنابراین هرگونه پردازشی باید روی طولهای محدود از این سیگنال انجام شود تا بتوانیم فرض‬
‫کنیم تا حد خوبی ایستا است‪.‬‬
‫ب) هر پنجره مشخصات خاص خودش را دارد و مطابق آن استفاده میشود‪ .‬برای مثال‪ ،‬پنجره همینگ در دو سمت به صفر میل‬
‫میکند‪ .‬این مشخصه در واقع یک مزیت است‪ ،‬چراکه باعث میشود تغییرات ناگهانی (‪ )sharp‬در سیگنال نداشته باشیم‪ .‬پنجره‬
‫مستطیلی این مشکل را دارد که سیگنال پنجره شده دچار عدم پیوستگی (‪ transition‬ناگهانی از صفر به یک عدد بزرگ و‬
‫برعکس) میشود و بنابراین مولفه های فرکانسی باال (و نامربوط) در اسپکتروم آن ظهور می کند‬
‫پ) طول پنجره اگر خیلی کم باشد‪ ،‬رزولوشن فرکانسی کمی خواهیم داشت به این معنی که نمونههای حاصل از ‪ DFT‬کم هستند‬
‫و بنابراین تحلیل در حوزۀ فرکانس با دقت کمتری انجام خواهد شد‪ .‬از طرف دیگر اگر طول پنجره زیاد باشد‪ ،‬ایستایی سیگنال‬
‫کمتر میشود؛ ضمن اینکه اگر تحلیل ما مبتنی بر واج باشد ممکن است هر فریم شامل بیش از ‪ 1‬یا دو واج شود که تحلیل را با‬
‫مشکل مواجه میکند ‪.‬بدیهی است برای اینکه مولفههای فرکانسی بتوانند محاسبه شوند‪ ،‬فریم مدنظر باید شامل حداقل یک دوره‬
‫‪pitch‬از سیگنال گفتار باشد‪ .‬البته برای پنجرههایی مثل ‪ hamming‬که اندازه سیگنال را تضعیف میکنند باید ‪ 2‬دوره یا بیشتر‬
‫در پنجره قرار بگیرد‪ .‬همچنین میدانیم که فرکانس ‪ pitch‬به طول حنجره بستگی دارد که از طرف دیگر به سن و جنسیت بستگی‬
‫دارد‪ .‬بنابراین‪ ،‬طول پنجره به سن‪/‬جنسیت بستگی دارد ولی معموالً آن را طوری در نظر میگیرند تا برای عموم افراد مناسب باشد‪،‬‬
‫به جای اینکه برای گروه خاصی بهینه باشد‪.‬‬
‫ت)‬
‫𝑀𝜔‬
‫𝜔𝑗‪sin ( 2 ) −‬‬
‫𝑁<𝑛≤‪0‬‬
‫𝜔𝑗‬
‫‪2‬‬
‫= ) 𝑒(𝑊 →‬
‫𝑒 𝜔‬
‫‪𝑜. 𝑤.‬‬
‫) ‪sin ( 2‬‬
‫𝑀𝜔‬
‫) ‪2‬‬
‫𝜔‬
‫) ‪sin ( 2‬‬
‫( ‪𝑀 sin‬‬
‫) ‪−𝑗𝜔(𝑚+‬‬
‫‪2‬‬
‫𝑒‬
‫=)‬
‫𝜔𝑗‬
‫‪1‬‬
‫{ = ]𝑛[𝑤‬
‫‪0‬‬
‫𝑒(𝑊 → ]𝑚 ‪𝑤[𝑛 −‬‬
‫𝜋 ‪1‬‬
‫𝜃𝑑) )𝜔‪∫ 𝑋(𝑒 𝑗𝜃 )𝑊(𝑒 𝑗(𝜃−‬‬
‫𝜋‪2𝜋 −‬‬
‫= ) 𝜔𝑗 𝑒( 𝑚𝑋‬
‫سوال ‪ .2‬یک سیگنال صوتی با نرخ نمونهبرداری ‪ 22222‬نمونه در ثانیه‪ ،‬نمونهبرداری شده است (𝑧𝐻𝐾‪ .)𝐹𝑠 = 20‬همچنین‬
‫طول قابها برای آنالیز کپسترال ‪ 22‬میلیثانیه و میزان همپوشانی قابها ‪ %02‬میباشد‪ .‬اگر جهت محاسبۀ ‪ DFT‬از ‪ FFT‬با‬
‫پایۀ ‪ 2‬استفاده شده باشد‪ ،‬در اینصورت‪:‬‬
‫الف) تعداد نمونههای گفتار استفاده شده در هر ‪ segment‬چقدر است؟‬
‫ب) نرخ قاب در آنالیز اسپکترال زمان کوتاه را محاسبه کنید؟‬
‫ج) سایز ‪ DFT‬و ‪ FFT‬مورد نیاز به منظور حصول اطمینان از عدم رخداد ‪ time-aliasing‬چقدر است؟‬
‫پاسخ‪:‬‬
‫الف) تعداد نمونههای یک گفتار ‪ 22‬میلیثانیهای با نرخ نمونه برداری ‪ 22222‬نمونه در ثانیه‬
‫𝑒𝑙𝑝𝑚𝑎𝑠‬
‫𝑒𝑙𝑝𝑚𝑎𝑠 ‪= 400‬‬
‫𝑐𝑒𝑠‬
‫‪20 ∗ 10−3 𝑠𝑒𝑐 ∗ 20,000‬‬
‫نمونه دارد‪.‬‬
‫ب) از آن جا که تعداد ‪ shift‬میان دو قاب متوالی گفتار ‪12‬میلیثانیه (معدل ‪ 222‬نمونه با نرخ نمونهبرداری ‪ 22222‬نمونه در‬
‫ثانیه) نرخ قاب برابرست با‪:‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫=‬
‫‪= 100‬‬
‫‪−3‬‬
‫𝑐𝑒𝑠 ‪𝑓𝑟𝑎𝑚𝑒 𝑠ℎ𝑖𝑓𝑡 10 ∗ 10‬‬
‫𝑐𝑒𝑠‬
‫= 𝑒𝑡𝑎𝑟 𝑒𝑚𝑎𝑟𝑓‬
‫ج) برای جلوگیری از وقوع ‪ time-aliasing‬در هنگام استفاده از ‪ DFT‬برای ارطیابی تبدیل فوریه زمان کوتاه‪ ،‬نیاز داریم که طول‬
‫‪ DFT‬حداقل به اندازه قاب باشد‪ .‬همچنین با توجه به قسمت الف‪ ،‬ما نیاز داریم که ‪ DFT‬استفاده شده‪ ،‬حداقل ‪ 022‬نقطهای‬
‫باشد‪ .‬از آنجا که ما از ‪ FFT‬مرتبه دو استفاده میکنیم‪ ،‬لذا از نظر تئوری به ‪ 012 FFT‬نقطهای (کوچکترین عدد توان ‪ 2‬بزرگتر‬
‫از ‪ )022‬برای محاسبۀ ‪ DFT‬بدون ‪ time-aliasing‬نیاز داریم‪ .‬پس در هر مرحله با ‪ zero padding‬به تعداد = ‪512 − 400‬‬
‫‪ 112‬صفر‪ ،‬طول قابها را از ‪ 022‬به ‪ 012‬افزایش میدهیم‪ .‬از آنجا که سیگنال گفتار از نوع حقیقی میباشد‪ ،‬ما همچنین میتوانیم‬
‫از ‪ FFT‬با اندازه ‪ 202‬نقطه (به کمک اعمال یک مرحلۀ پیشپردازش و پسپردازش و بهرهمندی از ‪ FFT‬مختلط) استفاده کنیم‪.‬‬
‫سوال ‪ .3‬معادله دیفرانسیل زیر را در نظر بگیرید‪:‬‬
‫𝑝‬
‫)𝑛(𝛿𝐺 ‪ℎ(𝑛) = ∑ 𝑎𝑘 ℎ[𝑛 − 𝑘] +‬‬
‫‪𝑘=1‬‬
‫اگر تابع خودهمبستگی (‪ )autocorrelation‬به صورت‬
‫∞‬
‫)𝑚 ‪𝑅̂ (𝑚) = ∑ ℎ(𝑛)ℎ(𝑛 +‬‬
‫‪𝑚=0‬‬
‫تعریف شود‪ ،‬در اینصورت ثابت کنید‪𝑅̂ (𝑚) = 𝑅̂ (−𝑚) ،‬‬
‫پاسخ‪:‬‬
‫∞‬
‫∞‬
‫)𝑚 ‪𝑅̂ (𝑚) = ∑ ℎ(𝑛)ℎ(𝑛 + 𝑚) = ∑ ℎ(𝑛)ℎ(𝑛 +‬‬
‫∞‪𝑚=−‬‬
‫‪𝑚=0‬‬
‫به علت علّی بودن )𝑛(‪ .ℎ‬با اعمال 𝑚 ‪ 𝑛′ = 𝑛 +‬داریم‪:‬‬
‫∞‬
‫)‪𝑅̂ (𝑚) = ∑ ℎ(𝑛′ − 𝑚)ℎ(𝑛′‬‬
‫𝑚=‪𝑛′‬‬
‫همچنین به ازای ‪( 𝑚 < 0‬و باتوجه به علّی بودن )‪ )ℎ(𝑛′‬خواهیم داشت‪:‬‬
‫‪−1‬‬
‫‪∑ ℎ(𝑛′ − 𝑚)ℎ(𝑛′) = 0‬‬
‫𝑚=‪𝑛′‬‬
‫پس‬
‫∞‬
‫)𝑚(‪𝑅̂ (𝑚) = ∑ ℎ(𝑛′ − 𝑚)ℎ(𝑛′) = 𝑅̂ (−𝑚) = ℎ(−𝑚) ∗ ℎ‬‬
‫‪𝑛′=0‬‬
‫سوال ‪ .4‬اگر سیگنال ]𝑛[𝑥 را داشته باشیم‪ ،‬کپستروم مختلط آن (]𝑛[̂𝑥) در حوزه ‪( z‬تبدیل ‪ )Z‬از رابطۀ زیر بدست میآید‪:‬‬
‫)𝑧(𝑋 ‪𝑋̂(𝑧) = log‬‬
‫میدانیم کپستروم مختلط یک سیگنال با استفاده از ‪ DFT‬قابل محاسبه است‪ .‬همچنین رابطۀ بازگشتیای وجود دارد که ]𝑛[̂𝑥 را‬
‫مستقیماً از روی ]𝑛[𝑥 بدست میآورد‪ .‬هدف این سوال اثبات رابطۀ بازگشتی میان ]𝑛[̂𝑥 و ]𝑛[̂𝑥 است‪ .‬این رابطه به دو طریق‬
‫قابل محاسبه میباشد‪:‬‬
‫الف) نشان دهید رابطۀ بین ]𝑛[̂𝑥 و ]𝑛[𝑥 از رابطۀ زیر بدست میآید‪:‬‬
‫]𝑛[𝑥𝑛 = ]𝑛[𝑥 ∗ ]𝑛[̂𝑥𝑛‬
‫ب) اگر ]𝑛[̂𝑥‪ minimum phase ،‬باشد در اینصورت نشان دهید‪ ،‬رابطۀ بین ]𝑛[̂𝑥 و ]𝑛[𝑥 از رابطۀ زیر بدست میآید‪:‬‬
‫‪𝑛<0‬‬
‫‪𝑛=0‬‬
‫‪𝑛>0‬‬
‫‪0‬‬
‫]‪log 𝑥[0‬‬
‫‪𝑛−1‬‬
‫]𝑛[𝑥 = ]𝑛[̂𝑥‬
‫‪1‬‬
‫‪−‬‬
‫]𝑘 ‪∑ 𝑘𝑥̂[𝑘]𝑥[𝑛 −‬‬
‫]‪{𝑥[0] 𝑛𝑥[0‬‬
‫‪𝑘=0‬‬
‫(راهنمایی‪ :‬برای ‪ 𝑛 = 0‬از قضیه مقدار اولیه استفاده نمایید ← )𝑧(𝑋 ‪).𝑥[0] = lim‬‬
‫∞→𝑧‬
‫پاسخ‪:‬‬
‫الف)‬
‫∞‬
‫𝑛‪𝑋(𝑧) = ∑ 𝑥[𝑛]𝑧 −‬‬
‫∞‪𝑛=−‬‬
‫∞‬
‫𝑑‬
‫‪𝑋(𝑧) = ∑ −𝑛𝑥[𝑛]𝑧 −𝑛−1‬‬
‫𝑧𝑑‬
‫∞‪𝑛=−‬‬
‫∞‬
‫𝑑‬
‫𝑛‪−𝑧 𝑋(𝑧) = ∑ −𝑛𝑥[𝑛]𝑧 −‬‬
‫𝑧𝑑‬
‫∞‪𝑛=−‬‬
‫𝑑‬
‫)𝑧(𝑋‬
‫𝑧𝑑‬
‫𝑧‪−‬‬
‫𝑇𝑍‬
‫↔ ]𝑛[𝑥𝑛 ⟹‬
‫همچنین داریم‪:‬‬
‫)𝑧(𝑋 ‪𝑋̂(𝑧) = log‬‬
‫𝑑‬
‫𝑑‬
‫𝑑 ‪1‬‬
‫= )𝑧(̂𝑋‬
‫= )𝑧(𝑋 ‪log‬‬
‫)𝑧(𝑋‬
‫𝑧𝑑‬
‫𝑧𝑑‬
‫𝑧𝑑 )𝑧(𝑋‬
‫𝑑‬
‫𝑑‬
‫= )𝑧(̂𝑋‬
‫)𝑧(𝑋‬
‫𝑧𝑑‬
‫𝑧𝑑‬
‫)𝑧(𝑋‬
‫𝑑‬
‫𝑑‬
‫)𝑧(𝑋 𝑧‪𝑋̂(𝑧)] 𝑋(𝑧) = −‬‬
‫𝑧𝑑‬
‫𝑧𝑑‬
‫𝑧‪[−‬‬
‫]𝑛[𝑥𝑛 = ]𝑛[𝑥 ∗ ]𝑛[̂𝑥𝑛‬
‫ب) اگر ]𝑛[𝑥‪ minimum phase ،‬باشد‪ ،‬آنگاه )𝑧(𝑋 خارج از دایرۀ واحد نه صفر دارد و نه قطب‪ .‬پس هر دو عبارت ]𝑛[𝑥 و‬
‫]𝑛[̂𝑥 علّی هستند‪ ،‬این بدین معناست که‪:‬‬
‫گام ‪:1‬‬
‫‪𝑛<0‬‬
‫‪𝑥[𝑛] = 0‬‬
‫‪𝑛<0‬‬
‫‪𝑥̂[𝑛] = 0‬‬
‫براساس قضیه مقدار اولیه داریم‪:‬‬
‫گام ‪:2‬‬
‫]‪𝑥̂[𝑛] = lim 𝑋̂(𝑧) = lim [log 𝑋(𝑧)] = lim [log(𝑥[0] + 𝑥[1]𝑧 −1 + ⋯ )] = log 𝑥[0‬‬
‫∞→𝑧‬
‫∞→𝑧‬
‫∞→𝑧‬
‫با توجه به نتیجۀ قسمت الف داریم‪:‬‬
‫∞‬
‫]𝑘 ‪𝑛𝑥[𝑛] = 𝑛𝑥̂[𝑛] ∗ 𝑥[𝑛] = ∑ 𝑘𝑥̂[𝑘]𝑥[𝑛 −‬‬
‫∞‪𝑘=−‬‬
‫∞‬
‫‪1‬‬
‫]𝑘 ‪𝑥[𝑛] = ∑ 𝑘𝑥̂[𝑘]𝑥[𝑛 −‬‬
‫𝑛‬
‫∞‪𝑘=−‬‬
‫∞∑ را به صورت زیر تغییر داد‪:‬‬
‫با توجه به گام اول‪ ،‬میتوان حدود … ∞‪𝑘=−‬‬
‫‪𝑛−1‬‬
‫𝑛‬
‫‪𝑘=0‬‬
‫‪𝑘=0‬‬
‫‪1‬‬
‫‪1‬‬
‫]‪𝑥[𝑛] = ∑ 𝑘𝑥̂[𝑘]𝑥[𝑛 − 𝑘] = ∑ 𝑘𝑥̂[𝑘]𝑥[𝑛 − 𝑘] + 𝑥̂[𝑛]𝑥[0‬‬
‫𝑛‬
‫𝑛‬
‫گام ‪:3‬‬
‫‪𝑛−1‬‬
‫]𝑛[𝑥‬
‫‪1‬‬
‫= ]𝑘[̂𝑥‬
‫‪−‬‬
‫]𝑘 ‪∑ 𝑘𝑥̂[𝑘]𝑥[𝑛 −‬‬
‫]‪𝑥[0] 𝑛𝑥[0‬‬
‫‪𝑘=0‬‬
‫سوال ‪ .5‬فرض کنید طول یک قطعه کوچک گفتار که با ]‪ s[n‬نمایش میدهیم برابر با ‪ N‬باشد و طول ‪ DFT‬آن که با ]‪ S[k‬نشان‬
‫می دهیم برابر با ‪ M‬باشد‪ .‬همچنین فرض کنید تعداد فیلترهای مل (فیلترهای مثلثی شکل که در اسالید درس مشاهده شد) برابر‬
‫با ‪ L‬باشد‪.‬‬
‫الف) نشان دهید که کپستروم حقیقی این سیگنال ]‪ c[n‬از طریق رابطه زیر محاسبه می شود‪:‬‬
‫‪𝑀−1‬‬
‫‪0≤𝑛 ≤𝑀−1‬‬
‫𝜋‪2‬‬
‫‪𝑐[𝑛] = ∑ log|𝑆[𝑘]| cos ( 𝑘𝑛) ,‬‬
‫𝑀‬
‫‪𝑘=0‬‬
‫ب) فرض کنید لگاریتم انرژی فیلترهای مل را با 𝐿 ‪ 𝑋𝑘 , 𝑘 = 1,2, … ,‬نشان دهیم‪ .‬در این صورت رابطه ای برای محاسبه ضرایب‬
‫‪ MFCC‬که با 𝐿 ‪ 𝑌𝑖 , 𝑖 = 1,2, … ,‬نشان می دهیم بنویسید‪.‬پاسخ‪:‬‬
‫الف) میدانیم که رابطۀ کلی ]𝑛[𝑐 برابرست با‪:‬‬
‫}|}]𝑛[𝑥{𝐹|‪𝑐[𝑛] = 𝐹 −1 {log‬‬
‫این رابطه را میتوان در شکل زیر مشاهده نمود‪:‬‬
‫پس میتوان نوشت‪:‬‬
‫‪𝑀−1‬‬
‫𝜋‪2‬‬
‫𝜋‪2‬‬
‫))𝑛𝑘 ( 𝑛𝑖𝑠𝑗 ‪= ∑ log|𝑆(𝑘)| (cos ( 𝑘𝑛) +‬‬
‫𝑀‬
‫𝑀‬
‫‪𝑀−1‬‬
‫𝜋‪2‬‬
‫𝑛𝑘‬
‫𝑀‬
‫‪𝑀−1‬‬
‫𝑗‬
‫𝑒|)𝑘(𝑆|‪𝑐[𝑛] = ∑ log‬‬
‫‪𝑘=0‬‬
‫‪𝑘=0‬‬
‫‪𝑀−1‬‬
‫𝜋‪2‬‬
‫𝜋‪2‬‬
‫)𝑛𝑘 ( 𝑛𝑖𝑠 |)𝑘(𝑆|‪= ∑ log|𝑆(𝑘)| cos ( 𝑘𝑛) + 𝑗 ∑ log‬‬
‫𝑀‬
‫𝑀‬
‫‪𝑘=0‬‬
‫‪𝑘=0‬‬
‫با توجه به اینکه کپستروم حقیقی مورد نظر است‪ ،‬لذا داریم‪:‬‬
‫‪𝑀−1‬‬
‫𝜋‪2‬‬
‫)𝑛𝑘 ( ‪𝑐[𝑛] = ∑ log|𝑆(𝑘)| cos‬‬
‫𝑀‬
‫‪𝑘=0‬‬
‫ب) با توجه به گامهای بدست آوردن ضرایب ‪ MFCC‬داریم‪:‬‬
‫𝐿‬
‫𝜋‬
‫‪1‬‬
‫)) ‪𝑌𝑖 = ∑ 𝑋𝑘 cos (𝑖 (𝑘 −‬‬
‫𝐿‬
‫‪2‬‬
‫‪𝑘=1‬‬