Processamento de Áudio Digital - Computer Communications...

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