امروزه در عصر ارتباطات و گسترش روزافزون استفاده از شبكه های تلفن ،موبایل و اینترنت در جهان ومحدودیت پهنای باند در شبكه های مخابراتی ، كدینگ و فشرده سازی صحبت امری اجتناب ناپذیر است . در چند دهه اخیر روش های كدینگ مختلفی پدیدآمده اند ولی بهترین و پركاربردترین آنها كدك های آنالیزباسنتز هستند كه توسط 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) تحریک ورودی باشد، معادله فوق را در حوزه زمان به صورت زیر می‏توان نوشت:

به عبارت دیگر هر نمونه صحبت به صورت تركیب خطی از نمونه های قبلی قابل بیان است و این دلیل نام گذاری كدینگ پیشگویی خطی (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.= –r

در معادلات فوق  تعریف زیر را داریم:

كهr(i) ،  iامین اتوكورلیشن سیگنال می‏باشد و فرض شده كه S(n)  به طول N پنجره شده است. این فرمولاسیون به روش اتوكورلیشن معروف است و ماتریس R در آن یک ماتریس Toeplitz می‏باشد.  چنین ماتریسی غیرمنفرد و همیشه معكوس پذیر است و در نتیجه  همواره می‏‏توانیم جوابی به صورت = -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 ها می‏تواند موجب ناپایداری ‏شود.

[1]  Linear Predictive Coding

[2]  Stationary

[3]  Lattice

 


 
موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...