Воспринимаемая громкость акустического сигнала
задает ненужный коэффициент калибровки микрофона, используемый для вычисления громкости.loudness = acousticLoudness(audioIn,fs,calibrationFactor)
задает опции с использованием одного или нескольких loudness = acousticLoudness(___,Name,Value)Name,Value аргументы в виде пар.
loudness = acousticLoudness(audioIn,fs,'Method','ISO 532-2') возвращает громкость согласно ISO 532-2 (Мур-Глазберг).[ также возвращает определенную громкость.loudness,specificLoudness] = acousticLoudness(___)
[ также возвращает процентильную громкость.loudness,specificLoudness,perc] = acousticLoudness(___,'TimeVarying',true)
[ задает ненужные процентили для возврата.loudness,specificLoudness,perc] = acousticLoudness(___,'TimeVarying',true,'Percentiles',p)
acousticLoudness(___) без выходных аргументов строит графики определенной громкости и отображает громкость текстово. Если TimeVarying является true, строятся как громкость, так и специфическая громкость, с последними в 3-D.
Измерьте 532-1 ISO стационарную громкость свободного поля. Предположим, что уровень записи калиброван так, что тональный сигнал 1 кГц регистрируется как 100 дБ на SPL-метре.
[audioIn,fs] = audioread('WashingMachine-16-44p1-stereo-10secs.wav');
loudness = acousticLoudness(audioIn,fs)loudness = 1×2
28.2688 27.7643
Создайте два стационарных сигнала с эквивалентной степенью: розовый сигнал шума и белый сигнал шума.
fs = 48e3; dur = 5; pnoise = 2*pinknoise(dur*fs); wnoise = rand(dur*fs,1) - 0.5; wnoise = wnoise*sqrt(var(pnoise)/var(wnoise));
Функции acousticLoudness использование метода ISO 532-1 (Zwicker) по умолчанию и отсутствие выходных аргументов для построения графика громкости розового шума. Функции acousticLoudness снова, на этот раз с выходными аргументами, чтобы получить определенную громкость.
figure acousticLoudness(pnoise,fs)

[~,pSpecificLoudness] = acousticLoudness(pnoise,fs);
Постройте график громкости для сигнала белого шума и затем получите определенные значения громкости.
figure acousticLoudness(wnoise,fs)

[~,wSpecificLoudness] = acousticLoudness(wnoise,fs);
Вызовите acousticSharpness функция для сравнения резкости розового шума и белого шума.
pSharpness = acousticSharpness(pSpecificLoudness);
wSharpness = acousticSharpness(wSpecificLoudness);
fprintf('Sharpness of pink noise = %0.2f acum\n',pSharpness)Sharpness of pink noise = 2.00 acum
fprintf('Sharpness of white noise = %0.2f acum\n',wSharpness)Sharpness of white noise = 2.62 acum
Чтение в аудио файла.
[audioIn,fs] = audioread('JetAirplane-16-11p025-mono-16secs.wav');Постройте график изменяющейся во времени акустической громкости в соответствии с ISO 532-1 и получите процентили. Слушайте аудиосигнал.
acousticLoudness(audioIn,fs,'SoundField','diffuse','TimeVarying',true)

