【发布时间】:2017-03-12 16:32:31
【问题描述】:
我正在尝试为 Windows 编写一个简单的 Babymonitor(个人使用)。 babymonitor 应该只检测麦克风的 dB 级别并在一定音量下触发。
经过一番研究,我找到了 Bass.dll 库,发现了它的函数 BASS_ChannelGetLevel,它很棒,但似乎有局限性,不符合我的需求(峰值等于 DWORD 值)。
在示例中,我发现了一个“几乎”我需要的 livespec 示例。示例使用BASS_ChannelGetData,但是我不太清楚如何处理返回的数组...
我想让它尽可能简单:检测麦克风的音量为 dB 或任何其他值(例如值 0-MAXINT)。
如何使用 Bass.dll 库来做到这一点?
【问题讨论】:
-
检查this
-
DWORD是一个 32 位无符号值。那有什么问题?您说您可以使用介于0和MaxInt之间的值,那么为什么不使用DWORD?哎呀,即使它是 8 位Byte或 8 位Shortint,你也只需要缩放它。我不太明白你的问题。 -
您需要找到降低录音音量的方法,以便检测峰值。
-
如果你耳语已经到极限了,是
High(DWORD),是MaxInt的两倍,所以这不是DLL的问题,是你的音源问题. -
@BenjaminWeiss 如果耳语已经达到极限,那么我想您可能需要在声卡设置中调整(降低)麦克风音量。还要确保禁用声卡的麦克风自动电平调整功能(有时称为麦克风自动增益)。此功能很有用,因此您无需一直直接对着麦克风讲话,因为如果您的嘴不直接面对麦克风,您的讲话将以较低的音量录制,因为声音来自您的嘴巴是有方向的。