Análisis Espectral 2: Vocoder y Síntesis Sinusoidal · 2007. 8. 15. · Aplicabilidad de la...

15
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

Transcript of Análisis Espectral 2: Vocoder y Síntesis Sinusoidal · 2007. 8. 15. · Aplicabilidad de la...

  • Análisis Espectral 2: Vocoder y Śıntesis

    Sinusoidal

    Juan-Pablo CáceresCCRMA

    Stanford UniversityAdaptado/traducido de la clase de Julius Smith “Spectral Audio Modeling”

    Agosto, 2007

    Contenidos

    Preambulo: Śıntesis Aditiva

    El Vocoder y el Voder

    Phase Vocoder

    Sines+Noise Modeling

  • Preambulo: Śıntesis Aditiva

    Śıntesis aditiva es una técnica en la que una señal es reconstruidasumando “sinusoides”. Cada “sinusoide” tiene amplitud yfrecuencia que vaŕıa en el tiempo:

    y(t) =N

    i=1

    Ai(t) sin[θi(t)]

    donde

    Ai(t) = Amplitud del ito parcial en el tiempo t

    θi(t) =

    Z t

    0

    ωi(t)dt + φi(0) = fase instantánea

    ω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

    t

    wk

  • Aplicabilidad de la Śıntesis Aditiva

    y(t) =

    N∑

    i=1

    Ai(t) sin

    [∫ t

    0ωi(t)dt + φi(0)

    ]

    ◮ El modelo sinusoidal es eficiente para señales tonales como lavoz, tonos intrumentales que no varian, cuerdas pulsadas, yotros.

    ◮ Es ineficiente para señales de tipo ruido, como consonantes, laparte “chiff” de las flautas/organos.

    ◮ Ineficiente para ataques (transientes rápidos en el tiempo)como instrumentos de percusión o ataques en notas.

    ◮ Es más eficiente cuando Ai(t) y ωi(t) vaŕıan lentamente (i.e.,tenemos realmente una suma de componentescuasi-sinusoidales) y cuando φi(t) puede ser despreciado. Esbien sabido que modificaciones de la fase φi en la suma desinusoides no son usualmente audibles.

    Banco de Osciladores

    A1 f1 A2 f2 A3 f3 A4 f4

    s

    out

    noise

    FIR

    y(t) =4

    P

    i=1

    Ai(t) sinh

    R

    t

    0ωi(t)dt + φi(0)

    i

    ◮ Para reproducir la señal, debemos primero analizarla paradeterminar las trayectorias de amplitud y frecuencia para cadacomponente sinusoidal. Podemos o no querer la informaciónde fase.

    ◮ Para este análisis se usaba originalmente el Vocoder

  • El Vocoder

    ◮ El término “vocoder” deriva de “voice coder”, y es el nombrepara una clase de método de análisis/śıntesis basado enanálisis de bancos de filtros.

    ◮ Es el más viejo de los esquemas de “codificación desub-banda”, iniciandose en los 1930s en Bell TelephoneLaboratories (Bell Labs)

    ◮ El término “vocoder” es ahora comúnmente asociado con la“Transformada Corta de Fourier Modificada”, y el vocodercomo fue definido históricamente es ráramente usado.

    ◮ El “phase vocoder” es comunmente usado en “cross-śıntesis”en audio.

    ◮ Channel Vocoder◮ Sólo se determina la magnitud de la señal en cada banda de

    filtro.

    ◮ Phase Vocoder◮ Se determina tanto la magnitud como la fase

    El Voder

    ◮ El Voder (Voice Operation Demonstrator) es un controladormanual de un vocoder. Fue contruido y demostrado en 1939en el Feria internacional de Nueva York y San Francisco.

    ◮ Las alturas son controladas por un pedal, y 10 dedoscontrolan las ganancias de los filtros pasa banda. La selecciónen “buzz/hiss” se hacia con una barra de muñeca

    ◮ 3 teclas adicionales controlan las transientes de excitación delos filtros seleccionados de modo de obtener consonantes.“Performing speech” en el Voder requiere deaproximadamente 1 año de entrenamiento antes de que seainteligible.

  • El Voder 1939

    http://davidszondy.com/future/robot/voder.htm voder.wav

    El Voder

    http://ptolemy.eecs.berkeley.edu/∼eal/audio/voder.html

    http://davidszondy.com/future/robot/voder.htmhttp://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

    f

    A

    f

    A

    f

    A

    Analysis Synthesis

    xxhat

    X0

    X1

    XNM1

    Xhat0

    Xhat1

    XhatNM1

    Data Compression,

    Transmission,

    Storage,

    Manipulation,

    Noise reduction, ...

    Processing

    magnitude, or

    magnitude and

    phase extraction

    El vocoder descompone la señal en sub-bandas. para cada bandase determina ya sea:

    ◮ La magnitud (en el caso del “channel vocoder”)

    ◮ La magnitud y la fase (en el caso del “phase vocoder”)

    http://www.acoustics.hut.fi/publications/files/theses/lemmetty_mst/chap2.html

  • Modelo de Canal de Vocoder

    Si asumimos que tenemos a lo más 1 sinusoide con parametros quevaŕıan con el tiempo en cada canal, entonces escribimos xk(t), laseñal en la banda k:

    xk(t) = ak(t) cos[ωkt + φk(t)]

    ωk

    ω0

    Channel Filter

    Response

    ak

    ∆ωk

    Analysis Model Synthesis Model

    ak(t) ωk+∆ωk(t)

    A F

    Out

    Sine Osc

    con ∆ωk(t) ,ddt

    φk(t)

    Calculando los Parámetros del Vocoder

    Para el “channel vocodel” sólo se requiere determinar la amplitudde la señal.

    Podemos usar un seguidor de envolvente en cada subbanda,implementada con rectificación y filtrado pasa bajos filtro pasabajos.

    in

    out

    Rectification Averaging

    x

    Energy in

    subband k

    vs time

    h(t)

    txk

    xkt

    output

    xkt

  • Phase Vocoder

    Para el Phase Vocoder, necesitamos determinar tanto la amplitudcomo la fase de la señal en cada subbanda. Asumimos que no haymás que una componente sinusoidal en cada subbanda que vaŕıa,

    xk(t) = ak(t) cos[ωkt + φk(t)]

    donde ωk es la frecuencia central del canal (fija). Esto nos da 2señales reales para cada canal del vocoder:

    1. ak(t) = amplitud intantánea

    2. φk(t) = modulación de fase instantánea

    ak(t) es tambien llamado envolvente de amplitud.∆ωk(t) =

    ddt

    φk(t) es tambien llamado envolvente de frecuencia

    Procesamiento con Señales Anaĺıticas

    De modo de determinar estas señales, es útil expresar la señal decada canal xk(t) como su representación compleja “anaĺıtica”. Ladenotamos por,

    xak(t) = Re{xak(t)} + jIm{x

    ak(t)} , ak(t)e

    j[ωkt+φk(t)]

    Por lo tanto,

    ak(t) = |xak(t)|

    φk(t) = ∠xak(t) − ωkt

    = tan−1[

    Im{xak(t)}

    Re{xak(t)}

    ]

    − ωkt

  • ◮ En la práctica normalmente trabajamos con desviacióninstanánea de frecuencia en vez de fase:

    ∆ωk(t) ,d

    dtφk(t)

    ◮ Ya que el canal k de un banco de filtros uniforme de Ncanales tiene normalmente un ancho de banda dado por fs/N ,la desviación de frecuencia usualmente no excede ±fs/(2N).

    Transformada de Hilbert

    Idealmente, la parte imaginaria de una señal anaĺıtica se obtiene desu parte real usando la Transformada de Hilbert.

    Hilbert Transform

    x Rex

    Imx

    En la práctica, esta transformada se diseña con un filtro FIR(usando remez en Matlab u Octave).Ejemplo de uso en la práctica:http://ccrma.stanford.edu/∼jcaceres/yamaha/documentation/fmexamp01/

    http://ccrma.stanford.edu/~jcaceres/yamaha/documentation/fmexamp01/

  • Procesado de Banda BaseSe nota que xak(t) es una señal de banda angosta centrada en lafrecuencia del canal ωk. Es comun heterodyne

    1 la salida del canalcon la “banda base”, “shifting” su espectro por −ωk de modo decentrar la banda del canal en 0 (modulando en el tiempo porexp(−jωkt)),

    xmk (t) , e−jωktxak(t) = ak(t)e

    jφk(t)

    Para cada subbanda, tenemos datos que t́ıpicamente se ven como,

    ak

    t

    wkt

    t

    wk

    1generación de nuevas frecuencias por mezclado de 2 o más señales enforma no-lineal

    Una vez que tenemos los datos de esa forma, podemoscomprimirla, e.g.,

    ◮ Aproximación lineal por piezas◮ Grandes cuocientes de compresión son posibles para señáles

    “tonales”◮ Cuacientes de compresión dependen de la naturaleza de la

    señal

    ◮ “Downsample” cada canal◮ Cada subbanda está limitada al ancho de banda del canal◮ En realidad, esto sólo nos lleva al número original de samplers

    ◮ N canales◮ “Downsample” por N

    ◮ Recuantizar la señal◮ Se asignan bits dependiendo de la cantidad de enerǵıa de cada

    subbanda

  • Vocoder Demos, 26 Channels

    1. Original SteveJobs.wav

    2. Resynthesis preserving amplitude envelopes but discarding frequencydeviations SteveJobs sine n 26.wav

    3. = 2 with Channel Frequency-Inversion.SteveJobs sine i 26.wavThat is, the vocoder channels are reversed in frequency order, whichobscures the formants.

    4. Noise Substitution SteveJobs noise n 26.wav original channelamplitude-envelope is applied to a narrowband noise with bandwidthequal 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.wavpreserving amplitude envelopes but discarding frequency deviations

    3. = 2 with Channel Frequency-Inversion. SteveJobs sine i 5.wavThat is, the vocoder channels are reversed in frequency order, whichobscures the formants.

    4. Noise Substitution SteveJobs noise n 5.wavEach original channel amplitude-envelope is applied to a narrowbandnoise with bandwidth equal to that of the analysis channel (instead of asinusoid).

    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áximo de una señal cuasi-sinusoidal porsubbanda.

    ◮ Esto significa que necesitamos much́ısimos filtros

    ◮ Es un modelo pobre para señales con transientes y atáquespronunciados.

    ◮ No es conveniente para señales inarmónicas

    ◮ Es un modelo insuficiente para señales de tipo ruido (e.g.,flauta)

    ◮ No es reversible, a no ser que la información de fase seregistre y no se haga compresión

    ◮ Es computacionalmente caro

    Identificación de Peaks Sinusoidales en una

    Secuencia de FFTs

    FFT

    tan

    dB magPeak

    tracking

    Quadratic

    Peak

    Interpolation

    Frequencies

    Amplitudes

    Phases

    s(n)

    window w(n)

    ◮ Para señales estáticas, la fase es usualmente descartada

    ◮ La fase es necesaria cuando la señal contiene tansientes

    wrenpn1.wav jpc wrenpn1.wav peaches.wav jpc peaches.wav

  • Sines+Noise ModelingA1 f1 A2 f2 A3 f3 A4 f4

    s

    out

    noise

    Filter

    y(t) =4

    P

    i=1

    Ai(t) cosh

    R t

    0ωi(t)dt + φi(0)

    i

    + (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 stochasticxjs-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 envelopesxjs-14-xsynth-speech-mod-mast-var.wav

  • Sines + Transients Sound Examples

    In this technique, the sinusoidal sum is phase-matched at thecross-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

    Preambulo: Síntesis AditivaEl Vocoder y el VoderPhase VocoderSines+Noise Modeling