Измерьте уровень звукового давления аудиосигнала
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.