Electroacústica: distorsión y respuesta en frecuencia
Normas aplicables: IEC 60268AES17Recomendación UIT-R BS.468Referencias: Bendat 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 diferencia de frecuencias, la intermodulación dinámica (DIM) y la THD ponderada ITU-R 468, y los estimadores de respuesta en frecuencia / 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.
Todo lo de aquí se mide sobre una señal capturada. Lo que después hace una hoja de características de transductor con esas curvas es el asunto de las dos guías de ensayo de tipo, Caracterización de altavoces (IEC 60268-5) y Caracterización de micrófonos (IEC 60268-4), que se ocupan de las convenciones de sensibilidad, de los patrones polares y de las fichas de características nominales. La alternativa de un solo barrido a los ensayos de tono estacionario de las secciones 1 y 2, con la THD como función continua de la frecuencia de excitación, es Distorsión con barrido sinusoidal.
0. Qué se captura y en qué condiciones
Sección titulada «0. Qué se captura y en qué condiciones»Toda razón de esta página es una propiedad de un dispositivo en un punto de funcionamiento, no del dispositivo, así que la IEC 60268-3 las define todas bajo un mismo conjunto de condiciones y sin él los valores no significan nada.
El banco. El apartado 3.1.2 pone el amplificador en condiciones nominales: la alimentación nominal; la f.e.m. de la fuente aplicada a través de la impedancia de fuente nominal; los terminales de salida cargados con la impedancia de carga nominal — una resistencia de potencia no inductiva, no un altavoz, para que la carga sea conocida y la medición repetible —; la fuente, una sinusoide a la frecuencia de referencia normalizada de 1 kHz de la IEC 60268-1; el control de volumen ajustado para que aparezca la tensión de salida nominal limitada por distorsión; los controles de tono planos y el de balance centrado. Todo lo que va después de la carga es instrumentación: un atenuador o un divisor hasta el analizador, con al menos 10 dB de margen en el conversor para que sea el amplificador, y nunca el conversor, el elemento que recorta.
El punto de funcionamiento. Las condiciones normalizadas de medición (apartado 3.1.3) son las condiciones nominales con la f.e.m. de la fuente bajada 10 dB. La razón que da el propio apartado (14.12.3.1, NOTA 1) es que un sistema bien diseñado pasa la mayor parte del tiempo unos 10 dB por debajo de la salida nominal limitada por distorsión, porque ahí es donde se sitúa la distribución de amplitud del habla y de la música. Una THD medida a plena salida nominal y otra medida en condiciones normalizadas de medición son, por tanto, valores distintos del mismo amplificador, y una cifra de hoja de características citada sin su nivel no se puede comparar con ninguna de las dos.
Dos condiciones que se saltan con facilidad. Una salida en clase D tiene que pasar por el filtro paso bajo analógico de la IEC 61606-1 entre la carga y el analizador (apartado 3.1.2, NOTA 2, Figura 2), o el residuo de conmutación se cuenta como ruido — y la limitación digital de banda a 20 kHz de AES17 de la sección 2 no puede quitar un residuo que ya ha entrado por aliasing dentro del conversor. Y el apartado 9 exige que el amplificador funcione aproximadamente en condiciones normalizadas de medición durante 1 h antes de la primera lectura, porque el calentamiento interno mueve la tensión de salida.
Qué hay que anotar. Ninguna de las razones de abajo significa nada por sí
sola. Informa, junto a cada cifra, de la frecuencia fundamental, de la tensión o
la potencia de salida (o del nivel de presión acústica, si la medición es
acústica), de la impedancia de carga, del ancho de banda de medición y de
cualquier ponderación, y del número de órdenes armónicos sumados. thd y
harmonic_analysis toman por defecto n_harmonics=10; un analizador que sume
cinco órdenes lee menos sobre la misma señal, así que el recuento de órdenes va
al lado del número.
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 devuelve el
fundamental más armónicos en . La distorsión armónica
total combina las amplitudes armónicas , ya sea respecto al fundamental
(kind='F') o respecto al RMS total (kind='R'):
es la distorsión armónica de orden n (el armónico n respecto al total). Los tonos deben caer en los bins 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.
Solo se suman los armónicos que caen por debajo de Nyquist — la
implementación detiene la suma en el primer orden que alcanza —, así que
el recuento efectivo de órdenes se encoge a medida que sube la frecuencia de
ensayo: a 48 kHz un ensayo de 1 kHz suma diez órdenes y uno de 7 kHz suma dos, y
un barrido de THD con n_harmonics fijo no mide la misma magnitud en los dos
extremos. Muestrea a 96 kHz o más cuando ensayes por encima de unos 2 kHz. En la
grabación misma, el conversor repliega dentro de la banda cualquier producto de
distorsión real generado por encima de su propia frecuencia de Nyquist, y ahí
aterriza en una frecuencia sin relación con las demás: la THD+N lo cuenta y la
suma armónica no, que es una de las razones por las que ambas pueden discrepar
más de lo que explica el suelo de ruido.
La distorsión es una propiedad del dispositivo a un nivel, y por eso la IEC 60268-3 cita cada cifra con su frecuencia y con su nivel de entrada o de salida, y por eso una curva de THD frente al nivel dice más que cualquier número aislado: un amplificador está más limpio a unos pocos vatios y se dispara cerca del recorte, mientras que la THD de un altavoz crece de forma monótona con la excursión. Conviene llevar encima los órdenes de magnitud — por debajo del 0,01 % para un amplificador de potencia competente a la salida nominal, del 0,1 al 1 % para una cadena de conversión, del 1 al 3 % para un radiador directo en su banda media y en torno al 10 % donde alcanza su límite de excursión —, porque significan que una lectura del «2 %» condena a un amplificador y no tiene nada de particular en un woofer.
La escalera de armónicos es la firma del dispositivo, y su forma es diagnóstica: un segundo armónico dominante apunta a una no linealidad asimétrica (una etapa polarizada, una bobina móvil descentrada), y un tercero dominante a una compresión simétrica (recorte, una suspensión que llega a su límite). Cada marcador se lee directamente como porcentaje, ya que dB respecto al fundamental son un 2 %. Los cuatro números anotados son una misma captura leída de cuatro maneras: la cuenta los armónicos contra el fundamental y la contra el total — se diferencian en el factor y son indistinguibles por debajo de un 10 % aproximadamente, que es la razón de que aquí las dos anotaciones queden una encima de otra —, mientras que la THD+N añade el ruido de fondo que hay entre los armónicos y el SINAD es su recíproco en dB.
from phonometry import electroacoustics
thd_f = electroacoustics.thd(signal, fs, 1000.0, kind="F") # respecto al fundamentalthd_r = electroacoustics.thd(signal, fs, 1000.0, kind="R") # respecto al RMS totald2 = electroacoustics.harmonic_distortion(signal, fs, 1000.0, 2) # armónico de 2.º ordenharmonic_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 pltimport numpy as npfrom phonometry import electroacoustics
fs = 48000n = fs # 1 s -> bins de 1 Hz; los armónicos caen en binst = np.arange(n) / fsf0 = 1000.0amps = {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()El ensayo del residuo son dos líneas, y el apartado lo hace obligatorio y no orientativo:
# `electroacoustics` importado arriba. Captura `idle` con la misma longitud que# `signal`, con el generador silenciado, y ejecuta sobre ella la misma llamada.residual = electroacoustics.thd(idle, fs, 1000.0, kind="F")print(residual < thd_f / 3.0) # False -> descartar, y bajar a harmonic_distortion2. THD+N y SINAD (AES17-2015 6.3)
Sección titulada «2. THD+N y SINAD (AES17-2015 6.3)»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 (, validado sobre la respuesta aplicada de fase cero según el apartado 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, apartados 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) dBsinad_db = electroacoustics.sinad(signal, fs, 1000.0) # = -dbwide = electroacoustics.thd_plus_noise(signal, fs, 1000.0, bandwidth=None) # Nyquist completaComo 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 de señal frente a ruido
más 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.
2.1 THD ponderada (IEC 60268-3 14.12.11)
Sección titulada «2.1 THD ponderada (IEC 60268-3 14.12.11)»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 el apartado: 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 el apartado, 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 468print(electroacoustics.weighted_thd(signal, fs, 100.0, weighting="A")) # variante ponderada Aprint(electroacoustics.itu_r_468_weighting([6300.0])) # [+12.2] dBUna sola curva gobierna tres magnitudes de esta página y una cuarta en la guía de micrófonos, así que vale la pena leerla una vez. No es una curva de sonoridad: es más abrupta que la ponderación A en los dos flancos y su pico está dos octavas más arriba. Para el fundamental de 100 Hz del fragmento descuenta 13,8 dB al segundo armónico y 10,3 dB al tercero, y levanta todo lo que queda por encima de 1 kHz — del orden décimo en adelante —, así que una THD ponderada no es una THD «más exacta», sino una reordenación deliberada: perdona la distorsión de orden bajo de una no linealidad suave y penaliza los productos de orden alto que genera una distorsión de cruce por cero o un límite de slew rate. Por eso el apartado restringe la medición a fundamentales entre 31,5 Hz y 400 Hz, donde los órdenes que importan caen bajo el pico. La forma CCIR-RMS es la misma curva bajada para que el punto unidad sea 2 kHz en vez de 1 kHz: una renormalización, no una red distinta.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as np
# `electroacoustics` importado arriba.f = np.geomspace(20.0, 20000.0, 500)plt.semilogx(f, electroacoustics.itu_r_468_weighting(f), label="ITU-R BS.468-4")plt.semilogx(f, electroacoustics.itu_r_468_weighting(f) - 5.63, ls="--", label="CCIR-RMS (0 dB a 2 kHz)")plt.show()3. Rango dinámico y ruido de canal en reposo (AES17-2015 6.4)
Sección titulada «3. Rango dinámico y ruido de canal en reposo (AES17-2015 6.4)»Las dos cifras de catálogo de cualquier conversor reutilizan la muesca de la sección 2 y la curva ITU-R 468 de la sección 2.1, pero la excitación es distinta, y por eso el apartado 6.4 es hermano del apartado de THD+N y no hijo suyo. Ambas 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 una sinusoide de 997 Hz 60 dB por debajo de plena escala, elimina el 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-RMSAmbas 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.
Ninguna de las constantes del ensayo es arbitraria. 997 Hz es un número primo, así que es inconmensurable tanto con 44,1 kHz como con 48 kHz: el tono no se repite nunca dentro de un registro corto y recorre todo el espacio de códigos del conversor, mientras que un tono de 1000 Hz a 48 kHz volvería eternamente sobre las mismas 48 muestras y escondería los errores de no linealidad diferencial de los códigos que nunca toca. El nivel de -60 dBFS mantiene el conversor bien lejos de su propia región de sobrecarga, donde dominaría su distorsión en vez de su ruido, y a la vez sigue dando a la muesca un fundamental que eliminar, que es la razón de que el resultado se refiera a plena escala y no al tono de ensayo.
Lee el resultado en esta escala. Un camino de 16 bits con el dither correcto está acotado en unos 93 dB sin ponderar ( dB con dither triangular), y la CCIR-RMS cuesta otros 1,6 dB sobre un suelo de ruido plano, así que cualquier valor cercano a 92 dB son 16 bits funcionando a la perfección, y de esa longitud de palabra no se saca nada mejor; un conversor moderno de 24 bits se cita en 110 dB y más. El ruido de canal en reposo suele salir unos pocos decibelios mejor que el rango dinámico del mismo dispositivo, porque no lleva distorsión ninguna. Ambas son cifras ponderadas, así que una especificación de ruido sin ponderar de otra hoja de características lee varios decibelios peor para el mismo equipo y las dos cifras no deben compararse entre sí.
4. Distorsión por intermodulación (IEC 60268-3 14.12.7–10)
Sección titulada «4. Distorsión por intermodulación (IEC 60268-3 14.12.7–10)»Cuando dos tonos atraviesan una no linealidad, se mezclan entre sí y producen productos de suma y diferencia. La IEC 60268-3 normaliza cuatro ensayos de dos tonos, cada uno con su definición por órdenes; el último es una variante del segundo con los tonos fijados, y los puntos van en orden de apartado:
- Distorsión de modulación (14.12.7): un tono grave de gran amplitud y
un tono agudo de pequeña amplitud , cuya relación de amplitudes — no
una relación de frecuencias — es preferiblemente 4:1, algo que el apartado
materializa poniendo la salida en 12 dB y la salida en 24 dB por
debajo de la tensión de salida nominal. Las frecuencias se eligen muy
separadas (60 Hz y 7 kHz aquí) para que las bandas laterales sean resolubles
y para que quede por encima del armónico significativo más alto
de . Los valores por orden son sumas aritméticas de las amplitudes de
las bandas laterales respecto a la salida en :
y
. El resultado también lleva el
valor
smptede RMS combinado que dan los analizadores tipo SMPTE (no es una magnitud IEC). - Distorsión por diferencia de frecuencias (14.12.8): dos tonos agudos iguales , referida a (la suma de las amplitudes de ambos tonos): y la suma aritmética .
- Intermodulación dinámica (DIM, 14.12.9): una sinusoide 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 que caen por debajo de (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 el registro de erratas).
- Distorsión total por diferencia de frecuencias (14.12.10): el ensayo de 14.12.8 con sus tonos fijados (, ; los tonos normalizados de 8 kHz y 11,95 kHz son los valores por defecto) y contando solo los dos productos en banda en : .
Cuál ejecutar. La distorsión de modulación para un dispositivo de banda ancha alimentado con programa cargado de graves, la de diferencia de frecuencias para la parte alta de la banda, donde los armónicos de los tonos de ensayo caen del todo fuera de ella, y la DIM para cualquier cosa con realimentación y un límite de slew rate. La razón para ejecutar alguna de ellas cuando ya se tiene una THD es que los productos de intermodulación son inarmónicos: el oído los lee como aspereza y no como timbre, y los oye a niveles a los que una THD equivalente pasaría inadvertida; y un dispositivo con memoria — un amplificador modulado térmicamente, un woofer que desplaza por efecto Doppler la salida de un tweeter — puede dar una THD baja y una distorsión de modulación mala.
Una advertencia sobre la referencia. La IEC 60268-3 admite dos presentaciones de las mismas bandas laterales: contra la salida en , que es la que devuelve esta función, y contra la tensión de referencia combinada 4:1 , que da . Una cifra sacada de una hoja de características puede ser, por tanto, cinco veces (14 dB) la calculada aquí, así que la referencia se tiene que citar junto al número.
from phonometry import electroacoustics
md = electroacoustics.modulation_distortion(signal, fs, 60.0, 7000.0)print(md.d2, md.d3, md.smpte) # 14.12.7md.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 kHzdim = electroacoustics.dynamic_intermodulation_distortion(signal, fs) # DIM (15k/3,15k)El ModulationDistortionResult se puede dibujar: .plot() traza la amplitud
de salida en la portadora (la referencia de 0 dB) y las cuatro bandas
laterales de modulación en y , la contraparte de
modulación del espectro armónico de la sección 1. La relación asimétrica entre
los pares y lee de un vistazo el equilibrio entre los términos
cuadrático y cúbico de la no linealidad:
El par lee el término cuadrático de la no linealidad y el par
el cúbico, así que su relación dice qué orden domina antes de abrir ningún
circuito. Todo lo de la figura está referido a la portadora en , que es la
referencia que usan los d2 y d3 devueltos.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import electroacoustics
fs = 48000t = np.arange(fs) / fs # 1 s -> los tonos caen en bins de la FFTx = 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()Los otros tres ensayos devuelven escalares, así que la única forma de ver qué productos cuenta cada uno — que es toda la diferencia entre ellos — es marcarlos sobre el espectro de un mismo dispositivo:
El mismo dispositivo, tres ensayos, tres conjuntos distintos de productos. El ensayo de diferencia de frecuencias cuenta el producto grave y los dos productos de tercer orden que flanquean el par; el de distorsión total por diferencia de frecuencias se queda solo con los dos productos que el par de tonos fijo deja cerca de ; la DIM cuenta todo que aterrice por debajo de la sinusoide. El denominador también cambia — para los dos primeros, y solo la amplitud de la sinusoide para la DIM, que es la magnitud de la que trata la entrada del registro de erratas.
Mostrar el código de esta figura
import numpy as np
# `electroacoustics` importado arriba; 96 kHz para que los productos DIM sigan en banda.fs_im = 96000t = np.arange(fs_im) / fs_im # 1 s -> cada tono cae en un binx = 0.5 * (np.sin(2 * np.pi * 13000.0 * t) + np.sin(2 * np.pi * 14000.0 * t))y = x + 0.05 * x**2 + 0.02 * x**3 # la misma no linealidad débilprint(electroacoustics.difference_frequency_distortion(y, fs_im, 13e3, 14e3, order=2))5. Respuesta en frecuencia y coherencia (Bendat y Piersol)
Sección titulada «5. Respuesta en frecuencia y coherencia (Bendat y Piersol)»Dada una entrada x y la salida y de un dispositivo, la respuesta en
frecuencia 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 lleva el ruido, más la coherencia
ordinaria , la fracción de la potencia de salida explicada
linealmente por la entrada:
es insesgado cuando el ruido está en la salida, y cuando está en la entrada; para un camino lineal sin ruido ambos recuperan la respuesta verdadera y . El ruido aditivo a la salida sesga al alza y baja la coherencia hasta .
Elige el estimador cuyo canal ruidoso está en el denominador: cuando el ruido está en la salida y cuando está en la entrada, y el mismo registro invierte el veredicto en cuanto el ruido cambia de sitio. El panel de coherencia dice cuánto te están mintiendo: su desplome en los bordes de banda no es una propiedad del dispositivo, sino de la relación señal-ruido que hay allí, y es lo que dice qué parte de la curva de magnitud hay que creerse.
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)Cómo adquirir x e y. Captura la referencia y la respuesta en dos canales
sincronizados muestra a muestra de un solo conversor: dos relojes derivan uno
respecto al otro y destruyen la coherencia justo al ritmo que hace que el
resultado parezca un dispositivo ruidoso. Toma la referencia eléctricamente
después del generador, en vez de reutilizar el array ideal que generaste, para
que lo que haga el propio generador aparezca en los dos canales y se cancele.
Excita con ruido de banda ancha o con un barrido a un nivel que mantenga el
dispositivo en el punto de funcionamiento de la sección 0. Elimina el retardo
entre los dos canales — o haz el segmento de Welch varias veces más largo que
él —, porque un retardo sin compensar inclina la fase de y hunde
banda a banda. transfer_function elige nperseg para una
resolución de unos 4 Hz cuando no se lo das; la disposición física es la que
está dibujada en
Medición de sistemas de dos canales.
Cómo leer la coherencia. Un valor por debajo de uno tiene tres causas físicamente distintas, y se distinguen por experimento: ruido ajeno en cualquiera de los dos canales (la coherencia se recupera al subir el nivel de excitación), no linealidad en el dispositivo (cae con excitación alta y se recupera con excitación baja) y errores de sesgo, es decir, fuga espectral donde la resolución es demasiado gruesa cerca de una resonancia aguda y, sobre todo, un retardo más largo que el segmento. El promediado es lo que convierte la coherencia en una barra de error: el error aleatorio normalizado de la estimación de es para promedios, así que necesita unos 22 promedios para un error de magnitud del 5 %. Como regla de trabajo, una banda cuya coherencia se queda por debajo de 0,9 aproximadamente está sin medir, más que mal medida, y su magnitud de no debería darse: con una coherencia baja, la medición te está diciendo que la salida de ahí no queda explicada linealmente por la entrada. Un único segmento da por construcción y no significa absolutamente nada.
Ver el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom scipy import signal as spfrom phonometry import electroacoustics
fs = 48000n = 400000rng = np.random.default_rng(7)clean_x = rng.standard_normal(n)b, a = sp.butter(2, [400.0, 4000.0], btype="band", fs=fs) # dispositivo bajo ensayoclean_y = sp.lfilter(b, a, clean_x)
# Las dos columnas: el mismo camino, con el ruido pasado de un canal al otro.# Un 5 % en la salida; un 50 % en la entrada, porque el sesgo por ruido de# entrada es uniforme en toda la banda y con un 5 % sería invisible a esta escala.out_noise, in_noise = 0.05, 0.5y_out = clean_y + rng.standard_normal(n) * np.sqrt(np.mean(clean_y ** 2)) * out_noisex_in = clean_x + rng.standard_normal(n) * np.sqrt(np.mean(clean_x ** 2)) * in_noisecases = (("Ruido en la salida: H1 es insesgado", clean_x, y_out), ("Ruido en la entrada: H2 es insesgado", x_in, clean_y))
fig, axes = plt.subplots(2, 2, figsize=(11.4, 7.6), sharex=True, gridspec_kw={"height_ratios": [2.0, 1.0]})for col, (title, xx, yy) in enumerate(cases): h1 = electroacoustics.transfer_function(xx, yy, fs, estimator="H1") h2 = electroacoustics.transfer_function(xx, yy, fs, estimator="H2") _, h_true = sp.freqz(b, a, worN=h1.frequencies, fs=fs) pos = h1.frequencies > 0.0 freqs = h1.frequencies[pos]
ax_mag, ax_coh = axes[0][col], axes[1][col] ax_mag.semilogx(freqs, 20 * np.log10(np.abs(h_true[pos])), "--", label="|H| verdadera") ax_mag.semilogx(freqs, h1.magnitude_db[pos], label="H1 = Gxy / Gxx") ax_mag.semilogx(freqs, h2.magnitude_db[pos], "-.", label="H2 = Gyy / Gyx") ax_mag.set(ylim=(-80.0, 12.0), title=title) ax_mag.legend(fontsize=8)
# El suelo de coherencia que enuncia la sección, a partir de la SNR local. if col == 0: # ruido de salida: la SNR sigue a |H|, así que el suelo se hunde snr = (np.abs(h_true[pos]) ** 2 * np.mean(clean_x ** 2) / (np.mean(clean_y ** 2) * out_noise ** 2)) else: # ruido de entrada: la misma relación en todas las bandas snr = np.full_like(freqs, 1.0 / in_noise ** 2) ax_coh.semilogx(freqs, h1.coherence[pos], label="medida") ax_coh.semilogx(freqs, snr / (1.0 + snr), ":", label="SNR / (1 + SNR)") ax_coh.axhline(0.9, ls="--", lw=1.0) ax_coh.set(xlabel="Frecuencia [Hz]", ylim=(0.0, 1.05), xlim=(20.0, fs / 2)) ax_coh.legend(fontsize=8)axes[0][0].set_ylabel("Magnitud [dB]")axes[1][0].set_ylabel("Coherencia")plt.show()Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto
Las condiciones nominales y las condiciones normalizadas de medición de la IEC 60268-3 (apartados 3.1.2/3.1.3 y el preacondicionamiento de 1 h del apartado 9) y las comprobaciones de aceptación de 14.12.3.2 y 14.12.4.1, como las condiciones en las que queda definida cada una de las razones de abajo. El conjunto de distorsión de IEC 60268-3 (apartados 14.12.2-14.12.11): y (
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, apartados 5.2.5/5.2.8/6.3.1 de AES17), la intermodulación por modulación y por diferencia de frecuencias, la intermodulación dinámica (DIM) y la THD ponderada ITU-R BS.468-4, además del rango dinámico y el ruido de canal en reposo de AES17-2015. Los estimadores de respuesta en frecuencia / de Bendat y Piersol y la coherencia ordinaria.No cubierto
Ninguna de las condiciones de la sección 0 la comprueban las funciones: toman un array capturado y calculan la razón que define el apartado, así que el banco, el punto de funcionamiento y las tres comprobaciones de aceptación quedan a cargo de quien lee. Otras partes de la serie IEC 60268 quedan fuera de esta página: la Parte 16 (inteligibilidad objetiva del habla) está implementada como el índice de transmisión del habla en Transmisión del habla, y los informes de características nominales de micrófono (Parte 4) y de altavoz (Parte 5) se han trasladado a Caracterización de micrófonos y Caracterización de altavoces. Las ediciones implementadas están fijadas en AES17-2015; la revisión sucesora AES17-2020 no es la comprobada.
Véase también
Sección titulada «Véase también»- Caracterización de altavoces (IEC 60268-5): las convenciones de sensibilidad, el pistón radiante y el informe de características nominales que estas mediciones alimentan.
- Caracterización de micrófonos (IEC 60268-4): las referencias de sensibilidad del micrófono, sus patrones direccionales, las ponderaciones de ruido y su informe de características nominales.
- Control de ruido industrial: los métodos HVAC de conducto y los cerramientos de máquina en el lado receptor de un dispositivo ruidoso.
- Distorsión con barrido sinusoidal: la separación armónica de Farina/Novak cuya THD(f) alimenta el panel de distorsión del altavoz.
- Medición de sistemas de dos canales: la disposición física detrás de la estimación de de la sección 5, con la toma de referencia y los dos canales sincronizados dibujados.
- Referencia de la API:
electroacoustics.distortion,electroacoustics.intermodulation,electroacoustics.noise_measurementsyelectroacoustics.frequency_response.
Referencias
Sección titulada «Referencias»- Audio Engineering Society. (2015). AES standard method for digital audio engineering — Measurement of digital audio equipment (AES17-2015). Apartados 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 5.
- International Electrotechnical Commission. (2013). Sound system equipment – Part 3: Amplifiers (IEC 60268-3:2013). Apartados 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 diferencia de frecuencias (d_d,n), distorsión total por diferencia de frecuencias, intermodulación dinámica (DIM) y la THD ponderada ITU-R BS.468-4 / IEC 60268-1.
- 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).