• Nenhum resultado encontrado

2.2 Processamentos representativos para manipula¸c˜ao de ´ audio

2.2.2 Convolu¸c˜ao no dom´ınio do tempo

A convolu¸c˜ao ´e uma opera¸c˜ao definida sobre fun¸c˜oes cont´ınuas bastante utilizada nos campos da probabilidade, estat´ıstica, vis˜ao computacional, processamento de sinais e equa¸c˜oes diferenciais. Tamb´em definida no caso discreto, a convolu¸c˜ao ´e opera¸c˜ao b´asica para representa¸c˜ao e manipula¸c˜ao de sinais em diferentes bases, dando origem `as transformadas de Fourier, de Wavelets, entre outras. A opera¸c˜ao de convolu¸c˜ao circular ´e definida sobre dois vetores x, y ∈ CN e resulta num novo vetor w ∈ CN com componentes w

r dados por: wr = N −1 X k=0 xky(r−k) (mod N ).

A convolu¸c˜ao circular ´e denotada por w = x ∗ y e ´e f´acil ver que possui as propriedades de linearidade, comutatividade, e associatividade. Al´em disso, pode ser formulada matricialmente e ´e peri´odica se os vetores x e y forem estendidos periodicamente, com per´ıodo N , para todos os valores inteiros (Broughton e Bryan,2011).

O teorema da convolu¸c˜ao diz que a opera¸c˜ao de convolu¸c˜ao circular de dois sinais no dom´ınio do tempo corresponde `a opera¸c˜ao de multiplica¸c˜ao ponto a ponto dos espectros destes sinais no dom´ınio das frequˆencias. Mais formalmente, sejam x e y dois vetores em CN com DFTs, respecti- vamente, X e Y, e seja w = x ∗ y, com DFT W. Ent˜ao, vale que:

Wk = XkYk, para 0 ≤ k ≤ N − 1.

Isso permite ver que a convolu¸c˜ao circular pode ser implementada de forma eficiente atrav´es da express˜ao w = IF F T (F F T (x). ∗ F F T (y)), onde .∗ denota o produto dos vetores componente a componente. Essa implementa¸c˜ao ´e chamada de convolu¸c˜ao r´apida, e tem custo computacional O(N log(N )) ao inv´es de O(N2), associado ao c´alculo direto da express˜ao de wr, r = 0, 1, . . . , N −1. Convolu¸c˜ao circular e filtros FIR

O resultado visto acima permite utilizar a convolu¸c˜ao circular no dom´ınio temporal para obter um novo sinal cujo espectro seja a multiplica¸c˜ao dos espectros de dois sinais de entrada. Dado um vetor h com DFT H, se a convolu¸c˜ao de h com um sinal de entrada x resulta na modifica¸c˜ao do espectro X de forma controlada, torna-se interessante chamar h de filtro. Quanto menor for o n´umero de coeficientes de h diferentes de zero, menor ´e o custo computacional da implementa¸c˜ao do filtro diretamente atrav´es da express˜ao da convolu¸c˜ao no dom´ınio do tempo. O maior coeficiente

2.2 PROCESSAMENTOS REPRESENTATIVOS PARA MANIPULAC¸ ˜AO DE ´AUDIO 29

Figura 2.2: Esquema geral para a implementa¸c˜ao de filtros FIR utilizando convolu¸c˜ao no dom´ınio do tempo: o sinal da entrada x[n] ´e convolvido com os coeficientes bi, para i = 1 . . . N , que caracterizam a resposta

impulsiva do filtro, e gera um sinal de sa´ıda y[n].

n˜ao nulo define a ordem do filtro e determina o n´umero de amostras “do passado” que ser˜ao utilizadas para calcular uma nova amostra de sa´ıda. Assim, caracter´ısticas interessantes para sinais candidatos a filtro s˜ao possuir espectro conhecido e parametriz´avel, para permitir o controle dos efeitos no sinal de entrada, e representa¸c˜ao temporal com poucos coeficientes, de forma a viabilizar uma implementa¸c˜ao com baixa complexidade computacional no dom´ınio do tempo.

A implementa¸c˜ao da convolu¸c˜ao diretamente no dom´ınio do tempo ´e uma t´ecnica amplamente utilizada em uma s´erie de algoritmos de computa¸c˜ao musical, sendo particularmente eficiente quando a ordem do filtro ´e pequena. Uma classe de filtros bastante estudada e que possui as caracter´ısticas acima s˜ao os filtros de resposta impulsiva finita (ou filtros FIR), cujo esquema geral pode ser visto na Figura 2.2. A equa¸c˜ao geral do c´alculo do sinal y resultante da filtragem de um sinal de entrada x de tamanho N por um filtro FIR h de ordem K, implementado utilizando a convolu¸c˜ao no dom´ınio do tempo, ´e escrita da seguinte forma:

