sound normalization made distortion bigger
Afficher commentaires plus anciens
Hi.. I normalized some wav files using the following code. The reason to normalize is that I need the sound to have the same power.
When I played it in low volume everything is okay. But when I get the volume up, the sounds get terrible and distorted.
What is going on?
data_dir = sprintf('%s/data/audio_wav/Uniq_uncued',root_dir);
% Get a list of all files in the directory with the .wav extension.
files = dir(sprintf('%s/*.wav', data_dir)); %we only want control for cues.
%% Loop through each file
for idx = 1:length(files)
% read file
file = sprintf('%s/%s', data_dir, files(idx).name);
% get sound
[y,Fs] = audioread(file);
% get sound power
signalPower = sum(y.^2,1)/size(y,1);
%playsound
soundsc(y,Fs); pause(3);
%normalize power (L2 norm normalization)
new_y = y ./ sqrt( signalPower )/10;
% check sound power
new_signalPower = sum(new_y.^2,1)/size(new_y,1);
%playsound
soundsc(new_y,Fs); pause(3);
% This part of the code is trying to prevent the distortion (got it from a post, but it is not working)
yInt = new_y * 32768;
yInt(yInt == 32768) = 32767;
% save
[pathstr, name, ext] = fileparts(file);
audiowrite(sprintf('%s/%s_norm.wav', data_dir, name), yInt, Fs);
end
Thanks
1 commentaire
L
le 26 Oct 2023
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Audio I/O and Waveform Generation dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!