sound(audioIn,fs)
Функции acousticLoudness снова с теми же входами и получить процентили. Напечатайте Nmax и N5 процентиля. Процентиль Nmax - это максимальная сообщаемая громкость. N5 процентиль - это громкость ниже, которая составляет 95% от сообщаемой громкости.
[~,~,perc] = acousticLoudness(audioIn,fs,'SoundField','diffuse','TimeVarying',true); fprintf('Max loudness = %0.2f sones\n',perc(1))
Max loudness = 89.48 sones
fprintf('N5 loudness = %0.2f sones\n',perc(2))N5 loudness = 81.77 sones
Чтение в аудио файла.
[audioIn,fs] = audioread('Turbine-16-44p1-mono-22secs.wav');Функции acousticLoudness без выходных аргументов для построения графика определенной громкости. Примите коэффициент калибровки 0,15 и давление ссылки 21 микропаскали. Чтобы определить коэффициент калибровки, характерный для вашей аудиосистемы, используйте calibrateMicrophone функция.
calibrationFactor = 0.15;
refPressure = 21e-6;
acousticLoudness(audioIn,fs,calibrationFactor,'PressureReference',refPressure)
acousticLoudness позволяет вам задать промежуточное представление, уровни звукового давления, вместо входов во временной области. Это позволяет повторно использовать промежуточные расчеты SPL. Другое преимущество состоит в том, что если ваш физический SPL-счетчик не сообщает о громкости в соответствии с ISO 532-1 или ISO 531-2, можно использовать сообщенные 1/3-октавные SPL для вычисления совместимой со стандартом громкости.
Чтобы вычислить уровни звукового давления из аудиосигнала, сначала создайте splMeter объект. Вызовите splMeter объект со звуковым входом.
spl = splMeter("SampleRate",fs,"Bandwidth","1/3 octave", ... "CalibrationFactor",calibrationFactor,"PressureReference",refPressure, ... "FrequencyWeighting","Z-weighting","OctaveFilterOrder",6); splMeasurement = spl(audioIn);
Вычислите средний уровень SPL, пропустив первые 0,2 секунды. Только держите полосы от 25 Гц до 12,5 кГц (первые 28 полос).
SPLIn = mean(splMeasurement(ceil(0.2*fs):end,1:28));
Используя вход SPL, вызовите acousticLoudness без выходных аргументов для построения графика определенной громкости.
acousticLoudness(SPLIn)

Настройте эксперимент, как указано схемой.

Создайте audioDeviceReader объект для чтения с микрофона и audioDeviceWriter объект для записи в динамик.
fs = 48e3; deviceReader = audioDeviceReader(fs); deviceWriter = audioDeviceWriter(fs);
Создайте audioOscillator объект для генерации синусоиды 1 кГц.
osc = audioOscillator("sine",1e3,"SampleRate",fs);
Создайте dsp.AsyncBuffer объект для буферизации данных, полученных из микрофона.
dur = 5; buff = dsp.AsyncBuffer(dur*fs);
В течение пяти секунд проигрывайте синусоиду через динамик и записывайте с помощью микрофона. Пока аудиопотоки, обратите внимание на громкость, о которой сообщил ваш SPL-счетчик. После завершения считайте содержимое объекта буфера.
numFrames = dur*(fs/osc.SamplesPerFrame); for ii = 1:numFrames audioOut = osc(); deviceWriter(audioOut); audioIn = deviceReader(); write(buff,audioIn); end SPLreading = 60.4; micRecording = read(buff);
Чтобы вычислить коэффициент калибровки для микрофона, используйте calibrateMicrophone функция.
calibrationFactor = calibrateMicrophone(micRecording,deviceReader.SampleRate,SPLreading);
Функции acousticLoudness с записью микрофона, частотой дискретизации и коэффициентом калибровки. Громкость, о которой сообщают acousticLoudness - истинное измерение акустической громкости, заданное в 532-1.
loudness = acousticLoudness(micRecording,deviceReader.SampleRate,calibrationFactor)
loudness = 14.7902
Теперь можно использовать коэффициент калибровки, который вы определили, чтобы измерить громкость любого звука, который получен через ту же цепь записи микрофона.
Считывайте аудиосигнал.
[audioIn,fs] = audioread('TrainWhistle-16-44p1-mono-9secs.wav');ISO 532-1
Определите изменяющуюся во времени конкретную громкость согласно методу по умолчанию (ISO 532-1).
[~,specificLoudness] = acousticLoudness(audioIn,fs,'TimeVarying',true);ISO 532-1 сообщает об особой громкости над Коркой, где находятся интервалы для коры 0.1:0.1:24. Преобразуйте интервалы коры в Гц, а затем постройте график определенной громкости по Гц в зависимости от времени.
barkBins = 0.1:0.1:24; hzBins = bark2hz(barkBins); t = 0:2e-3:2e-3*(size(specificLoudness,1)-1); surf(t,hzBins,sum(specificLoudness,3).','EdgeColor','interp') set(gca,'YScale','log') view([0 90]) axis tight xlabel('Time (s)') ylabel('Frequency (Hz)') colorbar title('Specific Loudness (sones/Bark)')

ISO 532-2
Определите стационарную удельную громкость по методу Мура-Глазберга (ISO 532-2).
[~,specificLoudness] = acousticLoudness(audioIn,fs,'Method','ISO 532-2');
ISO 532-2 сообщает об особой громкости по шкале ERB, где 1.8:0.1:38.9 интервалы ERB. Модуль измерения шкалы ERB иногда упоминается как Cam. Преобразуйте интервалы ERB в Гц, а затем постройте график определенной громкости.
erbBins = 1.8:0.1:38.9; hzBins = erb2hz(erbBins); semilogx(hzBins,specificLoudness) xlabel('Frequency (Hz)') ylabel('Loudness (sones)') title('Specific Loudness') grid on

Чтение в аудио файла.
[x,fs] = audioread('WashingMachine-16-44p1-stereo-10secs.wav');ISO 532-2 позволяет вам задать пользовательский ответ наушника при вычислении громкости. Создайте матрицу 30 на 2, где первый столбец является частотой, а второй - отклонением наушника от плавного ответа.
tdh = [ 0, 80, 100, 200, 500, 574, 660, 758, 871, 1000, 1149, 1320, 1516, 1741, 2000, ... 2297, 2639, 3031, 3482, 4000, 4500, 5000, 5743, 6598, 7579, 8706, 10000, 12000, 16000, 20000; ... -50, -15.3, -13.8, -8.1, -0.5, 0.4, 0.8, 0.9, 0.5, 0.1, -0.8, -1.5, -2.3, -3.2, -3.9, ... -4.2, -4.3, -4.3, -3.9, -3.2, -2.3, -1.1, -0.3, -2, -5.4, -9, -12.1, -15.2, -30, -50 ].';
Вычислите громкость по ISO 532-2. Задайте SoundField как earphones и ответ наушника как матрица, которую вы только что создали.
acousticLoudness(x,fs,'Method','ISO 532-2','SoundField','earphones','EarphoneResponse',tdh)

Создайте dsp.AudioFileReader объект для чтения в кадр за кадром аудиосигнала. Задайте продолжительность системы координат 50 мс. Это будет системой координат продолжительность, в течение которой вы вычисляете стационарную громкость.
fileReader = dsp.AudioFileReader('Engine-16-44p1-stereo-20sec.wav');
frameDur = 0.05;
fileReader.SamplesPerFrame = round(fileReader.SampleRate*frameDur);Создайте audioDeviceWriter объект для записи аудио на устройство выхода по умолчанию.
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);Создайте timescope объект для отображения стационарной громкости с течением времени.
scope = timescope( ... 'SampleRate',1/frameDur, ... 'YLabel','Loudness (sones)', ... 'ShowGrid',true, ... 'PlotType','Stairs', ... 'TimeSpanSource','property', ... 'TimeSpan',20, ... 'AxesScaling','Auto', ... 'ShowLegend',true);
В цикле:
Считайте систему координат из аудио файла.
Вычислите стационарную громкость этой системы координат.
Воспроизведите звук через устройство выхода.
Напишите громкость в возможности.
while ~isDone(fileReader) audioIn = fileReader(); loudness = acousticLoudness(audioIn,fileReader.SampleRate); deviceWriter(audioIn); scope(loudness) end release(fileReader) release(deviceWriter) release(scope)

