ES2257098T3 - Codificacion periodica de vocales. - Google Patents

Codificacion periodica de vocales.

Info

Publication number
ES2257098T3
ES2257098T3 ES99967508T ES99967508T ES2257098T3 ES 2257098 T3 ES2257098 T3 ES 2257098T3 ES 99967508 T ES99967508 T ES 99967508T ES 99967508 T ES99967508 T ES 99967508T ES 2257098 T3 ES2257098 T3 ES 2257098T3
Authority
ES
Spain
Prior art keywords
prototype
current
previous
reconstructed
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES99967508T
Other languages
English (en)
Inventor
Sharath Manjunath
William Gardner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2257098T3 publication Critical patent/ES2257098T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/097Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters using prototype waveform decomposition or prototype waveform interpolative [PWI] coders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • G10L19/125Pitch excitation, e.g. pitch synchronous innovation CELP [PSI-CELP]
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/27Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the analysis technique

Landscapes

  • Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)

Abstract

Un método para codificar una señal de voz cuasi periódica, en donde la señal de voz se representa por una señal residual generada filtrando la señal de voz con un el filtro de análisis de Codificación Predictiva Lineal (LPC), y donde la señal residual se divide en tramas de datos, comprendiendo los pasos de: (a) extraer (1002) periodo representativo de una trama actual de la señal residual como prototipo actual; (b) calcular (1004) un primer juego de parámetros que describen cómo modificar un prototipo anterior de forma que dicho prototipo anterior modificado se aproxime a dicho prototipo actual; (c) seleccionar (1006) uno o más vectores de código de un primer libro de claves, donde dichos vectores de código cuando se suman aproximan la diferencia entre dicho prototipo actual y dicho prototipo anterior modificado, y donde dichos vectores de código son descritos por un segundo juego de parámetros; (d) reconstruir (1010) un prototipo actual basado en dichos primero y segundo juegos de parámetros; (e) interpolar (1012) la señal residual en la región entre dicho prototipo actual reconstruido y un prototipo reconstruido anterior; (f) sintetizar una señal de voz de salida basada en dicha señal residual interpolada.

Description

