نمایش نتایج 1 تا 4 از 4

نام تاپیک: پردازش صوت در متلب

  1. #1
    کاربر تازه وارد آواتار hildar
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اهواز
    پست
    50

    پردازش صوت در متلب

    با سلام
    یک برنامه با مطلب نیاز دارم که : این برنامه باید بتونه ضبط صدا انجام بده(50 فایل، تکرارهر یک از اعداد 0 تا 9 هر کدام 5 بار) و بعد فایل ها را با تبدیل یک منهای نود وپنج صدم ضربدر z اینورس(-1(1-0.95Z) فیلتر کنیم با دستور buffer فایلها رو فریم بندی کنیم از هر فریم ویژگی های انرژی، zcr رو استخراج کنیم،wavelet سطح 4 بگیریم. برای هر فریم یک ماتریس دو بعدی داریم که ستونها انرژی و zcr هستند و سطرها تعداد فریم ها.کل ماتریسها را به هم می چسبانیم نتیجه یک ماتریس بزرگ است به kmeans میدهیم و 32 خوشه بدست می آوریم و خروجی که کدبوک است را ذخیره می کنیم علاوه بر کدبوک VQ را هم بدست می آوریم و...
    خروجی برنامه در واقع دنباله مشاهده متعلق به یک فایل صوتی نمونه است که عملیات پیش پردازش ( فرمینگ و استخراج ویژگی) و کوانتزه شدن برداری بر روی آن اعمال شده است

    خواهش میکنم اگه میتونید منو راهنمایی کنید و یا اگر برنامه آماده ای در این زمینه دارید برای من ارسال کنید. با تشکر و سپاس

  2. #2

    نقل قول: پردازش صوت در متلب

    دوستان عزیزی که در انجام پروژه های متلب خود دچار مشکل شده اند می توانند برای رفع مشکلات خود به سایت زیر مراجعه کنند:
    http://www.matcode.ir

  3. #3

    نقل قول: پردازش صوت در متلب

    پردازش صوت
    در متلب توابعی وجود دارند که به منظور کار با صوت طراحی شده اند.در این مقاله طرز کار این توابع را با هم مرور می کنیم.

    beep:ساده ترین دستور تولید صدا در متلب دستور beep است که همانطوری که از اسمش پیداست یک صدای بیپ تولید می کند.این صدا برای اجرا به هنگام تولید پیامهای اخطار در برنامه هایتان می تواند مفید باشد.می توان حالت بیپ کامپیوتر را فعال و غیر فعال کرد.به این صورت:
    beep on
    beep off
    اگر حالت بیپ کامپیوتر غیر فعال باشد دیگر دستور beep تولید صدا نخواهد کرد.wavrecord:این تابع پس از فراخوانی،از یک دستگاه ورودی صدا مثلا میکروفون در زمان مشخصی تحت فرکانس تعیین شده ای صدا را ضبط می کند.توجه داشته باشید که برای ضبط صدا باید سیستم در حال ضبط باشد.برای این منظور volume control را باز کنید.در ویندوز xp به این آدرس بروید:
    Start/All Programs/Accessories/Entertainment/Volume control
    از منوی Options گزینه ی Properties را انتخاب کنید.Mixer Device را در یک حالت Inputقرار داده و دکمه ی رادیویی Recording را انتخاب کنید.ساختار تابع به این صورت است:
    data=wavrecord(n,fs);
    این تابع تعداد n نمونه از یک سیگنال صوتی را تحت فرکانس fs هرتز ضبط می کند و آن را در متغیر data ذخیره می کند.مقدار پیش فرض fsبرابر 11025هرتز است.حال به تناسب زیر توجه کنید:
    1secàfs Hz
    t secà t*fs Hz
    همانطور که گفته شد تابع wavrecord تعداد n فرکانس را ضبط می کند.بنابراین اگر بخواهیم t ثانیه صدا ضبط کنیم باید t*fs فرکانس را ضبط کنیم.یعنی تابع را تحت این ساختار فراخوانی کنیم:
    data=wavrecord(t*fs,fs);
    wavwrite:حال باید صدای ضبط شده را در یک فایل صوتی ذخیره کنیم.برای این منظور از تابعwavwrite استفاده می شود.این تابع ماتریس حاوی صدای ضبط شده را در یک فایل با پسوند .wav ذخیره می کند.فایل تولید شده قابل پخش در کلیه ی برنامه های پخش صداست.
    wavwrite(data,fs,'filename');
    به متغیر fs در ساختار تابع توجه کنید.مقدار متغیر fs در ساختار تابع wavwrite باید با مقدار متغیر fs در ساختار تابع wavrecord برابر باشد.در واقع باید صدا را با همان فرکانسی که ضبط کرده ایم در فایل ذخیره کنیم.در غیر این صورت صدا زیر یا بم می شود.
    wavread:
    این تابع یک فایل صوتی با پسوند .wav را می خواند و آن را در متغیر data و فرکانسش را در متغیر fs ذخیره می کند.
    [data fs]=wavread('filename');
    wavplay:این تابع ماتریس حاوی صوت را تحت فرکانس مشخصی پخش می کند.
    wavplay(data,fs);
    sound:طرز کار این تابع مشابه wavplay است.

  4. #4

    نقل قول: پردازش صوت در متلب

    کدنویسی ساختار پردازش سیگنال :
    سلام به شما دوست عزیز شما میتونید از کدهای زیر برای رفع مشکل پروژه متلب خود استفاده کنید البته باید در نرم افزار متلب حتما تست شود نسخه 2017 متلب باید اجرا شود
    % ====== Feature extraction
    for i=1:speakerNum
    disp(speakerData(i,1).name(1:end-4));
    [y, fs]=audioread(['trainning\' speakerData(i,1).name]);
    epInSampleIndex = epdByVol(y, fs); % endpoint detection
    y=y(epInSampleIndex(1):epInSampleIndex(2)); % silence is not used
    speakerData(i).mfcc=wave2mfcc(y, fs);
    end
    save speakerData speakerData % Since feature extraction is slow, you can save the data for future use if the features are not changed.
    %_________________________________________________ __________________________________________________ _____________________



    % --- Executes on button press in pushbutton4.
    function pushbutton4_Callback(hObject, eventdata, handles)
    % hObject handle to pushbutton4 (see GCBO)
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)

    fprintf('\nGMM training...\n\n');
    load speakerData;
    gaussianNum=8; % No. of gaussians in a GMM
    speakerNum=length(speakerData);


    for i=1:speakerNum
    disp(speakerData(i).name(1:end-4));
    [speakerGmm(i).mu, speakerGmm(i).sigm,speakerGmm(i).c] = gmm_estimate(speakerData(i).mfcc,gaussianNum);
    end
    save speakerGmm speakerGmm;
    fprintf('\n');
    %_________________________________________________ _______________________________________________

    % --- Executes on button press in pushbutton5.
    function pushbutton5_Callback(hObject, eventdata, handles)
    % hObject handle to pushbutton5 (see GCBO)
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)
    fprintf('\nrecognition...\n\n');
    load speakerData;
    load speakerGmm;
    speakerNum=length(speakerData);
    % Create an analog input object to communicate with the % data acquisition device.
    ai = analoginput('winsound');
    addchannel(ai, 1);
    % Configure the object to acquire 10 seconds of data at 8000 Hz.
    Fs = 8000;
    duration = 10;
    set(ai, 'SampleRate', Fs);
    set(ai, 'SamplesPerTrigger', duration*Fs);
    % Start the acquisition and retrieve the data.
    disp('Start speaking.')
    start(ai);
    testing_data = getdata(ai);
    disp('End of Recording.');
    delete(ai);
    match= MFCC_feature_compare(testing_data,speakerGmm,Fs,sp eakerNum);
    [~, index]=max(match);
    epInSampleIndex = epdByVol(testing_data, Fs); % endpoint detection
    testing_data=testing_data(epInSampleIndex(1):epInS ampleIndex(2)); % silence is not used
    MFcc=wave2mfcc(testing_data, Fs);
    Mfcc=sum(MFcc,2)/length(MFcc)-sum(sum(MFcc,2))/(length(MFcc)*13);
    for i=1:speakerNum
    mfcc(i,:)=sum(speakerData(i).mfcc,2)/length(speakerData(i).mfcc)-sum(sum(speakerData(i).mfcc))/(length(speakerData(i).mfcc)*13);
    c(i,1)=sum(mfcc(i,:).*Mfcc')/sqrt(sum(mfcc(i,:).^2)*sum(Mfcc.^2));
    end
    corr=((c-0.8)*5).*((c-0.8)>0);
    ec=exp(10*(c-1));
    %[y, fs]=audioread(['trainning\' speakerData(index,1).name]);
    %m= MFCC_feature_compare(y,speakerGmm,fs,speakerNum);
    %m1=max(m);
    %match1=(match-m1+30);
    %m2=(match1>0).*match1;
    %per=m2/30*100;

تاپیک های مشابه

  1. پردازش صوت
    نوشته شده توسط yavari در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: چهارشنبه 27 دی 1385, 23:39 عصر
  2. پردازش صوت
    نوشته شده توسط yavari در بخش VB.NET
    پاسخ: 1
    آخرین پست: دوشنبه 25 دی 1385, 21:46 عصر
  3. پردازش صوت
    نوشته شده توسط delphikar در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 1
    آخرین پست: سه شنبه 07 مهر 1383, 12:08 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •