loudnessMeter

Стандартно-совместимые измерения громкости

Описание

loudnessMeter Система object™ вычисляет громкость, область значений громкости и истинный пик звукового сигнала в соответствии с EBU R 128 и ITU-R стандарты BS.1770-4.

Реализовывать измерение громкости:

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

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

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

Создание

Описание

loudMtr = loudnessMeter создает Системный объект, loudMtr, это выполняет громкость, измеряющую независимо через каждый входной канал.

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

Пример: loudMtr = loudnessMeter('ChannelWeights',[1.2, 0.8],'SampleRate',12000) создает Системный объект, loudMtr, с весами канала 1,2 и 0.8, и частота дискретизации 12 кГц.

Свойства

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

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

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

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

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

Веса канала по умолчанию следуют стандарту BS.1170-4 ITU-R. Чтобы использовать веса канала по умолчанию, задайте каналы входного сигнала как матрицу в этом порядке: [Левый, Правильный, Центральный, Левый окружают, Право окружают].

Как лучшая практика, задайте ChannelWeights свойство в порядке: [Левый, Правильный, Центральный, Левый окружают, Право окружают].

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

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

Используйте относительный масштаб в измерениях громкости, заданных как логический скаляр.

  • false – Измерения громкости являются абсолютными и возвращены в полном масштабе единиц громкости (LUFS).

  • true – Измерения громкости относительно TargetLoudness значение и возвратилось в единицах громкости (LU).

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

Типы данных: логический

Целевой уровень громкости для относительного масштаба в LUFS, заданном как действительный скаляр.

Например, если TargetLoudness –23 LUFS, затем о значении громкости –23 LUFS сообщают как 0 LU.

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

Зависимости

Чтобы включить это свойство, установите UseRelativeScale к true.

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

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

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

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

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

Описание

пример

[momentary,shortTerm,integrated,range,peak] = loudMtr(audioIn) возвращает значения измерения для мгновенной и краткосрочной громкости входа к вашему метру громкости и истинное пиковое значение текущего входного кадра, audioIn. Это также возвращает интегрированную область значений громкости и громкости входа к вашему метру громкости с прошлого раза reset был назван.

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

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

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

Примечание

Если вы используете ChannelWeights по умолчанию из loudnessMeter, как лучшая практика, задайте входные каналы в этом порядке: [Левый, Правильный, Центральный, Левый окружают, Право окружают].

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

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

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

Мгновенная громкость в единицах громкости относительно полного масштаба (LUFS), возвращенный как вектор-столбец с одинаковым числом строк как audioIn.

По умолчанию измерения громкости возвращены в LUFS. Если вы устанавливаете UseRelativeScale свойство к true, измерения громкости возвращены в единицах громкости (LU).

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

Краткосрочная громкость в единицах громкости относительно полного масштаба (LUFS), возвращенный как вектор-столбец с одинаковым числом строк как audioIn.

По умолчанию измерения громкости возвращены в LUFS. Если вы устанавливаете UseRelativeScale свойство к true, измерения громкости возвращены в единицах громкости (LU).

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

Интегрированная громкость в единицах громкости относительно полного масштаба (LUFS), возвращенный как вектор-столбец с одинаковым числом строк как audioIn.

По умолчанию измерения громкости возвращены в LUFS. Если вы устанавливаете UseRelativeScale свойство к true, измерения громкости возвращены в единицах громкости (LU).

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

Область значений громкости в единицах громкости (LU), возвращенных как вектор-столбец с одинаковым числом строк как audioIn.

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

Истинно-пиковая громкость в dB-TP, возвращенном как вектор-столбец с одинаковым числом строк как audioIn.

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

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

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

release(obj)

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

visualizeОткрытое 'отображение метра' Режима EBU
cloneСоздайте объект дублированной системы
isLockedОпределите, используется ли Системный объект
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта
stepЗапустите алгоритм Системного объекта

Примеры

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

Создайте dsp.AudioFileReader Система object™, чтобы читать в звуковом файле. Создайте loudnesMeter Системный объект. Используйте частоту дискретизации звукового файла как частота дискретизации loudnessMeter.

fileReader = dsp.AudioFileReader('RockDrums-44p1-stereo-11secs.mp3');
loudMtr = loudnessMeter('SampleRate',fileReader.SampleRate);

Читайте в звуковом файле в цикле аудиопотока. Используйте метр громкости, чтобы определить мгновенную, краткосрочную, и интегрированную громкость звукового сигнала. Кэшируйте измерения громкости для анализа.

momentary = [];
shortTerm = [];
integrated = [];

while ~isDone(fileReader)
    x = fileReader();
    [m,s,i] = loudMtr(x);
    momentary = [momentary;m];
    shortTerm = [shortTerm;s];
    integrated = [integrated;i];
end

release(fileReader)

Постройте мгновенную, краткосрочную, и интегрированную громкость звукового сигнала.

t = linspace(0,11,length(momentary));
plot(t,[momentary,shortTerm,integrated])
title('Loudness Measurements')
legend('Momentary','Short-term','Integrated')
xlabel('Time (seconds)')
ylabel('LUFS')

