Índices globales de aislamiento (ISO 717)
Normas aplicables: ISO 717Referencias: Hopkins 2007
Toda magnitud de aislamiento acústico de esta documentación termina su viaje igual: entra un espectro por bandas y sale un número único. Sea el espectro un de laboratorio, un o de campo, un de fachada, un o de impactos o un de flancos, lo que citan las normativas es el número único ponderado de ISO 717, y dos motores de curva de referencia los producen todos: ISO 717-1 para las magnitudes aéreas, donde una desviación desfavorable es una banda que cae por debajo de la referencia, e ISO 717-2 para las de impactos, con el signo invertido porque un nivel de impactos más alto es peor. Esta guía cubre los propios motores: la regla de desplazamiento, los términos de adaptación espectral , y , las variantes de rango ampliado y con un decimal, y la ficha ISO 717. Las mediciones que producen los espectros viven en las guías de campo, laboratorio, intensidad, método de control y flancos; la predicción que consume los índices es EN 12354.
¿Cómo calculo Rw a partir de datos de reducción acústica en tercios de octava con Python?
Sección titulada «¿Cómo calculo Rw a partir de datos de reducción acústica en tercios de octava con Python?»Pasa los 16 valores en tercios de octava de 100 Hz a 3150 Hz a
building.weighted_rating(R). Desplaza la curva de referencia de ISO 717-1 y
devuelve el índice leído a 500 Hz, junto con los términos de adaptación
espectral y . Para el espectro medido que se usa abajo,
w.rating, w.c, w.ctr imprime 30 -2 -3: . La
misma llamada valora , y .
Índices de ruido aéreo (ISO 717-1)
Sección titulada «Índices de ruido aéreo (ISO 717-1)»El espectro por bandas se reduce a un número mediante el método de la curva de referencia de ISO 717-1: una curva de referencia fija se desplaza en pasos de 1 dB hacia la curva medida hasta que la suma de desviaciones desfavorables (donde la medición cae por debajo de la referencia) sea lo mayor posible pero no mayor que 32,0 dB (16 bandas de tercio de octava) o 10,0 dB (5 bandas de octava). Los dos topes son una sola regla, no dos constantes: y , así que lo que el método permite en realidad es una desviación desfavorable media de 2 dB por banda. El índice (, , …) es la referencia desplazada leída a 500 Hz.
La curva de referencia en sí (ISO 717-1:2020, Tabla 3) tampoco es arbitraria. Sube 9 dB por octava de 100 Hz a 500 Hz, después solo 4 dB en la octava siguiente, y es plana a partir de 1250 Hz. Un motor de valoración que lleve esa forma es deliberadamente indulgente en baja frecuencia e implacable por encima de 1 kHz, que es la razón por la que una construcción con un valle en baja frecuencia puede valorarse bien, y la razón por la que existe : para devolverle la penalización. El objeto de resultado entrega la curva en su posición desplazada, así que la curva sin desplazar está a una resta de distancia:
import numpy as npfrom phonometry import building
R = [20.4, 16.3, 17.7, 22.6, 22.4, 22.7, 24.8, 26.6, 28.0, 30.5, 31.8, 32.5, 33.4, 33.0, 31.0, 25.5]w = building.weighted_rating(R)
# La curva se desplaza hasta que lee `rating` a 500 Hz; sin desplazar lee ahí# 52 dB, así que el desplazamiento aplicado fue 52 - rating.reference = np.asarray(w.shifted_reference) + (52 - w.rating)print(w.rating, 52 - w.rating) # 30 22 (desplazada 22 dB hacia abajo)print(reference.astype(int).tolist())# [33, 36, 39, 42, 45, 48, 51, 52, 53, 54, 55, 56, 56, 56, 56, 56]Los términos de adaptación espectral (ruido rosa) y (tráfico urbano) añaden la penalización en baja frecuencia de una fuente real. Los dos salen de una única definición (apartado 4.5, Fórmulas (1) y (2)): revalorar el espectro medido frente a un espectro de fuente normalizado y restar el índice basado en la curva,
donde es el nivel del espectro de fuente en la banda (los dos espectros están ponderados A y normalizados a 0 dB globales) y el aislamiento medido en esa banda, con un decimal. Los dos términos se diferencian solo en qué espectro se sustituye: el n.º 1, ruido rosa ponderado A, representativo de las actividades domésticas (habla, música, radio, televisión), da ; el n.º 2, tráfico rodado urbano ponderado A, cuya energía se concentra en baja frecuencia, da . De modo que el índice más el término ( para un índice de laboratorio, o para las magnitudes de la guía de campo, e igual con ) es la diferencia de nivel ponderada A que la construcción consigue frente a esa fuente, que es lo que hace que lo que merece la pena especificar sea la suma y no el índice a secas. Para leerlos:
- se mantiene pequeño en la mayoría de construcciones (0 a −2 dB es lo típico): el espectro rosa se parece a la ponderación ya implícita en la curva de referencia.
- castiga el aislamiento débil en baja frecuencia. Una doble hoja ligera con su resonancia masa-aire-masa cerca de 100 Hz puede llevar un de −5 a −10 dB, mientras que una pared monolítica pesada con el mismo pierde mucho menos: dos construcciones con la misma valoración pueden diferir de forma audible frente al tráfico.
- Diseña con el descriptor que corresponda al ruido, sobre la magnitud de campo que el requisito valora: para una fachada a una calle con tráfico, (o el índice a secas, donde la reglamentación lo diga) entre viviendas, los dos requisitos de ejemplo de ISO 717-1, 5.3.
Dos construcciones, un mismo índice. Los dos espectros salen de los propios modelos de panel de la biblioteca, el método de Sharp para la hoja de hormigón y el modelo masa-aire-masa de doble pared para la ligera, y los dos se valoran en dB, así que una especificación escrita solo sobre las trata como intercambiables. No lo son: la doble hoja entra en el rango valorado todavía saliendo de su resonancia masa-aire-masa de 82 Hz y, frente al tráfico, cede 6 dB más que el muro de hormigón. es aquello sobre lo que realmente se especifica una fachada a una calle con tráfico.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as np# `building` es el import del bloque de la curva de referencia de arriba.
freqs = np.array([100, 125, 160, 200, 250, 315, 400, 500, 630, 800, 1000, 1250, 1600, 2000, 2500, 3150], dtype=float)
# Hormigón denso de 150 mm: m' = 2300 x 0.15 = 345 kg/m2, fc = 125 Hz.heavy = np.round(building.single_panel_transmission_loss( freqs, 345.0, critical_frequency=125.0).transmission_loss, 1)# Doble hoja sobre montantes metálicos: 12 kg/m2 por hoja, cámara de 90 mm.light_result = building.double_wall_transmission_loss(freqs, mass1=12.0, mass2=12.0, gap=0.09)light = np.round(light_result.transmission_loss, 1)
w_heavy = building.weighted_rating(heavy)w_light = building.weighted_rating(light)print(w_heavy.rating, w_heavy.c, w_heavy.ctr) # 49 -2 -7print(w_light.rating, w_light.c, w_light.ctr) # 49 -5 -13print(round(light_result.resonance_frequency, 1)) # 81.5 Hz
fig, (ax_spec, ax_bar) = plt.subplots(1, 2, figsize=(13.0, 5.8))x = np.arange(16)ax_spec.plot(x, w_heavy.shifted_reference, "--", label="referencia desplazada")ax_spec.plot(x, heavy, "-o", label="hormigón denso de 150 mm")ax_spec.plot(x, light, "-s", label="doble hoja, 12 kg/m2 + 90 mm")ax_spec.set_xticks(x, [f"{f:g}" for f in freqs], rotation=45, fontsize=8)ax_spec.set(xlabel="Frecuencia [Hz]", ylabel="Índice de reducción acústica R [dB]")ax_spec.legend()
groups = ("Rw", "Rw + C", "Rw + Ctr")xb = np.arange(3)ax_bar.bar(xb - 0.19, [w_heavy.rating, w_heavy.rating + w_heavy.c, w_heavy.rating + w_heavy.ctr], width=0.36, label="hormigón")ax_bar.bar(xb + 0.19, [w_light.rating, w_light.rating + w_light.c, w_light.rating + w_light.ctr], width=0.36, label="doble hoja")ax_bar.set_xticks(xb, groups)ax_bar.set_ylabel("Número global [dB]")ax_bar.legend()plt.show()Cada figura de un índice de esta página muestra la curva donde se detuvo. La regla que la puso ahí es iterativa, y las dos posiciones que deciden la respuesta son justo las que una figura terminada ya ha descartado: el último desplazamiento cuya suma desfavorable todavía se pasaba de 32,0 dB y el desplazamiento siguiente a la respuesta, que es válido pero desaprovecha el margen. El clip recorre esos pasos con los dos motores sobre los dos espectros resueltos de esta página.
La curva de referencia avanza en pasos de 1 dB hacia el espectro medido mientras las desviaciones desfavorables se sombrean banda a banda y su suma se acerca al tope de 32,0 dB. El motor aéreo se detiene en 31,8 dB para Rw = 30 dB, un paso antes de la posición que desaprovecharía el margen; el motor de impactos ejecuta después la misma regla con el signo de la desviación invertido, con la curva subiendo paso a paso y deteniéndose en 28,0 dB para L'nT,w = 79 dB.
La curva de referencia avanza en pasos de 1 dB hacia el espectro medido mientras las desviaciones desfavorables se sombrean banda a banda y su suma se acerca al tope de 32,0 dB. El motor aéreo se detiene en 31,8 dB para Rw = 30 dB, un paso antes de la posición que desaprovecharía el margen; el motor de impactos ejecuta después la misma regla con el signo de la desviación invertido, con la curva subiendo paso a paso y deteniéndose en 28,0 dB para L'nT,w = 79 dB.
Los dos recorridos se detienen donde manda la norma: en la mayor suma desfavorable que no pasa de 32,0 dB. El paso anterior se rechaza por pasarse del tope, y el siguiente es válido pero lee un decibelio menos sin motivo, que es lo que excluye el «lo mayor posible» del apartado 4.4 de ISO 717-1:2020 y del 4.3.1 de ISO 717-2:2020.
La referencia desplazada se ha detenido donde el área desfavorable sombreada suma 31,8 dB: un paso hacia atrás se pasaría del tope, con 44,1 dB, y un paso más hacia abajo desaprovecharía el margen, con 20,6 dB. El índice se lee después sobre esa curva a 500 Hz, no sobre la medición: el espectro medido toca ahí 26,6 dB, y es 30 dB.
# `building`, `R` y `w` vienen del bloque de la curva de referencia de arriba.print(w.rating, w.c, w.ctr) # 30 -2 -3 -> Rw(C;Ctr) = 30(-2;-3)print(w.unfavourable_sum) # 31.8 (tope 32.0 = 2.0 x 16)
w.plot() # R medido frente a la referencia ISO 717-1 desplazada, desviaciones sombreadas (requiere matplotlib)Mostrar el código de esta figura
import matplotlib.pyplot as pltfrom phonometry import building
# Índice de un solo número desde un espectro R medido de 16 bandas (ISO 717-1 Anexo C)R = [20.4, 16.3, 17.7, 22.6, 22.4, 22.7, 24.8, 26.6, 28.0, 30.5, 31.8, 32.5, 33.4, 33.0, 31.0, 25.5]w = building.weighted_rating(R)
# En una línea — la curva medida frente a la referencia ISO 717-1 desplazada:w.plot(language="es")plt.show()
# A mano, con los campos de la curva por banda que ahora lleva el resultado:fig, ax = plt.subplots()ax.semilogx(w.band_centers, w.measured, "o-", label="R medido")ax.semilogx(w.band_centers, w.shifted_reference, "s--", label="Referencia desplazada")ax.fill_between(w.band_centers, w.measured, w.shifted_reference, where=w.measured < w.shifted_reference, interpolate=True, alpha=0.3, label="Desviaciones desfavorables")ax.set_xlabel("Frecuencia [Hz]")ax.set_ylabel("Índice de reducción acústica [dB]")ax.set_title(f"Rw = {w.rating} dB (C={w.c:+d}; Ctr={w.ctr:+d})")ax.legend()plt.show()Parámetros de weighted_rating()
Sección titulada «Parámetros de weighted_rating()»| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
|---|---|---|---|---|
values_by_band | array 1D | dB | 16 (tercios) o 5 (octavas) | , , … medidos por banda |
bands | str o None | — | 'third-octave' / 'octave' / None | None lo infiere del número de bandas |
weighted_rating() devuelve un WeightedRatingResult (rating, c, ctr,
unfavourable_sum, todos enteros salvo la suma), más los tres campos con los
que se dibujan las figuras de esta página: band_centers, measured y
shifted_reference, y quantity, que nombra lo que se ha valorado.
Índices de ruido de impactos (ISO 717-2)
Sección titulada «Índices de ruido de impactos (ISO 717-2)»El índice de un solo número (ISO 717-2) desplaza el mismo estilo de curva de referencia, pero una desviación desfavorable se produce ahora donde la medición supera la referencia (el ruido de impactos es peor cuanto más alto), el signo opuesto a ISO 717-1. El índice (, , ) es la referencia desplazada leída a 500 Hz; para bandas de octava se reduce además en 5 dB. El término de adaptación espectral (Fórmulas (A.1) a (A.3) de ISO 717-2:2020) usa la suma energética sobre 100–2500 Hz (los primeros 15 tercios, excluyendo 3150 Hz) o 125–2000 Hz (octavas).
Los dB son un desplazamiento de normalización, no un hecho físico: se eligen para que salga en torno a cero en un forjado macizo con un revestimiento eficaz, ligeramente positivo en un forjado de viguetas de madera cuyos picos de baja frecuencia dominan, y hasta dB en un forjado de hormigón desnudo o mal revestido (A.1). Leído así, el dB del ejemplo de más abajo dice que el espectro medido es mucho más plano y está mucho más cargado hacia la alta frecuencia que la curva de referencia, es decir, una losa desnuda y no un forjado con revestimiento, así que el forjado es mejor en las bajas frecuencias que excitan las pisadas de lo que sugiere por sí solo dB. El corolario es una trampa de diseño: un revestimiento blando actúa donde la curva de referencia es más exigente, así que mejora el número único más de lo que mejora lo que oye el vecino. La suma sin ponderar sobre la que se construye existe precisamente porque se correlaciona mejor con el ruido de pisadas ponderado A que la valoración por curva de referencia, y por eso los requisitos se escriben a veces sobre en lugar de sobre .
Para mediciones ampliadas hasta 50 Hz,
weighted_impact_rating_extended devuelve además el término de rango ampliado
(NOTA de A.2.1) y, con one_decimal=True, el índice en
pasos de 0,1 dB usado en las declaraciones de incertidumbre (reproduce los
valores impresos dB y dB de
A.2.2).
La misma regla de ajuste con el signo invertido: el área sombreada es donde la medición se eleva por encima de la referencia, y la curva se desplaza hacia arriba hasta que esa área alcanza 28,0 dB frente al mismo tope de 32,0 dB. Un forjado valorado así es peor cuanto más alto es su número.
import numpy as npfrom phonometry import building
# 16 niveles de impactos en tercios de octava (100 Hz - 3150 Hz), dB, del# ejemplo resuelto del Anexo C de ISO 717-2; medidos con T = T0, así que ya# son los valores estandarizados L'nT.l_nt = np.array([62.1, 63.2, 63.5, 66.2, 68.5, 70.0, 71.7, 73.1, 73.8, 73.5, 73.8, 73.3, 73.1, 73.0, 72.4, 71.2])
# Índice de impactos ponderado + término de adaptación espectral CI (ISO 717-2)res_imp = building.weighted_impact_rating(l_nt)print(res_imp.rating, res_imp.ci, res_imp.unfavourable_sum) # 79 -11 28.0 -> L'nT,w(CI)=79(-11)
# Los datos en banda de octava llevan la reducción extra de -5 dB (apartado 4.3.2)octave = np.array([65.3, 64.5, 58.0, 55.8, 43.0])print(building.weighted_impact_rating(octave).rating) # 54
res_imp.plot() # L'nT medido frente a la referencia ISO 717-2 desplazada, exceso sombreado (requiere matplotlib)Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import building
# 16 niveles de impactos estandarizados L'nT en tercios de octava, dB# (ejemplo resuelto del Anexo C de ISO 717-2, medidos con T = T0).l_nt = np.array([62.1, 63.2, 63.5, 66.2, 68.5, 70.0, 71.7, 73.1, 73.8, 73.5, 73.8, 73.3, 73.1, 73.0, 72.4, 71.2])# Índice de impactos ponderado + término de adaptación espectral CI (ISO 717-2)res_imp = building.weighted_impact_rating(l_nt)
# En una línea — L'nT medido frente a la referencia ISO 717-2 desplazada (exceso sombreado):res_imp.plot(language="es")plt.show()
# A mano, con la curva por banda que ahora lleva el resultado (signo opuesto: la# desviación desfavorable está donde el nivel MEDIDO supera la referencia).# Aquí la entrada fue l_n_t, así que la magnitud valorada es el nivel de campo L'nT,w:fig, ax = plt.subplots()ax.semilogx(res_imp.band_centers, res_imp.measured, "o-", label="L'nT medido")ax.semilogx(res_imp.band_centers, res_imp.shifted_reference, "s--", label="Referencia desplazada")ax.fill_between(res_imp.band_centers, res_imp.shifted_reference, res_imp.measured, where=res_imp.measured > res_imp.shifted_reference, interpolate=True, alpha=0.3, label="Desviaciones desfavorables")ax.set_xlabel("Frecuencia [Hz]")ax.set_ylabel("Nivel de presión acústica de impactos [dB]")ax.set_title(f"L'nT,w = {res_imp.rating} dB (CI={res_imp.ci:+d})")ax.legend()plt.show()Pasar el espectro estandarizado a weighted_impact_rating reproduce los
valores del Anexo C de ISO 717-2 (tercios , ;
octavas 54, ).
Parámetros de weighted_impact_rating()
Sección titulada «Parámetros de weighted_impact_rating()»| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
|---|---|---|---|---|
values_by_band | array 1D | dB | 16 (tercios) o 5 (octavas) | , o medidos por banda |
bands | str o None | — | 'third-octave' / 'octave' / None | None lo infiere del número de bandas |
weighted_impact_rating() devuelve un ImpactRatingResult (rating,
ci enteros, unfavourable_sum en dB), con los mismos tres campos de dibujo
que el resultado aéreo: band_centers, measured y shifted_reference.
Rangos de frecuencia ampliados e índices con un decimal
Sección titulada «Rangos de frecuencia ampliados e índices con un decimal»Cuando la medición cubre más que las 16 bandas básicas de 100–3150 Hz, el
Anexo B de ISO 717-1 define términos de adaptación adicionales con el rango
como subíndice (, ,
y sus homólogos ), calculados con los espectros de
la Tabla B.1 sobre el rango ampliado. weighted_rating_extended toma los
valores por banda con sus frecuencias centrales y devuelve el índice básico
más todos los términos ampliados que cubra la entrada (la variante de impactos
weighted_impact_rating_extended añade ). Con
one_decimal=True la curva de referencia se desplaza en pasos de 0,1 dB y
todas las reducciones conservan un decimal: la variante que ISO 717 prescribe
«para la expresión de la incertidumbre» y que el Anexo B de ISO 12999-1 exige
al declarar la incertidumbre de un valor único.
from phonometry import building
# Índice de un solo número desde un espectro R medido de 16 bandas (ISO 717-1 Anexo C)R = [20.4, 16.3, 17.7, 22.6, 22.4, 22.7, 24.8, 26.6, 28.0, 30.5, 31.8, 32.5, 33.4, 33.0, 31.0, 25.5]
freqs = [50, 63, 80, 100, 125, 160, 200, 250, 315, 400, 500, 630, 800, 1000, 1250, 1600, 2000, 2500, 3150, 4000, 5000]r_ext = [18.7, 19.2, 20.0, *R, 26.8, 29.2] # ISO 717-1 Anexo C, Tabla C.2ext = building.weighted_rating_extended(r_ext, freqs)print(ext.rating, ext.c, ext.ctr, ext.c_50_5000, ext.ctr_50_5000)# 30 -2 -3 -2 -4 -> Rw(C;Ctr;C50-5000;Ctr,50-5000) = 30(-2;-3;-2;-4)
one_dp = building.weighted_rating_extended(r_ext, freqs, one_decimal=True)print(one_dp.rating) # 30.0, el índice en pasos de 0,1 dB para incertidumbres
ext.plot() # curva del rango ampliado frente a la referencia desplazada, términos del Anexo B en el título (requiere matplotlib)El índice se sigue evaluando sobre las 16 bandas básicas (100–3150 Hz); las bandas ampliadas solo entran en los términos de adaptación del Anexo B, de modo que la curva de referencia desplazada se detiene en los bordes del rango básico mientras la curva medida continúa por el rango ampliado sombreado.
Mostrar el código de esta figura
import matplotlib.pyplot as pltfrom phonometry import building
# Índice de un solo número desde un espectro R medido de 16 bandas (ISO 717-1 Anexo C)R = [20.4, 16.3, 17.7, 22.6, 22.4, 22.7, 24.8, 26.6, 28.0, 30.5, 31.8, 32.5, 33.4, 33.0, 31.0, 25.5]freqs = [50, 63, 80, 100, 125, 160, 200, 250, 315, 400, 500, 630, 800, 1000, 1250, 1600, 2000, 2500, 3150, 4000, 5000]r_ext = [18.7, 19.2, 20.0, *R, 26.8, 29.2] # ISO 717-1 Anexo C, Tabla C.2ext = building.weighted_rating_extended(r_ext, freqs)
# Una línea: la curva del rango ampliado frente a la referencia básica desplazada:ext.plot(language="es")plt.show()
# A mano, desde las curvas por banda que porta el resultado (la curva completa# del rango ampliado en ext, la referencia de las bandas básicas en ext.core):fig, ax = plt.subplots()ax.semilogx(ext.band_centers, ext.measured, "o-", label="R medido")ax.semilogx(ext.core.band_centers, ext.core.shifted_reference, "s--", label="Referencia desplazada (bandas básicas)")ax.fill_between(ext.core.band_centers, ext.core.measured, ext.core.shifted_reference, where=ext.core.measured < ext.core.shifted_reference, interpolate=True, alpha=0.3, label="Desviaciones desfavorables")ax.set_xlabel("Frecuencia [Hz]")ax.set_ylabel("Índice de reducción acústica [dB]")ax.set_title(f"Rw = {ext.rating} dB (C50-5000={ext.c_50_5000:+g}; " f"Ctr,50-5000={ext.ctr_50_5000:+g})")ax.legend()plt.show()Informe de ISO 717 (.report())
Sección titulada «Informe de ISO 717 (.report())»Ambos resultados de valoración generan, mediante el método report(path), una
ficha en PDF de una sola página con el formato de un informe de ensayo de
laboratorio acreditado: la línea de base normativa (norma de medición más la
parte de valoración de ISO 717), un bloque de encabezado de metadatos opcional,
la tabla de tercios de octava junto a la gráfica de la curva medida frente a la
referencia desplazada (el propio .plot() del resultado), el número único en
un recuadro, una fila de veredicto opcional y un pie con el descargo fijo.
WeightedRatingResult.report() etiqueta la ficha aérea de ISO 717-1
(, desviaciones donde la referencia supera a la medida);
ImpactRatingResult.report() etiqueta la ficha de impactos de ISO 717-2
(, con el signo contrario). SoundReductionResult.report() es
una utilidad que valora el predicho y escribe su ficha en una sola
llamada; ese resultado sale de los modelos de panel EN 12354 de
Aislamiento acústico de paneles,
así que es el único punto de entrada de aquí cuyo espectro de partida nunca se
midió.
Los metadatos del informe se pasan como una dataclase congelada ReportMetadata
(todos los campos opcionales; solo se representan los suministrados y los campos
numéricos deben cumplir su rango físico específico, detallado en la tabla de más
abajo). Pasar metadata=None genera una ficha
de predicción ligera (solo el cuerpo, el resultado y el descargo). Cuando se
define metadata.requirement se añade una fila de veredicto: una valoración
aérea aprueba cuando iguala o supera el requisito y una de impactos cuando lo
iguala o queda por debajo (un nivel de impactos menor es mejor). Con
verbose=True la tabla de dos columnas f | valor se cambia por las columnas
del Anexo C de ISO 717 (frecuencia, valor medido, referencia desplazada,
desviación desfavorable).
La generación necesita reportlab, mantenido fuera de las dependencias de
ejecución como el extra opcional phonometry[report]
(pip install phonometry[report]); si falta reportlab se lanza un ImportError
claro con el comando de instalación, y la gráfica sigue necesitando matplotlib
(phonometry[plot]). Solo se admite engine="reportlab"; cualquier otro motor
lanza ValueError. La ficha se genera en inglés por defecto; pasa
language="es" para una ficha en español (cadenas fijas traducidas y coma como
separador decimal), p. ej.
building.weighted_rating(R).report("Rw_fiche_es.pdf", language="es").
from phonometry import building, ReportMetadata
# Valoración aérea a partir de un espectro R de 16 bandas (ISO 717-1)R = [20.4, 16.3, 17.7, 22.6, 22.4, 22.7, 24.8, 26.6, 28.0, 30.5, 31.8, 32.5, 33.4, 33.0, 31.0, 25.5]metadata = ReportMetadata( specimen="Muro de hormigón armado de 200 mm", client="Cliente de Ensayos Acústicos S.L.", area=10.0, mass_per_area=460.0, source_volume=53.0, receiving_volume=51.0, temperature=21.5, relative_humidity=45.0, pressure=101.3, test_room="Sala de transmisión T1", measurement_standard="ISO 10140-2", test_date="2026-07-18", laboratory="Laboratorio de referencia Phonometry", operator="José Manuel Requena Plens", report_id="PHN-2026-0042", requirement=42.0, # añade la fila de veredicto CUMPLE/NO CUMPLE)building.weighted_rating(R).report( "Rw_ficha.pdf", metadata=metadata) # Rw (C; Ctr)
# Valoración de impactos a partir de un espectro L'nT de 16 bandas (ISO 717-2)l_nt = [45.0, 47.0, 48.0, 49.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 55.0, 52.0, 49.0, 46.0]building.weighted_impact_rating(l_nt).report("Lnw_ficha.pdf") # Ln,w (CI)Ambas fichas de ejemplo se regeneran con make reports y se conservan
renderizadas en el repositorio; pulsa cualquier vista previa para abrir el PDF.

