detect_envelope.c
上传用户:bossps2lzz
上传日期:2022-07-07
资源大小:522k
文件大小:1k
源码类别:

DSP编程

开发平台:

C/C++

  1. /* Written by Sowmya Narayanan and Vasanthan Rangan
  2.  * 
  3.  * detect_envelope.c 
  4.  * 
  5.  * This program will detect the envelope of input speech signal
  6.  * 
  7.  * 
  8.  * The input will be the speech sample 
  9.  * 
  10.  *
  11.  * 
  12.  * 
  13.  *
  14.  *
  15.  *
  16.  */
  17. #define env_coeff 4000 /* / 32768  envelope filter parameter */
  18. int envelope = 0;      /* current sample of the signal envelope (32-bit) */
  19. short detect_envelope(short sample)
  20. {
  21.   short word1,word2;
  22.   if (sample < 0)
  23.    sample = -sample; /* rectify the signal */
  24.   word1 = envelope >> 15;         /* high-order word */
  25.   word2 = envelope & 0x00007fff;  /* low-order word */
  26.   envelope = (word1 * (32768 - env_coeff)) +
  27.             ((word2 * (32768 - env_coeff)) >> 15) + 
  28.             sample * env_coeff; /* envelope = 
  29.                                       envelope*(1-coeff) + sample*coeff */
  30.   return envelope >> 15;
  31. }