17
EE599-020 Audio Signals and Systems Psychoacoustics (Masking) Kevin D. Donohue Electrical and Computer Engineering University of Kentucky

EE599-020 Audio Signals and Systems

  • Upload
    delano

  • View
    51

  • Download
    0

Embed Size (px)

DESCRIPTION

EE599-020 Audio Signals and Systems. Psychoacoustics (Masking) Kevin D. Donohue Electrical and Computer Engineering University of Kentucky. Critical Bands. - PowerPoint PPT Presentation

Citation preview

Page 1: EE599-020 Audio Signals and Systems

EE599-020Audio Signals and Systems

Psychoacoustics (Masking)Kevin D. Donohue

Electrical and Computer EngineeringUniversity of Kentucky

Page 2: EE599-020 Audio Signals and Systems

Critical BandsThe band-pass properties observed for the basilar membrane results in a frequency dependence for our ability to perceive loudness and detect tones in a complex excitation signal.The bandwidths of critical bands follow an approximate 1/3 to 1/6 octave relationship with the center frequency.

Hz 500for 26

1

500for 23

1

ccc

ccc

ffB

HzffB

Page 3: EE599-020 Audio Signals and Systems

Loudness and Critical BandTones separated by distances greater than the critical band are perceived louder than the same tones within a critical band.

Broadband noises spanning several critical bands are perceived louder than broadband noise of the same power within one critical band.

Page 4: EE599-020 Audio Signals and Systems

Example BroadbandA function was created to generate white Gaussian noise with unit power in a designated frequency band and specific sampling rate. A series of band pass filters and scalings were applied to keep the power in the noise constant with frequency bands reducing on a center frequency around 2120 Hz.

Page 5: EE599-020 Audio Signals and Systems

500 1000 1500 2000 2500 3000 3500 4000

0

0.5

1

1.5

2

2.5

x 10-3

Hertz

PD

S

Approximate Critical Band

Example Broadband Signal Spectra

Number of critical bands in each sound

14.78.12.21.00.50.2

Sound Sequence: Starting with the largest band

Page 6: EE599-020 Audio Signals and Systems

Broadband Noise Functionfunction [sig, t] = broadb(f1,f2,int,fs)% This function creates white Gaussian noise in the frequency band% starting with F1 and ending with F2 in Hertz, with sampling frequency % FS for a duration of INT seconds.%% [sig, t] = broadb(f1,f2,int,fs)%% The output is a row vector SIG containing the sampled points% of the noise. T is an optional output and is the time axis% assoicated with SIG. %% Written by Kevin D. Donohue ([email protected]) June 2003

t = [0:fix(fs*int)-1]/fs; % Create time axisord = round(.15*fs); % compute filter order to cover 150 msns = randn(1,length(t)+2*ord-2); % Generate WGN - full band% Create FIR filter to obtain the bandlimited white noiseamp = [0 0 1 1 0 0]; % Spectral amplitudes of filterfre = [0 f1-10 f1+10 f2-5 f2+5 fs/2]/(fs/2); % corresponding to these normalized frequeciesb = fir2(ord,fre,amp); % Generate filter coefficients sig = filtfilt(b,1,ns); % Filter signal and reversed version to eliminate boundary and delay effects% Normalize power to ensure constant levelsig = sig/std(sig);

Page 7: EE599-020 Audio Signals and Systems

Broadband Noise Script• % This script generates 6 example noise signals, with• % sucessively smaller bandwidths. The last 2 are within• % the critical band.• % The average spectrum (PSD) for each is plotted and the• % signals are concatenated together as save as a wave file.• % You need the functions BARKCOUNT and BROADB• % to run this script.• %• % Written by Kevin D. Donohue ([email protected])• % February 2004

• fs = 11025; % Sampling Frequency• dur = 2; % Sound duration in seconds• % Vectors describing the sucessive bandlimit on the sounds• f1 = [270, 1000, 1800, 2000, 2050, 2100]; % lower limit• % corresponding upper bandlimit• f2 = [4000, 3500, 2500, 2320, 2220, 2150];• % colors for the PSD plots• col = ['g', 'r', 'b', 'k', 'c', 'b'];• % Loop to create each sound and concatenate into one• % vector• fsig = []; % Initialize vector to concatenate sounds

for k=1:length(f1);• % Generate noise• no(k,:) = broadb(f1(k), f2(k), dur, fs);• fsig = [fsig, no(k,:)]; % Concatenate• % Count the bark (Critical Bands)• cb(k) = barkcount(f1(k),f2(k)); • % Compute PSD of noise • [p, fax] = psd(no(k,:),1024, fs, hamming(512));• figure(1);• % Plot PSD• lh = plot(fax,abs(p)/(length(no(k,:))),col(k))• set(lh,'LineWidth',2) % Make line thicker hold on• end• hold off• % Label figure• xlabel('Hertz')• ylabel('PDS')• % Write sound to wavefile• wavwrite(fsig/(max(abs(fsig)+eps)), fs, 'wgncritband.wav')

Page 8: EE599-020 Audio Signals and Systems

