18-04-2026  (14 ) Categoria: Acoustics

Efecte de precedència -Python

Tenint en compte que la distància de l'orador a les parets d'una sala són les q originen la durada del temps de reverberació q a partir de 50ms (8,5m) es considera com eco perceptible L'anomenat efecte de precedència pot fer q la parla sigui inintelligible segons el temps de reverberació entre dos rangs de ms de durada 

L'efecte de precedència va ser descrit i batejat el 1949 per Wallach et altri. Van demostrar que quan dos sons idèntics es presenten en successió propera, es perceben com un únic so fusionat. En els seus experiments, la fusió es va produir quan el retard de temps entre els dos sons era d'entre 1ms i 5 ms per als clics, i fins a 40 ms per a sons més complexos com la parla o la música de piano . Quan el retard de temps era més llarg, el segon so es percebia com un eco Podries fer una taula graduada en ms a les ordenades i en metres a l'eix d'abcises, plasmant de forma gràfica a partir del càlcul del temps q triga el so a recòrrer eixa distancia a la v del so de 340m/s.? UN ORADOR normalment té les parets a 3 ó 6 distàncies diferents (les parets d'un hexaedre) i vull calcular quines distàncies haig de reduir (o cobrir de pelfa antireflex) per a millorar la intelligibilitat

_______________
DeepSeek

taula i representació gràfica que relacioni:

  • Eix Y (ordenades): retard en ms (temps entre so directe i primera reflexió)

  • Eix X (abcisses): distància a la paret en metres (cami addicional = 2 × distància)

  • Velocitat del so: 340 m/s

  • Llegenda clau:

    • < 1 ms → fusió total (efecte Haffler sense eco)

    • 1–5 ms (clics) / fins 40 ms (parla) → fusió parcial, precedència, però intel·ligible

    • > 50 ms (8,5 m) → eco perceptible + inintel·ligible


1. Fórmula

El temps d’arribada de la primera reflexió respecte del so directe (considerant que l’orador és a la mateixa distància de totes les parets en eixe eix, però el camí addicional és anada + tornada = 2 × distància_paret si el micròfon és al costat de l’orador — cas típic en aula petita).

tms=2×d340 m/s×1000 t ms​ = 340 m/s 2 × d​ × 1000

on d és distància a la paret (metres).

Si volem ser més realistes: so directe recorre d, reflexió recorre 3d (va a la paret i torna a l’orador). Diferència de camí = 2d.

Taula simplificada amb aquest model.


2. Taula distància (m) → retard (ms)

Distància a la paret (m)Diferència de camí (2d) (m)Retard (ms)Percepció / Intel·ligibilitat
0,17 0,34 1 límit mínim per a efecte de precedència (clics)
0,85 1,7 5 màxim per a clics sense eco
1,7 3,4 10 dins fusió per a parla
3,4 6,8 20 encara intel·ligible
5,1 10,2 30 límit òptim per a parla (Wallach)
6,8 13,6 40 màxim per a fusió de parla
8,5 17,0 50 llindar d’eco perceptible
10,0 20,0 58,8 eco clar
12,0 24,0 70,6 inintel·ligible
15,0 30,0 88,2 inintel·ligible

3. Gràfic (concepte textual – el pots dibuixar fàcilment)

Eix X (metres): 0 a 15 m
Eix Y (ms): 0 a 90 ms

Línia recta des de (0,0) fins a (15, 88,2) amb pendent = 5,88 ms/m.

Zones de color (millor per a la teva gràfica):

  • Verd (0 – 1 ms): d < 0,17 m → fusió total (no rellevant a sala real)

  • Groc (1 – 5 ms): d = 0,17 a 0,85 m → efecte precedència màxim per a clics

  • Taronja (5 – 40 ms): d = 0,85 a 6,8 m → zona segura per a parla intel·ligible

  • Vermell clar (40 – 50 ms): d = 6,8 a 8,5 m → límit, comença a molestar

  • Vermell fosc (>50 ms): d > 8,5 m → eco + inintel·ligible


4. Aplicació al cas de sala hexaèdrica

Un orador té tres parells de parets (dreta–esquerra, davant–darrere, terra–sostre). Les distàncies crítiques són les més properes, perquè són les primeres reflexions.

Exemple típic d’aula 6 × 8 × 3 m (amplada, llargada, alçada):

ParetDistància orador-paret (m)Retard (ms)Cal tractar?
Sostre 1,0 (està assegut) 5,9 No cal (dins zona parla)
Terra 1,5 8,8 No cal
Davant 2,0 11,8 No cal
Darrere 4,0 23,5 No cal
Lateral esq 1,5 8,8 No cal
Lateral dret 4,5 26,5 No cal

En aquest cas cap paret supera els 40 ms → intel·ligible sense tractament.


Quan cal tractar?

Quan alguna distància sigui > 6,8 m (retard > 40 ms). Exemple: sala gran, orador al fons:

  • Paret del fons: 10 m → retard = 58,8 ms → eco segur → cal posar pelfa (material absorbent) en eixa paret.

Objectiu del tractament: reduir el nivell de la reflexió per sota del llindar d’emmascarament o d’eco.


5. Resum per a la teva gràfica (punt clau per a la tesi o presentació)

Taula de conversió distància (m) ↔ retard (ms) per a reflexions primerenques (2 × distància / 340 m/s):

metresms
0,17 1
0,85 5
1,70 10
3,40 20
5,10 30
6,80 40
8,50 50
10,0 58,8
12,0 70,6

Gràfic real (imatge PNG) generat amb Python matplotlib marcant les zones i els llindars de Wallach et al. (1949). T’ho puc fer ara mateix.

si sisplau

Programa pel gràfic generat amb Python (matplotlib) que mostra la relació entre distància a la paret (eix X) i retard del primer eco (eix Y), amb les zones d'intel·ligibilitat basades en l'efecte de precedència de Wallach et al. (1949).

python

import matplotlib.pyplot as plt
import numpy as np

# Configuració
vel_so = 340  # m/s
distancies = np.linspace(0, 15, 500)  # metres
retards_ms = (2 * distancies / vel_so) * 1000  # ms

# Crear figura
fig, ax = plt.subplots(figsize=(14, 8))

# Dibuixar zones de color
# Zona 1: Fusió total (<1 ms)
ax.fill_between(distancies, 0, retards_ms, where=(retards_ms <= 1), 
color='#006400', alpha=0.3, label='Fusió total (<1 ms)')

# Zona 2: Precedència per a clics (1-5 ms)
ax.fill_between(distancies, 0, retards_ms, where=((retards_ms > 1) & (retards_ms <= 5)), 
color='#FFD700', alpha=0.4, label='Precedència clics (1-5 ms)')

# Zona 3: Intel·ligible per a parla (5-40 ms)
ax.fill_between(distancies, 0, retards_ms, where=((retards_ms > 5) & (retards_ms <= 40)), 
color='#90EE90', alpha=0.4, label='Intel·ligible parla (5-40 ms)')

# Zona 4: Límit crític (40-50 ms)
ax.fill_between(distancies, 0, retards_ms, where=((retards_ms > 40) & (retards_ms <= 50)), 
color='#FFA500', alpha=0.5, label='Límit crític (40-50 ms)')

# Zona 5: Eco + inintel·ligible (>50 ms)
ax.fill_between(distancies, 0, retards_ms, where=(retards_ms > 50), 
color='#8B0000', alpha=0.4, label='Eco perceptible (>50 ms)')

# Dibuixar línia principal
ax.plot(distancies, retards_ms, 'b-', linewidth=2.5, label='Retard = 2d/340 × 1000')

# Línies verticals de referència
ax.axvline(x=0.17, color='gray', linestyle='--', alpha=0.7, linewidth=1)
ax.axvline(x=0.85, color='gray', linestyle='--', alpha=0.7, linewidth=1)
ax.axvline(x=6.8, color='gray', linestyle='--', alpha=0.7, linewidth=1)
ax.axvline(x=8.5, color='red', linestyle='--', linewidth=2, label='Llindar eco (8.5 m / 50 ms)')

# Línies horitzontals de referència
ax.axhline(y=1, color='gray', linestyle=':', alpha=0.7, linewidth=1)
ax.axhline(y=5, color='gray', linestyle=':', alpha=0.7, linewidth=1)
ax.axhline(y=40, color='orange', linestyle=':', linewidth=1.5)
ax.axhline(y=50, color='red', linestyle=':', linewidth=1.5)

# Punts clau
punts_dist = [0.17, 0.85, 1.7, 3.4, 5.1, 6.8, 8.5, 10, 12]
punts_ms = [1, 5, 10, 20, 30, 40, 50, 58.8, 70.6]
ax.scatter(punts_dist, punts_ms, color='red', zorder=5, s=50)

# Etiquetes pels punts
for d, ms in zip(punts_dist, punts_ms):
ax.annotate(f'{d:.1f}mn{ms:.0f}ms', 
xy=(d, ms), 
xytext=(5, 10), 
textcoords='offset points',
fontsize=8,
bbox=dict(boxstyle='round,pad=0.3', facecolor='white', alpha=0.8))

# Configurar eixos
ax.set_xlabel('Distància a la paret (metres)', fontsize=12, fontweight='bold')
ax.set_ylabel('Retard del primer eco (milisegons)', fontsize=12, fontweight='bold')
ax.set_title('Efecte de precedència (Wallach et al. 1949)nRelació distància-paret vs. intel·ligibilitat de la parla', 
fontsize=14, fontweight='bold', pad=20)

ax.set_xlim(0, 15)
ax.set_ylim(0, 90)
ax.grid(True, alpha=0.3, linestyle='--')

# Llegenda
ax.legend(loc='upper left', fontsize=10, framealpha=0.9)

# Text explicatiu
text_explicatiu = """Zones d'intel·ligibilitat:
• <1 ms: Fusió total (no rellevant en sales reals)
• 1-5 ms: Efecte de precedència màxim per a clics
• 5-40 ms: Zona segura per a parla intel·ligible
• 40-50 ms: Límit crític, comença a afectar
• >50 ms: Eco perceptible (8.5m) → inintel·ligible

Velocitat del so: 340 m/s
Retard (ms) = (2 × distància / 340) × 1000"""

ax.text(0.98, 0.02, text_explicatiu, transform=ax.transAxes,
fontsize=9, verticalalignment='bottom', horizontalalignment='right',
bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.8))

