Processamento de Áudio
Digital
Créditos
• Acetatos do livro de Mrinal Mandal
Chapter 10:Digital Audio Processing,
Multimedia Signals and Systems ©
Kluwer A. Publishers
Aplicações
Com o aumento dos sistemas multimédia e do WWW, as técnicas de
processamento de áudio tornaram-se populares.
 Filtragem
 Equalização
 Supressão de ruído
 Compressão
 Adição de efeitos sonoros
 Síntese
Filtragem Áudio
Espectro de sinal áudio
Sinal áudio “bell.wav”
Espectro de Frequência
Código MatLab : Exemplo 10.1-I
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Reading the input audio data
infile = 'F:\data\audio\bell.wav' ;
% Name of the Input file
[x, Fs, bits]=wavread(infile);
%
%Plotting the input signal
plot([1:length(x)]/1000,128*x) ;
title ('original speech signal')
xlabel('Samples (x1000)'); ylabel('Sample Values');
print -dtiff plot.tiff
%
%Calculating Power spectral density
hann_wind = round(2048*0.8) ;
[Px,F] = psd(x,2048,Fs,[],hann_wind); % power spectral density of the input signal
plot(F/1000,10*log10(Px))
xlabel('Frequency (in KHz)'); ylabel('Power Spectral Density (in dB)');
print -dtiff plot.tiff
Filtro Passa Baixo (Exemplo 10.1)
Filter Order
Cut-off Frequency (in Hz)
Folding Frequency (in Hz)
filt_low = fir1(64, 4000/11025) ;
% filt_low is a 64-tap filter with a normalized cut-off frequency 0.3628
%that corresponds to 4000 Hz for a sampling frequency of 22.05 kHz.
%The same filter would have a cut-off frequency of 8 kHz if the
% sampling frequency is 44.1 kHz
x_lpf = filter(filt_low,1,x) ; % x_lpf is the lowpass filtered audio signal
Ganho do Filtro e Saída
Características de Ganho de
Frequência do Filtro Passa Baixo
Espectro do sinal
filtrado
Código MatLab : Exemplo 10.1-II
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Lowpass Filtering
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lcutoff = 4000 ; % cutoff frequency in Hz
wp = lcutoff/(Fs/2) ; % Normalized cutoff
filt_low = fir1(64,wp) ;
%Plotting the LPF frequency characteristics
[L, w] = freqz(filt_low,1,512);
LdB = 20*log10(abs(L)) ;
plot((w/pi)*(Fs/2000), LdB), grid
xlabel('Frequency (in KHz)')
ylabel('Lowpass Filter Gain (in dB)');
print -dtiff plot.tiff
%Lowpass filtering the audio signal
x_lpf = filter(filt_low,1,x) ;
x_lpf=x_lpf./max(0.1,max(abs(x_lpf))) ;
% scale up the output
wavwrite(x_lpf,Fs,8,'f:\bell1_lpf.wav');
% Write the output signal as a wav file
%
%Calculating Power spectral density
hann_wind = round(1024*0.8) ;
[Px_lpf,F] = psd(x_lpf,1024,Fs,[],hann_wind); % power spectral density of the lowpass output
plot(F/1000,10*log10(Px_lpf))
xlabel('Frequency (in KHz)'); ylabel('PSD (in dB)');
print -dtiff plot.tiff
%
Filtro Passa Banda
Lower Cut-off Frequency (in Hz)
Ordem do filtro
Upper Cut-off Frequency (in Hz)
filt_bp = fir1(64,[4000 6000]/11025) ;
%Bandpass filtering the audio signal
x_bpf = filter(filt_bp,1,x) ;
Ganho do Filtro e Saída
Características de Ganho de
Frequência do Filtro Passa Banda
Espectro do sinal
filtrado
Código MatLab : Exemplo 10.1-III
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Bandpass Filtering
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cutoff1 = 4000 ;
% Low cutoff frequency
cutoff2 = 7000 ;
% Low cutoff frequency
wp =[cutoff1 cutoff2]/(Fs/2) ; % Normalized cutoff
filt_bp = fir1(64,wp) ;
%Plotting the BPF frequency characteristics
[B, w] = freqz(filt_bp,1,512);
BdB = 20*log10(abs(B)) ;
plot((w/pi)*(Fs/2000), BdB), grid
xlabel('Frequency (in KHz)')
ylabel('Bandpass Filter Gain (in dB)');
print -dtiff plot.tiff
%Bandpass filtering the audio signal
x_bpf = filter(filt_bp,1,x) ;
% scale up the output
x_bpf=x_bpf./max(0.1,max(abs(x_bpf))) ;
% Write the output signal as a wav file
wavwrite(x_bpf,Fs,8,'f:\bell1_bpf.wav');
%
%Calculating Power spectral density
hann_wind = round(1024*0.8) ;
%power specttral density of the lowpass output
[Px_bpf,F] = psd(x_bpf,1024,Fs,[],hann_wind);
plot(F/1000,10*log10(Px_bpf))
xlabel('Frequency (in KHz)');
ylabel('PSD (in dB)');
print -dtiff plot.tiff
Filtro Passa Alto
Filter Order
Cut-off Frequency (in Hz)
filt_high = fir1(64,4000/11025,’high’) ;
%Highpass filtering the audio signal
x_hpf = filter(filt_high,1,x) ;
Ganho do Filtro e Saída
Características de Ganho de
Frequência do filtro Passa Alto
Espectro do sinal de saída
Código MatLab : Exemplo 10.1-IV
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Highpass Filtering
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
hcutoff = 4000 ;
% cutoff frequency in Hz
wp = hcutoff/(Fs/2) ;
% Normalized cutoff
filt_high = fir1(64,wp,'high') ;
%Plotting the LPF frequency characteristics
[H, w] = freqz(filt_high,1,512);
HdB = 20*log10(abs(H)) ;
plot((w/pi)*(Fs/2000), HdB), grid
xlabel('Frequency (in KHz)')
ylabel('Filter Gain (in dB)');
print -dtiff plot.tiff
%Highpass filtering the audio signal
x_hpf = filter(filt_high,1,x) ;
% scale up the output
x_hpf=x_hpf./max(0.1,max(abs(x_hpf))) ;
% Write the output signal as a wav file
wavwrite(x_hpf,Fs,8,'f:\bell1_hpf.wav');
%
%Calculating Power spectral density
hann_wind = round(1024*0.8) ;
%power specttral density of the lowpass output
[Px_hpf,F] = psd(x_hpf,1024,Fs,[],hann_wind);
plot(F/1000,10*log10(Px_hpf))
xlabel('Frequency (in KHz)');
ylabel('PSD (in dB)');
print -dtiff plot.tiff
%
Comparação dos sons
•
•
•
•
Som original
Saída de Filtro Passa Baixo
Saída de Filtro Passa Banda
Saida de Filtro Passa Alto
Equalização de Áudio
Controlo de Tom
 O método do controlo de tom disponibiliza uma maneira
