hych007 / Audio3AProcess

Audio AEC AGC ANS(webrtc aec) process with a single lib, just 6 APIs, easy to use. 基于webrtc的极简音频3A处理上层封装,6个API,支持常见采样率、单双声道。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

audio 3A (AGC\AEC\ANS\VAD) process with simple api and single lib

Audio3AProcessSdk简介

极简的音频3A(AGC AEC ANS VAD)处理封装接口:

  • 1、基于Webrtc AEC(非AECM、非AEC3)
  • 2、支持8KHZ、16KHZ、32KHZ、44.1KHZ、48KHZ,支持单声道、双声道。
  • 3、支持AEC自动延时估计。
  • 4、仅6个API,仅一个DLL组成,占用空间小,无第三方依赖,集成简易。
  • 6、C++开发,支持C、C++、C#,可移植Android等平台

Audio3AProcessSdk C API

  • 环境初始化,系统只需调用一次
    @param: outputPath:日志文件输出的目录,若目录不存在将自动创建
    @param: outputLevel:日志输出的级别,只有等于或者高于该级别的日志输出到文件
    @return:
    void SD3AProcess_Enviroment_Init(const char * outputPath, int outputLevel);

  • 环境反初始化,系统只需调用一次
    @return:
    void  SD3AProcess_Enviroment_Free();

  • 创建SD3AProcess
    @return: 返回模块指针,为NULL则失败
    void*  SD3AProcess_New();

  • 销毁SD3AProcess,使用者应该做好与其他API之间的互斥保护
    @param pp3AProcess: 模块指针
    @return: 
    void  SD3AProcess_Delete(void** pp3AProcess);

  • 开始启动SD3AProcess,仅支持16bit short音频3A处理
    @param p3AProcess: 模块指针
    @param nSampleRate: 输入待处理数据采样率
    @param nChannelNum: 输入待处理数据声道数
    @param nAecDelayInitMs: MIC信号与REF扬声器输出信号之间的延时差,将作为内部AEC自动延时估计的初始值。建议通过SD3AProcess_EnableDebugMode接口保存MIC、REF文件后观测得到准确的延时估计初始值有利于自动延时估计尽快收敛
    @param bEnableAec: 是否使能AEC
    @param bEnableAgc: 是否使能AGC
    @param bEnableAns: 是否使能ANS
    @param pfOutput3ACallback: 经过3A处理后的音频数据输出回调接口
    @param pfVadStatusCallback: VAD检测的输出回调接口,设置为NULL时不开启VAD检测
    @param pObject: 上述输出回调接口的透传指针,将通过回调函数形参方式透传外层
    @return: TURE成功,FALSE失败
    BOOL  SD3AProcess_Start(void* p3AProcess, int nSampleRate, int nChannelNum, int nAecDelayInitMs, BOOL bEnableAec, BOOL bEnableAgc, BOOL bEnableAns, Output3AProcessedData pfOutput3ACallback, OutputVadProcessStatus pfVadStatusCallback, void* pObject);

  • 停止SD3AProcess
    @param p3AProcess: 模块指针
    @return: 
    void  SD3AProcess_Stop(void* p3AProcess);

  • 存入REF扬声器数据作为AEC处理参考信号
    @param p3AProcess: 模块指针
    @param psRefData: REF扬声器数据
    @param nRefCount: REF扬声器数据大小(非字节数,而是psRefData 中 short数据的数目)
    @return: 
    void  SD3AProcess_PutRefData(void* p3AProcess, const short *psRefData, int nRefCount);

  • 存入待3A处理的麦克风采集信号
    @param p3AProcess: 模块指针
    @param psMicData: MIC数据
    @param nMicCount: MIC数据大小(非字节数,而是psRefData 中 short数据的数目)
    @return: 
    void  SD3AProcess_PutMicData(void* p3AProcess, const short *psMicData, int nMicCount);

  • 启用AEC调试模式,此时将生成AEC处理前的Ref信号和Mic信号到指定的路径,便于观察二者延时差
    @param p3AProcess: 模块指针
    @param pcTempFileSaveDir: 调试文件存放路径
    @return: TRUE-使能成功, FALSE-使能失败
    BOOL  SD3AProcess_EnableDebugMode(void* p3AProcess, const char *pcTempFileSaveDir);

本库仅做演示用途,若需要商业用途与技术支持请联系 www.mediapro.cc

About

Audio AEC AGC ANS(webrtc aec) process with a single lib, just 6 APIs, easy to use. 基于webrtc的极简音频3A处理上层封装,6个API,支持常见采样率、单双声道。


Languages

Language:C 51.9%Language:C++ 48.1%