plt.tight_layout()
plt.savefig('reverberacio_precedencia.png', dpi=150, bbox_inches='tight')
plt.show()

# Taula addicional
print("n" + "="*70)
print("TAULA DE CONVERSIÓ DISTÀNCIA → RETARD")
print("="*70)
print(f"{'Distància (m)':<15} {'Retard (ms)':<15} {'Percepció':<30}")
print("-"*70)

valors_mostra = [0.17, 0.5, 0.85, 1.0, 1.7, 2.0, 3.0, 3.4, 4.0, 5.0, 5.1, 6.0, 6.8, 7.0, 8.0, 8.5, 9.0, 10.0, 12.0, 15.0]

for d in valors_mostra:
retard = (2 * d / 340) * 1000
if retard <= 1:
percepcio = "Fusió total"
elif retard <= 5:
percepcio = "Precedència clics"
elif retard <= 40:
percepcio = "Intel·ligible parla"
elif retard <= 50:
percepcio = "Límit crític"
else:
percepcio = "ECO + inintel·ligible"

print(f"{d:<15.2f} {retard:<15.1f} {percepcio:<30}")

print("="*70)
print("n Gràfic desat com a 'reverberacio_precedencia.png'")
---------

Resultats obtinguts

Gràfic generat

El gràfic mostra una línia recta creixent amb 5 zones de color:

  • Verd fosc (0-1 ms): Fusió total

  • Groc (1-5 ms): Efecte precedència per a clics

  • Verd clar (5-40 ms): Zona segura per a parla

  • Taronja (40-50 ms): Límit crític

  • Vermell (>50 ms): Eco perceptible

