录音 - 静音检测

在语言传输中,如果每次都把数据包发送影响流量,可以再发送前对数据包进行静音检测,如果是静音就不发送
原理 :检测数据是否都在一个范围内,统计不在范围内的数据量,就算百分比,如果打印某个指定的比例就认识是静音

//适合8位音频
function TWaveIn.DetectSilence(Data: PByte; DataLen: DWORD): Boolean;
const
THRESHOLD:DWORD =10;//范围
HITPERCENT:DWORD=85;//错误率
var
i:Integer;
dwHit:DWORD;
begin
dwHit:=0;
for i:=0 to DataLen-1 do
begin
if  (Data^ <=THRESHOLD ) or ((Data^ >= (255-THRESHOLD) ))  then
begin
Inc(dwHit);
end;
Inc(Data);
end;
if (dwHit *100 ) >=(HITPERCENT *DataLen) then
Result:=True
else
Result:=False;
end;
posted @ 2011-08-31 17:51  心随灵动  阅读(1335)  评论(0编辑  收藏  举报