您当前的位置: 首页 > 

鱼儿-1226

暂无认证

  • 0浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

aec in speex利用Speex进行AEC(回声抑制)的代码实现

鱼儿-1226 发布时间:2020-08-10 11:25:43 ,浏览量:0

#include #include

static SpeexEchoState *echo_state = NULL; static SpeexPreprocessState *denoise_state; static pthread_mutex_t mutex_aec; static char* rec_buffer = NULL; static char* play_buffer = NULL; static int sampleRate = 8000; void aec_init(int frame_size) {     if(echo_state || denoise_state)         return;     rec_buffer = (char*)malloc(frame_size*2);     play_buffer = (char*)malloc(frame_size*2);          echo_state = speex_echo_state_init(frame_size, frame_size*10);     denoise_state = speex_preprocess_state_init(frame_size, sampleRate);     speex_echo_ctl(echo_state, SPEEX_ECHO_SET_SAMPLING_RATE, &sampleRate);        speex_preprocess_ctl(denoise_state, SPEEX_PREPROCESS_SET_ECHO_STATE, echo_state);     pthread_mutex_init(&mutex_aec, NULL); } void aec_uninit() {     if(echo_state)         speex_echo_state_destroy(echo_state);     if(denoise_state)         speex_preprocess_state_destroy(denoise_state);     echo_state = NULL;     denoise_state = NULL;     pthread_mutex_destroy(&mutex_aec);     if(rec_buffer)         free(rec_buffer);     if(play_buffer)         free(play_buffer);     play_buffer = NULL;     rec_buffer = NULL; } void aec_record_audio(void* audio_rec_buffer, unsigned int audio_data_len) {     if(echo_state == NULL || denoise_state == NULL || rec_buffer == NULL)         return;     memset(rec_buffer, 0, audio_data_len);     speex_echo_capture(echo_state, (spx_int16_t*)audio_rec_buffer, (spx_int16_t*)rec_buffer);     speex_preprocess_run(denoise_state, (spx_int16_t*)rec_buffer);     memcpy(audio_rec_buffer, rec_buffer, audio_data_len); } void aec_play_audio(void* audio_play_buffer, unsigned int audio_data_len) {     if(echo_state == NULL || denoise_state == NULL|| play_buffer == NULL)         return;     speex_echo_playback(echo_state, (spx_int16_t*)audio_play_buffer);  }

关注
打赏
1604459285
查看更多评论
立即登录/注册

微信扫码登录

0.0450s