如何将音频识别算法的思考与阶段性小结转化为?

摘要:这篇文章酝酿了很久,一直没抽时间写。 在中秋,国庆来临之时,落笔。 写之前,先交代几件事情, 主要是 回复 给我发邮件以及QQ上询问的朋友们的一些疑问和需求,这里稍作回复一下。 1.关于 票据ocr预处理算法 相关算法细节已经开源。 项目地
这篇文章酝酿了很久,一直没抽时间写。 在中秋,国庆来临之时,落笔。 写之前,先交代几件事情, 主要是 回复 给我发邮件以及QQ上询问的朋友们的一些疑问和需求,这里稍作回复一下。 1.关于 票据ocr预处理算法 相关算法细节已经开源。 项目地址: https://github.com/cpuimage/OcrPreprocessing 各位可以根据CPUImageLocalColorFilter算法思路,对应项目需求进行算法改写定制算法实现。 主要是基于颜色过滤的思路,只要确认具体需求, 提供的算法,可以解决绝大多数关于颜色叠加,干扰移除的问题。 由于思路比较简单,这里就不展开, 需要的阅读相关代码,理解一下。 2.关于音频指纹算法实现,已经开源。 项目地址: 基础: https://github.com/cpuimage/shazam 进阶: https://github.com/cpuimage/AudioFingerprinter 音频指纹最重要的是时序信息,改进的思路和方向有很多, 例如提取更加鲁棒性的特征或者增加特征维度等。 对音频指纹,哼唱搜歌感兴趣的,可以参阅实现。 3.关于音频采样算法 相关项目: 简易实现,便携可采用: 目前有两种简单插值实现,平时基本够用。 https://github.com/cpuimage/resampler 如有更高要求的,可以采用: https://github.com/cpuimage/speex_resampler https://github.com/cpuimage/WebRTC_Resampler https://github.com/cpuimage/FFTResampler 4.关于音频降噪算法 降噪算法可参阅项目: https://github.com/cpuimage/AudioDenoise https://github.com/cpuimage/WebRTC_NS https://github.com/cpuimage/rnnoise 由于有很多人询问rnnoise的训练方法和数据集。 算法实现细节见: https://people.xiph.org/~jm/demo/rnnoise/ 关于数据集问题,原作者已经开放下载了。 下载地址: https://people.xiph.org/~jm/demo/rnnoise/rnnoise_contributions.tar.gz 关于rnnoise采样率适配和训练问题: 参阅项目: https://github.com/GregorR/rnnoise-nu https://github.com/GregorR/rnnoise-models GregorR已经做了很多工作了,所以大多数问题,大家可以考虑联系他。 5.便携fft实现stb_fft开源,单头文件实现。 这个开源项目只是方便一些思路的验证和平时的测试使用。 不是性能最优实现,最优实现版本暂不开源。 项目地址: https://github.com/cpuimage/stb_fft 差不多就这么多, 以上,若是有不理解的地方,可以给我发邮件或QQ联系。 回到主题上,本人最近一直在研究音频识别的一个小分支——性别判断。 简而言之就是通过声音分析,判断 说话者的性别。 听起来好像很简单,但是做起来,才知道,路上好多坑。 总的来说,想要精准识别声音的性别,如果没有干扰是很简单的事情, 但是,有了干扰之后的问题就复杂多了。 我们先考虑一下,声音信息可能受到什么因素的干扰。 1.外界干扰,主要是噪声 例如:多人交谈(等非主体的声音),软硬设备(网络,电压等抖动),背景环境(室内室外) 2.说话者生物干扰音素 例如: 语速,音量,音高,当然还有生物问题 既发声器官的状态(年龄,感冒发炎等) 3.文化因素,发音风格,饮食环境下的声喉状态 4. 以上1+2+3 等多重情况叠加下的混合干扰 从以上提及的各个音素来看,理想很丰满,现实很骨感。 不管是asr识别还是声纹识别,还是其他音频方向的算法处理,毫无疑问,困难重重。 花了近6个月,踩了无数个小坑之后,在不处理噪声的干扰情况下, 对中国人的普通话,音频性别识别终于达到85%的准确率。 由于是先验算法,纯c不采用任何第三方库的干净算法实现, 可以随时调参优化算法,适配不同的情况。 没有采用深度学习的方案去做特征工程。 这里要说一下,为什么不用深度学习的方法, 以及使用深度学习方法的一些思考。
阅读全文