⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newpitch.c

📁 文件系统在DSP5509上的实现
💻 C
字号:

/*******************************************************************         
                           基音检测
           
   修改日期:07年4月17日
   修改内容:1--加窗  2--笛声拟制 3--fft3,ff2的50--200内平均值比最大值(掌声)         
*******************************************************************/

#include "math.h"
#include "VoiceProcess.h"
#include "Dsplib.h"
#define FuDu  10000


////////////////////////////////////////////////////////////////// 
#pragma DATA_SECTION(fft,".FFT");

/*************************   *************************************/
extern Bool int_flag;        //中断标志
extern int PitchDataIn[];
extern int PitchDataIn2[];
extern DATA Pitchr1A[]; //滤波后数据A口
extern DATA Pitchr1B[];//滤波后数据B口  
long int PowerA,PowerB;
float K_PowerAB; 
float K_PowerAB2; 
/******************** PITCH **********************************/
DATA   fft[WindowsLong];              //傅立叶变换
DATA   fft2[WindowsLong];             //傅立叶变换
DATA    fft3[WindowsLong]; 
Bool PitchFlag;                       //点灯标志
extern Uint16 jishuqi; 
int Am[WindowsLong/2]; 
long unsigned int Averagefft;       //200-20内的平均值
unsigned int Maxfft;                //200-15内的最大值
unsigned int AverageNumber;         
long unsigned int fftH,fftL;
int fftNumber;
long unsigned int fftH128,fftL18;
int fftHNumber;
 

#define FFTMIN     18
#define FFTMAX     200
#define FftLength  (FFTMAX-FFTMIN)
#define AdptiveLength  64
  
#define FFTL     18
#define FFTH     50
#define FFTA     50
int  PitchPre[(FFTH-FFTL)];
int PitchNew1,PitchNew2;
int amax,bmax;
long int sum,sum1,sum2,sum3,sum4,sum5;
int avv;

int PitchPreMax,MaxInside;
int fftTime[202];

long int SumFftL,SumFftH;
float  SumKfftl;
float SumK;
int Pig;
long int Sum50;
int Averger50,Max50; 
float SumK50; 
int BellFlagL1,BellFlagH1,BellFlagL2,BellFlagH2;//汽笛标志


float SumKa,SumKb;
int VMax,MMax;
int MaxNumber;
int Flag1To2;


int BellFlag=0;
int HAM=0;
float W[256+1];

long int pingjun1,pingjun2;
float PING1,PING2;
int   linshi=100,linmax=12,PBEI=15;
unsigned int FuDuShuA,FuDuShuB;//幅度大于某值的次数
unsigned long FFT_A,FFT_B; 
///////////////////////////////////////////////////////////////

extern void SoundOut(void);
 

void ComputerPitch(void);  
    static void PitchCep(void);       // 时域--频域  
    static void SpeechNew(void);      //基音周期检测   
    void  FftSubAverge(void);         // 减平均误差
    static void ComputerVar(void);    // 1.  计算最大值与平均值之比;                                     // 2.  200-38与38-15 和的比

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -