我正在尝试为 Windows 编写一个简单的 Babymonitor(个人使用)。 婴儿监视器应该只检测麦克风的 dB 级别并在一定音量下触发。
经过一番研究,我找到了 Bass.dll 库,并发现了它的函数 BASS_ChannelGetLevel
,这个函数很棒,但似乎有限制,不符合我的需求(峰值等于 DWORD 值) )。
在示例中,我找到了一个 livespec 示例,它“几乎”是我需要的。该示例使用 BASS_ChannelGetData
,但我不太知道如何处理返回的数组...
我想让它尽可能简单:检测麦克风的音量为 dB 或任何其他值(例如值 0-MAXINT)。
如何使用 Bass.dll 库来完成此操作?
最佳答案
BASS_ChannelGetLevel
返回上限为 0dB 的值(在本例中返回值为 32768)。如果您调整源级别(声卡设置中较低的麦克风级别),那么它就会正常工作。
另一种方法,如果您想获得无上限的值,请使用 BASS_ChannelGetLevelEx
函数:它返回浮点级别,其中 1 是对应于 BASS_ChannelGetLevel 的 32767 的最大 (0dB) 值,但它可以超过 1 以检测您可能需要的高于 0dB 的声音级别。
我还建议您监视一段时间的声音级别:仅当特定级别存在至少 2-3 秒时才触发(这样您就可以排除误报)。
关于delphi - 带 Bass.DLL 的简单婴儿监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40327832/