Ir al contenido

Electroacústica: distorsión y respuesta en frecuencia

Normas aplicables: IEC 60268AES17Recomendación UIT-R BS.468IEC 60263Referencias: Beranek y Mellow 2012Bendat y Piersol 2010

Dos pilares de la caracterización de equipos de audio, a partir de una señal capturada: cuánto distorsiona un amplificador o un transductor un tono de prueba, y qué respuesta en frecuencia revela una medición de entrada/salida. Esta página cubre el conjunto de distorsión de la IEC 60268-3: distorsión armónica total y de orden n, THD+N y SINAD a través del ancho de banda de medición AES17, la intermodulación por órdenes de modulación y por frecuencia diferencia, la intermodulación dinámica (DIM) y la THD ponderada ITU-R 468, y los estimadores de respuesta en frecuencia H1/H2 de Bendat y Piersol con la coherencia ordinaria γ². Toda magnitud tiene un oráculo analítico exacto (señales sintéticas con amplitudes armónicas y de intermodulación conocidas, un oráculo de Fourier de seno recortado, una síntesis completa de la señal de ensayo DIM y un camino LTI conocido), así que los valores son verificables y no ajustados. Las secciones finales cubren las convenciones de sensibilidad de IEC 60268-4 (micrófonos) e IEC 60268-5 (altavoces), donde fallan la mayoría de las comparaciones entre hojas de datos, el modelo de radiación del pistón con pantalla que hay detrás de la directividad de los altavoces, y los informes de características nominales de altavoz (IEC 60268-5) y micrófono (IEC 60268-4) que componen las hojas de datos de las normas a partir de una respuesta medida.

1. Distorsión armónica (IEC 60268-3 14.12.2–5)

Sección titulada «1. Distorsión armónica (IEC 60268-3 14.12.2–5)»

Un dispositivo no lineal alimentado con un seno puro en f₁ devuelve el fundamental más armónicos en 2f₁, 3f₁, …. La distorsión armónica total combina las amplitudes armónicas aₙ, ya sea respecto al fundamental (kind='F') o respecto al RMS total (kind='R'):

dₙ es la distorsión armónica de orden n (el armónico n respecto al total). Los tonos deben caer en las líneas de la FFT: usa muestreo coherente (un número entero de periodos) o una ventana de baja fuga para leer las amplitudes sin fuga espectral.

Espectro de magnitud de un ensayo con tono único de 1 kHz en dB respecto al fundamental, con los cinco primeros armónicos marcados sobre un suelo de ruido de banda ancha, anotado con THD (F), THD (R), THD+N y SINADEspectro de magnitud de un ensayo con tono único de 1 kHz en dB respecto al fundamental, con los cinco primeros armónicos marcados sobre un suelo de ruido de banda ancha, anotado con THD (F), THD (R), THD+N y SINAD
from phonometry import electroacoustics
thd_f = electroacoustics.thd(signal, fs, 1000.0, kind="F") # respecto al fundamental
thd_r = electroacoustics.thd(signal, fs, 1000.0, kind="R") # respecto al RMS total
d2 = electroacoustics.harmonic_distortion(signal, fs, 1000.0, 2) # armónico de 2º orden

harmonic_analysis agrupa el fundamental, las amplitudes armónicas y la THD (ambas convenciones), THD+N y SINAD en un único resultado representable:

from phonometry import electroacoustics
res = electroacoustics.harmonic_analysis(signal, fs, 1000.0)
print(res.thd_f, res.thd_r, res.thd_plus_noise, res.sinad_db)
res.plot() # espectro armónico anotado (necesita matplotlib)
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import electroacoustics
fs = 48000
n = fs # 1 s -> líneas de 1 Hz; los armónicos caen en líneas
t = np.arange(n) / fs
f0 = 1000.0
amps = {1: 1.0, 2: 0.02, 3: 0.012, 4: 0.006, 5: 0.003}
sig = sum(a * np.sin(2 * np.pi * k * f0 * t) for k, a in amps.items())
sig = sig + np.random.default_rng(2026).standard_normal(n) * 1.2e-2
res = electroacoustics.harmonic_analysis(sig, fs, f0, n_harmonics=len(amps))
res.plot(language="es")
plt.show()

Mientras que la THD cuenta solo los armónicos, la THD+N compara todo salvo el fundamental (armónicos y ruido) con la señal total. AES17 elimina el fundamental con un filtro de muesca normalizado (1,2 ≤ Q ≤ 3, validado sobre la respuesta aplicada de fase cero según la cláusula 5.2.8) y toma la razón entre el residuo y el RMS total; el SINAD es su recíproco en dB:

Ambas tensiones se miden a través del ancho de banda de medición AES17 (un paso alto de 20 Hz más el paso bajo normalizado en 20 kHz, cláusulas 5.2.5 y 6.3.1) de modo que un offset de continua o el ruido ultrasónico a frecuencias de muestreo altas no cuentan como “ruido”. El borde de banda es configurable, y bandwidth=None desactiva la cadena y mide toda la banda de Nyquist.

from phonometry import electroacoustics
ratio = electroacoustics.thd_plus_noise(signal, fs, 1000.0) # razón (0..)
db = electroacoustics.thd_plus_noise(signal, fs, 1000.0, as_db=True) # 20·lg(razón) dB
sinad_db = electroacoustics.sinad(signal, fs, 1000.0) # = -db
wide = electroacoustics.thd_plus_noise(signal, fs, 1000.0, bandwidth=None) # Nyquist completa

Como la THD+N incluye el suelo de ruido en banda, es igual o mayor que la THD de solo armónicos; el SINAD es el correspondiente margen señal-a-ruido-y-distorsión en dB (una magnitud derivada de la THD+N de AES17; la propia AES17 no define el SINAD). La muesca descarta internamente un transitorio de arranque/parada, así que la medición requiere una captura estacionaria y suficientemente larga.

weighted_thd pondera en frecuencia el residuo tras la muesca antes de tomar la razón, de modo que se tiene en cuenta el énfasis perceptual de los productos de distorsión. La ponderación por defecto es la red que exige la cláusula: la curva del Apéndice A de la IEC 60268-1, es decir la ITU-R BS.468-4, con su pico de +12,2 dB cerca de 6,3 kHz (expuesta como itu_r_468_weighting); 'A' y 'C' se mantienen como opciones etiquetadas. Según la cláusula, la medición ponderada solo es válida para frecuencias fundamentales entre 31,5 Hz y 400 Hz:

from phonometry import electroacoustics
print(electroacoustics.weighted_thd(signal, fs, 100.0)) # red ITU-R 468
print(electroacoustics.weighted_thd(signal, fs, 100.0, weighting="A")) # variante ponderada A
print(electroacoustics.itu_r_468_weighting([6300.0])) # [+12.2] dB

2.2 Rango dinámico y ruido de canal en reposo (AES17-2015 6.4)

Sección titulada «2.2 Rango dinámico y ruido de canal en reposo (AES17-2015 6.4)»

Las dos cifras de catálogo de cualquier conversor comparten la ponderación AES17 CCIR-RMS (5.2.7): la curva ITU-R BS.468-4 desplazada un valor plano de -5,63 dB para que sea unidad a 2 kHz. El rango dinámico (6.4.1) excita el dispositivo con un seno de 997 Hz 60 dB por debajo de plena escala, elimina la fundamental con la muesca normalizada (5.2.8) y pondera el residuo de ruido-más-distorsión, y luego informa de la razón del seno de plena escala a ese residuo ponderado (también conocida como relación señal-ruido). El ruido de canal en reposo (6.4.2) es el mismo nivel ponderado medido con el dispositivo excitado por cero digital, referido a plena escala:

from phonometry import electroacoustics
# Rango dinámico: captura la salida del ensayo de 997 Hz a -60 dBFS, escalada
# de modo que 1.0 sea plena escala digital.
dr = electroacoustics.dynamic_range(output, fs, 997.0) # dB CCIR-RMS
# Ruido de canal en reposo: captura la salida con entrada de cero digital.
idle = electroacoustics.idle_channel_noise(idle_output, fs) # dBFS CCIR-RMS

Ambas reutilizan la muesca y la curva ITU-R 468 de la cadena de THD+N, y ambas se miden a través de la banda AES17 (un paso alto de 20 Hz más el paso bajo normalizado en bandwidth). Como el filtro CCIR-RMS marca -5,63 dB a 1 kHz, un tono de 1 kHz mide su propio dBFS menos 5,63 dB, lo que fija la ponderación con exactitud.

3. Distorsión por intermodulación (IEC 60268-3 14.12.7–10)

Sección titulada «3. Distorsión por intermodulación (IEC 60268-3 14.12.7–10)»

Cuando dos tonos atraviesan una no linealidad, laten entre sí y producen productos de suma y diferencia. La IEC 60268-3 normaliza tres ensayos, cada uno con su definición por órdenes:

  • Distorsión de modulación (14.12.7): un tono grave grande f_low y un tono agudo pequeño f_high (preferiblemente 4:1). Los valores por orden son sumas aritméticas de las amplitudes de las bandas laterales respecto a la salida en f_high: d_m,2 = (a_{f₂+f₁} + a_{f₂−f₁})/a_{f₂} y d_m,3 = (a_{f₂+2f₁} + a_{f₂−2f₁})/a_{f₂}. El resultado también lleva el valor smpte de RMS combinado que reportan los analizadores tipo SMPTE (no es una magnitud IEC).
  • Distorsión por frecuencia diferencia (14.12.8): dos tonos agudos iguales f₁ < f₂, referida a U_{2,ref} = 2·U_{2,f₂} (la suma de las amplitudes de ambos tonos): d_d,2 = a_{f₂−f₁}/(a_{f₁}+a_{f₂}) y la suma aritmética d_d,3 = (a_{2f₂−f₁} + a_{2f₁−f₂})/(a_{f₁}+a_{f₂}).
  • Distorsión total por frecuencia diferencia (14.12.10): un ensayo de dos tonos específico (f₁ = 2f₀, f₂ = 3f₀ − δ; los tonos normalizados de 8 kHz y 11,95 kHz son los valores por defecto) donde solo cuentan los dos productos en banda en f₀ ∓ δ: d_TDFD = √(a²_{f₂−f₁} + a²_{2f₁−f₂}) / (a_{f₁} + a_{f₂}).
  • Intermodulación dinámica (DIM, 14.12.9): un seno de 15 kHz más una onda cuadrada de 3,15 kHz filtrada en paso bajo (1:4 pico a pico). La DIM es el RMS de los productos de intermodulación |k·f_square ± f_sine| que caen por debajo de f_sine (Tabla 2 de la IEC 60268-3), respecto a la amplitud del seno de 15 kHz (la definición de 14.12.9.1; el denominador impreso en 14.12.9.2 f) es un defecto editorial, véase la fe de erratas).
from phonometry import electroacoustics
md = electroacoustics.modulation_distortion(signal, fs, 60.0, 7000.0)
print(md.d2, md.d3, md.smpte) # 14.12.7
md.plot() # portadora y bandas laterales de modulación, d2/d3 anotadas (necesita matplotlib)
dfd2 = electroacoustics.difference_frequency_distortion(signal, fs, 13e3, 14e3, order=2)
tdfd = electroacoustics.total_difference_frequency_distortion(signal, fs) # 8/11,95 kHz
dim = electroacoustics.dynamic_intermodulation_distortion(signal, fs) # DIM (15k/3,15k)