simples e rápida de ajustar o som ao gosto dos ouvintes
 Os aparelhos de áudio tem normalmente dois botões de controlo
designados como baixo e agudos (treble).
 Cada um desses botões controla um tipo especial de filtro
designado como shelving filter.
 O botão de baixo controla um filtro de shelving passa baixo
enquanto o botão de treble controla um filtro de shelving passa
alto.
Filtros Shelving
Passa Alto
Treble
Gain (in dB)
Gain (in dB)
Passa Baixo
Baixo
Filtro Peaking
•Muitos sistemas de áudio têm um controlo médio (mid), para além do
•baixo e dos agudos
•Este controlo usa basicamente usa um filtro passa banda que aumenta ou
Gain (in dB)
corta na gama média de frequência
Center
frequency
Frequency
Equalizadores Gráficos
 Os equalizadores gráficos são mais sofisticados que os de controlo
de tom
O sinal de entrada é passado tipicamente através de um banco de 57 filtros passa-banda
A saída dos filtros é ponderada pelos factores de ganho
correspondentes e adicionados para reconstruir o sinal.
Os filtros são caracterizados pelas frequências de corte
normalizadas. Por este facto, os mesmos filtros funcionam com
frequências de amostragem diferentes.
Diagrama de um sistema equalizador
Equalizer
Gains
BP Filter-1
BP Filter-2
Digital
Audio
G-1
G-2

BP Filter-N
G-N
Equalized
Audio
Output
Exemplo de Equalização (Ex-10.2)
Considere um sinal áudio test44k cuja forma de onda é mostrada abaixo.
Sinal de áudio “test44k”
Espectro de frequência
Frequências de corte dos Filtros Passa
Banda
 A frequência de amostragem do sinal de áudio é 44.1 KHz.
