Sauver un signal audio num - PowerPoint PPT Presentation

1 / 21
About This Presentation
Title:

Sauver un signal audio num

Description:

Sauver un signal audio num rique dans un fichier wave On trouve dans le fichier la3.wav les trois blocs de donn es : RIFF, fmt et data. – PowerPoint PPT presentation

Number of Views:82
Avg rating:3.0/5.0
Slides: 22
Provided by: unic335
Category:
Tags: audio | num | sauver | shannon | signal | theory

less

Transcript and Presenter's Notes

Title: Sauver un signal audio num


1
Sauver un signal audio numérique dans un fichier
wave
  • On trouve dans le fichier la3.wav les trois
    blocs de données RIFF, fmt et data.
  • Les données sont disposées comme suit on lit
    loctet de poids faible dabord, puis les
  • autres en allant vers loctet de poids fort
    (format little endian ou petit-boutien )
  • 52 49 46 46, signifie RIFF
  • 24 53 07 00, lire 00 07 53 24, soit
    7655368325636480036 bytes
  • 66 6D 74 signifie fmt en ASCII
  • format PCM (code 01 00)
  • monophonie (01 00) une voie
  • 40 1F 00 00, soit fe8 kHz
  • 40 1F 00 00 est le byte rate en octets par
    seconde
  • 01 00 indique quun échantillon est codé sur un
    octet
  • 08 00, lire 00 08, un échantillon occupe 8 bits
  • Len tête du fichier la3.wav précise donc 8kHz,
    mono, 16 bits/échantillon, format PCM, taille
    480 044 octets, bit rate 8000 octets par
    seconde, ...
  • Comment doubler fe ?

2
Quantification dun signal discret avec Scilab
  • signal discret xx(nTe)xn, n0.. N-1
  • xn codé sur B bits, intervalle -1lt xn lt 1
  • le pas de quantification Q 2/2B
  • taille de x NB en bits
  • Signal binaire xbinn partieEntière(xn/Q)
  • -2B-1 lt xbinn lt 2B-1, par exemple B8,
    -128ltxbinnlt128
  • Signal quantifié (ou numérique) xquantnxbinnQ,
    avec -1 lt xquantn lt 1
  • Erreur de quantification en xn xquantn
  • Rapport signal sur bruit ou SNR, sexprime en dB
    SNR 20log10(écartType(x)/écartType(e))Exemple
    SNR 72dB sur ligne téléphonique grand public

Page 2
3
Composition fréquentielle ou spectre et TFD
Lire f0 440 Hz a00.75 (0.8) fe N 32 NTe
Df 250Hz spectre/N lt0.4 M256 pts tracés
Lire f0 a0 fe N NTe Df spectre/N
4
Sous échantillonnage dun signal sinusoïdal pur
  • Sous échantillonnage M8
  • ssechs(18length(s))
  • N devient N/8 1024
  • Te devient 8Te
  • fe devient fe/8 1000Hz
  • a0/2 512/1024, a01
  • f0 440Hz
  • taux compression 8

5
Énoncés de la contrainte de Shannon
Énoncés de la contrainte de Shannon
  • Daprès A Mathematical Theory of Communication,
    july 1948, in Bell System Technical Journal, par
    Claude Elwood Shannon (1916-2001)
  • Pour échantillonner correctement un signal s(t),
    il faut respecter la contrainte de Shannon
  • Contrainte de Shannon simplifiée la fréquence
    d'échantillonnage doit être égale au moins au
    double de la fréquence maximale du spectre du
    signal
  • s'il existe fmax telle que S(f gtfmax)0,
  • alors fe gt2fmax
  • Contrainte de Shannon générale la fréquence
    d'échantillonnage doit être égale au moins au
    double de la largeur du spectre du signal
  • s'il existe fmin et fmax telle que S(f gt0) 0
    pour fltfmin et pour fgtfmax,
  • alors fe gt2(fmax-fmin)
  • Si la contrainte nest pas respectée, les
    échantillons ne permettent pas de reconstituer le
    signal s(t) !
  • Conséquence seuls les signaux à bande limitée
    (cest-à-dire dont le spectre est nul au-dessus
    dune fréquence fmax) peuvent être échantillonnés
    correctement, doù le filtre dit anti-aliasing
    des cartes sons qui limite le spectre du signal à
    lintervalle 0, fe /2 avant léchantillonnage

