Processamento de áudio em tempo real em dispositivos ...

64
Processamento de ´ audio em tempo real em dispositivos computacionais de alta disponibilidade e baixo custo Andr´ e J. Bianchi 15/10/2013

Transcript of Processamento de áudio em tempo real em dispositivos ...

Page 1: Processamento de áudio em tempo real em dispositivos ...

Processamento de audio em tempo real emdispositivos computacionais de alta

disponibilidade e baixo custo

Andre J. Bianchi

15/10/2013

Page 2: Processamento de áudio em tempo real em dispositivos ...

Introducao

Metodologia

Arduino

GPU

Android

Page 3: Processamento de áudio em tempo real em dispositivos ...

Introducao

Page 4: Processamento de áudio em tempo real em dispositivos ...

Contexto e motivacao

Pesquisa em computacao musical:

I Recuperacao de informacoes.

I Composicao / improvisacao / acompanhamento.

I Sıntese sonora.

I Auralizacao / espacializacao.

I Processamento de audio.

Contexto tecnologico:

I Lei de Moore.

I Obsolescencia programada.

I Propaganda / Fetichizacao / consumismo.

I Lixo tecnologico.

Page 5: Processamento de áudio em tempo real em dispositivos ...

Processamento de audio digital

DSPADC DACx (n) y (n ) y (t )x (t )

f s = 1__T

f s = 1__T

Page 6: Processamento de áudio em tempo real em dispositivos ...

Ciclo de processamento

I Entrada:

I Conversao Analogico-Digital.I Frequencia de amostragem e amplitude de espectro.I Quantizacao e profundidade de bits.I Sinal digital: x : N→ {0, 1}b.

I Processamento.

I Manipulacao do sinal: analise, sıntese, recuperacao deinformacao, efeitos.

I Processamento em blocos, sobreposicao.I Representacoes: tempo e frequencia.

I Saıda.

I Sinal digital: y : N→ {0, 1}b′.

I Taxa de geracao de amostras e profundidade de bits.I Conversao Digital-Analogico.

Page 7: Processamento de áudio em tempo real em dispositivos ...

Processamento em tempo real

Processamento em blocos:

I Perıodo do bloco: N amostras.

I Frequencia de amostragem: R Hz.

I Atraso mınimo: NR s.

I Fator de sobreposicao: M.

I Cada ciclo avanca NM amostras ou N

MR s.

Restricoes de tempo real:

I O ciclo tem que ser executado periodicamente.

I O perıodo do ciclo tem que ser menor que tempo decomputacao tem que ser menor que o perıodo do ciclo deprocessamento.

Page 8: Processamento de áudio em tempo real em dispositivos ...

Proposta de pesquisa

Perguntas sobre processamento em tempo real:

I Quais modelos computacionais e dispositivos podem serutilizadas? Quais as restricoes e possibilidades que cada umpossui?

I Como medir o desempenho de uma modelo ou dispositivopara o processamento de audio em tempo real?

Proposta:

I Escolher dispositivos de baixo custo e alta disponibilidade.

I Escolher uma serie de algoritmos de processamento de audiofrequentemente utilizados.

I Investigar a implementacao e o desempenho dos algoritmosnos dispositivos.

Page 9: Processamento de áudio em tempo real em dispositivos ...

Objetivo da pesquisa

Desenvolvimento de uma metodologia . . .

. . . para analise de desempenho. . .

. . . do processamento de audio . . .

. . . em tempo real. . .

. . . em dispositivos computacionais. . .

. . . de baixo custo. . .

. . . e alta disponibilidade.

Page 10: Processamento de áudio em tempo real em dispositivos ...

Objetivo da pesquisa

Desenvolvimento de uma metodologia . . .

. . . para analise de desempenho. . .

. . . do processamento de audio . . .

. . . em tempo real. . .

. . . em dispositivos computacionais. . .

. . . de baixo custo. . .

. . . e alta disponibilidade.

Page 11: Processamento de áudio em tempo real em dispositivos ...

Metodologia

Page 12: Processamento de áudio em tempo real em dispositivos ...

Metodologia geral

Formatacao do problema:

