主要内容

calibrateMicrophone

传声器校准系数

描述

例子

calibrationFactor= calibrateMicrophone (micRecordingfsSPLreading返回用于创建的传声器的校准因子micRecording

calibrationFactor= calibrateMicrophone (micRecordingfsSPLreading名称,值使用一个或多个选项指定选项名称,值对参数。

例子:calibrationFactor = calibrateMicrophone(micRecording,fs,SPLreading,'FrequencyWeighting','Z-weighting')返回应用z加权的SPL读数的校准因子。

例子

全部折叠

下图描述了示例中使用的设置:

要运行此示例,必须将麦克风和扬声器连接到全双工声卡,并使用声压级计来确定真实的响度。

创建一个audioOscillator对象以48 kHz的采样率产生1 kHz的正弦波。

Fs = 48e3;osc = audio振荡器(“正弦”1 e3,“SampleRate”fs);

创建一个audioPlayerRecorder对象将正弦波写入扬声器,同时从麦克风读取。

playRec = audioPlayerRecorder(fs);

创建一个dsp。AsyncBuffer对象来存储从麦克风录制的音频。指定缓冲区的容量,以保存3秒的数据。

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

在循环中,持续三秒钟:

  • 生成一帧1千赫正弦波。

  • 将帧写入扬声器,同时从麦克风读取帧。

  • 将从麦克风获得的帧写入缓冲区。

当循环运行时,请注意从SPL仪表中报告的真实SPL测量值。一旦完成,读取缓冲区对象的内容。

numFrames = dur*(fs/osc.SamplesPerFrame);ii = 1:numFrames audioOut = osc();audioIn = playRec(audioOut);写(浅黄色,audioIn);结束释放(playRec);声压级= 78.2;%从物理SPL仪表读取micRecording = read(buff);

计算麦克风的校准因子。

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

该图描述了示例设置和数据流。

要运行此示例,您必须将麦克风连接到音频卡,使用外部设备生成1 kHz的音调,并使用SPL计确定真实的响度级别。

为音频设备指定48 kHz的采样率,并为获取音频指定3秒的持续时间。创建一个audioDeviceReader对象从音频设备中读取。

Fs = 48e3;Dur = 3;deviceReader = audioDeviceReader(fs);

创建一个dsp。AsyncBuffer对象来存储流化音频。

buff = dsp.AsyncBuffer(dur*fs);

使用外接扬声器开始1 kHz测试音调。然后,在循环中,从音频设备读取数据,然后将数据写入缓冲区。当循环运行时,请注意从SPL仪表中报告的真实SPL测量值。一旦完成,读取缓冲区对象的内容。

N = deviceReader.SamplesPerFrame;迷。NumUnreadSamples+N <= buff。容量audioIn = deviceReader();写(浅黄色,audioIn);结束释放(deviceReader);声压级= 77.7;%从物理SPL仪表读取micRecording = read(buff);

计算麦克风的校准因子。

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

输入参数

全部折叠

用于校准麦克风的音频信号,指定为列向量(单声道)或独立通道矩阵(立体声)。micRecording必须从要校准的麦克风获取。录音应由1千赫测试音组成。

数据类型:|

麦克风记录的采样率,以赫兹为单位,指定为正标量。新录音的推荐采样率为48khz。

数据类型:|

声压级从仪表报告,单位为dB,指定为标量或矢量。如果SPLreading指定为向量时,它必须与列中的元素数量相同micRecording

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:calibrateMicrophone (micRecording fs, SPLReading PressureReference, 22)

以帕斯卡为单位计算dB的参考压力,指定为正标量。默认的参考压力(20微帕斯卡)是空气的通用值。

数据类型:|

物理仪表使用的频率加权,具体为“权重”“C-weighting”,或“Z-weighting”

数据类型:字符|字符串

输出参数

全部折叠

传声器校准因子,返回为具有相同数量元素的标量或行向量SPLreading

数据类型:|

算法

要确定传声器的校准因子,请使用calibrateMicrophone功能用途:

  • 从要校准的麦克风记录的校准音调。

  • 声卡用于AD转换的采样率。

  • 已知的响度,通常用物理声压级计确定。

  • 物理SPL仪表使用的频率加权。

  • 记录地点的大气压力。

该图显示了一个典型的物理设置和所需信息的位置。

物理设置图。

calibrationFactor根据公式设置:

CalibrationFactor 10 SPLreading k / 20. rms x

在哪里x麦克风录音是否通过中指定的加权滤波器FrequencyWeighting论点。k1帕斯卡相对于PressureReference计算单位:dB

k 20. 日志 10 1 PressureReference

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

R2020a中引入