audioIn - Аудио входАудио вход, заданный как вектор-столбец (моно) или матрица с двумя столбцами (стерео).
Типы данных: single | double
fs - Частота дискретизации (Гц)Частота дискретизации в Гц, заданная как положительная скалярная величина. Рекомендуемая частота дискретизации для новых записей составляет 48 кГц.
Примечание
Минимальная допустимая частота дискретизации составляет 8 кГц.
Типы данных: single | double
calibrationFactor - Коэффициент калибровки микрофонаsqrt(8) | положительная скалярная величинаКоэффициент калибровки микрофона, заданный как положительная скалярная величина. Коэффициент калибровки по умолчанию соответствует полномасштабной синусоиде на 1 кГц с уровнем звукового давления 100 дБ (SPL). Чтобы вычислить коэффициент калибровки, характерный для вашей системы, используйте calibrateMicrophone функция.
Типы данных: single | double
SPLIn - Уровень звукового давления (дБ)Уровень звукового давления (SPL) в дБ, заданный как массив 1 на 28 байт- C или массив 1 на 29 байт- C, в зависимости от Method:
Если Method установлено в 'ISO 532-1', задайте SPLIn как массив 1 на 28-бай- C, где 28 соответствует одной третьей октавной полосам между 25 Гц и 12,5 кГц, и C количество каналов.
Если Method установлено в 'ISO 532-2', задайте SPLIn как массив 1 на 29-бай- C, где 29 соответствует одной третьей октавным полосам между 25 Гц и 16 кГц, и C количество каналов.
Для обоих методов вход SPL должен быть измерен с плоским взвешиванием частоты (Z-взвешивание).
Типы данных: single | double
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
acousticLoudness(audioIn,fs,'Method','ISO 532-2')'Method' - Метод расчета громкости'ISO 532-1' (по умолчанию) | 'ISO 532-2'Метод вычисления громкости, заданный как 'ISO 532-1'
[1] или 'ISO 532-2'
[2].
Примечание
Только в способе ISO 532-1 выходные данные выдаются для каждого канала независимо, а стационарные сигналы обрабатываются после отбрасывания до первых 0,2 секунд сигнала на выходе внутренних 1/3-октавных фильтров.
Типы данных: char | string
'TimeVarying' - Вход изменяется во времениfalse (по умолчанию) | trueВход изменяется во времени, задается как true или false.
Как задать TimeVarying на true, вы должны задать Method на 'ISO 532-1'.
Типы данных: logical
'SoundField' - Звуковое поле аудиозаписи'free' (по умолчанию) | 'diffuse' | 'eardrum' | 'earphones'Звуковое поле аудиозаписи, заданное как вектор символов или скаляр строка. Возможные значения для SoundField зависят от Method:
'ISO 532-1' – 'free', 'diffuse'
'ISO 532-2' – 'free', 'diffuse', 'eardrum', 'earphones'
Типы данных: char | string
'EarphoneResponse' - Реакция наушников[0,0] (по умолчанию) | M -by-2 матрицаХарактеристика Earphone, заданная как матрица M-на-2 M содержащая пары частотно-амплитуды, которые описывают отклонения earphone от плавного ответа. Форма указана в файле коррекции наушников ISO 11904-1: 2002. Задайте частоту в порядке увеличения в Гц. Задайте амплитудное отклонение в децибелах. Промежуточные значения вычисляются линейной интерполяцией. Значения вне заданной области значений устанавливают в пару ближайшая частота-амплитуда. Значение по умолчанию соответствует плавному ответу.
Чтобы задать EarphoneResponse, вы должны задать SoundField на 'earphones'.
Типы данных: single | double
'PressureReference' - Начальное давление (Па)20e-6 (по умолчанию) | положительная скалярная величинаСсылка давление для расчета дБ в паскалях, заданное как положительная скалярная величина. Значение по умолчанию, 20 микропаскалей, является общим значением для воздуха.
PressureReference используется только для входных сигналов во временной области.
Типы данных: single | double
'Percentiles' - Процентилы, при которых вычисляется процентильная громкость[0,5] (по умолчанию) | вектор со значениями в области значений [0, 100]Процентилы, при которых вычисляется процентильная громкость, заданная как вектор со значениями в области значений [0, 100]. Значения по умолчанию, 0 и 5, соответствуют N max и N 5 процентилам, соответственно [1].
Процентильная громкость относится к громкости, которая достигается или превышается в X% измеренных временных интервалов, где X является заданным процентилем.
Типы данных: single | double
'TimeResolution' - Разрешение по времени выхода'standard' (по умолчанию) | 'high'Разрешение по времени выхода, заданное как вектор символов или скалярная строка. Временной интервал 2 мс в 'standard' разрешение, или 0,5 мс в 'high' разрешение. Значение по умолчанию является 'standard' (ISO 532-1 соответствует).
Типы данных: char | string
loudness - Громкость (соны)Громкость в сонах, возвращенная как K-на-1 вектор-столбец или K-на-2 матрица независимых каналов. Если TimeVarying установлено в false, K равно 1. Если TimeVarying установлено в true, затем громкость вычисляется каждые 2 мс. Если Method установлено в 'ISO 532-2', затем loudness вычисляется с помощью бинауральной модели и всегда возвращается как вектор- K-на-1 столбец.
specificLoudness - Специфическая громкостьУдельная громкость, возвращенная как K -by-240-by- C массив или K -by-372-by- C массив. Первая размерность определенной громкости, K, соответствует первой размерности loudness. Третья размерность удельной громкости, C, соответствует второму измерению loudness. Второе измерение специфической громкости зависит от Method используется для вычисления громкости:
Если Method установлено в 'ISO 532-1', затем регистрируется удельная громкость в зонах/коре по шкале от 0,1 до 24 включительно с шагом 0,1.
Если Method установлено в 'ISO 532-2', затем специфическая громкость сообщается в sones/Cam по шкале от 1,8 до 38,9 включительно с шагом 0,1.
perc - Процентильная громкость (соны)Процентильная громкость в сонах, возвращаемая как p-на-1 вектор или p-на-2 матрица. Количество строк, p, равно количеству Percentiles.
Процентильная громкость относится к громкости, которая достигается или превышается в X% измеренных временных интервалов, где X является заданным процентилем.
Выходной аргумент percentils действителен только в том случае, если TimeVarying установлено в true. Если TimeVarying установлено в false, а perc выход пуст.
Громкость и уровень громкости - это восприимчивые атрибуты звука. Из-за различий среди людей измерения громкости и уровня громкости следует считать статистическими оценщиками. Серия ISO 532 определяет процедуры оценки уровня громкости и громкости, которые воспринимаются лицами с онтологически нормальным слухом при определенных условиях прослушивания.
ISO 532-1 и ISO 532-2 определяют два различных метода вычисления громкости, но оставляют пользователю выбрать соответствующий метод для заданной ситуации.
ISO 532-1: 2017 (E) описывает методы вычисления акустической громкости стационарных и изменяющихся во времени сигналов.
Этот метод основан на DIN 45631:1991. Алгоритм отличается от ISO 532:1975, метод B, указанием коррекций для низких частот.

