2013-03-24 3 views
0

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 파일의 작은 부분을들을 수있는이 프로그램을 통해 원시 데이터를 전달하면 (내가 원시 데이터로 대담이를 엽니 다). 내 문제는 데이터를 다시 쓰는 것만으로 데이터를 변경하지 않고 명확하게들을 수있는 마법처럼 말입니다. 내가 무엇이 누락 되었습니까? 본인은 데이터를 변경하지 않습니다. 데이터를 쓸 때 짧은 var로 씁니다. 데이터가 짧습니다. fwrite (data, 1024,1, wav)

+0

출력 파일을 다시 쓰지 않고 추가하고 있다는 것을 알고 계십니까? –

+0

예, 어쨌든 새로운 파일입니다. 나는 그것을 w +로 바꿀 수 있지만 같은 결과를 준다. – David

+0

Explorer를 사용하여 파일을 복사한다면 동일한 효과를 얻는가? –

답변

0

WAVE 파일을 작성할 때 많은 것들이 잡음을 유발할 수 있습니다. 여기에 당신이 보일 것입니다 몇 가지 있습니다 : (가 스테레오 경우 또는 두 값) 바닐라 WAVE 파일은 16 비트 데이터 값이 값

을 상한

은 그래서 당신은 확인해야합니다 값을 확대 할 경우 모든 값이 (32768, -32768) 범위에 있고 그 값이 그 한계를 초과하면 임의의 * 값을 얻게되므로 파일을 쓸 때 노이즈가 발생합니다. 에서

쓰기 당신이 표준 "R"의 파일에 쓰기를 시도 할 경우 이후 바이너리로 작성하는 것이 것이 중요 원래의 질문의 의견 로저 언급 한 바와 같이

진 당신은 것입니다 많은 백색 잡음을 얻는다. 당신이 헤더를 잊어 버린 경우

누락 된 헤더

때때로 당신은 또한 출력 WAVE 파일에서 잡음이 발생할 수 있습니다.

바라기를 바랍니다.