Processamento de áudio em tempo real em dispositivos ...
Transcript of 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
Introducao
Metodologia
Arduino
GPU
Android
Introducao
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.
Processamento de audio digital
DSPADC DACx (n) y (n ) y (t )x (t )
f s = 1__T
f s = 1__T
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.
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.
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.
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.
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.
Metodologia
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.
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.
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.
Dispositivos escolhidos
I Microcontrolador: Arduino com ATmega328P.
I Processador paralelo: placas GPU.
I Dispositivos moveis: Sistema operacional Android.
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.
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.
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.
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
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 .
Convolucao no domınio do tempo
y[n] = 0
para k=0 ate S, faca:
y[n] += b[k] * x[n-k]
Sıntese aditiva
y(n) =K∑
k=1
rk(n) sin
(2πfkn
R
), n ≥ 0.
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 .
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?
Arduino
Arduino
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).
Idiossincrasias do Arduino
I Entrada/saıda de dados depende de ADC e DCA.
I Limitacao de memoria.
I Arquitetura RISC de 8 bits.
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.
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).
Saıda de audio: Pulse Width Modulation (PWM)
0
1
0
1
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
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.
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
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
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
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
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.
GPU
GPU: Graphics Processing Unit
Diferencas gerais em relacao a CPU
Idiossincrasias da GPU
I Paralelismo.
I A memoria da GPU nao e compartilhada com a da CPU.
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).
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
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
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
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.
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
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
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.
Android
Sistema operacional Android
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).
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.
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.
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.
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
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
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
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
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).
Conclusoes gerais
I Pode-se usar a metodologia apresentada para avaliacao dequalquer dispositivo computacional.
I Nao acreditem em preconcepcoes sobre os modeloscomputacionais e 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/
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.