前面有提到音频采样算法: WebRTC 音频采样算法 附完整C++示例代码 简洁明了的插值音频重采样算法例子 (附完整C代码) 近段时间有不少朋友给我写过邮件,说了一些他们使用的情况和问题. 坦白讲,我精力有限,但一般都会抽空回复一下. 大多数情况,阅读一下代码就能解决的问题, 也是要尝试一下的. 没准,你就解决了呢? WebRtc的采样算法本身就考虑到它的自身应用场景, 所以它会有一些局限性,例如不支持任意采样率等等. 而简洁插值的这个算法, 我个人也一直在使用,因为简洁明了,简单粗暴. 我自…
前几天无意间看到一个项目rnnoise. 项目地址: https://github.com/xiph/rnnoise 基于RNN的音频降噪算法. 采用的是 GRU/LSTM 模型. 阅读下训练代码,可惜的是作者没有提供数据训练集. 不过基本可以断定他采用的数据集里,肯定有urbansound8k. urbansound8k 数据集地址: https://serv.cusp.nyu.edu/projects/urbansounddataset/urbansound8k.html 也可以考虑采用用作…
降噪是音频图像算法中的必不可少的. 目的肯定是让图片或语音 更加自然平滑,简而言之,美化. 图像算法和音频算法 都有其共通点. 图像是偏向 空间 处理,例如图片中的某个区域. 图像很多时候是以二维数据为主,矩形数据分布. 音频更偏向 时间 处理,例如语音中的某短时长. 音频一般是一维数据为主,单声道波长. 处理方式也是差不多,要不单通道处理,然后合并,或者直接多通道处理. 只是处理时候数据参考系维度不一而已. 一般而言, 图像偏向于多通道处理,音频偏向于单通道处理. 而从数字信号的角度来看,也可…
mser 的全称:Maximally Stable Extremal Regions 第一次听说这个算法时,是来自当时部门的一个同事, 提及到他的项目用它来做文字区域的定位,对这个算法做了一些优化. 也就是中文车牌识别开源项目EasyPR的作者liuruoze,刘兄. 自那时起就有一块石头没放下,想要找个时间好好理理这个算法. 学习一些它的一些思路. 因为一般我学习算法的思路:3个做法, 第一步,编写demo示例. 第二步,进行算法移植或效果改进. 第三步,进行算法性能优化. 然后在这三个过程中…
之前有大概介绍了音频采样相关的思路,详情见<简洁明了的插值音频重采样算法例子 (附完整C代码)>. 音频方面的开源项目很多很多. 最知名的莫过于谷歌开源的WebRTC, 其中的音频模块就包含有 AGC自动增益补偿(Automatic Gain Control)自动调麦克风的收音量,使与会者收到一定的音量水平,不会因发言者与麦克风的距离改变时,声音有忽大忽小声的缺点. ANS背景噪音抑制(Automatic Noise Suppression)探测出背景固定频率的杂音并消除背景噪音. AEC是回…
前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用于评估一定长度音频的音量强度, 而分析之后,很多类似的需求,肯定是做音频增益,提高音量诸如此类做法. 不过在项目实测的时候,其实真的很难定标准, 到底在什么样的环境下,要增大音量,还是降低. 在通讯行业一般的做法就是采用静音检测, 一旦检测为静音或者噪音,则不做处理,反之通过一定的策略进行处理. 这里就涉及到两个算法,一个是静音检测,一个是音频增益. 增益其实没什么好说的,类似于数据归一化拉伸的做法. 静音检…
转自:https://www.cnblogs.com/cpuimage/p/8908551.html 前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用于评估一定长度音频的音量强度, 而分析之后,很多类似的需求,肯定是做音频增益,提高音量诸如此类做法. 不过在项目实测的时候,其实真的很难定标准, 到底在什么样的环境下,要增大音量,还是降低. 在通讯行业一般的做法就是采用静音检测, 一旦检测为静音或者噪音,则不做处理,反之通过一定的策略进行处理. 这里就涉及到…
众所周知, 图像方面的3A算法有: AF自动对焦(Automatic Focus)自动对焦即调节摄像头焦距自动得到清晰的图像的过程 AE自动曝光(Automatic Exposure)自动曝光的是为了使感光器件获得合适的曝光量 AW自动白平衡(Automatic White Balance)白平衡的本质是使白色物体在任何光源下都显示白色 前面的文章也有提及过,在刚开始做图像算法的时候,我是先攻克的自动白平衡算法. 后来攻克自动曝光的时候,傻啦吧唧的,踩了不少坑. 我相信一定不止我一个,一开始的时…
前言 2017年底时候写了这篇<集 降噪 美颜 虚化 增强 为一体的极速图像润色算法 附Demo程序> 这也算是学习过程中比较有成就感的一个算法. 自2015年做算法开始到今天,还有个把月,就满五年了. 岁月匆匆,人生能有多少个五年. 这五年里,从音频图像到视频,从传统算法到深度学习,从2D到3D各种算法几乎都走了一个遍. 好在,不论在哪个领域都能有些许建树,这是博主我自身很欣慰的事情. 虽然有所间断但是仍然坚持写博客,并且坚持完整开源分享. 目的就是为了帮助那些一开始跟我一样,想要学习算法的…
绝大数人都知道mp3格式编码,以及aac,amr等压缩格式编码. 而在语音通信界有一个强悍的音频格式编码opus. 经过实测,压缩比最高可以达到1:10. 100KB 压缩后 10KB 虽然是有损压缩, 但是根据实际对比试听, 几乎听不出差别. 而且还原度还比mp3高,压缩比也比mp3高. 用来压缩传输音频,绝对是一大杀器. 项目官方地址: https://opus-codec.org/ 维基上的描述: Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由互联网工程任务组(IE…
2年前在学习图像算法的时候看到一个文档倾斜矫正的算法. 也就是说能将一些文档图像进行旋转矫正, 当然这个算法一般用于一些文档扫描软件做后处理 或者用于ocr 文字识别做前处理. 相关的关键词: 抗倾斜 反倾斜  Deskew 等等. 最简单算法实现思路,采用 霍夫变换(Hough Transform)进行直线检测, 当然也可以用霍夫变换检测圆. 在倾斜矫正算法中,自然就是检测直线. 通过对检测出来的直线进行角度判断, 一般取 认可度最高的几条直线进行计算, 最后求取均衡后的角度值. 进行图像角度…
在前面的文章,我提到过VSCO Cam 的胶片滤镜算法实现是3d lut. 那么3d lut  到底是个什么东西呢? 或者说它是用来做什么的? 长话短说,3d lut(全称 : 3D Lookup table )它是通过建立一个颜色映射表,对图像的色调进行重调的算法. 有用于摄像机的效果美化润色,例如一些所谓的数码相机之类的. 也有用于影视后期调色,渲染影视作品的颜色基调等等. 简单的说,你想要把图片上的一些颜色通过你自己的预设给替换掉. 例如红色换成白色,白色换成绿色. 当然这在现实中操作起来…
在讲算法之前,上一些前人的资料. http://coding-geek.com/how-shazam-works/ https://laplacian.wordpress.com/2009/01/10/how-shazam-works/ http://royvanrijn.com/blog/2010/06/creating-shazam-in-java/ 当然历史也有点久远了,如果你有心去百度一下 shazam 算法, 你会发现这类的博客也是不少的. 当然这显得我现在写这个,好像有点多余. 这里…
WebRTC提供一套音频处理引擎, 包含以下算法: AGC自动增益控制(Automatic Gain Control) ANS噪音抑制(Automatic Noise Suppression) AEC是声学回声消除(Acoustic Echo Canceller for Mobile) VAD是静音检测(Voice Activity Detection) 这是一套非常经典,以及值得细细品阅学习的音频算法资源. 在前面分享的博文,也有提及音频相关知识点. 一些算法优化的知识点,由于历史的原因, W…
布谷鸟是比较新的启发式最优化算法,但其与传统的遗传算法,退火算法等相比,被证明收敛速度更快,计算效率更高! 文章目录 本文诞生的缘由 布谷鸟算法思想简介 更新位置的方式 莱维飞行 局部随机行走 抛出个栗子 一些参数的建议 完整的python实现 运行结果 参考文献 本文诞生的缘由 由于布谷鸟算法比较新,所以国内外的网上对于该算法的介绍都比较少,虽然算法整体的思想看起来简单,但真正落实到实践时往往发现有些细节还是不甚清楚.令人尴尬的是,我搜索了国内外对于布谷鸟算法的教程,这些教程恰恰点到算法思想上…
高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop.GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次.这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同.高斯平滑也用于计算机视觉算法中的预先处理阶段,以增强图像在不同比例大小下的图像效果(参见尺度空间表示以及尺度空间实现). 从数学的角度来看,图像的高斯模糊过程就是图像与…
前面写过关于傅里叶算法的应用例子. <基于傅里叶变换的音频重采样算法 (附完整c代码)> 当然也就是举个例子,主要是学习傅里叶变换. 这个重采样思路还有点瑕疵, 稍微改一下,就可以支持多通道,以及提升性能. 当然思路很简单,就是切分,合并. 留个作业哈. 本文不讲过多的算法思路,傅里叶变换的各种变种, 绝大多数是为提升性能,支持任意长度而作. 当然各有所长, 当时提到参阅整理的算法: https://github.com/cpuimage/StockhamFFT https://github.…
单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件) webrtc的音频处理模块分为降噪ns,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到回声消除等较为复杂的模块时,最好使用全部的音频处理模块二不要单独编译其中一部分以免浪费宝贵的时间. 但是音频降噪部分较为简单,用起来也就几个函数,除了需要传入的音频数据…
上篇(基于sinc的音频重采样(一):原理)讲了基于sinc方法的重采样原理,并给出了数学表达式,如下:                  (1) 本文讲如何基于这个数学表达式来做软件实现.软件实现的细节很多,这里主要讲核心部分.函数srcUD()和filterUD()就是实现的主要函数(这两个函数是在源码基础上作了一定的改动,核心思想没变).srcUD()是实现一帧中点的重采样,一个点一个点的做.filterUD()被srcUD()调用.数学表达式就体现在函数filterUD()里.粗看肯定会…
1. mybatis下数据源开发工作 2. 数据源与DAO的关系原理模型 3. 为什么要配置SqlSessionTemplate类的bean 4. 多数据源应用测试 1. mybatis下数据源开发工作 在properties文件中配置两个数据库连接参数 demo项目使用的是hikari数据源,配置 数据库地址,用户名,密码,数据库驱动等参数,在DataSource1Config类中通过@ConfigurationProperties(prefix = "spring.datasource.hi…
近一段时间在图像算法以及音频算法之间来回游走. 经常有一些需求,需要将音频进行采样转码处理. 现有的知名开源库,诸如: webrtc , sox等, 代码阅读起来实在闹心. 而音频重采样其实也就是插值算法. 与图像方面的插值算法没有太大的区别. 基于双线性插值的思路. 博主简单实现一个简洁的重采样算法, 用在对采样音质要求不高的情况下,也是够用了. 编解码库采用dr_wav https://github.com/mackron/dr_libs/blob/master/dr_wav.h 近期有点强…
前面提及到<大话音频变声原理 附简单示例代码>与<声音变调算法PitchShift(模拟汤姆猫) 附完整C++算法实现代码> 都稍微讲过变声的原理和具体实现. 大家都知道,算法从实现到最后工程应用,中间的环节和问题特别多. 尤其是编码的架构设计,好的数据结构和代码逻辑封装肯定是可复用,组件化的. 前几天写完<音频识别算法思考与阶段性小结>的时候, 我也提及到了. 会做一些算法编码优化相关的分享. 而有时候我总觉得文字表达很苍白, 所以我尽可能地把代码写得简洁易懂, 一方…
近期比较忙, 抽空出来5.1开源献礼. 但凡学习音频降噪算法的朋友,肯定看过一个算法. <<语音增强-理论与实践>> 中提及到基于对数的最小均方误差的降噪算法,也就是LogMMSE. 资料见: <<Speech enhancement using a minimum  mean-square error log-spectral amplitude estimator.>> -----Ephraim, Y. and Malah, D. (1985) 之前也是…
webrtc的音频处理模块分为降噪ns和nsx,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到回声消除等较为复杂的模块时,最好使用全部的音频处理模块,不要单独编译其中一部分以免浪费宝贵的时间. 但是音频降噪,增益功能较为简单,还能直接使用.这部分源码是我从webrtc中抠出来,单独放到VS2010工程下使用.其中包括重采样以及滤波,降噪功能.这部分是直接复用之前的博文单独使用webrtc降噪…
我在前面的文章<音频开源代码中重采样算法的评估与选择>中说过sinc方法是较好的音频重采样方法,缺点是运算量大.https://ccrma.stanford.edu/~jos/resample/ 给出了sinc方法的原理文档和软件实现.以前是使用这个算法,没太关注原理和实现细节.去年(2020年)由于项目的需要和组内同学把这个算法的原理和软件实现细节搞清楚了.本文先讲讲sinc方法的原理,后面文章会讲讲软件实现的细节. 1,sinc函数和信号的采样与重建 在数字信号处理中,sinc函数定义为:…
在一些特殊情况下,经常需要依据图像中的人脸,对图片进行倾斜矫正. 例如拍照角度幅度过大之类的情况,而进行人工矫正确实很叫人头大. 那是不是可以有一种算法,可以根据人脸的信息对图片进行角度的修复呢? 答案肯定是确认的. 再次例如,想要通过人脸的特征对人物的表情和情绪进行精准判断, 那么这个时候如果能确保人脸没有发现严重倾斜,无疑对准确率判断有一定的帮助. 那么假如一张图片只有一个人脸,其实很好判断,通过眼睛的位置的坐标,根据两眼的直线角度, 就可以计算出修正的角度. 然后旋转图片到对应角度即可.…
一.包含头文件和库文件 修改CMakeLists # swresample add_library(swresample SHARED IMPORTED) set_target_properties(swresample PROPERTIES IMPORTED_LOCATION ${FF}/libswresample.so) 更新target_link_libraries target_link_libraries( # Specifies the target library. native-…
在几年前的时候在做修图APP算法的时候, 曾经一度想过对3D Lut 预设数据进行压缩, 主要用于提升用户体验. 关于3d lut算法开源的资源也挺多的,就不多做科普了. 有兴趣的朋友,可以去查阅下ffmepg项目相关实现代码. 最早接触3d lut算法是2014年逆向 VSCO Cam 胶片算法的时候, 当然一开始我也不知道它的算法是3d lut, 是反反复复编写各个版本,算法优化, 直到有一天我突然想起一个常量特别奇怪, 后来有一段时间在看3d lut算法资料的时候,觉得算法特别熟悉. 后来…
很早之前写过<双边滤波算法的简易实现bilateralFilter>. 当时学习参考的代码来自cuda的样例. 相关代码可以参阅: https://github.com/johng12/cudaSamples/tree/master/cudaSamples/3_Imaging/bilateralFilter 由于算法逻辑非常清晰,就不多解释了. 需要补课的,请移步<o(1)复杂度之双边滤波算法的原理.流程.实现及效果.> 代码见:bilateralFilter_cpu.cpp 文件…
人脸检测 识别一直是图像算法领域一个主流话题. 前年 SeetaFace 开源了人脸识别引擎,一度成为热门话题. 虽然后来SeetaFace 又放出来 2.0版本,但是,我说但是... 没有训练代码,想要自己训练一下模型那可就犯难了. 虽然可以阅读源码,从前向传播的角度,反过来实现训练代码, 但是谁有那个闲功夫和时间,去折腾这个呢? 有的时候还是要站在巨人的肩膀上,你才能看得更远. 而SeetaFace 不算巨人,只是当年风口上的猪罢了. 前年,为了做一个人脸项目,也是看遍了网上各种项目. 林林…