ANALYSIS OF VOICE AND FM MASKING PROTOTYPE - Tokyo Office (Recorded 03 July, 2006)

Contents

clear all
close all

%Path to save the sounds for html links
pathsounds = '~/WWW/yamaha/documentation/sounds/';

%ext_jConv; %This is just a script to extract the part to analyse
            %comment this line out after first extraction.

Spectrogram of Voice Recording

This is a small excerpt of the voice recorded in the hallway at the Tokyo office.

[y,fs,nbits]=wavread('~/yamaha/scripts/mnoise/jConv_adjacent_07dir1.wav');
figure
spectrogram(y,2^9,[],2^11,fs,'yaxis');
title('Spectrogram, Japaneese voice, source in the corridor, Tokyo Office')
[S,F,T,P] = spectrogram(y,2^10,[],2^11,fs,'yaxis');
%set(gca,'YScale','log');

wavwrite(y,fs,[pathsounds 'jp_clean.wav'])

You can listen to the sound here. NOTE: The volume is very low.

http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/sounds/jp_clean.wav

Remarks on the Spectrum

Almost all the Energy is concentrated bellow 600~700 Hz. All the rest seems to be filtered out by the wall. The lowest region (where the pitch information is located) has three close bands at around 100, 350, and 650 Hz.

Masking Noise Generation

For different center frequencies, the critical band is computed using the Moore's formula (ebr).

% For center 250 Hz
fc = 250; fm = 4; amp = fc*0.05;
delf = ebr(fc); dur = length(y)/fs;
[b,a] = bpdiir(fc,delf,fs); %design IIR filter design
%freqz(b,a)
noisefm1 = noisefm(fs,b,a,dur,fm,amp); %FM modulation
clear b, a;

% For center 350 Hz
fc = 350; fm = 3; amp = fc*0.03;
delf = ebr(fc); dur = length(y)/fs;
[b,a] = bpdiir(fc,delf,fs); %design IIR filter design
noisefm2 = noisefm(fs,b,a,dur,fm,amp); %FM modulation
clear b, a;

% For center 500 Hz
fc = 500; fm = 5; amp = fc*0.02;
delf = ebr(fc); dur = length(y)/fs;
[b,a] = bpdiir(fc,delf,fs); %design IIR filter design
noisefm3 = noisefm(fs,b,a,dur,fm,amp); %FM modulation
clear b, a;

Comments

The last frequency 500Hz seems to be key in eliminating all the voice, when used toguether with 250 and 300 Hz.

Addition of noise to voice

total_noise = 5*noisefm1' + 2*noisefm2' + 0.5*noisefm3';
total = y + total_noise;

figure
spectrogram(total,2^9,[],2^11,fs,'yaxis');
title('Spectrogram of the FM modulated Filtered Noise')

wavwrite(total,fs,[pathsounds 'jp_fm1.wav'])

http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/sounds/jp_fm1.wav

More Examples with different combinations

2. Just a Band on 250

fc1=250; fm1=2; amp_mod1=0.03; amp1=5;
fc2=350; fm2=4; amp_mod2=0.03; amp2=0;
fc3=500; fm3=4; amp_mod3=0.03; amp3=0;
total = fmnoise3(y,fs,fc1,fm1,amp_mod1,amp1,...
			  fc2,fm2,amp_mod2,amp2,...
			  fc3,fm3,amp_mod3,amp3);
wavwrite(total,fs,[pathsounds 'jp_fm2.wav'])
Error using ==> evalin
Undefined command/function 'fmnoise3'.

http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/sounds/jp_fm2.wav

3. Just a Band at 350

fc1=250; fm1=4; amp_mod1=0.03; amp1=0;
fc2=350; fm2=3; amp_mod2=0.06; amp2=2;
fc3=500; fm3=4; amp_mod3=0.03; amp3=0;
total = fmnoise3(y,fs,fc1,fm1,amp_mod1,amp1,...
			  fc2,fm2,amp_mod2,amp2,...
			  fc3,fm3,amp_mod3,amp3);
wavwrite(total,fs,[pathsounds 'jp_fm3.wav'])

http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/sounds/jp_fm3.wav

4. Just a Band at 500

fc1=250; fm1=4; amp_mod1=0.03; amp1=0;
fc2=350; fm2=4; amp_mod2=0.03; amp2=0;
fc3=500; fm3=4; amp_mod3=0.03; amp3=0.5;
total = fmnoise3(y,fs,fc1,fm1,amp_mod1,amp1,...
			  fc2,fm2,amp_mod2,amp2,...
			  fc3,fm3,amp_mod3,amp3);
wavwrite(total,fs,[pathsounds 'jp_fm4.wav'])

http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/sounds/jp_fm4.wav

5. Combination

fc1=250; fm1=5; amp_mod1=0.06; amp1=5;
fc2=350; fm2=4; amp_mod2=0.04; amp2=2;
fc3=500; fm3=2; amp_mod3=0.02; amp3=0.5;
total = fmnoise3(y,fs,fc1,fm1,amp_mod1,amp1,...
			  fc2,fm2,amp_mod2,amp2,...
			  fc3,fm3,amp_mod3,amp3);
wavwrite(total,fs,[pathsounds 'jp_fm5.wav'])

http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/sounds/jp_fm5.wav

6. Combination (just 250 and 500)

fc1=250; fm1=5; amp_mod1=0.06; amp1=5;
fc2=350; fm2=4; amp_mod2=0.04; amp2=0;
fc3=500; fm3=2; amp_mod3=0.02; amp3=0.5;
total = fmnoise3(y,fs,fc1,fm1,amp_mod1,amp1,...
			  fc2,fm2,amp_mod2,amp2,...
			  fc3,fm3,amp_mod3,amp3);
wavwrite(total,fs,[pathsounds 'jp_fm6.wav'])

http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/sounds/jp_fm6.wav

7. Combination (just 250 and 350)

fc1=250; fm1=5; amp_mod1=0.06; amp1=5;
fc2=350; fm2=4; amp_mod2=0.04; amp2=2;
fc3=500; fm3=2; amp_mod3=0.02; amp3=0;
total = fmnoise3(y,fs,fc1,fm1,amp_mod1,amp1,...
			  fc2,fm2,amp_mod2,amp2,...
			  fc3,fm3,amp_mod3,amp3);
wavwrite(total,fs,[pathsounds 'jp_fm7.wav'])

http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/sounds/jp_fm7.wav