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

Processamento de áudio em tempo real em dispositivos

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

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.