Um equalizador de 5 bandas concebido com base num banco de
filtros
As frequências de corte dos 5 filtros passa-banda estão abaixos
Filter#
1
2
3
4
5
Cut-off frequency
(in Hz)
Lower
Upper
20
1200
1200
2500
2500
5000
5000
10000
10000
20000
Normalized cutoff frequency
Lower
Upper
0.0009
0.0544
0.0544
0.1134
0.1134
0.2268
0.2268
0.4535
0.4535
0.9070
Ganho de resposta dos Filtros Passa
Banda
Os filtros passa-banda podem ser facilmente concebidos com comandos
MatLab
Por exemplo o terceiro filtro pode ser concretizado com o comando
bpf(3,:) = fir1(32, [0.1134 0.2268]);
Energia Média nas diferentes bandas
Para o sinal original
Time
(in sec)
0-3
3-6
6-9
9-12
12-15
15-18
Band-1
37.4610
36.1113
37.2630
34.7644
36.5304
37.3523
Band Energy (in dB)
Band-2 Band-3 Band-4
30.8688 15.7790 10.4556
29.4799 15.7305 11.6237
30.1553 13.9430 9.2472
29.2201 16.6713 15.1690
30.2963 14.8195 9.1849
30.5949 14.2061 8.9226
Band-5
2.1273
6.9943
3.7286
5.3465
2.1991
1.8897
VARIAÇÃO DO GANHO NAS
DIFERENTES BANDAS
Para o sinal equalizado
Time
(in sec)
0-3
3-6
6-9
9-12
12-15
15-18
Band Energy (in dB)
Band- Band- Band- Band- Band1
2
3
4
5
10
0
0
0
0
0
10
0
0
0
0
0
15
0
0
0
0
0
20
0
0
0
0
0
20
10
0
0
0
0
Áudio Filtrado
Sinal original
Sinal equalizado
MELHORAMENTO DO
ÁUDIO
Porquê o Melhoramento?
A qualidade do sinal pode ser degradado devido a várias razões
Um sistema de produção de voz de baixa qualidade produz áudio
de baixa qualidade.
 A presença de interferência de fundo pode causar a degradação
da qualidade do áudio.
 O ruído de quantização introduzido durante a compressão é
outra fonte de degradação.
Os algoritmos de melhoramento de áudio podem ser usados para
reduzir o ruído contido no sinal e melhorar a qualidade do sinal.
Diferentes técnicas
Subtração Espectral : esta téncica suprime o ruído subtraindo um
ruído estimado durante os períodos de silêncio.
 Filtro Wiener: minimiza o erro médio quadrático no processo de
filtragem inversa e alisamento do ruído. Requer o conhecimento
prévio das estatísticas de ruido e da voz.
 Cancelamento adaptativo de ruído: este método utiliza um filtro
adaptativo que actua num sinal de referência para produzir uma
estimativa do ruído. O ruído é então subtraído do sinal de entrada.
É usado tipicamente o algoritmo LMS no processo de adaptação.
Os pesos do filtro são ajustados para minimizar o quadrado da
energia média da saída global.
Supressão de Ruído por Filtragem Digital
Se a componente de ruído tem um espectro estreito uma
filtragem digital simples pode ser usada para eleminar os
componentes de ruído.
Noise
spike
Filtragem do sinal de áudio
Ganho de Resposta do Filtro
Espectro do sinal filtrado
Filtragem-2
Ganho de Resposta do Filtro
Espectro do sinal de saída
Método de Subtração Espectral
(SSM)
Se o ruído tem uma distribuição espetral estreita, a filtragem digital
pode ser facilmente aplicada para suprimir esta componente de ruído.
Contudo, se a componente de ruído tem um banda espectral grande,
uma simples filtragem de supressão de banda pode não ser apropriada.
 O Método de subtracção espectral (SSM) é uma abordagem simples e
eficaz para suprimir ruído de fundo estacionário.
 Este método é baseado no conceito que o espectro na frequência do
sinal é espresso como a soma do espectro de voz e espectro do ruído.
 O processamento é feito inteiramente no domínio da frequência.
Princípios do SSM
Considere um sinal de fala com ruído f(k). O sinal com ruído
pode ser assumido com sendo um sinal sem ruído y(k) e um sinal
de ruído n(k). Por outras palavras,
f(k) = y(k) + n(k)
Ou seja :
y(k) = f(k) - n(k)
Calculando a transformada de Fourier de ambos os lados,
obtemos
Y    F    N  
Estimação do Sinal
 Se o espectro de ruído (tanto amplitude como fase) é conhecido com
