Wav файл удаление шума

Я пишу программу (c ++, vs2010, win7), которая записывает аудио в файл WAV.
Когда я пытаюсь услышать звук, в нем много белого шума.
Я попытался открыть файл другой программой, которую написал. Единственное, что делает эта программа:

Char buffer[8000*60*2] = {}
File *wav, *out
Wav = fopen ("raw", "r+")
Out = fopen("out", "a+")
fread(buffer, sizeof (char) *8000*60*2,1,wav)
fwrite(buffer, sizeof (char) *8000*60*2,1,out)
fclose (wav)
fclose (out)

После того, как я пропущу необработанные данные через эту программу, я могу слышать небольшую часть исходного файла WAV без каких-либо помех (я открываю это в Audacity как необработанные данные).
Моя проблема в том, что я ничего не меняю в данных, просто записываю их снова и, как волшебство, я могу ясно слышать.
Что мне не хватает?
Я не делаю никаких изменений данных.
Когда я записываю данные, я записываю их в виде короткой переменной.
данные короткие
fwrite (data, 1024,1, wav)

0

Решение

При записи файла WAVE многие вещи могут вызывать шум. Вот несколько вещей, которые вы должны искать:

Ограничение значений

Ванильный файл WAVE имеет 16-битное значение данных (или два значения, если оно стереофоническое), поэтому вы должны убедиться, что ВСЕ ваши значения находятся в диапазоне (32768, -32768), если вы увеличиваете значения и они превышают этот предел, тогда вместо этого вы получите случайное значение * и, следовательно, при записи файла будет слышен шум.

Запись в двоичном

Как упоминал Роджер в комментариях к исходному вопросу, важно, чтобы вы писали в двоичном виде, так как, если вы попытаетесь записать в файл со стандартным «r», вы просто получите много белого шума.

Отсутствующие заголовки

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

Надеюсь, это поможет.

0

Другие решения

Других решений пока нет …