Схема и шаги обеспечивают высокоуровневый обзор последовательности метода. Для получения дополнительной информации см. раздел [1].
Уровень сигнала временной области регулируется согласно CalibrationFactor. Следующие шаги алгоритма принимают истинно известный уровень сигнала.
Сигнал преобразуется в представление SPL 1/3 октавы с помощью дробной фильтрации полосы октавы. Блок фильтров состоит из 28 фильтров частотой от 25 Гц до 12,5 кГц. Выход этой ступени находится в дБ и нормирован эталонным давлением.
Низкочастотные полосы 1/3 октавы отменяются в соответствии с фиксированной таблицей взвешивания. Некоторые низкочастотные полосы объединены, чтобы сформировать в общей сложности 20 критических диапазонов.
Уровни критических полос корректируются на пропускную способность фильтра и критический уровень полосы на пороге спокойствия, а затем преобразуются в громкость ядра.
Громкость ядра сопоставлена с интервалы.
Расширение частоты вычисляется с помощью таблицы уровневых и частотно-зависимых склонов.
Громкость вычисляется как интеграл специфической громкости с учетом частотно-расширяющихся склонов.
Этот метод основан на 45631/A1:2010 DIN и предназначен для правильного моделирования длительно-зависимого поведения восприятия громкости для коротких импульсов. Метод изменения во времени звуков является обобщением подхода Цвиккера к стационарным сигналам. Если обобщённая версия применяется к стационарным звукам, то она приводит те же значения громкости, что и необобщённая форма для стационарных сигналов.

