اطلاعیه

Collapse
No announcement yet.

پروژه پردازش گفتار با HMM

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #31
    پاسخ : پروژه پردازش گفتار با HMM

    نوشته اصلی توسط هـادی
    با توضیحی که نوشتی باز هم متوجه نشدم که nex چیه.
    چون از HMM استفاده می کنی، نیازی نیست طول بردارهای ویژگی مساوی باشه.
    نمیدونم چند نمونه کافیه چون روی صوت کار نکردم ولی روی یک دیتابیس خروجی MFCC ارقام عربی موجود در اینترنت که تست کرده بودم، برای هر رقم (بین 0 تا 9) حدود 660 نمونه آموزشی داشتم که به بالای 90 درصد شناسایی صحیح رسیدم.
    اگه افراد متفاوت باشن طبیعتاً کار سخت تر میشه و درصد تشخیص درست پایین میاد.
    بله نظر من اینه که خروجی هر مرحله ذخیره بشه تا انعطاف پذیری، خطایابی و تحلیل نتایج هر مرحله امکان پذیر باشه.
    راستش من از یک تولباکس آماده استفاده میکنم که میتونی از http://www.cs.ubc.ca/~murphyk/Software/HMM.zip دانلود کنی
    توضیحات پارامترها هم http://www.cs.ubc.ca/~murphyk/Softwa...hmm_usage.html
    اینو یه آقایی به نام Kevin Murphy در سال 1998 نوشته که آخرین ورژن قابل دسترسش هست که 2005 پ کردند
    فکر کنم به خود لینک نگاهی بندازی بهتر از توضیحات من باشه
    فقط راجع به تولباکس اینو بگم که برای اجرا باید dhmm_em_demo.m رو اجرا کنی و بقیه کد ها باید مسیرشون Add Path بشه تو کد اصلی تا جواب بگیری!
    کد های MFCC هم که استفاده کردم اینا هستن
    کد:
    [left]  % Clean-up MATLAB's environment
      clear all; close all; clc; 
    
      
      % Define variables
      Tw = 25;        % analysis frame duration (ms)
      Ts = 10;        % analysis frame shift (ms)
      alpha = 0.97;      % preemphasis coefficient
      M = 20;         % number of filterbank channels 
      C = 12;         % number of cepstral coefficients
      L = 22;         % cepstral sine lifter parameter
      LF = 300;        % lower frequency limit (Hz)
      HF = 3700;       % upper frequency limit (Hz)
      wav_file = 'sp10.wav'; % input audio filename
    
      % Read speech samples, sampling rate and precision from file
      [ speech, fs, nbits ] = wavread( wav_file );
      
      %extra plot
      waveFile='sp10.wav';
      [y2, fs2, nbits2]=wavread(waveFile);
      a2=0.95;
      y22 = filter([1, -a2], 1, y2);
      time=(1:length(y2))/fs2;
      wavwrite(y22, fs2, nbits2, 'P.E.sp10.wav'); 
    
      subplot(2,1,1);
      plot(time, y2);
      title('Original wave: s(n)');
      subplot(2,1,2);
      plot(time, y22);
      title(sprintf('After pre-emphasis: s_2(n)=s(n)-a*s(n-1), a=%f', a2));
    
      subplot(2,1,1);
      set(gca, 'unit', 'pixel');
      axisPos=get(gca, 'position');
      uicontrol('string', 'Play', 'position', [axisPos(1:2), 60, 20], 'callback', 'sound(y2, fs)');
      subplot(2,1,2);
      set(gca, 'unit', 'pixel');
      axisPos=get(gca, 'position');
      uicontrol('string', 'Play', 'position', [axisPos(1:2), 60, 20], 'callback', 'sound(y22, fs)');
    
      
    
      % Feature extraction (feature vectors as columns)
      [ MFCCs, FBEs, frames ] = ...
              mfcc( speech, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L );
    
    
      % Generate data needed for plotting 
      [ Nw, NF ] = size( frames );             % frame length and number of frames
      time_frames = [0:NF-1]*Ts*0.001+0.5*Nw/fs;      % time vector (s) for frames 
      time = [ 0:length(speech)-1 ]/fs;          % time vector (s) for signal samples 
      logFBEs = 20*log10( FBEs );             % compute log FBEs for plotting
      logFBEs_floor = max(logFBEs(:))-50;         % get logFBE floor 50 dB below max
      logFBEs( logFBEs<logFBEs_floor ) = logFBEs_floor;  % limit logFBE dynamic range
    
    
      % Generate plots
      figure('Position', [30 30 800 600], 'PaperPositionMode', 'auto', ... 
           'color', 'w', 'PaperOrientation', 'landscape', 'Visible', 'on' ); 
    
      subplot( 311 );
      plot( time, speech, 'k' );
      xlim( [ min(time_frames) max(time_frames) ] );
      xlabel( 'Time (s)' ); 
      ylabel( 'Amplitude' ); 
      title( 'Speech waveform'); 
    
      subplot( 312 );
      imagesc( time_frames, [1:M], logFBEs ); 
      axis( 'xy' );
      xlim( [ min(time_frames) max(time_frames) ] );
      xlabel( 'Time (s)' ); 
      ylabel( 'Channel index' ); 
      title( 'Log (mel) filterbank energies'); 
    
      subplot( 313 );
      imagesc( time_frames, [1:C], MFCCs(2:end,:) ); % HTK's TARGETKIND: MFCC
      %imagesc( time_frames, [1:C+1], MFCCs );    % HTK's TARGETKIND: MFCC_0
      axis( 'xy' );
      xlim( [ min(time_frames) max(time_frames) ] );
      xlabel( 'Time (s)' ); 
      ylabel( 'Cepstrum index' );
      title( 'Mel frequency cepstrum' );
    
      % Set color map to grayscale
      colormap( 1-colormap('gray') );[/left]
    آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

    دیدگاه


      #32
      پاسخ : پروژه پردازش گفتار با HMM

      در HMM مقدار state برای اعداد 0تا 9 رو چه مقداری قرار بدیم مناسبتر هست؟ :read:
      و هنوز متوجه نشدم خروجی MFCC باید کجا ورودی قرار بگیره؟ :sad: پارامترش چیه؟
      از دوستان کسی baum welch کارکرده؟
      آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

      دیدگاه


        #33
        پاسخ : پروژه پردازش گفتار با HMM

        هر دو مورد رو قبلاً توی همین تاپیک جواب دادم:
        1- اعداد 3 تا 30 رنج خوبی برای تست هستن و باید با سعی و خطا بهترین مقدار (کمترین خطا) رو به دست بیاری.
        2- خروجی MFCC برداری از اعداد حقیقیه که باید به برداری از نمادها (اعداد طبیعی محدود) تبدیل بشه که میتونی از GMM یا روش های دیگه Clustering (خوشه بندی) استفاده کنی و خروجی این مرحله رو به عنوان مشاهدات (Observation) وارد مدل کنی.
        لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
        لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
        با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
        اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
        يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

        دیدگاه


          #34
          پاسخ : پروژه پردازش گفتار با HMM

          ی سوال :nerd:
          الان چطور تو مد آموزش هست و بعدش چطور قراره ما بهش ورودی بدیم و خروجی بگیریم
          بنطرم خیلی سوال اب....نه ای پرسیدم
          چون دیگه واقعا هنگ کردم :angry: با این HMM
          آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

          دیدگاه


            #35
            پاسخ : پروژه پردازش گفتار با HMM

            اگه دیتا آماده است و به مرحله آموزش و تست رسیدی، توی یک فایل به صورت خیلی خلاصه توی انجمن توضیح دادم که باید بگردم لینکشو پیدا کنم (شاید خودت قبلاً دیده باشی). به هر حال اگه باز هم مشکل داشتی بگو یک برنامه نمونه بذارم.
            لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
            لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
            با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
            اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
            يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

            دیدگاه


              #36
              پاسخ : پروژه پردازش گفتار با HMM

              نوشته اصلی توسط هـادی
              اگه دیتا آماده است و به مرحله آموزش و تست رسیدی، توی یک فایل به صورت خیلی خلاصه توی انجمن توضیح دادم که باید بگردم لینکشو پیدا کنم (شاید خودت قبلاً دیده باشی). به هر حال اگه باز هم مشکل داشتی بگو یک برنامه نمونه بذارم.
              برنامه نوشته شده و آماده هست فقط مونده ورودی برای تست و اینکه بتونم این داده ها که از تست هستند رو بصورت بانک ذخیره کنم(که بلد نیستم ولی یاد میگیرم :icon_razz
              اگر لطف کنی و یک برنامه نمونه بذاری ازت ممنون میشم
              آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

              دیدگاه


                #37
                پاسخ : پروژه پردازش گفتار با HMM

                یه نگاهی به برنامه زیر بنداز:

                http://vip.eca.ir/sharing/uploads/13986139451.rar

                لینک دیتابیس

                متأسفانه اصلاً وقت و حوصله توضیح دادن درباره برنامه رو ندارم، مطمئنم خودت نگاه بندازی متوجه میشی.

                موفق باشی.
                لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                دیدگاه


                  #38
                  پاسخ : پروژه پردازش گفتار با HMM

                  نوشته اصلی توسط هـادی
                  یه نگاهی به برنامه زیر بنداز:

                  http://www.mediafire.com/download/pympla3h9jq3ydf/Speech_HMM.rar

                  این هم دیتابیسش:

                  https://archive.ics.uci.edu/ml/datasets/Spoken+Arabic+Digit

                  متأسفانه اصلاً وقت و حوصله توضیح دادن درباره برنامه رو ندارم، مطمئنم خودت نگاه بندازی متوجه میشی.

                  موفق باشی.
                  خیلی عالی بود مهندس :job:
                  آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

                  دیدگاه


                    #39
                    پاسخ : پروژه پردازش گفتار با HMM

                    اینو خوندم و متوجه شدم روند کارش چطور بوده؟
                    چنتا سوال برام پیش اومد: :nerd:
                    1-فریم هاش رو چطوری 4-93 در نظر گرفته؟ oo: یعنی بعضی اعداد با 4 فریم و در بعضی دیگه 93 فریم باید داشته باشیم تا الگوریتم درست جواب بده ؟
                    2-لینک *.mat رو اگر ممکنه قرار بدید برای دیتا بیس (میشه با همین ترین بسازمش؟)
                    آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

                    دیدگاه


                      #40
                      پاسخ : پروژه پردازش گفتار با HMM

                      نمیدونم 4 و 93 کجاشه.
                      نمونه های آموزش و تست توسط برنامه extract از روی فایلهایی که به پست قبلی اضافه کردم ساخته میشه.
                      لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                      لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                      با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                      اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                      يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                      دیدگاه


                        #41
                        پاسخ : پروژه پردازش گفتار با HMM

                        نوشته اصلی توسط هـادی
                        نمیدونم 4 و 93 کجاشه.
                        نمونه های آموزش و تست توسط برنامه extract از روی فایلهایی که به پست قبلی اضافه کردم ساخته میشه.
                        Each line in Train_Arabic_Digit.txt or Test_Arabic_Digit.txt represents 13 MFCCs coefficients in
                        the increasing order separated by spaces. This corresponds to one analysis frame.
                        Lines are organized into blocks, which are a set of [glow=red,2,300]4-93[/glow] lines separated by blank lines and
                        corresponds to a single speech utterance of an spoken Arabic digit with [glow=red,2,300]4-93 frames[/glow].
                        Each spoken digit is a set of consecutive blocks.
                        آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

                        دیدگاه


                          #42
                          پاسخ : پروژه پردازش گفتار با HMM

                          طول زمانی همه فریم ها یکسانه(مثلاً 50 میلی ثانیه) ولی چون ارقام مختلف طول متفاوتی دارند و افراد مختلف هم اونها رو با طول متفاوت میگن، طول فریم ها ثابت نیست و کوتاه ترین رقم گفته شده 4 فریم و بزرگترین رقم هم 93 تا شده که تأثیری در برنامه نداره.
                          لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                          لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                          با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                          اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                          يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                          دیدگاه


                            #43
                            پاسخ : پروژه پردازش گفتار با HMM

                            تازه متوجه شدم :redface:
                            خودم دارم یه دیتا بیس درست میکنم برای اعداد فارسی
                            ولی نمیدونم چطور باید خروجی MFCC همه سیگنال ها رو در یک ماتریس ذخیره کنم؟ ( مثلا دستی کپی کنم!!! :sad
                            با استادمون صحبت کردم گفتش خروجی MFCC برای یه سیگنال ورودی یه سطر از ماتریس دیتا بیس میشه!! oo:
                            ولی الان برای من 14 سطر داره !!! oo:
                            C = 13; % number of cepstral coefficients که14 سطر رو به وجود میاره

                            % N is the number of cepstral coefficients
                            % (including the 0th coefficient)
                            ولی ما N رو انتخاب نمیکنیم!!!
                            آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

                            دیدگاه


                              #44
                              پاسخ : پروژه پردازش گفتار با HMM

                              خیلی خوبه. ساختن دیتابیس خودش یک کار ارزشمند علمیه که در صورتی که وقت و حوصله بذاری در حد یک مقاله کنفرانس ارزش داره.
                              منظورتو درست متوجه نشدم، توی حلقه که بذاری همه چیز اکی میشه.
                              دیتابیسی که من گذاشتم که برنامه تولید نمونه های آموزشی و آزمایشی با فرمت متلب هم گذاشتم. یک بار تبدیل کن دیگه به دیتابیس اصلی کاری نداشته باش.
                              منظور از C و N چیه؟ اگه دیتابیس عربیه که باید بگم تعداد ضرایب کپسترال ثابته و نمیشه کاریش کرد. ولی اگه خودت دیتابیس صوت تهیه کردی و میخوای MFCC بگیری برنامه نمونه هم توی انجمن هست(توی یکی از پست های خودم توی قسمت پردازش صوت هم یک نمونه هست) هم توی اینترنت.
                              لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                              لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                              با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                              اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                              يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                              دیدگاه


                                #45
                                پاسخ : پروژه پردازش گفتار با HMM

                                نوشته اصلی توسط هـادی
                                خیلی خوبه. ساختن دیتابیس خودش یک کار ارزشمند علمیه که در صورتی که وقت و حوصله بذاری در حد یک مقاله کنفرانس ارزش داره.
                                منظورتو درست متوجه نشدم، توی حلقه که بذاری همه چیز اکی میشه.
                                دیتابیسی که من گذاشتم که برنامه تولید نمونه های آموزشی و آزمایشی با فرمت متلب هم گذاشتم. یک بار تبدیل کن دیگه به دیتابیس اصلی کاری نداشته باش.
                                منظور از C و N چیه؟ اگه دیتابیس عربیه که باید بگم تعداد ضرایب کپسترال ثابته و نمیشه کاریش کرد. ولی اگه خودت دیتابیس صوت تهیه کردی و میخوای MFCC بگیری برنامه نمونه هم توی انجمن هست(توی یکی از پست های خودم توی قسمت پردازش صوت هم یک نمونه هست) هم توی اینترنت.
                                راستش نتونستم از دیتا بیس تو متلب استفاده کنم :sad:
                                چیزی که خودم به ذهنم رسیده بود این بود که همه فایل ها رو دستی به MFCC بدم بعد در یک فایل جدا ذخیرش کنم!! :job:(چطور باید تو لوپ بذارم اذعان میکنم بلد نیستم )
                                اسم فایل دیتا بیسی که گذاشتید چیه؟فرمتش؟*.mat ؟
                                C ضرایب MFCC یعنی number of cepstral coefficients :eek:
                                n هم داخل خود توابع MFCC ثابته و تغییر نمیکنه!! :eek:
                                شما خودتون دیتا بیس تهیه نکردی؟ در صورت + بودن میشه بگی چکار کردی؟
                                آنقدر شکست میآ‌خورم تا راه شکست دادن را بیاموزم

                                دیدگاه

                                لطفا صبر کنید...
                                X