splMeter

Измерьте уровень звукового давления звукового сигнала

Описание

Система splMeter object™ вычисляет измерения уровня звукового давления. Объект возвращает измерения для:

  • взвешенные частотой уровни звука

  • быстро или медленные взвешенные временем уровни звука

  • эквивалентно-непрерывные уровни звука

  • пиковые уровни звука

  • максимальные уровни звука

Реализовывать измерение SPL:

  1. Создайте объект splMeter и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

SPL = splMeter
SPL = splMeter(Name,Value)

Описание

SPL = splMeter создает Системный объект, SPL, который выполняет измерение SPL.

SPL = splMeter(Name,Value) наборы каждое свойство Name к заданному Value. Незаданные свойства имеют значения по умолчанию.

Пример: SPL = splMeter('FrequencyWeighting','C-weighting','SampleRate',12000) создает Системный объект, SPL, который выполняет C-взвешивание и действует на уровне 12 кГц.

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Ширина аналитических полос, заданных как '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

Порядок фильтра октавы, заданного как ровное целое число.

Настраиваемый: нет

Зависимости

Чтобы включить это свойство, установите Пропускную способность на '1 octave', '2/3 octave' или '1/3 octave'.

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

Взвешивание частоты применялось к входному, заданному как 'A-weighting', 'C-weighting' или 'Z-weighting', где Z-взвешивание не соответствует никакому взвешиванию. Взвешивание частоты разработано и реализовало использование Системного объекта weightingFilter.

Настраиваемый: нет

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

Время взвесив, в секундах, для вычисления взвешенного временем уровня звука и максимума взвешенный временем уровень звука, заданный как 'Fast' или 'Slow'. Свойство TimeWeighting используется, чтобы задать коэффициент фильтра lowpass.

  • 'Fast' – 1/8

  • 'Slow' – 1

Настраиваемый: да

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

Ссылочное давление для вычислений дБ в Pa, заданном как положительная скалярная величина.

Настраиваемый: да

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

Временной интервал, в секундах, чтобы сообщить об эквивалентно-непрерывных, пиковых, и максимальных взвешенных временем уровнях звука, заданных как положительное скалярное целое число.

Настраиваемый: нет

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

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

Чтобы установить калибровочный фактор использование ссылочного тона, используйте calibrate.

Настраиваемый: нет

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

Введите частоту дискретизации в Гц, заданном как положительная скалярная величина.

Настраиваемый: нет

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

Использование

Синтаксис

[Lt,Leq,Lpeak,Lmax] = SPL(audioIn)

Описание

пример

[Lt,Leq,Lpeak,Lmax] = SPL(audioIn) возвращает значения измерения для взвешенного временем (Lt) уровень звука текущего входного кадра, audioIn. Объект также возвращает эквивалентно-непрерывное (Leq), пик (Lpeak) и максимум, взвешенный временем (Lmax) уровни звука входа к вашему метру SPL.

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

развернуть все

Аудиовход к метру SPL, заданному как вектор-столбец или матрица. Столбцы матрицы обработаны как независимые звуковые каналы.

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

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

развернуть все

Взвешенный временем уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как 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

Эквивалентно-непрерывный уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как 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

Пиковый уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как 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

Максимум взвешенный временем уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как 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Центральные частоты фильтров
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

Используйте Систему splMeter object™, чтобы измерить уровень звукового давления A-weighted сигнала передачи потокового аудио. Задайте двухсекундный временной интервал для создания отчетов и быстрого взвешивания времени. Визуализируйте измерения SPL с помощью Системного объекта dsp.TimeScope.

Создайте объект dsp.AudioFileReader читать в кадре звукового файла кадром. Создайте объект audioDeviceWriter слушать звуковой сигнал. Создайте объект dsp.TimeScope визуализировать измерения SPL. Создайте splMeter, чтобы измерить уровень звукового давления звукового файла. Используйте калибровочный фактор по умолчанию 1.

source = dsp.AudioFileReader('Ambiance-16-44p1-mono-12secs.wav');
fs = source.SampleRate;

player = audioDeviceWriter('SampleRate',fs);

scope  = dsp.TimeScope('SampleRate',fs, ...
    'TimeSpanOverrunAction','Scroll', ...
    '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);

В цикле аудиопотока:

  1. Читайте в кадре звукового сигнала.

  2. Проигрывайте звуковой сигнал к своему устройству вывода.

  3. Вызовите метр SPL, чтобы возвратить взвешенные временем, эквивалентно-непрерывные, пиковые, и максимальные взвешенные временем уровни звука в дБ.

  4. Отобразите уровни звука с помощью осциллографа.

Как лучшая практика, выпустите свои объекты однажды завершенный.

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)

splMeter позволяет вам контролировать уровень звукового давления для полос дробной октавы и октавы. В этом примере вы контролируете эквивалентно-непрерывный уровень звукового давления 1/3-octave полос.

Создайте объект 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');

В цикле аудиопотока:

  1. Читайте в кадре звукового сигнала.

  2. Проигрывайте звуковой сигнал к своему устройству вывода.

  3. Вызовите метр SPL, чтобы возвратить эквивалентно-непрерывный уровень звукового давления в дБ.

  4. Отобразите уровни звука с помощью осциллографа. Обновите осциллограф только, когда эквивалентно-непрерывный уровень звукового давления изменится.

Как лучшая практика, выпустите свои объекты однажды завершенный.

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].

Ссылки

[1] Харрис, Сирил М. Руководство Акустических Измерений и Шумового Управления. 3-й американский Институт редактора Физики, 1998.

[2] Международная электротехническая комиссия. Электроакустика - метры Уровня звука - Часть 1: Спецификации. 61672-1:2013 IEC.

[3] Американский национальный институт стандартов. ANSI S1.4: спецификация для метров уровня звука. 1983.

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

Введенный в R2018a