Example DiscussionWhy did the first 3 signals sound louder than the last 3 signals, even though they were all at the same power level?

If a tone was played at 2120 Hz with the sounds of this example, which broadband sounds would be more likely to mask it?

Page 9: EE599-020 Audio Signals and Systems

Example 2 TonesGenerate 2 tones in the same critical band (at 2000 and one at 2100 Hz). Play a sequence of the pure reference tone followed by a combination of the test and reference tones where the test tone is reduce by 5 dB each time. Count the number of times you heard the test tone. Repeat with test tone at 3090 Hz.

Page 10: EE599-020 Audio Signals and Systems

Example 2 Tones Spectrogram

Seconds

Her

tz

Masking Illustration: 2000 masking 2100

0 5 10 15 20 251500

2000

2500

3000

3500

20

25

30

35

40

45

dB 2000 Hz and2100 Hz pair

Page 11: EE599-020 Audio Signals and Systems

Example 2 Tones Spectrogram

Seconds

Her

tz

0 5 10 15 20 251500

2000

2500

3000

3500

20

25

30

35

40

45 2000 Hz and3090 Hz pair

Page 12: EE599-020 Audio Signals and Systems

2-Tone Function• function [v, t] = tonec(f,int,fs)• % This function will create a series of samples at sampling rate• % FS for a duration of INT seconds at frequencies in the frist column• % of vector F in Hertz. The second column of F will be the weight for • % each tone. If a second column is not given then an equal scaling of • % of will be given to each tone.• %• % [v, t] = tonec(f,int,fs)• %• % The output is a row vector V containing the sampled points• % T is an optional output and is the time axis assoicated with V.• %• % Written by Kevin D. Donohue ([email protected]) 6/2003• [r, c] = size(f); % Check dimension of f• % Ensure frequency values are in different rows• if c > 2 % if not transpose• f = f';• [r, c] = size(f);• end• % Check to see if coefficients for frequenies are provided• if c == 1 % If not set them = to one• f(:,2) = ones(length(f),1);• end• t = [0:fix(fs*int)-1]/fs; % Create time axis• v = zeros(size(t)); % initialize vector to accumulate multiple tones• for k=1:r• v = v + f(k,2)*sin(2*pi*t*f(k,1)); % Create sampled tone signal• end

Page 13: EE599-020 Audio Signals and Systems

2-Tone Script• % This script generates tone pair signals, with successively• % smaller amplitudes on a test to illustrate masking• % The signal pair are generate individually and concatenate• % together with silence and reference tones stuffed in between• % and saved as a wave file.• % This script needs the TONEC function to run.• %• % Written by Kevin D. Donohue ([email protected]) June 2003• fs = 11025; % Sampling Frequency• dur = 1; % Tone duration• reffre = 2000; % Reference tone• tfre = 2100; % Test tone with decreasing volume• % Vector with sequence of relative volume levels• tamp = 10.^([0 -5 -10 -15 -20 -25 -30 -35 -40 -45]/20);• reftone = tonec([reffre 1], dur, fs); % Generate Reference tone signal• outsig = []; % Initalize output matrix for concatenation • scil = zeros(1,round(fs*dur/2)); % Create silence interval• % Loop to build complex tone, concatenation with reference and rest of• % sequence• for k=1:length(tamp)• ttone = tonec([reffre 1; tfre tamp(k)], dur, fs);• outsig = [outsig scil reftone scil std(reftone)*ttone/std(ttone)];• end

• (Continued on next slide …)

Page 14: EE599-020 Audio Signals and Systems

2-Tone Script - Continued• % Write test signal• wavwrite(outsig/(max(abs(outsig)+eps)), fs, 'testttsig2.wav')• % Create and plot spectrogram• [B,F,T] = SPECGRAM(outsig,4*512,fs,hamming(4*256),4*128);• imagesc(T,F,20*log10(abs(B)+10))• axis('xy')• axis([T(1) T(end) 1500 3500])• xlabel('Seconds')• ylabel('Hertz')• title(['Masking Illustration: ' num2str(reffre) ' masking ' num2str(tfre)])• colorbar

Page 15: EE599-020 Audio Signals and Systems

2-Tone DiscussionHow many times did you hear the test tone for the 2000 and 2100 Hz pair? How many times did you hear the test tone for the 2000 and 3090 Hz pair?Estimate the masking threshold for tones separated by 100 Hz near 2000 Hz.Estimate the masking threshold for tones separated by 1090 Hz near 2000 Hz.Why is there a difference?

Is it possible to eliminate the beat frequencies for closely place tones?

Page 16: EE599-020 Audio Signals and Systems

Gammatone FiltersThe Gammatone filter:Is physically realizable (causal)

Provides a good fit to the impulse response of the auditory nerve fibers (Carney and Yin 1988, J. Neurophys. 60, 1653-1677).

Page 17: EE599-020 Audio Signals and Systems

Gammatone Filters

The Gammatone filter impulse response:

0for 00for )2cos()2exp(

)()1(

tttfbttb

th c

where = 4, fc is the center frequency, and b is set to match the bandwidth of the critical band.