I Identificacao de modelos computacionais de interesse.

I Escolha de dispositivos.

I Escolha de algoritmos de processamento em tempo real.

I Estabelecimento de metricas e metodos para avaliacao dedesempenho.

Experimentacao:

I Desenvolvimento de testes.

I Implementacao.

I Execucao dos testes e obtencao dos resultados.

I Analise dos resultados.

Page 13: Processamento de áudio em tempo real em dispositivos ...

Identificacao de modelos computacionais de interesse

Criterios de interesse geral:

I Baixo custo.

I Alta disponibilidade.

Criterios de interesse para a area de computacao musical:

I Sensores.

I Mobilidade.

I Poder de processamento.

I Licencas de uso.

I Expressao computacional.

Page 14: Processamento de áudio em tempo real em dispositivos ...

Modelos computacionais escolhidos

Microcontroladores:

I Baixo custo.

I Baixo consumo de energia.

Processadores paralelos:

I Alta capacidade computacional.

I Possibilidade de exploracao do paralelismo.

Dispositivos moveis:

I Ubiquidade.

I Versatilidade.

Page 15: Processamento de áudio em tempo real em dispositivos ...

Dispositivos escolhidos

I Microcontrolador: Arduino com ATmega328P.

I Processador paralelo: placas GPU.

I Dispositivos moveis: Sistema operacional Android.

Page 16: Processamento de áudio em tempo real em dispositivos ...

Algoritmos de processamento em tempo real

Alguns algoritmos frequentemente utilizados em rotinas demanipulacao de audio:

I FFT.

I Convolucao no domınio do tempo.

I Sıntese aditiva.

Page 17: Processamento de áudio em tempo real em dispositivos ...

Transformada Discreta de Fourier (DFT)

Seja x ∈ CN um vetor (x0, x1, . . . , xN−1). A Transformada Discretade Fourier de x e o vetor X ∈ CN com componentes

Xk =N−1∑m=0

xme−2πikm/N ,

para 0 ≤ k ≤ N − 1.

Propriedades:

I Linearidade.

I Inversıvel (IDFT).

I Simetria para sinais reais.

Page 18: Processamento de áudio em tempo real em dispositivos ...

Transformada Rapida de Fourier (FFT)

I A implementacao ingenua da DFT e O(N log(N)).

I E possıvel explorar a estrutura da DFT para acelerar acomputacao.

Page 19: Processamento de áudio em tempo real em dispositivos ...

A FFT e O(N log(N))

Transformada Discreta de Fourier:

X (k) =N−1∑n=0

x(n)e−2πiN

nk

=

N2−1∑

m=0

x(2m)e−2πiN

(2m)k

︸ ︷︷ ︸Ek

+e−2πiN

k

N2−1∑

m=0

x(2m + 1)e−2πiN

(2m)k

︸ ︷︷ ︸Ok

.

Transformada Rapida de Fourier:

X (k) =

