<!-- canonical: https://jmrplens.github.io/phonometry/es/buildings/insulation/insulation-field/ -->
Source: https://jmrplens.github.io/phonometry/es/buildings/insulation/insulation-field/

Esta guía continúa desde la [guía de Acústica de salas](/phonometry/es/buildings/rooms/room-acoustics/):
la misma respuesta al impulso, medida a ambos lados de un cerramiento, da su
aislamiento acústico. Esta página cubre la medición con método de ingeniería
de ISO 16283 en el edificio terminado: las diferencias de niveles aéreas $D$,
$D_\mathrm{nT}$ y $R'$, los niveles de impactos $L'_\mathrm{nT}$ y $L'_\mathrm{n}$, el informe de
ensayo in situ y la incertidumbre de ISO 12999-1 que cualifica cada valor de
campo. Tres parientes cercanos tienen guías propias: el motor de curva de
referencia tras cada número único en
[Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/),
el cerramiento del edificio en
[Aislamiento acústico de fachadas](/phonometry/es/buildings/insulation/facade-insulation/) y
la vía rápida en bandas de octava en
[Método de control del aislamiento (ISO 10052)](/phonometry/es/buildings/insulation/insulation-survey/).
La caracterización en laboratorio de un elemento vive en
[Medición del aislamiento en laboratorio](/phonometry/es/buildings/insulation/insulation-lab/)
y la predicción del comportamiento in situ en
[Predicción del aislamiento acústico (EN 12354)](/phonometry/es/buildings/design/insulation-prediction/).

## ¿Cómo calculo DnT y R' a partir de una medición en campo con Python?

