青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

夜貓子

夜貓子
隨筆 - 5, 文章 - 1, 評論 - 1, 引用 - 0
數據加載中……

語音的前置處理(一)

1.簡介

語音在采集和傳輸過程中,由于語音源的差異、信道的衰減、噪聲的干擾以及遠近效應,導致信號幅度相差很大。所有在語音處理之前我們需要對語音數據進行前置處理,包括預處理(AGCVAD、回音消除)、重采樣和噪聲抑制。

所有的代碼都是基于speex開源庫,具體內容可以參考http://speex.org/。

本開發手冊暫時只提供AGC的接口和測試代碼,其他陸續添加進來。

2.接口說明

2.1  介紹

預處理模塊包括自動增益控制、靜音檢測和回音消除。以下是接口函數,具體參考speex\ speex_preprocess.h。

 

函數名稱

功能簡介

speex_preprocess_state_init

創建預處理器

speex_preprocess_state_destroy

銷毀預處理器

speex_preprocess_run

處理一幀數據

speex_preprocess

處理一幀數據(廢棄的)

speex_preprocess_estimate_update

更新預處理器

speex_preprocess_ctl

設置和讀取預處理器的參數

 

2.1.1  speex_preprocess_state_init

函數原形

SpeexPreprocessState *speex_preprocess_state_init(int frame_sizeint sampling_rate);

功能

創建預處理器

參數

Frmae_size   [in]每幀的大?。ńㄗh幀長為20ms

