calibrateMicrophone

Коэффициент калибровки для микрофона

Описание

пример

calibrationFactor = calibrateMicrophone(micRecording,fs,SPLreading) возвращает коэффициент калибровки для микрофона, используемого для создания micRecording.

calibrationFactor = calibrateMicrophone(micRecording,fs,SPLreading,Name,Value) задает опции с использованием одного или нескольких Name,Value аргументы в виде пар.

Пример: calibrationFactor = calibrateMicrophone(micRecording,fs,SPLreading,'FrequencyWeighting','Z-weighting') возвращает коэффициент калибровки для показаний SPL, который применяет Z-взвешивание.

Примеры

свернуть все

Эта схема изображает настройку, используемую в примере:

Чтобы запустить этот пример, необходимо подключить микрофон и громкоговоритель к полнодуплексной звуковой карте и использовать SPL-счетчик, чтобы определить истинный уровень громкости.

Создайте audioOscillator объект для генерации синусоиды 1 кГц со скоростью дискретизации 48 кГц.

fs = 48e3;
osc = audioOscillator("sine",1e3,"SampleRate",fs);

Создайте audioPlayerRecorder объект, чтобы записать синусоиду в ваш громкоговоритель и одновременно считать с вашего микрофона.

playRec = audioPlayerRecorder(fs);

Создайте dsp.AsyncBuffer объект для хранения звука, записанного с микрофона. Укажите емкость буфера для хранения данных на 3 секунды.

dur = 3;
buff = dsp.AsyncBuffer(dur*fs);

В цикле в течение трех секунд:

  • Сгенерируйте систему координат синусоиды 1 кГц.

  • Запишите систему координат в громкоговоритель и одновременно считайте систему координат с микрофона.

  • Запишите системы координат, полученные от микрофона, в буфер.

В то время как цикл запускается, обратите внимание на истинное измерение SPL, как сообщается из вашего SPL-счетчика. После завершения считайте содержимое объекта буфера.

numFrames = dur*(fs/osc.SamplesPerFrame);
for ii = numFrames
    audioOut = osc();
    audioIn = playRec(audioOut);
    write(buff,audioIn);
end

SPL = 78.2; % read from physical SPL meter

micRecording = read(buff);

Вычислите коэффициент калибровки для микрофона.

calibrationFactor = calibrateMicrophone(micRecording,playRec.SampleRate,SPL);

Схема изображает настройку примера и поток данных.

Чтобы запустить этот пример, вы должны подключить микрофон к аудиокарте, сгенерировать тон 1 кГц с помощью внешнего устройства и использовать SPL-счетчик, чтобы определить истинный уровень громкости.

Задайте частоту дискретизации 48 кГц для вашего аудио устройства и 3-секундную длительность для получения аудио. Создайте audioDeviceReader объект для чтения с вашего аудио устройства.

fs = 48e3;
dur = 3;

deviceReader = audioDeviceReader(fs);

Создайте dsp.AsyncBuffer объект для хранения потокового аудио.

buff = dsp.AsyncBuffer(dur*fs);

Запустите тестовый тон 1 кГц с помощью внешнего громкоговорителя. Затем в цикле прочтите из вашего аудио устройства и затем запишите данные в буфер. В то время как цикл запускается, обратите внимание на истинное измерение SPL, как сообщается из вашего SPL-счетчика. После завершения считайте содержимое объекта буфера.

tic
while toc < dur
    audioIn = deviceReader();
    write(buff,audioIn);
end

SPL = 77.7; % read from physical SPL meter

micRecording = read(buff);

Вычислите коэффициент калибровки для микрофона.

calibrationFactor = calibrateMicrophone(micRecording,deviceReader.SampleRate,SPL);

Входные параметры

свернуть все

Аудиосигнал, используемый для калибровки микрофона, задается в виде вектора-столбца (моно) или матрицы независимых каналов (стерео). micRecording должен быть получен из микрофона, который необходимо калибровать. Запись должна состоять из тестового тонального сигнала 1 кГц.

Типы данных: single | double

Частота дискретизации записи микрофона в Гц, заданная как положительная скалярная величина. Рекомендуемая частота дискретизации для новых записей составляет 48 кГц.

Типы данных: single | double

Уровень звукового давления, сообщенный с счетчика в дБ, задается в виде скаляра или вектора. Если SPLreading задается как вектор, должно быть то же количество элементов, что и столбцы в micRecording.

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: calibrateMicrophone(micRecording,fs,SPLReading,'PressureReference',22)

Ссылка давление для расчета дБ в паскалях, заданное как положительная скалярная величина. Давление ссылки по умолчанию (20 микропаскалей) является общим значением для воздуха.

Типы данных: single | double

Взвешивание частоты, используемое физическим измерителем, указывается как 'A-weighting', 'C-weighting', или 'Z-weighting'.

Типы данных: char | string

Выходные аргументы

свернуть все

Коэффициент калибровки микрофона, возвращенный как скаляр или вектор-строка с таким же количеством элементов, как SPLreading.

Типы данных: single | double

Алгоритмы

Чтобы определить коэффициент калибровки для микрофона, calibrateMicrophone использует функцию:

  • Калибровочный тональный сигнал, записанный с микрофона, который вы хотите калибровать.

  • Частота дискретизации, используемая звуковой картой для преобразования AD.

  • Известная громкость, обычно определяемая с помощью физического SPL-счетчика.

  • Взвешивание частоты, используемое вашим физическим SPL-измерителем.

  • Атмосферное давление в месте регистрации.

Схема указывает типовую физическую настройку и местоположение необходимой информации.

Diagram of physical setup.

The calibrationFactor задается согласно уравнению:

CalibrationFactor=10((SPLreadingk)/20)rms(x)

где x запись микрофона прошла через весовой фильтр, указанный в FrequencyWeighting аргумент. k составляет 1 паскаль относительно PressureReference рассчитано в дБ:

k=20log10(1PressureReference).

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2020a