Promedia en energía los niveles de los recintos emisor y receptor por banda de
tercio de octava sobre las posiciones de micrófono de una misma posición de
altavoz, corrige el recinto receptor por ruido de fondo y pásalos, junto con el
tiempo de reverberación del recinto
receptor, a `building.airborne_insulation(l1, l2, t2, area=S, volume=V)`. El
resultado lleva la diferencia de niveles bruta `d`, la estandarizada `dnt` y,
cuando se dan `area` y `volume`, la aparente `r_prime`. Si se ha movido un único
altavoz entre posiciones, repite eso para cada posición y combina los
*resultados* con la Fórmula (6), no los niveles; véase
[La medición](#la-medicion-iso-16283-1).
Las mediciones de
impactos pasan por `building.impact_insulation(li, t2, volume=V)`, y cualquiera
de los dos espectros se valora con `building.weighted_rating` /
`weighted_impact_rating`.

## Aislamiento a ruido aéreo en campo (ISO 16283-1)

Para valorar una pared o un forjado, mide el nivel promediado en energía en
el recinto **emisor** ($L_1$) y en el recinto **receptor** ($L_2$) por banda de
tercio de octava y forma la diferencia de niveles $D = L_1 - L_2$. Dos
normalizaciones la hacen comparable entre recintos. La **diferencia de niveles
estandarizada** refiere el tiempo de reverberación del recinto receptor $T$ a
$T_0 = 0{,}5$ s (de modo que con $T = 0{,}5$ s, $D_\mathrm{nT} = D$ exactamente), y el
**índice de reducción acústica aparente** normaliza por la superficie del
cerramiento $S$ y el área de absorción de Sabine $A$:

$$
D_\mathrm{nT} = D + 10 \log_{10} \frac{T}{T_0}, \qquad
R' = D + 10 \log_{10} \frac{S}{A}, \qquad A = \frac{0{,}16\ V}{T}.
$$

Las posiciones se promedian en energía con
$L = 10 \log_{10}\left( \frac{1}{n} \sum_i 10^{L_i/10} \right)$.

La prima de $R'$ es una convención, no un adorno: las magnitudes con prima
($R'$, $L'_\mathrm{n}$, $L'_\mathrm{nT}$) se miden **en el edificio** e incluyen todas las
trayectorias por flancos, mientras que las $R$ y $L_\mathrm{n}$ sin prima son propiedades de
laboratorio del elemento solo, medidas con los flancos suprimidos. El mapa
completo laboratorio-campo vive en
[Medición del aislamiento en
laboratorio](/phonometry/es/buildings/insulation/insulation-lab/);
la predicción que tiende el puente entre ambos es
[EN 12354](/phonometry/es/buildings/design/insulation-prediction/).

Una sola medición da las tres magnitudes, así que **cuál de ellas va al informe
es una cuestión reglamentaria, no de medición.** $D_\mathrm{nT}$ describe la pareja de
recintos tal como la viven los ocupantes, y es en lo que la mayoría de los
códigos nacionales para vivienda declaran sus exigencias. $R'$ describe la
partición, normalizada por su área, y es lo que necesita una comparación frente
a un $R_\mathrm{w}$ de laboratorio o a una predicción EN 12354. Mide una vez y declara
después la magnitud en la que está escrita la exigencia, diciendo cuál es: un
$R'_\mathrm{A}$ no se puede contrastar con un límite en $D_\mathrm{nT,A}$ sin convertirlo antes
a través de la $T$ del recinto y del área de la partición; véase
[Código Técnico de la Edificación (CTE DB-HR)](/phonometry/es/buildings/insulation/spanish-building-code/),
que declara su exigencia entre recintos en $D_\mathrm{nT,A}$ y la de la tabiquería en
$R_\mathrm{A}$.

```python

from phonometry import building

# Promedia en energía varias posiciones de micrófono en una sala (dB)
print(round(float(building.energy_average_level([60.0, 66.0])), 1))   # 64.0

# Aislamiento en campo por banda; la superficie S y el volumen V añaden R'
l1 = np.full(16, 80.0)                                # niveles del recinto emisor
l2 = np.full(16, 40.0)                                # niveles del recinto receptor
t2 = np.full(16, 0.5)                                 # T del recinto receptor (s)
ins = building.airborne_insulation(l1, l2, t2, area=10.0, volume=50.0)
print(round(float(ins.dnt[0]), 1))                   # 40.0  (= D ya que T = T0)
print(round(float(ins.r_prime[0]), 1))               # 38.0

# El número único sale del motor de ISO 717-1 de la guía de índices
print(building.weighted_rating(ins.dnt).rating)      # 40  DnT,w
print(building.weighted_rating(ins.r_prime).rating)  # 38  R'w
```

Calcula `l1`, `l2` y `t2` en las mismas 16 bandas de tercio de octava de
100 Hz a 3150 Hz (obtén `t2` de
`room_parameters(ir, fs, limits=(100, 3150), fraction=3).t30`, por ejemplo) y
pásalos a `airborne_insulation`. Alimenta el espectro `dnt` (o `r_prime`) de esa
función a `weighted_rating`, de modo que cada banda quede alineada índice a
índice con la curva de referencia ISO 717-1.

Vale la pena llevarse la escala: en una pared o un forjado separador entre
viviendas las exigencias nacionales se sitúan típicamente en torno a
$D_\mathrm{nT,w} = 50$ dB y rara vez por debajo de 45 dB, así que los 40 dB de este
ejemplo deliberadamente plano las incumplirían todas. En una magnitud aérea más
alto es mejor, y 5 dB son más o menos el escalón entre una solución
constructiva que funciona y otra que genera quejas.

### Parámetros de `airborne_insulation()`

| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `l1` | array 1D o 2D | dB | uno/banda, o `(posiciones, bandas)` | Niveles del recinto emisor (2D se promedia en energía) |
| `l2` | array 1D o 2D | dB | mismo número de bandas | Niveles del recinto receptor |
| `t2` | array 1D | s | > 0, uno por banda | Tiempo de reverberación del recinto receptor |
| `area` | float, opcional | m² | > 0, con `volume` | Superficie del cerramiento $S$ (habilita $R'$) |
| `volume` | float, opcional | m³ | > 0, con `area` | Volumen del recinto receptor $V$ |
| `t0` | float | s | por defecto `0.5` | Tiempo de reverberación de referencia $T_0$ |

`airborne_insulation()` devuelve un `AirborneInsulationResult` (`d`, `dnt`,
`r_prime` o `None`). El motor de curva de referencia que convierte cualquiera
de esos espectros en $R_\mathrm{w}$, $R'_\mathrm{w}$ o $D_\mathrm{nT,w}$, sus términos de adaptación
espectral y sus variantes de rango ampliado están en
[Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/).

<span id="la-medicion-iso-16283-1"></span>

## La medición (apartados 7 y 9 de ISO 16283-1)

Las funciones consumen niveles por banda; la norma dice de dónde salen esos
niveles, y equivocarse ahí cambia el resultado más que cualquiera de las
operaciones anteriores.

**La fuente (apartados 7.1 y 7.2).** El sonido se genera con altavoces
funcionando simultáneamente en dos posiciones como mínimo, o con un único
altavoz desplazado a dos posiciones como mínimo. Si son varios altavoces han de
ser del mismo tipo, excitados al mismo nivel con señales similares pero no
correlacionadas, y cada uno debe cumplir el requisito de directividad del
Anexo A. La señal es estacionaria y de espectro continuo, y el nivel promediado
en energía del recinto emisor no debe variar más de 8 dB entre bandas de tercio
de octava contiguas, al menos por encima de 100 Hz — conforma el espectro
(normalmente hace falta un ecualizador gráfico) o recurre a mediciones
sucesivas en banda limitada. Los altavoces se sitúan a 0,5 m como mínimo de
cualquier paramento, preferiblemente a 1,0 m como mínimo del elemento
separador, medido hasta el centro del altavoz más próximo; posiciones distintas
no deben quedar en planos paralelos a un paramento separados menos de 0,7 m,
deben distar entre sí 0,7 m como mínimo y al menos dos de ellas 1,4 m como
mínimo. Cuando el elemento de ensayo es el forjado y el altavoz está en el
recinto superior, su base queda a 1,0 m como mínimo sobre el suelo.

**Los micrófonos (apartado 7.3).** Un mínimo de **cinco** posiciones por
recinto — y, con un único altavoz desplazado entre posiciones, cinco por
recinto *y por posición de altavoz*. No puede haber dos posiciones en el mismo
plano respecto a los paramentos del recinto, y el conjunto no debe formar una
retícula regular.

<span id="correccion-por-ruido-de-fondo"></span>

### Corrección por ruido de fondo (apartado 9.2)

Mide otra vez el recinto receptor con la fuente apagada, en las mismas
posiciones y con el mismo promediado, y compara banda a banda con el nivel
combinado de señal más fondo $L_\mathrm{sb}$:

- margen $\ge 10$ dB: usa $L_\mathrm{sb}$ sin tocarlo;
- $6 < \text{margen} < 10$ dB: resta el fondo en energía,
  $L = 10\log_{10}(10^{L_\mathrm{sb}/10} - 10^{L_\mathrm{b}/10})$ (Fórmula 14), con los dos
  niveles reducidos antes a un decimal;
- margen $\le 6$ dB: aplica la corrección fija de 1,3 dB y señala la banda en
  el informe como que está en el límite de la medición.

```python

l2_sb = np.array([44.0, 41.0, 39.5, 38.0])   # recinto receptor, fuente encendida
l2_bg = np.array([30.0, 33.0, 31.0, 34.0])   # recinto receptor, fuente apagada
margin = l2_sb - l2_bg                       # 14.0  8.0  8.5  4.0 dB

formula_14 = 10 * np.log10(10 ** (l2_sb / 10) - 10 ** (l2_bg / 10))
l2_corr = np.where(margin >= 10.0, l2_sb,
                   np.where(margin > 6.0, formula_14, l2_sb - 1.3))
print(np.round(l2_corr, 2))     # [44.   40.25 38.84 36.7 ]  <- última banda señalada
```

`building.background_correction` existe, pero implementa la regla de
**laboratorio de ISO 10140-4** que se usa en
[Medición del aislamiento en laboratorio](/phonometry/es/buildings/insulation/insulation-lab/),
cuyo umbral superior es de 15 dB y no de 10 dB. Aplicada a datos de campo resta
energía en la franja de margen de 10-15 dB en la que ISO 16283-1 no pide nada
— hasta 0,458 dB con un margen de 10 dB — y, como actúa sobre el recinto
receptor, eso acaba siendo aislamiento declarado de más, banda a banda, en $D$.
Para niveles de campo usa la expresión de tres regímenes de arriba.

### Promediado sobre posiciones de altavoz (Fórmula 6)

Con **varios altavoces funcionando simultáneamente** (apartado 7.3.3) hay una
sola medición: promedia en energía las posiciones de cada recinto, corrige por
ruido de fondo y forma $D_\mathrm{nT}$ o $R'$ una sola vez. Con un **único altavoz
desplazado entre posiciones** (apartado 7.3.4) la norma *no* promedia los
niveles entre posiciones de altavoz. Forma el resultado para cada posición y
promedia los *resultados* como factores de transmisión,

$$
D_\mathrm{nT} = -10\log_{10}\left[\frac{1}{m}\sum_{j=1}^{m} 10^{-D_{\mathrm{nT},j}/10}\right],
$$

que es lo que da más peso a la peor posición. Las dos vías no dan el mismo
número:

```python

# `building` es el import del bloque de aislamiento a ruido aéreo de arriba.

t2 = np.full(16, 0.5)
l1a, l2a = np.full(16, 80.0), np.full(16, 40.0)   # posición de altavoz 1
l1b, l2b = np.full(16, 83.0), np.full(16, 37.0)   # posición de altavoz 2

# apartado 7.3.4: un resultado por posición de altavoz, combinados con la Fórmula (6).
a = building.airborne_insulation(l1a, l2a, t2, area=10.0, volume=50.0)
b = building.airborne_insulation(l1b, l2b, t2, area=10.0, volume=50.0)
dnt = -10 * np.log10(np.mean(10.0 ** (-np.vstack([a.dnt, b.dnt]) / 10.0), axis=0))
print(round(float(dnt[0]), 1), building.weighted_rating(dnt).rating)        # 42.0 42

# Promediar antes los niveles: otro número, más halagüeño.
l1m = building.energy_average_level(np.vstack([l1a, l1b]), axis=0)
l2m = building.energy_average_level(np.vstack([l2a, l2b]), axis=0)
naive = building.airborne_insulation(l1m, l2m, t2, area=10.0, volume=50.0)
print(round(float(naive.dnt[0]), 1), building.weighted_rating(naive.dnt).rating)  # 43.0 43
```

<span id="recintos-pequenos-apartado-8"></span>

### Recintos pequeños: el procedimiento de baja frecuencia (apartado 8)

Este es fácil de pasar por alto y es **obligatorio**. Cuando el recinto emisor
o el receptor, o los dos, tiene un volumen menor que 25 m³, calculado al metro
cúbico más próximo, de modo que un dormitorio de 25,4 m³ no lo activa y uno de
24,6 m³ sí, las bandas de tercio de octava de 50 Hz, 63 Hz y 80 Hz deben
medirse además en las esquinas de ese recinto (apartados 6 y 8.1). La mayoría
de los dormitorios europeos y todos los baños quedan por debajo del umbral, así
que este es el caso normal cuando se trabaja en vivienda, no un caso límite. Va
**además** del procedimiento por defecto, no en su lugar, y la misma regla de
los 25 m³ rige el tiempo de reverberación.

La razón la da la propia NOTA 1 de la norma: a esas frecuencias el campo de un
recinto pequeño es modal, la variación espacial es grande, y el promedio de la
zona central no es ni repetible ni representativo de lo que oye un ocupante. Un
máximo de presión modal siempre queda en una esquina, así que las mediciones en
esquina acotan el campo por arriba.

**Cómo se toma una medición en esquina (apartados 8.3 y 8.4).** Un micrófono
fijo, de 0,3 m a 0,4 m de *cada* uno de los tres paramentos que forman la
esquina (las tres distancias no tienen por qué ser iguales), a 1,0 m como
mínimo de cualquier altavoz, lo que en la práctica descarta la esquina que
ocupa el altavoz. Mide al menos **cuatro** esquinas, dos a nivel de suelo y dos
a nivel de techo, contiguas o no al elemento separador; cada esquina debe estar
formada por tres superficies mutuamente perpendiculares de 0,5 m² como mínimo,
sin mobiliario a menos de 0,5 m. Cuando eso sea imposible, se admiten esquinas
con ángulos entre pares de superficies de 45° a 135°, o con un objeto, por
ejemplo un armario, formando una de las superficies. Promedia al menos 15 s por
posición. Con un único altavoz desplazado entre posiciones, repite las cuatro
esquinas en cada posición.

**Cómo entran las esquinas en el resultado (apartado 8.5).** Para cada una de
las tres bandas por separado, toma la **más alta** de las esquinas medidas, que
puede ser una esquina distinta en cada banda, como $L_\text{Corner}$; con
varias posiciones de altavoz, promedia en energía esos máximos por posición
(Fórmula (12)). Después combínala con el promedio $L$ del procedimiento por
defecto en una ponderación 1:2 (Fórmula (13)):

$$
L_\mathrm{LF} = 10\log_{10}\left[\frac{10^{0,1 L_\text{Corner}} + 2 \cdot 10^{0,1 L}}{3}\right].
$$

$L_\mathrm{LF}$ sustituye a $L$ en esas tres bandas, y $D_\mathrm{nT}$ o $R'$ se forman
después exactamente igual que antes. Como $L_\text{Corner}$ puede superar a $L$
en varios decibelios, el procedimiento sube por igual el nivel del recinto
emisor y el del receptor: el efecto sobre la *diferencia* de niveles es lo que
los dos recintos no tienen en común, que es justo la información que tira el
procedimiento por defecto. El apartado 9.1 añade la consecuencia para el ruido
de fondo: hace falta una medición de fondo **en cada esquina utilizada**,
porque cada banda puede venir de una esquina distinta y necesitar por tanto su
propia corrección.

```python
# `np` y `building` son los imports de los bloques de arriba.

# 50, 63 y 80 Hz. Cuatro esquinas medidas en un recinto receptor de 22 m3, con
# una posición de altavoz; al lado, el promedio de la zona central por defecto.
corners = np.array([                      # filas: esquinas, columnas: las 3 bandas
    [52.1, 55.4, 49.8],
    [54.6, 53.0, 51.2],
    [51.0, 56.9, 50.4],
    [53.3, 54.1, 52.7],
])
l_default = np.array([49.5, 51.2, 48.6])

l_corner = corners.max(axis=0)            # apartado 8.5: la esquina más alta, por banda
print(l_corner)                           # [54.6 56.9 52.7]  (tres esquinas distintas)

l_lf = 10 * np.log10((10 ** (0.1 * l_corner) + 2 * 10 ** (0.1 * l_default)) / 3)
print(np.round(l_lf, 1))                  # [51.9 54.  50.4]
print(np.round(l_lf - l_default, 1))      # [2.4 2.8 1.8]  dB por encima del valor por defecto
```

## Aislamiento a ruido de impactos en campo (ISO 16283-2)

El ruido de pisadas se valora al revés. En lugar de cuánto *bloquea* un
forjado, el aislamiento a impactos mide cuánto introduce en la sala inferior
una **máquina de impactos normalizada** situada en el forjado superior, así que
un número *mayor* es *peor*. El nivel de presión acústica de impactos $L_\mathrm{i}$
promediado en energía en el recinto receptor se normaliza igual que el caso
aéreo, pero con un cambio de signo en el término de reverberación:

$$
L'_\mathrm{nT} = L_\mathrm{i} - 10 \log_{10} \frac{T}{T_0}, \qquad
L'_\mathrm{n} = L_\mathrm{i} + 10 \log_{10} \frac{A}{A_0}, \quad
A_0 = 10\ \text{m}^2,\ A = \frac{0{,}16\ V}{T}.
$$

El nivel de impactos **estandarizado** $L'_\mathrm{nT}$ ($T_0 = 0{,}5$ s para viviendas)
solo necesita el $T$ del recinto receptor, así que con $T = 0{,}5$ s es igual a
$L_\mathrm{i}$; el nivel **normalizado** $L'_\mathrm{n}$ (referido a un área de absorción de
10 m²) necesita además el volumen del recinto receptor. Fíjate en el signo
**menos**: más reverberación *reduce* $L'_\mathrm{nT}$, al contrario que el $D_\mathrm{nT}$
aéreo.

La máquina de impactos no es la única fuente que especifica ISO 16283-2. Sus
martillos entregan una excitación dura y casi estacionaria cuya energía se
sitúa por encima de 100 Hz, lo que dice casi nada de los golpes lentos y de
baja frecuencia de los que se quejan de verdad los ocupantes: un niño saltando,
un adulto caminando descalzo. Para esos, la misma norma especifica una **pelota
de caucho** (Anexo A), valorada por un motor completamente distinto: un nivel
máximo con ponderación Fast y la suma ponderada A del Anexo D de ISO 717-2, no
una curva de referencia desplazada. Tiene guía propia,
[Fuentes de impacto pesadas y blandas](/phonometry/es/buildings/insulation/heavy-impact-sources/).

```python

from phonometry import building

# 16 niveles de impactos Li en tercios de octava (100 Hz - 3150 Hz), dB, del
# ejemplo resuelto del Anexo C de ISO 717-2, y el T del recinto receptor por banda.
li = 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])
t2 = np.full(16, 0.5)

imp = building.impact_insulation(li, t2, volume=50.0)
print(round(float(imp.l_n_t[0]), 1))          # 62.1  (= Li ya que T = T0)
print(round(float(imp.l_n[0]), 1))            # 64.1  normalizado a A0 = 10 m^2

# Índice de impactos ponderado + término de adaptación espectral CI (ISO 717-2)
res_imp = building.weighted_impact_rating(imp.l_n_t)
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
```

Pasa el `l_n_t` (o `l_n`) de `impact_insulation` directamente a
`weighted_impact_rating`; el índice y $C_\mathrm{I}$ reproducen los valores del Anexo C
de ISO 717-2 (tercios $L'_\mathrm{nT,w} = 79$, $C_\mathrm{I} = -11$; octava 54, $C_\mathrm{I} = 0$).

Aquí el signo de la escala se invierte: en una magnitud de impacto **más bajo
es mejor**. Los límites nacionales para vivienda se sitúan en la franja de 50 a
60 dB, así que $L'_\mathrm{nT,w} = 79$ dB es un forjado estructural desnudo, sin
revestimiento y sin capa flotante, que incumple por unos 20 dB: el ejemplo del
Anexo C es un caso pésimo, no uno típico. Cerrar un hueco de ese tamaño pide un
suelo flotante sobre una capa elástica o un techo desolidarizado, no una
moqueta; véanse
[Predicción del aislamiento acústico (EN 12354)](/phonometry/es/buildings/design/insulation-prediction/)
y
[Predicción del comportamiento de capas elásticas](/phonometry/es/buildings/design/resilient-layers/).

### Parámetros de `impact_insulation()`

| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `li` | array 1D o 2D | dB | uno/banda, o `(posiciones, bandas)` | SPL de impactos promediado en energía (2D se promedia sobre las posiciones) |
| `t2` | array 1D | s | > 0, uno por banda | Tiempo de reverberación del recinto receptor |
| `volume` | float, opcional | m³ | > 0 | $V$ del recinto receptor (habilita $L'_\mathrm{n}$) |
| `t0` | float | s | por defecto `0.5` | Tiempo de reverberación de referencia $T_0$ |

`impact_insulation()` devuelve un `ImpactInsulationResult` (`l_n_t`, `l_n` o
`None`); el lado ISO 717-2 de la cadena está en
[Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/).

## Informe de ensayo in situ de ISO 16283 (`.report()`)

Los resultados de campo por bandas escriben directamente el informe de ensayo
del apartado 14 de ISO 16283-1:2014 / ISO 16283-2:2020, con el formato de los
formularios de resultados recomendados (Anexo B / Anexo C) y de los informes de
campo acreditados construidos sobre ellos.
`AirborneInsulationResult.report()` genera la ficha de la diferencia de niveles
estandarizada $D_\mathrm{nT}$ (Figura B.1) o, con `quantity="r_prime"`, la ficha del
índice de reducción acústica aparente $R'$ (Figura B.2);
`ImpactInsulationResult.report()` genera la ficha del nivel estandarizado
$L'_\mathrm{nT}$ (Figura C.1) o, con `quantity="l_n"`, la del nivel normalizado
$L'_\mathrm{n}$ (Figura C.2). Cada ficha nombra la norma de campo en su línea de base,
evalúa el índice de un solo número de ISO 717-1 / ISO 717-2 sobre las 16 bandas
de tercio de octava del rango básico (100–3150 Hz), expresa la magnitud con un
decimal tanto en tabla como en curva frente a la curva de referencia desplazada
(apartado 12), enmarca el índice de campo (`DnT,w (C; Ctr)`, `R'w (C; Ctr)`,
`L'nT,w (CI)` o `L'n,w (CI)`) e imprime la declaración obligatoria de que la
evaluación se basa en resultados de medidas in situ obtenidos mediante un
método de ingeniería.

`verbose=True` cambia la tabla de dos columnas por la cadena de medición por
bandas (los niveles medios energéticos $L_1$ y $L_2$, o $L_\mathrm{i}$, y el tiempo de
reverberación $T$ junto a la magnitud informada), el contenido que anexan los
informes de campo acreditados; necesita un resultado construido con
`airborne_insulation()` / `impact_insulation()`, que conservan esas entradas en
el resultado (`l1`, `l2`/`li`, `t2`, `t0`). Los metadatos, el veredicto frente
al requisito (el aéreo cumple si es mayor o igual, el de impactos si es menor o
igual), `language="es"` y el extra `phonometry[report]` se comportan
exactamente igual que en la ficha de ISO 717 de arriba.

```python

from phonometry import building, ReportMetadata

# Aéreo in situ: niveles emisor/receptor y T por banda de tercio de octava
l1 = np.array([92.3, 93.1, 94.0, 94.4, 94.8, 95.0, 95.2, 95.4,
               95.3, 95.1, 94.8, 94.4, 93.9, 93.3, 92.5, 91.6])
l2 = l1 - np.array([38.2, 40.1, 42.6, 45.2, 47.8, 50.1, 52.3, 54.0,
                    55.6, 57.1, 58.2, 59.0, 59.6, 60.1, 60.3, 59.8])
t2 = np.array([0.62, 0.58, 0.55, 0.53, 0.52, 0.50, 0.49, 0.48,
               0.47, 0.46, 0.45, 0.45, 0.44, 0.43, 0.43, 0.42])
field = building.airborne_insulation(l1, l2, t2, area=12.5, volume=30.4)
field.plot()   # DnT (y R') por banda de la cadena medida (requiere matplotlib)
metadata = ReportMetadata(
    specimen="Pared separadora, ladrillo de 240 mm con trasdosado independiente",
    client="Cliente de ejemplo",
    area=12.5, source_volume=32.1, receiving_volume=30.4,
    test_room="Salón de la vivienda A hacia el salón de la vivienda B",
    test_date="2026-07-20",
    laboratory="Laboratorio de referencia Phonometry",
    report_id="PHN-2026-0143",
    requirement=50.0,               # DnT,w >= 50 dB -> fila CUMPLE/NO CUMPLE
)
field.report("DnTw_insitu.pdf", metadata=metadata,
             language="es")                            # DnT,w (C; Ctr)
field.report("Rpw_insitu.pdf", quantity="r_prime",
             metadata=metadata, language="es")         # R'w (C; Ctr)
field.report("DnTw_cadena.pdf", metadata=metadata,
             verbose=True, language="es")              # f | L1 | L2 | T | DnT

# Impactos in situ: niveles de la máquina de impactos en el recinto receptor
li = np.array([58.0, 60.5, 62.0, 63.5, 65.0, 66.0, 66.5, 66.0,
               65.5, 65.0, 64.0, 62.0, 59.0, 56.0, 53.0, 50.0])
imp = building.impact_insulation(li, t2, volume=30.4)
imp.report("LnTw_insitu.pdf", language="es",
           metadata=ReportMetadata(requirement=58.0))  # L'nT,w (CI)
```

*El tiempo de reverberación del recinto receptor convierte la diferencia de
niveles bruta $D$ en la $D_\mathrm{nT}$ estandarizada banda a banda; con $T$ por
encima de $T_0 = 0{,}5$ s en todo el rango, la corrección eleva ligeramente
la curva. El recuadro recoge los dos valores únicos de esta medición,
$D_\mathrm{nT,w}$ y $R'_\mathrm{w}$.*

<details>
<summary>Mostrar el código de esta figura</summary>

```python

from phonometry import building

# Aéreo in situ: niveles emisor/receptor y T por banda de tercio de octava
l1 = np.array([92.3, 93.1, 94.0, 94.4, 94.8, 95.0, 95.2, 95.4,
               95.3, 95.1, 94.8, 94.4, 93.9, 93.3, 92.5, 91.6])
l2 = l1 - np.array([38.2, 40.1, 42.6, 45.2, 47.8, 50.1, 52.3, 54.0,
                    55.6, 57.1, 58.2, 59.0, 59.6, 60.1, 60.3, 59.8])
t2 = np.array([0.62, 0.58, 0.55, 0.53, 0.52, 0.50, 0.49, 0.48,
               0.47, 0.46, 0.45, 0.45, 0.44, 0.43, 0.43, 0.42])
field = building.airborne_insulation(l1, l2, t2, area=12.5, volume=30.4)

# Una línea: la DnT (y R') por banda de la cadena medida:
field.plot(language="es")
plt.show()

# A mano, desde los campos del resultado:
bands = [100, 125, 160, 200, 250, 315, 400, 500,
         630, 800, 1000, 1250, 1600, 2000, 2500, 3150]
x = np.arange(len(bands))
w = building.weighted_rating(field.dnt)
fig, ax = plt.subplots()
ax.fill_between(x, field.d, field.dnt, alpha=0.2, label="10 log10(T/T0)")
ax.plot(x, field.d, "--o", label="D (diferencia de niveles)")
ax.plot(x, field.dnt, "-s", label="DnT (estandarizada)")
ax.set_xticks(x, [str(b) for b in bands], rotation=45)
ax.set(xlabel="Frecuencia [Hz]", ylabel="Diferencia de niveles [dB]",
       title=f"DnT,w = {w.rating} dB  (C={w.c:+d}; Ctr={w.ctr:+d})")
ax.legend()
plt.show()
```

</details>

Ambas fichas de ejemplo se regeneran con `make reports` y se conservan
renderizadas en el repositorio; pulsa cualquier vista previa para abrir el PDF.

<span id="incertidumbre-de-medicion-iso-12999-1"></span>

## Incertidumbre de medición (ISO 12999-1)

Un índice sin incertidumbre es solo medio resultado. ISO 12999-1 no vuelve a
medir nada; tabula la **incertidumbre típica** $u$ de cada magnitud de
aislamiento acústico, derivada de ensayos interlaboratorio, y prescribe cómo
expandirla y combinarla. Qué desviación típica es $u$ depende de la **situación
de medición** (apartado 5.2):

| Situación | Significado | Incertidumbre típica $u$ |
| :--- | :--- | :--- |
| **A** | caracterización en laboratorio (ISO 10140) | reproducibilidad $\sigma_\mathrm{R}$ |
| **B** | misma ubicación, equipos distintos | in situ $\sigma_\mathrm{situ}$ |
| **C** | misma ubicación, mismo operador repetido | repetibilidad $\sigma_\mathrm{r}$ |

La incertidumbre expandida es $U = k\ u$ (Fórmula 2) con el factor de cobertura
$k$ de la Tabla 8. Un intervalo bilateral $Y = y \pm U$ (Fórmula 3, $k = 1{,}96$ al
95 %) *informa de* un valor; el factor **unilateral** ($k = 1{,}65$ al 95 %) *declara
conformidad* con un requisito (Fórmulas 4/5).

```python
from phonometry import building

# Situación B (mismo edificio, equipos distintos) -> la desviación típica in situ.
print(building.single_number_uncertainty("r_w", "B"))       # 0.9  dB  (Tabla 3)
u = building.band_uncertainty("airborne", "B")              # u por banda (Tabla 2)
# Busca la banda; nunca indexes por posición. La tabla de impactos no tiene
# banda de 500 Hz siquiera, así que ahí [10] sería 630 Hz sin avisar.
i = list(u.frequencies).index(500.0)
print(len(u.frequencies), u.uncertainties[i])      # 21 1.1  (la banda de 500 Hz)
u.plot()   # el espectro por banda u(f) de la Tabla 2 (requiere matplotlib)

# Informa de R'w = 52 dB con un intervalo bilateral al 95 % (k = 1.96, Tabla 8):
uv = building.uncertain_value(52.0, "rprime_w", "B")        # los alias resuelven a r_w
print(uv.coverage_factor, round(uv.expanded_uncertainty, 1))    # 1.96 1.8
print(round(uv.lower, 1), round(uv.upper, 1))      # 50.2 53.8  ->  52 ± 1.8 dB

# Declarar conformidad usa el factor UNILATERAL (k = 1.65): ¿supera R'w de forma
# demostrable un requisito de 50 dB?
uc = building.uncertain_value(52.0, "rprime_w", "B", one_sided=True)
print(round(uc.expanded_uncertainty, 2))                # 1.48  = 1.65 x 0.9
print(round(52.0 - uc.expanded_uncertainty, 2))         # 50.52 = la cota inferior
print(building.satisfies_lower_requirement(52.0, uc.expanded_uncertainty, 50.0))   # True
```

Eso es todo lo que hay dentro de `satisfies_lower_requirement`: los 52,0
medidos menos la incertidumbre expandida unilateral de 1,48 son 50,52, que
siguen superando los 50,0, así que la conformidad se puede *declarar* y no solo
observar. La elección del factor es lo importante. Declarar un valor es una
afirmación bilateral (el valor verdadero está en algún punto de un intervalo) y
lleva $k = 1{,}96$. Declarar conformidad es una afirmación unilateral: solo
importa el extremo inferior, porque nada está en juego si la pared es mejor de
lo que se dice, así que $k = 1{,}65$ da la misma confianza del 95 % en el lado
que cuenta. Usar aquí el factor bilateral exigiría 1,76 dB de margen en vez de
1,48 dB y suspendería resultados que sí cumplen.

Las magnitudes a impactos ofrecen solo las situaciones B/C (Tabla 4, sin banda de
500 Hz en la edición de 2020), y $\Delta L$ solo la situación A. Los descriptores
son insensibles a mayúsculas y con alias (`rprime_w`/`dnt_w`→`r_w`,
`lprime_n_w`→`ln_w`); combina componentes independientes en cuadratura con
`combine_uncertainties`, y redúcelas por $m$ mediciones independientes con
`reduce_by_independent_measurements` ($u/\sqrt{m}$).

*El mismo índice, declarado de tres maneras. Cuál de los intervalos se aplica no
es una propiedad de la medición sino de la pregunta: la situación A es lo que
declara un laboratorio para una probeta, la B aquello dentro de lo cual deberían
coincidir dos equipos que midan la misma partición ya instalada, y la C aquello
dentro de lo cual debería coincidir un equipo consigo mismo. La B es la más
ancha de las tres que un informe de campo puede reclamar honestamente, y es la
que decide si un resultado supera una exigencia.*

<details>
<summary>Mostrar el código de esta figura</summary>

```python

from phonometry import building

# El mismo R'w = 52 dB informado en cada situación con su U bilateral al 95 %.
situations = ["A", "B", "C"]
vals = [building.uncertain_value(52.0, "r_w", s) for s in situations]

fig, ax = plt.subplots(figsize=(7, 4))
ax.errorbar(situations, [v.value for v in vals],
            yerr=[v.expanded_uncertainty for v in vals],
            fmt="o", capsize=8, color="tab:blue")
for s, v in zip(situations, vals):
    ax.annotate(f"±{v.expanded_uncertainty:.1f}", (s, v.upper),
                textcoords="offset points", xytext=(8, 4))
ax.set_ylabel("R'w [dB]"); ax.set_xlabel("Situación de medición")
ax.set_title("R'w = 52 dB con incertidumbre expandida al 95 % (ISO 12999-1)")
fig.tight_layout()
plt.show()
```

</details>

### Parámetros de `band_uncertainty()` / `single_number_uncertainty()` / `uncertain_value()`

| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `measurand` | str | — | `'airborne'` / `'impact'` / `'impact_reduction'` | Selecciona la Tabla 2 / 4 / 6 |
| `quantity` | str | — | `'r_w'`, `'ln_w'`, `'delta_lw'` (+ alias, variantes `+c`/`+ctr`) | Descriptor de un solo número |
| `situation` | str | — | `'A'` / `'B'` / `'C'` | Situación de medición (apartado 5.2) |
| `value` | float | dB | — | Mejor estimación $y$ a la que adjuntar $U$ |
| `coverage` | float | — | por defecto `0.95` | Nivel de confianza (Tabla 8) |
| `one_sided` | bool | — | por defecto `False` | Factor unilateral para verificaciones de conformidad |
| `upper_limit` | bool | — | por defecto `False` | Selecciona el límite superior $\sigma_\mathrm{R95}$ (ruido aéreo, situación A) |

`band_uncertainty()` devuelve una `BandUncertainty` (`frequencies`,
`uncertainties`, `.to_arrays()`); `single_number_uncertainty()` un float;
`uncertain_value()` un `UncertainValue` (`value`, `standard_uncertainty`,
`coverage_factor`, `expanded_uncertainty`, `.lower`, `.upper`). El mapa de solo
lectura `COVERAGE_FACTORS` expone la Tabla 8 indexada por `(confidence, one_sided)`.

## Más allá de la medición entre dos recintos

Tres mediciones vecinas tienen guías propias, y una
cuarta las acompaña. El cerramiento del edificio, medido frente al nivel a 2 m
por delante y previsto a partir de sus elementos, es
[Aislamiento acústico de fachadas](/phonometry/es/buildings/insulation/facade-insulation/).
Cuando una medición de ingeniería completa es más de lo que la pregunta
merece, el método de control en bandas de octava es
[Método de control del aislamiento (ISO 10052)](/phonometry/es/buildings/insulation/insulation-survey/).
Cada número único citado arriba sale de las curvas de referencia de
[Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/).
Y la vía de intensidad acústica hacia las mismas magnitudes, que lee la
potencia transmitida sobre la cara radiante en lugar del nivel del recinto
receptor, es
[Aislamiento acústico por intensidad (ISO 15186)](/phonometry/es/buildings/insulation/insulation-intensity/).

## Qué cubre esta guía

La ISO 16283-1:2014 (aislamiento a ruido aéreo de campo: la diferencia de
niveles, la $D_\mathrm{nT}$ estandarizada y el $R'$ aparente de los apartados 3.12 a
3.15 y el promediado de posiciones del apartado 7.8) y la ISO 16283-2:2020
(aislamiento a ruido de impactos de campo, las mismas normalizaciones con el
signo invertido) mediante `building.energy_average_level`,
`building.airborne_insulation` y `building.impact_insulation`, cada una con su
informe de ensayo del apartado 14 en `.report()`; y las incertidumbres
estándar tabuladas de la ISO 12999-1:2020 (las situaciones de medición A/B/C
del apartado 5.2 y los factores de cobertura de la Tabla 8, uni- y
bilaterales) mediante `building.band_uncertainty`,
`building.single_number_uncertainty` y `building.uncertain_value`. Los índices
globales citados aquí reutilizan los motores verificados de ISO 717-1/ISO
717-2.

Todas las funciones de campo de aquí toman niveles que el usuario ya ha
corregido por ruido de fondo (apartado 9.2 de la ISO 16283-1). La *medición*
del nivel de fondo — fuente apagada, mismas posiciones, mismo promediado — es
cosa del operador, y aquí nada verifica que se haya cumplido el mínimo de 6
dB; la corrección en sí son tres líneas de NumPy, escritas en [Corrección por
ruido de fondo](#correccion-por-ruido-de-fondo) más arriba.
(`building.background_correction` es la variante de *laboratorio* de ISO
10140-4 y no coincide con los umbrales de campo.) Los propios requisitos de
posición y procedimiento de la ISO 16283-1/-2 (los recuentos, las distancias y
el promediado de [La medición](#la-medicion-iso-16283-1) y las mediciones en
esquina de [Recintos pequeños](#recintos-pequenos-apartado-8)) están
documentados aquí y no se comprueban en ninguna parte: el promediado en
energía ocurre una vez que se proporcionan las posiciones, pero nada verifica
cuántas se tomaron, dónde, ni que se haya llegado a comprobar el umbral de los
25 m³. La combinación de las Fórmulas (12) y (13) del procedimiento de baja
frecuencia son las dos líneas de NumPy impresas más arriba, no una función de
la biblioteca. Los demás miembros de la familia están cubiertos por sus
propias guías: la parte de fachada ISO 16283-3 ([Aislamiento acústico de
fachadas](/phonometry/es/buildings/insulation/facade-insulation/)), el método
de control ISO 10052 ([Método de control del
aislamiento](/phonometry/es/buildings/insulation/insulation-survey/)), los
motores de valoración ISO 717-1/-2 ([Índices globales de
aislamiento](/phonometry/es/buildings/insulation/insulation-ratings/)) y la
vía de intensidad acústica ISO 15186-1/-2 ([Aislamiento acústico por
intensidad](/phonometry/es/buildings/insulation/insulation-intensity/)).

## Véase también

- [Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/):
  el motor de curva de referencia tras cada número único ponderado de esta página.
- [Aislamiento acústico de fachadas](/phonometry/es/buildings/insulation/facade-insulation/):
  la tercera parte de ISO 16283, medida y prevista.
- [Método de control del aislamiento (ISO 10052)](/phonometry/es/buildings/insulation/insulation-survey/):
  el método de control en bandas de octava que toma estos métodos de ingeniería
  como referencia.
- [Fuentes de impacto pesadas y blandas](/phonometry/es/buildings/insulation/heavy-impact-sources/):
  la pelota de caucho y la máquina de neumático, las otras fuentes de impacto de
  ISO 16283-2, y la valoración del Anexo D de ISO 717-2 que las acompaña.
- [Medición del aislamiento en laboratorio](/phonometry/es/buildings/insulation/insulation-lab/):
  la caracterización de elementos de ISO 10140 con la que se comparan estas
  magnitudes de campo.
- [Aislamiento acústico por intensidad (ISO 15186)](/phonometry/es/buildings/insulation/insulation-intensity/):
  la vía de potencia directa hacia los mismos índices de campo y laboratorio.
- [Predicción del aislamiento acústico (EN 12354)](/phonometry/es/buildings/design/insulation-prediction/):
  el comportamiento in situ predicho a partir de datos de elemento de laboratorio.
- [Acústica de salas](/phonometry/es/buildings/rooms/room-acoustics/): los parámetros de
  sala y los tiempos de reverberación sobre los que se apoya la cadena de
  aislamiento de esta guía.
- [Niveles](/phonometry/es/signals/levels/levels/): el promediado en energía y las métricas de
  nivel que sustentan los niveles de los recintos emisor/receptor.
- [Bancos de filtros](/phonometry/es/signals/filters/filter-banks/): los filtros de fracción
  de octava IEC 61260 usados para los espectros de aislamiento.
- [Teoría](/phonometry/es/reference/theory/rooms-buildings/): la derivación de la curva de referencia que sustenta
  los índices ponderados de un solo número.
- Referencia de la API: [`building.measurement.insulation`](/phonometry/es/reference/api/building/insulation/) y [`building.measurement.uncertainty`](/phonometry/es/reference/api/building/uncertainty/).

## Respuestas rápidas

### ¿Qué significa DnT,w?

$D_\mathrm{nT,w}$ es la diferencia de niveles estandarizada ponderada. Por banda
de tercio de octava, $D_\mathrm{nT} = D + 10 \log_{10}(T/T_0)$ refiere el tiempo
de reverberación del recinto receptor $T$ a $T_0 = 0{,}5$ s, con
$D = L_1 - L_2$ la diferencia de niveles entre el recinto emisor y el
receptor (ISO 16283-1). El método de la curva de referencia de ISO 717-1
reduce después las 16 bandas de 100 Hz a 3150 Hz al número único leído a
500 Hz.

### ¿Cuál es la diferencia entre R y R' en el aislamiento acústico?

La prima indica dónde se hizo la medición: las magnitudes con prima ($R'$,
$L'_\mathrm{n}$, $L'_\mathrm{nT}$) se miden en el edificio e incluyen todas las trayectorias
por flancos, mientras que las $R$ y $L_\mathrm{n}$ sin prima son propiedades de
laboratorio del elemento solo, medidas con los flancos suprimidos. En campo
(ISO 16283-1), $R' = D + 10 \log_{10}(S/A)$ con la superficie del
cerramiento $S$ y el área de absorción de Sabine $A = 0{,}16\ V/T$.
