processamento de áudio em tempo real em dispositivos...
Post on 10-Nov-2018
215 Views
Preview:
TRANSCRIPT
Processamento de audio em tempo real emdispositivos computacionais de alta
disponibilidade e baixo custo
Andre J. Bianchi
15/10/2013
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.
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 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 .
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?
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).
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.
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.
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: ajb@ime.usp.br
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.
top related