Схема и шаги обеспечивают высокоуровневый обзор последовательности метода. Для получения дополнительной информации см. раздел [1].
Уровень сигнала временной области регулируется согласно CalibrationFactor. Следующие шаги алгоритма принимают истинно известный уровень сигнала.
Сигнал преобразуется в представление SPL 1/3 октавы с помощью дробной фильтрации полосы октавы. Блок фильтров состоит из 28 фильтров частотой от 25 Гц до 12,5 кГц. Выход этой ступени находится в дБ и нормирован эталонным давлением.
Полосы SPL сглаживаются во времени согласно полосзависимым фильтрам.
Низкочастотные полосы 1/3 октавы отменяются в соответствии с фиксированной таблицей взвешивания. Некоторые низкочастотные полосы объединены, чтобы сформировать в общей сложности 20 критических диапазонов.
Уровни критических полос корректируются на пропускную способность фильтра и критический уровень полосы на пороге спокойствия, а затем преобразуются в громкость ядра.
Нелинейный временной распад моделируется с помощью сети диод-конденсатор-резистор. Это моделирует крутое падение восприятия после коротких сигналов по сравнению с длинными сигналами.
Громкость ядра сопоставлена с интервалы.
Расширение частоты вычисляется с помощью таблицы уровневых и частотно-зависимых склонов.
Временное взвешивание применяется для моделирования длительности-зависимости восприятия громкости.
Громкость вычисляется как интеграл специфической громкости с учетом частотно-расширяющихся склонов.
ISO 532-2: 2017 (E) описывает бинауральную модель для вычисления акустической громкости стационарных сигналов. Метод в ISO 523-2 отличается от таковых в ISO 532:1975: он улучшает вычисленную громкость в низкой частотной области значений и бинауральная модель допускает разные звуки для каждого уха. ISO 532-2 обеспечивает хорошее соответствие одинаковым контурам уровня громкости, определенным в ISO 226:2003, и порогу слуха, определенному в ISO 389-7: 2005.

Схема и шаги обеспечивают высокоуровневый обзор последовательности метода. Для получения дополнительной информации см. раздел [2].
Уровень сигнала временной области регулируется согласно CalibrationFactor. Следующие шаги алгоритма принимают истинно известный уровень сигнала.
Сигнал преобразуется в спектральное представление. Спектральное представление преобразовано согласно фиксированным фильтрам, представляющим передачу звука через tympanic мембрану (барабанная перепонка). Спектр масштабируется в соответствии с ссылкой давлением.
Сигнал преобразуется с помощью модели внутреннего уха. Снова, передаточная функция задается фиксированным фильтром, заданным в стандарте. Выбор фильтра зависит от заданного звукового поля.
Сигнал преобразуется из звукового спектра в шаблон возбуждения на базилярной мембране. Преобразование осуществляется с использованием ряда округло-экспоненциальных фильтров, распространенных по шкале ERB.
Шаблон возбуждения преобразуется в определенную громкость.
Специфическая громкость передается через модель бинарного торможения, где сигнал на одном ухе тормозит громкость, вызываемую сигналом на другом ухе. Выходом от этого этапа является специфическая громкость в sones/ERB.
Специфическая громкость интегрирована по шкале ERB, чтобы придать громкость в сонах.
[1] ISO 532-1: 2017 (E). «Акустика - Методы вычисления громкости - Часть 1: Метод Цвиккера». Международная организация по стандартизации.
[2] ISO 532-2: 2017 (E). "Акустика - Методы вычисления громкости - Часть 2: Метод Мура-Глазберга. Международная организация по стандартизации.
acousticFluctuation | acousticRoughness | acousticSharpness | calibrateMicrophone | phon2sone | sone2phon | splMeter
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.