Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Estudos de caso sobre processamento de audioem tempo real em plataformas
computacionais de alta disponibilidade e baixocusto
Andre J. Bianchi
08/05/2013
Processamento de audio em tempo real
Algoritmos
Arduino
GPU
Android
Processamento de audio em tempo real
Exemplo de processamento digital de audioFUNDAMENTALS OF DIGITAL SIGNAL PROCESSING 21
DAFXADC DACx (n) y (n ) y (t )x (t )
fs =1__T
fs =1__T
0.5
0 500−0.05
0
0.05x (t )
t in μs → 0 10 20
−0.05
0
0.05
n →
x (n)
0 10 20−0.05
0
0.05
n →
y (n )
0 500−0.05
0
0.05
t in μs →
y (t )
T
Figure 1.11 Sampling and quantizing by ADC, digital audio effects and reconstruction by DAC.
fS = 1/T (sampling rate). The sampling frequency reflects the number of samples per second inHertz (Hz). According to the sampling theorem, it has to be chosen as twice the highest frequencyfmax (signal bandwidth) contained in the analog signal, namely fS > 2 · fmax. If we are forced touse a fixed sampling frequency fS , we have to make sure that our input signal to be sampled hasa bandwidth according to fmax = fS/2. If not, we have to reject higher frequencies by filteringwith a lowpass filter which only passes all frequencies up to fmax. The digital signal is then passedto a DAFX box (digital system), which in this example performs a simple multiplication of eachsample by 0.5 to deliver the output signal y(n) = 0.5 · x(n). This signal y(n) is then forwardedto a digital-to-analog converter DAC, which reconstructs the analog signal y(t). The output signaly(t) has half the amplitude of the input signal x(t).
Figure 1.12 shows some digital signals to demonstrate different graphical representations (seeM-file 1.1). The upper part shows 8000 samples, the middle part the first 1000 samples and thelower part shows the first 100 samples out of a digital audio signal. Only if the number of samplesinside a figure is sufficiently low, will the line with dot graphical representation be used for adigital signal.
M-file 1.1 (figure1_03.m)
% Author: U. Zolzer[x,FS,NBITS]=wavread(’ton2.wav’);
figure(1)subplot(3,1,1);plot(0:7999,x(1:8000));ylabel(’x(n)’);subplot(3,1,2);plot(0:999,x(1:1000));ylabel(’x(n)’);subplot(3,1,3);stem(0:99,x(1:100),’.’);ylabel(’x(n)’);xlabel(’n \rightarrow’);
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}b1 .
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}b2 .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.
Contexto da pesquisa
Perguntas sobre processamento em tempo real:
I Quais plataformas podem ser utilizadas? Quais as restricoes epossibilidades que cada uma delas possui?
I Como medir o desempenho de uma ferramenta para oprocessamento de audio em tempo real?
Proposta:
I Escolher plataformas 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 algoritmosnas plataformas.
Escolha das Plataformas de processamento
Criterios de interesse para a area de computacao musical:
I Sensores.
I Mobilidade.
I Poder de processamento.
I Licencas de uso.
I Expressao computacional.
Plataformas escolhidas:
I Arduino (microcontrolador).
I GPU (processamento paralelo).
I Android (sistemas moveis).
Algoritmos
Algoritmos representativos
Alguns algoritmos frequentemente utilizados em rotinas demanipulacao de audio:
I Convolucao no domınio do tempo.
I Sıntese aditiva.
I FFT.
Convolucao no domınio no tempo (filtros FIR)
y[n] = 0
para k=0 ate N, faca:
y[n] += b[k] * x[n-k]
Sıntese aditiva
y[n] = 0
para k=1 ate K, faca:
y[n] = r(k,n) * sin(f(k,n))
Transformada Rapida de Fourier (FFT)
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
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 plataforma?
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).
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 emtempo real em Arduino
Detalhes de implementacao que fazem a diferenca:
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
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 emtempo 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).
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.
Aplicacao 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 emtempo 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).
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.