直接上代码了,初略计算正确
-(BOOL)isQuite:(NSData *)pcmData
{
if (pcmData == nil)
{
return NO;
}
long long pcmAllLenght = 0;
short butterByte[pcmData.length/2];
memcpy(butterByte, pcmData.bytes, pcmData.length);//frame_size * sizeof(short)
// 将 buffer 内容取出,进行平方和运算
for (int i = 0; i < pcmData.length/2; i++)
{
pcmAllLenght += butterByte[i] * butterByte[i];
}
// 平方和除以数据总长度,得到音量大小。
double mean = pcmAllLenght / (double)pcmData.length;
double volume =10*log10(mean);//volume为分贝数大小
if (volume >= 45) //45分贝
{
//在说话
}
return yes;
}