precisão, então o sinal livre de ruído pode ser obtido simplesmente
subtraindo-o do sinal com ruído.
Contudo, na prática, apenas se dispõe duma estimativa da amplitude
espectro de ruído. No SSM, o espectro do sinal com ruído reduzido é
estimado com:
Y    F  
| F   |  | N   |  F    1  | N   |   F  g  
 | F   | 
| F   |


Onde g   é um parâmetro para expressar a quantidade de ruído
noise  0
1
g   
0 noise  signal
Na prática assume-se que
g    ,   [0.01,0.1]
Diagrama do SSM
Input
FFT
Subtraction
Inverse FFT
Enhanced Audio
Noise Estimation
Figure 1: Spectral Subtraction Block Diagram
Passos do SSM
3 passos principais:
O espectro de ruído é estimado quando o orador está em silêncio.
-- Assuma que o espectro de ruído não mude rapidamente.
O espectro de ruído é então subtraído do espectro de amplitude do
sinal de entrada com ruído.
Usando este novo espectro de amplitude, e espectro de fase do sinal
com ruído original, o sinal de áudio no domínio de tempo é calculado
usando a transformada inversa de Fourier.
Exemplo SSM (#10.4)
Sinal de áudio “noisy_audio2 ”
Espectro do sinal
• Duração no tempo = 2.7 segundos
• A frequência de amostragem é 22,050 Hz.
• Há buracos na forma de onda da fala, que indica periodos de silêncio
em que o ruído pode ser ouvido.
• O ruído é representada por uma gama larga de componentes de
frequência.
Princípios da Estimação de Ruído
Os buracos no sinal de voz são usados para estimar espectro do sinal de
ruído.
 Segmentar o sinal em pequenos quadros para obter pequenos
segmentos do sinal em que não haja fala.
 Calcular o espectro de cada quadro
 São calculados os valores minimos dos componentes espectrais por
cada bin de frequência nos quadros.
 O valor mínimo é usado para estimar o ruído
 A estimação acima pode ser considerada uma sub-aproximação do
ruído. Portanto é multiplicado por um factor de escala para obter o
espectro de ruído que é usado pelo SSM.
Neste exemplo, podemos usar um factor de escala de 20.
Detalhes de Implementação do SSM
 O código MATLAB para o processamento SSM está incluído no CD.
 O tamanho de quadro áudio é escolhido como 512.
 Há uma sobreposição de 50% entre dois blocos de áudio
consecutivos.
 O valor de λ é colocado a 0.025.
 A função de janela é derivada da janela de Hamming.
O Sinal melhorado com o SSM
O sinal melhorado tem reduzido de forma significativa os componentes
de alta frequência na gama 2-5 kHz.
EDIÇÃO DE FICHEIROS MIDI
Edição de Áudio e MIDI
 Ao contrário do áudio digital, o MIDI é genericamente livre de
ruído uma vez que é sintetizado.
 Portanto as técnicas de filtragem de ruído não são aplicáveis a
ficheiros MIDI.
Nesta secção, apresentamos alguns exemplos para ilustrar a
criação e edição de ficheiros MIDI.
Exemplo de ediçao de MIDI (# 10.5)
 Foi criado no exemplo 2.2 um pequeno ficheiro MIDI
4D 54 68 64 00 00 00 06 00 01 00 01 00 78 4D 54 72 6B 00 00 00 14
01 C3 02 01 93 43 64 78 4A 64 00 43 00 00 4A 00 00 FF 2F 00
 O ficheiro MIDI gera a nota G3 tocada num piano eléctrico grande,
com velocidade (que se relaciona com o volume) 100.
 Neste exemplo será criado um ficheiro MIDI que gera a nota E1
tocada num Piano Rhodes com a velocidade 68.
Edição do Ficheiro
 O terceiro byte na segunda linha (0x02) corresponde ao Electric
Grand Piano (ver Tabela 2.9).
-- No sentido de criar uma nota para o Rhodes Piano, o número de
instrumento tem que ser mudado para 0x04.
 O sexto byte 0x43 gera a nota G3.
-- No sentido de criar a nota E6, este byte deve ser mudado para
0x64
(ver a Tabel 10.4 para os equivalentes decimais para o número de
notas para piano).
 A velocidade 100 é devida aos 7º e 10º bytes (0x64 cada ) na segunda
linha
-- Para criar o volume de 68, o 7º e o 10º bytes devem ser mudados
para 0x44 em vez de 0x64.
Números para notas de
Piano
As entradas estão expressas no formato decimal.
Octave
-2
-1
0
1
2
3
4
5
6
7
8
C
00
12
24
36
48
60
72
84
96
108
120
C#
01
13
25
37
49
61
73
85
97
109
121
D
02
14
26
38
50
62
74
86
98
110
122
D#
03
15
27
39
51
63
75
87
99
111
123
E
04
16
28
40
52
64
76
88
100
112
124
F
05
17
29
41
53
65
77
89
101
113
125
F#
06
18
30
42
54
66
78
90
102
114
126
G
07
19
31
43
55
67
79
91
103
115
127
G#
08
20
32
44
56
68
80
92
104
116
A
09
21
33
45
57
69
81
93
105
117
A#
10
22
34
46
58
70
82
94
106
118
B
11
23
35
47
59
71
83
95
107
119
O ficheiro MIDI editado
O novo ficheiro pode ser representado no formato hexadecimal da
seguinte forma:
4D 54 68 64 00 00 00 06 00 01 00 01 00 78 4D 54 72 6B 00 00 00 14
01 C3 04 01 93 64 44 78 4A 44 00 43 00 00 4A 00 00 FF 2F 00
O ficheiro MIDI pode ser criado usando o seguinte código MATLAB:
data=hex2dbytes('4D546864000000060001000100784D54726B000000
1401C30401936444784A44004300004A0000FF2F00');
fid=fopen('F:\ex10_5.mid','wb');
fwrite(fid,data);
fclose('all');
Como adicionar uma segunda pista?
Pode ser útil sintetizar pistas com diferentes assinaturas de tempo e a
tocar diferentes instrumentos simultaneamente:
O código seguinte adiciona uma segunda pista ao código do exemplo
anterior
(Header chunk) 4D 54 68 64 00 00 00 06 00 02 00 02 00 78
(Track 1) 4D 54 72 6B 00 00 00 14
01 C3 02 01 93 25 64 78 32 64 00 25 00 00 32 00 00 FF 2F 00
(Track 2) 4D 54 72 6B 00 00 00 14
01 C3 03 01 93 43 64 78 18 64 00 43 00 00 18 00 00 FF 2F 00
Explicação do código
 Quando a segunda pista é adicionada ao ficheiro, o formato é mudado
para 0x02 (10o byte na primeira linha ) de forma que cada pista
representa uma sequência independente.
O número de pistas é também mudado para 02 (12º byte na primeira
linha ).
 Foram mudados uns poucos tempos delta e notas para ilustrar sons
diferentes.
O Electric Grand Piano é tocado na primeira pista (0x02 na linha-3)
e o Honky-Tonk Piano é tocado na segunda pista (0x03 na linha -5).
 Essas duas pistas podem ser tocadas simulatenamente se se mudar o
tipo de formato para 0x01.
Ferramentas áudio seleccionadas
Nome do
software
Glame
Sistema
Operativo
Linux
Funcionalidades
Powerful, fast, stable and easily extensible
sound editor. Freely available from WWW.
Digital Audio Linux
Processor
Freely available from
Reasonably powerful
Cool Edit
Very powerful, easy to use. Capable of
mixing up to 128 high-quality stereo tracks
with any sound card.
Win95/98/ME
NT/2000/XP
the
WWW.
Sound Forge Microsoft
Sound Forge XP Studio provides an
XP Studio 5.0 Windows 98SE, intuitive, easy-to-use interface and is
Me, or 2000
designed for the everyday user.
gAlan
Windows
98/XP/2000
gAlan allows you to build synthesizers,
effects chains, mixers, sequencers, drum
machines and more.
Ferramentas de Edição MIDI
Ferramentas
Cakewalk
MIDI
Maestro
Music
MasterWorks
3.62
DWS_Midi_S
ong_Manager
1.0
Funcionalidades
 It supports general MIDI, and provides several editing views
(staff, piano roll, event list) and virtual piano.
 It can insert WAV files and Windows MCI commands
(animation and video) into tracks.
 A powerful, full-featured music software designed for use by
amateur and professional music directors.
 Dynamic, intuitive performance control and powerful
sequencing and editing capabilities.
 It is a MIDI music composing program.
 Includes voice to note / wave to midi converter, staff / piano
roll notation editor, sheet music printing, chord creation,
keeping notes within a key, transpose, quantize, play/record
with external MIDI devices, configurable keys, audio, and the
ability to ignore the complexities of tracks and channels
 An efficient program with which one can administer MIDI
songs together with appropriate texts.
 One can input titles and interpreter, music direction,
lauflaenge of the music pieces, song text, text path and MIDI
path.
Download

Processamento de Áudio Digital