AN01

Introduction

The EARLAB RESEARCH P100DP DPOAE Measurement System is a battery-powered amplifier for advanced auditory research. A primary application represents evoking and measuring distortion-product otoacoustic emissions (DPOAEs) in humans.

Otoacoustic emissions (OAEs) are valuable noninvasive indicators of the functional integrity of the cochlea, i.e., the sound-processing section of the inner ear. DPOAEs, which are elicited by presenting two primary tones, are widely used in clinical and research contexts. However, traditional equipment for these measurements is often expensive and inflexible.

For many years, researchers and scientists in auditory research (including us) relied on DPOAE measurement probes from Etymotic Research Inc. (Elk Grove, USA), particularly the well-known ER-10C. These probes, however, are no longer available for sale purchase. In addition, they were not easily compatible with consumer-grade sound cards and required costly professional data acquisition hardware.

That’s why we at EARLAB developed our own DPOAE measurement system, the EARLAB RESEARCH P100DP, which can be connected to both sound cards and professional data acquisition hardware.

This application note demonstrates how to use the P100DP with an affordable, commercially available sound card to record DPOAEs in humans using the open-source Python package PyOAE.

Components

The measurement setup consists of the following components:

  • A personal computer or laptop.
    In this example, we use a laptop running Windows 10.
  • A USB audio interface, such as the ESI MAYA44 USB+.
    For more information and compatibility requirements, see our list of tested audio interfaces.
  • RCA connection cables and an RCA Y-adapter.
    The exact configuration depends on the specific audio interface used.
  • The EARLAB P100DP DPOAE Measurement System (Fig. 1)
P100DP
Figure 1: P100DP DPOAE Measurement System with R30e Ear Probe (without ear tip).

Connections

Figure 2 shows an example measurement setup, connecting the P100DP to the ESI MAYA44 USB+ audio interface. A key feature of this configuration is the loopback connection from the output channel 1 to input channel 2 of the audio interface using a RCA Y adapter. This loopback is used to determine the system’s audio playback and recording latency by means of a brief signal pulse. By compensating for this latency, synchronized playback and recording can be achieved.

Figure 2: Connect the ESI MAYA44 USB+ sound card to the P100DP measurement system with shortcut connection for synchronization using a sync signal.

Using output channel 1 for synchronization ensures compatibility with systems that provide only two input and two output channels. However, if at least three output channels are available, synchronization can alternatively be achieved using output channel 3 instead.

In the present setup, we connect the sound card (SC) to the P100DP as follows for stimulus delivery and response recording:

SC OUT1     -> P100DP IN1   # Stimulus Channel 1
            -> SC IN2       # Sync Signal

SC OUT2     -> P100DP IN2   # Stimulus Channel 2

P100DP OUT  -> SC IN1       # Recorded Microphone Response

Drivers and Software Configuration

Depending on your OS, the sound card drivers can be configured as follows:

  • For macOS, configure the audio device, e.g., number of channels and sampling rate, using the Audio MIDI Setup. The drivers provided by macOS typically work fine.
  • For Linux systems, the ALSA (Advanced Linux Sound Architecture) project supports most USB sound cards. ALSA drivers can most likely be installed using your distribution’s package manager.
  • For Windows 10/11, it might be necessary to install the sound card drivers provided by the device manufacturer. For the ESI MAYA44 USB+ it is necessary to install the appropriate drivers provided by the manufacturer.

The sound card volume settings controls the output and input amplification provided by your audio device. Avoid maximum volume levels in order to reduce amplifier noise. For the ESI MAYA44 USB+ audio interface, recommended configuration values are shown in Figure 3.

Figure 3: Example volume configuration for the ESI MAYA44 USB+ audio interface.

We use the open-source software PyOAE for synchronous audio playback and recording. This Python package requires Python 3.10 or higher. You can find the latest version of Python on the official website. Please refer to the documentation of PyOAE for installation instructions and package dependencies.

After installation, a first check consists of retrieving a list of available audio devices using the following command from the PyOAE project’s root directory:

python -m examples.display_devices

Alternatively, in Python, information about a specific audio device can be queried using

import sounddevice as sd
# List all available devices
print(sd.query_devices())
# Show detailed information for device with index 3
print(sd.query_devices(3))

In our example with the MAYA44 USB+ and a sampling rate of 44.1 kHz, we can use the following entries in the list of available audio devices (please note that the indices of the audio devices may differ across different platforms):

{
  'name': 'MAYA44USB Ch12 (ESI Audio Devic',
  'index': 2,
  'hostapi': 0,
  'max_input_channels': 4,
  'max_output_channels': 0,
  'default_low_input_latency': 0.09,
  'default_low_output_latency': 0.09,
  'default_high_input_latency': 0.18,
  'default_high_output_latency': 0.18,
  'default_samplerate': 44100.0
}

{
  'name': 'MAYA44USB Ch12 (ESI Audio Devic',
  'index': 7,
  'hostapi': 0,
  'max_input_channels': 0,
  'max_output_channels': 4,
  'default_low_input_latency': 0.09,
  'default_low_output_latency': 0.09,
  'default_high_input_latency': 0.18,
  'default_high_output_latency': 0.18,
  'default_samplerate': 44100.0
}

In PyOAE, the hardware configuration can be set in the module examples.device_config using the indices of the output and input devices:

INPUT_DEVICE: int | str = 2
"""Index or name of the input device."""

OUTPUT_DEVICE: int | str = 7
"""Index or name of the output device."""

FS: float = 44100.
"""Sampling frequency in Hz.

Note: On Windows, there are typically multiple device entries for input and output capabilities of a single hardware device, depending on channel combinations and sampling rate. For both input and output, the indices must be selected and assigned correctly in the device_config module. The device index typically remains constant as long as the audio setup does not change. However, connecting or disconnecting other audio devices (e.g., USB microphones or headsets) can cause index values to shift.

Note: While the audio device may appear in the device list when using the default Windows audio drivers, connection attempts will most likely result in errors. We recommend using the manufacturer’s dedicated device driver for reliable performance.

Record DPOAEs Using PyOAE

Once everything is set, a DPOAE measurement can be started by executing the following command

python -m examples.record_dpoae

In this basic example, the measurement system has not been calibrated, i.e., both the primary-tone levels and the measurement results are shown in dB re digital full scale rather than in dB SPL.

Primary-tone levels and frequencies can be set in the record_dpoae module. Figure 4 shows an exemplary DPOAE measurement in normal-hearing ear.

Figure 4: DPOAE example recording in a normal-hearing ear with f2=8 kHz (f2/f1 =-1.2). The DPOAE is readily visible at the cubic difference frequency fdp=2f1-f2, which is 5.33 kHz in this measurement. Please note that the measurement does not utilize an absolute calibration of the microphone and shows results in dB re full scale.