exponenta event banner

splMeter

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

Описание

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

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

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

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

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

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

Для реализации измерения SPL:

  1. Создать splMeter и задайте его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

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

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

Пример: SPL = splMeter('FrequencyWeighting','C-weighting','SampleRate',12000) создает объект System, SPL, которая выполняет С-взвешивание и работает на частоте 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 используется для указания коэффициента фильтра нижних частот.

  • '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

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

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

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

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

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

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

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

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

calibrateКалибровка измерительного прибора с использованием калибровочного тона с известным уровнем
getCenterFrequenciesЦентральные частоты фильтров
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Используйте splMeter Система object™ для измерения взвешенного по шкале А уровня звукового давления потокового звукового сигнала. Укажите двухсекундный временной интервал для отчетов и быстрое взвешивание времени. Визуализация измерений 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 октавы.

Создать 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.

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

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

.
Представлен в R2018a