- 博客(72)
- 资源 (7)
- 收藏
- 关注

原创 声场增强demo
//如需转载请注明出处近段时间尝试做了些声场增强的研究,出了个粗糙版的demo,有兴趣的可以感受下。注:PC端头戴式耳机感受更为明显一些。地址:https://pan.baidu.com/s/1ggoR3Dx...
2018-02-11 11:44:14
1276
3

原创 炸麦信号分析
// 如需转载请注明出处 图1. 直播过程中偶发炸麦信号 图2. 人为制作过载信号通过对直播线上环境偶发的炸麦信号分析,时域上并没有发生削波失真,频域上乍看像是高斯白噪。随即,我们做了非限幅保护的信号过载处理,生成信号形态类似,目前怀疑有增益过载的嫌疑,需进一步排查。...
2018-02-08 10:54:29
1467
原创 Comb+All-pass filter组合Reverberation中Comb feedback系数校正--修正版
如需转载请注明出处!当前,介绍或实现Comb+All-pass Filter Revereration的文章有很多,但是由于不严谨的引用和非逻辑性推导,造成Comb feedback系数严重错误,误人视听。本文的主要目的是就Comb feedback的物理推导进行校正声明。首先指出不该犯有严重错误的音频处理权威书籍:DAFX: Digital Audio E
2017-10-18 16:33:25
883
转载 c++对象成员函数返回自身引用时出现的诡异问题及解决办法
list.h (实际上是数据结构顺序表的一个例子,为了展现问题,我简化了部分代码,只留下插入和打印)#includeusing namespace std;class List{public: List(int max_list_size) { max_size=max_list_size; data=new int[max_size];
2017-09-01 17:00:35
1251
原创 automake做工程管理总结
如需转载,请注明出处!最近看了下,网上关于automake使用鱼龙混杂,很多只是给出简单的单一文件编译(以一个main.c为例)。在实际的工程应用中,我们常将代码按照模块进行组织,所以本文将结合多目录automake组织,以一个小例子来进行总结。文件组织目录:examples | -- src | -
2017-08-18 17:27:40
409
转载 C++父子类继承时的隐藏、覆盖、重载
存在父子类继承关系时,若有同名成员函数同时存在,会发生隐藏、覆盖和重载这几种情况。对于初学者也比较容易混淆,为此,我整理了一下我的个人看法,仅供参考。希望对大家理解有帮助,也欢迎指正。1.父子类继承关系: 子类复制父类全部成员 首先,理解父子类的继承关系是怎样发生的。在此基础上就很容易理解它们之间的关系和区别。 每一个类有它自己的成员变量和成员函数,是一个独立的空间
2017-06-08 17:54:40
712
转载 C++设计模式——单例模式
C++设计模式——单例模式问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志。那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,写完日志,再delete,不要告诉我你是这么干的。在C++中,可以构造一个日志模块的
2017-06-08 17:50:02
429
转载 链接与运行时动态库依赖
The -L option supplies a colon-separated library path that is to besearched at LINK TIME for libraries. Thus cc -o foo foo.c -L/usr/local/lib -lfoomeans that either libfoo.a or libfoo.so should b
2017-06-02 17:50:46
479
转载 C++ 回调函数的简单例子
调用端[html] view plain copy//下面的这个_stdcall很重要的 void _stdcall Test(int n, string str) //如果不定义全局变量,而定义在类中 则必须是 静态成员函数 { while(n-->0) coutn" "strendl; }
2017-06-02 15:28:31
1026
转载 回调函数c++实现
Callback最本质的特征包括两点:注册和触发C++中如何将类成员函数作为回调函数使用,必须是静态方法吗?必须是静态成员函数或者全局函数来实现回调函数大概原因是普通的C++成员函数都隐含了一个传递函数作为参数,即this指针,C++通过传递this指针给成员函数从而实现函数可以访问C++的数据成员。由于this指针的原因,使得一个普通成员函数作为回调函数时就会因为隐含
2017-06-02 15:26:25
595
转载 C和C++之间库的互相调用
昨晚有个朋友问我关于在C中调用C++库的问题,今天午饭后,由于脖子痛的厉害而没有加入到我们组的“每天一战”的行列中去,所以正好将C和C++之间的库调用关系做个总结。1.extern "C"的理解:很多人认为"C"表示的C语言,实际并非如此,"C"表示的是一种链接约定,只是因C和C++语言之间的密切关系而在它们之间更多的应用而已。实际上Fortran和汇编语言也常常使用,因为它们也正好符
2017-06-02 10:44:12
472
转载 如何用C语言封装 C++的类,在 C里面使用
本文给出了一种方法。基本思想是,写一个 wrapper文件,把 C++类封装起来,对外只提供C语言的接口,和 C++i相关的都在 wrapper的实现文件里实现。1. apple.h[cpp] view plain copy print? #ifndef __APPLE_H__ #define __APPLE_H_
2017-06-02 10:41:39
2908
转载 动态库(.so)链接静态库(.a)的情况总结
动态库(.so)链接静态库(.a)的情况总结 一般来说在链接时想要使用静态库有三种方法:1、link时加上 -static 选项;当加上 -static选项后,gcc会把所有用到的库都做静态连接。2、link时直接指定想要静态连接的.a文件的绝对路径。优点是除非.a文件不存在,否则肯定有效;缺点也是很明显,拿到其他机器上编译时,.a文件也必须在相同的路径下存放。3、
2017-06-01 18:08:24
594
转载 Linux 依赖动态库 / 静态库的动态态库 / 静态库
一、 依赖动态库的动态库libfun.so依赖动态库libtest.so(libfun.so动态库里的函数intnothing()调用了libtest.so里的intmytest()函数),而main.exe又调用了libfun.so的函数int nothing()。 下面两种方式都能工作:1> 常用的方式g++ -shared -fPIC -o lib
2017-06-01 18:06:37
630
转载 linux下so动态库一些不为人知的秘密(中)
我们知道linux链接so有两种途径:显示和隐式。所谓显示就是程序主动调用dlopen打开相关so;这里需要补充的是,如果使用显示链接,上篇文章讨论的那些问题都不存在。首先,dlopen的so使用ldd是查看不到的。其次,使用dlopen打开的so并不是在进程启动时候加载映射的,而是当进程运行到调用dlopen代码地方才加载该so,也就是说,如果每个进程显示链接a.so;但是如果发布该程序时候忘记
2017-06-01 16:36:45
502
转载 linux下so动态库一些不为人知的秘密(上)
linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/lslinux-vdso.so.1 => (0x00007fff597ff000)libselinux
2017-06-01 16:35:33
565
转载 Linux 链接库编译与多重依赖
现有如下问题:我们在第三方动态库(比如 boost 库)的基础上,开发了自己的动态库供公司内部项目使用。在使用自己的这个动态库的时候,该如何进行编译呢?即,依赖链条是这样的情况下:程序–(依赖)–>libA.so–(依赖)–>libB.so该如何进行编译。为了研究这个问题,我们建立一个目录结构,写几个简单程序来模拟一下。以下内容将从构建动态库开始,一步步展示如何达成
2017-06-01 16:33:42
921
转载 关于C语言的fprintf与fwrite使用区别
C语言把文件看作一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称为文本(text)文件,它的每个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内在中的存储形式原样输出到磁盘上存放。fprintf(fp, "%d", buffer); 是将格式化的数据写入文件fp
2017-05-26 16:59:11
583
原创 搭建音视频播放架构
经过几个月努力,目前已成功搭建起音视频播放架构基础稳定版。目前的架构主要支持以下几个特性:1. 直播延迟追帧,消除累计延迟2. 支持hls多分辨率切换,无缝平滑过渡(ffmpeg hls不支持分辨率切换,只能播放m3u8首个program,需设计实现ffmpeg底层协议)3. 支持hls起播设置初始分辨率4. 抗网络抖动内部缓冲机制5. 基于数据回调的白盒I/O6. 视
2017-05-23 09:51:24
549
转载 H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
一、MP4格式基本概念MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二、MP4封装格式核心概念1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of audio-visual objects Part 12
2017-04-26 17:00:28
909
转载 使用ffmpeg编码时,如何设置恒定码率,并控制好关键帧I帧间隔
1. 大家在使用ffmpeg进行视频编码时,使用-b命令,想控制比特率,却发现结果并没有如我们设置所愿,通过码流分析器观察视频码流,码率的波动还是很大的,ffmpeg控制的并不好,这时候,我们可以通过以下命令解决: -maxrate biterate -minrate biterate -bf 1 -b_strategy 0其中 -maxrate、-minrate为
2017-03-25 15:49:07
6884
原创 依赖静态库,编译生成动态库
如需转载请注明出处!直入主题,目标是依赖静态库,编译动态库,最终生成二进制文件。文件目录如下:文件内容组织:add.c#include "add.h"int add(int a, int b) { int c = a + b; return c;}add.h#ifndef __ADD__#define __AD
2017-03-09 18:50:34
6976
1
转载 python函数参数引用传递
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副
2016-12-08 09:52:42
983
原创 Ubuntu loop login解决方法
如需转载请注明出处!最近在Ubuntu上用到MXNet做些实验,本来为了GPU加速运算安装了CUDA,从此入坑......重新登陆Ubuntu发现Unity登陆使用陷在loop login,输入密码回到登陆界面,无限反复。通过Ctrl+Alt+F1进入tty下查看 /home/.xsession-error,发现并非PATH路径引入非法值造成。而且尝试了网上种种Xauthority
2016-12-07 14:38:54
3745
原创 基于内容-基于音频特征的音频检索
如需转载请注明出处!一. 算法可用性1. 能够由片段识别主体2. 检索准确率高3. 抗噪性强 二. 算法基本原理 离线阶段,对音频数据库中所有音频样本提取指纹,构建hash table;在线阶段,通过对待查询音频提取相同规则指纹并构建hash,在hash table中查找指纹匹配,并通过一定的规则进行匹配度量。良好的指纹特征包含以下几个特性:(1) 时
2016-10-08 10:12:44
6114
1
原创 Comb+All-pass filter组合Reverberation中Comb feedback系数校正
如需转载请注明出处!当前,介绍或实现Comb+All-pass Filter Revereration的文章有很多,但是由于不严谨的引用和非逻辑性推导,造成Comb feedback系数严重错误,误人视听。本文的主要目的是就Comb feedback的物理推导进行校正声明。首先指出不该犯有严重错误的音频处理权威书籍:DAFX: Digital Audio Effects
2016-05-19 13:24:04
1526
原创 MDF结合Learning rate adjust应用
如需转载请注明出处!本文将结合speex AEC MDF与learning rate adjust进行总结。 1. 近端信号经过陷波器(notchfilter)处理去除直流分量存入input[]中,陷波器仿真如图所示 2. 对input[]信号进行预加重处理3. 远端信号经过预加重处理存入x[]后半部分中,x[]前半部分存储的上一帧信号4. 将X[]中M
2016-04-27 18:49:46
2016
原创 NLMS及MDF AEC中核心理论点突破
如需转载请注明出处。本文从数学和物理意义上阐明NLMS及频域MDF AEC中步长更新的深层理论含义。以speex AEC为例,以回声泄露因子来计算得到最优步长。r = st->leak_estimate*st->Yf[i]; // st->leak_estimate表示回声泄露因子; st->Yf[i] 表示估计回声的频域功率e = st->Rf[i]+1; /
2016-04-25 17:41:29
3637
原创 语音增强算法研究系列(四):非平稳噪声消除
如需转载,请注明出处!创建CSDN博客专栏的流程过于繁琐,为了节省时间,以系列文章的方式总结对语音增强算法的研究,主要包含语音降噪与回声消除算法。 参考文献:Speech enhancement for non-stationary noise environments作者: Israel Cohen核心算法1. OM-LSA (Optimally-Modi
2016-03-09 14:28:39
9188
5
原创 语音增强算法研究系列(三):基于先验信噪比的音频降噪
如需转载,请注明出处!创建CSDN博客专栏的流程过于繁琐,为了节省时间,以系列文章的方式总结对语音增强算法的研究,主要包含语音降噪与回声消除算法。参考文献:Speech Enhancement Based on A Priori Signal to Noise Estimation作者: Pascal Scalart & Jozue Vieira FiLHO
2016-03-09 11:48:18
3460
1
原创 语音增强算法研究系列(二):MMSE-LSA 音频降噪
如需转载,请注明出处!创建CSDN博客专栏的流程过于繁琐,为了节省时间,以系列文章的方式总结对语音增强算法的研究,主要包含语音降噪与回声消除算法。MMDE-LSA: 参考文献:Speech Enhancement Using a Minimum Mean-Square Error Log-Spectral Amplitude Estimator
2016-03-09 11:31:26
7977
原创 语音增强算法研究系列(一):MMSE-STSA 音频降噪
如需转载,请注明出处!创建CSDN博客专栏的流程过于繁琐,为了节省时间,以系列文章的方式总结对语音增强算法的研究,主要包含语音降噪与回声消除算法。MMDE-STSA: 参考文献:Speech Enhancement Using a Minimum Mean-Square Error Short-Time Spectral Amplitude Estimator作者:
2016-03-09 10:54:02
10199
原创 音质检测的算法创新与实现
如需转载请注明出处!近来做音质检测相关的研究工作,预期以算法自动筛查的方法过滤掉大规模音频库中的参数劣质音频,并作为后续新上传音频的音质检测门槛,最终在一定程度上保障参数优质音频。独创了音质检测算法(至今已有的资料还未看到有相同或相似算法),通过本地小规模音频库检测,性能优异(召回率=100%, 正确率=100%)目前该音质检测系统覆盖范围:1. 量化精度低音频,
2016-02-26 14:53:19
3245
1
转载 c语言 float 保留小数点后两位数字
挺实用的小技巧。float sp = 36.51647;sp=( (float)( (int)( (sp+0.005)*100 ) ) )/100;转载地址:http://blog.163.com/szliug@yeah/blog/static/1417740192013429344042/
2016-02-14 15:24:18
35760
原创 FFT变换中的频谱泄露问题研究
频谱泄露的最根本原因还在于信号的非周期截断,可以从时域和频域两方面来理解:(1) 从时域上,傅里叶变换的潜在假设为待处理的有限信号为周期性无限信号的周期主体,即假设原始信号为当前有限信号的无限个周期延拓。因此,举个简单例子。我们截取50HZ 正弦信号的一个周期,其无限延拓就是最原始的50HZ正弦信号,因此一个周期的有限信号即可代表其原始的无限信号;若截取的有限信号不是50HZ信号的整数倍周期,可知该有限信号的无限延拓不可完全的复原原始的50HZ无限信号,其首尾连接处出现断续,从而引入高次谐波分量,产生频谱
2015-12-30 18:31:59
10438
1
原创 求局部极值的小技巧
nbr = np.zeros(len(vec)+1, dtype=bool)nbr[0] = Truenbr[1:-1] = np.greater_equal(vec[1:], vec[:-1])maxmask = (nbr[:-1] & ~nbr[1:])
2015-11-11 11:42:53
1467
原创 基于内容的音频场景分割
如需转载,请注明出处!从音频场景分割的复杂度上来讲,最有难度的为 speech+song VS song 之间的分割。speech+song: 前景为人说话,背景为singing songspeech+song VS song 而且的基本构成都可视为 speech+instrument,场景很为相似,所以在分割上增加很大难度。下表为实验结果:1:m
2015-10-19 18:38:25
2093
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人