'음성처리'에 해당되는 글 2건

  1. 2006/03/27 음성 신호 처리 (1)
  2. 2006/03/16 음성의 발생 Model (1)
STUDY/전공2006/03/27 14:17

음성파일 Down Sampling 구현

아...도저히 LPF 를 못만들겠다..맞게 한거 같은데 소리가 왜 다 깨지는지 ㅠㅠ

H[] 가 이상하게 나와...Sinc Function 도대체 어케 만들어 ㅠㅠ;

안습..ㅠㅠ

#include <stdio.h>
//#include <stdlib.h>
#include <math.h>
#define BUFF_SIZE 10
#define INPUT_SIZE 21
#define SAMPLING 2

void push_value(float data , float *arr) // 입력 신호를 하나씩 배열에 저장한다.
{
int i;
for ( i = 20 ; i > 0 ; i--)
{
arr[i] = arr[i-1];
}
arr[0] = data;

}

float lpf (float *in , float *h) // low pass filter 를 통과시킨다.
{
int i;
float tmp;
tmp = in[10]*h[0]; // 가운데에 있는 값이 입력 값이다.
for ( i = 1 ; i <10 ; i++) // sinc 펑션과 convolution 시킨다.
{
tmp += ( in[10+i] + in[10-i] ) * h[i];
}
return tmp;
}

int main ()
{
FILE *fi,*fo;
float input,output;
const double PI = 3.14; // PI
int f = 8000; // maximum frequency
short data;
int i=0,total=0,n=0;
float h[BUFF_SIZE] = {0,};  
float buffer[INPUT_SIZE] = {0,};


/** File OPEN **/
fi = fopen("input32.raw", "rb");
fo = fopen("output16_lpf.raw","wb");

//LPF Frequency Response init
for ( i = 0 ; i < BUFF_SIZE ; i++)

h[i] = (float)(sin(2*PI*f*i)/PI*i);  
}

// read raw sound
while( fread(&data, 2, 1, fi) )
{
input = (float)data;
// push to array
push_value(input,buffer);

if (total > 10) // 초기 10개의 샘플은 무시
{
  if (n%SAMPLING == 0) // 2배 sampling
  {
   output = lpf(buffer,h); // low pass filter
   //printf ("%d output = %f \n",n,output);
   data = (short)output;
   fwrite(&data, 2, 1, fo); // write new data
  }

  n++;
}  
total++;
}

n = 0;
while (n <10) // 10개 샘플이 더 나와야 하므로
{
if (n%SAMPLING == 0) // 2배 sampling
{
  output = lpf(buffer,h); // low pass filter
  //printf ("%d output = %f \n",n,output);
  data = (short)output;  
  fwrite(&data, 2, 1, fo); // write new data
}
n++;
}
fcloseall();
return 0;

}



'STUDY > 전공' 카테고리의 다른 글

주파수를 이용해서 음을 발생 시키는법.  (2) 2006/04/07
LPF 에 대한 정보  (0) 2006/03/29
음성 신호 처리  (1) 2006/03/27
음성의 발생 Model  (1) 2006/03/16
Technical Reports Form  (1) 2006/03/04
2006학년 수강신청 계획!  (1) 2006/02/14
Posted by 영고니짱
STUDY/전공2006/03/16 21:46
음성 신호
- 사람의 자의적으로 발생시킬수 있는 유일한 신호이다.


음성 신호의 발생 부위
- 폐 : 신호의 Gain 을 담당 , 음성파형의 Energy 결정
- 성대 : 고음/저음 담당, 음성 파형의 주기 결정
- Vocal Tract ( 성도 ) : 발음을 담당 , 음성파형의 모양결정

발성 방법에 따른 음성 분류
유성음 - 성대 동작 , 모음
마찰음 - 성대 동작 , 성도 마찰 , f , s
파열음 - 성도 close/open , p , b , d , g , k

목이 쉬었다
- 성대에서 발생되는 파형의 주기가 일정하지 않다. ( Jitter )
- 성대에서 발생되는 파형의 높이가 일정하지 않다. ( Shimmer )

'STUDY > 전공' 카테고리의 다른 글

주파수를 이용해서 음을 발생 시키는법.  (2) 2006/04/07
LPF 에 대한 정보  (0) 2006/03/29
음성 신호 처리  (1) 2006/03/27
음성의 발생 Model  (1) 2006/03/16
Technical Reports Form  (1) 2006/03/04
2006학년 수강신청 계획!  (1) 2006/02/14
Posted by 영고니짱