当麦克风输入大于特定阈值时,我需要一个程序来捕捉事件。所以我可能需要经常听麦克风,并以某种方式测量声音幅度?是否有可能在Delphi 7中做到这一点?
答案 0 :(得分:4)
我建议您使用 BASS音频库 http://www.un4seen.com/bass.html
BASS是一个音频库..为开发人员提供强大的流(MP3 .. OGG ..)功能。全部在一个小的DLL中,大小不超过100KB。
它非常容易使用,正如这个简单的简约程序所示。它基于德尔福的BASS记录测试,包含在BASS附带的样本中。查看它是为了完整保存和播放录制的音频。
只需编译并运行它。
program rec;
uses Windows, Bass;
(* This function called while recording audio *)
function RecordingCallback(h:HRECORD; b:Pointer; l,u: DWord): boolean; stdcall;
var level:dword;
begin
level:=BASS_ChannelGetLevel(h);
write(''#13,LoWord(level),'-',HiWord(level),' ');
Result := True;
end;
begin
BASS_RecordInit(-1);
BASS_RecordStart(44100, 2, 0, @RecordingCallback, nil);
Readln;
BASS_RecordFree;
end.
答案 1 :(得分:2)
当然可以。波浪声就是这个,每个时刻声波的振幅。体积与样品的RMS(均方根)相符。
只需获取您使用的任何音频库,获取波形数据并计算此值。也许只是简单地使用移动平均线就已经足够了(让RMS无所适从)。
Delphi 7可以为此做好,并附带mmsystem标头。可以使用更高级的组件(我使用了lakeofsoft lib一段时间),但如果这是您唯一的音频操作,那可能会有点过分。
答案 2 :(得分:1)
我建议您查看AudioLab