yn= K X

k=0

hnxn−k, n = 0, . . . , N − 1.

Note que nesta formula¸c˜ao, o c´alculo das primeiras K − 1 amostras necessitar˜ao de valores de xn para n negativo. Uma solu¸c˜ao comum ´e utilizar valores nulos nestes casos, o que corresponde `a interpreta¸c˜ao da convolu¸c˜ao linear que ser´a discutida a seguir, atrav´es da implementa¸c˜ao conhecida como convolu¸c˜ao linear r´apida.

Convolu¸c˜ao linear e convolu¸c˜ao linear r´apida

Uma outra opera¸c˜ao, que est´a relacionada `a convolu¸c˜ao circular mas possui complexidade com- putacional mais baixa e fornece um resultado um pouco diferente, ´e a chamada convolu¸c˜ao li- near, que essencialmente se difere da convolu¸c˜ao circular pelo anulamento dos termos xn−k quando n − k < 0 (ao inv´es de consider´a-los iguais a x(n−k) (mod N )). Dados dois sinais x e h de tamanho N , a convolu¸c˜ao linear pode ser computada eficientemente da seguinte forma:

1. Estenda os sinais x e y com zeros `a direita at´e o tamanho 2N . 2. Compute a FFT de 2N pontos dos dois sinais.

3. Multiplique os espectros calculados para obter Yn= XnHn, para n = 0, . . . , 2N − 1.

4. Compute a IFFT de 2N pontos do sinal Y = (Y0, . . . , Y2N −1) para obter y com coeficientes yn para n = 0, . . . , Y2N −1.

Como ´e baseada nos algoritmos da FFT e IFFT, o c´alculo da convolu¸c˜ao linear r´apida possui complexidade computacional igual a O(2N log(2N )), que ´e essencialmente O(N log(N )). Apesar disso, o vetor obtido n˜ao corresponde ao sinal cujo espectro ´e a multiplica¸c˜ao dos espectros dos sinais de entrada de tamanho N , pois o sinal y obtido pela convolu¸c˜ao linear r´apida possui tamanho

2N e seu espectro ´e a multiplica¸c˜ao dos espectros dos sinais de entrada estendidos com zeros at´e o tamanho de 2N .

A implementa¸c˜ao da convolu¸c˜ao linear diretamente no dom´ınio do tempo, que possui custo computacional O(N ) por amostra, tem a vantagem de permitir a implementa¸c˜ao de filtros com coeficientes que variam no tempo, al´em de permitir a interpreta¸c˜ao de x como fluxo de entrada (de tamanho arbitr´ario) e h como resposta impulsiva de um filtro de tamanho N . A complexidade computacional do c´alculo da implementa¸c˜ao da convolu¸c˜ao no dom´ınio do tempo depende, portanto, do tamanho do sinal de entrada e da ordem do filtro utilizado. Se a ordem do filtro ´e constante, ent˜ao a complexidade ´e linear no tamanho do sinal de entrada. Neste sentido, a d´uvida relevante para este trabalho ´e sobre o tamanho m´aximo de um filtro que pode ser aplicado a um sinal de entrada em tempo real em cada dispositivo considerado. A exemplo do que foi comentado sobre a FFT na Se¸c˜ao 2.2.1, a resposta depender´a da natureza de cada dispositivo. No Cap´ıtulo 3, por exemplo, ser´a visto que a restri¸c˜ao dos filtros a uma fam´ılia bastante espec´ıfica permite aumentar consideravelmente a ordem de alguns filtros implementados no Arduino.

Janelamento, processamento em blocos, e efeitos no espectro

No processamento de ´audio digital em tempo real, sup˜oe-se que o sinal digital ´e obtido e/ou gerado em blocos de amostras que representam se¸c˜oes do sinal correspondentes a intervalos de tempo iguais (veja a Se¸c˜ao 1.1.1). Por este motivo, o sinal completo nunca est´a totalmente dispon´ıvel antes do final da execu¸c˜ao do processamento. As ´unicas partes do sinal que est˜ao dispon´ıveis para processamento s˜ao o bloco atual e os blocos passados, limitados pelo tamanho da mem´oria do dispositivo utilizado. O arcabou¸co te´orico que fundamenta a manipula¸c˜ao do sinal em blocos ´e chamado janelamento, que pode ser entendido como um “recorte” do sinal digital de forma que se considere somente um peda¸co de tamanho fixo por vez.

Em sua forma mais simples, o janelamento pode ser compreendido como a multiplica¸c˜ao ponto a ponto do sinal digital original por uma vetor que vale 1 nos ´ındices que correspondem ao bloco considerado e zero em todos os outros pontos. Como a multiplica¸c˜ao no dom´ınio do tempo corres- ponde `a opera¸c˜ao de convolu¸c˜ao no dom´ınio das frequˆencias (veja a Se¸c˜ao 2.2.2), o janelamento introduz uma distor¸c˜ao no sinal que ´e quantific´avel. O efeito do janelamento no dom´ınio do tempo corresponde, no dom´ınio das frequˆencias, `a convolu¸c˜ao do espectro do sinal original com o espectro da janela utilizada. A janela retangular, por sua descontinuidade acentuada (em termos discretos) nos pontos onde come¸ca e termina, possui um espectro relativamente rico em rela¸c˜ao a outras janelas, mais frequentemente utilizadas, que possuem transi¸c˜oes mais suaves nas extremidades.

Considere que x ∈ CN seja o sinal original e que X ∈ CN seja o vetor que representa suas compo- nentes em frequˆencia calculadas pela FFT (veja a Se¸c˜ao 2.2.1). Considere tamb´em que w ∈ CN seja uma janela com wk= 0 para k < m e k ≥ m+M para uma certa escolha de m e M , e que W ∈ CN seja seu espectro. Considere, ainda, o sinal ˜x = (wmxm, wm+1xm+1, . . . , wm+M −1xm+M −1) ∈ CM que corresponde `a multiplica¸c˜ao ponto a ponto de x com w, considerando somente os M valores dentro da janela. Qual ´e, ent˜ao, a rela¸c˜ao entre os espectros de x e ˜x? Suponha que N = qM para algum q inteiro. Ent˜ao, a FFT ˜X ∈ CM do sinal ˜x ´e dada por ˜X

