Как слушать микрофон и определять громкость звука в Delphi 7 - PullRequest
1 голос
/ 10 мая 2011

Мне нужна программа для перехвата события, когда вход микрофона становится громче определенного порогового значения.Поэтому, наверное, мне нужно постоянно слушать микрофон и как-то измерять амплитуду звука?Возможно ли это сделать в Delphi 7?

Ответы [ 3 ]

4 голосов
/ 10 мая 2011

Я рекомендую вам использовать BASS Audio Library http://www.un4seen.com/bass.html

BASS - это аудиотека, предоставляющая разработчикам мощные функции потоковой передачи (MP3 .. OGG ..). Все в крошечной DLL, размером менее 100 КБ.

это очень удобно, как показывает эта простая минималистичная программа. Он основан на тесте записи BASS для Delphi, включенном в образцы, поставляемые с 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.
2 голосов
/ 10 мая 2011

Да, конечно.Волновой звук - это как раз амплитуда звуковой волны в каждый момент.Громкость - это среднеквадратичное значение (среднеквадратическое значение) сэмплов.

Просто получите любую используемую аудио библиотеку, получите волновые данные и вычислите это значение.Может быть, даже просто иметь скользящее среднее уже достаточно (избавляя вас от RMS).

Delphi 7 отлично подойдет для этого и поставляется с заголовками mmsystem.Доступны более продвинутые компоненты (я некоторое время использовал библиотеку lakeofsoft), но это может быть излишним, если это ваша единственная звуковая операция.

1 голос
/ 10 мая 2011

Рекомендую посмотреть AudioLab

...