Bonjour,
Je suis en train de réaliser un programme sous Matlab (R2009b) dans le domaine de l'audio. Je commence par charger mon fichier audio. Ensuite, je le convertis en dB afin de réaliser le traitement que je désire. Pour finir, je souhaite l'enregistrer pour pouvoir le conserver et l'écouter.
Voici un extrait du code que j'ai développé :
Mon fichier audio1 est en dB, j'ai donc l'exception suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 [audio,Fs,B] = wavread('G1.wav'); % audio : contient les données du fichier % FS : fréquence d'échantillonnage des signaux % B : nombre de bits considérés pour la quantification des signaux [N,p] = size(audio); % N : nombre d'échantillons % p : nombre de pistes (1 : mono, 2 : stéréo) % Conversion de mon signal audio en dB audio_dB = zeros(N,2); for i = 1:N if audio(i,1) == 0 audio_dB(i,1) = -90; else audio_dB(i,1) = 20*log10(abs(audio(i,1))); end; if p ==2 if audio(i,2) == 0 audio_dB(i,2) = -90; else audio_dB(i,2) = 20*log10(abs(audio(i,2))); end; end; end; %**********************************************************************% % Traitement sur le signal converti en dB % % (j'ai appelé audio1 le signal sur lequel j'effectue les traitements) % %**********************************************************************% wavwrite(audio1,Fs,B,'test.wav');
En cherchant un peu sur le net, j'ai vu comment régler ce souci si j'ai un signal en amplitude (compris entre -1 et 1, comme le sont habituellement les signaux audios).Warning: Data clipped during write to file:test.wav > In wavwrite>PCM_Quantize at 293 In wavwrite>write_wavedat at 309 In wavwrite at 138 In TestFunctions at 166
J'ai essayé de remettre mon signal en amplitude pour l'enregistrer en faisant :
Et ensuite j'appliquais la fonction wavwrite sur file. Mais en faisant cela, je ne récupère pas réellement mon signal puisque toutes les valeurs sont alors comprises en 0 et 1 et non pas entre -1 et 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for j = 1:N file(j) = 10^(audio1(j)/20); end;
Quelqu'un saurait-il comment procéder pour réussir à récupérer mon fichier audio traité avec des valeurs comprises entre -1 et 1 et qu'on puisse alors l'écouter ?
Si mes explications ne sont pas claires, n'hésitez pas à poser des questions.
Merci d'avance.
Partager