s =

e2πims/M

N (X ∗ W)qs, para s = 0, 1, . . . , M − 1 (Broughton e Bryan,2011).

Sobreposi¸c˜ao de blocos e janelamento deslizante

Mesmo em processamentos que n˜ao sejam realizados em tempo real pode haver motivos para realizar o janelamento do sinal. Um exemplo s˜ao processamentos em tempo-frequˆencia utilizando a FFT (vista na Se¸c˜ao 2.2.1). Uma transformada do sinal completo captura uma descri¸c˜ao das frequˆencias que comp˜oem o sinal como um todo e muitas vezes pode n˜ao capturar com precis˜ao aquelas frequˆencias que est˜ao presentes somente em uma parte do sinal. Atrav´es do janelamento, ´e poss´ıvel analisar se¸c˜oes menores do sinal e observar eventos transientes, que ocorrem somente em regi˜oes pequenas do sinal (veja mais sobre isso nas Se¸c˜oes 2.2.3 e 2.2.4). A resolu¸c˜ao da an´alise, ou

2.2 PROCESSAMENTOS REPRESENTATIVOS PARA MANIPULAC¸ ˜AO DE ´AUDIO 31 seja, o n´umero de componentes igualmente espa¸cadas entre 0 e R/2 Hz que podem ser representadas por uma FFT feita sobre um bloco de amostras, ´e determinada pelo tamanho do bloco.

H´a portanto uma certa dualidade entre a resolu¸c˜ao nos dom´ınios do tempo e das frequˆencias. Diminuir o tamanho dos blocos com o objetivo de aumentar a resolu¸c˜ao no dom´ınio do tempo implica necessariamente em diminuir a resolu¸c˜ao, ou a quantidade de componentes calculadas pela FFT, no dom´ınio das frequˆencias. Uma forma de obter um balan¸co entre a resolu¸c˜ao nos dois dom´ınios ´e permitir a sobreposi¸c˜ao de blocos no dom´ınio do tempo. A sobreposi¸c˜ao permite que a resolu¸c˜ao no dom´ınio das frequˆencias seja mantida, pois o tamanho de cada bloco ´e o mesmo, e que a resolu¸c˜ao no dom´ınio do tempo seja aumentada, pois a cada passo o in´ıcio do novo bloco considerado ´e menos distante no tempo do in´ıcio do bloco anterior (Z¨olzer,2002). A realiza¸c˜ao da opera¸c˜ao de janelamento sobre um sinal de forma que janelas sucessivas sejam consideradas a cada itera¸c˜ao (com ou sem sobreposi¸c˜ao) ´e chamada janelamento deslizante.

No caso de processos de s´ıntese que utilizam janelamento deslizante ´e necess´ario tomar uma decis˜ao sobre a forma de combinar as partes dos blocos de amostras sobrepostas em blocos adjacen- tes. Uma t´ecnica bastante utilizada ´e chamada overlap-add . Se o janelamento foi feito utilizando uma janela com extremidades suaves, o procedimento de overlap-add consiste apenas em somar as amostras que se sobrep˜oem nos diferentes blocos, para obter a amostra final.