Ficha de aislamiento a ruido aéreo de una página: una cabecera de metadatos (cliente, muestra, superficie del elemento de ensayo, volúmenes de las salas, temperatura y humedad por sala, presión ambiente y montaje), la tabla de R en tercios de octava junto a la curva medida frente a la referencia desplazada, el resultado de un solo número Rw (C; Ctr) en caja y una fila de veredicto CUMPLE frente al requisito de 30 dB.

Ficha de aislamiento a ruido de impactos con el mismo formato acreditado para el nivel de presión acústica de impactos normalizado Ln: la cabecera de metadatos, la tabla de Ln en tercios de octava junto a la curva medida frente a la referencia desplazada con la lectura a 500 Hz, el resultado de un solo número Ln,w (CI) en un recuadro y una fila de veredicto NO CUMPLE frente al requisito de 53 dB (un nivel de impacto más bajo es mejor).
Metadatos del informe (ReportMetadata)
Sección titulada «Metadatos del informe (ReportMetadata)»Todos los campos son opcionales y solo se renderizan los que se aportan, de modo que el mismo objeto genera una ficha acreditada completa y una ficha ligera de predicción. Los campos numéricos se validan al construir el objeto según su rango físico.
| Campo | Tipo | Se renderiza como |
|---|---|---|
specimen, client, mounted_by, manufacturer | str | Identidad de cabecera del elemento ensayado y para quién / quién lo montó |
area, mass_per_area | float > 0 | Superficie del elemento de ensayo (m²) y masa por unidad de superficie medida (kg/m²) |
source_volume, receiving_volume | float > 0 | Volúmenes de las salas (m³) |
temperature, relative_humidity | float | Clima representativo único: temperatura del aire (°C, cualquier signo), humedad relativa (0–100 %) |
pressure | float > 0 | Presión (estática) ambiente durante el ensayo (kPa) |
source_temperature, source_relative_humidity, receiving_temperature, receiving_relative_humidity | float | Clima por recinto cuando el recinto emisor y el receptor se informan por separado (mismos rangos que arriba) |
test_room, mounting, measurement_standard, test_date | str | Instalación, condición de montaje, norma de medición (forma la línea de base normativa) y fecha de ensayo |
laboratory, operator, report_id, notes | str | Pie: institución, línea de firma del operador, número de informe y observaciones libres |
requirement | float | Valor objetivo de un solo número; añade la fila de veredicto (el aéreo cumple si es mayor o igual, el de impactos si es menor o igual) |
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto
El índice aéreo por curva de referencia de ISO 717-1:2020 (la regla de desplazamiento de 1 dB con los topes de desviaciones desfavorables de 32,0 dB / 10,0 dB, leído a 500 Hz) con los términos de adaptación espectral y del Anexo A, mediante
building.weighted_rating; el índice de impactos de ISO 717-2:2020 con el signo de desviación opuesto, la reducción de −5 dB en octavas y el término , mediantebuilding.weighted_impact_rating; los términos de rango ampliado del Anexo B / A.2.1 y las variantes con un decimal en pasos de 0,1 dB mediantebuilding.weighted_rating_extendedybuilding.weighted_impact_rating_extended; y la ficha ISO 717 con.report()y el contenedor compartidoReportMetadata. La conformidad se ancla en los propios ejemplos resueltos del Anexo C de las normas.No cubierto
Nada en esta página mide: cada función toma un espectro por bandas ya medido (o predicho) de las guías de campo, laboratorio, intensidad, método de control o flancos. El número único de fachada del Anexo F de ISO 16283-3 y el de flancos reutilizan estos motores desde sus propias guías en lugar de duplicarlos. Un miembro de la familia ISO 717 falta a propósito: el nivel máximo de impactos ponderado A del Anexo D de ISO 717-2:2020, que valora la pelota de caucho y la máquina de neumático. No desplaza curva alguna, es una suma energética de niveles de banda ponderados A, así que no lo produce ninguno de los dos motores de esta página y vive con las fuentes que valora, en Fuentes de impacto pesadas y blandas.
Véase también
Sección titulada «Véase también»- Medición del aislamiento en campo (ISO 16283): los espectros aéreos, de impacto y de fachada que estos motores valoran en campo.
- Medición del aislamiento en laboratorio: los y de laboratorio tras y .
- Aislamiento acústico por intensidad (ISO 15186): los índices por intensidad valorados con el mismo motor aéreo.
- Método de control del aislamiento (ISO 10052): las magnitudes del método de control y sus índices automáticos.
- Transmisión por flancos en laboratorio (ISO 10848): los descriptores de flanco y .
- Mejora del aislamiento a impacto de suelos (ISO 16251-1): la mejora ponderada construida sobre el suelo de referencia de ISO 717-2.
- Predicción del aislamiento acústico (EN 12354): el modelo de número único que consume estos índices.
- Teoría: la derivación de la curva de referencia tras los índices globales ponderados.
- Referencia de la API:
building.measurement.insulation.
Respuestas rápidas
Sección titulada «Respuestas rápidas»¿Cuál es la diferencia entre los términos de adaptación espectral C y Ctr?
Sección titulada «¿Cuál es la diferencia entre los términos de adaptación espectral C y Ctr?»Ambos vuelven a valorar la misma curva medida frente a los dos espectros de fuente del Anexo A de ISO 717-1: frente a ruido rosa ponderado A (actividades domésticas: habla, música, radio, televisión) y frente a tráfico rodado urbano ponderado A, cuya energía se concentra en baja frecuencia. suele estar entre 0 y −2 dB, mientras que una doble hoja ligera con resonancia masa-aire-masa cerca de 100 Hz puede llevar un de −5 a −10 dB.
Referencias
Sección titulada «Referencias»- Hopkins, C. (2007). Sound insulation. Butterworth-Heinemann. https://doi.org/10.4324/9780080550473La interpretación de los índices globales y lo que esconden sobre los espectros por bandas subyacentes. ISBN 978-0-7506-6526-1.
- International Organization for Standardization. (2020). Acoustics — Rating of sound insulation in buildings and of building elements — Part 1: Airborne sound insulation (ISO 717-1:2020). La valoración por curva de referencia y los términos de adaptación espectral C y Ctr interpretados arriba; también el motor de un solo número para la magnitud de fachada (Anexo F).
- International Organization for Standardization. (2020). Acoustics — Rating of sound insulation in buildings and of building elements — Part 2: Impact sound insulation (ISO 717-2:2020). La valoración de impactos por curva de referencia y el término de adaptación espectral CI, con el término de rango ampliado CI,50-2500.