امروزه در عصر ارتباطات و گسترش روزافزون استفاده از شبكه های تلفن ،موبایل و اینترنت در جهان ومحدودیت پهنای باند در شبكه های مخابراتی ، كدینگ و فشرده سازی صحبت امری اجتناب ناپذیر است . در چند دهه اخیر روشهای كدینگ مختلفی پدیدآمده اند ولی بهترین و پركاربردترین آنها كدك های آنالیزباسنتز هستند كه توسط Atal & Remedeدر سال 1982 معرفی شدند [2] . اخیرا مناسبترین الگوریتم برای كدینگ صحبت با كیفیت خوب در نرخ بیت های پائین و زیر 16 kbps ، روش پیشگویی خطی باتحریك كد (CELP) می باشد كه در سال 1985 توسط Schroeder & Atal معرفی شد [8] و تا كنون چندین استاندارد مهم كدینگ صحبت بر اساس CELP تعریف شده اند .
در فصل اول به معرفی وآنالیز سیگنال صحبت پرداخته می شود و در فصل دوم روش ها و استانداردهای كدینگ بیان می شوند . در فصل سوم كدك LD-CELP را بیشتر بررسی می كنیم و در فصل چهارم شبیه سازی ممیز ثابت الگوریتم به زبان C را بیان می نمائیم. ودر پایان در فصل 5 به نحوه پیاده سازی بلادرنگ كدكG.728 بر روی پردازنده TMS320C5402 می پردازیم.
فصل 1
بررسی و مدل سازی سیگنال صحبت
1-1 –معرفی سیگنال صحبت
صحبت در اثر دمیدن هوا از ریه ها به سمت حنجره و فضای دهان تولید میشود. در طول این مسیر در انتهای حنجره، تارهای صوتی[1] قرار دارند. فضای دهان را از بعد از تارهای صوتی ، لوله صوتی[2] مینا مند كه در یك مرد متوسط حدود cm 17 طول دارد . در تولید برخی اصوات تارهای صوتی كاملاً باز هستند و مانعی بر سر راه عبور هوا ایجاد نمیكنند كه این اصوات را اصطلاحاً اصوات بی واك [3] مینامند. در دسته دیگر اصوات ، تارهای صوتی مانع خروج طبیعی هوا از حنجره میگردند كه این باعث به ارتعاش درآمدن تارها شده و هوا به طور غیر یكنواخت و تقریباً پالس شكل وارد فضای دهان میشود. این دسته از اصوات را اصطلاحاً باواك[4] میگویند.
فركانس ارتعاش تارهای صوتی در اصوات باواك را فركانس Pitch و دوره تناوب ارتعاش تارهای صوتی را پریود Pitch مینامند. هنگام انتشار امواج هوا در لوله صوتی، طیف فركانس این امواج توسط لوله صوتی شكل میگیرد و بسته به شكل لوله ، پدیده تشدید در فركانس های خاصی رخ میدهد كه به این فركانس های تشدید فرمنت[5] میگویند.
از آنجا كه شكل لوله صوتی برای تولید اصوات مختلف، متفاوت است پس فرمنت ها برای اصوات گوناگون با هم فرق میكنند. با توجه به اینكه صحبت یك فرآیند متغییر با زمان است پس پارامترهای تعریف شده فوق اعم از فرمنت ها و پریود Pitch در طول زمان تغییر میكنند به علاوه مد صحبت به طور نامنظمی از باواك به بی واك و بالعكس تغییر میكند. لوله صوتی ، همبستگی های زمان-كوتاه ، در حدود 1 ms ، درون سیگنال صحبت را در بر میگیرد. و بخش مهمی از كار كدكننده های صوتی مدل كردن لوله صوتی به صورت یك فیلتر زمان-كوتاه میباشد. همان طور كه شكل لوله صوتی نسبتاً آهسته تغییر میكند، تابع انتقال این فیلتر مدل كننده هم نیاز به تجدید[6] ، معمولاً در هر 20ms یکبارخواهد داشت.
در شكل (1-1 الف) یك قطعه صحبت باواك كه با فركانس 8KHz نمونه برداری شده است دیده میشود. اصوات باواك دارای تناوب زمان بلند به خاطر پریود Pitch هستند كه نوعاً بین 2ms تا 20ms میباشد. در اینجا پریود Pitch در حدود 8ms یا 64 نمونه است. چگالی طیف توان این قطعه از صحبت در شكل (1-1 ب) دیده میشود[3].
اصوات بی واك نتیجه تحریك نویز مانند لوله صوتی هستند و تناوب زمان- بلند اندكی را در بر دارند ، همانگونه كه در شكل های (1-1 ج) و (1-1 د) دیده میشود ولی همبستگی زمان كوتاه به خاطر لوله صوتی در آنها هنوز وجود دارد.
[1] Vocal Cords
[2] Vocal Tracts
[3] Unvoiced
[4] Voiced
[5] Formant
[6] Update
-2- مدل سازی پیشگویی خطی
روش كدینگ پیشگویی خطی (LPC[1]) مبتنی بر مدل تولید صحبت در كد كننده های صوتی میباشد كه در اینجا در شكل (1-2) نشان داده شده است. برای استفاده از مدل لازم است كه معلوم شود سیگنال با واك است یا بیواك و اگر با واك است پریود Pitch مجاسبه گردد. تفاوت اصلی بین LPC و سایر كدكننده های صوتی در مدل كردن لوله صوتی است. در تحلیل LPC ، لوله صوتی به صورت یك فیلتر دیجیتال تمام قطب در نظر گرفته میشود.[4,1].
شكل (1-2): مدل تولید صحبت در LPC
با شركت دادن بهره G در این فیلتر داریم:
كه در آن p مرتبه فیلتر است. اگر S(n) خروجی فیلتر مدل صحبت و e(n) تحریك ورودی باشد، معادله فوق را در حوزه زمان به صورت زیر
خرید متن کامل این پایان نامه در سایت nefo.ir
میتوان نوشت:
به عبارت دیگر هر نمونه صحبت به صورت تركیب خطی از نمونه های قبلی قابل بیان است و این دلیل نام گذاری كدینگ پیشگویی خطی (LPC) میباشد.
1-2-1- پنجره كردن سیگنال صحبت
روش LPC هنگامی دقیق است كه به سیگنالهای ایستان[2] اعمال شود، یعنی به سیگنالهایی كه رفتار آنها در زمان تغییر نمیكند. هر چند كه این موضوع در مورد صحبت صادق نیست، اما برای اینكه بتوانیم روش LPC را بكار ببریم، سیگنال صحبت را به قسمت های كوچكی بنام “فریم” تقسیم میكنیم كه این فریم ها شبه ایستان هستند. شكل (1-3) مثالی از قسمت بندی سیگنال صحبت را نشان میدهد. این قسمت بندی با ضرب كردن سیگنال صحبت S(n) ، در سیگنال پنجره W(n) انجام میشود.
شكل (1-3) : قسمت بندی سیگنال صحبت
معروف ترین انتخاب برای پنجره ، پنجره همینگ (Hamming) به صورت زیر است:
در اینجا N ، طول پنجره دلخواه به نمونه و عموماً در محدوده 160-320 انتخاب میگردد كه 240 یك مقدار نوعی میباشد . در شكل (1-4) چند پنجره معروف نشان داده شده است.
معمولاً پنجره های متوالی برروی هم همپوشانی دارند و فاصله بین آنها را پریود فریم میگویند. مقادیر نوعی برای پریود فریم 10-30ms میباشد. این انتخاب به نرخ بیت و كیفیت صحبت دلخواه ما بستگی خواهد داشت. هر چه پریود فریم كوچكتر باشد، كیفیت بهتری خواهیم داشت.
شكل (1-4): نمایش چند پنجره معروف
1-2-2- پیش تاكید سیگنال صحبت
شكل (1-5) یك توزیع طیفی نمونه سیگنال صحبت را برای اصوات باواك نشان میدهد. با توجه به افت طیف در فركانس های بالا وضعیف بودن فركانس های بالا در طیف صحبت ، تحلیل LPC در فركانس های بالا عملكرد ضعیفی خواهد داشت. برای تقویت مؤلفه های فركانس بالا صحبت ، آن را از یك فیلتر بالا گذر با تابع انتقال كه فیلتر پیش تاكید نامیده میشود، عبور میدهیم. مقدار نوعی ضریب a معمولاً در نظر گرفته میشود.
اگر S(n) سیگنال ورودی باشد، سیگنال پیش تأكید شده خواهد شد:
شكل (1-5) : پوشش طیفی نمونه اصوات باواك
1-2-3- تخمین پارامترهای LPC
در اینجا لازم است كه پارامترهای مدل LPC یعنی ضرایب ai فیلتر و بهره G تعیین گردند. اگر
تخمین S(n) از روی نمونه های قبلی باشد، ضرایب ai را چنان تعیین میكنیم كه خطای
روی همه نمونه های موجود مینیمم گردد. این مینیمم سازی ما را به معادلات خطی زیر میرساند:
و یا در فرم ماتریسی
R.a = –r
در معادلات فوق تعریف زیر را داریم:
كهr(i) ، iامین اتوكورلیشن سیگنال میباشد و فرض شده كه S(n) به طول N پنجره شده است. این فرمولاسیون به روش اتوكورلیشن معروف است و ماتریس R در آن یك ماتریس Toeplitz میباشد. چنین ماتریسی غیرمنفرد و همیشه معكوس پذیر است و در نتیجه همواره میتوانیم جوابی به صورت a = -R-1r داشته باشیم.
روش دیگری نیز بنام روش كواریانس وجود دارد. در این روش سیگنال صحبت S(n) پنجره نمیشود و به جای اتوكورلیش های r(i) ، كواریانس های r(i,j) برای عنصر (i,j) ماتریس R محاسبه میگردد:
در اینجا تضمین نمیشود كه ماتریس R معكوس پذیر باشد و ممكن است كه سیستم معادلات فوق جواب نداشته باشد. در این حالت فیلتر LPC ناپایدار میشود. از این رو در اینجا بیش از این به روش كواریانس نمیپردازیم.
راه سوم روش Burg است كه امتیاز عدم استفاده از پنجره را در روش كواریانس با امتیاز روش اتوكورلیشن یعنی تضمین پایداری فیلتر ، تركیب میكند. این روش از ساختار مشبك[3] فیلتر تمام قطب استفاده میكند[1] .
جواب دستگاه معادلات فوق را میتوان با یكی از روش های كلاسیك آنالیز عددی مثل حذف گوسی بدست آورد. اما چون R یك ماتریس Toeplitz است میتوان از روشی مؤثر بنام روش تكرار Durbin سود جست که بصورت زیر ضرائب فیلتر را تولید می کند :
که در آن ، ضریب j ام فیلتردر تكرار i ام و E(i) خطای پیشگویی مرتبه i است و بدین ترتیب ضرایب فیلتر بصورت زیر بدست خواهند آمد:
روش تكرار Durbin پارامترهای را كه ضرایب انعكاس نامیده میشوند و E(p) را بدست میدهد كه مربع بهره پیشگویی G و مورد نیاز فیلتر سنتز میباشد:
و چون داریم :
میتوانیم به جای E(p) ،r(0) را كد كرده و ارسال داریم و از آنجا به بهره G برسیم و این ترجیح داده میشود زیرا حساسیت r(0) به نویز كوانتیزاسیون كمتر از G است.
ضرایب انعكاس Ki یا PARCOR (برای PARtial CORrelation) نقش مهمی در تحلیل LPC دارند و دارای خواص زیر هستند:
- ضرایب انعكاس Ki معادل با ضرایب فیلتر ai هستند . به عبارت دیگر میتوان K را به a و برعكس تبدیل کرد :
ـ برای یك فیلتر پایدار یعنی یك فیلترLPC كه همه قطب های آن داخل دایره واحد باشد داریم:
كه این شرط بسیار مهمی است چرا كه با اطمینان از اینكه Ki بین –1 و +1 است حتی بعد از كوانیتزاسیون ، پایداری فیلتر تضمین خواهد شد. به علاوه محدوده (-1 , +1) كار كوانیتزاسیون را سادهتر میكند. ولی ai ها دارای چنین ویژگی نیستند كه پایداری فیلتر را تضمین نمایند و كوانیتزاسیون ai ها میتواند موجب ناپایداری شود.
[شنبه 1400-05-16] [ 01:38:00 ب.ظ ]
|