splMeter

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

Описание

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

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

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

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

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

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

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

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

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

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

Создание

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Описание

пример

[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