El ModulationDistortionResult se puede dibujar: .plot() traza la amplitud de salida en la portadora f₂ (la referencia de 0 dB) y las cuatro bandas laterales de modulación en f₂ ± f₁ y f₂ ± 2f₁, la contraparte de modulación del espectro armónico de la sección 1. La relación asimétrica entre los pares n = 2 y n = 3 lee de un vistazo el equilibrio entre los términos cuadrático y cúbico de la no linealidad:

Espectro de distorsión de modulación de un ensayo de dos tonos de 60 Hz más 7 kHz a través de un amplificador débilmente no lineal: la portadora a 7 kHz como referencia de 0 dB y las cuatro bandas laterales de intermodulación a 7 kHz más menos 60 y 120 Hz marcadas con su orden, anotado con los valores por orden d2 y d3 de IEC 60268-3 y el RMS combinado SMPTEEspectro de distorsión de modulación de un ensayo de dos tonos de 60 Hz más 7 kHz a través de un amplificador débilmente no lineal: la portadora a 7 kHz como referencia de 0 dB y las cuatro bandas laterales de intermodulación a 7 kHz más menos 60 y 120 Hz marcadas con su orden, anotado con los valores por orden d2 y d3 de IEC 60268-3 y el RMS combinado SMPTE
Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import electroacoustics
fs = 48000
t = np.arange(fs) / fs # 1 s -> los tonos caen en bins de la FFT
x = np.sin(2 * np.pi * 60.0 * t) + 0.25 * np.sin(2 * np.pi * 7000.0 * t)
signal = x + 0.04 * x**2 + 0.012 * x**3 # salida de un dispositivo débilmente no lineal
md = electroacoustics.modulation_distortion(signal, fs, 60.0, 7000.0)
md.plot(language="es")
plt.show()

4. Respuesta en frecuencia y coherencia (Bendat y Piersol)

Sección titulada «4. Respuesta en frecuencia y coherencia (Bendat y Piersol)»

Dada una entrada x y la salida y de un dispositivo, la respuesta en frecuencia H(f) se estima a partir de los autoespectros y el espectro cruzado promediados con Welch. Bendat y Piersol (Random Data, 4ª ed.) dan dos estimadores, que difieren en qué canal soporta el ruido, más la coherencia ordinaria γ², la fracción de la potencia de salida explicada linealmente por la entrada:

H1 es insesgado cuando el ruido está en la salida, y H2 cuando está en la entrada; para un camino lineal sin ruido ambos recuperan la respuesta verdadera y γ² = 1. El ruido aditivo a la salida sesga H2 al alza y baja la coherencia hasta SNR/(1+SNR).

Magnitud de Bode de una respuesta en frecuencia estimada con H1 que sigue la respuesta verdadera de un sistema paso banda, con la coherencia ordinaria debajo cayendo hacia los bordes de banda donde la señal de salida es débil frente al ruidoMagnitud de Bode de una respuesta en frecuencia estimada con H1 que sigue la respuesta verdadera de un sistema paso banda, con la coherencia ordinaria debajo cayendo hacia los bordes de banda donde la señal de salida es débil frente al ruido
from phonometry import electroacoustics
res = electroacoustics.transfer_function(x, y, fs, estimator="H1")
print(res.magnitude_db, res.phase, res.coherence)
res.plot() # magnitud/fase de Bode + coherencia (necesita matplotlib)
freqs, gamma2 = electroacoustics.coherence(x, y, fs)

La coherencia necesita promediarse sobre varios segmentos de Welch para ser significativa; un único segmento da γ² ≡ 1 por construcción.

Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from scipy import signal as sp
from phonometry import electroacoustics
fs = 48000
n = 400000
rng = np.random.default_rng(7)
x = rng.standard_normal(n)
b, a = sp.butter(2, [400.0, 4000.0], btype="band", fs=fs) # dispositivo bajo ensayo
y = sp.lfilter(b, a, x)
y = y + rng.standard_normal(n) * np.sqrt(np.mean(y ** 2)) * 0.05 # ruido de salida
res = electroacoustics.transfer_function(x, y, fs, estimator="H1")
res.plot(language="es")
plt.show()

5. Convenciones de sensibilidad (IEC 60268-4 / IEC 60268-5)

Sección titulada «5. Convenciones de sensibilidad (IEC 60268-4 / IEC 60268-5)»

Las cifras de distorsión y de respuesta solo son comparables entre dispositivos cuando coinciden las convenciones de sensibilidad que hay detrás, y dos convenciones hacen tropezar constantemente: el nivel de referencia del micrófono y la normalización de potencia y distancia del altavoz.

Medición de la sensibilidad de un altavoz en campo libre según IEC 60268-5: un altavoz sobre un soporte en una sala anecoica, alimentado por un amplificador a 2,83 V, con un micrófono de medición a la distancia de referencia r = 1 m sobre el eje de referencia, y las relaciones que gobiernan: la sensibilidad característica como Lp a 1 m para 1 W en la impedancia nominal, la tensión de excitación Up = raíz de (R por 1 W), la referencia por distancia inversa Lp(1 m) = Lp(r) + 20 lg(r / 1 m), y la sensibilidad de micrófono de IEC 60268-4 en mV/Pa o dB re 1 V/PaMedición de la sensibilidad de un altavoz en campo libre según IEC 60268-5: un altavoz sobre un soporte en una sala anecoica, alimentado por un amplificador a 2,83 V, con un micrófono de medición a la distancia de referencia r = 1 m sobre el eje de referencia, y las relaciones que gobiernan: la sensibilidad característica como Lp a 1 m para 1 W en la impedancia nominal, la tensión de excitación Up = raíz de (R por 1 W), la referencia por distancia inversa Lp(1 m) = Lp(r) + 20 lg(r / 1 m), y la sensibilidad de micrófono de IEC 60268-4 en mV/Pa o dB re 1 V/Pa

