2015-05-13 2 views
0

В настоящее время я работаю над проектом, в котором записываю звук с помощью звукового измерителя, а затем экспортирую полученные файлы в формате .wav.Matlab .wav normalization

После этого я импортирую файлы .wav в MATLAB с помощью функции audioread. Я понял, что данные нормализованы между -1 и 1 (опция по умолчанию). Это означает, что каждый другой файл нормализуется с использованием соответствующих экстремальных значений? Если это так, как я могу получить ненормированные данные из файла .wav, поэтому я могу сравнить спектр двух разных файлов с точки зрения амплитуды? Что мне нужно - это точно файл с амплитудой (в дБ, вольт, любой ...) как функция времени.

ответ

0

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

Синусоидальная волна 0 dBFS будет иметь максимальный пик 32767 в 16-битной подписке и 127 в 8-битной подписанной, например. При нормализации они оба будут преобразованы в +1.0 (1.0 = 0 dBFS). Без нормализации просто подумайте о том, как будут выглядеть эти сигналы во временной области. 8-битный сигнал был бы крошечным по сравнению с 16-битным. Фактически, это будет 8 бит или 48 дБ!

+0

ОК, я думаю, я понимаю. благодаря!но для того, чтобы положить конец всем сомнениям: я сравниваю две разные записи, но они записываются с одинаковым разрешением (16 бит). Я могу импортировать их в Matlab с помощью аудиорепортажа, и, несмотря на это, их амплитуды сопоставимы? – pragal

+1

Да, амплитуды сопоставимы. Оба файла масштабируются точно так же. – jaket

0

Ответ на первый вопрос: ДА, данные в настоящее время нормаливаются по функциям audioread. При использовании функции audioread вы должны указать тип выходных данных. Есть два варианта для типа данных:

  1. двойного: двойная точность нормированных образцы (по умолчанию).
  2. native: Образцы в собственном типе данных, найденные в файле.

Используемый по умолчанию вариант, который является первым, который дает вам нормализованные образцы. Как вы можете видеть, если dataType равен native, то выход может быть одним из нескольких типов данных MATLAB, как показано в следующей таблице, в зависимости от формата файла и значения входного файла BitsPerSample.

enter image description here

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

[y,Fs] = audioread(filename,'native'); 

Кроме того, вы можете позвонить audioinfo, чтобы определить значение файла BitsPerSample.

Другой вариант, который больше подходит для формата звука .wav, использует функцию wavread с указанным типом данных. Однако в будущем он будет удален с MATLAB.

+0

Thnx для ответа! Разве разница не в интервале нормализации? Я имею в виду, что если два файла нормализованы с разными опорными значениями, я не могу сравнивать их амплитуды либо с [-1 1], либо с [-32767 32768] интервалами. – pragal

+0

@pragal он не будет нормализован, если вы используете собственный вариант. – NKN

Смежные вопросы