Labor 03: Lautsprecher-Messungen
1. Überblick
Dieses Labor behandelte die umfassende Charakterisierung von Lautsprechersystemen durch präzise akustische Messungen. Schwerpunkte waren Nah-/Fernfeld-Messtechniken, Frequenzweichen-Design und aktive Entzerrung zur Optimierung des Gesamtfrequenzgangs.
2. Versuchsaufbau
2.1. Messkette
- Audio-Interface: RME Babyface Pro (44.1 kHz)
- Anregung: Exponential-Sweep (10 Hz - 22 kHz)
- Mikrofonierung: Kondensatormikrofon für Impulsantwort-Messung
- Lautsprecher: 2-Wege-System (Tieftöner + Hochtöner)
2.2. Messgeometrie
- Fernfeld: 3.5 m Abstand für charakteristische Abstrahlung
- Nahfeld: Direkt an Membran/Port für unverzerrte Tieftonmessung
- Winkel: On-axis-Messungen (0° zur Hauptabstrahlrichtung)
3. Experiment 1: Systemidentifikation durch Sweep-Messung
3.1. Anregungssignal
x = pf.signals.exponential_sweep_time(
n_samples=2**18,
frequency_range=[10, 22050],
sampling_rate=44100
)
x_padded = pf.dsp.pad_zeros(x, pad_width=1 * x.sampling_rate)
Vorteile des Exponential-Sweeps:
- Gleichmäßige Energieverteilung über Frequenzbereich
- Gute Signal-Rausch-Verhältnis
- Nichtlineare Verzerrungen zeitlich separiert
3.2. Dekonvolution und Impulsantwort-Extraktion
# Aufnahme mit Referenzsignal
recording = sd.playrec(x_padded.time.T, channels=2)
y = pf.Signal(recording[:,0].T, x_padded.sampling_rate)
x_reference = pf.Signal(recording[:,1].T, x_padded.sampling_rate)
# Regularisierte Dekonvolution
x_inverted = pf.dsp.regularized_spectrum_inversion(x_reference, (20, 21000))
h = y * x_inverted # Impulsantwort des Systems
Regularisierung: Verhindert numerische Instabilitäten bei schwacher Anregung in bestimmten Frequenzbereichen.
4. Experiment 2: Nahfeld-Messungen und Pegelkorrektur
4.1. Konzept der Nahfeld-Messung
Problem: Fernfeld-Messungen sind bei tiefen Frequenzen durch Raumakustik gestört. Lösung: Nahfeld-Messungen eliminieren Raumeinflüsse, benötigen aber Flächenkorrektur.
4.2. Pegelkorrektur nach Keele-Methode
def add_nearfield(ir_m, ir_t, S_m, S_t):
# Flächenverhältnis-Korrektur
ratio = np.sqrt(S_t / S_m)
ir_t_corrected = pf.multiply((ir_t, ratio), domain='freq')
result = pf.add((ir_m, ir_t_corrected), domain='freq')
return result, ir_t_corrected
Messungen:
- Membran:
S_membran = π * (0.261/2)²
(Tieftöner-Membranfläche) - Port:
S_tunnel = 0.233 * 0.035 * 4
(Bassreflex-Öffnungen)
Physikalische Grundlage: Schallleistung proportional zu Membranfläche, Schalldruck zur Wurzel der Fläche.
5. Experiment 3: Fernfeld-Messung und Fensterung
5.1. Fensterung zur Reflexions-Eliminierung
def windowed_ir(ir, w_time):
start_samples = int(pf.dsp.find_impulse_response_start(ir, threshold=10))
w_size = int(round(w_time * ir.sampling_rate))
# Symmetrisches Hann-Fenster um Impulsantwort-Start
start = start_samples - w_size // 2
stop = start_samples + w_size // 2
ir_windowed = pf.dsp.time_window(ir, [start, stop],
window='hann', shape='symmetric')
return ir_windowed
Zweck: Entfernung von Raumreflexionen, die das charakteristische Abstrahlungsverhalten überlagern.
Fensterlänge: 23 ms - Kompromiss zwischen Zeitauflösung und Frequenzauflösung.
6. Experiment 4: Nah-/Fernfeld-Kombination
6.1. Hybride Frequenzgang-Konstruktion
def combine_near_and_farfield(ir_near, ir_far, f_cut):
frequencies = ir_far.frequencies
f_index = np.argmin(np.abs(frequencies - f_cut))
# Amplitude und Phase separieren
abs_far = np.abs(ir_far.freq)
phase_far = np.angle(ir_far.freq)
abs_near = np.abs(ir_near.freq)
# Nahfeld-Skalierung auf Fernfeld bei Übergangsfrequenz
scale_factor = abs_far[..., f_index] / abs_near[..., f_index]
adjusted_abs_near = abs_near * scale_factor
# Nahtlose Kombination
combined_abs = abs_far.copy()
combined_abs[..., :f_index] = adjusted_abs_near[..., :f_index]
# Rekonstruktion mit Fernfeld-Phase
combined_complex = combined_abs * np.exp(1j * phase_far)
return pf.Signal(combined_complex, ir_far.sampling_rate, domain='freq')
Übergangsfrequenz: 400 Hz - oberhalb Raumakustik-Einfluss, unterhalb Chassis-Interferenzen.
7. Experiment 5: Aktive Frequenzweiche und Entzerrung
7.1. Zeitausrichtung der Chassis
def shift_ir(ir_TT, ir_HT):
start_TT = pf.dsp.find_impulse_response_start(ir_TT, threshold=0)
start_HT = pf.dsp.find_impulse_response_start(ir_HT, threshold=0)
# Synchronisation der Impulsantwort-Starts
if start_HT < start_TT:
shift_samples = start_TT - start_HT
ir_HT = pf.dsp.time_shift(ir_HT, shift_samples, mode='linear')
elif start_TT < start_HT:
shift_samples = start_HT - start_TT
ir_TT = pf.dsp.time_shift(ir_TT, shift_samples, mode='linear')
return ir_TT, ir_HT
7.2. Linkwitz-Riley Frequenzweiche
def crossover_LR_Filter(ir_TT, ir_HT, N, f_cross):
# Komplementäre Filter 8. Ordnung
TT_low = pf.dsp.filter.crossover(ir_TT, N, f_cross)
HT_high = pf.dsp.filter.crossover(ir_HT, N, f_cross)
# Summenbildung
sum_signal = TT_low[0] + HT_high[1]
# Multi-Channel-Signal: [Tieftöner, Hochtöner, Summe]
time_data = np.stack((TT_low[0].time[0], HT_high[1].time[0],
sum_signal.time[0]), axis=0)
return pf.Signal(time_data[:, np.newaxis, :], TT_low.sampling_rate)
Filter-Parameter:
- Ordnung: N = 8 (48 dB/Oktave Flankensteilheit)
- Übergangsfrequenz: f_cross = 1800 Hz
- Typ: Linkwitz-Riley für kohärente Summierung
7.3. Parametrische Entzerrung
# Beispiel Entzerrungsfilter
filtered_HT = pf.dsp.filter.bell(filtered_HT, 4000, -10, 0.5) # Resonanzreduktion
filtered_TT = pf.dsp.filter.bell(filtered_TT, 280, 3, 4) # Bassanhebung
filtered_HT = pf.dsp.filter.high_shelf(filtered_HT, 5500, 1, 1) # Luftigkeitsanhebung
Filter-Typen:
- Bell: Parametrische Glockenfilter für spezifische Resonanzen
- Shelf: Breitbandige Anhebung/Absenkung
- Allpass: Phasenkorrektur ohne Amplitudenänderung
8. Wichtige Konzepte
8.1. Messtechnik
- Nah-/Fernfeld-Komplementarität: Kombination für vollständigen Frequenzbereich
- Fenster-Techniken: Zeitliche Begrenzung für Reflexions-Eliminierung
- Regularisierte Dekonvolution: Numerisch stabile Systemidentifikation
8.2. Lautsprecherakustik
- Bassreflex-Prinzip: Port-Abstimmung für erweiterten Tiefgang
- Chassis-Interferenz: Konstruktive/destruktive Überlagerung
- Zeitverhalten: Phasenlinearität für natürliche Wiedergabe
8.3. Signalverarbeitung
- IIR-Filterdesign: Effiziente Echtzeitentzerrung
- Crossover-Topologien: Optimal summierend für kohärente Abstrahlung
- Frequenzbereichs-Manipulation: Komplexe Spektren für Amplitude/Phase-Kontrolle
9. Praktische Erkenntnisse
9.1. Messumgebung
- Raum-Einfluss: Kritisch für Fernfeld-Messungen
- Mikrofonpositionierung: Reproduzierbarkeit der Ergebnisse
- Hardware-Kalibrierung: Absolute Pegel-Referenzierung
9.2. Design-Optimierung
- Zeitausrichtung: Kohärente Summierung im Übergangsbereich
- Entzerrungs-Strategegie: Parametrisch vs. FIR-basiert
- Psychoakustische Optimierung: Technische Messungen vs. subjektive Bewertung
9.3. Software-Tools
- PyFar-Ecosystem: Umfassende Toolbox für Lautsprecher-Development
- Real-time-Processing: Echtzeitfähige Filter-Implementierung
- Automatisierung: Batch-Processing für systematische Optimierung
Dieses Labor vermittelte fortgeschrittene Kenntnisse der elektroakustischen Messung und deren Anwendung im Lautsprechersystemdesign.