Mercurial > hg > audio-degradation-toolbox
diff demo_degradationUnits.m @ 28:76f45f5c9afd DoP tip
- added units
* adaptiveEqualizer
* applyMfccMeanAdaption
- added corresponding data files for presets
- modified applyImpulseReponse to use the estimated average group delay to adjust
the output audio and keep the timestamps as is (was vice versa before)
- added new units demos, incl one for applyLowpass
author | SebastianEwert |
---|---|
date | Tue, 21 Jan 2014 18:08:28 +0000 |
parents | 48e065a17454 |
children |
line wrap: on
line diff
--- a/demo_degradationUnits.m Wed Nov 13 16:51:34 2013 +0000 +++ b/demo_degradationUnits.m Tue Jan 21 18:08:28 2014 +0000 @@ -72,137 +72,6 @@ end %% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.snrRatio = 10; % in dB - parameter.loadInternalSound = 1; - parameter.internalSound = 'PubEnvironment1'; - f_audio_out = degradationUnit_addSound(f_audio, samplingFreq, [], parameter); - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_02_addSound_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_02_addSound_file%d.png',k))) - end -end; - -%% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.dsFrequency = 4000; - f_audio_out = degradationUnit_applyAliasing(f_audio, samplingFreq, [], parameter); - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_03_applyAliasing_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_03_applyAliasing_file%d.png',k))) - end -end; - -%% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.percentOfSamples = 10; % signal is scaled so that n% of samples clip - f_audio_out = degradationUnit_applyClippingAlternative(f_audio, samplingFreq, [], parameter); - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_04_applyClipping_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_04_applyClipping_file%d.png',k))) - end -end; -%% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.compressorSlope = 0.9; - parameter.normalizeOutputAudio = 1; - f_audio_out = degradationUnit_applyDynamicRangeCompression(f_audio, samplingFreq, [], parameter); - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_05_applyDynamicRangeCompression_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_05_applyDynamicRangeCompression_file%d.png',k))) - end -end; - -%% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.nApplications = 5; - f_audio_out = degradationUnit_applyHarmonicDistortion(f_audio, samplingFreq, [], parameter); - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_06_applyHarmonicDistortion_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_06_applyHarmonicDistortion_file%d.png',k))) - end -end; - -%% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.LameOptions = '--preset cbr 32'; - f_audio_out = degradationUnit_applyMp3Compression(f_audio, samplingFreq, [], parameter); - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_07_applyMp3Compression_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_07_applyMp3Compression_file%d.png',k))) - end -end; - -%% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.changeInPercent = +5; - f_audio_out = degradationUnit_applySpeedup(f_audio, samplingFreq, [], parameter); - - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_08_applySpeedup_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_08_applySpeedup_file%d.png',k))) - end -end; - -%% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.intensityOfChange = 3; - parameter.frequencyOfChange = 0.5; - f_audio_out = degradationUnit_applyWowResampling(f_audio, samplingFreq, [], parameter); - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_09_applyWowResampling_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_09_applyWowResampling_file%d.png',k))) - end -end; - -%% -for k=1:length(filenames) - [f_audio,samplingFreq]=wavread(filenames{k}); - - parameter.stopFrequency = 1000; - f_audio_out = degradationUnit_applyHighpassFilter(f_audio, samplingFreq, [], parameter); - - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_10_applyHighpassFilter_file%d.wav',k))); - if createSpectrograms - [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_10_applyHighpassFilter_file%d.png',k))) - end -end; - - -%% % Some degradations delay the input signal. If some timepositions are given % via timepositions_beforeDegr, the corresponding positions will be returned % in timepositions_afterDegr. @@ -223,10 +92,197 @@ fprintf('degradation_applyFirFilter: adjusting time positions\n'); for m=1:length(timepositions_afterDegr) fprintf('%g -> %g\n',timepositions_beforeDegr(m),timepositions_afterDegr(m)); end - wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_11_applyImpulseResponse_file%d.wav',k))); + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_02_applyImpulseResponse_file%d.wav',k))); if createSpectrograms [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); - figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_11_applyImpulseResponse_file%d.png',k))) + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_02_applyImpulseResponse_file%d.png',k))) end end; +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.snrRatio = 10; % in dB + parameter.loadInternalSound = 1; + parameter.internalSound = 'PubEnvironment1'; + f_audio_out = degradationUnit_addSound(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_03_addSound_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_03_addSound_file%d.png',k))) + end +end; + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.dsFrequency = 4000; + f_audio_out = degradationUnit_applyAliasing(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_04_applyAliasing_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_04_applyAliasing_file%d.png',k))) + end +end; + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.percentOfSamples = 10; % signal is scaled so that n% of samples clip + f_audio_out = degradationUnit_applyClippingAlternative(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_05_applyClipping_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_05_applyClipping_file%d.png',k))) + end +end; +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.compressorSlope = 0.9; + parameter.normalizeOutputAudio = 1; + f_audio_out = degradationUnit_applyDynamicRangeCompression(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_06_applyDynamicRangeCompression_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_06_applyDynamicRangeCompression_file%d.png',k))) + end +end; + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.nApplications = 5; + f_audio_out = degradationUnit_applyHarmonicDistortion(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_07_applyHarmonicDistortion_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_07_applyHarmonicDistortion_file%d.png',k))) + end +end; + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.LameOptions = '--preset cbr 32'; + f_audio_out = degradationUnit_applyMp3Compression(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_08_applyMp3Compression_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_08_applyMp3Compression_file%d.png',k))) + end +end; + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.changeInPercent = +5; + f_audio_out = degradationUnit_applySpeedup(f_audio, samplingFreq, [], parameter); + + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_09_applySpeedup_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_09_applySpeedup_file%d.png',k))) + end +end; + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.intensityOfChange = 3; + parameter.frequencyOfChange = 0.5; + f_audio_out = degradationUnit_applyWowResampling(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_10_applyWowResampling_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_10_applyWowResampling_file%d.png',k))) + end +end; + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.stopFrequency = 1000; + f_audio_out = degradationUnit_applyHighpassFilter(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_11_applyHighpassFilter_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_11_applyHighpassFilter_file%d.png',k))) + end +end; + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + parameter.stopFrequency = 1000; + f_audio_out = degradationUnit_applyLowpassFilter(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_12_applyLowpassFilter_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_12_applyLowpassFilter_file%d.png',k))) + end +end; + + +%% +for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + % There are four ways to specify the destination mean spectrum: 1. by + % loading example files provided with the toolbox, 2. by using specific + % noise "color" profiles, 3. by providing the destination mean spectrum + % using the parameter destMagFreqResp, 4. by providing audio data from + % which the destination mean spectrum is computed. + parameter.loadInternalMagFreqResp = 1; + parameter.internalMagFreqResp = 'Beethoven_Appasionata_Rwc'; + f_audio_out = degradationUnit_adaptiveEqualizer(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_13_adaptiveEqualizer_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_13_adaptiveEqualizer_file%d.png',k))) + end +end; + +%% +if 1 + for k=1:length(filenames) + [f_audio,samplingFreq]=wavread(filenames{k}); + + [parameter.audioDataForDestMfcc,parameter.audioDataForDestMfcc_sf]=wavread('testdata/RWC_P009m_drum.wav'); + + % After this unit, the mean MFCC vector of f_audio_out is almost identical to + % the one of RWC_P009m_drum.wav + parameter.visualizations = createSpectrograms; + f_audio_out = degradationUnit_applyMfccMeanAdaption(f_audio, samplingFreq, [], parameter); + + wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_14_applyMfccMeanAdaption_file%d.wav',k))); + if createSpectrograms + [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq); + figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_14_applyMfccMeanAdaption_file%d.png',k))) + end + end +end + + +