Создайте читателя звукового файла и средство записи аудио устройства.

fileReader = dsp.AudioFileReader('FunkyDrums-44p1-stereo-25secs.mp3', ...
    'SamplesPerFrame',1024);
fs = fileReader.SampleRate;
deviceWriter = audioDeviceWriter('SampleRate',fs);

Создайте осциллограф времени, чтобы визуализировать ваш цикл аудиопотока.

timeScope = dsp.TimeScope('NumInputPorts',2, ...
    'SampleRate',fs, ...
    'TimeSpanOverrunAction','Scroll', ...
    'LayoutDimensions',[2,1], ...
    'TimeSpan',5, ...
    'BufferLength',5*fs);

% Top subplot of scope
timeScope.Title = 'Momentary Loudness';
timeScope.YLabel = 'LUFS';
timeScope.YLimits = [-40, 0];

% Bottom subplot of scope
timeScope.ActiveDisplay = 2;
timeScope.Title = 'Loudness Range';
timeScope.YLabel = 'LU';
timeScope.YLimits = [-1, 2];

Создайте метр громкости. Используйте частоту дискретизации своего входного файла как частота дискретизации вашего метра громкости. Вызовите visualize открыть визуализацию 'EBU-режима' для вашего метра громкости.

loudMtr = loudnessMeter('SampleRate',fs);
visualize(loudMtr)

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

  • Читайте в своем звуковом файле.

  • Вычислите мгновенную область значений громкости и громкости.

  • Визуализируйте мгновенную область значений громкости и громкости на своем осциллографе времени.

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

Визуализация метра громкости 'EBU-режима' обновляется автоматически, в то время как это открыто. Как лучшая практика, выпустите свое средство чтения файлов и средство записи устройства, если цикл завершается.

while ~isDone(fileReader)
    audioIn = fileReader();
    [momentaryLoudness,~,~,LRA] = loudMtr(audioIn);
    timeScope(momentaryLoudness,LRA);
    deviceWriter(audioIn);
end

release(fileReader)
release(deviceWriter)

Создайте читателя звукового файла, чтобы читать в звуковом файле. Создайте средство записи аудио устройства, чтобы записать звуковой файл в ваше аудио устройство. Используйте частоту дискретизации своего средства чтения файлов как частота дискретизации вашего средства записи устройства.

fileReader = dsp.AudioFileReader('Counting-16-44p1-mono-15secs.wav',...
    'SamplesPerFrame',1024);
fs = fileReader.SampleRate;
deviceWriter = audioDeviceWriter('SampleRate',fs);

Создайте метр громкости с целевым набором громкости к -23 по умолчанию LUFS. Откройте визуализацию метра громкости 'EBU-режима'.

loudMtr = loudnessMeter('UseRelativeScale',true);
visualize(loudMtr)

Создайте осциллограф времени, чтобы визуализировать ваш звуковой сигнал и его измеренную относительную мгновенную и краткосрочную громкость.

scope = dsp.TimeScope( ...
    'NumInputPorts',3, ...
    'SampleRate',fs, ...
    'TimeSpanOverrunAction','Scroll', ...
    'TimeSpan',5, ...
    'BufferLength',5*fs, ...
    'Title','Audio Signal, Momentary Loudness, and Short-Term Loudness', ...
    'ChannelNames',{'Audio signal','Momentary loudness','Short-term loudness'}, ...
    'YLimits',[-16,16], ...
    'YLabel','Amplitude / LU', ...
    'ShowLegend',true);

В цикле аудиопотока слушайте и визуализируйте звуковой сигнал.

while ~isDone(fileReader)
    x = fileReader();
    [momentary,shortTerm] = loudMtr(x);
    scope(x,momentary,shortTerm)
    deviceWriter(x);
end

release(deviceWriter)
release(fileReader)

Алгоритмы

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

loudnessMeter Системный объект вычисляет мгновенную громкость, краткосрочную громкость, интегрированную громкость, область значений громкости (ЛРА) и истинное пиковое значение звукового сигнала. Можно задать любое количество каналов и весов канала не по умолчанию, используемых в измерениях громкости. loudnessMeter алгоритм описан для общего случая каналов n с весами канала по умолчанию.

Ссылки

[1] Международный союз электросвязи; сектор радиосвязи. Алгоритмы, чтобы измерить аудио громкость программы и истинно-пиковый уровень звука. ITU-R BS.1770-4. 2015.

[2] Европейский вещательный союз. Нормализация громкости и разрешенный максимальный уровень звуковых сигналов. EBU R 128. 2014.

[3] Европейский вещательный союз. Измерение громкости: 'Режим EBU', измеряющий, чтобы добавить нормализацию EBU R 128 громкости. Технология EBU R 128 3341. 2014.

[4] Европейский вещательный союз. Область значений громкости: мера, чтобы добавить нормализацию EBU R 128 громкости. Технология EBU R 128 3342. 2016.

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

Смотрите также

Блоки

Функции

Введенный в R2017b