View
213
Download
0
Category
Preview:
Citation preview
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
Filtragem Equalização Supressão de ruído Compressão Adição de efeitos sonoros Síntese
Com o aumento dos sistemas multimédia e do WWW, as técnicas deprocessamento de áudio tornaram-se populares.
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)
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
Filter Order Cut-off Frequency (in Hz)Folding Frequency (in Hz)
Ganho do Filtro e Saída
Características de Ganho deFrequência do Filtro Passa Baixo
Espectro do sinalfiltrado
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
filt_bp = fir1(64,[4000 6000]/11025) ;%Bandpass filtering the audio signalx_bpf = filter(filt_bp,1,x) ;
Ordem do filtroLower Cut-off Frequency (in Hz)
Upper Cut-off Frequency (in Hz)
Ganho do Filtro e Saída
Características de Ganho deFrequência do Filtro Passa Banda
Espectro do sinalfiltrado
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
filt_high = fir1(64,4000/11025,’high’) ;
%Highpass filtering the audio signal
x_hpf = filter(filt_high,1,x) ;
Filter Order Cut-off Frequency (in Hz)
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
Gain
(in
dB)
Gain
(in
dB)
Gain
(in
dB)
Gain
(in
dB)
Passa Baixo Baixo
Passa Alto Treble
Filtro Peaking
Center frequency
Gai
n (in
dB)
FrequencyCenter frequency
Gai
n (in
dB)
Frequency
•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 corta na gama média de frequência
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 5-7 filtros passa-bandaA 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
BP Filter-1
BP Filter-2
BP Filter-N
DigitalAudio
EqualizedAudioOutput
Equalizer Gains
G-1
G-2
G-N
BP Filter-1BP Filter-1
BP Filter-2BP Filter-2
BP Filter-NBP Filter-N
DigitalAudio
EqualizedAudioOutput
Equalizer Gains
G-1
G-2
G-N
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 filtrosAs frequências de corte dos 5 filtros passa-banda estão abaixos
Cut-off frequency (in Hz)
Normalized cut-off frequency
Filter# Lower Upper Lower Upper 1 20 1200 0.0009 0.0544 2 1200 2500 0.0544 0.1134 3 2500 5000 0.1134 0.2268 4 5000 10000 0.2268 0.4535 5 10000 20000 0.4535 0.9070
Ganho de resposta dos Filtros Passa Banda
bpf(3,:) = fir1(32, [0.1134 0.2268]);
Os filtros passa-banda podem ser facilmente concebidos com comandos MatLabPor exemplo o terceiro filtro pode ser concretizado com o comando
Energia Média nas diferentes bandas
Band Energy (in dB) Time (in sec) Band-1 Band-2 Band-3 Band-4 Band-5 0-3 37.4610 30.8688 15.7790 10.4556 2.1273 3-6 36.1113 29.4799 15.7305 11.6237 6.9943 6-9 37.2630 30.1553 13.9430 9.2472 3.7286 9-12 34.7644 29.2201 16.6713 15.1690 5.3465 12-15 36.5304 30.2963 14.8195 9.1849 2.1991 15-18 37.3523 30.5949 14.2061 8.9226 1.8897
Para o sinal original
VARIAÇÃO DO GANHO NAS DIFERENTES BANDAS
Band Energy (in dB) Time (in sec) Band-
1 Band-2
Band-3
Band-4
Band-5
0-3 10 0 0 0 0 3-6 0 10 0 0 0 6-9 0 0 15 0 0 9-12 0 0 0 20 0 12-15 0 0 0 0 20 15-18 10 0 0 0 0
Para o sinal equalizado
Á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.
Noisespike
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.
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
NFY
Princípios do SSM
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:
gF
FN
FF
NFFY
||||
1||
||||
gOnde é um parâmetro para expressar a quantidade de ruído
signalnoise
noiseg
001 Na prática assume-se que
]10010[ .,.,g
Diagrama do SSM
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.
Os buracos no sinal de voz são usados para estimar espectro do sinal de ruído.
Princípios da Estimação 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
Octave C C# D D# E F F# G G# A A# B -2 00 01 02 03 04 05 06 07 08 09 10 11 -1 12 13 14 15 16 17 18 19 20 21 22 23 0 24 25 26 27 28 29 30 31 32 33 34 35 1 36 37 38 39 40 41 42 43 44 45 46 47 2 48 49 50 51 52 53 54 55 56 57 58 59 3 60 61 62 63 64 65 66 67 68 69 70 71 4 72 73 74 75 76 77 78 79 80 81 82 83 5 84 85 86 87 88 89 90 91 92 93 94 95 6 96 97 98 99 100 101 102 103 104 105 106 107 7 108 109 110 111 112 113 114 115 116 117 118 119 8 120 121 122 123 124 125 126 127
As entradas estão expressas no formato decimal.
O ficheiro MIDI editadoO 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('4D546864000000060001000100784D54726B0000001401C30401936444784A44004300004A0000FF2F00');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 atocar diferentes instrumentos simultaneamente:
O código seguinte adiciona uma segunda pista ao código do exemploanterior (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
Sistema Operativo
Funcionalidades
Glame Linux Powerful, fast, stable and easily extensible sound editor. Freely available from WWW.
Digital Audio Processor
Linux Freely available from the WWW. Reasonably powerful
Cool Edit Win95/98/ME NT/2000/XP
Very powerful, easy to use. Capable of mixing up to 128 high-quality stereo tracks with any sound card.
Sound Forge XP Studio 5.0
Microsoft Windows 98SE, Me, or 2000
Sound Forge XP Studio provides an intuitive, easy-to-use interface and is 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 Funcionalidades Cakewalk 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. MIDI Maestro
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.
Music MasterWorks 3.62
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
DWS_Midi_Song_Manager 1.0
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.
Recommended