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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

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

свернуть все

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

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

Алгоритмы

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

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

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

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

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

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

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

Diagram of physical setup.

calibrationFactor установлен согласно уравнению:

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

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

k=20log10(1PressureReference).

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

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

Введенный в R2020a