Está en la página 1de 8

Trabajo Práctico Especial de

Señales y Sistemas:

Phase Vocoder
14 de julio de 2004

Objetivo
Se denomina Phase Vocoder a un técnica de procesamiento digital de señales que permite
codificar las señales de audio, de modo que alterando dicha codificación y reconstruyendo las
señales con los parámetros cambiados se logran interesantes efectos, como escalamiento del
tiempo de emisión de la señal, transposición del pitch de la señal, armonización, etc. Por ser
una técnica de codificación (el término “Vocoder”es la contracción de Voice-Coder) también es
posible utilizarlo para comprimir las señales de habla, y otras señales sonoras. En el desarrollo
del trabajo práctico se da una breve introducción al tema, como ası́ también la explicación de
la construcción de varios efectos sonoros que el alumno deberá implementar sobre señales de
habla o música.

El contenido especı́fico del TP es:

Descripción del Phase Vocoder: equivalencia entre la interpretación por banco de filtros
y por transformada de Fourier de corto tiempo.
Implementación de un sistema de escalamiento temporal.
Implementación de un sistema de transposición del pitch.
Implementación del efecto “robot”, y otros efectos de fase.

Los items de la materia que se utilizarán son:

Transformada de Fourier de corto tiempo.


Interpolación y submuestreo (remuestreo discreto de señales).

Requisitos para la aprobación:


El presente Trabajo Práctico Especial será evaluado con nota, la cual tiene participación en
el cálculo de la nota de la cursada y final de la materia (ver reglamento de la materia).
Este trabajo práctico será evaluado exclusivamente en las fechas indicadas en el calendario y
en el turno en el cual el alumno se halle inscripto. Se dispondrá de dos fechas de evaluación de las

1
cuales el alumno deberá optar por una de ellas. Bajo ningún concepto se podrá rendir en ambas
fechas. Es aconsejable rendir en la primera fecha y dejar la segunda solo para eventuales impon-
derables (problemas personales, fallas técnicas en la impresión del tp, etc) ya que no habrá posi-
bilidad alguna de rendir fuera de las mismas. La evaluación del tp es individual y se hará en
forma oral o escrita por los docentes auxiliares. Puede incluir preguntas sobre:

- Items particulares sobre los ejercicios de esta guı́a y su implementación en Matlab.

- Conceptos teóricos necesarios para realizar los ejercicios.

Puede requerirse también al alumno que implemente alguno de los ejercicios o similares en la
computadora en el momento de la evaluación. Por lo tanto el alumno debe presentarse el dı́a
de la evaluación con:

* Esta guı́a.

* Las soluciones a los problemas planteados: Cuando el problema requiera una imple-
mentación, la misma debe estar adecuadamente descripta y debidamente justificada. Es
decir, si es necesario justificación teórica esta debe estar desarrollada. Si se pide una im-
plementación práctica la misma debe estar adecuadamente documentada de modo que el
docente pueda constatar que las especificaciones requeridas se cumplen. Esto incluye la
presentación del programa de MATLAB utilizado, y los gráficos necesarios para mostrar
los resultados obtenidos. Los programas de MATLAB deben incluirse en la presentación
impresos y en medio legible por la computadora (disquete, CD, mail). Todos los gráficos
deberán tener tı́tulo, comentarios en ambos ejes sobre la unidad a representar y el eje de
abscisas debe estar en unidades de tiempo o frecuencia según corresponda.

Nota del trabajo práctico especial: vendrá dada por (ver reglamento):

0: Tp no entregado, con errores conceptuales o errores en la evaluación que evidencien la no


realización personal del trabajo práctico.

40: Tp en el que el alumno cumple con los mı́nimos requisitos de aprobación

70: Tp en el que el alumno realiza y demuestra conocimiento de todos los puntos básicos
solicitados.

100: Tp en el que el alumno demuestra una clara conceptualización del trabajo realizado y
excede las pautas básicas solicitadas, implementando además los puntos avanzados.

