Hoy les traigo este artículo técnico en el que les comparto una implementación en Python del Índice de Hammarberg [1].

El Índice de Hammarberg es una medida espectral de la calidad de la voz y tiene relevancia como característica del habla en una variedad de aplicaciones y publicaciones científicas. El índice de Hammarberg está relacionado con el esfuerzo vocal reflejado en la información espectral. Se puede utilizar en la discriminación de emociones como se mostró en el trabajo presentado en [3]. Además, en [4] se utilizó como una característica del habla junto con otras medidas de calidad de la voz para distinguir a las personas con deterioro cognitivo leve.

El índice de Hammarberg se define como la diferencia de intensidad entre la intensidad máxima en la banda de  baja frecuencia [0–2000 Hz] versus la banda de frecuencia más alta [2000–5000 Hz] [2]. Esta medida debe calcularse en dB sobre la Densidad Espectral de Potencia (PSD) de una señal de voz completa.

En el artículo original [2] se utilizó el espectro medio a largo plazo (LTAS) para calcular el índice de Hammarberg. Sin embargo, en la implementación provista [https://github.com/Dacapi91/Hammarberg-Index], se utilizó el Método Welch para la estimación de la PSD debido a sus técnicas de promediado de espectro, superposición de segmentos y ventanas.

Tabla de contenidos

Detalles de implementación de Hammarberg en Python

  1. Para calcular el método de Welch se utilizó la implementación de scipy.signal.welch. Los parámetros usados fueron: una ventana de Hann con una longitud de segmento de 2048 muestras y una superposición de la mitad de la longitud del segmento. Es importante fijar el valor de la longitud del segmento debido a que el índice Hammarberg es sensible a sus variaciones.
  2. La señal debe tener una duración superior a 5 segundos. Sin embargo, se sugiere que sea más grande (una señal de voz que lee algunas oraciones) según los datos de los experimentos en [1]
  3. La señal de voz no debe contener componentes de ruido relevantes. Se asume una señal de voz limpia o una etapa de preprocesamiento que atenúa el ruido antes del cálculo del Índice de Hammarberg. De lo contrario, los componentes de frecuencia de ruido de alta potencia enmascararán las frecuencias relevantes involucradas en el cálculo del índice.
  4. La señal de voz debe muestrearse al menos a 12 KHz (se sugiere 16 KHz). Esto está implícito ya que es necesario calcular correctamente un componente máximo de 5 KHz y, debido al teorema de Nyquist, debe ser un poco más largo que el doble.
  5. La señal debe tener formato .wav según el código implementado. Sugeriría tener en cuenta el formato de los archivos de audio de voz y usar archivos de compresión sin pérdida.

Referencias

[1] HAMMARBERG, Britta, et al. Perceptual and acoustic correlates of abnormal voice qualities. Acta oto-laryngologica, 1980, vol. 90, no 1–6, p. 441–451.

[2] SCHMIDT, Juliane; JANSE, Esther; SCHARENBORG, Odette. Perception of emotion in conversational speech by younger and older listeners. Frontiers in psychology, 2016, vol. 7, p. 781.

[3] TAMARIT, Lucas; GOUDBEEK, Martijn; SCHERER, Klaus. Spectral slope measurements in emotionally expressive speech. Proceedings of Speech Analysis and Processing for Knowledge Discovery, 2008, p. 169–183.

[4] THEMISTOCLEOUS, Charalambos; ECKERSTRÖM, Marie; KOKKINAKIS, Dimitrios. Voice quality and speech fluency distinguish individuals with Mild Cognitive Impairment from Healthy Controls. Plos one, 2020, vol. 15, no 7, p. e0236009.

Por David Castro

Soy un ingeniero en búsqueda personal de cómo aplicar la tecnología en áreas necesarias de la vida humana. Tengo experiencia en el procesamiento de imágenes y señales con un par de resultados de investigación publicados. Principalmente he disfrutado enseñando y colaborando en proyectos de investigación con una clara orientación y objetivo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *