splMeter

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

Описание

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

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

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

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

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

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

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

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

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

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

Создание

Описание

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

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в 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

Частотный диапазон набора фильтров в Гц в виде двухэлементного вектора-строки из положительных монотонно увеличивающих значений. Диапазоны частот сосредоточены выше SampleRate/2 исключены.

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

Зависимости

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

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

Зависимости

Чтобы включить это свойство, установите Bandwidth к '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 с помощью 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);

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

  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
Для просмотра документации необходимо авторизоваться на сайте