我正在写小型程序,需要检测声级并写入,如果级别高于设置中的设置,我通过portaudio完成声音捕获,通过libvorbis进行压缩,但程序的一部分未完成,我坚持下去,我需要检测原始pcm数据的声级,我对pcm数据不了解,并且不知道任何音频分析/处理算法,我们是否有现成的c/C++库可以做到这一点?或者是一些可以在c/C++中实现的简单算法?检测原始pcm数据的声音水平
3
A
回答
1
看看Speex和WebRTC库......它们都有语音活动检测器。如果您正在寻找衡量声级的方法,则需要确定线性或对数级指标。 PCM的通用格式是-32768至32767范围(16位短)...您可以做的一件简单的事情就是简单地总结样本在一个时间段内的绝对值并除以样本数以得到平均值该阶段的水平。
3
这取决于你如何定义“声级”,它可以像检测一个峰一样简单,并且可以按照以下行业标准/建议来获得响度级。
PCM数据通常是有符号值的流:8位PCM时为0x00..0xFF,16位PCM为-0x8000 .. + 0x7FFF,浮点值时为-1.0 .. + 1.0 。
最简单的方法是通过查找给定时间范围内的最大绝对值来检测简单峰。之后您可以将log10
转换为分贝。
+0
当前我实施了在时间范围内寻找最大值(s)但是这种工作几乎不可用 – sss123next 2013-02-21 13:26:41
相关问题
- 1. android:检测声音水平
- 2. 检测原始音频(PCM)中的特定频率/音调
- 3. 如何检测原始声音文件中的声音
- 4. 测量音频噪声水平
- 5. 使用核心音频从PCM原始数据获取电平值
- 6. 用QPython audiostream原始PCM音频播放
- 7. C# - 如何检测音频混音器的声音峰值水平?
- 8. 如何将噪声添加到PCM原始数据中
- 9. 使用GStreamer播放原始PCM数据
- 10. 检测输入音频水平android
- 11. 水平检测
- 12. IOS声音处理,电平检测
- 13. Java - 将16位单声道PCM原始数据转换为立体声
- 14. 原始声音播放
- 15. 生成声音 - PCM(Android - Java)
- 16. 如何检测原始数据类型?
- 17. 检测声音Javascript
- 18. MATLAB中的声音输出水平
- 19. 检测声音的CWT数据中的“音符”
- 20. Osx:Core Audio:使用AudioToolbox解析原始压缩音频数据(获取PCM)
- 21. 如何用PCM音频中的IMediaSample检测静音
- 22. 在Android中检测声音或语音的开始
- 23. 安卓手机转换声音文件的原始数据
- 24. Qt的声子打开原始音频数据文件
- 25. Spotify是以原始PCM格式提供的API API音频吗?
- 26. PCM原始字节[]在Android上的音频
- 27. 对于TTS更原始的声音
- 28. 水平检测滚动uitableviewCell
- 29. Libgdx检测水平滚动
- 30. 检测音频中的特定声音
我已经签了16位48khz pcm,据我所知我需要总计48000个样本,并与级别进行比较?在一秒钟内检测水平? – sss123next 2013-02-21 13:24:54
当然,你可以选择你想要的任何时间段......一秒钟就可以。记得总结>绝对<值... – mark 2013-02-21 13:28:41
我会尝试和回复 – sss123next 2013-02-21 13:31:31