Sample_rate  [in]采樣率(支持8k、16k、44k

返回值

成功返回預處理器指針,失敗返回NULL

說明

加入是16k的語音數據,幀長20ms等于320個采樣

 

2.1.2  speex_preprocess_state_destroy

函數原形

void speex_preprocess_state_destroy(SpeexPreprocessState *st);

功能

銷毀預處理器

參數

St           [in]處理器指針

返回值

Void

說明

 

 

2.1.3  speex_preprocess_run

函數原形

int speex_preprocess_run(SpeexPreprocessState *stspx_int16_t *x);

功能

處理一幀語音數據

參數

St           [in]處理器指針

X            [in|out]數據緩存,處理后的數據也存入該緩存中

返回值

如果VAD打開,返回值為1表示有語音,為0表示靜音或者噪音

說明

 

 

2.1.4  speex_preprocess

函數原形

int speex_preprocess(SpeexPreprocessState *stspx_int16_t *xspx_int32_t *echo);

功能

處理一幀語音數據(廢棄的函數,簡介調用speex_preprocess_run

參數

St           [in]處理器指針

X            [in|out]數據緩存,處理后的數據也存入該緩存中     

返回值

 

說明

 

 

2.1.5  speex_preprocess_estimate_update

函數原形

void speex_preprocess_estimate_update(SpeexPreprocessState *stspx_int16_t *x);

功能

更新預處理器,不會計算輸出語音

參數

St           [in]處理器指針

X            [in]數據緩存

返回值

Void

說明

 

 

2.1.6  speex_preprocess_ctl

函數原形

int speex_preprocess_ctl(SpeexPreprocessState *stint requestvoid *ptr);

功能

設置預處理器的參數

參數

St           [in]處理器指針

Request      [in]參數的類型(由宏來代表不同的參數)

Ptr          [in|out]參數的值(設置參數時為in,獲得參數參數時為out,這個由宏決定)

返回值

成功返回0,失敗返回-1(表明未知的請求參數)

說明

以下數標識參數類型的宏

/** Set preprocessor denoiser state */

#define SPEEX_PREPROCESS_SET_DENOISE 0

/** Get preprocessor denoiser state */

#define SPEEX_PREPROCESS_GET_DENOISE 1

 

/** Set preprocessor Automatic Gain Control state */

#define SPEEX_PREPROCESS_SET_AGC 2

/** Get preprocessor Automatic Gain Control state */

#define SPEEX_PREPROCESS_GET_AGC 3

 

/** Set preprocessor Voice Activity Detection state */

#define SPEEX_PREPROCESS_SET_VAD 4

/** Get preprocessor Voice Activity Detection state */

#define SPEEX_PREPROCESS_GET_VAD 5

 

/** Set preprocessor Automatic Gain Control level (float) */

#define SPEEX_PREPROCESS_SET_AGC_LEVEL 6

/** Get preprocessor Automatic Gain Control level (float) */

#define SPEEX_PREPROCESS_GET_AGC_LEVEL 7

 

/** Set preprocessor dereverb state */

#define SPEEX_PREPROCESS_SET_DEREVERB 8

/** Get preprocessor dereverb state */

#define SPEEX_PREPROCESS_GET_DEREVERB 9

 

/** Set preprocessor dereverb level */

#define SPEEX_PREPROCESS_SET_DEREVERB_LEVEL 10

/** Get preprocessor dereverb level */

#define SPEEX_PREPROCESS_GET_DEREVERB_LEVEL 11

 

/** Set preprocessor dereverb decay */

#define SPEEX_PREPROCESS_SET_DEREVERB_DECAY 12

/** Get preprocessor dereverb decay */

#define SPEEX_PREPROCESS_GET_DEREVERB_DECAY 13

 

/** Set probability required for the VAD to go from silence to voice */

#define SPEEX_PREPROCESS_SET_PROB_START 14

/** Get probability required for the VAD to go from silence to voice */

#define SPEEX_PREPROCESS_GET_PROB_START 15

 

/** Set probability required for the VAD to stay in the voice state (integer percent) */

#define SPEEX_PREPROCESS_SET_PROB_CONTINUE 16

/** Get probability required for the VAD to stay in the voice state (integer percent) */

#define SPEEX_PREPROCESS_GET_PROB_CONTINUE 17

 

/** Set maximum attenuation of the noise in dB (negative number) */

#define SPEEX_PREPROCESS_SET_NOISE_SUPPRESS 18

/** Get maximum attenuation of the noise in dB (negative number) */

#define SPEEX_PREPROCESS_GET_NOISE_SUPPRESS 19

 

/** Set maximum attenuation of the residual echo in dB (negative number) */

#define SPEEX_PREPROCESS_SET_ECHO_SUPPRESS 20

/** Get maximum attenuation of the residual echo in dB (negative number) */

#define SPEEX_PREPROCESS_GET_ECHO_SUPPRESS 21

 

/** Set maximum attenuation of the residual echo in dB when near end is active (negative number) */

#define SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE 22

/** Get maximum attenuation of the residual echo in dB when near end is active (negative number) */

#define SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE 23

 

/** Set the corresponding echo canceller state so that residual echo suppression can be performed (NULL for no residual echo suppression) */

#define SPEEX_PREPROCESS_SET_ECHO_STATE 24

/** Get the corresponding echo canceller state */

#define SPEEX_PREPROCESS_GET_ECHO_STATE 25

 

/** Set maximal gain increase in dB/second (int32) */

#define SPEEX_PREPROCESS_SET_AGC_INCREMENT 26

 

/** Get maximal gain increase in dB/second (int32) */

#define SPEEX_PREPROCESS_GET_AGC_INCREMENT 27

 

/** Set maximal gain decrease in dB/second (int32) */

#define SPEEX_PREPROCESS_SET_AGC_DECREMENT 28

 

/** Get maximal gain decrease in dB/second (int32) */

#define SPEEX_PREPROCESS_GET_AGC_DECREMENT 29

 

/** Set maximal gain in dB (int32) */

#define SPEEX_PREPROCESS_SET_AGC_MAX_GAIN 30

 

/** Get maximal gain in dB (int32) */

#define SPEEX_PREPROCESS_GET_AGC_MAX_GAIN 31

 

/*  Can't set loudness */

/** Get loudness */

#define SPEEX_PREPROCESS_GET_AGC_LOUDNESS 33

 

/*  Can't set gain */

/** Get current gain (int32 percent) */

#define SPEEX_PREPROCESS_GET_AGC_GAIN 35

 

/*  Can't set spectrum size */

/** Get spectrum size for power spectrum (int32) */

#define SPEEX_PREPROCESS_GET_PSD_SIZE 37

 

/*  Can't set power spectrum */

/** Get power spectrum (int32[] of squared values) */

#define SPEEX_PREPROCESS_GET_PSD 39

 

/*  Can't set noise size */

/** Get spectrum size for noise estimate (int32)  */

#define SPEEX_PREPROCESS_GET_NOISE_PSD_SIZE 41

 

/*  Can't set noise estimate */

/** Get noise estimate (int32[] of squared values) */

#define SPEEX_PREPROCESS_GET_NOISE_PSD 43

 

/* Can't set speech probability */

/** Get speech probability in last frame (int32).  */

#define SPEEX_PREPROCESS_GET_PROB 45

 

/** Set preprocessor Automatic Gain Control level (int32) */

#define SPEEX_PREPROCESS_SET_AGC_TARGET 46

/** Get preprocessor Automatic Gain Control level (int32) */

#define SPEEX_PREPROCESS_GET_AGC_TARGET 47

 

3.實例代碼

3.1  AGC

#define NN 320

/*

    語音數據為單通道、16bit、16k

*/

int _tmain(int argc_TCHARargv[])

{

 

     short in[NN];

     int i;

     SpeexPreprocessState *st;

     int count=0;

     float f;

 

     st = speex_preprocess_state_init(NN, 16000);

    

     i=1;

     speex_preprocess_ctl(stSPEEX_PREPROCESS_SET_AGC, &i);

     f=16000;

     speex_preprocess_ctl(stSPEEX_PREPROCESS_SET_AGC_LEVEL, &f);

 

 

     while (1)

     {

         int vad;

         fread(insizeof(short), NNstdin);

         if (feof(stdin))

              break;

         vad = speex_preprocess_run(stin);

         //fprintf (stderr, "%d\n", vad);

         fwrite(insizeof(short), NNstdout);

         count++;

     }

     speex_preprocess_state_destroy(st);

 

     return 0;

}

posted on 2012-05-22 23:00 夜貓子 閱讀(1041) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            樱花yy私人影院亚洲| 蜜臀91精品一区二区三区| 久久这里只有| 久久国产一区二区三区| 欧美三级第一页| 欧美激情一区二区三区在线视频观看 | 欧美一区二区三区免费看| 免费中文字幕日韩欧美| 久久亚洲综合| 国产欧美日韩视频一区二区| 亚洲美女中出| 亚洲精品国产精品国产自| 午夜精品久久久久久久蜜桃app| 日韩午夜在线播放| 蘑菇福利视频一区播放| 欧美电影免费| 影音先锋中文字幕一区二区| 欧美亚洲一区三区| 欧美一区二区视频97| 国产精品久久久久久久午夜片| 亚洲欧洲精品天堂一级| 一区二区在线视频| 久久久亚洲国产美女国产盗摄| 欧美在线不卡视频| 国产亚洲成年网址在线观看| 亚洲欧美一区二区精品久久久| 亚洲欧美综合网| 国产精品午夜电影| 性欧美xxxx大乳国产app| 欧美在线视频免费播放| 国产精品一级久久久| 亚洲在线成人| 久久精品电影| 激情成人亚洲| 免费观看在线综合| 91久久精品美女高潮| 99国产精品视频免费观看| 欧美福利一区二区三区| 亚洲另类视频| 欧美在现视频| 亚洲成色www8888| 欧美精品在线免费播放| 亚洲视频国产视频| 久久久免费精品| 亚洲国产成人精品久久久国产成人一区| 久久在线观看视频| aa成人免费视频| 性欧美xxxx视频在线观看| 国产一区二区三区四区hd| 美女黄色成人网| 99精品视频免费观看视频| 欧美一区1区三区3区公司| 在线不卡a资源高清| 欧美成在线观看| 亚洲欧美日韩精品久久亚洲区| 乱人伦精品视频在线观看| 99国产精品久久| 国产女主播一区| 欧美大片在线观看| 亚洲欧美日韩精品在线| 亚洲电影专区| 欧美一级理论性理论a| 伊人久久成人| 国产精品jizz在线观看美国| 久久成人精品无人区| 最新日韩在线视频| 久久久精品国产免大香伊 | 91久久中文| 欧美一区影院| 亚洲精品视频一区| 黑人一区二区| 欧美午夜激情在线| 噜噜噜在线观看免费视频日韩| 一本色道久久综合狠狠躁篇怎么玩| 久久人人精品| 午夜精品三级视频福利| 亚洲精品一区二区三区蜜桃久| 国产午夜精品全部视频在线播放 | 久久久久久噜噜噜久久久精品| 亚洲精品视频一区| 欧美成人国产| 欧美激情一区二区| 国内精品久久久久影院 日本资源| 麻豆精品在线观看| 亚洲与欧洲av电影| 一本色道久久综合| 亚洲黑丝在线| 欧美成年人视频网站| 性伦欧美刺激片在线观看| 99热在这里有精品免费| 在线观看国产日韩| 国产主播一区二区三区| 国产精品久久久久久久久久免费看 | 亚洲国产精品悠悠久久琪琪| 国产伦精品一区二区三区视频孕妇 | 欧美在线视屏| 午夜精品一区二区三区在线| 99v久久综合狠狠综合久久| 亚洲电影在线看| 樱桃国产成人精品视频| 狠狠色综合播放一区二区| 国产毛片精品视频| 国产精品五区| 国产区在线观看成人精品| 国产精品视频一二三| 国产精品日本一区二区| 国产精品毛片高清在线完整版 | 欧美+亚洲+精品+三区| 久久精品中文字幕一区二区三区 | 亚洲永久精品大片| 亚洲一级黄色| 亚洲在线观看| 性欧美超级视频| 久久精品盗摄| 久久一区二区三区四区| 欧美成人精品影院| 欧美日韩精品在线视频| 欧美日韩在线不卡| 国产精品免费一区豆花| 国产日韩欧美高清| 国产专区一区| 亚洲黄色视屏| 制服诱惑一区二区| 欧美一区二区三区四区在线观看 | 久久久美女艺术照精彩视频福利播放 | 日韩亚洲欧美在线观看| 亚洲一区二区三区在线观看视频| 在线中文字幕一区| 欧美在线影院| 欧美a级大片| 亚洲最新视频在线| 亚洲欧美中日韩| 麻豆精品网站| 欧美手机在线视频| 韩日精品在线| 一区二区免费看| 久久gogo国模裸体人体| 欧美va亚洲va香蕉在线| 亚洲美女视频在线观看| 欧美一进一出视频| 欧美成人一区在线| 国产农村妇女毛片精品久久麻豆| 在线观看一区视频| 亚洲婷婷免费| 美女久久网站| 亚洲视频第一页| 美女黄网久久| 国产日韩在线播放| 亚洲乱码视频| 久久久人成影片一区二区三区| 亚洲二区在线| 欧美亚洲综合网| 欧美日韩精品| 精品成人免费| 午夜在线一区二区| 亚洲欧洲一区二区三区在线观看 | 国产精品久久久久久久久久久久久久| 国产视频丨精品|在线观看| 99亚洲精品| 免费短视频成人日韩| 亚洲色在线视频| 欧美电影在线观看完整版| 国产日韩欧美二区| 亚洲影院一区| 亚洲三级电影全部在线观看高清| 亚洲欧美美女| 国产精品久久久| 亚洲剧情一区二区| 免费观看30秒视频久久| 欧美一激情一区二区三区| 欧美三级日本三级少妇99| 亚洲精品欧美在线| 久久亚洲午夜电影| 欧美有码视频| 国产亚洲成av人在线观看导航| 中日韩在线视频| 亚洲三级影院| 欧美—级a级欧美特级ar全黄| 在线日本高清免费不卡| 久久女同精品一区二区| 亚洲免费小视频| 国产精品丝袜白浆摸在线| 中文在线资源观看网站视频免费不卡| 男男成人高潮片免费网站| 西西人体一区二区| 国产精品久久久久久久久果冻传媒| 亚洲精品婷婷| 亚洲电影免费在线| 蜜桃av一区二区| 亚洲欧洲在线免费| 欧美风情在线观看| 久久亚洲二区| 亚洲国产欧美日韩精品| 欧美国产日本| 免费欧美电影| 夜夜狂射影院欧美极品| 亚洲人成网在线播放| 欧美日韩妖精视频| 亚洲一区二区3| 亚洲男女自偷自拍图片另类|