Codificación periódica de vocales.
Antecedentes de la invención I. Campo de la invención
La presente invención se relaciona con la codificación de señales vocales. Específicamente, la presente invención se relaciona con la codificación de señales vocales cuasi periódicas mediante cuantificación de una única porción prototípica de la señal.
II. Descripción de la técnica relacionada
Muchos sistemas de comunicación actuales transmiten voz como señal digital, particularmente en aplicaciones a larga distancia, y de teléfono de radio digital. El funcionamiento de estos sistemas depende, en parte, de representar de forma precisa la señal vocal con un número mínimo de bits. La transmisión de señal vocal simplemente por muestreo y digitalización requiere que una velocidad de datos del orden de 64 kilobits por segundo (kbps) para lograr la calidad vocal de un teléfono analógico convencional. Sin embargo, hay disponibles técnicas de decodificación que reducen significativamente la velocidad de datos requerida para la reproducción satisfactoria de voz.
El término "vocodificador" típicamente se refiere a dispositivos que comprimen voz hablada extrayendo parámetros en base a un modelo de generación de voz humana. Los vocodificadores incluyen un codificador y un decodificador. El codificador analiza la voz entrante y extrae los parámetros relevantes. El decodificador sintetiza la voz usando los parámetros que recibe del codificador por medio de un canal de transmisión. La señal de voz se divide frecuentemente en tramas de datos y bloque procesado por el vocodificador.
Los vocodificadores construidos sobre esquemas de codificación en el dominio temporal basada en predicción lineal exceden de lejos en número a todos los otros tipos de codificadores. Estas técnicas extraen elementos correlacionados de la señal de voz y codifican solo los elementos incorrelados. El filtro predictivo lineal básico predice la muestra actual como una combinación lineal de muestras pasadas. Un ejemplo de algoritmo de codificación de esta clase particular se describe en el documento "Codificador Predictivo Lineal Activado por Código a 4.8 kbps" por Thomas E. Tremain et al., Actas de la Conferencia de Satélite Móvil, 1988.
Estos esquemas de codificación comprimen la voz digitalizada señalizar en una señal de baja velocidad de bit quitando todas las redundancias naturales (es decir, elementos correlacionados) inherentes a la voz. La voz típicamente muestra redundancias a corto plazo que resultan de la acción mecánica de los labios y la lengua, y redundancias a largo plazo que resultan de la vibración de las cuerdas vocales. Los esquemas predictivos lineales modelan estas operaciones como los filtros, eliminan las redundancias, y luego modelan la señal residual resultante como ruido gaussiano blanco. Por lo tanto los codificadores lineales predictivos logran una velocidad reducida de bit transmitiendo coeficientes de filtro y ruido cuantificado en vez de una señal de voz de anchura de banda completa.
Sin embargo, incluso estas velocidades de bit reducidas frecuentemente exceden la anchura de banda disponible donde la señal de voz debe o propagarse a una distancia larga (p. ej., tierra a satélite) o coexistir con muchas otras señales en un canal atestado. Por lo tanto existe una necesidad de un esquema de codificación mejorado que logre una velocidad de bit inferior a los esquemas predictivos lineales.
La EP-A-0 666 557 (AT&T) describe la codificación de tramas de voz y sordas con el mismo esquema. La voz de entrada se filtra por análisis LPC y se extrae a intervalos de tiempo regulares una forma de onda prototipo residual. En un dominio de series de Fourier, se descomponen las formas de onda prototipo en una forma de onda suavemente envolvente SEW y en una forma de onda rápidamente envolvente REW.
El artículo "Una forma de onda prototipo mixta / codificador CELP para sub 3 kb/s" (Burnett et al. ICASSP 1993) describe un codificador de forma de onda prototipo donde la derivación del prototipo se realiza en el dominio vocal. Una trama vocal de entrada es sobremuestreada, se extrae un prototipo y el prototipo es filtrado mediante análisis LPC para obtener una activación prototipo que se cuantifica de forma diferencial en un cuantificador impulsivo.
Resumen de la invención
La presente invención es un método y un aparato novedosos y mejorados para codificar una señal de voz cuasi periódica. La señal de voz es representada por una señal residual generada filtrando la señal de voz un filtro de análisis de Codificación Predictiva Lineal (LPC). La señal residual es codificada extrayendo un período prototipo a partir de una trama actual de la señal residual. Se calcula un primer conjunto primero de parámetros que describe como modificar un período prototipo previo para aproximar el período prototipo actual. Se selecciona uno o más vectores de código que, cuando se suman, aproximan la diferencia entre el período prototipo actual y el período prototipo previo modificado. Un segundo conjunto de parámetros describe estos vectores de código seleccionados. El decodificador sintetiza una señal vocal de salida reconstruyendo un período prototipo actual basándose en el primer y segundo conjuntos de parámetros. La señal residual se interpola entonces sobre la región entre el período prototipo actual reconstruido y un período prototipo previo reconstruido. El decodificador sintetiza voz de salida basándose en la señal residual interpolada.
Un aspecto de la presente invención es que se usan períodos prototipo para representar y reconstruir la señal de voz. Codificando el período prototipo en vez de la señal completa de voz reduce la velocidad requerida de bits, que se traduce en capacidad más alta, gama mayor, y menores requerimientos de potencia.
Otro aspecto de la presente invención es que un período prototipo pasado se usa como un pronosticador del período prototipo actual. La diferencia entre el período prototipo actual y un período prototipo previo óptimamente girado y escalado es codificada y transmitida, reduciendo adicionalmente la velocidad de bit requerida.
Incluso otro aspecto de la presente invención es que la señal residual se reconstruye en el decodificador interpolando entre los períodos prototipo consecutivos reconstruidos, basándose en un promedio ponderado de los períodos prototipo consecutivos y en un retraso promedio.
Otro aspecto de la presente invención es que se usa un libro de claves multietapa para codifica el vector de error transmitido. Este libro de claves ayuda a la búsqueda y almacenaje eficiente de datos de código. Pueden agregarse etapas adicionales para lograr un nivel deseado de precisión.
Otro aspecto de la presente invención es que se usa un filtro de alabeo para cambiar eficientemente la longitud de una primera señal para equiparar la de una segunda señal, donde las operaciones de codificación requieren que las dos señales sean de la misma longitud.
Aún otro aspecto de la presente invención es que los períodos prototipo se extraen subordinados a una región de "corte libre", evitando por medio de eso discontinuidades en la salida debido a la división de regiones de alta energía a lo largo de límites de trama.
Los aspectos, objetos, y ventajas de la presente invención se volverán más evidentes a partir de la descripción detallada presentada en lo sucesivo cuando se toma conjuntamente con los dibujos en que, iguales números de referencia indican elementos idénticos o funcionalmente similares. Adicionalmente, el dígito más a la izquierda de un número de referencia identifica el dibujo en que el número de referencia aparece primero.
Breve descripción de los dibujos
La Fig. 1 es un diagrama que ilustra un entorno de transmisión de señal;
la Fig. 2 es un diagrama que ilustra codificador 102 y el decodificador 104 con mayor detalle;
la Fig. 3 es un diagrama de flujo que ilustra una codificación vocal de velocidad variable según la presente invención;
la Fig. 4A es un diagrama que ilustra una trama de voz hablada dividida en subtramas;
la Fig. 4B es un diagrama que ilustra una trama de voz sorda dividida en subtramas;
la Fig. 4C es un diagrama que ilustra un trama de voz transitoria dividida en subtramas;
la Fig. 5 es un diagrama de flujo que describe el cálculo de parámetros iniciales;
la Fig. 6 es un diagrama de flujo que describe la clasificación de voz como o activa o inactiva;
la Fig. 7A representa un codificador CELP;
la Fig. 7B representa un decodificador CELP;
la Fig. 8 representa un módulo de filtro de tono;
la Fig. 9A representa un codificador PPP;
la Fig. 9B representa un decodificador PPP;
la Fig. 10 es un diagrama de flujo que representa los pasos de codificación PPP, incluyendo codificación y decodificación;
la Fig. 11 es un diagrama de flujo que representa la extracción de un período residual prototipo;
la Fig. 12 representa un período residual prototipo extraído de la trama actual de una señal residual, y del período residual prototipo de la trama previa;
la Fig. 13 es un diagrama de flujo que representa el cálculo de parámetros rotacionales;
la Fig. 14 es un diagrama de flujo que representa el funcionamiento del libro de claves codificador;
la Fig. 15A representa una primera realización del módulo de actualización de filtro;
la Fig. 15B representa una primera realización del módulo interpolador de período;
la Fig. 16A representa una segunda realización del módulo de actualización de filtro;
la Fig. 16B representa una segunda realización del módulo interpolador de período;
la Fig. 17 es un diagrama de flujo que describe la operación de la primera realización del módulo interpolador de período;
la Fig. 18 es un diagrama de flujo que describe la operación de la segunda realización del módulo interpolador de período;
la Fig. 19 es un diagrama de flujo que describe el alineamiento e interpolación de períodos residuales prototipo;
la Fig. 20 es un diagrama de flujo que describe la reconstrucción de una señal de voz basándose en períodos residuales prototipo según una primera realización;
la Fig. 21 es un diagrama de flujo que describe la reconstrucción de una señal de voz basándose en períodos residuales prototipo según una segunda realización;
la Fig. 22A representa un codificador NELP;
la Fig. 22B representa un decodificador NELP; y
la Fig. 23 es un diagrama de flujo que describe la codificación NELP.
Descripción detallada de las realizaciones preferidas
I. Descripción del Entorno
II. Perspectiva de la Invención
III. Determinación Inicial de Parámetros
A.
Cálculo de Coeficientes LPC
B.
Cálculo LSI
C.
Cálculo NACF
D.
Cálculo de Seguimiento de Tono y de Retardo
E.
Cálculo de Energía de Banda y de Velocidad de Cruce por Cero
F.
Cálculo del Formante Residual
IV. / Clasificación de Voz Activa / Inactiva
A.
Tramas de Repetición
V. Clasificación de Tramas de Voz Activa
VI. Selección de Medio Codificador / Decodificador
VII. Medio de Codificación de Predicción Lineal Activado por Código (CELP)
A.
Módulo de Codificación de Tono
B.
Codificación por Libro de Claves
C.
Decodificador CELP
D.
Módulo de Actualización de Filtro
VIII. Medio de Codificación de Período de Tono Prototipo (PPP)
A.
Módulo de Extracción
B.
Correlador Rotacional
C.
Codificación por Libro de Claves
D.
Módulo de Actualización de Filtro
E.
Decodificador PPP
F.
Interpolador de Periodo
IX. Medio de Codificación por Predicción Lineal Activado por Ruido (NELP)
X. Conclusión
I. Descripción del Entorno
La presente invención va dirigida a métodos y aparatos novedosos y perfeccionados para codificación vocal de velocidad variable. La Fig. 1 representa un entorno de transmisión de señal 100 incluyendo un codificador 102, un decodificador 104, y un medio de transmisión 106. El codificador 102 codifica una señal de voz s(n), formando señal de voz codificada s_{enc}(n), para la transmisión a través del medio de transmisión 106 al decodificador 104. Decodificador 104 decodifica s_{enc}(n) generando así una señal de voz sintetizada \hat{s}(n).
El término "codificación" tal como se usa aquí se refiere generalmente a métodos que comprenden ambos codificación y decodificación. Generalmente, los métodos y aparatos de codificación buscan minimizar el número de bits transmitidos por el medio de transmisión 106 (es decir, minimizar el ancho de banda de s_{enc}(n)) al tiempo que mantiene una reproducción aceptable de voz (es decir, \hat{s}(n) \approx s(n)). La composición de la señal de voz codificada variará según el método de codificación de voz particular. Se describen más adelante diversos codificadores 102, decodificadores 104, y los métodos para codificar de acuerdo con los que estos operan.
Los componentes de codificador 102 y decodificador 104 se describe más abajo pueden implementarse como equipo electrónico, como software de computadora, o combinaciones de ambos. Estos componentes se describen más adelante desde el punto de vista de su funcionalidad. Si la funcionalidad se implementa como equipo o software dependerá de las aplicaciones particulares y de las limitaciones de diseño impuestas sobre el sistema completo. Los expertos reconocerán la intercambiabilidad del equipo y el software bajo estas circunstancias, y cómo implementar mejor la funcionalidad descrita para cada aplicación particular.
Aquellos con experiencia en la técnica reconocerán que el medio de transmisión 106 puede representar a muchos medios diferentes de transmisión, incluyendo, pero no limitados a, una línea de comunicación terrestre, un enlace entre una estación base y un satélite, comunicación inalámbrica entre un teléfono celular y una estación base, o entre un teléfono celular y un satélite.
Aquellos con experiencia en la técnica reconocerán también que frecuentemente cada parte en una comunicación transmite y también recibe. Cada parte requeriría por lo tanto un codificador 102 y un decodificador 104. Sin embargo, el entorno de transmisión de señal 100 se describirá más adelante incluyendo un codificador 102 en un extremo del medio de transmisión 106 y un decodificador 104 en el otro. Los técnicos expertos reconocerán fácilmente cómo extender estas ideas a la comunicación bidireccional.
Para los fines de esta descripción, supóngase que s(n) es una señal digital de voz obtenida durante una conversación típica incluyendo diferentes sonidos vocales y períodos de silencio. La señal de voz s(n) es dividida preferentemente en tramas, y cada trama es adicionalmente dividida en subtramas (preferentemente 4). Estos límites de trama / subtrama arbitrariamente elegidos se usan normalmente donde se realiza algún procesamiento en bloques, como es el caso aquí. Las operaciones descritas como siendo realizadas sobre tramas podrían también ser realizadas sobre subtramas - en este sentido, trama y subtrama se usan aquí de modo intercambiable. Sin embargo, s(n) no necesita ser dividida en absoluto en tramas / subtramas si se implementa un procesamiento continuo más bien que un procesamiento de bloque. Los técnicos expertos reconocerán fácilmente cómo las técnicas de bloque descritas más adelante podrían extenderse al procesamiento continuo.
En una realización preferida, s(n) se muestrea digitalmente a 8 kHz. Cada trama preferentemente contiene 20 ms de datos, o 160 muestras a la velocidad preferida de 8 kHz. Cada subtrama por lo tanto contiene 40 muestras de datos. Es importante hacer notar que muchas de las ecuaciones presentadas más adelante asumen estos valores. Sin embargo, aquellos con experiencia en la técnica reconocerán que aunque estos parámetros son apropiados para codificación vocal, son meramente ejemplares y podrían usarse otros parámetros alternativos apropiados.
II. Perspectiva de la Invención
Los métodos y aparatos de la presente invención implican codificar la señal de voz s(n). La Fig. 2 representa un codificador 102 y un decodificador 104 con mayor detalle. Según la presente invención, el codificador 102 incluye un módulo de cálculo inicial de parámetros 202, un módulo de clasificación 208, y uno o más medios de codificador 204. El decodificador 104 incluye uno o más medios de decodificador 206. El número de medios de decodificador, N_{d}, en general iguala al número de medios de codificador, N_{e}. Como será evidente para uno experto en la técnica, el medio de codificador 1 comunica con el medio de decodificador 1, y así sucesivamente. Como se muestra, la señal vocal codificada, S_{enc}(n), se transmite vía el medio de transmisión 106.
En una realización preferida, el codificador 102 conmuta dinámicamente entre múltiples medios de codificador de trama a trama, dependiendo de qué medio sea más apropiado dadas las propiedades de s(n) para la trama actual. El decodificador 104 también conmuta dinámicamente entre los correspondiente medios de decodificador de trama a trama. Se elige un medio particular para cada trama para lograr la velocidad de bit más baja disponible mientras se mantiene una reproducción aceptable de señal en el decodificador. Este proceso se denomina como codificación vocal de velocidad variable, porque la velocidad de bit del codificador cambia en el tiempo (según cambian las propiedades de la señal).
La Fig. 3 es un diagrama de flujo 300 que describe la codificación vocal de velocidad variable según la presente invención. En el paso 302, el módulo de cálculo inicial de parámetros 202 calcula diversos parámetros basándose en la trama actual de datos. En una realización preferida, estos parámetros incluyen uno o más de los siguientes: coeficientes de filtro de codificación predictiva lineal (LPC), coeficientes de información de línea de espectro (LSI), las funciones de autocorrelación normalizadas (NACF_{S}), el retardo de bucle abierto, energías de banda, velocidad de cruce por cero, y la señal residual formante.
En el paso 304, el módulo de clasificación 208 clasifica la trama actual como que contiene voz "activa" o "inactiva". Como describió arriba, s(n) se supone que incluye períodos de voz y períodos de silencio, comunes en una conversación ordinaria. La voz activa incluye palabras habladas, considerando la voz inactiva incluye todo lo demás, p. ej., ruido de fondo, silencio, pausas. Los métodos usados para clasificar la voz como activa / inactiva de acuerdo con la presente invención se describen en forma detallada más adelante.
Como se muestra en la Fig. 3, el paso 306 tiene en cuenta si la trama actual se clasificó como activa o inactiva en el paso 304. Si es activa, el control de flujo sigue hasta el paso 308. Si es inactiva, el control de flujo sigue hasta el paso 310.
Aquellas tramas que se clasifican como activas son además clasificadas en el paso 308 como habladas, sordas, o tramas transitorias. Aquellos con experiencia en la técnica reconocerán que la voz humana puede clasificarse de muchas maneras diferentes. Dos clasificaciones convencionales de voz son sonidos hablados y sordos. Según la presente invención, toda voz que no es clasificada como hablada o sorda se clasifica como voz transitoria.
La Fig. 4A representa una porción ejemplar de s(n) incluyendo voz hablada 402. Los sonidos hablados son producidos al forzar el aire a través de la glotis con la tensión de las cuerdas vocales ajustada de modo que vibren con oscilación relajada, produciendo así pulsos cuasi periódicos de aire que activan el tracto vocal. Una propiedad común medida en la voz hablada es el período del tono, como se muestra en la Fig. 4A.
La Fig. 4B representa una porción ejemplar de s(n) incluyendo la voz sorda 404. Los sonidos sordos son generados al formar una contracción a algún punto del tracto vocal (comúnmente hacia el extremo de la boca), y forzando el aire a través de la contracción a una velocidad suficiente alta para producir turbulencia. La señal resultante de voz sorda parece ruido de color.
La Fig. 4C representa un ejemplo de porción de s(n) incluyendo voz transitoria 406 (es decir, voz que no es ni hablada ni sorda). La voz transitoria de ejemplo 406 mostrada en la Fig. 4C puede representar a s(n) pasando entre voz sorda y voz hablada. Los técnicos expertos reconocerán que podrían emplearse muchas clasificaciones diferentes de voz según las técnicas aquí descritas para lograr resultados comparables.
En el paso 310, se selecciona un medio codificador / decodificador basándose en la clasificación de trama hecha en los pasos 306 y 308. Los diversos medios codificador / decodificador se conectan en paralelo, como se muestra en la Fig. 2. En cualquier momento dado uno o más de estos medios poder estar operacional. Sin embargo, como se describe en forma detallada más adelante, en cualquier momento dado, preferentemente opera un único medio, y se selecciona según la clasificación de la trama actual.
Varios medios codificador / decodificador se describen en las secciones siguientes. Los diferentes medios codificador / decodificador operan según diferentes esquemas de codificación. Ciertos medios son más efectivos para codificar porciones de la señal de voz s(n) que muestran ciertas propiedades.
En una realización preferida, un medio "Predictivo Lineal Activado por Código" (CELP) se elige para codificar tramas clasificadas como voz transitoria. El medio CELP activa un modelo lineal predictivo del tracto vocal con una versión cuantificada de la señal residual de pronóstico lineal. De todos los medios codificador / decodificador aquí descritos, el CELP generalmente produce la reproducción de voz más precisa pero requiere la mayor velocidad de
bit.
Se elige preferentemente un medio "Período de Tono Prototipo" (PPP) para codificar tramas clasificadas como voz hablada. La voz hablada contiene componentes periódicos que varían lentamente en el tiempo que son aprovechados por el medio PPP. El medio PPP codifica solo un subconjunto de los períodos de tono dentro de cada trama. Los períodos restantes de la señal de voz son reconstruidos interpolando entre estos períodos prototipo. Aprovechando la periodicidad de la voz hablada, el PPP es capaz de lograr una velocidad inferior de bit que el CELP y aún reproduce la señal de voz de una manera perceptivamente precisa.
Se elige un medio "Predictivo Lineal Activado por Ruido" (NELP) para codificar tramas clasificadas como voz sorda. El NELP usa una señal de ruido seudoaleatoria filtrada para modelizar la voz sorda. El NELP usa el modelo más simple para la voz codificada, y por lo tanto logra la velocidad más baja de bit.
La misma técnica de codificación puede frecuentemente operarse a diferente velocidad de bit, con niveles variables de rendimiento. Los diferentes medios codificador / decodificador de la Fig. 2 pueden representar por lo tanto técnicas codificación diferentes, o la misma técnica de codificación operando a diferentes velocidades de bit, o combinaciones de lo anterior. Los técnicos expertos reconocerán que el aumento del número de medios codificador / decodificador permitirá mayor flexibilidad cuando se elige un medio, que puede resultar en un valor inferior de velocidad de bit promedio, pero aumentará complejidad dentro del sistema completo. La combinación particular usada en cualquier sistema determinado estará dictada por los recursos disponibles de sistema y el entorno específico de señal.
En el paso 312, el medio de codificador seleccionado 204 codifica la trama actual y preferentemente empaqueta los datos codificados en paquetes de datos para la transmisión. Y en el paso 314, el correspondiente medio decodificador 206 desempaqueta los paquetes de datos, decodifica los datos recibidos y reconstruye la señal de voz. Estas operaciones se describen en forma detallada más adelante con respecto a los medios codificador / decodificador apropiados.
III. Determinación Inicial de Parámetros
La Fig. 5 es un diagrama de flujo que describe el paso 302 con mayor detalle. Se calculan varios parámetros iniciales según la presente invención. Los parámetros preferentemente incluyen, p. ej., coeficientes (LPC), coeficientes de información de espectro de línea (LSI), las funciones de autocorrelación normalizadas (NACFS), el retardo de bucle abierto, energías de banda, tasa de cruce por cero, y la señal residual formante. Estos parámetros se usan de diversas maneras dentro de el sistema completo, como se describe más abajo.
En una realización preferida, el módulo de cálculo inicial de parámetros 202 usa una "lectura anticipada" de 160+40 muestras. Esto sirve a varios fines. Primero, la lectura anticipada de muestra 160 permite un seguimiento de frecuencia de tono a computar usando la información en la próxima trama, lo que mejora significativamente la robustez de la codificación vocal y las técnicas de estimación periodo de tono, descritas más abajo. Segundo, la lectura anticipada de muestra 160 también permite que los coeficientes LPC, la energía de trama, y la actividad de voz sean computados para una trama en el futuro. Esto permite una eficiente cuantificación multitrama de la energía de trama y de coeficientes LPC. Tercero, la lectura anticipada adicional de 40 muestras es para el cálculo de los coeficientes LPC sobre voz en recuadro Hamming como se describe más abajo. Por tanto, el número de muestras almacenadas antes de procesar la trama actual es 160+160+40 lo que incluye la trama actual y la lectura anticipada de 160+40 muestras.
A. Cálculo de Coeficientes LPC
La presente invención utiliza un filtro de error de predicción LPC para quitar las redundancias a corto plazo en la señal de voz. La función de transferencia para el filtro LPC es:
A(z) = 1 - \sum\limits_{i=1}^{10}a_{i}z^{-i}
La presente invención preferiblemente implementa un filtro de décimo orden, como se muestra en la ecuación previa. Un filtro de síntesis LPC en el decodificador reinserta las redundancias, y está dado por el inverso de A(z):
\frac{1}{A(z)}=1\div(1-\sum\limits_{i=1}^{10}a_{i}z^{-i})
En el paso 502, los coeficientes LPC, a_{i}, se computan a partir de s(n) como se indica a continuación. Los parámetros LPC se computan preferiblemente para la próxima trama durante el procedimiento de codificación para la trama actual.
Se aplica una ventana de Hamming a la trama actual centrada entre las muestras 119ª y 120ª (suponiendo la trama de muestra preferida 160 con una "lectura anticipada"). La señal de voz enmarcada s_{w}(n) viene dada por:
s_{w}(n)=s(n+40)\left(0\text{.}5+0\text{.}46*cos\left(\pi\frac{n-79\text{.}5}{80}\right)\right), \hskip0.5cm 0\leq n<160
El desplazamiento de 40 muestras produce que se centre en la ventana de voz entre la muestra 119ª y 120ª de la trama de muestra preferida 160 de voz.
Once valores de autocorrelación se computan preferiblemente como
R(k)=\sum\limits_{m=0}^{159-k}s_{w}(m)s_{w}(m+k), \hskip0.5cm 0\leq k \leq 10
Los valores de autocorrelación son enmarcados para reducir la probabilidad de pérdida de raíces de pares espectrales de línea (LSPS) obtenidos de los coeficientes LPC, dados por:
R(k) = h(k)R(k), \hskip0.5cm 0 \leq k \leq 10
resultando en una ligera expansión de ancho de banda, p. ej., 25 Hz. Los valores h(k) se toman preferiblemente del centro de un punto 255 de ventana Hamming.
El coeficientes LPC se obtienen entonces de los valores de autocorrelación enmarcados usando recursión de Durbin. La recursión de Durbin, un eficiente método computacional bien conocido, se trata en el Procesamiento Digital de Señal de Voz, por Rabiner & Schafer.
B. Cálculo de LSI
En el paso 504, el coeficientes LPC se transforman en coeficientes de información de espectro de línea (LSI) para cuantificación e interpolación. Los coeficientes LSI se computan según la presente invención de la manera siguiente.
Como antes, A(z) viene dada por
A(z) =1-a_{1}z^{-1} - .. - a_{10}z^{-10},
donde a_{i} son los coeficientes LPC, y 1 \leq i \leq 10.
P_{A}(z) y Q_{A}(z) se definen como sigue
P_{A}(z) = A(z) + z^{-11}A(z^{-1}) = p_{0} + p_{1}z^{-1}+... +p_{11}z^{-11},
Q_{A}(z)=A(z) - z^{-11}A(z^{-1}) = q_{0} + q_{1}z^{-1}+... +q_{11}z^{-11},
donde
p_{i}=-a_{i}-a_{11-i1}, 1 \leq i \leq 10
q_{i}=-a_{1}+a_{11-1}, 1 \leq i \leq 10
y
p_{0}=1 p_{11}=1
q_{0}=1 q_{11}=-1
Los cosenos espectrales de línea (LSCs) son las diez raíces en -1.0 < x < 1.0 de las siguientes dos funciones:
P'(x) = p'{}_{0}cos(5cos^{-1}(x))+p'{}_{1}(4cos^{-1}(x))+... +p'{}_{4}+p'{}_{5}/2
Q'(x) = q'{}_{0} cos(5cos^{-1}(x))+q'{}_{1}(4cos^{-1}(x))+... +q'{}_{4}x+q'{}_{5}/2
donde
p'_{0}=1
q'_{0}=1
p'_{1} = p_{1} - p'_{i-1}
\skip0.5cm
1 \leq i \leq 5
q'_{i} = q_{i} + q'_{i-1}
\skip0.5cm
1 \leq i \leq 5
Los coeficientes LSI se calculan entonces como:
1
Los LSCs pueden obtenerse a partir de los coeficientes LSI de acuerdo con:
2
La estabilidad del filtro LPC garantiza que las raíces de las dos de funciones se alternan, es decir, la raíz más pequeña, lsc_{1}, es la raíz menor de P'(x), la próxima raíz más pequeña, lsc_{2}, es la raíz menor de Q'(x), etc. Por tanto, lsc_{1}, lsc_{3}, lsc_{5}, lsc_{7}, y lsc_{9} son las raíces de P'(x), y lsc_{2}, lsc_{4}, lsc_{6}, lsc_{8}, y lsc_{10} son las raíces de Q'(x).
Aquellos con experiencia en la técnica reconocerán que es preferible emplear algún método para computar la sensibilidad de los coeficientes LSI a cuantificación. "Las ponderaciones de sensibilidad" pueden usarse en el proceso de cuantificación para ponderar adecuadamente el error de cuantificación en cada LSI.
Los coeficientes LSI son cuantificados usando un cuantificador de vector multietapa (VQ). El número de etapas depende preferiblemente de la velocidad particular de bit y de los libros de claves empleados. Los libros de claves se eligen basándose en si la trama actual es hablada o no.
La cuantificación de vector minimiza un error cuadrático medio ponderado (WMSE) que se define como
E(\vec{x},\vec{y}) = \sum\limits_{i=0}^{p-1}w_{i}(x_{i} - y_{i})^{2}
donde \vec{x} es el vector a ser cuantificado, es el \vec{w} peso asociado con él, e \vec{y} es el vector de código. En una realización preferida, \vec{w} son ponderaciones de sensibilidad y P = 10.
El vector LSI se reconstruye a partir de los códigos LSI obtenidos vía cuantificación como
q\vec{l}si=\sum\limits_{i=1}^{N}CB\vec{i}_{codigo_{i}}
donde CBi es la iésima etapa VQ de libro de claves para tramas habladas o sordas (este es basándose en el código que indica la elección del libro de claves) y código_{i} es el código LSI para la iésima etapa.
Antes de que los coeficientes LSI se transformen en coeficientes LPC, se realiza un chequeo de estabilidad para asegurar que los filtros LPC resultantes no se han hecho inestables debido al ruido de cuantificación o errores de canal que inyectan ruido en los coeficientes LSI. La estabilidad se garantiza si los coeficientes LSI permanecen ordenados.
En el calculo de los coeficientes LPC originales, se usó una ventana de voz centrada entre las muestras 119ª y 120ª de la trama. Los coeficientes LPC para otros puntos en la trama son aproximados interpolando entre los LSCs de trama anterior y los LSCs de la trama actual. Los LSCs resultantes interpolados entonces se vuelven a convertir de nuevo en coeficientes LPC. La interpolación exacta usada para cada subtrama viene dada por:
ilsc_{j} = (1-\alpha_{j})lscprev_{j}+\alpha_{i}lscact_{j'}
\hskip0.5cm
1 \leq j \leq 10
donde \alpha_{j} son los factores de interpolación 0.375, 0.625, 0.875, 1.000 para los cuatro subtramas de 40 muestras cada una e ilsc son los LSCs interpolados. \hat{P}(z) y \hat{Q}_{A}(z) son computados por los LSCs interpolados como
\vskip1.000000\baselineskip
3
Los coeficientes LPC interpolados para todas las cuatro subtramas se computan como coeficientes de
\hat{A}(z)=\frac{\hat{P}_{A}(z)+\hat{Q}_{A}(z)}{2}
Por tanto,
4
C. Cálculo de NACF
En el paso 506, las funciones de autocorrelación normalizadas (NACF_{S}) se calculan de acuerdo con la presente invención.
El formante residual para la próxima trama se computa sobre cuatro subtramas de 40 muestras como
r(n)=s(n)-\sum\limits_{i=1}^{10}\tilde{a}_{i}s(n-1)
donde ã_{i} es el iésimo coeficiente LPC interpolado de la correspondiente subtrama, donde la interpolación se hace entre los LSCs no cuantificados de trama actual y los LSCs de la trama próxima. La energía de la próxima trama se computa también como
5
El residual calculado arriba es filtrado en paso bajo y decimado, usando preferentemente un filtro FIR de fase cero de longitud 15, cuyos coeficientes df_{i'}-7 \leq i \leq 7, son {0.0800, 0.1256, 0.2532, 0.4376, 0.6424, 0.8268, 0.9544, 1.000, 0.9544, 0.8268, 0.6424, 0.4376, 0.2532, 0.1256, 0.0800}. El residual filtrado en paso bajo y decimado se computa como
r_{d}(n) =\sum\limits_{i=-7}^{7}df_{i}r(Fn+i), \hskip0,5cm 0\leq n\leq 160/F
donde F = 2 es el factor decimador y r(Fn+i), - 7 \leq Fn+i \leq 6 se obtienen de los últimos 14 valores del residual de trama corriente basándose en coeficientes LPC incuantificados. Como se mencionó más arriba, estos coeficientes LPC se computan y almacenan durante la trama anterior.
Los NACFs para dos subtramas (decimadas 40 muestras) de la próxima trama se calcula como sigue:
6
60
\vskip1.000000\baselineskip
Para el r_{d}(n) con n negativo, se emplea el residual filtrado en paso bajo y decimado de la trama actual (guardado durante la trama anterior). También se computaron y guardaron los NACFs para la subtrama actual c_corr durante la trama anterior.
D. Cálculo de Seguimiento de Tono y de Retardo
En el paso 508, se computan el según la invención presente. El seguimiento de tono y el retardo se calculan preferiblemente usando una búsqueda de tipo Viterbi seguimiento hacia atrás como sigue:
\vskip1.000000\baselineskip
7
\vskip1.000000\baselineskip
donde FAN_{i,j} es la matriz 2x58, {{0,2}, {0,3}, {2,2}, {2,3}, {2,4}, {3,4}, {4,4}, {5,4}, {5,5}, {6,5}, {7,5}, {8,6}, {9,6}, {10,6}, {11,6}, {11,7}, {12,7}, {13,7}, {14,8}, {15,8}, {16,8}, {16,9}, {17,9}, {18,9}, {19,9}, {20,10}, {21,10}, {22,10}, {22,11}, {23,11}, {24,11}, {25,12}, {26,12}, {27,12}, {28,12}, {28,13}, {29,13}, {30,13}, {31,
14}, {32,14}, {33,14}, {33,15}, {34,15}, {35,15}, {36,15}, {37,16}, {38,16}, {39,16}, {39,17}, {40,17}, {41,16}, {42,16}, {43,15}, {44,14}, {45,13}, {45,13}, {46,12}, {47,11}}. El vector RM_{2i}, se interpola para conseguir los valores para R_{2i+1} como
\vskip1.000000\baselineskip
8
\vskip1.000000\baselineskip
donde el cf_{j} es el filtro de interpolación cuyos coeficientes son {-0.0625, 0.5625, 0.5625, -0.0625}. El retardo L_{C} es entonces escogido de forma tal que RL_{c-12} = max\{R_{i}\}, 4 \leq i < 116 y el NACF de la trama actual se establece igual a R_{LC-12} / 4. Los retardos múltiplos se eliminan después buscando el retardo que corresponde a la correlación máxima mayor que 0.9 R_{LC-12} entre:
9
E. Cálculo de Energía de Banda y Tasa de Cruce por Cero
En el paso 510, las energías en las bandas 0-2 kHz y en la banda 2 kHz -4kHz se computan según la presente invención como
E_{L} = \sum\limits_{i=0}^{159}s_{L}^{2}(n)
E_{H} = \sum\limits_{i=0}^{159}s_{H}^{2}(n)
donde
\vskip1.000000\baselineskip
10
\vskip1.000000\baselineskip
siendo S(z), S_{L}(z) y S_{H}(z) las transformadas z de la señal de voz de entrada s(n), de la señal paso bajo s_{L}(n) y señal paso alto s_{H}(n), respectivamente, bl={0.0003, 0.0048, 0.0333, 0.1443, 0.4329, 0.9524, 1.5873, 2.0409, 2.0409, 1.5873, 0.9524, 0.4329, 0.1443, 0.0333, 0.0048, 0.0003}, ah ={1.0, 0.9155, 2.4074, 1.6511, 2.0597, 1.0584, 0.7976, 0.3020, 0.1465, 0.0394, 0.0122, 0.0021, 0.0004, 0.0, 0.0, 0.0}, bh={0.0013, -0.0189, 0.1324, -0.5737, 1.7212, -3.7867, 6.3112, -8.1144, 8.1144, -6.3112, 3.7867, -1.7212, 0.5737, -0.1324, 0.0189, -0.0013} y ah={1.0, -2.8818, 5.7550, -7.7730, 8.2419, -6.8372, 4.6171, -2.5257, 1.1296, -0.4084, 0.1183, -0.0268, 0.0046, -0.0006, 0.0, 0.0}.
La energía de señal de voz es propiamente E = \sum\limits_{i=0}^{159}s^{2}(n).
La tasa de cruce por cero ZCR se computa como
if(s(n)s(n+1) < 0)ZCR=ZCR+1, \hskip0.5cm 0 \leq n < 159
F. Cálculo del Formante Residual
En el paso 512, el formante residual para la trama actual se computa sobre cuatro subtramas como
r_{curr}(n) = s(n)-\sum\limits_{i=1}^{10}\hat{a}_{i}s(n-i)
donde â_{i} es el iésimo coeficiente LPC de la subtrama correspondiente.
IV. Clasificación de Voz Activa / Inactiva
En referencia de nuevo a la Fig. 3, en el paso 304, la trama actual se clasifica bien como voz activa (por ejemplo, palabras habladas) o la voz inactiva (por ejemplo, ruido de fondo, silencio). La Fig. 6 es un diagrama de flujo 600 representa el paso 304 con mayor detalle. En una realización preferida, se usa un esquema umbral basado en la energía de dos bandas para determinar si la voz activa está presente. La banda inferior (banda 0) abarca las frecuencias de 0.1 -2.0 kHz y la banda superior (banda 1) de 2.0-4.0 kHz. La detección de actividad vocal se determina preferiblemente para la próxima trama durante el procedimiento de codificación para la trama actual, de lo siguiente manera.
En el paso 602, se calculan las energías de banda Eb[i] para bandas i=0, 1. La secuencia de autocorrelación, como se describió anteriormente en la Sección III.A., se extiende a 19 usando la ecuación recursiva siguiente:
R(k) = \sum\limits_{i=1}^{10}a_{i}R(k-i), \hskip0.5cm 11\leq k \leq 19
Usando esta ecuación, R(11) se calcula a partir de R(1) hasta R(10), R(12) se calcula a partir de R(2) hasta R(11), y así sucesivamente. Los energías de la banda se calculan entonces a partir de la secuencia de autocorrelación extendida usando la ecuación siguiente:
E_{b}(i)=log_{2}\left(R(0)R_{h}(0)(0)+2\sum\limits_{k=1}^{19}R(k)R_{h}(i)(k)\right), \hskip0.5cm i=0.1
\vskip1.000000\baselineskip
donde R(k) es la secuencia de autocorrelación extendida para la trama actual y R_{h}(i)(k) es la secuencia de autocorrelación de filtro de banda para la banda i dada en la Tabla 1.
\vskip1.000000\baselineskip
TABLA 1 Secuencias de Autocorrelación de Filtro para los Cálculos de Energía de Banda
k R_{h}(O)(k) band 0 R_{h}(1)(k) band 1
0 4.230889E-01 4.042770E-01
1 2.693014E-01 -2.503076E-01
2 -1.124000E-02 -3.059308E-02
3 -1.301279E-01 1.497124E-01
4 -5.949044E-02 -7.905954E-02
5 1.494007E-02 4.371288E-03
6 -2.087666E-03 -2.088545E-02
7 -3.823536E-02 5.622753E-02
8 -2.748034E-02 -4.420598E-02
9 3.015699E-04 1.443167E-02
10 3.722060E-03 -8.462525E-03
11 -6.416949E-03 1.627144E-02
12 -6.551736E-03 -1.476080E-02
13 5.493820E-04 6.187041E-03
14 2.934550E-03 -1.898632E-03
15 8.041829E-04 2.053577E-03
16 -2.857628E-04 -1.860064E-03
17 2.585250E-04 7.729618E-04
18 4.816371E-04 -2.297862E-04
19 1.692738E-04 2.107964E-04
\vskip1.000000\baselineskip
En el paso 604, las estimaciones de energía de banda se aplanan. Las estimaciones de energía de banda aplanada, E_{sm}(i), se actualizan para cada trama empleando la ecuación siguiente.
\vskip1.000000\baselineskip
E_{sm}(i) = 0\text{.}6E_{sm}(i) + 0\text{.}4E_{b}(i), \hskip0.5cm i=0.1
En el paso 606, se actualizan las estimaciones de energía de señal y de energía de ruido. Las estimaciones de energía de señal, E_{s}(i), se actualiza preferiblemente usando la siguiente ecuación:
E_{s}(i)=max(E_{sm}(i), E_{s}(i)), i=0.1,
La estimación de energía de ruido, E_{n}(i), se actualiza preferiblemente usando la siguiente ecuación:
E_{n}(i)=min(E_{sm}(i), E_{n}(i)), i=0.1
En el paso 608, las relaciones señal-ruido a largo plazo para las dos bandas, SNR(i), se calculan como
SNR(i)=E_{s}(i)-E_{n}(i), i=0.1
En el paso 610, estos valores de SNR son preferiblemente divididos en ocho regiones Reg_{SNR}(i) definidas como
11
En el paso 612, la decisión de actividad de voz se hace de la siguiente manera de acuerdo con la presente invención. Si E_{b}(0)-E_{n}(0)>UMBRAL(Reg_{SNR}(0)), o E_{b}(1)-E_{n}(1)>UMBRAL(Reg_{SNR}(1)), entonces la trama de voz se declara activa. De otra forma, la trama de voz se declara inactiva. Los valores de UMBRAL se definen en la Tabla 2.
La estimación de energía de señal, E_{s}(i), se actualiza usando preferiblemente la siguiente ecuación:
E_{s}(i)=E_{s}(i)-0.014499, \hskip0.5cm i = 0.1.
TABLA 2 Factores Umbral como Función de la Región SNR
Región SNR UMBRAL
0 2.807
1 2.807
2 3.000
3 3.104
4 3.154
5 3.233
6 3.459
7 3.982
Estimación de la energía de ruido, E_{n}(i), se actualiza usando preferentemente la siguiente ecuación:
12
A. Tramas de Repetición
Cuando las relaciones señal ruido son bajas, se agregan preferentemente tramas de "repetición" para mejorar la calidad de la voz reconstruida. Si las tres tramas anteriores fueron clasificadas como activas, y la trama actual se clasifica como inactiva, entonces las próximas M tramas incluyendo la trama actual son clasificadas como voz activa. El núme-
ro de tramas de repetición, M, se determina preferiblemente como función de SNR(0) como es definido en la Tabla 3.
TABLA 3 Tramas de Repetición como Función de SNR(0)
SNR(0) M
0 4
1 3
2 3
3 3
4 3
5 3
6 3
7 3
V. Clasificación de Tramas de Voz Activas
En referencia de nuevo a la Fig. 3, en el paso 308, las tramas actuales que fueron clasificadas como activas en el paso 304 son nuevamente clasificadas según las propiedades mostradas por la señal vocal s(n). En una realización preferida, la voz activa es clasificada como hablada, sorda, o transitoria. El grado de periodicidad exhibido por la señal de voz activa determina cómo se clasifica. La voz hablada muestra el grado más alto de periodicidad (cuasi-periódica por naturaleza). La voz sorda muestra una periodicidad pequeña o nula. La voz transitoria muestra grados de periodicidad entre la hablada y la sorda.
Sin embargo, la estructura general aquí descrita no se limita al esquema de clasificación preferido y a los medios de codificador / decodificador específicos descritos más abajo. La voz activa puede clasificarse de formas alternativas, y hay disponibles medios de codificador / decodificador alternativos para codificar. Aquellos con experiencia en la técnica reconocerán que son posibles muchas combinaciones de clasificaciones y de medios de codificador / decodificador. Muchas de tales combinaciones pueden producir una velocidad media de bit reducida según la estructura general aquí descrita, es decir, clasificando la voz como inactiva o activa, clasificando además la voz activa, y codificando además la señal de voz usando los medios codificador / decodificador particularmente adecuados para la voz que cae dentro de cada clasificación.
Aunque las clasificaciones de voz activa están basadas en el grado de periodicidad, la decisión de clasificación preferiblemente no está basada en alguna medida directa de periodicidad. Más bien, la decisión de clasificación está basada en varios parámetros calculados en el paso 302, por ejemplo, relaciones señal ruido en las bandas superior e inferior y en los NACFs. La clasificación preferida puede describirse mediante el siguiente seudocódigo:
if not(anteriorN ACF < 0.5 y actualN ACF>0.6)
if (actualN ACF < 0.75 y ZCR>60) SORDA
else if(anteriorN ACF < 0.5 y actualN ACF < 0.55 y ZCR > 50) SORDA
else if (actualN ACF < 0.4 y ZCR > 40) SORDA
if (SORDA y actualSNR > 28 dB y E_{L}> \alphaE_{H}) TRANSITORIA
if (anteriorN ACF < 0.5 y actualN ACF < 0.5 y E < 5e4+N) SORDA
if (HABLADA y banda bajaSNR>banda altaSNR y anteriorN ACF < 0.8 y 0.6 <actualN ACF < 0.75) TRANSITORIA
donde
13
y N_{ruido} es una estimación del ruido de fondo. E_{ant} es la energía de entrada de la trama anterior.
El método descrito por este seudocódigo puede refinarse según el entorno específico en que se implementa. Aquellos con experiencia en la técnica reconocerán que distintos umbrales dados más arriba son meramente ejemplos, y podrían requerir un ajuste en la práctica que depende de la aplicación. El método también puede refinarse agregando categorías de clasificación adicionales, como dividir TRANSITORIA en dos categorías: una para señales que evolucionan de alta a baja energía, y la otra para señales que evolucionan de baja a alta energía.
Aquellos con experiencia en la técnica reconocerán que están disponibles otros métodos para distinguir voz activa hablada, sorda, y transitoria. Igualmente, los técnicos experimentados reconocerán que también son posibles otras formas de clasificación para la voz activa.
VI. Selección de Medio Codificador / Decodificador
En el paso 310, se selecciona un medio codificador / decodificador basado en la clasificación de la trama actual en los pasos 304 y 308. Según una realización preferida, los medios se seleccionan como sigue: las tramas inactivas y las tramas sordas activas son codificadas usando un medio NELP, las tramas habladas activas son codificadas usando un medio PPP, y las tramas transitorias activas son codificadas usando un medio CELP. Cada uno de estos medios codificador / decodificador se describe en detalle en las secciones siguientes.
En una realización alternativa, las tramas inactivas son codificadas usando un medio de tasa cero. Los técnicos experimentados reconocerán que están disponibles muchos medios alternativos de tasa cero que requieren velocidades muy bajas de bit. La selección de un medio de tasa cero puede refinarse más considerando las selecciones de medio pasadas. Por ejemplo, si la trama anterior fue clasificada como activa, esto puede descartar la selección de un medio de tasa cero para la trama actual. Igualmente, si la próxima trama es activa, puede descartarse un medio de tasa cero para la trama actual. Otra alternativa es descartar la selección de un medio de tasa cero para demasiadas tramas consecutivas (por ejemplo, 9 tramas consecutivas). Aquellos con experiencia en la técnica reconocerán que podrían hacerse muchas otras modificaciones a la decisión de selección de medio básica para refinar su funcionamiento en ciertos entornos.
Como se describió anteriormente, podrían usarse alternativamente muchas otras combinaciones de clasificaciones y medios codificador / decodificador dentro de esta misma estructura. Las siguientes secciones proporcionan descripciones detalladas de varios medios codificador / decodificador según la presente invención. Se describe primero el medio CELP, seguido por el medio PPP y por el medio NELP.
VII. Medio de Codificación de Predicción Lineal (CELP) Activada por Código
Como se ha descrito anteriormente, el medio codificador / decodificador CELP es empleado cuando la trama actual es clasificada como voz transitoria activa. El medio CELP proporciona la reproducción de señal más exacta (comparado con los otros medios aquí descritos) pero a la mayor velocidad de bit.
La Fig. 7 representa un medio codificador CELP 204 y un medio decodificador CELP 206 con mayor detalle. Como se muestra en la Fig. 7A, un medio codificador CELP 204 incluye un módulo de codificación de tono 702, un libro de claves de codificación 704, y un módulo de actualización de filtro 706. El medio codificador CELP 204 produce una señal de voz codificada, s_{enc}(n), que preferentemente incluye parámetros del libro de claves y parámetros del filtro de tono, para la transmisión al medio decodificador CELP 206. Como se muestra en la Fig. 7B, el medio decodificador CELP 206 incluye un módulo de decodificación de libro de claves 708, un filtro de tono 710, y un filtro de síntesis LPC 712. El medio decodificador CELP 206 recibe la señal de voz codificada y produce señal de voz sintetizada
\hat{s}(n).
A. Módulo de Codificación de Tono
El módulo de codificación de tono 702 recibe la señal de voz s(n) y el residual cuantificado de la trama anterior,
p_{c}(n) (descrito más abajo). Basándose en esta entrada, el módulo de codificación de tono 702 genera una señal objetivo x(n) y un juego de parámetros de filtro de tono. En una realización preferida, éstos parámetros de filtro de tono incluyen un retraso de tono óptimo L* y una ganancia de tono óptima b*. Estos parámetros se seleccionan según un método de "análisis-por-síntesis " en que el proceso de codificación selecciona los parámetros de filtro de tono que minimizan el error ponderado entre la voz de entrada y la voz sintetizada usando esos parámetros.
La Fig. 8 representa al módulo de codificación de tono 702 en mayor detalle. El módulo de codificación de tono 702 incluye un filtro de ponderación porcentual 802, sumadores 804 y 816, filtros de síntesis LPC ponderados 806 y 808, un retardo y ganancia 810, y un minimizador de suma de cuadrados 812.
El filtro de ponderación porcentual 802 se usa para ponderar el error entre la voz original y la voz sintetizada de una forma perceptivamente significativa. El filtro de ponderación porcentual es de la forma
W(z) = \frac{A(z)}{A(z / \gamma)}
donde A(z) es el filtro de predicción de error LPC, y \gamma preferentemente es igual a 0.8. El filtro de análisis LPC ponderado 806 recibe los coeficientes LPC calculados por el módulo de cálculo inicial de parámetros 202. El filtro 806 produce a_{zir}(n) que es la respuesta de entrada cero dada por los coeficientes LPC. La sumadora 804 suma una entrada negativa a_{zir}(n) y la señal de entrada filtrada para formar la señal objetivo x(n).
El retardo y ganancia 810 produce una salida de filtro de tono estimada bp_{L}(n) para un retardo de tono dado L y una ganancia de tono b. El retardo y ganancia 810 recibe las muestras residuales cuantificadas de la trama anterior,
p_{c}(n), y una estimación de salida futura del filtro de tono, dada por p_{0}(n), y forma p(n) según:
14
que luego es retardada en L muestras y escalada por b para formar el bp_{L}(n). L_{p} es la longitud de subtrama (preferentemente 40 muestras). En una realización preferida, el retardo de tono, L, es representado por 8 bits y puede asumir valores de 20.0, 20.5, 21.0, 21.5... 126.0, 126.5, 127.0, 127.5.
El filtro ponderado de análisis LPC 808 filtra bp_{L}(n) usando los coeficientes de LPC actuales que producen by_{L}(n). El sumador 816 suma una entrada negativa by_{L}(n) con x(n), la salida del cual se recibe por el minimizador de suma de cuadrados 812. El minimizador de suma de cuadrados 812 selecciona la L óptima, designada como L* y el b óptimo, designado como b*, como aquellos valores de L y b que minimizan E_{tono}(L) según:
E_{tono}(L)=\sum\limits_{n=0}^{L_{p}-1}\{x(n)-by_{l}(n)\}^{2}
Si 100 y 101, entonces el valor de b que minimiza E_{tono}(L) para un valor dado de L es
b\text{*}=\frac{E_{xy}(L)}{E_{yy}(L)}
para el que
E_{tono}(L)=K -\frac{E_{xy}(L)^{2}}{E_{yy}(L)}
donde K es una constante que puede despreciarse.
Los valores óptimos de L y K (L* y b*) se encuentran determinando primero el valor de L que minimiza E_{tono}(L) y luego calculando b*.
Estos parámetros de filtro de tono son calculados preferiblemente para cada subtrama y entonces se cuantifican para una transmisión eficaz. En una realización preferida, los códigos de transmisión PRETj y PGANj para la subtrama j-ésima se calculan como
15
\vskip1.000000\baselineskip
150
PGAINj se ajusta entonces a -1 si PLAGj se pone a 0. Estos códigos de transmisión se transmiten en medio decodificador CELP 206 como los parámetros de filtro de tono, parte de la señal de voz codificada s_{enc}(n).
B. Libro de Claves de Codificación
El libro de claves de codificación 704 recibe la señal objetivo x(n) y determina un juego de parámetros de activación de libro de claves que se emplean por el medio decodificador CELP 206, junto con los parámetros de filtro de tono, para reconstruir la señal residual cuantificada.
El libro de claves de codificación 704 primero actualiza x(n) como sigue.
x(n)=x(n)-y_{pzir}(n), \hskip0.5cm 0 \leq n < 40
donde y_{pzir}(n) es la salida del filtro de síntesis LPC ponderado (con memorizaciones retenidas del fin de la subtrama anterior) a una entrada que es la respuesta a entrada cero del filtro del tono con parámetros \hat{L}* y \hat{b}* (y memorizaciones que son el resultado del procesamiento de la subtrama anterior).
Se crea un objetivo retrofiltrado \vec{d} = \{d_{n}\}, 0 \leq n < 40 donde
16
es la matriz de respuesta de impulso formada a partir de la respuesta a impulso \{h_{n}\} y \vec{x} = {x(n)}, 0 \leq n < 40. También se crean dos vectores más \vec{\phi} = \{\phi_{n}\} y \vec{s}.
\vec{s} = sign(\vec{d})
17
donde
170
El libro de claves de codificación 704 inicializa los valores Exy* y Eyy* a cero y busca los parámetros de activación óptimos, preferentemente con cuatro valores de N (0, 1, 2, 3), según:
18
19
El libro de claves de codificación 704 calcula la ganancia de libro de claves G* como \frac{Exy\text{*}}{Eyy\text{*}}, y luego cuantifica el juego de parámetros de activación como los siguientes códigos de transmisión codifica para la j-ésima subtrama:
20
y la ganancia cuantificada G* es 2^{CBGj\tfrac{11.2636}{31}}.
Se pueden implementar realizaciones de velocidad de bit inferior del medio codificador / decodificador quitando el módulo de codificación de tono 702 y realizando sólo una búsqueda de libro de claves para determinar un índice I y una ganancia G para cada una de las cuatro subtramas. Aquellos con experiencia en la técnica reconocerán cómo las ideas arriba descritas podrían extenderse para lograr esta realización de velocidad de bit más baja.
C. Decodificador CELP
El medio decodificador CELP 206 recibe la señal de voz codificada, incluyendo preferiblemente parámetros de activación de libro de claves y parámetros de filtro de tono, del medio codificador CELP 204, y basándose en estos datos produce voz sintetizada \hat{s}(n). El módulo decodificador de libro de claves 708 recibe los parámetros de activación de libro de claves y genera la señal de activación cb(n) con una ganancia de G. La señal de activación cb(n) para la subtrama j-ésima contiene principalmente ceros salvo para las cinco ubicaciones:
I_{k} = 5CBIjk + k, \hskip0.5cm 0 \leq k < 5
que correspondientemente tiene impulsos de valor
S_{k} = 1-2SIGNjk, \hskip0.5cm 0 \leq k < 5
todos de los cuales se escalan por la ganancia G que se calcula que es 2^{CBGj\tfrac{11.2636}{31}}, para proporcionar Gcb(n).
El filtro de tono 710 decodifica los parámetros de filtro de tono de los códigos de la transmisión recibidos según:
21
El filtro de tono 710 filtra entonces Gcb(n), donde el filtro tiene una función de transferencia dada por
\frac{1}{P(z)}=\frac{1}{1-b\text{*}z^{-L\text{*}}}
En una realización preferida, el medio decodificador CELP 206 también agrega una operación de filtrado de tono extra, un prefiltro de tono (no mostrado), después del filtro de tono 710. El retardo para el prefiltro de tono es igual que la del filtro de tono 710, mientras que su ganancia es preferentemente la mitad de la ganancia de tono hasta un máximo de 0.5.
El filtro de síntesis LPC 712 recibe la señal residual cuantificada reconstruida \hat{r}(n) y da como salida la señal de voz sintetizada \hat{s}(n).
D. Módulo de Actualización de Filtro
El módulo de actualización de filtro 706 sintetiza la voz como se ha descrito en la sección anterior para actualizar las memorias del filtro. El módulo de actualización del filtro 706 recibe los parámetros de activación de libro de claves y los parámetros de filtro de tono, genera una señal de activación cb(n), filtra el tono Gcb(n), y luego sintetiza \hat{s}(n). Realizando esta síntesis en el codificador, se actualizan las memorias en el filtro de tono y en el filtro de síntesis LPC para su uso al procesar la siguiente subtrama.
VIII. Medio de Codificación de Periodo de Tono Prototipo (PPP)
La codificación por periodo de tono prototipo (PPP) explota la periodicidad de una señal de voz para lograr velocidades de bit inferiores a las pueden obtenerse usando codificación CELP. En el general, la codificación PPP involucra extraer un periodo representativo de la señal residual, denominado aquí a como prototipo residual, y usar luego ese prototipo para construir periodos de tono anteriores en la trama interpolando entre el prototipo residual de la trama actual y un periodo de tono similar de la trama anterior (es decir, el prototipo residual si la última trama fue PPP). La efectividad (por lo que se refiere a la bajada de velocidad de bit) de la codificación PPP depende, en parte, de cuán próximamente los prototipos residuales actual y anterior se parecen a los periodo de tono intermedios. Por esta razón, la codificación PPP se aplica preferentemente a señales de voz que exhiben grados relativamente altos de periodicidad (por ejemplo, la voz hablada), aquí denominadas como señales de voz cuasi periódicas.
La Fig. 9 representa un medio codificador PPP 204 y un medio decodificador PPP 206 con mayor detalle. El medio codificador PPP 204 incluye un módulo de extracción 904, un correlador rotacional 906, un libro de claves de codificación 908, y un módulo de actualización de filtro 910. El medio codificador PPP 204 recibe la señal residual r(n) y produce una señal de voz codificada s_{enc}(n), que preferentemente incluye parámetros del libro de claves y parámetros rotacionales. El medio decodificador PPP 206 incluye un libro de claves decodificador 912, un rotador 914, un sumador 916, un interpolador de periodo 920, y un filtro de alabeo 918.
La Fig. 10 es un diagrama de flujo 1000 que representa los pasos de codificación PPP, incluyendo codificación y decodificación. Estos pasos se tratan junto con los distintos componentes del medio codificador PPP 204 y del medio decodificador PPP 206.
A. Módulo de Extracción
En paso 1002, módulo de extracción 904 extrae un prototipo residual r_{p}(n) de la señal residual r(n). Como se ha descrito anteriormente en la Sección III.F., el módulo de cálculo inicial de parámetros 202 emplea un filtro de análisis LPC para computar r(n) para cada trama. En una realización preferida, los coeficientes LPC en este filtro están ponderados perceptivamente como se describió en la Sección VII.A. La longitud de r_{p}(n) es igual al retardo de tono L computado por el módulo de cálculo inicial de parámetros 202 durante la última subtrama en la trama actual.
La Fig. 11 es un diagrama de flujo que representa el paso 1002 con mayor detalle. El módulo de extracción PPP 904 selecciona preferiblemente un periodo de tono tan cerca del extremo de la trama como sea posible, sujeto a ciertas restricciones tratadas más abajo. La Fig. 12 representa un ejemplo de una señal residual calculada basado en voz cuasi periódica, incluyendo la trama actual y la última subtrama de la trama anterior.
En el paso 1102, una se determina una "región de corte libre". La región de corte libre define un juego de muestras en el residuo que no puede ser puntos extremos del residuo del prototipo. La región corte libre asegura que las regiones de energía altas del residuo no ocurren al principio o al final del prototipo (lo que podría causar discontinuidades en la salida si se permitió que pasara). El valor absoluto de cada una de las L muestras finales de r(n) se calcula. La variable P_{s} se fija igual al índice de tiempo de la muestra con el valor absoluto mayor, aquí denominada como el "pico del tono". Por ejemplo, si el pico de tono ocurriera en la última muestra de las últimas L muestras, P_{S} = L-1. En una realización preferida, la muestra mínima de la región de corte libre, CF_{min}, se fija para que sea P_{s}-6 o P_{s}-0.25L, la que sea menor. El máximo de la región de corte libre, CF_{max}, se fija para que sea P_{S}+6 o P_{S}+0.25L, el que sea
mayor.
En el paso 1104, el residuo prototipo se selecciona cortando L muestras del residuo. La región escogida es tan próxima como sea posible al extremo de la trama, con la restricción de que los puntos extremos de la región no pueden estar dentro de la región corte libre. Las L muestras del residuo prototipo se determinan usando el algoritmo descrito en el siguiente seudocódigo:
22
23
\vskip1.000000\baselineskip
B. Correlador Rotacional
En referencia de nuevo a la Fig. 10, en el paso 1004, el correlador rotacional 906 calcula un juego de parámetros rotacionales basado en el residuo prototipo actual, r_{p}(n), y el residuo prototipo de la trama anterior, r_{prev}(n). Estos parámetros describen cómo r_{prev}(n) puede rotarse y escalarse mejor para uso como un predictor de r_{p}(n). En una realización preferida, el juego de parámetros rotacionales incluye una rotación óptima R* y una ganancia óptima b*. La Fig. 13 es un diagrama de flujo que representa el paso 1004 con mayor detalle.
En el paso 1302, la señal objetivo ponderada perceptivamente x(n), se computa filtrando circularmente el periodo residual de tono prototipo r_{p}(n). Esto se logra como sigue. Una señal temporal tmp1(n) se crea a partir de r_{p}(n) como
24
que se filtra mediante el filtro de síntesis LPC ponderado con ceros memorias para proporcionar una salida tmp2(n). En una realización preferida, los coeficientes LPC usados son los coeficientes perceptivamente ponderados que corresponden a la última subtrama en la trama actual. La señal objetivo x(n) vieneentonces dada por
x(n) = tmp2(n) + tmp2(n+L), \hskip0.5cm 0 \leq n < L
En el paso 1304, el prototipo residual de la trama anterior, r_{prev}(n), se extrae del formante residual de la trama anterior cuantificada (que también está en las memorias del filtro del tono). El residuo prototipo anterior se define preferentemente como los últimos Lp valores del formante residual de la trama anterior donde Lp es igual a L si la trama anterior no era una trama PPP, y se otra forma se fija al retardo de tono anterior.
En el paso 1306, la longitud de r_{prev}(n) se altera para ser de la misma longitud que x(n) para que puedan calcularse las correlaciones correctamente. Esta técnica para alterar la longitud de una señal muestreada se denomina aquí como de alabeo. La señal de activación de tono alabeado, rw_{prev}(n), puede describirse como
rw_{prev}(n) = r_{prev}(n \ \text{*} \ TWF), \hskip0.5cm 0 \leq n <L
donde TWF es el factor de deformación de tiempo L_{p}/L. Los valores de muestra en puntos no enteros n*TWF se computan usando un juego de tablas de función sinc preferentemente. La secuencia sinc escogida es el sinc(-3 - F: 4 - F) donde F es la parte fraccionaria de n*TWF redondeada hasta el múltiplo más cercano de 1/8. El principio de esta secuencia se alinea con r_{prev}((N-3)% L_{p}) donde N es la parte entera de n*TWP después de redondearse hasta el octavo más próximo.
En el paso 1308, la señal de activación de tono alabeado rw_{prev}(n) se filtra circularmente produciendo y(n). Esta operación es igual que la descrita anteriormente con respecto al paso 1302, pero aplicada rw_{prev}(n).
En el paso 1310, se calcula el rango de búsqueda de rotación de tono calculando primero una rotación esperada E_{rot},
E_{rot} = L - redondeo \left(L \ frac{\left(\frac{(160-L)(L_{p} + L)}{2L_{p}L}\right)}\right)
donde frac(x) da la parte fraccionaria de x. Si L < 80, el rango de búsqueda de rotación de tono se define para que sea \{E_{rot}\text{-}8, E_{rot}\text{-}7.5.. \ E_{rot}\text{+}7.5\}, y \{E_{rot}\text{-}16, E_{rot}\text{-}15... \ E_{rot}\text{+}15\} cuando L \geq 80.
En el paso 1312, se calculan los parámetros rotacionales, rotación óptima R* y ganancia óptima b*. La rotación del tono que produce la mejor predicción entre x(n) e y(n) se escoge junto con la ganancia correspondiente b. Estos parámetros se escogen preferentemente para minimizar la señal de error e(n)=x(n)-y(n). La rotación óptima R* y la ganancia óptima b* es aquellos valores de rotación R y ganancia b que producen el valor máximo de \frac{Exy_{R}^{2}}{E_{xy}} donde
Exy_{R} = \sum\limits_{i=0}^{L-1}x((i+R)%L)y(i) y Eyy = \sum\limits_{i=0}^{L-1}y(i)y(i) para los que la ganancia óptima b* es \frac{Exy_{R\text{*}}}{Eyy} a la rotación R*. Para valores fraccionarios de rotación, el valor de Exy_{R} es aproximado interpolando los valores de Exy_{R} calculados a valores enteros de rotación. Se emplea un filtro simple de interpolación de cuatro etapas. Por ejemplo,
Exy_{R} = 0.54(Exy_{R'}+Exy_{R'+1}) -0\text{.}04 \ \text{*} \ (Exy_{R'-1}+Exy_{R'+2})
donde R es una rotación no entera (con precisión de 0.5) y R '= \lfloor R \rfloor.
En una realización preferida, los parámetros rotatorios son cuantificados para una transmisión eficiente. La ganancia óptima b* es preferentemente cuantificada uniformemente entre 0.0625 y 4.0 como
PGAN = max\left\{min\left(\left\lfloor 63\left(\frac{b*-0\text{.}0625}{4-0\text{.}0625}\right) + 0.5\right\rfloor,63\right),0\right\}
donde PGAN es el código de transmisión y la ganancia cuantificada \hat{b}* viene dada por
{}\hskip17cm max\left\{0\text{.}0625 + \left(\frac{PGAN(4-0\text{.}0625)}{63}\right),0\text{.}0625\right\}.
La rotación óptima R* es cuantificada como el código de transmisión PROT que se fija a 2(R* -E_{rot}+8) si L <80, y R*-E_{rot}+16 cuando L \geq 80.
C. Libro de Claves de Codificación
En referencia de nuevo a la Fig. 10, en el paso 1006, libro de claves de codificación 908 genera un juego de parámetros del libro de claves basado en la señal objetivo recibida x(n). El libro de claves de codificación 908 busca encontrar uno o más vectores de código que, cuando se escalan, agregan, y filtran se suman a una señal que se aproxima a x(n). En una realización preferida, el libro de claves de codificación 908 se implementa como un libro de claves multietapa, preferentemente de tres etapas, donde cada etapa produce un vector de código escalado. El juego de parámetros del libro de claves incluye por consiguiente los índices y ganancias que corresponden a tres vectores de código. La Fig. 14 es un diagrama de flujo que representa el paso 1006 con mayor detalle.
En el paso 1402, antes de realizar la búsqueda de libro de claves, la señal objetivo x(n) se actualiza como
x(n) = x(n) - b y((n - R\text{*})%L), \hskip0.5cm 0 \leq n < L
Si en la substracción anterior la rotación R* es no entera (es decir, tiene una fracción de 0.5), entonces
y(i-0\text{.}5) = -0\text{.}0073(y(i-4)+y(i+3)) + 0\text{.}0322(y(i-3) + y(i+2))
- 0\text{.}1363(y(i-2) + y(i+1)) + 0\text{.}6076(y(i-1)+y(i))
donde i=n - |R*|.
En el paso 1404, los valores del libro de claves se dividen en regiones múltiples. Según una realización preferida, el libro de claves se determina como
\vskip1.000000\baselineskip
25
\newpage
donde CBP son los valores de un libro de claves estocástico o entrenado. Aquellos con experiencia en la técnica reconocerán cómo se generan estos valores del libro de claves. El libro de claves se divide en múltiples regiones, cada una de longitud L. La primera región es un solo pulso, y las regiones restantes están hechas a partir de valores del libro de claves estocástico o entrenado. El número de regiones N será 128/L.
En el paso 1406, las múltiples regiones del libro de claves son filtradas circularmente cada una para producir el libro de claves filtrado, y_{reg}(n), cuyo encadenamiento es la señal y(n). Para cada región, el filtrado circular se realiza como se describió anteriormente con respecto al paso 1302.
En el paso 1408, la energía del libro de claves filtrado, Eyy(reg), se computa para cada región y se almacena:
Eyy(reg) = \sum\limits_{i=0}^{L-1}y_{reg}(i), \hskip0.5cm 0 \leq reg < N
En el paso 1410, se calculan los parámetros del libro de claves (es decir, los vectores de código índice y ganancia) para cada etapa del libro de claves multietapas. Según una realización preferida, sea Region(I) = reg, definida como la región en que reside la muestra I, o
26
y sea Exy(I) definido como
Exy(I) =\sum\limits_{i=0}^{L-1}x(i)y_{Region (I)}((i+I)%L)
Los parámetros del libro de claves, I* y G*, para la etapa j-ésima del libro de claves se calculan usando el seudocódigo siguiente.
\vskip1.000000\baselineskip
27
\vskip1.000000\baselineskip
Según una realización preferida, los parámetros del libro de claves son cuantificados para una transmisión eficiente. El código de transmisión CBIj (j = número de etapa - 0, 1 o 2) preferentemente se fija I* y los códigos de transmisión CBGj y SIGNj son fijos por cuantificación de la ganancia G*.
\vskip1.000000\baselineskip
28
y la ganancia cuantificada \hat{G}* es
29
La señal objetivo x(n) se actualiza entonces substrayendo la contribución del vector del libro de claves de la etapa actual
x(n)=x(n)-\hat{G}\text{*} \ y_{Region(I \ \text{*})} ((n+I\text{*})% L), \hskip0.5cm 0 \leq n < L
Se repiten los procedimientos anteriores a partir del seudocódigo para calcular I*, G*, y los códigos de transmisión correspondientes, para las etapas segunda y tercera.
D. Módulo de Actualización de Filtro
En referencia de nuevo a la Fig. 10, en el paso 1008, el módulo de actualización de filtro 910 actualiza los filtros usados por el medio codificador PPP 204. Se presentan dos realizaciones alternativas para el módulo de actualización de filtro 910, como se muestra en las Figs. 15A y 16A. Como se muestra en la primera realización alternativa en la Fig. 15A, el módulo de actualización de filtro 910 incluye un libro de claves de decodificación 1502, un rotador 1504, un filtro de alabeo1506, un sumador 1510, un módulo de alineación e interpolación 1508, un módulo de actualización de filtro de tono 1512, y una filtro de síntesis LPC 1514. La segunda realización, como se muestra en Fig. 16A, incluye un libro de claves de decodificación 1602, un rotador 1604, un filtro de alabeo 1606, un sumador 1608, un módulo de actualización de filtro de tono 1610, un filtro de síntesis LPC circular 1612, y un módulo de actualización de filtro LPC 1614. Las Figs. 17 y 18 son diagramas de flujo que representan el paso 1008 con mayor detalle, según las dos realizaciones.
En el paso 1702 (y 1802, el primer paso de ambas realizaciones), el residuo prototipo reconstruido actual, r_{ac}t(n), L muestras de longitud, se reconstruye a partir de los parámetros del libro de claves y de los parámetros rotacionales. En una realización preferida, el rotador 1504 (y 1604) rota una versión alabeado del prototipo residual anterior de acuerdo con lo siguiente:
r_{act}((n+R\text{*})%L) =b \ rw_{prev}(n), \hskip0.5cm 0 \leq n < L
donde el r_{act} es el prototipo actual a crear, rw_{prev} es la versión alabeado (como se describió anteriormente en la Sección VIII.A., con TWF = L_{p}/L) del periodo anterior obtenida a partir de las más recientes L muestras de las memorias de filtro de tono, b de la ganancia de tono y R la rotación obtenida de los códigos de transmisión de paquete como
30
donde E_{rot} es la rotación esperada computada como se describió anteriormente en la Sección VIII.B.
El libro de claves de decodificación 1502 (y 1602) agrega las contribuciones para cada una de las tres etapas del libro de claves a r_{act}(n) como
31
donde I=CBIj y G se obtienen de CBGj y SIGNj como se describió en la sección anterior, siendo j el número de etapa.
A estas alturas, las dos realizaciones alternativas para el módulo de actualización de filtro 910 difieren. En referencia primero a la realización de la Fig. 15A, en el paso 1704, el módulo de alineación y de interpolación 1508 llena el resto de muestras residuales a partir del principio de la trama actual hasta el principio del prototipo residual actual (como se muestra en la Fig. 12). Se realizan aquí, la alineación e interpolación en la señal residual. Sin embargo, estas mismas operaciones también pueden realizarse en señales de voz, como se describe debajo. La Fig. 19 es un diagrama de flujo que describe el paso 1704 con mayor detalle.
En el paso 1902, se determina si el retardo anterior L_{p}_{} es doble o mitad en relación al retardo actual L. En una realización preferida, otros múltiplos se consideran muy improbables, y por consiguiente no se toman en consideración. Si L_{p}>1.85L, L_{p} se divide por dos y sólo se usa la primera mitad del periodo anterior r_{prev}(n). Si L_{p} <0.54L, el retardo actual L es probablemente doble y por consiguiente L_{p} también se dobla y el periodo anterior r_{prev}(n) se extiende por repetición.
En el paso 1904, r_{prev}(n) es alabeado para formar el rw_{prev}(n) como se describió anteriormente con respecto a paso 1306, con TWF =L_{p}/L, para que las longitudes de ambos residuos prototipo sean ahora las mismas. Nótese que esta operación se realizó en el paso 1702, como se describió anteriormente, por el filtro de alabeo 1506. Aquellos con experiencia en la técnica reconocerán que el paso 1904 sería innecesario si la salida del filtro de alabeo 1506 estuviera disponible para el módulo de alineación e interpolación 1508.
En el paso 1906 se computa el rango aceptable de rotaciones de alineación. La rotación de alineación esperada, E_{A}, se computa para ser igual que E_{rot} como se describió anteriormente en la Sección VIII.B. El rango de búsqueda de rotación de alineación se define para que sea \{E_{A}\text{-}\delta A, E_{A}\text{-}\delta A+0\text{.}5, E_{A}\text{-}\delta A\text{+}1..., E_{A}\text{+}\delta A\text{-}1\text{.}5, E_{A}\text{+}\delta A\text{-}1\}, donde \deltaA = max {6,0.15L}.
En el paso 1908, las correlaciones cruzadas entre los periodo prototipo anterior y actual para rotaciones de alineación enteras, R, se computa como
32
y las correlaciones cruzadas para las rotaciones A no enteras se aproximan interpolando los valores de correlaciones a rotación entera:
C(A)=0\text{.}54(C(A')+C(A'+1)) -0\text{.}04 (C(A'-1)+C(A'+2))
donde A'=A-0.5.
En el paso 1910, el valor de A (sobre el rango de rotaciones aceptables) que produce el valor máximo de C(A) es escogido como la alineación óptima, A*.
En el paso 1912 se computa el promedio de retardo o periodo de tono para las muestras intermedias, L_{av}, de la siguiente manera. Una estimación de número de periodo, N_{per}, se computa como
N_{per} = redondeo\left(\frac{A*}{L}+\frac{(160-L)(L_{p}+L)}{2L_{p}L}\right)
con el retardo promedio para las muestras intermedias dado por
Lav = \frac{(160-L)L}{N_{per}L-A\text{*}}
En el paso 1914, las muestras residuales restantes en la trama actual son calculadas según lo siguiente interpolación entre los residuos prototipo anterior y actual:
33
donde \alpha L/L_{av}. Los valores de muestra en puntos no enteros \tilde{n} (igual a n\alpha o n\alpha + A*) se computan usando un juego de tablas de función sinc. La secuencia sinc escogida es sinc(-3-F: 4-F) donde F es la parte fraccionaria de \tilde{n} redondeada al múltiplo más cercano de 1/8. El principio de esta secuencia se alinea con r_{prev}((N-3)%L_{p} donde N es la parte entera de \tilde{n} después de redondearse al octavo más próximo.
Nótese que esta operación es esencialmente igual que el alabeo, como se describió anteriormente con respecto al paso 1306. Por consiguiente, en una realización alternativa, la interpolación del paso 1914 se computa usando un filtro de alabeo. Aquellos con experiencia en la técnica reconocerán que pueden realizarse economías reutilizando un solo filtro de alabeo para los distintos propósitos aquí descritos.
Volviendo a la Fig. 17, en el paso 1706 el módulo de actualización de filtro de tono 1512 copia valores del residuo reconstruido \hat{r}(n) a las memorias de filtro de tono. Igualmente, también se actualizan las memorias del filtro del tono.
En el paso 1708 el filtro de síntesis LPC 1514 filtra el residuo reconstruido \hat{r}(n), que tiene el efecto de actualizar las memorias del filtro de síntesis LPC.
Se describe ahora la segunda realización del módulo de actualización de filtro 910, como se muestra en la Fig. 16A. Como se describió anteriormente con respecto al paso 1702, en el paso 1802, el residuo prototipo se reconstruye a partir de los parámetros del libro de claves y rotatorios, mientras produciendo r_{act}(n).
En el paso 1804, el módulo de actualización de filtro de tono 1610 actualiza las memorias de filtro de tono copiando réplicas de las L muestras de r_{act}(n), de acuerdo con
mem-tono(i)=r_{act} ((L-(131% \ L)+i)% \ L), \hskip0.5cm 0 \leq i < 131
o alternativamente,
mem-tono(131-1-i)=r_{act}(L-1 -% \ L), \hskip0.5cm 0 \leq i < 131
donde 131 es preferentemente el orden de filtro de tono para un retardo máximo de 127.5. En una realización preferida, las memorias del prefiltro de tono son reemplazadas idénticamente por réplicas del periodo actual r_{act}(n):
mem-prefilt-tono(i)=mem-tono(i), \hskip0.5cm 0 \leq i < 131
En el paso 1806, r_{actt}(n) se filtra circularmente como se describió en la Sección VIII.B., produciendo s_{c}(n), usando preferentemente coeficientes LPC ponderados perceptivamente.
En el paso 1808, los valores de s_{c}(n), preferentemente los últimos diez valores (para un filtro LPC de 10º orden), se usan para actualizar las memorias del filtro de síntesis LPC.
E. Decodificador PPP
Volviendo a las Figs. 9 y 10, en el paso 1010, el medio decodificador PPP 206 reconstruye el residuo prototipo r_{act}(n) basado en los parámetros recibidos de libro de claves y rotatorios. La decodificación por libro de claves 912, el rotador 914, y el filtro de alabeo 918 operan de la manera descrita en la sección anterior. El interpolador de periodo 920 recibe el residuo prototipo reconstruido r_{act}(n) y el residuo prototipo reconstruido anterior r_{prev}(n), interpola las muestras entre los dos prototipos, y produce una señal de voz sintetizada \hat{s}(n). El interpolador de periodo 920 se describe en la siguiente sección.
F. Interpolador de Periodo
En el paso 1012, el interpolador de periodo 920 recibe r_{act}(n) y produce señal de voz sintetizada \hat{s}(n). Se presentan aquí dos realizaciones alternativas para el interpolador de periodo 920, como se muestra en las Figs. 15B y 16B. En la primera realización alternativa, Fig. 15B, el interpolador de periodo 920 incluye un módulo de alineación e interpolación 1516, un filtro de síntesis LPC 1518, y un módulo de actualización de filtro de tono 1520. La segunda realización alternativa, como se muestra en Fig. 16B, incluye un filtro de síntesis LPC circular 1616, un módulo de alineación e interpolación 1618, un módulo de actualización de filtro de tono 1622, y una módulo de actualización de filtro LPC 1620. Las Figs. 20 y 21 son diagramas de flujo que representan el paso 1012 con mayor detalle, según las dos realizaciones.
En referencia a la Fig. 15B, en el paso 2002, el módulo de alineación e interpolación 1516 reconstruye la señal residual para las muestras entre el del prototipo residual actual r_{act(}n) y el prototipo residual anterior r_{prev}(n), formando \hat{r}(n). El módulo de alineación e interpolación 1516 opera de la manera descrita más arriba con respecto al paso 1704 (como se muestra en la Fig. 19).
En el paso 2004, el módulo de actualización de filtro de tono 1520 actualiza las memorias de filtro de tono basado en la señal residual reconstruida \hat{r}(n), como se describió anteriormente con respecto al paso 1706.
En el paso 2006, el filtro de síntesis LPC 1518 sintetiza la señal de voz de salida \hat{s}(n) basado en la señal residual reconstruida \hat{r}(n). Las memorias de filtro LPC se actualizan automáticamente cuando se realiza esta operación.
En referencia ahora a las Figs. 16B y 21, en el paso 2102, el módulo de actualización de filtro de tono 1622 actualiza las memorias de filtro de tono basado en el prototipo residual actual reconstruido, r_{act}(n), como se describió anteriormente con respecto al paso 1804.
En el paso 2104, el filtro circular de síntesis LPC 1616 recibe r_{act}(n) y sintetiza un prototipo de voz actual, s_{c}(n) (que tiene L muestras de longitud), como se describió anteriormente en la Sección VIII.B.
En el paso 2106, el módulo de actualización de filtro LPC 1620 actualiza las memorias de filtro LPC como se describió anteriormente con respecto al paso 1808.
En el paso 2108, el módulo de alineación e interpolación 1618 reconstruye las muestras de voz entre el periodo prototipo anterior y el periodo prototipo actual. El residuo prototipo anterior, r_{prev}(n), se filtra circularmente (en una configuración de síntesis LPC) de forma que la interpolación pueda proseguir en el dominio de voz. El módulo de alineación e interpolación 1618 opera de la manera descrita más arriba con respecto al paso 1704 (véase Fig. 19), excepto que las operaciones se realizan sobre prototipos de voz en lugar de prototipos residuales. El resultado de la alineación e interpolación es la señal de voz sintetizada \hat{s}(n).
IX. Medio de Codificación por Predicción Lineal Activado por Ruido (NELP)
La codificación por predicción lineal activada por ruido (NELP) modela la señal de voz como una secuencia de ruido seudoaleatorio y por eso logra velocidades de bit más bajas que las que pueden obtenerse usando codificación CELP o PPP. La codificación NELP opera más eficazmente, por lo que se refiere a reproducción de señal, cuando la señal de voz tiene poca o ninguna estructura de tono, como la voz sorda o el ruido de fondo.
La Fig. 22 representa un medio codificador NELP 204 y un medio decodificador NELP 206 con mayor detalle. El medio codificador NELP 204 incluye un estimador de energía 2202 y un libro de claves de codificación 2204. El medio decodificador NELP 206 incluye un libro de claves de decodificación 2206, un generador de números aleatorios 2210, un multiplicador 2212, y un filtro de síntesis LPC 2208.
La Fig. 23 es un diagrama de flujo 2300 que representa los pasos de codificación NELP, incluyendo la codificación y la decodificación. Estos pasos se discuten junto con los distintos componentes del codificador medio NELP 204 y del medio decodificador NELP 206.
En el paso 2302, el estimador de energía 2202 calcula la energía de la señal residual por cada una de las cuatro subtramas como
Est_{i} = 0 \text{.}5log\left(\frac{\sum\limits_{n=40i}^{40i+39}s^{2}(n)}{40}\right), \hskip0.5cm 0\leq i < 4
En el paso 2304, el libro de claves de codificación 2204 calcula un juego de parámetros del libro de claves, formando la señal de voz codificada s_{enc}(n). En una realización preferida, el juego de parámetros del libro de claves incluye un solo parámetro, índice I0. El índice I0 se fija igual al valor de j que minimiza
\sum\limits_{i=0}^{3}(Est_{i} - STEQ(j\text{,}i))^{2} \hskip0.5cm donde \ 0 \leq j < 128
Se usan los vectores del libro de claves, STEQ, para cuantificar las energías de subtrama Est_{i}, e incluyen un número de elementos igual al número de subtramas dentro de una trama (es decir, 4 en una realización preferida). Estos vectores del libro de claves se crean preferentemente según técnicas estándar conocidas por aquellos con experiencia en la técnica de crear libros de claves estocástico o entrenado.
En el paso 2306, el libro de claves de decodificación 2206 decodifica los parámetros del libro de claves recibidos. En una realización preferida, el conjunto de ganancias de subtrama G_{i}, se decodifica de acuerdo con:
G_{i}=2^{STEQ(I0,i)},
ó
G_{i}=2^{0\text{.}2STEQ(I0,i)+0\text{.}8logGprev-2}
(donde la trama anterior se codificó usando un esquema de codificación de tasa cero)
donde 0 \leq i < 4 y Gprev es la ganancia de activación de libro de claves que corresponde a la última subtrama de la trama anterior.
En el paso 2308, el generador de números aleatorios 2210 genera vector aleatorio de varianza unidad nz(n). Este vector aleatorio se escala por la ganancia apropiada Gi dentro de cada subtrama en el paso 2310, creando la señal de activación G_{i}nz(n).
En el paso 2312, el filtro de síntesis LPC 2208 filtra la señal de activación G_{i}nz(n) para formar la señal de voz de salida, \hat{s}(n).
En una realización preferida, también se emplea un medio de tasa cero donde la ganancia G_{i} y los parámetros LPC obtenidos de la subtrama NELP más reciente de no tasa cero se emplea para cada subtrama en la trama actual. Aquellos con experiencia en la técnica reconocerán que este medio de tasa cero puede usarse eficazmente cuando las tramas NELP múltiples ocurren en sucesión.
X. Conclusión
Aunque anteriormente se han descrito varias realizaciones de la presente invención, debe entenderse que estas se han presentado a modo de ejemplo solamente, y no de limitación. Por tanto, la amplitud y el alcance de la presente invención no deben ser limitados por cualquiera de las realizaciones ejemplares antes descritas, sino que deben definirse solamente de acuerdo con las siguientes reivindicaciones.
La descripción anterior de las realizaciones preferidas se proporciona para permitir a cualquier persona experimentada en la técnica hacer o usar la presente invención. Aunque la invención se ha mostrado y descrito especialmente con referencia a las realizaciones preferidas de la misma, se entenderá por aquellos con experiencia en la técnica que pueden hacerse varios cambios de forma y detalles en esta sin apartarse del alcance de la invención tal como se define en las reivindicaciones.

Claims (24)

1. Un método para codificar una señal de voz cuasi periódica, en donde la señal de voz se representa por una señal residual generada filtrando la señal de voz con un el filtro de análisis de Codificación Predictiva Lineal (LPC), y donde la señal residual se divide en tramas de datos, comprendiendo los pasos de:
(a) extraer (1002) periodo representativo de una trama actual de la señal residual como prototipo actual;
(b) calcular (1004) un primer juego de parámetros que describen cómo modificar un prototipo anterior de forma que dicho prototipo anterior modificado se aproxime a dicho prototipo actual;
(c) seleccionar (1006) uno o más vectores de código de un primer libro de claves, donde dichos vectores de código cuando se suman aproximan la diferencia entre dicho prototipo actual y dicho prototipo anterior modificado, y donde dichos vectores de código son descritos por un segundo juego de parámetros;
(d) reconstruir (1010) un prototipo actual basado en dichos primero y segundo juegos de parámetros;
(e) interpolar (1012) la señal residual en la región entre dicho prototipo actual reconstruido y un prototipo reconstruido anterior;
(f) sintetizar una señal de voz de salida basada en dicha señal residual interpolada.
2. El método de la reivindicación 1, donde dicha trama actual tiene un retardo de tono, y donde la longitud de dicho prototipo actual es igual a dicho retardo de tono.
3. El método de la reivindicación 1, donde dicho paso de extraer un prototipo actual está sujeto a una "región de corte libre".
4. El método de la reivindicación 3, donde dicho prototipo actual se extrae del extremo de dicha trama actual, sujeto a dicha región de corte libre.
5. El método de la reivindicación 1, donde dicho paso de calcular un primer juego de parámetros comprende los pasos de:
(i) filtrar circularmente dicho prototipo actual, formando una señal objetivo;
(ii) extraer dicho prototipo anterior;
(iii) alabear dicho prototipo anterior de forma tal que la longitud de dicho prototipo anterior sea igual a la longitud de dicho prototipo actual;
(iv) filtrar circularmente dicho prototipo anterior alabeado; y
(v) calcular una rotación óptima y una primera ganancia óptima, donde dicho prototipo anterior alabeado filtrado rotado en dicha rotación óptima y escalado por dicha primera ganancia óptima se aproxima mejor a dicha señal objetivo.
6. El método de la reivindicación 5, donde dicho paso de calcular una rotación óptima y una primera ganancia óptima se realiza sujeto a un rango de búsqueda de rotación de tono.
7. El método de la reivindicación 5, donde dicho paso de calcular una rotación óptima y una primera ganancia óptima minimiza la diferencia cuadrática media entre dicho prototipo anterior alabeado filtrado y dicha señal objetivo.
8. El método de la reivindicación 5, donde dicho primer libro de claves comprende uno o más etapas, y donde dicho paso de seleccionar uno o más vectores de código comprende los pasos de:
(i) actualizar dicha señal objetivo mediante sustracción de dicho prototipo anterior alabeado filtrado girado en dicha rotación óptima y escalado por dicha primera ganancia óptima;
(ii) dividir dicho primer libro de claves en una pluralidad de regiones, donde cada una de dichas regiones forma un vector de código;
(iii) filtrar circularmente cada uno de dichos vectores de código;
(iv) seleccionar uno de dichos vectores de código filtrado que más estrechamente se aproxime a dicha señal objetivo actualizada, donde dicho vector de código particular se describe por un índice óptimo;
(v) calcular una segunda ganancia óptima basada en la correlación entre dicha señal objetivo actualizada y dicho vector de código filtrado seleccionado;
(vi) actualizar dicha señal objetivo restando dicho vector de código filtrado seleccionado escalado por dicha segunda ganancia óptima; y
(vii) repetir los pasos (iv) - (vi) para cada una de dichas etapas en dicho primer libro de claves, donde dicho segundo juego de parámetros comprende dicho índice óptimo y dicha segunda ganancia óptima para cada una de dichas etapas.
9. El método de la reivindicación 8, donde dicho paso de reconstruir un prototipo actual comprende los pasos de:
(i) alabear un prototipo reconstruido anterior de forma tal que la longitud de dicho prototipo reconstruido anterior sea igual a la longitud de dicho prototipo corriente reconstruido;
(ii) rotar dicho prototipo alabeado reconstruido anterior en dicha rotación óptima y escalar en dicha primera ganancia óptima, formando así dicho prototipo corriente reconstruido;
(iii) recuperar un segundo vector de código de un segundo libro de claves, donde dicho segundo vector de código se identifica por dicho índice óptimo, y donde dicho segundo libro de claves comprende un número de etapas igual a dicho primer libro de claves;
(iv) escalar dicho segundo vector de código por dicha segunda ganancia óptima;
(v) agregar dicho segundo vector de código escalado a dicho prototipo actual reconstruido; y
(vi) repetir los pasos (iii) - (v) para cada una de dichas etapas en dicho segundo libro de claves.
10. El método de la reivindicación 9, donde dicho paso de interpolar la señal residual comprende los pasos de:
(i) calcular una alineación óptima entre dicho prototipo anterior reconstruido alabeado y dicho prototipo reconstruido actual;
(ii) calcular un retardo medio entre dicho prototipo anterior reconstruido alabeado y dicho prototipo reconstruido actual basado en dicha alineación óptima; e
(iii) interpolar dicho prototipo reconstruido anterior alabeado y dicho prototipo reconstruido actual, formando por así la señal residual en la región entre dicho prototipo reconstruido anterior alabeado y dicho prototipo reconstruido actual, donde dicha señal residual interpolada tiene dicho retardo medio.
11. El método de la reivindicación 10, donde dicho paso de sintetizar una señal de voz de salida comprende el paso de filtrar dicha señal residual interpolada con un filtro de síntesis LPC.
12. Un método para codificar una señal de voz cuasi periódica, donde la señal de voz se representa por una señal residual generada filtrando la señal de voz con un filtro de análisis de Codificación Predictiva Lineal (LPC), y donde la señal residual se divide en tramas de datos, que comprende los pasos de:
(a) extraer (1002) un periodo representativo de un trama actual de la señal residual como prototipo actual;
(b) calcular (1004) un primero juego de parámetros que describen cómo modificar un prototipo anterior de forma tal que dicho prototipo anterior modificado se aproxime a dicho prototipo actual;
(c) seleccionar (1006) uno o más vectores de código de un primer libro de claves, donde dichos vectores de código cuando se suman aproximan la diferencia entre dicho prototipo actual y dicho prototipo anterior modificado, y donde dichos vectores de código son descritos por un segundo juego de parámetros;
(d) reconstruir (1010) un prototipo actual basado en dichos primero y segundo juegos de parámetros;
(e) filtrar dicho prototipo reconstruido actual con un filtro de síntesis LPC;
(f) filtrar un prototipo reconstruido anterior con dicho filtro de síntesis LPC;
(g) interpolar (1012) en la región entre dicho prototipo reconstruido actual y dicho prototipo reconstruido anterior filtrado, formando así una señal de voz de salida.
13. Un sistema para codificar una señal de voz cuasi periódica, donde la señal de voz se representa por una señal residual generada filtrando la señal de voz con un filtro de análisis de Codificación Predictiva Lineal (LPC), y donde la señal residual se divide en tramas de datos, que comprende:
medios para extraer (904) un periodo representativo de una trama actual de la señal residual como prototipo actual;
medios para calcular (906) un primer juego de parámetros que describen cómo modificar un prototipo anterior de forma tal que dicho prototipo anterior modificado se aproxime a dicho prototipo actual;
medios para seleccionar (908) uno o más vectores de código de un primer libro de claves, donde dichos vectores de código cuando se suman aproximan la diferencia entre dicho prototipo actual y dicho prototipo anterior modificado, y donde dichos vectores de código son descritos por un segundo juego de parámetros;
medios para reconstruir (912, 914, 916, 918) un prototipo reconstruido actual basado en dichos primero y segundo juegos de parámetros;
medios para interpolar (920) la señal residual en la región entre dicho prototipo reconstruido actual y un prototipo reconstruido anterior;
medios para sintetizar una señal de voz de salida basada en dicha señal residual interpolada.
14. El sistema de la reivindicación 13, donde dicha trama actual tiene un retardo de tono, y donde la longitud de dicho prototipo actual es igual a dicho retardo de tono.
15. El sistema de la reivindicación 13, dichos medios para extraer, extraen dicho prototipo actual sujeto a una "región de corte libre".
16. El sistema de la reivindicación 15, donde dichos medios para extraer, extraen dicho prototipo actual del extremo de dicha trama actual, sujeto a dicha región de corte libre.
17. El sistema de la reivindicación 13, donde dichos medios para calcular un primer juego de parámetros comprenden:
un primer filtro circular de síntesis LPC, acoplado para recibir dicho prototipo actual y para producir una señal objetivo;
medios para extraer dicho prototipo anterior de una trama anterior;
un filtro de alabeo, acoplado para recibir dicho prototipo anterior, donde dicho filtro de alabeo produce un prototipo anterior alabeado que tiene una longitud igual a la longitud de dicho prototipo actual;
un segundo filtro circular de síntesis LPC, acoplado para recibir dicho prototipo anterior alabeado, donde dicho segundo filtro circular de síntesis LPC produce un prototipo anterior alabeado filtrado; y
medios para calcular una rotación óptima y una primera ganancia óptima, donde dicho prototipo anterior alabeado filtrado rotado en dicha rotación óptima y escalado por dicha primera ganancia óptima se aproxima mejor a dicha señal objetivo.
18. El sistema de la reivindicación 17, donde dichos medios para calcular calculan dicha rotación óptima y dicha primera ganancia óptima sujeto a un rango de búsqueda de rotación de tono.
19. El sistema de la reivindicación 17, donde los medios para calcular minimizan la diferencia cuadrática media entre dicho prototipo anterior alabeado filtrado y dicha señal objetivo.
20. El sistema de la reivindicación 17, donde dicho primer libro de claves comprende una o más etapas, y donde dichos medios para seleccionar uno o más vectores de código comprenden:
medios para actualizar dicha señal objetivo restando dicho prototipo anterior alabeado filtrado rotado en dicha rotación óptima y escalado por dicha primera ganancia óptima;
medios para dividir dicho primer libro de claves en una pluralidad de regiones, donde cada una de dichas regiones forma un vector de código;
un tercer filtro circular de síntesis LPC acoplado para recibir dichos vectores de código, donde dicho tercer filtro circular de síntesis LPC produce vectores de código filtrados;
medios para calcular un índice óptimo y una segunda ganancia óptima para cada etapa en dicho primer libro de claves, comprendiendo:
medios para seleccionar uno de dichos vectores de código filtrado, donde dicho vector de código filtrado seleccionado se aproxima más estrechamente a dicha señal objetivo y se describe mediante un índice óptimo,
medios para calcular una segunda ganancia óptima basada en la correlación entre dicha señal objetivo y dicho vector de código filtrado seleccionado, y
medios para actualizar dicha señal objetivo restando dicho vector de código filtrado seleccionado escalado por dicha segunda ganancia óptima;
donde dicho segundo juego de parámetros comprende dicho índice óptimo y dicha segunda ganancia óptima para cada una de dichas etapas.
21. El sistema de la reivindicación 20, donde dichos medios para reconstruir un prototipo actual comprenden:
un segundo filtro de alabeo, acoplado para recibir un prototipo reconstruido anterior, donde segundo filtro de alabeo produce un prototipo reconstruido anterior alabeado que tiene una longitud igual a la longitud de dicho prototipo reconstruido actual;
medios para rotar dicho prototipo reconstruido anterior alabeado en dicha rotación óptima y escalar en dicha primera ganancia óptima, formando así dicho prototipo reconstruido actual; y
medios para decodificar dicho segundo juego de parámetros, donde se decodifica un segundo vector de código para cada etapa en un segundo libro de claves con un número de etapas igual a dicho primer libro de claves, que comprenden:
medios para recuperar dicho segundo vector de código de dicho segundo libro de claves, donde dicho segundo vector de código se identifica por dicho índice óptimo,
medios para escalar dicho segundo vector de código por dicha segunda ganancia óptima, y
medios para agregar dicho segundo vector de código escalado a dicho prototipo reconstruido actual.
22. El sistema de la reivindicación 21, donde dichos medios para interpolar la señal residual comprenden:
medios para calcular una alineación óptima entre dicho prototipo reconstruido anterior alabeado y dicho prototipo reconstruido actual;
medios para calcular un retardo medio entre dicho prototipo reconstruido anterior alabeado y dicho prototipo reconstruido actual basado en dicha alineación óptima; y
medios para interpolar dicho prototipo reconstruido anterior alabeado y dicho prototipo reconstruido actual, formando así la señal residual sobre la región entre dicho prototipo reconstruido anterior alabeado y dicho prototipo reconstruido actual, donde dicha señal residual interpolada tiene dicho retardo medio.
23. El sistema de la reivindicación 22, donde dichos medios para sintetizar una señal de voz de salida comprenden un filtro de síntesis LPC.
24. Un sistema para codificar una señal de voz cuasi periódica, donde la señal de voz se representa por una señal residual generada filtrando la señal de voz con un filtro de análisis de Codificación Predictiva Lineal (LPC), y donde la señal residual se divide en tramas de datos, que comprende:
medios para extraer (904) un periodo representativo de una trama actual de la señal residual como prototipo actual;
medios para calcular (906) un primer juego de parámetros que describen cómo modificar un prototipo anterior de forma tal que dicho prototipo anterior modificado se aproxime a dicho prototipo actual;
medios para seleccionar (908) uno o más vectores de código de un primer libro de claves, donde dichos vectores de código cuando se suman aproximan la diferencia entre dicho prototipo actual y dicho prototipo anterior modificado, y donde dichos vectores de código son descritos por un segundo juego de parámetros;
medios para reconstruir (912, 914, 916, 918) un prototipo reconstruido actual basado en dichos primero y segundo juegos de parámetros;
un primer filtro de síntesis LPC, acoplado para recibir dicho prototipo reconstruido actual, donde dicho primer filtro de síntesis LPC produce un prototipo reconstruido actual filtrado;
un segundo filtro de síntesis LPC, acoplado para recibir un prototipo reconstruido anterior, donde dicho segundo filtro de síntesis LPC produce prototipo reconstruido anterior filtrado;
medios para interpolar (920) sobre la región entre dicho prototipo reconstruido actual filtrado y dicho prototipo reconstruido anterior filtrado, formando así una señal de voz de salida;
ES99967508T 1998-12-21 1999-12-21 Codificacion periodica de vocales. Expired - Lifetime ES2257098T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/217,494 US6456964B2 (en) 1998-12-21 1998-12-21 Encoding of periodic speech using prototype waveforms
US217494 1998-12-21

Publications (1)

Publication Number Publication Date
ES2257098T3 true ES2257098T3 (es) 2006-07-16

Family

ID=22811325

Family Applications (1)

Application Number Title Priority Date Filing Date
ES99967508T Expired - Lifetime ES2257098T3 (es) 1998-12-21 1999-12-21 Codificacion periodica de vocales.

Country Status (11)

Country Link
US (1) US6456964B2 (es)
EP (1) EP1145228B1 (es)
JP (1) JP4824167B2 (es)
KR (1) KR100615113B1 (es)
CN (1) CN1242380C (es)
AT (1) ATE309601T1 (es)
AU (1) AU2377600A (es)
DE (1) DE69928288T2 (es)
ES (1) ES2257098T3 (es)
HK (1) HK1040806B (es)
WO (1) WO2000038177A1 (es)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754630B2 (en) * 1998-11-13 2004-06-22 Qualcomm, Inc. Synthesis of speech from pitch prototype waveforms by time-synchronous waveform interpolation
US7092881B1 (en) * 1999-07-26 2006-08-15 Lucent Technologies Inc. Parametric speech codec for representing synthetic speech in the presence of background noise
US6959274B1 (en) * 1999-09-22 2005-10-25 Mindspeed Technologies, Inc. Fixed rate speech compression system and method
US6715125B1 (en) * 1999-10-18 2004-03-30 Agere Systems Inc. Source coding and transmission with time diversity
JP2001255882A (ja) * 2000-03-09 2001-09-21 Sony Corp 音声信号処理装置及びその信号処理方法
US6901362B1 (en) * 2000-04-19 2005-05-31 Microsoft Corporation Audio segmentation and classification
US6584438B1 (en) 2000-04-24 2003-06-24 Qualcomm Incorporated Frame erasure compensation method in a variable rate speech coder
EP2040253B1 (en) * 2000-04-24 2012-04-11 Qualcomm Incorporated Predictive dequantization of voiced speech
US6937979B2 (en) * 2000-09-15 2005-08-30 Mindspeed Technologies, Inc. Coding based on spectral content of a speech signal
US7171357B2 (en) * 2001-03-21 2007-01-30 Avaya Technology Corp. Voice-activity detection using energy ratios and periodicity
US20020184009A1 (en) * 2001-05-31 2002-12-05 Heikkinen Ari P. Method and apparatus for improved voicing determination in speech signals containing high levels of jitter
KR100487645B1 (ko) * 2001-11-12 2005-05-03 인벤텍 베스타 컴파니 리미티드 유사주기 파형들을 이용한 음성 인코딩 방법
US7389275B2 (en) * 2002-03-05 2008-06-17 Visa U.S.A. Inc. System for personal authorization control for card transactions
US20040002856A1 (en) * 2002-03-08 2004-01-01 Udaya Bhaskar Multi-rate frequency domain interpolative speech CODEC system
US20040235423A1 (en) * 2003-01-14 2004-11-25 Interdigital Technology Corporation Method and apparatus for network management using perceived signal to noise and interference indicator
US7738848B2 (en) 2003-01-14 2010-06-15 Interdigital Technology Corporation Received signal to noise indicator
US7627091B2 (en) * 2003-06-25 2009-12-01 Avaya Inc. Universal emergency number ELIN based on network address ranges
KR100629997B1 (ko) * 2004-02-26 2006-09-27 엘지전자 주식회사 오디오 신호의 인코딩 방법
US7130385B1 (en) 2004-03-05 2006-10-31 Avaya Technology Corp. Advanced port-based E911 strategy for IP telephony
US20050216260A1 (en) * 2004-03-26 2005-09-29 Intel Corporation Method and apparatus for evaluating speech quality
US7246746B2 (en) * 2004-08-03 2007-07-24 Avaya Technology Corp. Integrated real-time automated location positioning asset management system
MY149811A (en) * 2004-08-30 2013-10-14 Qualcomm Inc Method and apparatus for an adaptive de-jitter buffer
US8085678B2 (en) * 2004-10-13 2011-12-27 Qualcomm Incorporated Media (voice) playback (de-jitter) buffer adjustments based on air interface
KR100639968B1 (ko) * 2004-11-04 2006-11-01 한국전자통신연구원 음성 인식 장치 및 그 방법
US7589616B2 (en) * 2005-01-20 2009-09-15 Avaya Inc. Mobile devices including RFID tag readers
BRPI0607251A2 (pt) * 2005-01-31 2017-06-13 Sonorit Aps método para concatenar um primeiro quadro de amostras e um segundo quadro subseqüente de amostras, código de programa executável por computador, dispositivo de armazenamento de programa, e, arranjo para receber um sinal de áudio digitalizado
US8155965B2 (en) * 2005-03-11 2012-04-10 Qualcomm Incorporated Time warping frames inside the vocoder by modifying the residual
US8355907B2 (en) * 2005-03-11 2013-01-15 Qualcomm Incorporated Method and apparatus for phase matching frames in vocoders
US8107625B2 (en) 2005-03-31 2012-01-31 Avaya Inc. IP phone intruder security monitoring system
US7599833B2 (en) * 2005-05-30 2009-10-06 Electronics And Telecommunications Research Institute Apparatus and method for coding residual signals of audio signals into a frequency domain and apparatus and method for decoding the same
US20090210219A1 (en) * 2005-05-30 2009-08-20 Jong-Mo Sung Apparatus and method for coding and decoding residual signal
US7177804B2 (en) * 2005-05-31 2007-02-13 Microsoft Corporation Sub-band voice codec with multi-stage codebooks and redundant coding
US7184937B1 (en) * 2005-07-14 2007-02-27 The United States Of America As Represented By The Secretary Of The Army Signal repetition-rate and frequency-drift estimator using proportional-delayed zero-crossing techniques
US7821386B1 (en) 2005-10-11 2010-10-26 Avaya Inc. Departure-based reminder systems
US8259840B2 (en) * 2005-10-24 2012-09-04 General Motors Llc Data communication via a voice channel of a wireless communication network using discontinuities
KR101019936B1 (ko) * 2005-12-02 2011-03-09 퀄컴 인코포레이티드 음성 파형의 정렬을 위한 시스템, 방법, 및 장치
US8346544B2 (en) * 2006-01-20 2013-01-01 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with closed loop re-decision
US8032369B2 (en) * 2006-01-20 2011-10-04 Qualcomm Incorporated Arbitrary average data rates for variable rate coders
US8090573B2 (en) * 2006-01-20 2012-01-03 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with open loop re-decision
US8682652B2 (en) 2006-06-30 2014-03-25 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder, audio decoder and audio processor having a dynamically variable warping characteristic
JP5205373B2 (ja) * 2006-06-30 2013-06-05 フラウンホーファーゲゼルシャフト・ツア・フェルデルング・デア・アンゲバンテン・フォルシュング・エー・ファウ 動的可変ワーピング特性を有するオーディオエンコーダ、オーディオデコーダ及びオーディオプロセッサ
US8260609B2 (en) 2006-07-31 2012-09-04 Qualcomm Incorporated Systems, methods, and apparatus for wideband encoding and decoding of inactive frames
US20100030557A1 (en) * 2006-07-31 2010-02-04 Stephen Molloy Voice and text communication system, method and apparatus
JP4380669B2 (ja) * 2006-08-07 2009-12-09 カシオ計算機株式会社 音声符号化装置、音声復号装置、音声符号化方法、音声復号方法、及び、プログラム
US8239190B2 (en) * 2006-08-22 2012-08-07 Qualcomm Incorporated Time-warping frames of wideband vocoder
KR101186133B1 (ko) * 2006-10-10 2012-09-27 퀄컴 인코포레이티드 오디오 신호들을 인코딩 및 디코딩하는 방법 및 장치
WO2008056775A1 (fr) * 2006-11-10 2008-05-15 Panasonic Corporation Dispositif de décodage de paramètre, dispositif de codage de paramètre et procédé de décodage de paramètre
US20080120098A1 (en) * 2006-11-21 2008-05-22 Nokia Corporation Complexity Adjustment for a Signal Encoder
US8005671B2 (en) * 2006-12-04 2011-08-23 Qualcomm Incorporated Systems and methods for dynamic normalization to reduce loss in precision for low-level signals
CN100483509C (zh) * 2006-12-05 2009-04-29 华为技术有限公司 声音信号分类方法和装置
US9653088B2 (en) * 2007-06-13 2017-05-16 Qualcomm Incorporated Systems, methods, and apparatus for signal encoding using pitch-regularizing and non-pitch-regularizing coding
US20100006527A1 (en) * 2008-07-10 2010-01-14 Interstate Container Reading Llc Collapsible merchandising display
US9232055B2 (en) * 2008-12-23 2016-01-05 Avaya Inc. SIP presence based notifications
GB2466672B (en) * 2009-01-06 2013-03-13 Skype Speech coding
GB2466674B (en) * 2009-01-06 2013-11-13 Skype Speech coding
GB2466673B (en) 2009-01-06 2012-11-07 Skype Quantization
GB2466669B (en) * 2009-01-06 2013-03-06 Skype Speech coding
GB2466675B (en) 2009-01-06 2013-03-06 Skype Speech coding
GB2466671B (en) * 2009-01-06 2013-03-27 Skype Speech encoding
GB2466670B (en) * 2009-01-06 2012-11-14 Skype Speech encoding
KR20110001130A (ko) * 2009-06-29 2011-01-06 삼성전자주식회사 가중 선형 예측 변환을 이용한 오디오 신호 부호화 및 복호화 장치 및 그 방법
US8452606B2 (en) * 2009-09-29 2013-05-28 Skype Speech encoding using multiple bit rates
CN102687199B (zh) 2010-01-08 2015-11-25 日本电信电话株式会社 编码方法、解码方法、编码装置、解码装置
FR2961937A1 (fr) * 2010-06-29 2011-12-30 France Telecom Codage/decodage predictif lineaire adaptatif
HUE037111T2 (hu) * 2011-03-10 2018-08-28 Ericsson Telefon Ab L M Nem-kódolt al-vektorok kitöltése transzformációsan kódolt audio jelekben
EP2830062B1 (en) * 2012-03-21 2019-11-20 Samsung Electronics Co., Ltd. Method and apparatus for high-frequency encoding/decoding for bandwidth extension
US9842598B2 (en) * 2013-02-21 2017-12-12 Qualcomm Incorporated Systems and methods for mitigating potential frame instability
AU2014283389B2 (en) 2013-06-21 2017-10-05 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for improved concealment of the adaptive codebook in ACELP-like concealment employing improved pulse resynchronization
KR102120073B1 (ko) * 2013-06-21 2020-06-08 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 개선된 피치 래그 추정을 사용하여 acelpp-형 은폐 내에서 적응적 코드북의 개선된 은폐를 위한 장치 및 방법
ES2941782T3 (es) * 2013-12-19 2023-05-25 Ericsson Telefon Ab L M Estimación de ruido de fondo en señales de audio
TWI688609B (zh) 2014-11-13 2020-03-21 美商道康寧公司 含硫聚有機矽氧烷組成物及相關態樣

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62150399A (ja) * 1985-12-25 1987-07-04 日本電気株式会社 音声合成用基本周期波形生成法
JP2650355B2 (ja) * 1988-09-21 1997-09-03 三菱電機株式会社 音声分析合成装置
JPH02160300A (ja) * 1988-12-13 1990-06-20 Nec Corp 音声符号化方式
US5884253A (en) 1992-04-09 1999-03-16 Lucent Technologies, Inc. Prototype waveform speech coding with interpolation of pitch, pitch-period waveforms, and synthesis filter
US5734789A (en) * 1992-06-01 1998-03-31 Hughes Electronics Voiced, unvoiced or noise modes in a CELP vocoder
JPH06266395A (ja) * 1993-03-10 1994-09-22 Mitsubishi Electric Corp 音声符号化装置および音声復号化装置
JPH07177031A (ja) * 1993-12-20 1995-07-14 Fujitsu Ltd 音声符号化制御方式
US5517595A (en) 1994-02-08 1996-05-14 At&T Corp. Decomposition in noise and periodic signal waveforms in waveform interpolation
US5809459A (en) 1996-05-21 1998-09-15 Motorola, Inc. Method and apparatus for speech excitation waveform coding using multiple error waveforms
JP3531780B2 (ja) * 1996-11-15 2004-05-31 日本電信電話株式会社 音声符号化方法および復号化方法
JP3296411B2 (ja) * 1997-02-21 2002-07-02 日本電信電話株式会社 音声符号化方法および復号化方法
US5903866A (en) 1997-03-10 1999-05-11 Lucent Technologies Inc. Waveform interpolation speech coding using splines
WO1999010719A1 (en) * 1997-08-29 1999-03-04 The Regents Of The University Of California Method and apparatus for hybrid coding of speech at 4kbps
US6092039A (en) * 1997-10-31 2000-07-18 International Business Machines Corporation Symbiotic automatic speech recognition and vocoder
JP3268750B2 (ja) * 1998-01-30 2002-03-25 株式会社東芝 音声合成方法及びシステム
US6260017B1 (en) * 1999-05-07 2001-07-10 Qualcomm Inc. Multipulse interpolative coding of transition speech frames
US6330532B1 (en) * 1999-07-19 2001-12-11 Qualcomm Incorporated Method and apparatus for maintaining a target bit rate in a speech coder
US6324505B1 (en) * 1999-07-19 2001-11-27 Qualcomm Incorporated Amplitude quantization scheme for low-bit-rate speech coders

Also Published As

Publication number Publication date
CN1331825A (zh) 2002-01-16
CN1242380C (zh) 2006-02-15
DE69928288D1 (de) 2005-12-15
KR100615113B1 (ko) 2006-08-23
EP1145228A1 (en) 2001-10-17
HK1040806A1 (en) 2002-06-21
HK1040806B (zh) 2006-10-06
EP1145228B1 (en) 2005-11-09
WO2000038177A1 (en) 2000-06-29
KR20010093208A (ko) 2001-10-27
US6456964B2 (en) 2002-09-24
ATE309601T1 (de) 2005-11-15
JP2003522965A (ja) 2003-07-29
US20020016711A1 (en) 2002-02-07
DE69928288T2 (de) 2006-08-10
AU2377600A (en) 2000-07-12
JP4824167B2 (ja) 2011-11-30

Similar Documents

Publication Publication Date Title
ES2257098T3 (es) Codificacion periodica de vocales.
ES2321147T3 (es) Codificacion de habla de tasa de transmision variable.
ES2250197T3 (es) Codificador de voz armonico-lpc con estructura de supertrama.
US8595002B2 (en) Half-rate vocoder
ES2266003T3 (es) Suavizador de la ganancia en un descodificador de señal de habla y audio de banda ancha.
ES2625895T3 (es) Método y dispositivo para la ocultación eficiente del borrado de tramas en códecs de voz basados en la predicción lineal
JP4064236B2 (ja) 広帯域信号コーディング用の代数コードブック中のパルス位置と符号の索引付け方法
ES2302754T3 (es) Procedimiento y aparato para codificacion de habla sorda.
EP2038883B1 (en) Vocoder and associated method that transcodes between mixed excitation linear prediction (melp) vocoders with different speech frame rates
US6081776A (en) Speech coding system and method including adaptive finite impulse response filter
ES2145737T5 (es) Codificador digital de voz con predictor a largo plazo mejorado por resolucion de submuestreos.
ES2256022T3 (es) Metodos y aparators para submuestreo de la informacion.