완전 초보 입니다 도와주세요 ㅠ
도손
학교에서 하는건데,,
어떠한 음성파일을 받아서 Framing, windowing, overlap 하는 코드를 짜보았습니다
overlap 말고는 다 잘된것 같은데,,
overlap부분이 음성을 돌려보면 뒷부분이 제대로 안되어있네요,,,
뭐가 잘못됐는지 도와주시면 감사하겠습니다,,,ㅠ
소스파일과 인풋파일을 같이 올리며,,, 아직 완성된것이 아니라서 주석처리도 꽤 해놨습니다
재생은 Goldwave로 합니다,,
귀찮은 부분이 많네요 ㅠ 해결해 주시면 감사의 뜻으로,, 소정의 도토리 보내드릴께요^^
#includestdio.h
#includemath.h
#includestdlib.h
#define PI 3.1415
void main()
{
FILE *fin,*fout,*fin_1;
short a[128],b[128], *output;
int i,j=0,w=0;
float *window_1,*window_2;
int flag=1;
fin = fopen(input.raw,rb);
fout = fopen(output.raw,wb);
fin_1 = fopen(input.raw,rb);
window_1 = (float *)malloc(46720*sizeof(short));
window_2 = (float *)malloc(46784*sizeof(short));
output = (short *)malloc(46720*sizeof(short));fseek(fin_1, 128, 0);
while(fread(&a, 2, 128, fin) == 128)
{
for(i=0;i128;i++)
{
window_1[j*128+i] = a[i] * (0.54-0.46*cos(2*PI*i/128));
}
j++;
}
// for(i=0;i128;i++)
// {
// printf(%f\n,window_1[i]);
//}
while(fread(&b, 2, 128, fin_1) == 128)
{
if(flag==1)
{
for(j=0;j64;j++)
{
window_2[j] = 0;
}
}
for(i=0;i128;i++)
{
window_2[w*128+(63+i)] = b[i] * (0.54-0.46*cos(2*PI*i/128));
}
w++;
flag=0;
}/* for(i=128;i256;i++)
{
printf(%f\n,window_2[i]);
}*/for(j=0;j365;j++)
{
for(i=0;i128;i++)
{
output[j*128+i] = window_1[j*128+i] + window_2[j*128+i];
}
}
fwrite(output,2,46720,fout);
fclose(fin);
fclose(fin_1);
fclose(fout);
}