Micrófonos (IEC 60268-4, cláusula 11). La sensibilidad M es la tensión de salida por unidad de presión acústica, expresada en mV/Pa; el nivel de sensibilidad es LM = 20 lg(M / 1 V/Pa) dB, negativo para todo micrófono real (un condensador de estudio de 50 mV/Pa queda en −26 dB re 1 V/Pa). El tropiezo clásico es la referencia: −26 dB re 1 V/Pa y +34 dB re 1 mV/Pa son el mismo micrófono, a 60 dB de distancia sobre el papel, así que un nivel de sensibilidad sin su referencia no significa nada. La norma también distingue sensibilidad de campo libre, de campo difuso y de presión; para la misma cápsula divergen en alta frecuencia, de modo que el tipo declarado importa tanto como el número.

Altavoces (IEC 60268-5, cláusula 20.3). La sensibilidad característica es la presión acústica producida a 1 m sobre el eje de referencia, en campo libre, referida a una entrada de 1 W en la impedancia nominal; expresada como nivel re 20 µPa (cláusula 20.4) es el familiar «dB @ 1 W/1 m». En esa frase se esconden dos normalizaciones:

  • La eléctrica. La tensión de ensayo es Up = √(R · 1 W), numéricamente √R: 2,83 V en una impedancia nominal de 8 Ω. Una hoja de datos que anuncia «dB @ 2,83 V/1 m» para un altavoz de 4 Ω le está entregando 2 W, lo que infla la cifra en 3 dB frente a una calificación verdadera de 1 W/1 m; comprueba la impedancia nominal antes de comparar.
  • La geométrica. 1 m es una distancia de referencia, no necesariamente la de medición. La norma manda medir en campo lejano (a 0,5 m o a un número entero de metros, cláusula 7.1) y referir el resultado con la ley de la distancia inversa, Lp(1 m) = Lp(r) + 20 lg(r / 1 m). Ese escalado solo vale donde el nivel cae de verdad 6 dB por duplicación de distancia, de ahí el campo libre del diagrama; a 1 m de una caja multivía grande puede que el campo cercano aún no haya terminado, y la cifra «a 1 m» es entonces una magnitud referida, no lo que leería un micrófono colocado a 1 m.

6. Pistón radiante: impedancia de radiación y directividad

Sección titulada «6. Pistón radiante: impedancia de radiación y directividad»

El pistón circular rígido en pantalla infinita es el radiador canónico tras un cono de altavoz, el extremo abierto de un conducto y la eficiencia de radiación de cualquier superficie vibrante finita (Beranek y Mellow §4.19, §13.7). Su impedancia mecánica de radiación es con y las funciones adimensionales de resistencia y reactancia (Ecs. (13.117), (13.118))

donde es la función de Bessel y la de Struve de orden uno. A baja frecuencia y la reactancia es de tipo másico con la masa de radiación (Ec. (4.151)); a alta frecuencia , y el pistón radia como en un tubo infinito. El campo lejano sigue la directividad , cuyo primer nulo está en .

import numpy as np
from phonometry import radiating_piston
res = radiating_piston(radius=0.1, frequencies=np.geomspace(20, 20000, 200),
angles=np.linspace(0.0, np.pi / 2, 91))
print(round(res.radiation_mass, 4)) # 8 rho a^3 / 3, kg
print(round(float(res.directivity_index[0]), 2)) # 3.01 dB, límite de semiespacio
res.plot() # R1 y X1 vs ka
Resistencia de radiación normalizada R1 y reactancia X1 de un pistón circular con pantalla de 75 mm frente a ka en eje logarítmico: R1 sube desde ka al cuadrado entre dos hasta la unidad con rizados decrecientes, mientras la X1 de tipo masa alcanza su máximo cerca de ka de 1,4 y decae, con el límite de alta frecuencia R1 igual a 1 marcadoResistencia de radiación normalizada R1 y reactancia X1 de un pistón circular con pantalla de 75 mm frente a ka en eje logarítmico: R1 sube desde ka al cuadrado entre dos hasta la unidad con rizados decrecientes, mientras la X1 de tipo masa alcanza su máximo cerca de ka de 1,4 y decae, con el límite de alta frecuencia R1 igual a 1 marcado

El .plot() del resultado es la figura clásica de impedancia de Beranek y Mellow calculada para este pistón: por debajo de ka ≈ 1 la carga es casi puramente de tipo masa (X₁ domina y R₁ ∝ (ka)², el régimen en el que la salida de un altavoz está limitada por rigidez y masa), y por encima la resistencia se asienta en ρcS con rizados de interferencia mientras la reactancia se desvanece.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import radiating_piston
res = radiating_piston(radius=0.075, frequencies=np.geomspace(20, 20000, 400))
res.plot(language="es") # R1 y X1 normalizadas frente a ka
plt.show()

radiating_piston devuelve un RadiatingPistonResult con la resistance y reactance normalizadas, la radiation_resistance/radiation_reactance mecánicas, la radiation_mass, el directivity_index, el patrón de campo lejano directivity (cuando se dan angles) y .plot(). Los bloques piston_resistance, piston_reactance y piston_directivity también son invocables directamente. El pistón es el modelo de radiador complementario de los silenciadores de control de ruido industrial.

El patrón de directividad es, por sí mismo, un resultado representable: piston_directivity_pattern(ka) muestrea para uno o varios valores de y devuelve un PistonDirectivity (la malla de ángulos polares, la directivity lineal y su forma en dB directivity_db, y los valores de ka), cuyo .plot() dibuja el diagrama de haz clásico. Varios se muestran como una familia sobre los mismos ejes polares, de modo que el estrechamiento del lóbulo principal y la aparición de los lóbulos secundarios se leen de un vistazo:

from phonometry import piston_directivity_pattern
pattern = piston_directivity_pattern([3.0, 8.0, 16.0])
print(pattern.directivity_db.shape) # (3, 361): una fila por ka
pattern.plot() # diagrama de haz polar en dB (necesita matplotlib)
Directividad de campo lejano en polar de un pistón circular con pantalla para ka de 3, 8 y 16 sobre el hemisferio frontal, con el nivel en el eje arriba como referencia de 0 dB, que muestra el estrechamiento del lóbulo principal y la aparición de los lóbulos secundarios al crecer kaDirectividad de campo lejano en polar de un pistón circular con pantalla para ka de 3, 8 y 16 sobre el hemisferio frontal, con el nivel en el eje arriba como referencia de 0 dB, que muestra el estrechamiento del lóbulo principal y la aparición de los lóbulos secundarios al crecer ka
Mostrar el código de esta figura
import matplotlib.pyplot as plt
from phonometry import piston_directivity_pattern
piston_directivity_pattern([3.0, 8.0, 16.0]).plot(language="es")
plt.show()

7. Informe de características del altavoz (IEC 60268-5)

Sección titulada «7. Informe de características del altavoz (IEC 60268-5)»

Las características nominales que IEC 60268-5 define en torno a una respuesta en el eje medida se reúnen en un único resultado de características del altavoz que representa la ficha de características nominales de la norma. Dos de los números se calculan a partir de la respuesta en lugar de solo repetirse:

  • Nivel de sensibilidad característica (20.3/20.4). El nivel en el eje promediado en una banda declarada, referido a 1 W en la impedancia nominal a 1 m: con . La excitación por defecto es ese (2,83 V en 8 Ω), de modo que con una respuesta a 1 m el nivel de sensibilidad es la media de banda.
  • Rango de frecuencias efectivo (21.2). La banda en la que la respuesta se mantiene dentro de 10 dB del nivel promediado en la banda de una octava en la región de máxima sensibilidad; los valles más estrechos que 1/9 de octava se desprecian.
import numpy as np
from phonometry import loudspeaker_characteristics, radiating_piston, ReportMetadata
freqs = np.geomspace(30, 24000, 320)
spl = 87.0 + 1.2 * np.sin(2 * np.log2(freqs / 900.0))
spl -= 10 * np.log10(1 + (50.0 / freqs) ** 6) # caída en baja frecuencia
spl -= 10 * np.log10(1 + (freqs / 16000.0) ** 7) # caída en alta frecuencia
result = loudspeaker_characteristics(
freqs, spl, rated_impedance=8.0, sensitivity_band=(200.0, 4000.0),
impedance=(np.geomspace(20, 20000, 260),
6.6 + 24 * np.exp(-(np.log2(np.geomspace(20, 20000, 260) / 52.0) ** 2) / 0.12)),
distortion=(np.geomspace(50, 5000, 140),
0.3 + 2.6 * np.exp(-(np.log2(np.geomspace(50, 5000, 140) / 70.0) ** 2) / 0.45)),
directivity=radiating_piston(0.075, np.array([1000.0, 2000.0, 4000.0]),
angles=np.radians(np.linspace(0, 90, 46))),
polar_frequency=2000.0,
)
print(round(result.sensitivity_level_db, 1)) # dB, 1 W / 1 m
print(tuple(round(x) for x in result.effective_range)) # Hz
result.report("altavoz.pdf", metadata=ReportMetadata(measurement_standard="IEC 60268-5"),
language="es")

loudspeaker_characteristics devuelve un LoudspeakerCharacteristics con el sensitivity_level_db, el effective_range, el reference_level_db, la characteristic_sensitivity_pa y la minimum_impedance calculados, y un .report() que escribe la ficha. La respuesta en el eje se dibuja con su banda de tolerancia y los marcadores del rango efectivo según la proporción de IEC 60263 (una década de frecuencia igual a 25 dB), y la directividad polar sobre el círculo de referencia de 25 dB de IEC 60263. El módulo de impedancia (con la línea del 80 % de la nominal), la curva de distorsión armónica total y la directividad alimentan los paneles secundarios, reutilizando la directividad del pistón radiante de la sección 6 y un resultado de distorsión con barrido sinusoidal para la curva de distorsión.

Las características nominales también están disponibles de forma interactiva mediante .plot(), que dibuja un concepto por figura con el mismo código de paneles que compone el informe, seleccionado con quantity. Al pasar unos ejes se dibuja sobre ellos:

result.plot() # respuesta en el eje (por defecto)
result.plot(quantity="impedance") # módulo |Z| con las líneas nominal / 80 %
result.plot(quantity="thd") # distorsión armónica total vs frecuencia
result.plot(quantity="directivity") # respuesta polar sobre el círculo de 25 dB
Respuesta del nivel de presión acústica en el eje con su banda de tolerancia sombreada, la línea de referencia de -10 dB y los marcadores del rango efectivo sobre un eje de frecuencias nominalesRespuesta del nivel de presión acústica en el eje con su banda de tolerancia sombreada, la línea de referencia de -10 dB y los marcadores del rango efectivo sobre un eje de frecuencias nominales
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import loudspeaker_characteristics
freqs = np.geomspace(30, 24000, 320)
spl = 87.0 + 1.2 * np.sin(2 * np.log2(freqs / 900.0))
spl -= 10 * np.log10(1 + (50.0 / freqs) ** 6) # caída en baja frecuencia
spl -= 10 * np.log10(1 + (freqs / 16000.0) ** 7) # caída en alta frecuencia
result = loudspeaker_characteristics(freqs, spl, rated_impedance=8.0,
sensitivity_band=(200.0, 4000.0))
result.plot(language="es") # quantity="response" (por defecto)
plt.show()
Módulo de impedancia del altavoz frente a la frecuencia con la línea de impedancia nominal y la línea del 80 % de la nominalMódulo de impedancia del altavoz frente a la frecuencia con la línea de impedancia nominal y la línea del 80 % de la nominal
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import loudspeaker_characteristics
freqs = np.geomspace(30, 24000, 320)
spl = 87.0 - 10 * np.log10(1 + (50.0 / freqs) ** 6)
fz = np.geomspace(20, 20000, 260)
result = loudspeaker_characteristics(
freqs, spl, rated_impedance=8.0, sensitivity_band=(200.0, 4000.0),
impedance=(fz, 6.6 + 24 * np.exp(-(np.log2(fz / 52.0) ** 2) / 0.12)),
)
result.plot(quantity="impedance", language="es")
plt.show()
Distorsión armónica total del altavoz en porcentaje frente a la frecuenciaDistorsión armónica total del altavoz en porcentaje frente a la frecuencia
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import loudspeaker_characteristics
freqs = np.geomspace(30, 24000, 320)
spl = 87.0 - 10 * np.log10(1 + (50.0 / freqs) ** 6)
thd_f = np.geomspace(50, 5000, 140)
result = loudspeaker_characteristics(
freqs, spl, rated_impedance=8.0, sensitivity_band=(200.0, 4000.0),
distortion=(thd_f, 0.3 + 2.6 * np.exp(-(np.log2(thd_f / 70.0) ** 2) / 0.45)),
)
result.plot(quantity="thd", language="es")
plt.show()
Respuesta direccional polar del altavoz a 2000 Hz sobre el círculo de referencia de 25 dB de IEC 60263Respuesta direccional polar del altavoz a 2000 Hz sobre el círculo de referencia de 25 dB de IEC 60263
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import loudspeaker_characteristics, radiating_piston
freqs = np.geomspace(30, 24000, 320)
spl = 87.0 - 10 * np.log10(1 + (50.0 / freqs) ** 6)
result = loudspeaker_characteristics(
freqs, spl, rated_impedance=8.0, sensitivity_band=(200.0, 4000.0),
directivity=radiating_piston(0.075, np.array([1000.0, 2000.0, 4000.0]),
angles=np.radians(np.linspace(0, 90, 46))),
polar_frequency=2000.0,
)
result.plot(quantity="directivity", language="es")
plt.show()

La ficha de ejemplo se regenera con make reports y se conserva renderizada en el repositorio; pulsa la vista previa para abrir el PDF.

Informe de ejemplo de características del altavoz IEC 60268-5 (PDF)

Ficha de características nominales del altavoz IEC 60268-5 de una página: una cabecera con el fabricante y el modelo, la tabla de características nominales (impedancia nominal, sensibilidad característica, rangos de frecuencia efectivo y nominal, frecuencia de resonancia, potencias nominales, impedancia mínima e índice de directividad) junto a la respuesta en frecuencia en el eje con su banda de tolerancia y los marcadores del rango efectivo, y los paneles de impedancia, distorsión armónica total y directividad polar, todos trazados según las convenciones de escala de IEC 60263.

Descargar el informe (PDF)

Ficha de características del altavoz (LoudspeakerCharacteristics.report), la tabla de características nominales IEC 60268-5 junto a la respuesta en el eje y los paneles de impedancia, THD y polar trazados según las convenciones de 25 dB por década y de círculo de referencia de 25 dB de IEC 60263.

8. Informe de características del micrófono (IEC 60268-4)

Sección titulada «8. Informe de características del micrófono (IEC 60268-4)»

El compañero de micrófono de la sección 7: las características nominales que IEC 60268-4 define en torno a una respuesta en frecuencia de campo libre medida se reúnen en un único resultado de características del micrófono que representa la ficha de características nominales de la norma. Cuatro de los números se calculan a partir de las propias definiciones de la norma en lugar de solo repetirse:

  • Nivel de sensibilidad (11.1). La sensibilidad nominal en campo libre (mV/Pa, a la frecuencia de referencia de 1 kHz de 11.3) como nivel, : 12,5 mV/Pa son dB re 1 V/Pa.
  • Rango de frecuencias efectivo (12.2). La banda en la que la respuesta, normalizada a 0 dB en la frecuencia de referencia, se mantiene dentro de la tolerancia declarada; los bordes son los cruces interpolados con la tolerancia.
  • Índice de directividad (13.2.2). con la sensibilidad de campo difuso de la integral de 11.2.2 a) sobre un diagrama con simetría de revolución; el cardioide ideal devuelve dB.
  • Nivel de ruido equivalente (17.2). La tensión de ruido inherente ponderada sobre la sensibilidad nominal como nivel de presión acústica, , con la relación señal-ruido re 1 Pa (94 dB SPL) derivada de él. El nivel de presión acústica de sobrecarga (15.2) se lee de una curva de distorsión frente a nivel en el límite de THD declarado.
import numpy as np
from phonometry import microphone_characteristics, ReportMetadata
freqs = np.geomspace(20, 20000, 400)
response = -10 * np.log10(1 + (30.0 / freqs) ** 4) # caída en baja frecuencia
response -= 10 * np.log10(1 + (freqs / 19000.0) ** 8) # caída en alta frecuencia
response += 2.0 * np.exp(-(np.log2(freqs / 9000.0) ** 2) / 0.3) # región de presencia
angles = np.linspace(0, 179, 359)
cardioid = 20 * np.log10((1 + np.cos(np.radians(angles))) / 2)
result = microphone_characteristics(
freqs, response, 12.5, tolerance_db=3.0, # 12,5 mV/Pa a 1 kHz
rated_impedance=150.0, minimum_load_impedance=1000.0,
noise_voltage=1.25e-6, # ponderada A, V
max_spl_thd_percent=0.5,
distortion=(np.linspace(100, 140, 81),
0.5 * 10 ** ((np.linspace(100, 140, 81) - 130.0) * 0.08)),
polar=(angles, cardioid), polar_frequency=1000.0,
powering="Phantom P48 (IEC 61938)", supply_current_ma=3.1,
)
print(round(result.sensitivity_level_db, 1)) # -38,1 dB re 1 V/Pa
print(tuple(round(x) for x in result.effective_range)) # Hz
print(round(result.directivity_index_db, 1)) # 4,8 dB (cardioide)
print(round(result.equivalent_noise_level_db, 1)) # dB(A)
result.report("microfono.pdf", metadata=ReportMetadata(measurement_standard="IEC 60268-4"),
language="es")

