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