directshow学习之语音程序有待增强的地方
2010-06-07 08:23
302 查看
1。 语言聊天时的噪音过滤 noise suppression ,Acoustic echo cancellation ?
我现在这个程序好像噪音很大的, 还有点回音,特别是声音放大之后。一直想找一个免费的filter能出过滤一下就不错了。可是
就是找不到,DMO下面有两个microsoft noise suppression 和system noise suppression
filter,我在graphedit里面试了一下不过都不能正常
工作,不知道是不是什么设置不对。我看了网上的资料,只有msdn上一个blog里面提到vista里面的功能使用,也不详细,没有这个的资料没法用了。
网上也有看到有些库,不过都是要钱的。有的资料说是人声频率比较低,可以通过这个特点来过滤噪音,我参考kmplayer里面用法,把很多高频的声音截取
不过还是不能过滤掉杂音,反倒是人声有点变调了。谁知道有什么简便的方法可以做到的也可以告诉我吧。
网上抄的一些说明:
Directshow Noise Suppression Filter ( DMO type ).
Input and output of each filter has two types ( 8Khz, 16bit, mono PCM
and 16KHz, 16bit, mono PCM ).
The noise suppression function removes noise from a 10 ms block of
16-bit speech data sampled at 8 kHz. This function is primarily a
Frequency Domain algorithm in which a Fast Fourier Transform (FFT) is
performed on each 10 ms block of data to analyze the frequency
components of the signal. Thereafter, a Voice Activity Detection (VAD)
algorithm is used to determine if the signal segment is speech or noise.
The noise suppression algorithm maintains a profile of the noise and
updates it every time a noise segment is detected by the VAD. Every
frequency band of the input signal is then scaled according to the
proportion of noise contained in that frequency band, thereby causing a
significant degree of noise suppression in the resultant signal. The
Algorithm thus adapts to changes in the nature and level of noise and
does not require a separate noise reference input.
2. 静音抑制 voice-activity-detection
就是聊天时,如果一方不说话,就是没有声音的话,就可以免去发送rtp数据包了。这样可以节省很多带宽,因为很多时候人都是不说话的。
这个也没发现有什么样的库,vista里的noise suppression 说是带了的,也没法测试。不过自己写代码检查audio
capture出来的pcm音频数据,应该也不是很复杂吧。
pcm数据结构应该还是很简单的。没有实现这个功能。
3. rtcp包的处理。
我偷工减料没有做这个了,其实应该是可以通过处理这个包来控制音频的属性的。比如网络负担比较重的时候可以调整把音频压缩率调大一点。播放时动态控制音频
属性等。
我现在是把编码固定为mp3了,其实通过rtcp包控制来设置不同pcm,wma等等都是可以实现的。写起来代码也不会很复杂吧,就是有点繁琐。
我现在这个程序好像噪音很大的, 还有点回音,特别是声音放大之后。一直想找一个免费的filter能出过滤一下就不错了。可是
就是找不到,DMO下面有两个microsoft noise suppression 和system noise suppression
filter,我在graphedit里面试了一下不过都不能正常
工作,不知道是不是什么设置不对。我看了网上的资料,只有msdn上一个blog里面提到vista里面的功能使用,也不详细,没有这个的资料没法用了。
网上也有看到有些库,不过都是要钱的。有的资料说是人声频率比较低,可以通过这个特点来过滤噪音,我参考kmplayer里面用法,把很多高频的声音截取
不过还是不能过滤掉杂音,反倒是人声有点变调了。谁知道有什么简便的方法可以做到的也可以告诉我吧。
网上抄的一些说明:
Directshow Noise Suppression Filter ( DMO type ).
Input and output of each filter has two types ( 8Khz, 16bit, mono PCM
and 16KHz, 16bit, mono PCM ).
The noise suppression function removes noise from a 10 ms block of
16-bit speech data sampled at 8 kHz. This function is primarily a
Frequency Domain algorithm in which a Fast Fourier Transform (FFT) is
performed on each 10 ms block of data to analyze the frequency
components of the signal. Thereafter, a Voice Activity Detection (VAD)
algorithm is used to determine if the signal segment is speech or noise.
The noise suppression algorithm maintains a profile of the noise and
updates it every time a noise segment is detected by the VAD. Every
frequency band of the input signal is then scaled according to the
proportion of noise contained in that frequency band, thereby causing a
significant degree of noise suppression in the resultant signal. The
Algorithm thus adapts to changes in the nature and level of noise and
does not require a separate noise reference input.
2. 静音抑制 voice-activity-detection
就是聊天时,如果一方不说话,就是没有声音的话,就可以免去发送rtp数据包了。这样可以节省很多带宽,因为很多时候人都是不说话的。
这个也没发现有什么样的库,vista里的noise suppression 说是带了的,也没法测试。不过自己写代码检查audio
capture出来的pcm音频数据,应该也不是很复杂吧。
pcm数据结构应该还是很简单的。没有实现这个功能。
3. rtcp包的处理。
我偷工减料没有做这个了,其实应该是可以通过处理这个包来控制音频的属性的。比如网络负担比较重的时候可以调整把音频压缩率调大一点。播放时动态控制音频
属性等。
我现在是把编码固定为mp3了,其实通过rtcp包控制来设置不同pcm,wma等等都是可以实现的。写起来代码也不会很复杂吧,就是有点繁琐。
相关文章推荐
- VS2010 C++学习(5):基于DirectShow的视频预览录像程序
- 【算法学习】【图像增强】【Retinex】White Patch Retinex 程序解读
- 【杨勇】小论文MATLAB实验程序主要部分代码--语音增强--stsa_weuclid1
- C语言学习笔记----伊能C语言学习笔记----变量可以在程序的三个地方声明
- aspcms做站学习点滴(aspcms程序中的标签定义在什么地方)
- Directshow学习笔记五-----一个简单的视频播放程序(个人学习总结,仅供参考)
- VS2010 C++学习(5):基于DirectShow的视频预览录像程序 分类: VC++ DirectX 2014-01-20 11:14 953人阅读 评论(0) 收藏
- 学习之路——用callback增强链表模块来实现命令行菜单小程序V2.8
- VS2010 C++学习(5):基于DirectShow的视频预览录像程序
- 语音信号增强学习分享
- 学习一篇关于MMSE的语音信号增强的算法
- VS2010 C++学习(5):基于DirectShow的视频预览录像程序
- SD交货单修改程序 的增强地方MV50AFZ1
- Cocos2d-x的学习 程序是如何进入到自己的代码的 Application有趣的地方
- VS2010 C++学习(5):基于DirectShow的视频预览录像程序
- DirectShow 学习笔记< 一> -- 第一个程序
- 语音增强--程序
- 专访微软邓力:语音识别与非监督深度学习、增强学习、词嵌入、类脑智能
- 语音增强的几个基本算法
- 调试hadoop程序时应注意的地方