2
Vocoders
Introducción
La compresión de la información de la señal de habla fue objeto de estudio e investigación
desde prácticamente los comienzos del siglo XX. La voz es el medio de comunicación entre
los humanos por excelencia, y con la invención de sistemas que permitı́an codificar la voz
por medios eléctricos para poder transmitirla a lugares lejanos, de los cuales el teléfono es el
primero, el problema consistió en reducir el ancho de banda de la señal al mı́nimo sin perder la
inteligibilidad de la misma. De este modo serı́a posible por ejemplo mandar más señales de habla
por un mismo cable. En el año 1939 Dudley [1] publica un trabajo donde presenta el “Channel
Vocoder”, un método que descompone la señal de habla en varios canales de distinta frecuencia
distribuidos sobre todo el espectro de la señal, y que luego de un procesamiento en cada canal da
por resultado una serie de señales de lenta variación (menos ancho de banda) que representaban
la variación de amplitud y frecuencia de los armónicos de la señal de habla presentes en cada
canal. El sistema se completaba en el extremo receptor con una reconstrucción de las señales
de cada banda para después componerlas y ası́ obtener nuevamente la señal original.

Aω1 (t)
f1 (t)
PB 1 Proc. ϕ̇ω1 (t)

Aω2 (t)
f2 (t)
PB 2 Proc. ϕ̇ω2 (t)
f (t)

..

Aωn (t)
fn (t)
PB n Proc. ϕ̇ωn (t)

Figura 1: Channel Vocoder: codificación de la señal

Las salidas de los filtros pasabanda son señales cuya banda de frecuencia está limitada a un
entorno de la frecuencia central del filtro (ver fig.2). Esta señal se puede pensar como una señal
cuasi-periódica de frecuencia igual a la central de la banda, pero de amplitud y fase que cambian
con el tiempo. Si se logra extraer la variación de amplitud y fase de los diferentes canales y
esa variación es suave, se puede volver a reconstruir la señal de la banda (fn (t)) simplemente
volviendo a generar una senoide de la frecuencia correspondiente de cada filtro (ωn ), modulada
en amplitud con Aωn (t) y en frecuencia con ϕ̇ωn (t). Luego simplemente sumando las señales de
las diferentes bandas (idealmente) se vuelve a reconstruir la señal original.

Phase Vocoder
En 1966 Flannagan [2] desarrolló un método que implementaba un vocoder similar al chan-
nel vocoder pero basado en la transformada de Fourier de corto tiempo, que se llamó Phase
Vocoder. Este esquema era apto para ser implementado en computadoras digitales, por lo cual

3
L  L  L L
 L  L  L  L
 L L L  L
 L L L  L
  L  L L  L
ω1 ω2 ω3 ωn

fn(t) = Aωn (t) cos (ωn t + ϕωn (t) )

Figura 2: Esquema de la separación de la señal en bandas de frecuencia

logró mucha difusión. Si observamos la definición de la transformada de Fourier de corto tiempo


(STFT)


x(m) w(n − m)e−j N km ,
X
Xn (k) = (1)
m=−∞

donde hemos discretizado el espectro a N puntos (k = 0, . . . , N − 1), vemos que también se


puede escribir de la siguiente manera


 
x(m) e−j N km w(n − m)
X
X(n, k) =
m=−∞

 
= x(n) e−j N kn ∗ w(n) (2)

donde hemos cambiado la notación Xn (k) por X(n, k) para poner en evidencia que es una
función de dos ı́ndices discretos. Es decir que podemos dar dos interpretaciones equivalentes de
la STFT:

- En (1) se pone en evidencia que esta transformada es una “colección de DFT’s”, una para
cada desplazamiento de la ventana w(n).

- En (2) en cambio, se observa que la STFT es un conjunto de señales filtradas con la


ventana w(n), una señal por cada k, o sea para cada intervalo de frecuencia.

Cada una de las señales



 
x(n) e−j N kn ∗ w(n)
representa una porción del espectro de la señal original x(n), como se puede ver en el siguiente
diagrama:

x(n)  Xk (n) xΩ0 (n) Xk (n)


x(n)
- × - W (Ω) - ≡ - W (Ω − Ω0) - × -
 
6 6

e−jΩ0 n e−jΩ0 n

Figura 3: Filtrado heterodino

Es decir, que cada una de las señales X(n, k)|k=cte = Xk (n) corresponde al filtrado de la
señal x(n) con el filtro W (Ω − Ω0 ), pero posteriormente transladado a frecuencias bajas. Si
la ventana w(n) tiene un espectro de tipo pasabajos (como es el caso en las ventanas que
usamos comunmente), entonces el espectro W (Ω − 2π N
k) es el espectro de un filtro pasabanda,

4
de frecuencia central 2π
N
k. La señal intermedia x( 2π k) (n) es una señal análoga a fn (t) del channel
N
vocoder. Este esquema de filtrado utilizando un filtro pasabajos para implementar un filtrado
pasabanda se denomina filtrado heterodino, y es similar al principio de funcionamiento de los
sintonizadores de radio, televisión, etc.

