如何在Delphi 7中收听麦克风并检测声音响度

时间:2011-05-10 14:42:03

标签: delphi audio delphi-7 microphone

当麦克风输入大于特定阈值时,我需要一个程序来捕捉事件。所以我可能需要经常听麦克风,并以某种方式测量声音幅度?是否有可能在Delphi 7中做到这一点?

3 个答案:

答案 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

相关问题