اصولاً تفريق طيفی روشی است برای بازيافت طيف توان يا طيف اندازة يک سيگنال که با نويز نوع جمع شونده[1] آغشته شده است. اصول کار بر مبنای تخمين اندازة طيف فرکانسی سيگنال صحبت خالص، ميباشد. اين تخمين بوسيله تفريق اندازة طيف نويز از اندازة طيف سيگنال صحبت آغشته به نويز بدست ميآيد. اطلاعات مربوط به طيف نويز از روی اندازهگيری سيگنال در لحظات سکوت صحبت بدست ميآيد. جهت بدست آوردن لحظات سکوت، الگوريتمهای متعددی مطرح گرديده است. رابينر و سامبور[49] در الگوريتم خود با استفاده از ميزان عبور از صفر و آستانه انرژی ابتدا و انتهای کلمه را با دقّت خوبی مشخّص کردهاند. با مشخّص بودن ابتدا و انتهای کلام، مشخّصات لحظات سکوت قابل اندازهگيری و محاسبه است. روش ديگر محاسبه لحظات سکوت، استفاده از آستانه انرژی بهتنهايی است. تعيين آستانه مورد نظر از روی محاسبه انرژی سکوت در ابتدای صحبت بدست ميآيد. برای کاربردهای بهبود صحبت و کاهش نويز محيطی از سيگنال صحبت، استفاده از روش دوّم جهت تعيين لحظات سکوت، ميتواند کارآمد باشد. در اين صورت حجم محاسباتی کاهش يافته و الگوريتم سريعتر اجرا ميشود. با استفاده از تبديل فوريه نمونههای سکوت، طيف نويز تخمين زده ميشود. برای محاسبه تبديل فوريه از DFT يا گونه سريع آن FFT استفاده ميشود.
در اين روش فرضهای زير در نظر گرفته شدهاند: الف– نويز زمينه با سيگنال صحبت جمع پذير است. ب- نويز محيطی به طور محلی ايستان باقی ميماند، يعنی متوسط آماری اندازة طيفی نويز در غياب صحبت، با متوسط آماری اندازة طيفی نويز در حضور صحبت مساوی ميباشد. اگر محيط به يک محيط ايستان جديد تغيير يابد، بايد زمان کافی ( حدود 300 ميلی ثانيه ) سکوت وجود داشته باشد تا بتوان متوسط آماری اندازة طيفی نويز زمينه جديد را تخمين زد و بايد صحبت جديد بعد از اين زمان ارائه گردد[3]. با توجّه به فرضهای مزبور، مراحل انجام الگوريتم به ترتيب زير است: ابتدا سيگنال صحبت توسط ميکروفون ضبط ميشود. سپس نمونهها با همپوشانی 50% (نوعاً) پنجره ميشوند. اندازة طيف دادههای پنجره شده، محاسبه گرديده و در لحظاتی که صحبت وجود ندارد، طيف اندازه يا توان نويز تخمين زده ميشود. پس از تفريق طيف، نمونههای حاصل به حوزة زمان آورده شده و پنجرههای زمانی حاصل شده با استفاده از تکنيک همپوشانی و افزودن (OLA)[2] کنار هم قرار گرفته و صحبت بهبود يافته قابل دسترس خواهد بود[51]. بلوک دياگرام ساده شده سيستم در شکل (3-1) ديده ميشود.
توجّه شود که اگر سيگنال ايستان باشد، برای محاسبه طيف آن ميتوان از تبديل فوريه معمولی در يک محدوده زمانی وسيع استفاده کرد. اما اگر سيگنال ايستان نباشد، تنها در صورتی ميتوان طيف آنرا محاسبه کرد که در فواصل کوتاه زمانی بتوان آنرا ايستان فرض نمود و در آن فواصل کوتاه بايد از تبديل فوريه کوتاه مدت استفاده کرد. سيگنال صحبت را ميتوان حدود 20 ميلی ثانيه ايستان فرض نمود[52]. (به اين بازة زمانی قاب ميگويند.) سرعت بيان گوينده باعث تغييرات طول قاب ايستان بودن صحبت ميشود. فرض کنيد در يک قاب 10 ميلی ثانيهای طيف صحبت که در پنجره مستطيلی ضرب شده، محاسبه شود. در اين صورت طيف صحبت با طيف پنجره تداخل کرده و مشخّصه طيفی را خراب ميکند. برای رفع اين مشکل بايد نمونههای زمانی صحبت را در پنجرهای غيرمستطيلی ضرب کرد، به طوری که در حوزة فرکانس توان گلبرگهای فرعی ناچيز باشد تا طيف صحبت را خراب نکند. برای سيگنال صحبت پنجرههای قابل استفاده بيشتر همينگ[3] و هنينگ[4] ميباشد[51]. مسئله ديگر انتخاب طول پنجره است. طبق تحقيقات به عمل آمده، طول پنجره بايد بيش از دو برابر بالاترين دورة تناوب گام صحبت باشد[53]. دورة تناوب گام بسته به افراد مختلف متفاوت است و تا حدود 16 ميلی ثانيه تغيير ميکند. اين محدوده تغييرات دورة تناوب گام به فرکانس صحبت افراد، نوع جنسيت و حالات روحی گوينده بستگی دارد. با توجّه به تغييرات دورة تناوب گام، به طور متوسط طول پنجره را بين 24 تا 40 ميلی ثانيه ميتوان در نظر گرفت. تبديل فوريه در قابها انجام ميگيرد و از آنجا که محاسبه طيفی بايد روی نمونههای بيش از دو برابر دورة تناوب گام صحبت صورت پذيرد از پنجره استفاده ميکنيم. در واقع پنجره باعث ميشود نمونههای قابهای مجاور در محاسبه طيف قاب مورد نظر دخالت کرده و در نتيجه طيف بهتری از سيگنال صحبت را شامل شود. با توجّه به اينکه طول پنجره 40 ميلی ثانيه و طول قاب 20 ميلی ثانيه در نظر گرفته ميشود، اگر پنجرهها با هم 50% تداخل داشته باشند، مشخّصه طيفی هر قاب به طور قابل قبولی محاسبه ميشود[3]. شکل (3-2) نحوة پنجره کردن را نشان ميدهد[51][54].
بين طول پنجره و مشخّصه طيفی سيگنال يک بده-بستان[5] وجود دارد. با بزرگ شدن طول پنجره فرض ايستان بودن صحبت غير واقعی تر شده و دقّت زمانی سيگنال کاهش مييابد و اگر طول پنجره کوچک شود، دقّت در حوزة فرکانس کم ميشود. نکته ديگر اينکه عمل تفريق طيفی در واقع تفريق دامنههاست و با فاز کاری ندارد. معمولاً فاز اوّليه يعنی فاز طيف آغشته به نويز به عنوان فاز تفريق طيفی در نظر گرفته ميشود. اين روال به منظور سادگی محاسبات و پيچيده نشدن فرمولهاست، چرا که گوش انسان به فاز حساسيت چندانی ندارد. توجّه شود که تفريق طيفی را ميتوان هم بر روی “طيف توان” و هم “طيف اندازه” انجام داد که دو روش تفاوت چندانی با هم ندارند. محاسبات و فرمولهای بکار رفته در بخش سوم آورده شده است[8][18][51].
3-2-1 خطای طيفي
خطای طيف سيگنال حذف نويز شده نسبت به طيف سيگنال صحبت خالص در هر پنجره را خطای طيفی ميناميم. خطای طيفی به دليل وجود خطا در تخمين نويز بوجود ميآيد و اشکالی که بوجود ميآورد اينست که اندازة طيف تخمينی نويز لزوما از اندازة طيف سيگنال نويزی کوچکتر نميباشد (در حالی که در واقع اينگونه است؛ زيرا سيگنال نويزی حاصلجمع سيگنال خالص و نويز ميباشد.) بنابراين پس از تفريق ممکن است طيف دامنه هميشه دارای مقادير مثبت نبوده و دارای مقادير منفی نيز باشد. در بسياری از سيستمها اين مسئله توسط انجام تصحيحهای نيم موجی يا تمام موجی اصلاح ميشود؛ يعنی بخشهای منفی را صفر در نظر ميگيرند و يا فقط مقدار قدر مطلق آنرا در نظر ميگيرند. اين فرآيند يکسوسازی غيرخطي، در توزيع سيگنال بازيابی شده، اعوجاج بوجود ميآورد. هر چه نسبت سيگنال به نويز (SNR) کمتر باشد، ميزان اعوجاج بيشتر ميشود[8]. روشهای برطرف کردن اين اشکال در بخشهای بعد مورد بررسی قرار گرفته است.
[1] Additive
[2] Overlap & Add
[3] Hamming
[4] Hanning
[5] Trade-off