Presentation is loading. Please wait.

Presentation is loading. Please wait.

Spectral Analysis & Spectrogram SASPL Cheolwoo Jo.

Similar presentations


Presentation on theme: "Spectral Analysis & Spectrogram SASPL Cheolwoo Jo."— Presentation transcript:

1 Spectral Analysis & Spectrogram SASPL Cheolwoo Jo

2 Contents Spectral Analysis Spectral Analysis Spectrogram Spectrogram Narrow Band Narrow Band Wide Band Wide Band Analysis of Spectrogram Analysis of Spectrogram AR, MA, ARMA model of Speech AR, MA, ARMA model of Speech

3 Spectral Analysis

4 Spectrogram in matlab [B,F,T] = SPECGRAM(A,NFFT,Fs,WINDOW,NOVERLAP) [B,F,T] = SPECGRAM(A,NFFT,Fs,WINDOW,NOVERLAP) A: Speech Signal A: Speech Signal NFFT: Number of samples NFFT: Number of samples Fs: Sampling Frequency Fs: Sampling Frequency Window: Type of Window Window: Type of Window NOVERLAP: Number of Overlapping signal NOVERLAP: Number of Overlapping signal

5 Spectrogram in auditory toolbox function [array,raw] = spectrogram(wave,segsize,nlap,ntrans); %function array = spectrogram(wave,segsize,nlap,ntrans); % defaults spectrogram(wave,128,8,4) % nlap is number of hamming windows overlapping a point; % ntrans is factor by which transform is bigger than segment; % returns a spectrogram 'array' with fourth root of power, % filter smoothed and formatted for display. % Added option to return raw spectrogram.... Malcolm 5/26/95 % Added code so that input could be any direction... Malcolm 5/26/95 % (c) 1998 Interval Research Corporation if nargin < 4; ntrans=4; end if nargin < 3; nlap=8; end if nargin < 2; segsize=128; end [r c] = size(wave); if (r < c) wave = filter([ ],[1],wave'); else wave = filter([ ],[1],wave); end

6 s = length(wave); nsegs = floor(s/(segsize/nlap))-nlap+1; array = zeros(ntrans/2*segsize,nsegs); window = *cos(2*pi/(segsize+1)*(1:segsize)'); for i = 1:nsegs seg = zeros(ntrans*segsize,1); % leave half full of zeroes seg(1:segsize) =... window.*wave(((i-1)*segsize/nlap+1):((i+nlap-1)*segsize/nlap)); seg = abs(fft(seg)); % reverse for image display array(:,i) = seg(((ntrans/2*segsize)+1):(ntrans*segsize)); end if nargout > 1 raw = array; end

7 array = array.* array; % back into power domain for smoothing for i=1:nsegs % smooth the spectral slices array(:,i) = filter([.2 1.2],[1],array(:,i)); end for i=1:ntrans/2*segsize % smooth the channels array(i,:) = filter([.2 1.2],[1],array(i,:)); end % compress with square root of amplitude (fourth root of power) off = *max(max(array)); % low end stabilization offset, array = (off+array).^0.25-off^0.25; % better than a threshold hack! array = 255/max(max(array))*array;

8 Spectrogram level scaling Log|x[k]| 2 Log|x[k]| 2 Log Energy(dB) Gray Intensity Black White 60dB

9 Specgram SPECGRAM(A,F,Fs,WINDOW) SPECGRAM(A,F,Fs,WINDOW) Matlab Matlab A: Speech A: Speech F: Vector of Frequencies F: Vector of Frequencies Fs: Sampling Frequency Fs: Sampling Frequency Window: Type of Window Function Window: Type of Window Function


Download ppt "Spectral Analysis & Spectrogram SASPL Cheolwoo Jo."

Similar presentations


Ads by Google