首页 > 编程语言 >speex降噪算法移植及测试

speex降噪算法移植及测试

时间:2023-09-14 18:00:38浏览次数:43  
标签:speex SET st PREPROCESS 算法 preprocess 降噪 infile

下载 libspeexdsp
PC上,编译。修改内置demo
输入in.pcm ,输出out.pcm, 用音频分析软件及实测效果OK.

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "speex/speex_preprocess.h"
#include <stdio.h>

#define NN 160

int main()
{
   short in[NN];
   int i;
   SpeexPreprocessState *st;
   int count=0;
   float f;
   unsigned long flen=0;
   
   FILE *infile = fopen("in.pcm", "rb");
   FILE *outfile = fopen("out.pcm", "wb");

   fseek(infile,0L,SEEK_END);
   flen = ftell(infile);
   printf("file size=%ld\n",flen);
   fseek(infile,0L,SEEK_SET);

   st = speex_preprocess_state_init(NN, 8000);
   i=1;
   speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &i);
   i=0;
   speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i);
   i=8000;
   speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &i);
   i=0;
   speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB, &i);
   f=.0;
   speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_DECAY, &f);
   f=.0;
   speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &f);
   
   while (1)
   {
      int vad;
      fread(in, sizeof(short), NN, infile);
      if (feof(infile))
         break;
      vad = speex_preprocess_run(st, in);
      /*fprintf (stderr, "%d\n", vad);*/
      fwrite(in, sizeof(short), NN, outfile);
      count++;
   }
   printf("count=%d\n",count);
   speex_preprocess_state_destroy(st);
   fclose(infile);
   fclose(outfile);
   return 0;
}

标签:speex,SET,st,PREPROCESS,算法,preprocess,降噪,infile
From: https://www.cnblogs.com/kn-zheng/p/17703095.html

相关文章

  • speexdsp库实现音频3A算法
    speex是音频编解码库,speexdsp是附加的音频DSP库,是音频降噪库,也有回声抑制和自动增益控制功能,即通常说的音频3A算法。现在音频编解码大部分都是使用opus库,很少使用speex进行音频编解码,但还是会使用speexdsp库的3A算法对音频数据进行处理。本例是在ubuntu环境下,C/C++语言,使用Qt进......
  • 算法竞赛文件读写
    freopen使用freopen进行文件读写,可以节约测试时重复输入的时间,用法可以参考官网std::freopen-cppreference.com。程序中使用cin/cout和scanf/printf均可。模板#include<cstdio>usingnamespacestd;intmain(){//提交时记得将这两行注释掉freopen("E:\\c\\in......
  • Speex的移植和简单使用
    前言只是小白在学习过程中的记录,可能存在错误。。。音频使用3A算法,Speex也支持。。3A:声学回声消除(AEC)、背景噪声抑制(ANS)、自动增益控制(AGC)三种音频算法的合称个人尝试之后发现,背景噪声消除效果较好,AEC和AGC似乎没什么用。。 一、speex、speexdsp的简单介绍Speex:开源免费......
  • Lnton羚通视频分析算法平台人员闯入算法检测告警详细介绍
    Lnton羚通的算法算力云平台有以下显著特点:高性能、高可靠性、高可扩展性和低成本。用户可以通过该云平台获取高效、强大的算法计算服务,快速而灵活地运行各种复杂的计算模型和算法。该平台广泛涵盖机器学习、人工智能、大数据分析和图像识别等领域。此外,云平台还提供丰富的算法库和......
  • 【理论优化算法】基于理论和优化算法求解单目标优化问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 【雷电附着算法】基于雷电附着优化算法LAPO求解单目标优化问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 视频监控/安防监控/视频AI智能分析:小动物识别算法场景汇总
    随着人们对生态环境的关注日益提升,大家对动物保护意识也逐渐增强。旭帆科技智能分析网关小动物识别算法应运而生。除了对保护动物的识别以外,旭帆科技AI智能分析网关还可以识别常见的老鼠等动物,助力明厨亮灶监管,保卫食品安全。TSINGSEE青犀AI智能分析网关小动物识别算法,可以应用于各......
  • 文心一言 VS 讯飞星火 VS chatgpt (92)-- 算法导论8.3 5题
    五、用go语言,在本节给出的第一个卡片排序算法中,为排序d位十进制数,在最坏情况下需要多少轮排序?在最坏情况下,操作员需要记录多少堆卡片?文心一言:你提到的第一个卡片排序算法可能是指的基数排序(RadixSort)。基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数......
  • 文心一言 VS 讯飞星火 VS chatgpt (92)-- 算法导论8.3 5题
    五、用go语言,在本节给出的第一个卡片排序算法中,为排序d位十进制数,在最坏情况下需要多少轮排序?在最坏情况下,操作员需要记录多少堆卡片?文心一言:你提到的第一个卡片排序算法可能是指的基数排序(RadixSort)。基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的......
  • 优先级退金额 小算法
    优先级退金额小算法背景:用户需要退钱按照对应的规则优先级退,例如用户最大要退50,这个时候让优先级现金福利卡礼包这几个优先退其他次之。例如用户混合支付用了20现金20福利卡20礼包,这个时候要退50,应该是依次退现金20福利卡20礼包10思路首......