Ejercicios
1. Implemente
 el espectrograma complejo de la señal X(k, n) a partir de la convolución de
−j 2π kn
x(n) e N con la ventana w(n). Compare graficamente el módulo de esas señales con
el módulo del espectrograma obtenido con la función de Matlab specgram.

2. Obtener las salidas del banco de filtros pasabanda x( 2π k) (n) a partir de X(k, n) (parte
N
real e imaginaria).

3. Justifique el (sub)muestreo que se hace habitualmente de la STFT en el tiempo, es decir


desplazando las ventanas cada N/2 puntos, con N la longitud de la ventana, mediante el
teorema del muestreo.

Deberı́a ser evidente luego de la realización del ejercicio anterior que una manera de encontrar
las señales de variación de amplitud y de fase de cada canal consiste en simplemente obtener la
amplitud y la fase de la magnitud compleja Xk (n). Esta señal es de baja frecuencia y por lo tanto
puede ser muestreada sin perder la información que contiene. Si bien este no es exactamente
el esquema que originalmente pensó Flanagan, en la actualidad llamamos Phase Vocoder al
conjunto de valores complejos del espectrograma de una señal.

Ejercicio
4. Implemente la reconstrucción de la señal a partir de su espectrograma complejo, realizado
con un overlap de ventanas del 75 % del ancho de la misma.

Aplicaciones
Una vez que se cuenta con un sistema capaz de reconstruir la señal a partir de su espectro-
grama complejo, el siguiente paso es darle una aplicación. Originalmente el phase vocoder fue
pensado para codificar la señal, de manera de economizar ancho de banda (en la actualidad es
más común pensar en la mı́nima cantidad de bits por unidad de tiempo). Numerosas estrate-
gias se pueden utilizar para comprimir las señales de amplitud y fase, siendo probablemente la
más trivial la codificación de la amplitud y la fase solamente en los tiempos y canales donde
la amplitud es mayor que un cierto umbral. Este tema no se profundizará en este práctico,
centrando nuestro interés sólo en las aplicaciones que modifican la señal reconstruida. El tema
de compresión es motivo de un análisis más profundo, y además otros métodos más modernos
han probado ser más eficaces para comprimir señales acústicas y de habla. Antes de pasar a las
otras aplicaciones sin embargo, serı́a lógico preguntarse en este punto si la fase del espectrogra-
ma es tan necesaria, o con solo transmitir la amplitud alcanzarı́a para conservar la señal. Esto
constituirı́a una gran economı́a de la información a transmitir, es decir un ahorro en el ancho
de banda.

5
Ejercicio
5. Importancia de la fase: realice la reconstrucción de la señal pero solo a partir de la
amplitud del espectrograma. Cómo se escucha la señal?.

Escalamiento temporal
Siempre es posible reducir (o aumentar) la velocidad de un sonido grabado simplemente
reproduciéndolo a menor (o mayor) velocidad. Pero esto no es lo mismo que grabar el sonido
con el ejecutante tocando más lentamente, porque el espectro de la señal se altera también al
producirse un escalamiento en el tiempo de una señal temporal.

Ejercicio
6. Para una señal de tiempo continuo f (t) genérica de espectro F (ω) indique cómo resulta
el espectro de f (at), es decir de la señal del tiempo escalado en un factor a. Si f (t) fuera
periódica, cuál serı́a la frecuencia fundamental de f (at)?

En señales dicretizadas en el tiempo hay dos maneras de reducir o aumentar la velocidad de


“reproducción”: una manera es cambiar el perı́odo del conversor digital a analógico, y la otra
es mantener el mismo perı́odo del conversor pero intercalar puntos intermedios.

Ejercicios
7. Implemente ambos métodos para llevar una señal a un estiramiento del doble de longitud,
y escúchela. Cómo suena? (en estos ejercicios no está permitido utilizar las funciones
predefinidas de MATLAB que hacen interpolación o decimación).

8. Implemente por ambos métodos la reducción de la longitud de la señal a la mitad. Qué con-
sideraciones hay que tener en cuenta en estos casos?

9. Cómo se construye un interpolador/decimador que produzca una expansión/contracción


en factores no enteros?

A diferencia del cambio de espectro que sufre una señal cuando la estiramos o contraemos
solamente, el phase vocoder nos permite estirar o contraer el tiempo de reproducción sin alterar
el espectro de la señal. Si pensamos en la interpretación del sistema como banco de filtros la
idea es sencilla: se trata de generar en el reconstructor de cada señal xΩk (n) una señal que tenga
la misma frecuencia de la banda pero con la variación de amplitud y fase escaladas en el tiempo.
Esto no altera el espectro resultante de la señal porque cada componente de frecuencia queda
en su lugar. En términos del espectrograma complejo esta idea se implementa simplemente
remuestreando en el tiempo cada una de las señales complejas Xk (n).

Ejercicios
10. Implemente un sistema que estire al doble y a la mitad de tiempo la emisión de una señal.

6
11. Avanzado Pruebe el sistema con otros tipos de interpolación que no sea lineal, por
ejemplo, calculando la fase y amplitud de las señales y haciendo una interpolación de
esas magnitudes (como era la idea originalmente), y compare la diferencia de calidad de
la señal. A qué atribuye los sonidos metálicos cuando se implementa una interpolación
lineal solamente?

12. Cómo afecta la calidad de la señal el ancho las bandas de frecuencia (o sea, la cantidad
de puntos de la ventana temporal). Cómo afecta el solapamiento en la calidad de la señal
resultante?

Transposición de la frecuencia fundamental de la señal


Ası́ como el phase vocoder puede ser usado para para cambiar la evolución temporal de
un sonido sin cambiar su frecuencia fundamental (que para las señales de habla se denomina
frecuencia glótica o “pitch”), es también posible hacer lo inverso. Es decir, es posible cambiar
el pitch de la señal sin cambiar su longitud temporal. Esto se logra simplemente comprimiendo
o expadiendo una señal que previamente fue escalada en el tiempo en un factor igual al cambio
del pitch deseado, a su longitud de tiempo original. Cuando la señal escalada en tiempo en
un factor a (que mantiene su pitch) se vuelve a su longitud original, el factor de compresión
temporal es 1/a, y por lo tanto el espectro se escalará en frecuencia en a, pero con la longitud
de la señal que será igual a la original.

Ejercicios
13. Implemente un sistema que cambie el pitch en una relación de 1.5 más alto.

Este método sin embargo tiene el inconveniente que no solo la frecuencia fundamental está es-
calada, sino que la envolvente del espectro también está cambiada, alterando de este modo el
timbre de los sonidos. En señales de habla esto es problemático, porque la posición de los picos
del espectro tienen una relación directa con el fonema, es decir que puede afectar la inteligibil-
idad de la señal.

Ejercicios
14. Avanzado Implemente un sistema que cambie el pitch de la señal sin alterar la envolvente
del espectro.

Este cambio de la frecuencia fundamental de una señal cuando se aplica a señales musicales
produce sobre una pieza lo que se denomina una transposición. Es decir, si ejecuto una escala
do-re-mi-fa-sol-la-si, que es la escala de do mayor, y la transpongo en una relación de 1.5 más
arriba (en el lenguaje musical se denomina una quinta justa) obtengo la escala de sol mayor, o
sea que transpuse mi “interpretación”en tono de do, al tono de sol.

Ejercicios
15. Avanzado Genere las notas de un acorde mayor (por ejemplo do-mi-sol) transponiendo
la fundamental (do) a una relación 1,5 para la quinta justa (sol), y a 34 /26 para la tercera
mayor (mi). Ejecutando las tres señales a la misma vez se logra el acorde. Genere de

7
la misma manera una armonización de una señal de habla (no cantada). Este efecto se
denomina armonización.

16. Avanzado El efecto que en inglés se denomina “chorusing¨ y que consiste en simular que
una emisión de voz cantada por un único intérprete es entonada por varias personas can-
tando al unı́sono, es una variación del efecto de armonización: aquı́ se superponen varias
señales pero con el pitch cambiado en una fracción mı́nima de la original y ligeramente
distinta paraqcada uno. El factor de cambio debe ser no mayor que un cuarto de semitono
4

(menor que 12 2)

Nota: Para un mejor entendimiento de las señales de habla o sonoras en general véase el
apartado 10.5.1 de [3]

Referencias
[1] H. Dudley, “The vocoder,” Bell Labs. Record, vol. 17, pp. 122–126, 1939.

[2] J. L. Flanagan and R. M. Golden, “Phase vocoder,” Bell System Technical Journal,
pp. 1493–1509, Noviembre 1966.

[3] A. Oppenheim and R. Schafer, Discrete-time Signal Processing. Prentice Hall, 1999.

También podría gustarte