2012-03-06 3 views
1

Значения от моего преобразования в формат .dat с использованием sox, похоже, не нормализованы - надеюсь, что кто-то может увидеть, что я делаю неправильно.Значения от преобразования в формат .dat с использованием sox, похоже, не нормализованы

Я пытаюсь сделать что-то похожее на то, что описано в this great SO post about sox and gnuplot (я отправляю значения для обработки на Java, поэтому немного другой контекст). Проблема в том, что в моем .dat-файле я получаю «только небольшие значения», в то время как на страницах man говорится, что они будут нормализованы между -1 и 1.

После установки пакетов sox и mp3-документов я делаю следующее: испытание:

sox elevator.mp3 -c 1 -r 11000 elevator_mediumres.dat 
cat elevator_mediumres.dat |cut -c21-33 > elevator_mediumres_values_only.dat 
sort -n elevator_mediumres_values_only.dat > elevator_mediumres_values_only_sorted.dat 
# echo min $(head -1 elevator_mediumres_values_only_sorted.dat) max $(tail -1 elevator_mediumres_values_only_sorted.dat) 

Это дает выход «min -0.48370361 max 9.1552734e-05». Если я сделаю первую команду wav вместо dat, файл wav будет звучать нормально (как обычно, как 11kHz моно из «Любовь в лифте» Aerosmith когда-либо). Я мог бы, конечно, нормализовать вручную данные впоследствии, но я надеюсь, что есть лучший и более простой способ.

Спасибо,

-S-

+0

Я закончил нормализацию в Java сам вручную (что прекрасно работает), но все равно интересно услышать, есть ли у кого-то что-то, что можно добавить для лучшего способа сделать это. – Sondre

ответ

1

Вы, кажется, имеет большой постоянный сдвиг в файле. В зависимости от того, что вам нужно делать с данными, вам, вероятно, необходимо удалить это до нормализации. Чтобы сделать это с помощью sox, сначала определите dc-shift. Вот один из способов с sox, awk и bash:

dc_shift=$(sox infile.wav -n stats 2>&1 | awk '/DC offset/ { print $3 }') 

Теперь примените DC-сдвиг и нормализации для входного файла:

sox infile.wav normalized.wav dcshift $((-dc_shift)) gain -n 

sox командной строки застроен, как это:

sox IN OUT EFFECTS 

Каждый эффект применяется последовательно.