Story Transcript
An´ alisis Espectral 2: Vocoder y S´ıntesis Sinusoidal Juan-Pablo C´aceres CCRMA Stanford University Adaptado/traducido de la clase de Julius Smith “Spectral Audio Modeling”
Agosto, 2007
Contenidos
Preambulo: S´ıntesis Aditiva
El Vocoder y el Voder
Phase Vocoder
Sines+Noise Modeling
Preambulo: S´ıntesis Aditiva S´ıntesis aditiva es una t´ecnica en la que una se˜ nal es reconstruida sumando “sinusoides”. Cada “sinusoide” tiene amplitud y frecuencia que var´ıa en el tiempo: y(t) =
N X
Ai (t) sin[θi (t)]
i=1
donde Ai (t) = Amplitud del ito parcial en el tiempo t Z t ωi (t)dt + φi (0) = fase instant´ anea θi (t) = 0
ωi (t) = Frecuencia en radianes del ito parcial vs. tiempo φi (0) = Fase incial del ito parcial en el tiempo 0
todas estas cantidades son reales.
Envolventes de Amplitud y Fase T´ıpicos
ak
t wkt
wk
t
Aplicabilidad de la S´ıntesis Aditiva y(t) =
N X
Ai (t) sin
i=1
Z
t 0
ωi (t)dt + φi (0)
◮
El modelo sinusoidal es eficiente para se˜ nales tonales como la voz, tonos intrumentales que no varian, cuerdas pulsadas, y otros.
◮
Es ineficiente para se˜ nales de tipo ruido, como consonantes, la parte “chiff” de las flautas/organos.
◮
Ineficiente para ataques (transientes r´apidos en el tiempo) como instrumentos de percusi´on o ataques en notas.
◮
Es m´ as eficiente cuando Ai (t) y ωi (t) var´ıan lentamente (i.e., tenemos realmente una suma de componentes cuasi-sinusoidales) y cuando φi (t) puede ser despreciado. Es bien sabido que modificaciones de la fase φi en la suma de sinusoides no son usualmente audibles.
Banco de Osciladores A1
f1
A2
f2
A3
f3
A4
f4
noise s
FIR
out
y(t) =
4 P
i=1
Ai (t) sin
hR
t 0 ωi (t)dt + φi (0)
i
◮
Para reproducir la se˜ nal, debemos primero analizarla para determinar las trayectorias de amplitud y frecuencia para cada componente sinusoidal. Podemos o no querer la informaci´on de fase.
◮
Para este an´ alisis se usaba originalmente el Vocoder
El Vocoder ◮
El t´ermino “vocoder” deriva de “voice coder”, y es el nombre para una clase de m´etodo de an´alisis/s´ıntesis basado en an´ alisis de bancos de filtros.
◮
Es el m´ as viejo de los esquemas de “codificaci´on de sub-banda”, iniciandose en los 1930s en Bell Telephone Laboratories (Bell Labs)
◮
El t´ermino “vocoder” es ahora com´ unmente asociado con la “Transformada Corta de Fourier Modificada”, y el vocoder como fue definido hist´oricamente es r´aramente usado.
◮
El “phase vocoder” es comunmente usado en “cross-s´ıntesis” en audio. Channel Vocoder
◮
◮
◮
S´ olo se determina la magnitud de la se˜nal en cada banda de filtro.
Phase Vocoder ◮
Se determina tanto la magnitud como la fase
El Voder
◮
El Voder (Voice Operation Demonstrator) es un controlador manual de un vocoder. Fue contruido y demostrado en 1939 en el Feria internacional de Nueva York y San Francisco.
◮
Las alturas son controladas por un pedal, y 10 dedos controlan las ganancias de los filtros pasa banda. La selecci´on en “buzz/hiss” se hacia con una barra de mu˜ neca
◮
3 teclas adicionales controlan las transientes de excitaci´on de los filtros seleccionados de modo de obtener consonantes. “Performing speech” en el Voder requiere de aproximadamente 1 a˜ no de entrenamiento antes de que sea inteligible.
El Voder 1939
http://davidszondy.com/future/robot/voder.htm voder.wav
El Voder
http://ptolemy.eecs.berkeley.edu/∼ eal/audio/voder.html
El Voder
http://www.acoustics.hut.fi/publications/files/theses/lemmetty mst/chap2.html
Diagram de Bloques del Vocoder magnitude, or magnitude and phase extraction
A
X0
Xhat0
f
x
A
X1 f
A
Data Compression, Transmission, Storage, Manipulation, Noise reduction, ...
XNM1
Xhat1
xhat
XhatNM1
f
Analysis
Processing
Synthesis
El vocoder descompone la se˜ nal en sub-bandas. para cada banda se determina ya sea: ◮
La magnitud (en el caso del “channel vocoder”)
◮
La magnitud y la fase (en el caso del “phase vocoder”)
Modelo de Canal de Vocoder Si asumimos que tenemos a lo m´as 1 sinusoide con parametros que var´ıan con el tiempo en cada canal, entonces escribimos xk (t), la se˜ nal en la banda k: xk (t) = ak (t) cos[ωk t + φk (t)]
Analysis Model
Synthesis Model ak
Channel Filter Response
A F Sine Osc
∆ωk
ωk
0
ωk+∆ωk(t)
ak(t)
ω Out
con ∆ωk (t) ,
d dt φk (t)
Calculando los Par´ ametros del Vocoder
Para el “channel vocodel” s´ olo se requiere determinar la amplitud de la se˜ nal. Podemos usar un seguidor de envolvente en cada subbanda, implementada con rectificaci´ on y filtrado pasa bajos filtro pasa bajos. Rectification x
xkt
Averaging Energy in subband k vs time
h(t)
out xkt in xk
t
output
Phase Vocoder Para el Phase Vocoder, necesitamos determinar tanto la amplitud como la fase de la se˜ nal en cada subbanda. Asumimos que no hay m´as que una componente sinusoidal en cada subbanda que var´ıa, xk (t) = ak (t) cos[ωk t + φk (t)] donde ωk es la frecuencia central del canal (fija). Esto nos da 2 se˜ nales reales para cada canal del vocoder: 1. ak (t) = amplitud intant´anea 2. φk (t) = modulaci´on de fase instant´anea ak (t) es tambien llamado envolvente de amplitud. d φk (t) es tambien llamado envolvente de frecuencia ∆ωk (t) = dt
Procesamiento con Se˜ nales Anal´ıticas De modo de determinar estas se˜ nales, es u ´til expresar la se˜ nal de cada canal xk (t) como su representaci´on compleja “anal´ıtica”. La denotamos por, xak (t) = Re{xak (t)} + jIm{xak (t)} , ak (t)ej[ωk t+φk (t)] Por lo tanto, ak (t) = |xak (t)| φk (t) = ∠xak (t) − ωk t a (t)} Im{x k − ωk t = tan−1 a Re{xk (t)}
◮
En la pr´ actica normalmente trabajamos con desviaci´ on instan´ anea de frecuencia en vez de fase: ∆ωk (t) ,
◮
d φk (t) dt
Ya que el canal k de un banco de filtros uniforme de N canales tiene normalmente un ancho de banda dado por fs /N , la desviaci´ on de frecuencia usualmente no excede ±fs /(2N ).
Transformada de Hilbert Idealmente, la parte imaginaria de una se˜ nal anal´ıtica se obtiene de su parte real usando la Transformada de Hilbert. x
Rex
Imx Hilbert Transform
En la pr´ actica, esta transformada se dise˜ na con un filtro FIR (usando remez en Matlab u Octave). Ejemplo de uso en la pr´ actica: http://ccrma.stanford.edu/∼ jcaceres/yamaha/documentation/fmexamp01/
Procesado de Banda Base Se nota que xak (t) es una se˜ nal de banda angosta centrada en la frecuencia del canal ωk . Es comun heterodyne 1 la salida del canal con la “banda base”, “shifting” su espectro por −ωk de modo de centrar la banda del canal en 0 (modulando en el tiempo por exp(−jωk t)), −jωk t a xk (t) = ak (t)ejφk (t) xm k (t) , e
Para cada subbanda, tenemos datos que t´ıpicamente se ven como, ak
t wkt
wk
t
1
generaci´ on de nuevas frecuencias por mezclado de 2 o m´ as se˜ nales en forma no-lineal
Una vez que tenemos los datos de esa forma, podemos comprimirla, e.g., ◮ Aproximaci´ on lineal por piezas ◮
◮
◮
Grandes cuocientes de compresi´on son posibles para se˜n´ales “tonales” Cuacientes de compresi´on dependen de la naturaleza de la se˜ nal
“Downsample” cada canal ◮ ◮
Cada subbanda est´a limitada al ancho de banda del canal En realidad, esto s´olo nos lleva al n´umero original de samplers ◮ ◮
◮
N canales “Downsample” por N
Recuantizar la se˜ nal ◮
Se asignan bits dependiendo de la cantidad de energ´ıa de cada subbanda
Vocoder Demos, 26 Channels 1. Original SteveJobs.wav 2. Resynthesis preserving amplitude envelopes but discarding frequency deviations SteveJobs sine n 26.wav 3. = 2 with Channel Frequency-Inversion.SteveJobs sine i 26.wav That is, the vocoder channels are reversed in frequency order, which obscures the formants. 4. Noise Substitution SteveJobs noise n 26.wav original channel amplitude-envelope is applied to a narrowband noise with bandwidth equal to that of the analysis channel (instead of a sinusoid). 5. Noise Substitution and Frequency Inversion SteveJobs noise i 26.wav Parameters: 1. fs = 8 kHz sampling rate 2. 26 vocoder channels, auditory spaced
Vocoder Demos, 5 Channels 1. Original SteveJobs.wav 2. Resynthesis SteveJobs sine n 5.wav preserving amplitude envelopes but discarding frequency deviations 3. = 2 with Channel Frequency-Inversion. SteveJobs sine i 5.wav That is, the vocoder channels are reversed in frequency order, which obscures the formants. 4. Noise Substitution SteveJobs noise n 5.wav Each original channel amplitude-envelope is applied to a narrowband noise with bandwidth equal to that of the analysis channel (instead of a sinusoid). 5. Noise Substitution and Frequency Inversion SteveJobs noise i 5.wav Parameters: ◮ fs = 8 kHz sampling rate ◮ 5 vocoder channels ◮ Center frequencies at 148 Hz, 392 Hz, 825 Hz, 1.6 kHz, and 3 kHz
Limitaciones del Vocodes
◮
Se requiere un m´ aximo de una se˜ nal cuasi-sinusoidal por subbanda. ◮
Esto significa que necesitamos much´ısimos filtros
◮
Es un modelo pobre para se˜ nales con transientes y at´aques pronunciados.
◮
No es conveniente para se˜ nales inarm´onicas
◮
Es un modelo insuficiente para se˜ nales de tipo ruido (e.g., flauta)
◮
No es reversible, a no ser que la informaci´on de fase se registre y no se haga compresi´on
◮
Es computacionalmente caro
Identificaci´ on de Peaks Sinusoidales en una Secuencia de FFTs
tan
Phases
s(n) FFT Frequencies
dB mag
Peak tracking
Quadratic Peak Interpolation
window w(n) Amplitudes
◮
Para se˜ nales est´ aticas, la fase es usualmente descartada
◮
La fase es necesaria cuando la se˜ nal contiene tansientes
wrenpn1.wav jpc wrenpn1.wav peaches.wav jpc peaches.wav
Sines+Noise Modeling A1
f1
A2
f2
A3
f3
A4
f4
noise Filter
s
out
y(t) =
4 P
i=1
Ai (t) cos
hR t 0
i ωi (t)dt + φi (0) + (ht ∗ u)(t)
donde ◮ u(t) = ruido blanco ◮ ht (·) = filtro de ruido que cambia lentamente
Sines + Noise Sound Examples Xavier Serra 1989 thesis demos (Sines + Noise signal modeling) ◮ Guitar ◮ ◮ ◮ ◮
Original xjs-4-guitar-spn-orig.wav Sinusoids alone xjs-4-guitar-spn-sines.wav Residual after sinusoids removed xjs-4-guitar-spn-resid.wav Sines + noise model xjs-4-guitar-spn-synth.wav
◮ Piano ◮ ◮ ◮ ◮
Original xjs-7-piano-spn-orig.wav Sinusoids alone xjs-7-piano-spn-sines.wav Residual after sinusoids removed xjs-7-piano-spn-resid.wav Sines + noise model xjs-7-piano-spn-synth.wav
◮ Voice ◮ ◮ ◮ ◮
Original xjs-9-speech-orig.wav Sinusoids xjs-9-speech-sines.wav Residual xjs-9-speech-resid.wav Synthesis xjs-9-speech-synth.wav
Musical Effects with Sines+Noise Models
◮ Piano Effects ◮ ◮ ◮
Pitch downshift one octave xjs-12-piano-pitch-shift.wav Pitch flattened xjs-12-piano-pitch-flatten.wav Varying partial stretching xjs-12-piano-pitch-vary.wav
◮ Voice Effects ◮ ◮
Frequency-scale by 0.6 xjs-9-speech-fs-p6.wav Frequency-scale by 0.4 and stretch partials xjs-9-speech-fs-p4-pstr.wav
◮
Variable time-scaling, deterministic to stochastic xjs-9-speech-det-to-stoch.wav
Cross-Synthesis with Sines+Noise Models
◮ Voice “modulator” xjs-14-xsynth-speech-mod.wav ◮ Creaking ship’s mast “carrier” xjs-14-xsynth-speech-car-mast.wav ◮ Voice-modulated creaking mast xjs-14-xsynth-speech-mod-mast.wav ◮ Same with modified spectral envelopes
xjs-14-xsynth-speech-mod-mast-var.wav
Sines + Transients Sound Examples In this technique, the sinusoidal sum is phase-matched at the cross-over point only (with no cross-fade). ◮ Marimba ◮ ◮ ◮
Original xjs-15-marimba-spt-orig.wav Sinusoidal model xjs-15-marimba-spt-sines.wav Original attack, followed by sinusoidal model xjs-15-marimba-spt-spliced.wav
◮ Piano ◮ ◮ ◮
Original xjs-16-piano-spt-orig.wav Sinusoidal model xjs-16-piano-spt-sines.wav Original attack, followed by sinusoidal model xjs-16-piano-spt-spliced.wav
SuperCollider DEMO
Demo en Tiempo Real del Maestro Roberto Morales