پردازش صوت۱

براي حذف بيخودي ها در آخرين برنامه تغييراتي ايجاد مي كنيم و براي حل قسمت دوم بايد محل شروع يا اتمام تلفظ را در متغيري(اينجا COUNT) نگهداري كنيم. بنابراين برنامه ي آخر به اين شكل در مي آيد:

localEnergy(1) = 2;

n=1;

for i=1:size(localEnergy')

        if localEnergy(i)==1.0

            c=c+1;

            j=i+1;

            if localEnergy(j)==0.1 

               if c>300

                   cc(1,n)=c;

                   count(1,n)=i;

                   n=n+1;

               end

               

            end

        else

            c=0;

        end

end

دستور if c>300 ، cهاي خطا را حذف مي كند. ماتريس cc ماتريسي شامل يك سطر و n ستون است كه n تعداد افراد تلفظ كننده است. Count شماره ي آخرين سمپل هر فرد را ذخيره ميكند. Count هم ماتريسي داراي يك سطر و  n ستون است. براي حركت به ستون بعدي در ماتريس هاي cc و count از  متغير n استفاده شده كه در هر مرحله يكي به آن اضافه مي شود.

براي برداشتن 400 سمپل از وسط هر بخش از برنامه ي زير استفاده مي كنيم:

for n=1:size(cc')

    j=1;

    for i=(count(1,n)-floor(cc(1,n)/2)-200):(count(1,n)-floor(cc(1,n)/2)+200)

        lastmatris(n,j)=downsamp(i,1);

        j=j+1;

    end

end

علامت ' براي ترانهاده كردن ماتريسcc به كار برده مي شود.

و با اين برنامه از تمام بخشها همزمان تبديل فوريه مي گيريم:

for n=1:size(cc')

    lastfft(n,:)=abs(fft(lastmatris(n,:)));

end

اگر نمودار تبديل فوريه ي سطر اول را بكشيم شكلي مانند زير ايجاد مي شود:

6807qbo.jpg

براي دقيقتر شدن نمودار و براي آنكه تغييرات ريز را هم نشان بدهد نمودار لگاريتمي آن را رسم مي كنيم:

Plot(log(lastfft(1,:)))

64539mt.jpg

نموداري كه در اين حالات بدست مي آوريم ديگر برحسب فركانس نيست بلكه محور افقي آن از صفر تا 400 است. چون از ابتدا با فركانس 44000 هرتز نمونه برداري كرده بوديم و بعد downsample كرديم،فركانس 4400 شد، بنابراين اينجا عدد 400 روي محور افقي معادل فركانس 4400 است. چون سيگنال حقيقي بود، تبديل فوريه ي آن متقارن است.(حول 200) پس مي توانيم 200 را مثل π و 400 را معادلπ2 در نظر بگيريم و فقط قسمت صفر تا 200 را بررسي كنيم.

تكليف اين سري:

·         به جاي 400سمپل از نمونه ي downsample شده، 4000سمپل از داده ي اصلي برداريد.

·         Fft ي حاصل را با عبور از يك فيلتر پايين گذر هموار كنيد.

·         محل دو پيك اول را بدست آوريد.

تمام پست های مربوط به پردازش صوت را ببینید. 

/ 0 نظر / 7 بازدید