亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? melp_syn.c

?? melp譜的計(jì)算。本程序是語(yǔ)音編碼melp的C程序?qū)崿F(xiàn)
?? C
字號(hào):
/*2.4 kbps MELP Proposed Federal Standard speech coderversion 1.2Copyright (c) 1996, Texas Instruments, Inc.  Texas Instruments has intellectual property rights on the MELPalgorithm.  The Texas Instruments contact for licensing issues forcommercial and non-government use is William Gordon, Director,Government Contracts, Texas Instruments Incorporated, SemiconductorGroup (phone 972 480 7442).*//*    Name: melp_syn.c    Description: MELP synthesis      This program takes the new parameters for a speech      frame and synthesizes the output speech.  It keeps      an internal record of the previous frame parameters      to use for interpolation.			    Inputs:      *par - MELP parameter structure    Outputs:       speech[] - output speech signal    Returns: void*//* compiler include files */ #include <stdio.h>#include <math.h>#include "melp.h"#include "spbstd.h"#include "lpc.h"#include "mat.h"#include "vq.h"#include "fs.h"/* compiler constants */ #if (MIX_ORD > DISP_ORD)#define BEGIN MIX_ORD#else#define BEGIN DISP_ORD#endif#define TILT_ORD 1#define SYN_GAIN 1000.0#define	SCALEOVER	10#define PDEL SCALEOVER/* external memory references */ extern float bp_cof[NUM_BANDS][MIX_ORD+1];extern float disp_cof[DISP_ORD+1];extern float msvq_cb[];extern float fsvq_cb[];extern int fsvq_weighted;/* temporary memory */static float sigbuf[BEGIN+PITCHMAX];static float sig2[BEGIN+PITCHMAX];static float fs_real[PITCHMAX];/* permanent memory */ static int firstcall = 1; /* Just used for noise gain init */static int prev_gain_err;static float sigsave[PITCHMAX];static struct melp_param prev_par;static int syn_begin;static float prev_scale;static float noise_gain = MIN_NOISE;static float pulse_del[MIX_ORD],noise_del[MIX_ORD];static float lpc_del[LPC_ORD],ase_del[LPC_ORD],tilt_del[TILT_ORD];static float disp_del[DISP_ORD];static struct msvq_param vq_par;  /* MSVQ parameters */static struct msvq_param fs_vq_par;  /* Fourier series VQ parameters */static float w_fs_inv[NUM_HARM];/* these can be saved or recomputed */static float prev_pcof[MIX_ORD+1],prev_ncof[MIX_ORD+1];static float prev_tilt;static float prev_gain;void melp_syn(struct melp_param *par,float sp_out[]){    int i, gaincnt;    int erase;    int length;    float intfact, ifact, ifact_gain;    float gain,pulse_gain,pitch,jitter;    float curr_tilt,tilt_cof[TILT_ORD+1];    float temp,sig_prob;    float lsf[LPC_ORD+1];    float lpc[LPC_ORD+1];    float ase_num[LPC_ORD+1],ase_den[LPC_ORD+1];    float curr_pcof[MIX_ORD+1],curr_ncof[MIX_ORD+1];    float pulse_cof[MIX_ORD+1],noise_cof[MIX_ORD+1];        /* Copy previous period of processed speech to output array */    if (syn_begin > 0) {	if (syn_begin > FRAME) {	    v_equ(&sp_out[0],&sigsave[0],FRAME);	    /* past end: save remainder in sigsave[0] */	    v_equ(&sigsave[0],&sigsave[FRAME],syn_begin-FRAME);	}	else 	  v_equ(&sp_out[0],&sigsave[0],syn_begin);    }        erase = 0; /* no erasures yet */        /* Update MSVQ information */    par->msvq_stages = vq_par.num_stages;    par->msvq_bits = vq_par.num_bits;    par->msvq_levels = vq_par.num_levels;    par->msvq_index = vq_par.indices;    par->fsvq_index = fs_vq_par.indices;        /*	Read and decode channel input buffer	*/    erase = melp_chn_read(par,&prev_par);    if (par->uv_flag != 1 && !erase) { 	/* Un-weight Fourier magnitudes */	window(&par->fs_mag[0],w_fs_inv,&par->fs_mag[0],NUM_HARM);    }    /* Update adaptive noise level estimate based on last gain	*/    if (firstcall) {	firstcall = 0;	noise_gain = par->gain[NUM_GAINFR-1];    }        else if (!erase) {	for (i = 0; i < NUM_GAINFR; i++) {	    noise_est(par->gain[i],&noise_gain,UPCONST,DOWNCONST,		      MIN_NOISE,MAX_NOISE);	    /* Adjust gain based on noise level (noise suppression) */	    noise_sup(&par->gain[i],noise_gain,MAX_NS_SUP,MAX_NS_ATT,NFACT);	}	        }        /* Clamp LSP bandwidths to avoid sharp LPC filters */    lpc_clamp(par->lsf,BWMIN,LPC_ORD);        /* Calculate spectral tilt for current frame for spectral enhancement */    tilt_cof[0] = 1.0;    lpc_lsp2pred(par->lsf,lpc,LPC_ORD);    lpc_pred2refl(lpc,sig2,LPC_ORD);    if (sig2[1] < 0.0)      curr_tilt = 0.5*sig2[1];    else      curr_tilt = 0.0;        /* Disable pitch interpolation for high-pitched onsets */    if (par->pitch < 0.5*prev_par.pitch && 	par->gain[0] > 6.0 + prev_par.gain[NUM_GAINFR-1]) {		/* copy current pitch into previous */	prev_par.pitch = par->pitch;    }        /* Set pulse and noise coefficients based on voicing strengths */    v_zap(curr_pcof,MIX_ORD+1);    v_zap(curr_ncof,MIX_ORD+1);    for (i = 0; i < NUM_BANDS; i++) {	if (par->bpvc[i] > 0.5)	    v_add(curr_pcof,&bp_cof[i][0],MIX_ORD+1);	else	    v_add(curr_ncof,&bp_cof[i][0],MIX_ORD+1);    }	    /* Process each pitch period */        while (syn_begin < FRAME) {	/* interpolate previous and current parameters */	ifact = ((float) syn_begin ) / FRAME;				if (syn_begin >= GAINFR) {	    gaincnt = 2;	    ifact_gain = ((float) syn_begin-GAINFR) / GAINFR;	}	else {	    gaincnt = 1;	    ifact_gain = ((float) syn_begin) / GAINFR;	}		/* interpolate gain */	if (gaincnt > 1) {	    gain = ifact_gain*par->gain[gaincnt-1] + 		(1.0-ifact_gain)*par->gain[gaincnt-2];	}	else {	    gain = ifact_gain*par->gain[gaincnt-1] + 		(1.0-ifact_gain)*prev_par.gain[NUM_GAINFR-1];	}		/* Set overall interpolation path based on gain change */		temp = par->gain[NUM_GAINFR-1] - prev_par.gain[NUM_GAINFR-1];	if (fabs(temp) > 6) {	    /* Power surge: use gain adjusted interpolation */	    intfact = (gain - prev_par.gain[NUM_GAINFR-1]) / temp;	    if (intfact > 1.0)		intfact = 1.0;	    if (intfact < 0.0)		intfact = 0.0;	}	else	    /* Otherwise, linear interpolation */	    intfact = ((float) syn_begin) / FRAME;		/* interpolate LSF's and convert to LPC filter */	interp_array(prev_par.lsf,par->lsf,lsf,intfact,LPC_ORD+1);	lpc_lsp2pred(lsf,lpc,LPC_ORD);		/* Check signal probability for adaptive spectral enhancement filter */	sig_prob = lin_int_bnd(gain,noise_gain+12.0,noise_gain+30.0,			       0.0,1.0);	/* Calculate adaptive spectral enhancement filter coefficients */	ase_num[0] = 1.0;	lpc_bw_expand(lpc,ase_num,sig_prob*ASE_NUM_BW,LPC_ORD);	lpc_bw_expand(lpc,ase_den,sig_prob*ASE_DEN_BW,LPC_ORD);	tilt_cof[1] = sig_prob*(intfact*curr_tilt + 				(1.0-intfact)*prev_tilt);		/* interpolate pitch and pulse gain */	pitch = intfact*par->pitch + (1.0-intfact)*prev_par.pitch;	pulse_gain = SYN_GAIN*sqrt(pitch);		/* interpolate pulse and noise coefficients */	temp = sqrt(ifact);	interp_array(prev_pcof,curr_pcof,pulse_cof,temp,MIX_ORD+1);	interp_array(prev_ncof,curr_ncof,noise_cof,temp,MIX_ORD+1);		/* interpolate jitter */	jitter = ifact*par->jitter + 	    (1.0-ifact)*prev_par.jitter;		/* convert gain to linear */	gain = pow(10.0,0.05*gain);		/* Set period length based on pitch and jitter */	rand_num(&temp,1.0,1);	length = pitch * (1.0-jitter*temp) + 0.5;	if (length < PITCHMIN)	    length = PITCHMIN;	if (length > PITCHMAX)	    length = PITCHMAX;		/* Use inverse DFT for pulse excitation */	fill(fs_real,1.0,length);	fs_real[0] = 0.0;	interp_array(prev_par.fs_mag,par->fs_mag,&fs_real[1],intfact,		     NUM_HARM);	idft_real(fs_real,&sigbuf[BEGIN],length);		/* Delay overall signal by PDEL samples (circular shift) */	/* use fs_real as a scratch buffer */	v_equ(fs_real,&sigbuf[BEGIN],length);	v_equ(&sigbuf[BEGIN+PDEL],fs_real,length-PDEL);	v_equ(&sigbuf[BEGIN],&fs_real[length-PDEL],PDEL);		/* Scale by pulse gain */	v_scale(&sigbuf[BEGIN],pulse_gain,length);			/* Filter and scale pulse excitation */	v_equ(&sigbuf[BEGIN-MIX_ORD],pulse_del,MIX_ORD);	v_equ(pulse_del,&sigbuf[length+BEGIN-MIX_ORD],MIX_ORD);	zerflt(&sigbuf[BEGIN],pulse_cof,&sigbuf[BEGIN],MIX_ORD,length);		/* Get scaled noise excitation */	rand_num(&sig2[BEGIN],(1.732*SYN_GAIN),length);		/* Filter noise excitation */	v_equ(&sig2[BEGIN-MIX_ORD],noise_del,MIX_ORD);	v_equ(noise_del,&sig2[length+BEGIN-MIX_ORD],MIX_ORD);	zerflt(&sig2[BEGIN],noise_cof,&sig2[BEGIN],MIX_ORD,length);		/* Add two excitation signals (mixed excitation) */	v_add(&sigbuf[BEGIN],&sig2[BEGIN],length);		/* Adaptive spectral enhancement */	v_equ(&sigbuf[BEGIN-LPC_ORD],ase_del,LPC_ORD);	lpc_synthesis(&sigbuf[BEGIN],&sigbuf[BEGIN],ase_den,LPC_ORD,length);	v_equ(ase_del,&sigbuf[BEGIN+length-LPC_ORD],LPC_ORD);	zerflt(&sigbuf[BEGIN],ase_num,&sigbuf[BEGIN],LPC_ORD,length);	v_equ(&sigbuf[BEGIN-TILT_ORD],tilt_del,TILT_ORD);	v_equ(tilt_del,&sigbuf[length+BEGIN-TILT_ORD],TILT_ORD);	zerflt(&sigbuf[BEGIN],tilt_cof,&sigbuf[BEGIN],TILT_ORD,length);		/* Perform LPC synthesis filtering */	v_equ(&sigbuf[BEGIN-LPC_ORD],lpc_del,LPC_ORD);	lpc_synthesis(&sigbuf[BEGIN],&sigbuf[BEGIN],lpc,LPC_ORD,length);	v_equ(lpc_del,&sigbuf[length+BEGIN-LPC_ORD],LPC_ORD);			/* Adjust scaling of synthetic speech */	scale_adj(&sigbuf[BEGIN],gain,&prev_scale,length,SCALEOVER);	/* Implement pulse dispersion filter */	v_equ(&sigbuf[BEGIN-DISP_ORD],disp_del,DISP_ORD);	v_equ(disp_del,&sigbuf[length+BEGIN-DISP_ORD],DISP_ORD);	zerflt(&sigbuf[BEGIN],disp_cof,&sigbuf[BEGIN],DISP_ORD,length);			/* Copy processed speech to output array (not past frame end) */	if (syn_begin+length > FRAME) {	    v_equ(&sp_out[syn_begin],&sigbuf[BEGIN],FRAME-syn_begin);					    /* past end: save remainder in sigsave[0] */	    v_equ(&sigsave[0],&sigbuf[BEGIN+FRAME-syn_begin],		  length-(FRAME-syn_begin));	}				else	    v_equ(&sp_out[syn_begin],&sigbuf[BEGIN],length);			/* Update syn_begin for next period */	syn_begin += length;    }		    /* Save previous pulse and noise filters for next frame */    v_equ(prev_pcof,curr_pcof,MIX_ORD+1);    v_equ(prev_ncof,curr_ncof,MIX_ORD+1);        /* Copy current parameters to previous parameters for next time */    prev_par = *par;    prev_tilt = curr_tilt;        /* Update syn_begin for next frame */    syn_begin -= FRAME;    }/*  * * Subroutine melp_syn_init(): perform initialization for melp  *	synthesis * */void melp_syn_init(){    int i;    float w_fs[NUM_HARM];	    v_zap(prev_par.gain,NUM_GAINFR);    prev_par.pitch = UV_PITCH;    prev_par.lsf[0] = 0.0;    for (i = 1; i < LPC_ORD+1; i++)      prev_par.lsf[i] = prev_par.lsf[i-1] + (1.0/(LPC_ORD+1));    prev_par.jitter = 0.0;    v_zap(&prev_par.bpvc[0],NUM_BANDS);    prev_tilt=0.0;    prev_gain = 0.0;    prev_scale = 0.0;    syn_begin = 0;    noise_gain = MIN_NOISE;    firstcall = 1;    prev_gain_err = 0;    v_zap(pulse_del,MIX_ORD);    v_zap(noise_del,MIX_ORD);    v_zap(lpc_del,LPC_ORD);    v_zap(ase_del,LPC_ORD);    v_zap(tilt_del,TILT_ORD);    v_zap(disp_del,DISP_ORD);    v_zap(sig2,BEGIN+PITCHMAX);    v_zap(sigbuf,BEGIN+PITCHMAX);    v_zap(sigsave,PITCHMAX);    v_zap(prev_pcof,MIX_ORD+1);    v_zap(prev_ncof,MIX_ORD+1);    prev_ncof[MIX_ORD/2] = 1.0;	    fill(prev_par.fs_mag,1.0,NUM_HARM);    /*      * Initialize multi-stage vector quantization (read codebook)      */	     vq_par.num_best = MSVQ_M;    vq_par.num_stages = 4;    vq_par.dimension = 10;    /*      * Allocate memory for number of levels per stage and indices     * and for number of bits per stage      */     MEM_ALLOC(MALLOC,vq_par.num_levels,vq_par.num_stages,int);    MEM_ALLOC(MALLOC,vq_par.indices,vq_par.num_stages,int);    MEM_ALLOC(MALLOC,vq_par.num_bits,vq_par.num_stages,int);	    vq_par.num_levels[0] = 128;    vq_par.num_levels[1] = 64;    vq_par.num_levels[2] = 64;    vq_par.num_levels[3] = 64;	    vq_par.num_bits[0] = 7;    vq_par.num_bits[1] = 6;    vq_par.num_bits[2] = 6;    vq_par.num_bits[3] = 6;	    vq_par.cb = msvq_cb;	    /* Scale codebook to 0 to 1 */    if (fsvq_weighted == 0)      v_scale(vq_par.cb,(2.0/FSAMP),3200);    /*      * Initialize Fourier magnitude vector quantization (read codebook)      */	     fs_vq_par.num_best = 1;    fs_vq_par.num_stages = 1;    fs_vq_par.dimension = NUM_HARM;    /*      * Allocate memory for number of levels per stage and indices     * and for number of bits per stage      */     MEM_ALLOC(MALLOC,fs_vq_par.num_levels,fs_vq_par.num_stages,int);    MEM_ALLOC(MALLOC,fs_vq_par.indices,fs_vq_par.num_stages,int);    MEM_ALLOC(MALLOC,fs_vq_par.num_bits,fs_vq_par.num_stages,int);	    fs_vq_par.num_levels[0] = FS_LEVELS;	    fs_vq_par.num_bits[0] = FS_BITS;	    fs_vq_par.cb = fsvq_cb;	    /*      * Initialize fixed MSE weighting and inverse of weighting      */	    vq_fsw(w_fs, NUM_HARM, 60.0);    for (i = 0; i < NUM_HARM; i++)      w_fs_inv[i] = 1.0/w_fs[i];    /*      * Pre-weight codebook (assume single stage only)      */	    if (fsvq_weighted == 0)      {	  fsvq_weighted = 1;	  for (i = 0; i < fs_vq_par.num_levels[0]; i++)	    window(&fs_vq_par.cb[i*NUM_HARM],w_fs,&fs_vq_par.cb[i*NUM_HARM],		   NUM_HARM);      }	}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情综合在线| 欧美高清视频在线高清观看mv色露露十八| 欧美国产精品中文字幕| 在线欧美小视频| 国产一区激情在线| 亚洲免费在线播放| 久久久www成人免费无遮挡大片| 色94色欧美sute亚洲线路一ni| 狠狠色狠狠色综合日日91app| 亚洲人成人一区二区在线观看| 欧美成人一区二区三区在线观看| 欧美电影免费观看高清完整版在线| 国产精品一区专区| 午夜久久久久久电影| 国产精品天美传媒沈樵| 日韩三级视频中文字幕| 色吧成人激情小说| 国产精品一级二级三级| 肉肉av福利一精品导航| 中文字幕一区二区三区乱码在线| 欧美成人在线直播| 欧美性极品少妇| 91蜜桃在线观看| 成人福利电影精品一区二区在线观看| 玖玖九九国产精品| 亚洲h精品动漫在线观看| 日韩毛片视频在线看| 久久精品综合网| 2020国产精品| 欧美va亚洲va| 日韩一区二区三区观看| 欧美日韩激情在线| 在线亚洲高清视频| 97精品国产露脸对白| 盗摄精品av一区二区三区| 久久国产精品免费| 麻豆成人av在线| 午夜精品久久久久久久蜜桃app| 亚洲精选视频免费看| 中文字幕一区二区三区在线不卡| 中文字幕精品三区| 国产欧美日产一区| 国产日韩欧美高清在线| 26uuu成人网一区二区三区| 精品国产乱码久久久久久免费| 欧美videofree性高清杂交| 欧美一级高清片| 日韩视频在线永久播放| 制服丝袜激情欧洲亚洲| 欧美一区三区四区| 日韩一区二区免费在线观看| 精品裸体舞一区二区三区| 欧美大胆人体bbbb| 精品国产一区二区在线观看| 精品福利一区二区三区免费视频| 亚洲精品一区二区在线观看| 久久久蜜臀国产一区二区| 国产日韩欧美高清| 中文字幕一区二区三区av| 亚洲欧美精品午睡沙发| 亚洲五码中文字幕| 日韩精品电影在线观看| 狠狠色2019综合网| 国产高清成人在线| 99re成人在线| 欧美日韩亚洲国产综合| 日韩欧美在线网站| 久久精品亚洲一区二区三区浴池| 国产精品成人网| 国产精品小仙女| 91美女视频网站| 欧美精品第1页| 久久影院午夜片一区| 国产精品欧美一区喷水| 亚洲伊人伊色伊影伊综合网| 蜜桃视频一区二区三区在线观看| 国产精品69久久久久水密桃| 91久久精品网| 日韩精品一区在线| 国产精品久久久久天堂| 亚洲高清免费视频| 国产剧情av麻豆香蕉精品| 91免费版pro下载短视频| 91麻豆精品91久久久久同性| 国产欧美综合在线观看第十页 | 亚洲一二三四久久| 麻豆成人综合网| 91亚洲午夜精品久久久久久| 欧美一级xxx| 日韩美女视频一区| 久久狠狠亚洲综合| 91女神在线视频| 日韩欧美国产1| 亚洲久本草在线中文字幕| 激情图区综合网| 91福利精品第一导航| 精品国产一区久久| 亚洲韩国一区二区三区| 国产成人午夜视频| 欧美人伦禁忌dvd放荡欲情| 久久精品日韩一区二区三区| 香蕉成人伊视频在线观看| 国产91丝袜在线播放0| 69p69国产精品| 亚洲女性喷水在线观看一区| 激情综合色综合久久| 欧美亚洲免费在线一区| 国产精品美女久久久久久久久久久| 日韩成人免费看| 色婷婷精品大视频在线蜜桃视频| 国产午夜精品福利| 不卡的av在线| 日韩精品一区国产麻豆| 香蕉久久夜色精品国产使用方法| av午夜一区麻豆| 精品动漫一区二区三区在线观看| 亚洲444eee在线观看| 99久久伊人精品| 国产日韩欧美一区二区三区综合 | 粉嫩aⅴ一区二区三区四区| 91精品国产乱| 亚洲电影第三页| 在线免费视频一区二区| 中文一区二区在线观看| 黑人巨大精品欧美一区| 欧美一区二区成人6969| 香蕉影视欧美成人| 欧美专区日韩专区| 亚洲精品亚洲人成人网在线播放| 成人高清视频免费观看| 国产亚洲欧美在线| 国产精品一品视频| 久久久综合视频| 激情偷乱视频一区二区三区| 欧美第一区第二区| 久久成人精品无人区| 91精品国产综合久久婷婷香蕉| 午夜欧美大尺度福利影院在线看| 欧美日韩卡一卡二| 亚洲国产精品一区二区www| 在线观看日韩高清av| 一区二区高清视频在线观看| 在线观看一区二区视频| 亚洲综合色视频| 欧美日韩视频在线一区二区 | 日韩福利视频导航| 91麻豆精品国产91久久久更新时间 | 亚洲综合一区二区精品导航| 在线精品视频一区二区三四| 亚洲国产色一区| 欧美高清你懂得| 久久99精品一区二区三区三区| 久久午夜色播影院免费高清| 国产精品综合一区二区三区| 国产精品午夜电影| 99久久国产综合精品色伊| 一区二区欧美国产| 欧美巨大另类极品videosbest | 国产在线视频一区二区| 久久―日本道色综合久久| 国产东北露脸精品视频| 国产精品超碰97尤物18| 91国偷自产一区二区三区观看 | 亚洲综合精品久久| 欧美日韩另类一区| 久久成人久久鬼色| 国产精品丝袜一区| 一本大道久久a久久精二百| 亚洲电影在线播放| 精品国产免费一区二区三区四区| 风流少妇一区二区| 一区二区三区在线观看动漫| 在线成人免费视频| 黄色日韩网站视频| 中文字幕综合网| 欧美一级在线观看| 国产激情精品久久久第一区二区| 亚洲精品午夜久久久| 日韩视频一区二区在线观看| 成人激情黄色小说| 亚洲 欧美综合在线网络| 精品国产自在久精品国产| 97精品国产97久久久久久久久久久久| 五月激情综合婷婷| 久久久www成人免费毛片麻豆 | 国产婷婷色一区二区三区| 99精品视频在线观看| 日韩成人一区二区三区在线观看| 欧美极品另类videosde| 欧美日本在线播放| 福利一区二区在线| 日韩vs国产vs欧美| 中文字幕一区二区三区在线播放 | 国产精品高潮久久久久无| 欧美精品vⅰdeose4hd| av在线播放成人| 久久国产精品99精品国产| 亚洲精品国产成人久久av盗摄 | 亚洲成人在线网站| 国产精品网站在线播放|