microphone_characteristics devuelve un MicrophoneCharacteristics con el sensitivity_level_db, el effective_range, el directivity_index_db, el equivalent_noise_level_db, el max_spl_db, la signal_to_noise_ratio_db y el diffuse_field_sensitivity_level_db calculados, y un .report() que escribe la ficha. La respuesta de campo libre se dibuja con su banda de tolerancia, el marcador de la frecuencia de referencia y los marcadores del rango efectivo según la proporción de IEC 60263 (una década de frecuencia igual a 25 dB), y el diagrama direccional sobre el círculo de referencia de 25 dB de IEC 60263; el espectro de ruido inherente y la curva de distorsión frente a nivel (con el límite de THD y el nivel de sobrecarga marcados) alimentan los paneles secundarios. Un requirement en los metadatos se comprueba como nivel de ruido equivalente máximo permitido.

Las características nominales también están disponibles de forma interactiva mediante .plot(), que dibuja un concepto por figura con el mismo código de paneles que compone el informe, seleccionado con quantity. Al pasar unos ejes se dibuja sobre ellos:

result.plot() # respuesta de campo libre (por defecto)
result.plot(quantity="directivity") # diagrama polar sobre el círculo de 25 dB
result.plot(quantity="noise") # espectro de banda del ruido inherente
result.plot(quantity="distortion") # THD frente al nivel de presión acústica
Respuesta relativa de campo libre del micrófono con su banda de tolerancia sombreada, el marcador de la frecuencia de referencia y los marcadores del rango efectivo sobre un eje de frecuencias nominalesRespuesta relativa de campo libre del micrófono con su banda de tolerancia sombreada, el marcador de la frecuencia de referencia y los marcadores del rango efectivo sobre un eje de frecuencias nominales
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import microphone_characteristics
freqs = np.geomspace(20, 20000, 400)
response = -10 * np.log10(1 + (30.0 / freqs) ** 4) # caída en baja frecuencia
response -= 10 * np.log10(1 + (freqs / 19000.0) ** 8) # caída en alta frecuencia
response += 2.0 * np.exp(-(np.log2(freqs / 9000.0) ** 2) / 0.3) # región de presencia
result = microphone_characteristics(freqs, response, 12.5, tolerance_db=3.0)
result.plot(language="es") # quantity="response" (por defecto)
plt.show()
Diagrama direccional cardioide del micrófono a 1000 Hz sobre el círculo de referencia de 25 dB de IEC 60263Diagrama direccional cardioide del micrófono a 1000 Hz sobre el círculo de referencia de 25 dB de IEC 60263
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import microphone_characteristics
freqs = np.geomspace(20, 20000, 400)
response = -10 * np.log10(1 + (30.0 / freqs) ** 4)
angles = np.linspace(0, 179, 359)
cardioid = 20 * np.log10((1 + np.cos(np.radians(angles))) / 2)
result = microphone_characteristics(
freqs, response, 12.5, tolerance_db=3.0,
polar=(angles, cardioid), polar_frequency=1000.0,
)
result.plot(quantity="directivity", language="es")
plt.show()
Espectro de nivel de banda del ruido inherente del micrófono frente a la frecuenciaEspectro de nivel de banda del ruido inherente del micrófono frente a la frecuencia
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import microphone_characteristics
freqs = np.geomspace(20, 20000, 400)
response = -10 * np.log10(1 + (30.0 / freqs) ** 4)
noise_f = np.geomspace(20, 20000, 31)
result = microphone_characteristics(
freqs, response, 12.5, tolerance_db=3.0, noise_voltage=1.25e-6,
noise_spectrum=(noise_f, 6.0 + 12.0 * np.log10(1000.0 / noise_f)),
)
result.plot(quantity="noise", language="es")
plt.show()
Distorsión armónica total del micrófono en porcentaje frente al nivel de presión acústica, con el límite de THD y el nivel de presión acústica de sobrecarga marcadosDistorsión armónica total del micrófono en porcentaje frente al nivel de presión acústica, con el límite de THD y el nivel de presión acústica de sobrecarga marcados
Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import microphone_characteristics
freqs = np.geomspace(20, 20000, 400)
response = -10 * np.log10(1 + (30.0 / freqs) ** 4)
spl_axis = np.linspace(100, 140, 81)
result = microphone_characteristics(
freqs, response, 12.5, tolerance_db=3.0, max_spl_thd_percent=0.5,
distortion=(spl_axis, 0.5 * 10 ** ((spl_axis - 130.0) * 0.08)),
)
result.plot(quantity="distortion", language="es")
plt.show()

La ficha de ejemplo se regenera con make reports y se conserva renderizada en el repositorio; pulsa la vista previa para abrir el PDF.

Informe de ejemplo de características del micrófono IEC 60268-4 (PDF)

Ficha de características nominales del micrófono IEC 60268-4 de una página: una cabecera con el fabricante y el modelo, la tabla de características nominales (sensibilidad en campo libre en mV/Pa y su nivel re 1 V/Pa, rango de frecuencias efectivo, impedancias nominal y de carga mínima, nivel de ruido equivalente, relación señal-ruido, SPL máximo en el límite de THD declarado, índice de directividad y alimentación phantom) junto a la respuesta en frecuencia de campo libre con su banda de tolerancia y los marcadores del rango efectivo, y los paneles de diagrama direccional, espectro de ruido inherente y distorsión, todos trazados según las convenciones de escala de IEC 60263.

Descargar el informe (PDF)

Ficha de características del micrófono (MicrophoneCharacteristics.report), la tabla de características nominales IEC 60268-4 junto a la respuesta de campo libre, con el diagrama direccional cardioide y los paneles de ruido inherente y THD frente a nivel trazados según las convenciones de 25 dB por década y de círculo de referencia de 25 dB de IEC 60263.

Cubierto. El conjunto de distorsión de IEC 60268-3 (cláusulas 14.12.2-14.12.11): THD_F y THD_R (thd), la distorsión armónica de orden n (harmonic_distortion), THD+N y SINAD a través del ancho de banda de medición de AES17-2015 (harmonic_analysis, cláusulas 5.2.5/5.2.8/6.3.1 de AES17), la intermodulación por modulación y por frecuencia diferencia, la intermodulación dinámica (DIM) y la THD ponderada ITU-R BS.468-4, además del margen dinámico y el ruido de canal en reposo de AES17-2015. Los estimadores de respuesta en frecuencia H1/H2 de Bendat y Piersol y la coherencia ordinaria. Las características nominales de micrófono de la IEC 60268-4:2014 (sensibilidad, respuesta y rango de frecuencias, índice de directividad, nivel de sobrecarga, nivel de ruido equivalente, impedancias y alimentación) mediante microphone_characteristics y su .report(). Las características nominales de altavoz de la IEC 60268-5:2003+A1:2007 (sensibilidad, rango de frecuencias, índice de directividad, THD frente a frecuencia) mediante loudspeaker_characteristics y su .report(), ambas trazadas según las convenciones de escala de la IEC 60263. El modelo de radiación de pistón con bafle (radiating_piston, Beranek y Mellow §4.19/§13.7).

No cubierto. Otras partes de la serie IEC 60268 quedan fuera de esta página: la Parte 16 (inteligibilidad objetiva del habla, el índice de transmisión del habla) no está implementada. Las ediciones implementadas están fijadas en IEC 60268-4:2014, IEC 60268-5:2003+A1:2007 y AES17-2015; las revisiones sucesoras IEC 60268-4:2018 y AES17-2020 no son las comprobadas.

  • Audio Engineering Society. (2015). AES standard method for digital audio engineering — Measurement of digital audio equipment (AES17-2015). Cláusulas 5.2.5, 5.2.8 y 6.3.1: la razón THD+N mediante el filtro de muesca normalizado y el ancho de banda de medición normalizado; el SINAD se deriva de ella. Revisada después como AES17-2020 (misma página de catálogo); la edición de 2015 es la implementada.
  • Bendat, J. S. y Piersol, A. G. (2010). Random data: Analysis and measurement procedures (4.ª ed.). Wiley. https://doi.org/10.1002/9781118032428ISBN 978-0-470-24877-5. Los estimadores de respuesta en frecuencia H1 y H2 y la coherencia ordinaria γ² de la sección 4.
  • Beranek, L. L. y Mellow, T. J. (2012). Acoustics: Sound fields and transducers. Academic Press. https://doi.org/10.1016/C2011-0-05897-0ISBN 978-0-12-391421-7. La física de transductores que sustenta la sección 5: radiación del altavoz, presión en el eje y la transición de campo cercano a campo lejano.
  • International Electrotechnical Commission. (1982). Scales and sizes for plotting frequency characteristics and polar diagrams (IEC 60263:1982). Las proporciones de escala de las gráficas características de la sección 7: una década de frecuencia igual a 25 dB en la ordenada (cláusula 2) y el diagrama polar trazado sobre un radio de círculo de referencia de 25 dB (cláusula 3).
  • International Electrotechnical Commission. (2003). Sound system equipment – Part 5: Loudspeakers (IEC 60268-5:2003+A1:2007). Las características nominales de altavoz de la sección 7: la impedancia nominal (16), el rango de frecuencias nominal (19.1), la sensibilidad característica y su nivel referido a 1 W a 1 m (20.3/20.4), el rango de frecuencias efectivo frente a la banda de -10 dB (21.2), el índice de directividad (23.3) y la distorsión armónica total frente a la frecuencia (24.1).
  • International Electrotechnical Commission. (2013). Sound system equipment – Part 3: Amplifiers (IEC 60268-3:2013). Cláusulas 14.12.2-14.12.11: distorsión armónica total THD_F/THD_R (la fórmula de 14.12.3.2 define la forma R), distorsión armónica de orden n d_n, la intermodulación por órdenes de modulación (d_m,n) y por frecuencia diferencia (d_d,n), distorsión total por frecuencia diferencia, intermodulación dinámica (DIM) y la THD ponderada ITU-R BS.468-4 / IEC 60268-1.
  • International Electrotechnical Commission. (2014). Sound system equipment – Part 4: Microphones (IEC 60268-4:2014). Las características nominales de micrófono de las secciones 5 y 8: la sensibilidad en campo libre y su nivel re 1 V/Pa (11.1/11.3), la respuesta en frecuencia y el rango de frecuencias efectivo (12.1/12.2), el diagrama direccional y el índice de directividad mediante la integral de campo difuso de 11.2.2 a) (13.1/13.2), el nivel de presión acústica de sobrecarga (15.2), el nivel de presión acústica equivalente debido al ruido inherente (17) y las impedancias nominales y la alimentación (9/10). Revisada después como IEC 60268-4:2018 (misma página de catálogo); la edición implementada es la de 2014.
  • International Telecommunication Union. (1986). Measurement of audio-frequency noise voltage level in sound broadcasting (Recomendación UIT-R BS.468-4). La respuesta nominal de la red de ponderación detrás de la THD ponderada (la curva del Apéndice A de IEC 60268-1).