{Ek + e

−2πiN

kOk se k < N2

Ek−N2

+ e−2πiN

(k−N2

)Ok−N2

se k ≥ N2

Page 20: Processamento de áudio em tempo real em dispositivos ...

Convolucao circular

Sejam x, y ∈ CN . A convolucao circular de x e y e o vetor w ∈ CN

com componentes

wr =N−1∑n=0

xky(r−k mod N),

para 0 ≤ r ≤ N − 1. A convolucao circular e denotada porw = x ∗ y.

Teorema da convolucao: Se X, Y e W sao as DFTs de x, y e w,entao

Wk = XkYk .

Page 21: Processamento de áudio em tempo real em dispositivos ...

Convolucao no domınio do tempo

y[n] = 0

para k=0 ate S, faca:

y[n] += b[k] * x[n-k]

Page 22: Processamento de áudio em tempo real em dispositivos ...

Sıntese aditiva

y(n) =K∑

k=1

rk(n) sin

(2πfkn

R

), n ≥ 0.

Page 23: Processamento de áudio em tempo real em dispositivos ...

Sıntese aditiva: implementacao com consulta a tabela

Para frequencias fixas:

y(n) =K∑

k=1

rk(n)s[fknS/R].

Para frequencias que variam com o tempo:

y(n) =K∑

k=1

rk(n)q(s, Ik(n)),

onde:

I Ik(n) e o ındice de consulta.

I q e uma funcao de consulta que incrementa Ik(n) de acordocom o valor atual de fk .

Page 24: Processamento de áudio em tempo real em dispositivos ...

Perguntas sobre os algoritmos

I Quais parametros de cada algoritmo influenciam nacomplexidade?

I Qual e o tempo gasto para computar uma certa instancia deum algoritmo?

I Qual e a maior instancia computavel em tempo real?

I Quais as possibilidades e restricoes de implementacao emcada dispositivo?

Page 25: Processamento de áudio em tempo real em dispositivos ...

Arduino

Page 26: Processamento de áudio em tempo real em dispositivos ...

Arduino

Page 27: Processamento de áudio em tempo real em dispositivos ...

O projeto Arduino

Caracterısticas principais:

I Estrutura minimal para interface com um microcontrolador.

I Baixo custo: 20-50 USD.

I Baixo consumo de energia.

I Licenciamento livre.

Microcontrolador Atmel AVR ATmega328P:

I CPU: unidade aritmetica e registradores (16 MHz - 8 bits).

I Memorias: Flash (32 KB), SRAM (2 KB) e EEPROM (1 KB).

I Portas digitais de entrada (com ADC) e saıda (com PWM).

Page 28: Processamento de áudio em tempo real em dispositivos ...

Idiossincrasias do Arduino

I Entrada/saıda de dados depende de ADC e DCA.

I Limitacao de memoria.

I Arquitetura RISC de 8 bits.

Page 29: Processamento de áudio em tempo real em dispositivos ...

Entrada de audio: perıodo de amostragem

pre-escalonador Tconv (µs) Tconv (µs) fconv (≈KHz)

2 1,81 12,61 79,30

4 3,62 16,06 62,26

8 7,25 19,76 50,60

16 14,50 20,52 48,73

32 29,00 34,80 28,73

64 58,00 67,89 14,72

128 116,00 114,85 8,70

I Resolucao da funcao micros(): 4˜µs.

I R = 44.100˜Hz ⇒ 1/R ≈ 22, 67 µs.

I R = 31.250˜Hz ⇒ 1/R = 32, 00 µs.

Page 30: Processamento de áudio em tempo real em dispositivos ...

Entrada de audio: ADC

Conversor analogico-digital:

I Resolucao: 8 ou 10 bits.

I Tempo de conversao: 13 a 260 µs.

I Conversao manual ou automatica.

Parametros escolhidos:

I Resolucao de 8 bits.

I Pre-escalonador igual a 8 (ate 50 KHz).

Page 31: Processamento de áudio em tempo real em dispositivos ...

Saıda de audio: Pulse Width Modulation (PWM)

0

1

0

1

Page 32: Processamento de áudio em tempo real em dispositivos ...

Frequencias de operacao de um contador de 8 bits

pre-escalonador fincr (KHz) foverflow (Hz)

1 16.000 62.500

8 2.000 7.812

32 500 1.953

64 250 976

128 125 488

256 62,5 244

1024 15,625 61

Page 33: Processamento de áudio em tempo real em dispositivos ...

Saıda de audio

PWM no ATmega328P:

I Modos de operacao: Fast e Phase Correct.

I Pre-escalonador.

I 2 contadores de 8 bits e 1 de 16 bits.

I Interrupcao por overflow.

Parametros escolhidos:

I Fast PWM.

I Contador de 8 bits.

I Pre-escalonador igual a 1.

I Frequencia de overflow: 16˜MHz / 1 / 28 = 62.500˜Hz.

I Taxa de geracao de amostras: 31.250˜Hz.

Page 34: Processamento de áudio em tempo real em dispositivos ...

Convolucao no Arduino (usando operacoes sobre bits)

0

1

2

3

4

5

6

7

8

9

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Syn

th t

ime

(m

s)

Order of the filter

Time-domain convolution on Arduino (mult/div)

0

1

2

3

4

5

6

7

8

9

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Syn

th t

ime

(m

s)

Order of the filter

Time-domain convolution on Arduino (variable pad)

0

1

2

3

4

5

6

7

8

9

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Syn

th t

ime

(m

s)

Order of the filter

Time-domain convolution on Arduino (constant pad)

block size 32rt period 32

block size 64rt period 64

block size 128rt period 128

block size 256rt period 256

Page 35: Processamento de áudio em tempo real em dispositivos ...

Sıntese aditiva no Arduino: quantidade e tipos de operacaoutilizadas

0

1

2

3

4

5

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Synth

tim

e (

ms)

Number of oscilators

Operations in additive synth (R=31250/N=128)

mult/divdiv

var padrt period

Page 36: Processamento de áudio em tempo real em dispositivos ...

Sıntese aditiva no Arduino: uso de lacos

0

1

2

3

4

5

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Synth

tim

e (

ms)

Number of oscilators

Additive Synthesis on Arduino (loop)

0

1

2

3

4

5

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Synth

tim

e (

ms)

Number of oscilators

Additive Synthesis on Arduino (inline)

block size 32rt period 32

block size 64rt period 64

block size 128rt period 128

Page 37: Processamento de áudio em tempo real em dispositivos ...

FFT no Arduino (a 1953 Hz)

0

50

100

150

200

250

300

... 64 128 256 512

Analy

sis

tim

e (

ms)

Block size

FFT on Arduino (at 1953 Hz)

fft sin()fft table

rt period

Page 38: Processamento de áudio em tempo real em dispositivos ...

Algumas conclusoes. . .

. . . sobre processamento de audio em tempo real em Arduino:

I Tipos utilizados (byte, unsigned long, int, float, etc) saofundamentais.

I Multiplicacao/divisao (de inteiros) demoram pelo menos odobro que operacoes sobre inteiros.

I A quantidade de lacos e condicionais faz diferenca.

I Consulta a variaveis e vetores tambem faz diferenca.

Page 39: Processamento de áudio em tempo real em dispositivos ...

GPU

Page 40: Processamento de áudio em tempo real em dispositivos ...

GPU: Graphics Processing Unit

Page 41: Processamento de áudio em tempo real em dispositivos ...

Diferencas gerais em relacao a CPU

Page 42: Processamento de áudio em tempo real em dispositivos ...

Idiossincrasias da GPU

I Paralelismo.

I A memoria da GPU nao e compartilhada com a da CPU.

Page 43: Processamento de áudio em tempo real em dispositivos ...

Analise de desempenho na GPU

Valores importantes:

I Tempo de transferencia de memoria (ida e volta).

I Tempo de execucao do programa.

I Tempo total (soma dos tempos acima).

Implementacoes paralelas:

I FFT (da API).

I Phase Vocoder (FFT + Sıntese Aditiva).

Page 44: Processamento de áudio em tempo real em dispositivos ...

Placas utilizadas para testes

GF100GL GTX275 GTX400

CUDA cores 256 240 448

Memoria RAM (MB) 2000 896 1280

Banda de memoria (GB/s) 89.6 127.0 133.9

Page 45: Processamento de áudio em tempo real em dispositivos ...

FFT na GPU

0

0.5

1

1.5

2

2.5

3

... 214

215

216

217

Du

ratio

n (

s)

Block size

FFT roundtrip time - GTX275

0

0.5

1

1.5

2

2.5

3

... 214

215

216

217

Du

ratio

n (

s)

Block size

FFT roundtrip time - GTX470

0

0.5

1

1.5

2

2.5

3

... 214

215

216

217

Du

ratio

n (

s)

Block size

FFT roundtrip time - GF100GL

host to devicekernel time

device to hostroundtriprt period

Page 46: Processamento de áudio em tempo real em dispositivos ...

FFT na GPU (zoom)

0

0.1

0.2

0.3

0.4

0.5

0.6

... 214

215

216

217

Du

ratio

n (

s)

Block size

FFT roundtrip time - GTX275

0

0.1

0.2

0.3

0.4

0.5

0.6

... 214

215

216

217

Du

ratio

n (

s)

Block size

FFT roundtrip time - GTX470

0

0.1

0.2

0.3

0.4

0.5

0.6

... 214

215

216

217

Du

ratio

n (

s)

Block size

FFT roundtrip time - GF100GL

host to devicekernel time

device to hostroundtriprt period

Page 47: Processamento de áudio em tempo real em dispositivos ...

Mais um algoritmo: Phase Vocoder220 TIME-FREQUENCY PROCESSING

Transformation

Time

Synthesis

n

f

n

n

n1 n2

Fre

qu

en

cyAnalysis

Short-timeSpectra

Figure 7.1 Digital audio effects based on analysis, transformation and synthesis (resynthesis).

Magnitude Phase

Sh

ort

-tim

eF

ou

rie

r tr

an

sfo

rm

FFT

Windowing

Time-domainsignal

An

aly

sis

Sta

ge

Syn

the

sis

Sta

geIFFT

Magnitude and Phasecalculation

Overlap-add

Time-domainsignal

Time-frequencyProcessing

Inve

rse

sh

ort

-tim

eF

ou

rie

r tr

an

sfo

rm

Figure 7.2 Time-frequency processing based on the phase vocoder: analysis, transformation and

synthesis.

1. Analise:I Janela deslizante de tamanho finito.I FFTs consecutivas do sinal x(n).I Espectro variante no tempo: X (n, k).

2. Transformacao: modificacoes em |X (n, k)| e ϕ(X (n, k)).

3. Sıntese: Sıntese aditiva.

Page 48: Processamento de áudio em tempo real em dispositivos ...

Sıntese aditiva do Phase Vocoder na GPU

5

10

15

20

25

30

... 214

215

216

217

Du

ratio

n (

s)

Block size

PV synth kernel time - GTX275

5

10

15

20

25

30

... 214

215

216

217

Du

ratio

n (

s)

Block size

PV synth kernel time - GTX470

5

10

15

20

25

30

... 214

215

216

217

Du

ratio

n (

s)

Block size

PV synth kernel time - GF100GL

1. cubic interp2. linear interp

3. truncated4. builtin sine

5. texture interpno calculation

rt period

Page 49: Processamento de áudio em tempo real em dispositivos ...

Sıntese aditiva do Phase Vocoder na GPU (zoom)

1

2

3

214

215

216

Du

ratio

n (

s)

Block size

PV synth kernel time - GTX275

1

2

3

214

215

216

Du

ratio

n (

s)

Block size

PV synth kernel time - GTX470

1

2

3

214

215

216

Du

ratio

n (

s)

Block size

PV synth kernel time - GF100GL

1. cubic interp2. linear interp

3. truncated4. builtin sine

5. texture interpno calculation

rt period

Page 50: Processamento de áudio em tempo real em dispositivos ...

Algumas conclusoes. . .

. . . sobre processamento de audio em tempo real em GPU

I Tempo de transferencia de memoria e comparavel ao da FFT.

I Diferencas na implementacao fazem diferenca:

I Consulta a tabela (truncada, ou com interpolacao linear oucubica).

I Consulta a tabela em memoria de textura.I Funcao seno da API.

Page 51: Processamento de áudio em tempo real em dispositivos ...

Android

Page 52: Processamento de áudio em tempo real em dispositivos ...

Sistema operacional Android

Page 53: Processamento de áudio em tempo real em dispositivos ...

O projeto Android

I Kernel do Linux.

I Drivers para muitos dispositivos.

I Aplicativos e API em Java (maquina virtual propria).

I Conectividade e sensores.

I Licenciamento livre (com excecao de drivers).

Page 54: Processamento de áudio em tempo real em dispositivos ...

Idiossincrasias do sistema Android

I Java (JNI incluso).

I API de alto nıvel para:

I acesso ao hardware de audio.

I agendamento de funcoes de manipulacao.

I Programacao no espaco de usuario.

Page 55: Processamento de áudio em tempo real em dispositivos ...

Processamento em tempo real em Android

I Entrada de audio:I Classe: AudioRecord.I Microfones, audio da chamada (garante 1 canal, 16 bits).

I Processamento:I Metodo: scheduleAtFixedRate.I Agendamento.

I Saıda de audio:I Classe: AudioTrack.I 8 e 16 bits.

Page 56: Processamento de áudio em tempo real em dispositivos ...

Aplicativo para Android e testes

Cenario dos testes:

I Chamado por email.

I Instrucoes para execucaodo teste.

I Envio dos resultados poremail.

I 11 aparelhos testados.

I Menor numero de ciclos deteste para blocos grandes.

Page 57: Processamento de áudio em tempo real em dispositivos ...

Android: Loopback em diferentes aparelhos

0

2

4

6

8

10

12

64 128 256 512

Dura

tion (

ms)

Block size

Callback times for loopback on each device (1/2)

0

20

40

60

80

100

120

140

160

1024 2048 4096 8192

Block size

Callback times for loopback on each device (2/2)

rt perioda853 v7a853 v8gti5500bgti9000gti9100

gtp1000lmz604

r800itf101x10i

xoom

Page 58: Processamento de áudio em tempo real em dispositivos ...

Convolucao no Android: Filtro IIR em diferentes aparelhos

0

2

4

6

8

10

12

64 128 256 512

Dura

tion (

ms)

Block size

Callback times for reverb on each device (1/2)

0

20

40

60

80

100

120

140

160

1024 2048 4096 8192

Block size

Callback times for reverb on each device (2/2)

rt perioda853 v7a853 v8gti5500bgti9000gti9100

gtp1000lmz604

r800itf101x10i

xoom

Page 59: Processamento de áudio em tempo real em dispositivos ...

Convolucao no Android: FFT em diferentes aparelhos

0

2

4

6

8

10

12

64 128 256 512

Dura

tion (

ms)

Block size

Callback times for FFT on each device (1/2)

0

20

40

60

80

100

120

140

160

1024 2048 4096 8192

Block size

Callback times for FFT on each device (2/2)

rt perioda853 v7a853 v8gti5500bgti9000gti9100

gtp1000lmz604

r800itf101x10i

xoom

Page 60: Processamento de áudio em tempo real em dispositivos ...

Android: ordem maxima de um filtro

0

50

100

150

200

250

300

350

400

64 128 256 512

Maxim

um

# o

f F

IR c

oeffic

ients

Block size

Maximum filter size (1/2)

0

50

100

150

200

250

300

350

400

1024 2048 4096 8192

Block size

Maximum filter size (2/2)

a853 v7 a853 v8 gti5500b gti9000 gti9100

gtp1000l

mz604 r800i tf101 x10i

xoom

Page 61: Processamento de áudio em tempo real em dispositivos ...

Algumas conclusoes. . .

. . . sobre processamento de audio em tempo real em Android:

I O modelo de aparelho faz diferenca significativa nodesempenho.

I O sistema desenvolvido pode ser usado para avaliacao dodesempenho (em tempo real ou nao).

Page 62: Processamento de áudio em tempo real em dispositivos ...

Conclusoes gerais

I Pode-se usar a metodologia apresentada para avaliacao dequalquer dispositivo computacional.

I Nao acreditem em preconcepcoes sobre os modeloscomputacionais e dispositivos.

Page 63: Processamento de áudio em tempo real em dispositivos ...

Fim!

Obrigado pela atencao!

I Contato: [email protected]

I Grupo de Computacao Musical do IME/USP:http://compmus.ime.usp.br/

I Esta apresentacao: http://www.ime.usp.br/~ajb/

Page 64: Processamento de áudio em tempo real em dispositivos ...

Credito aos autores das imagens

I Convolucao no domınio do tempo: Blanchardj -http://en.wikipedia.org/wiki/File:FIR_Filter.svg

I Sıntese aditiva: Chrisjohnson -http://en.wikipedia.org/wiki/File:Additive_synthesis.svg

I FFT: Virens -http://en.wikipedia.org/wiki/File:DIT-FFT-butterfly.png

I Arduino: domınio publico.

I PWM: CyrilB - http://en.wikipedia.org/wiki/File:Pwm.svg

I NVIDIA GPU: http://www.nvidia.com/

I Camadas do sistema operacional Android: Smieth - http://en.wikipedia.org/wiki/File:Android-System-Architecture.svg

I Software de analise de desempenho no Android: domınio publico.