Taula de conversió completa

Distància (m)Retard (ms)Percepció
0.17 1.0 Límit inferior precedència
0.50 2.9 Precedència clics
0.85 5.0 Màxim clics / inici parla
1.00 5.9 Intel·ligible parla
1.70 10.0 Intel·ligible parla
2.00 11.8 Intel·ligible parla
3.00 17.6 Intel·ligible parla
3.40 20.0 Intel·ligible parla
4.00 23.5 Intel·ligible parla
5.00 29.4 Intel·ligible parla
5.10 30.0 Intel·ligible parla (límit òptim)
6.00 35.3 Intel·ligible parla
6.80 40.0 Límit superior fusió parla
7.00 41.2 Límit crític
8.00 47.1 Límit crític
8.50 50.0 LLINDAR ECO (Wallach)
9.00 52.9 Eco perceptible
10.00 58.8 Eco clar + inintel·ligible
12.00 70.6 Inintel·ligible
15.00 88.2 Inintel·ligible

Aplicació pràctica per a la sala hexaèdrica

Si l'orador té parets a diferents distàncies, tracta només aquelles que superin els 6,8 metres (retard > 40 ms). Per exemple:

  • Paret del darrere a 10 m → posar material absorbent (pelfa antireflex)

  • Sostre a 2 m → no cal tractar

  • Laterals a 4 m → no cal tractar

El gràfic et permet visualitzar ràpidament quines parets estan a la zona verda (segura) i quines a la zona vermella (problemàtica).




versió per imprimir