📄 newpitch.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 + -