Filtre reconstructeur et formule de Shannon
  • Voici la formule de Shannon qui reconstruit s(t)
    à partir des échantillons s(nTe) (seulement si la
    contrainte de Shannon est respectée !)
  • En terme de filtrage, la formule de Shannon
    applique au signal discret le filtre
    reconstructeur de Shannon, pour retrouver s(t)
  • ce filtre multiplie par Te les composantes
    fréquentielles entre fe/2 et fe/2, et multiplie
    par 0 toutes les autres composantes du spectre
    pour supprimer
  • voici la réponse fréquentielle de ce filtre
    tracée entre -fe et fe
  • Si la contrainte de Shannon nest pas respectée
    pour léchantillonnage, la formule est
    impuissante, s(t) est perdu, les échantillons
    sont inutiles !

Te
f
0
-fe/2
fe/2
6
Sur-échantillonnage dun signal discret dans un
rapport M signifie insertion de M-1 échantillons
nuls entre deux échantillons du signal
  • // avec Scilab ou Matlab
  • ssezeros(size(s))
  • sse(1Mlength(s))ssech
  • N/8 redevient N échantillons
  • 8Te redevient Te
  • fe/8 redevient fe 8000Hz
  • a0/2 reste 512/1024, a01
  • f0 440Hz
  • Effets du sur-échantillonnage sur le spectre
  • S(f) ne change pas, car on ajoute des
    échantillons nuls
  • fe étant multipliée par 8,on voit M8 périodes
    de S(f) entre 0 et fe

Comment retrouver le spectre du signal de départ?
7
Compresser et décompresser le signal de spectre
suivant dans un facteur M4
8
Créer et appliquer un filtre de réponse
fréquentielle donnée avec Scilab
  • La réponse fréquentielle du filtre est définie
    dans le vecteur H, les coefficients du filtre
    sont calculés dans le vecteur h, on filtre
    piano.wav, on compare spectrogrammes et
    énergies avant et après filtrage

// filtre passe bande 1000Hz-2000Hz // gain 4,
R64, fe8000Hz R64 fe8000 n0R-1
frnfe/R H4zeros(1,R/8),ones(1,1R/8), ...
zeros(1,-1R/2),ones(1,1R/8), ...
zeros(1,-1R/8) plot2d3(fr,H) xgrid
xtitle('H2,avec R',string(R), ...
'fréquence (Hz), H) //calcul des
coefficients du filtre hfftshift(real(ifft(H)))
plot2d3(n/fe,h) xtitle('coefficients du
filtre',... 'temps (s)',...
'hfftshift(real(ifft(H)))') xgrid() //
filtrage y,fewavread('piano.wav') disp(fe)
// fe8000 sound(y,fe) yf convol(h,y)
wavwrite(yf,fe,'pianofilt.wav') sound(yf,fe)
//Spectrogrammes (Goldwave) // énergie
Ey(yy')/2 // énergie y 163.96
Eyf(yfyf')/2 // énergie yf 89.62
Définition de lénergie du signal x de taille X
échantillons
9
Utiliser un banc de filtres pour analyser
automatiquement le spectre dun signal audio
  • function s, E, Esignal, febancfiltres(M, R,
    fichier, play)
  • //fichier bancfiltres.sce
  • //utilisation s,e,es,febancfiltres(8,128,'p
    iano.wav',0)
  • e,fewavread(fichier)
  • N R/(4M)
  • Hones(1,N-1),0.9,0.5,0.1,zeros(1,R-2N-3),.
    ..
  • 0.1,0.5,0.9,ones(1,N-2)
  • hfftshift(real(ifft(H)))
  • n0R-1
  • for j0M-1
  • bande(j1,)2cos((2j1)npi/(2M)).
    h
  • end
  • for j0M-1
  • sfiltreconvol(e,bande(j1,))
  • s(j1,)sfiltre(1length(e))
  • wavwrite(s(j1,),fe,'s'string(j1)'.w
    av')
  • end
  • Esignal ee'/2
  • Ediag(ss')/2

Lit le signal audio dans e et fe
Crée filtre générateur h
Crée banc de M filtres De taille R partir du
filtre h
Filtre e dans sfiltre Ramène longueur sfiltre à
celle de y et sauve dans des fichiers wave
Calcule et affiche un diagramme barre des
énergies en de lénergie de e
Joue sum(s,1) si play!0
Définition de lénergie dun signal x de taille X
échantillons
10
Structure de CODEC utilisant un banc de filtres
  • CODEC coder decoder, cf. vocoder, Chicago,
    1939
  • La structure du CODEC inclut cinq étages
  • Banc de filtres de réponses fréquentielles
    B1,B2, BM et de longueur R avec (B1B2
    BM)XXNM échantillons, C1/M
  • Sous-échantillonnage de rapport M, autorisé parce
    que la largeur de spectre des signaux x1, x2,
    xM vaut fe/M (et donc la condition de Shannon
    générale est vérifiée)MN/M échantillons, C1
  • Etage de compression objectif, atteindre C gt 1,
    mais la compression est destructive, elle modifie
    le signal compressé
  • Sur-échantillonnage (intercale M-1 échantillons
    nuls)
  • Banc de filtres interpolateurs, obtenu en
    multipliant par M les réponses fréquentielles des
    filtres B1, B2, BM
  • Synthèse additive, le signal décompressé est noté
    xrec

Algorithme compression
Étage sur-é- chantillonneur
Étage sous-é- chantillonneur
banc de M filtres
banc de M filtres
Étage de compression
xse1
x1
xd1
B1
xd2
xse2
x2
B2
x
xrec


xM
xdM
xM
xseM
BM
11
Compresser avec un banc de filtres en diminuant
la longueur du codage binaire des échantillons
  • Y a til des bits inutiles dans les signaux
    suivants codés sur 8 bits issus dun banc de
    filtres ? Quel est le taux de compression qui en
    résulte ?

-0.8lts1lt0.6 xmax m bits ? u ?
-0.25lts2lt0.2 xmax m bits ? u ?
-0.10lts2lt0.10 xmax m bits ? u ?
-0.03lts2lt0.04 xmax m bits ? u
? C ?
12
Luminance et chrominance
  • Lœil est plus sensible à la luminance (noir et
    blanc, clair et sombre) quà la chrominance
    (couleur), cf. ci-dessous tiré de
    http//semsci.u-strasbg.fr/efflum.htm
  • Doù le codage YUV (ou Y Cb Cr) des images TV à
    partir des informations R, G (vert) et B

Y est la luminance, maximum de lisibilité pour
lœil humain, traduction de limage couleur en
niveaux de gris CB et CR sont les chrominances
bleue et rouge, pour reconstruire les
informations de couleur
13
Du signal audio à limage numérique
En résumé, 1/ la durée devient la dimension,
longueur ou largeur, donc le temps devient
espace, et 2/ on passe à deux dimensions.
14
Détection des contours par un filtre dimage
// filtrer l'image lena.jpg // à laide dun
filtre laplacien lenaimread('lena.png') h
fspecial('laplacian') imf imfilter(lena,h)
imshow(imf)
15
Utilisation de la DCT pour compresser une image
(cet exemple est tiré de laide de Scilab - -
gt help dct)
  • la DCT 2D est appliquée à limage A, dont la
    composition fréquentielle (fréquences spatiales,
    verticale et horizontale) est calculée.
  • Les composantes damplitude inférieure à 1 sont
    négligées,
  • La ligne size(find(dltgt0),) trouve 165
    composantes non nulles sur 1680
  • Le taux de compression vaut un peu plus de 10, C
    1680/165
  • Limage décompressée à droite est obtenue en
    appliquant la dct inverse, soit A1dct(d,1)

16
Schéma de principe de la compression JPEG (tiré
de Wikipédia)
  1. Division de limage en blocs de 8x8 pixels
    appelés macroblocs
  2. Séparation de chaque bloc en plans Y (luminance),
    Cr et Cb (chrominances rouge et bleu), ces deux
    plans étant sous échantillonnés dun rapport 2
    suivant la hauteur et suivant la largeur,
  3. Transformation DCT (Discrete Cosine Transform) de
    chaque bloc on obtient 8x8 coefficients de
    Fourier qui définissent la composition
    fréquentielle du bloc
  4. Quantification des coefficients les plus
    faibles en valeur absolue sont annulés ou codés
    sur un nombre de bits plus faible (le pas de
    quantification est augmenté) compression avec
    pertes.
  5. Compression des coefficients restants codage
    RLE (Run Length Encoding), codage de Huffman ou
    VLC (Variable Length Coding)

17
Utilisation de la DCT dans le principe de
compression JPEG
  • Limage à compresser est découpée en blocs de 8x8
    pixels, auxquels on applique la DCT, qui calcule
    8x8 coefficients pour chaque bloc selon la
    formule suivante
  • N8, pixel(x,y), avec x0..7, et y0.. 7 est un
    bloc de 64 pixels
  • DCT(i,j), i0..7, j0..7 est le tableau des 64
    coefficients DCT du bloc
  • C(i) vaut 1 pour i non nul, et sqrt(2) pour i 0
    (de même pour C(j) et j)
  • Le tableau DCT(i,j), i0..7, j0..7 contient le
    spectre du bloc de pixels, les fréquences
    spatiales normalisées varient entre 0 et fx/20.5
    horizontalement et verticalement.
  • 64 intensités donnent 64 coefficients DCT, taux
    de compression C1
  • La DCT inverse reconstitue le bloc de pixels à
    partir des coefficients DCT(i,j) i0..7, j0..7

18
La DCT décompose chaque bloc de 8x8 pixels en une
somme pondérée des 64 images élémentaires
ci-dessous
La DCT calcule les 64 coefficients de pondération
de la somme des images élémentaires, ou encore la
composition fréquentielle spatiale. La DCT
inverse reconstitue le bloc de pixels en faisant
la somme pondérée des images élémentaires. Une
image élémentaire contient une fréquence
horizontale et une fréquence verticale. Les
coefficients de pondération sont les DCT(i,j),
i0..7, j0 .. 7. La correspondance entre les
indices i et j et la fréquence spatiale
normalisée est fi i/(2N), et fj j/(2N).
  • le bloc élémentaire associé au coefficient
    DCT(i,j), i0..7, j0..7, avec la fréquence
    horizontale j/16, et la fréquence verticale i/16
  • Les DCT(i,j) décroissent quand i et j augmentent
    dans la plupart des cas (les composantes des
    blocs de pixels ont des fréquences spatiales
    basses)

19
Application à limage cameraman.png pour
Q,Cquantzone(sim, 6), C 3.047
Q,Cquantzone(sim, 6) on conserve les 21
premiers coefficients DCT des fréquences
spatiales les plus bassesbasses, soit ijlt6, On
annule les autres
20
Représenter une fréquence spatiale
  • i(x) 0.5 0.5cos(2pifx)
  • x varie de 0 à L
  • Définition N pixels entre 0 et L
  • Période échantillonnage L/N
  • Résolution horizontale fx N/L
  • Pixellisation x kL/N, k 0 N-1
  • ik 0.5(1cos(2pifkL/N)
  • Normalisation de fe L/N 1
  • ?fx1 pixel par unité de longueur
  • ? x 0 .. N-1
  • ik0.5(1cos(2pifx)

21
Comparaison de DCT et de FFT
  • s sn, n0 .. N-1, de taille N, avec sns(n/fe)
  • Sfft(s)Sk, k0..N-1, de taille N, avec
    Sks(kfe/N)
  • D dct(s) Dm, m 0 .. N-1, avec DmD(fm)
  • S et D ont la même taille que s, soit N
  • Lexponentielle complexe devient un cosinus, D
    est un vecteur réel, à la différence des Sk qui
    sont complexes
  • Les fréquences des valeurs calculées sont
    différentes
  • Pour fft, SkS(fk)
  • Pour dct, DmD(fm)
Write a Comment
User Comments (0)
About PowerShow.com