Измерьте уровень звукового давления аудиосигнала
The splMeter
Система object™ вычисляет измерения уровня звукового давления. Объект возвращает измерения для:
взвешенные по частоте уровни звука
быстрый или медленный взвешенный по времени уровень звука
эквивалентно-непрерывные уровни звука
пиковые уровни звука
максимальные уровни звука
Для реализации измерений SPL:
Создайте splMeter
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
SPL = splMeter
создает Системный объект, SPL
, который выполняет измерение SPL.
SPL = splMeter(
устанавливает каждое свойство Name,Value
)Name
к заданной Value
. Неопределенные свойства имеют значения по умолчанию.
SPL = splMeter('FrequencyWeighting','C-weighting','SampleRate',12000)
создает Системный объект, SPL
, который выполняет С-взвешивание и работает на 12 кГц.Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
Bandwidth
- Ширина полос анализа'Full band'
(по умолчанию) | '1 octave'
| '2/3 octave'
| '1/3 octave'
Ширина полос анализа, заданная как 'Full band'
, '1 octave'
, '2/3 octave'
, или '1/3 octave'
. Если Bandwidth
задается как 'Full band'
SPL-счетчик возвращает один набор измерений для всей полосы частот. Если Bandwidth
задается как '1 octave'
, '2/3 octave'
, или '1/3 octave'
, SPL-метр возвращает по одному набору измерений на октаву или дробно-октавную полосу.
Настраиваемый: Нет
Типы данных: char
| string
FrequencyRange
- Частотная область значений группы фильтров (Гц)[22 22050]
(по умолчанию) | двухэлементный вектор-строка положительных монотонно увеличивающихся значенийЧастотная область значений группы фильтров в Гц, заданная как двухэлементный вектор-строка положительных монотонно возрастающих значений. Частота полос центром выше SampleRate
/ 2 исключены.
Настраиваемый: Нет
Чтобы включить это свойство, задайте Bandwidth
на '1 octave'
, '2/3 octave'
, или '1/3 octave'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
OctaveFilterOrder
- Порядок октавного фильтра2
(по умолчанию) | четным целым числомПорядок октавного фильтра, заданный как четное целое число.
Настраиваемый: Нет
Чтобы включить это свойство, задайте Bandwidth
на '1 octave'
, '2/3 octave'
, или '1/3 octave'
.
Типы данных: single
| double
FrequencyWeighting
- Взвешивание частоты, применяемое к входу'A-weighting'
(по умолчанию) | 'C-weighting'
| 'Z-weighting'
(без взвешивания)Взвешивание частоты, применяемое к входу, задается как 'A-weighting'
, 'C-weighting'
, или 'Z-weighting'
, где Z-взвешивание не соответствует никакому взвешиванию. Взвешивание частот спроектировано и реализовано с помощью weightingFilter
Системный объект.
Настраиваемый: Нет
Типы данных: char
| string
TimeWeighting
- Взвешивание по времени (ам)'Fast'
(по умолчанию) | 'Slow'
Взвешивание времени, в секундах, для вычисления взвешенного по времени уровня звука и максимального взвешенного по времени уровня звука, заданное как 'Fast'
или 'Slow'
. The TimeWeighting
свойство используется для задания коэффициента lowpass.
'Fast'
– 1/8
'Slow'
– 1
Настраиваемый: Да
Типы данных: char
| string
PressureReference
- Базовое давление для расчетов дБ (Па)2e-5
(по умолчанию) | положительная скалярная величинаСсылка давление для вычислений дБ в Па, заданное как положительная скалярная величина.
Настраиваемый: Да
Типы данных: single
| double
TimeInterval
- Временной интервал для измерений (измерений ) уровня отчетности1
(по умолчанию) | положительная скалярная величинаВременной интервал, в секундах, для сообщения об эквивалентно-непрерывных, пиковых и максимальных взвешенных по времени уровнях звука, заданных как положительное скалярное целое число.
Настраиваемый: Нет
Типы данных: single
| double
CalibrationFactor
- Коэффициент калибровки, умноженный на входСкалярный (моно вход) или векторный (многоканальный вход) коэффициент калибровки, умноженный на вход.
Чтобы задать коэффициент калибровки с помощью ссылки тонального сигнала, используйте calibrate
.
Настраиваемый: Нет
Типы данных: single
| double
SampleRate
- Входная частота выборки (Гц)44100
(по умолчанию) | положительная скалярная величинаВход скорость выборки в Гц, заданная как положительная скалярная величина.
Настраиваемый: Нет
Типы данных: single
| double
[
возвращает значения измерения для взвешенного по времени (Lt
,Leq
,Lpeak
,Lmax
]
= SPL(audioIn
)Lt
) уровень звука текущего входного кадра, audioIn
. Объект также возвращает equivalent-continuous (Leq
), пик (Lpeak
) и максимальное количество взвешенных по времени (Lmax
) уровни звука входного входа вашего SPL-счетчика.
audioIn
- Аудио вход в SPL счетчикАудио вход в SPL счетчик, заданный как вектор-столбец или матрица. Столбцы матрицы рассматриваются как независимые аудиоканалы.
Типы данных: single
| double
Lt
- Взвешенный по времени уровень звука (дБ)Взвешенный по времени уровень звука в дБ, возвращенный как вектор-столбец, матрица или трехмерный массив же тип audioIn
.
Размер и интерпретация выходов зависят от значения свойства Bandwidth:
'Full band'
(по умолчанию) -- Lt
, Leq
, Lpeak
, и Lmax
возвращаются как векторы-столбцы или матрицы того же размера, как audioIn
.
'1 octave'
, '2/3 octave'
, или '1/3 octave'
– Lt
, Leq
, Lpeak
, и Lmax
возвращаются как L -by- B -by- C массивы.
L -- Количество строк в audioIn
B -- Количество октавных полос
C -- Количество столбцов в audioIn
Типы данных: single
| double
Leq
- Эквивалентно непрерывный уровень звука (дБ)Эквивалентно-непрерывный уровень звука в дБ, возвращаемый как вектор-столбец, матрица или трехмерный массив же тип audioIn
.
Размер и интерпретация выходов зависят от значения свойства Bandwidth:
'Full band'
(по умолчанию) -- Lt
, Leq
, Lpeak
, и Lmax
возвращаются как векторы-столбцы или матрицы того же размера, как audioIn
.
'1 octave'
, '2/3 octave'
, или '1/3 octave'
– Lt
, Leq
, Lpeak
, и Lmax
возвращаются как L -by- B -by- C массивы.
L -- Количество строк в audioIn
B -- Количество октавных полос
C -- Количество столбцов в audioIn
Типы данных: single
| double
Lpeak
- Пиковый уровень звука (дБ)Пиковый уровень звука в дБ, возвращается как вектор-столбец, матрица или трехмерный массив же тип audioIn
.
Размер и интерпретация выходов зависят от значения свойства Bandwidth:
'Full band'
(по умолчанию) -- Lt
, Leq
, Lpeak
, и Lmax
возвращаются как векторы-столбцы или матрицы того же размера, как audioIn
.
'1 octave'
, '2/3 octave'
, или '1/3 octave'
– Lt
, Leq
, Lpeak
, и Lmax
возвращаются как L -by- B -by- C массивы.
L -- Количество строк в audioIn
B -- Количество октавных полос
C -- Количество столбцов в audioIn
Типы данных: single
| double
Lmax
- Максимальный взвешенный по времени уровень звука (дБ)Максимальный взвешенный по времени уровень звука в дБ, возвращаемый как вектор-столбец, матрица или трехмерный массив же тип audioIn
.
Размер и интерпретация выходов зависят от значения свойства Bandwidth:
'Full band'
(по умолчанию) -- Lt
, Leq
, Lpeak
, и Lmax
возвращаются как векторы-столбцы или матрицы того же размера, как audioIn
.
'1 octave'
, '2/3 octave'
, или '1/3 octave'
– Lt
, Leq
, Lpeak
, и Lmax
возвращаются как L -by- B -by- C массивы.
L -- Количество строк в audioIn
B -- Количество октавных полос
C -- Количество столбцов в audioIn
Типы данных: single
| double
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
calibrate | Калибровка счетчика с помощью калибровочного тонального сигнала с известным уровнем |
getCenterFrequencies | Центральные частоты фильтров |
Используйте splMeter
Система object™ для измерения уровня звукового давления, взвешенного A, передачи потокового аудио. Задайте двухсекундный временной интервал для отчетов и быстрое взвешивание по времени. Визуализируйте измерения SPL с помощью timescope
объект.
Создайте dsp.AudioFileReader
объект для чтения в аудио файла системы координат по системе координат. Создайте audioDeviceWriter
объект для прослушивания аудиосигнала. Создайте timescope
объект для визуализации измерений SPL. Создайте splMeter
для измерения уровня звукового давления звукового файла. Используйте коэффициент калибровки по умолчанию 1.
source = dsp.AudioFileReader('Ambiance-16-44p1-mono-12secs.wav'); fs = source.SampleRate; player = audioDeviceWriter('SampleRate',fs); scope = timescope('SampleRate',fs, ... 'TimeSpanOverrunAction','Scroll', ... 'TimeSpanSource','Property','TimeSpan',3,'ShowGrid',true, ... 'YLimits',[20 110],'AxesScaling','Auto', ... 'ShowLegend',true,'BufferLength',4*3*fs, ... 'ChannelNames', ... {'Lt_AF','Leq_A','Lpeak_A','Lmax_AF'}, ... 'Name','Sound Pressure Level Meter'); SPL = splMeter('TimeWeighting','Fast', ... 'FrequencyWeighting','A-weighting', ... 'SampleRate',fs, ... 'TimeInterval',2);
В цикле аудиопотока:
Считайте в системе координат аудиосигнала.
Воспроизведите аудиосигнал на устройстве выхода.
Вызовите SPL-счетчик, чтобы вернуть взвешенные по времени, непрерывные по эквиваленту, пиковые и максимальные по времени уровни звука в дБ.
Отобразите уровни звука с помощью возможностей.
Как лучшая практика, отпустите объекты после завершения.
while ~isDone(source) x = source(); player(x); [Lt,Leq,Lpeak,Lmax] = SPL(x); scope([Lt,Leq,Lpeak,Lmax]) end release(source) release(player) release(SPL) release(scope)
The splMeter
позволяет вам контролировать уровень звукового давления для октавных и дробно-октавных полос. В этом примере вы отслеживаете эквивалентно-непрерывный уровень звукового давления 1/3-октавных полос.
Создайте dsp.AudioFileReader
объект для чтения в аудио файла системы координат по системе координат. Создайте audioDeviceWriter
объект, чтобы вы могли прослушивать аудиосигнал. Создайте splMeter
для измерения октавного уровня звукового давления звукового файла. Используйте коэффициент калибровки по умолчанию 1. Создайте dsp.ArrayPlot
объект для визуализации эквивалентно-непрерывного SPL для каждой октавной полосы.
source = dsp.AudioFileReader('JetAirplane-16-11p025-mono-16secs.wav'); fs = source.SampleRate; player = audioDeviceWriter('SampleRate',fs); SPL = splMeter( ... 'Bandwidth','1/3 octave', ... 'SampleRate',fs); centerFrequencies = getCenterFrequencies(SPL); scope = dsp.ArrayPlot(... 'XDataMode','Custom', ... 'CustomXData',centerFrequencies, ... 'XLabel','Octave Band Center Frequencies (Hz)', ... 'YLabel','Equivalent-Continuous Sound Level (dB)', ... 'YLimits',[20 90], ... 'ShowGrid',true, ... 'Name','Sound Pressure Level Meter');
В цикле аудиопотока:
Считайте в системе координат аудиосигнала.
Воспроизведите аудиосигнал на устройстве выхода.
Вызовите SPL-счетчик, чтобы вернуть эквивалентный непрерывный уровень звукового давления в дБ.
Отобразите уровни звука с помощью возможностей. Обновляйте возможности только при изменении эквивалентно-непрерывного уровня звукового давления.
Как лучшая практика, отпустите объекты после завершения.
LeqPrevious = zeros(size(centerFrequencies)); while ~isDone(source) x = source(); player(x); [~,Leq] = SPL(x); for i = 1:size(Leq,1) if LeqPrevious ~= Leq(i,:) scope(Leq(i,:)') LeqPrevious = Leq(i,:); end end end release(source) release(player) release(SPL) release(scope)
Расчеты уровня звукового давления выполняются по алгоритмам, описанным в [1]. Можно задать значения свойств, соответствующие стандартам [2] и [3].
Для расчета эффектов окружающей среды и устройства ввода в измерениях SPL, аудио вход умножается на калибровочный коэффициент:
The CalibrationFactor
свойство может быть задано непосредственно, или при помощи calibrate
функция, которая сравнивает известный уровень с полученными данными. Известный уровень определяется с помощью физического калибратора.
Применяется взвешивание А-, С- или Z-частот. Взвешивание частот реализуется с помощью weightingFilter
Системный объект.
Если вы задаете Bandwidth
свойство как '1 octave'
, '2/3 octave'
или '1/3 octave'
затем вычисления SPL применяются к каждой октавной или дробно-октавной полосе. Эти полосы анализа определяются после взвешивания частоты.
Взвешенный по времени уровень звука определяется как отношение взвешенного по времени корневого среднего квадратного звукового давления к ссылке звуковому давлению, преобразованному в дБ. То есть,
h (y2) может интерпретироваться как свертка y2 с фильтром с импульсной характеристикой . y - выход фильтра частотного взвешивания. Импульсная характеристика соответствует lowpass вида . Используя импульсную инвариацию, дискретный фильтр может быть интерпретирован как,
τ задается коэффициентом взвешивания по времени 0,125 (если TimeWeighting
установлено в 'Fast'
) или 1 (если TimeWeighting
установлено в 'Slow'
).
fs - частота дискретизации, заданная SampleRate
свойство.
Эквивалентно-непрерывный уровень звука также называется средним по времени уровнем звука. Это определяется как отношение корневого среднего квадратного звукового давления к ссылке звуковому давлению, преобразованному в дБ. То есть,
где
y - выход фильтра частотного взвешивания.
p o - эталонное звуковое давление, заданное PressureReference
свойство.
Пиковый уровень звука определяется как отношение пикового звукового давления к ссылке звуковому давлению, преобразованному в дБ. То есть,
где
y - выход фильтра частотного взвешивания.
p o - эталонное звуковое давление, заданное PressureReference
свойство.
Максимальный взвешенный по времени уровень звука определяется как наибольший взвешенный по времени уровень звука за установленный временной интервал.
[1] Harris, Cyril M. Handbook of Acoustical Measurements and Noise Control. 3-е ред. Американский институт физики, 1998.
[2] Международная электротехническая комиссия. Электроакустика - Измерители уровня звука - Часть 1: Спецификации. МЭК 61672-1: 2013.
[3] Американский национальный институт стандартов. ANSI S1.4: Спецификации к измерителям уровня звука. 1983.
Указания и ограничения по применению:
Системные объекты в генерации кода MATLAB (MATLAB Coder)
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.