Índice de inteligibilidad del habla
Normas aplicables: ANSI S3.5Referencias: French y Steinberg 1947
El índice de inteligibilidad del habla predice cuánto de una señal de habla
es audible, y por tanto inteligible, para un oyente en una condición dada de
ruido y audición. Reduce un espectro de habla, un espectro de ruido y un umbral
auditivo a un único número en [0, 1]: 0 cuando nada útil alcanza al oyente,
1 cuando todo el espectro portador del habla es audible. Esta página cubre el
método por bandas de tercio de octava de ANSI S3.5-1997 (R2017): 18
bandas de 160 Hz a 8000 Hz.
1. Entradas y la función de importancia de banda
Sección titulada «1. Entradas y la función de importancia de banda»Las tres entradas son niveles espectrales equivalentes (ANSI S3.5-1997, cláusulas 3.11 y 3.55) muestreados en los 18 centros de banda de tercio de octava: el nivel espectral del habla , el nivel espectral del ruido (ambos en dB SPL) y el umbral de audición (en dB HL). Cada banda contribuye a la inteligibilidad en proporción a su función de importancia de banda (ANSI S3.5-1997 Tabla 3, material de habla promedio), que suma uno sobre las 18 bandas.
from phonometry import hearing
# El espectro de habla estándar de esfuerzo normal (Tabla 3) en silencio, audición normal.result = hearing.speech_intelligibility_index("normal")print(round(result.sii, 3)) # 0.996 (casi todo audible)print(round(hearing.sii.BAND_IMPORTANCE.sum(), 6)) # 1.0
result.plot() # audibilidad por banda y su contribución ponderada (necesita matplotlib)Sin ruido y con un umbral de audición normal, el espectro de habla estándar es casi totalmente audible, por lo que el índice se acerca a uno; el pequeño déficit es la propia automáscara del habla del oyente.
La función de importancia es donde vive el conocimiento perceptivo de la
norma. Desciende de los experimentos de articulación que sustentan el índice de
articulación de French y Steinberg: los oyentes puntuaban sílabas sin sentido
oídas a través de filtros que eliminaban una parte del espectro cada vez, y la
caída de acierto mide cuánta inteligibilidad transporta cada banda. El
resultado es llamativamente desigual, y ajeno a dónde está la energía del
habla: las cinco bandas de 1250 Hz a 3150 Hz transportan en torno al 43 % de
la inteligibilidad (ahí viven las pistas de punto y modo de articulación de
las consonantes), mientras que las cinco bandas más bajas, de 160 Hz a 400 Hz,
transportan en torno al 11 % aunque contienen casi la mitad de la potencia
del habla. El Ii de la Tabla 3 es el compromiso para habla promedio; el
Anexo B de la norma tabula funciones de importancia alternativas para
materiales de ensayo concretos (sílabas sin sentido, listas de palabras
monosílabas, pasajes cortos), que desplazan el peso según la redundancia del
material.
2. Enmascaramiento y la función de audibilidad de banda
Sección titulada «2. Enmascaramiento y la función de audibilidad de banda»El procedimiento (ANSI S3.5-1997, cláusula 5) convierte las entradas en una audibilidad por banda. El habla se enmascara a sí misma hacia abajo desde cada banda (); el mayor entre eso y el ruido externo, , se propaga hacia arriba en frecuencia con una pendiente dependiente del nivel para dar el nivel espectral de enmascaramiento equivalente (cláusula 5.4):
El enmascaramiento se combina con el ruido interno equivalente (, el ruido interno de referencia desplazado por la pérdida auditiva) en la perturbación equivalente (cláusula 5.6), y la función de audibilidad de banda es la razón habla-perturbación escalada a (cláusula 5.8):
A niveles de habla muy por encima del esfuerzo normal, un factor de distorsión de nivel de la cláusula 5.7 (la unidad para los espectros estándar usados en esta página) reduce aún más ; phonometry lo aplica automáticamente.
3. El índice en ruido
Sección titulada «3. El índice en ruido»El índice de inteligibilidad del habla es la suma de las audibilidades de banda ponderada por la importancia de banda (ANSI S3.5-1997, cláusula 6):
import numpy as npfrom phonometry import hearing
speech = hearing.standard_speech_spectrum("normal")# Un ruido de enmascaramiento de banda ancha descendente (espectro tipo oficina/ventilación).noise = np.array([38.0, 37.0, 36.0, 34.0, 32.0, 30.0, 28.0, 26.0, 24.0, 22.0, 20.0, 18.0, 16.0, 14.0, 12.0, 10.0, 8.0, 6.0])
result = hearing.speech_intelligibility_index(speech, noise)print(round(result.sii, 2)) # 0.46print(result.band_audibility.round(2)) # Ai por banda
result.plot() # la figura de abajo: Ai y la contribución ponderada por bandaVer el código de esta figura
import numpy as npimport matplotlib.pyplot as pltfrom phonometry import hearing
speech = hearing.standard_speech_spectrum("normal")noise = np.array([38.0, 37.0, 36.0, 34.0, 32.0, 30.0, 28.0, 26.0, 24.0, 22.0, 20.0, 18.0, 16.0, 14.0, 12.0, 10.0, 8.0, 6.0])result = hearing.speech_intelligibility_index(speech, noise)
# En una línea:result.plot(language="es")plt.show()
# A mano, replicando lo que dibuja SIIResult.plot():pos = np.arange(result.frequencies.size)weighted = result.band_audibility * result.band_importancefig, ax = plt.subplots()ax.bar(pos, result.band_audibility, color="#c6dbef", label=r"Audibilidad de banda $A_i$")ax.bar(pos, weighted / weighted.max(), width=0.5, color="#1f77b4", label=r"Ponderada por importancia $I_i A_i$ (escalada)")ax.set_xticks(pos)ax.set_xticklabels([f"{f:g}" for f in result.frequencies], rotation=45, ha="right")ax.set_xlabel("Banda de tercio de octava [Hz]")ax.set_ylabel("Audibilidad de banda")ax.set_title(f"SII = {result.sii:.2f}")ax.legend()plt.show()Un umbral de audición elevado (threshold=) sube el ruido interno equivalente y
reduce el índice, igual que lo hace añadir ruido de enmascaramiento. El
SIIResult también lleva el enmascaramiento por banda , la perturbación
, la audibilidad y la importancia , y su .plot() dibuja la
figura de arriba.
Los mismos habla y ruido escuchados por una persona con pérdida auditiva en agudos muestran lo que eso cuesta, banda a banda:
Ver el código de esta figura
import numpy as npimport matplotlib.pyplot as pltfrom phonometry import hearing
# Los mismos habla y ruido de oficina de arriba, escuchados a través de una# pérdida descendente en agudos (umbrales en las 18 frecuencias centrales).speech = hearing.standard_speech_spectrum("normal")noise = np.array([38.0, 37.0, 36.0, 34.0, 32.0, 30.0, 28.0, 26.0, 24.0, 22.0, 20.0, 18.0, 16.0, 14.0, 12.0, 10.0, 8.0, 6.0])threshold = np.array([5.0, 5.0, 5.0, 5.0, 8.0, 10.0, 12.0, 15.0, 18.0, 22.0, 28.0, 35.0, 42.0, 48.0, 55.0, 60.0, 65.0, 70.0])res = hearing.speech_intelligibility_index(speech, noise, threshold=threshold)print(round(res.sii, 3)) # 0.358 (0.458 con audición normal)
# En una línea: las mismas barras de audibilidad, ahora limitadas por el umbral.res.plot(language="es")plt.show()La pérdida elimina las bandas que llevan las claves consonánticas, y por eso el índice baja una quinta parte sin que el nivel del habla haya cambiado. Este es el uso práctico del SII en audiología y en control de ruido de espacios ocupados: un índice objetivo se puede alcanzar bajando el ruido o devolviendo audibilidad (amplificando), y el perfil por bandas dice en qué bandas hay que poner el esfuerzo. Los umbrales por edad de ISO 7029 son una entrada poblacional cómoda, véase la guía del umbral de audición.
4. Esfuerzo vocal
Sección titulada «4. Esfuerzo vocal»Los hablantes elevan la voz en ruido, y la norma da cuatro espectros de voz estándar para los esfuerzos vocales normal, elevada, fuerte y grito (ANSI S3.5-1997, Tabla 3). Al pasar el nombre del esfuerzo se selecciona el espectro correspondiente; hablar más fuerte sube todo el espectro y, en un ruido fijo, aumenta el índice.
import numpy as npfrom phonometry import hearing
# El mismo ruido de banda ancha, cuatro esfuerzos vocales.noise = np.array([48.0, 47.0, 46.0, 44.0, 42.0, 40.0, 38.0, 36.0, 34.0, 32.0, 30.0, 28.0, 26.0, 24.0, 22.0, 20.0, 18.0, 16.0])for effort in hearing.sii.VOCAL_EFFORTS: print(effort, round(hearing.speech_intelligibility_index(effort, noise).sii, 2))# normal 0.12 | raised 0.36 | loud 0.59 | shout 0.79
print(hearing.standard_speech_spectrum("loud")[8]) # 42.16 dB SPL a 1 kHzLos cuatro espectros también están disponibles como un único resultado
representable: standard_speech_spectra() devuelve un StandardSpeechSpectrum
que lleva las frecuencias centrales de banda y los niveles de banda por
esfuerzo, y su .plot() los dibuja como una familia etiquetada sobre el eje de
bandas de tercio de octava.
Mostrar el código de esta figura
import numpy as npimport matplotlib.pyplot as pltfrom phonometry import hearing
# Una línea: toda la familia de la Tabla 3 de ANSI S3.5-1997.hearing.standard_speech_spectra().plot(language="es")plt.show()
# A mano, reproduciendo lo que dibuja StandardSpeechSpectrum.plot():res = hearing.standard_speech_spectra()pos = np.arange(res.frequencies.size)fig, ax = plt.subplots()for effort, levels in zip(res.vocal_efforts, res.levels): ax.plot(pos, levels, "o-", label=effort.capitalize())ax.set_xticks(pos)ax.set_xticklabels([f"{f:g}" for f in res.frequencies], rotation=45, ha="right")ax.set_xlabel("Banda de tercio de octava [Hz]")ax.set_ylabel("Nivel espectral del habla [dB SPL]")ax.legend()plt.show()Los mismos cuatro espectros alimentan el índice: en un ruido de banda ancha fijo, cada esfuerzo vocal mayor sube el espectro de voz y aumenta el SII.
Mostrar el código de esta figura
import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.ticker import NullFormatterfrom phonometry import hearing
# Los cuatro espectros de la Tabla 3 de ANSI S3.5-1997 y el ruido fijo de arriba.noise = np.array([48.0, 47.0, 46.0, 44.0, 42.0, 40.0, 38.0, 36.0, 34.0, 32.0, 30.0, 28.0, 26.0, 24.0, 22.0, 20.0, 18.0, 16.0])efforts = hearing.sii.VOCAL_EFFORTS # ("normal", "raised", "loud", "shout")freqs = hearing.sii.BAND_CENTERS # los 18 centros de banda de tercio de octavanombres = {"normal": "Normal", "raised": "Elevada", "loud": "Fuerte", "shout": "Grito"}
fig, (ax_s, ax_i) = plt.subplots(1, 2, figsize=(12, 5))
# Izquierda: cada esfuerzo vocal mayor sube todo el espectro de voz.for effort in efforts: ax_s.plot(freqs, hearing.standard_speech_spectrum(effort), "o-", label=nombres[effort])ax_s.set_xscale("log")ax_s.set_xticks(list(freqs))ax_s.set_xticklabels([f"{f:g}" for f in freqs], rotation=45, ha="right")ax_s.xaxis.set_minor_formatter(NullFormatter())ax_s.set_xlabel("Banda de tercio de octava [Hz]")ax_s.set_ylabel("Nivel espectral del habla [dB SPL]")ax_s.legend()
# Derecha: el SII que alcanza cada espectro en el ruido fijo.sii = [hearing.speech_intelligibility_index(e, noise).sii for e in efforts]pos = np.arange(len(efforts))ax_i.bar(pos, sii)ax_i.set_xticks(pos)ax_i.set_xticklabels([nombres[e] for e in efforts])ax_i.set_ylim(0.0, 1.0)ax_i.set_ylabel("Índice de inteligibilidad del habla")plt.show()Los nombres de esfuerzo vocal funcionan en cualquier sitio donde se espere un
espectro de voz, incluido como primer argumento de
speech_intelligibility_index.
5. ¿SII o STI?
Sección titulada «5. ¿SII o STI?»Las dos métricas del habla responden preguntas distintas a partir de mediciones distintas, y cada una es ciega a lo que la otra captura:
| SII (ANSI S3.5) | STI (IEC 60268-16) | |
|---|---|---|
| Pregunta que responde | ¿Es audible suficiente espectro del habla en el oído de quien escucha? | ¿Cuánta de la envolvente del habla conserva el canal de transmisión? |
| Entradas | Espectros de habla, ruido y umbral de audición (18 niveles espectrales equivalentes de tercio de octava) | Una respuesta al impulso (indirecto) o una grabación STIPA a través del canal (directo) |
| Maquinaria de bandas | Ponderación por importancia de banda Ii aplicada a la audibilidad de banda Ai | Función de transferencia de modulación m(F) por banda de octava, convertida en una SNR efectiva |
| Captura | Ruido estacionario, propagación ascendente del enmascaramiento, pérdida auditiva, esfuerzo vocal, distorsión de nivel | Reverberación, ecos, ruido y (medido en directo) procesado no lineal |
| Ciega a | La reverberación y cualquier emborronamiento temporal: un canal totalmente audible pero irremediablemente reverberante sigue puntuando alto | El estado auditivo individual: los oyentes con pérdida auditiva requieren correcciones específicas |
| Uso típico | Audiología, audífonos y protectores, objetivos de control de ruido en una posición de escucha | Sistemas de megafonía, interfonos y salas: calificar un canal de transmisión de extremo a extremo |
El mismo espacio puede aprobar una y suspender la otra. Un atrio silencioso y
muy reverberante es un SII cercano a 1 con un STI pobre; una oficina seca
inundada de ruido de ventilación puede dar un STI aceptable desde su respuesta
al impulso mientras el SII (y el STI consciente del ruido, vía snr= o
level=) revela que poco del espectro del habla supera el ruido. Cuando ambos
mecanismos están en juego, calcula ambos; las entradas son baratas una vez
medidas la sala y el ruido. Consulta la
guía del índice de transmisión del habla
para el lado del STI.
6. Informe ANSI S3.5-1997 (.report())
Sección titulada «6. Informe ANSI S3.5-1997 (.report())»SIIResult.report(path) genera una ficha PDF de una página dispuesta como un
informe de audibilidad del habla: una línea de norma base, un bloque de
metadatos opcional, una tabla por bandas de tercio de octava del espectro del
habla equivalente , la función de importancia de banda de la Tabla 3
y la función de audibilidad de banda junto a las barras de audibilidad y
de aportación ponderada por importancia (el .plot() del propio resultado), el
número único enmarcado SII = X, una fila de veredicto opcional y un pie con el
descargo fijo. Usa el mismo contenedor ReportMetadata y el mismo motor que la
ficha de aislamiento de ISO 717;
un requirement indicado se interpreta como el SII mínimo exigido (un SII mayor
cumple). verbose=True añade la columna del nivel de espectro de perturbación
equivalente . La generación necesita reportlab
(pip install phonometry[report]); solo se admite engine="reportlab". Pasa
language="es" para la ficha en español.
from phonometry import hearing, ReportMetadata
res = hearing.speech_intelligibility_index(speech, noise, threshold=threshold)res.report( "sii_fiche.pdf", metadata=ReportMetadata( specimen="Habla conversacional en ruido ambiente de baja frecuencia", measurement_standard="ANSI S3.5-1997", laboratory="Laboratorio de referencia Phonometry", requirement=0.75, # SII mínimo exigido (un SII mayor cumple) ), language="es",)La ficha de ejemplo se regenera con make reports y se mantiene renderizada en
el repositorio; pulsa la vista previa para abrir el PDF.

Ficha de índice de inteligibilidad del habla de una página: cabecera de metadatos, tabla por bandas de tercio de octava del espectro del habla equivalente, la importancia de banda y la audibilidad de banda, las barras de audibilidad, el número único enmarcado SII = 0,851 y un veredicto CUMPLE frente a un mínimo de 0,75.
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto. El método por bandas de tercio de octava de ANSI S3.5-1997
(R2017) (18 bandas, 160 Hz a 8000 Hz): los niveles espectrales equivalentes de
habla, ruido y umbral de audición, la función de importancia de banda de la
Tabla 3 y los espectros de voz estándar por esfuerzo vocal, la automáscara del
habla, la propagación ascendente de la máscara, el factor de distorsión de
nivel y la función de audibilidad de banda de la cláusula 5, y el índice de la
cláusula 6. speech_intelligibility_index, standard_speech_spectrum y
standard_speech_spectra implementan esto, y SIIResult.report(path) genera
la ficha de ANSI S3.5-1997.
No cubierto. El título de la norma está en plural (“Methods for the Calculation of the Speech Intelligibility Index”): phonometry implementa solo el procedimiento por bandas de tercio de octava, no los demás métodos de resolución de banda de la norma. La función de importancia de banda usada es siempre el compromiso de habla promedio de la Tabla 3; las funciones de importancia alternativas del Anexo B para materiales de ensayo concretos (sílabas sin sentido, listas de palabras monosílabas, pasajes cortos) no están implementadas. El índice de transmisión del habla, una métrica distinta para un canal de transmisión en vez de la audibilidad de quien escucha, se cubre aparte en la guía del índice de transmisión del habla.
Véase también
Sección titulada «Véase también»- Índice de transmisión del habla: el índice de transmisión STI/STIPA que el SII complementa.
- Sonoridad y Métricas de calidad sonora: la sonoridad, el sharpness y las métricas de percepción de lo que oye quien escucha.
- Bancos de filtros: las bandas de tercio de octava sobre las que se evalúa el SII.
- Niveles: los niveles espectrales y de banda que sustentan las entradas de nivel espectral equivalente.
- Referencia de la API:
hearing.sii.
Respuestas rápidas
Sección titulada «Respuestas rápidas»¿Qué bandas de frecuencia importan más para la inteligibilidad del habla?
Sección titulada «¿Qué bandas de frecuencia importan más para la inteligibilidad del habla?»En el método por bandas de tercio de octava de ANSI S3.5-1997, la función de importancia de banda (Tabla 3, material de habla promedio) suma uno sobre las 18 bandas de 160 Hz a 8000 Hz. Las cinco bandas de 1250 Hz a 3150 Hz transportan en torno al 43 % de la inteligibilidad (las claves consonánticas), mientras que las cinco bandas más bajas, de 160 Hz a 400 Hz, transportan en torno al 11 % aunque contienen casi la mitad de la potencia del habla.
¿Cómo se calcula el índice de inteligibilidad del habla?
Sección titulada «¿Cómo se calcula el índice de inteligibilidad del habla?»El SII de la cláusula 6 de ANSI S3.5-1997 es la suma de las audibilidades de banda ponderada por la importancia de banda, , sobre las 18 bandas de tercio de octava. Cada audibilidad de banda es (cláusula 5.8), donde es el nivel espectral del habla equivalente y la perturbación equivalente, que combina el ruido externo, la propagación ascendente del enmascaramiento y el ruido interno equivalente. El índice queda en .
¿Cuándo debo usar el SII en vez del STI?
Sección titulada «¿Cuándo debo usar el SII en vez del STI?»Usa el SII (ANSI S3.5) cuando la pregunta es si suficiente espectro del habla es audible en el oído de quien escucha: captura el ruido estacionario, la propagación ascendente del enmascaramiento, la pérdida auditiva y el esfuerzo vocal, pero es ciego a la reverberación. El STI (IEC 60268-16) califica un canal de transmisión, cuánta de la modulación del habla conserva una sala o un sistema de sonido. Cuando ambos mecanismos están en juego, calcula ambos.
Referencias
Sección titulada «Referencias»- American National Standards Institute. (1997). American National Standard Methods for the Calculation of the Speech Intelligibility Index (ANSI S3.5-1997 (R2017)). Acoustical Society of America. El método por bandas de tercio de octava (18 bandas): la función de importancia de banda (Tabla 3), el nivel espectral del habla estándar y el ruido interno de referencia (Tabla 3), el procedimiento de enmascaramiento, perturbación y audibilidad de banda (cláusula 5) y el índice (cláusula 6).
- French, N. R. y Steinberg, J. C. (1947). Factors governing the intelligibility of speech sounds. The Journal of the Acoustical Society of America, 19(1), 90-119. https://doi.org/10.1121/1.1916407Los experimentos por bandas de articulación de los que desciende la función de importancia de banda de la sección 1.