33 lines
857 B
C#
Raw Permalink Normal View History

2025-10-11 18:25:59 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XiaoZhiSharp.Utils
{
public class AudioHelper
{
/// <summary>
/// 静音检测
/// </summary>
public static bool IsAudioMute(byte[] buffer, int bytesRecorded)
{
double rms = 0;
int sampleCount = bytesRecorded / 2; // 每个样本 2 字节
for (int i = 0; i < sampleCount; i++)
{
short sample = BitConverter.ToInt16(buffer, i * 2);
rms += sample * sample;
}
rms = Math.Sqrt(rms / sampleCount);
rms /= short.MaxValue; // 归一化到 0 - 1 范围
double MuteThreshold = 0.01; // 静音阈值
return rms < MuteThreshold;
}
}
}