静音检测算法优化版本

以下是一个基于频域特征的音频静音检测算法示例,该算法结合了多个特征并基于自适应阈值进行判断,能够更好地适应不同的噪声和音频质量:

#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>

constexpr int kSampleRate = 16000;    // 采样率
constexpr int kFrameSize = 320;       // 帧大小(20ms)
constexpr int kSilenceDurationThreshold = 400;   // 静音时长阈值(ms)
constexpr double kSilenceEnergyFactor = 0.4;     // 静音能量因子
constexpr double kZcrFactor = 3.5;               // 过零率因子
constexpr double kSpectralFlatnessFactor = 4.5;  // 能量谱平坦度因子
constexpr double kSpectralCentroidFactor = 1.1;  // 频谱中心性因子

double ComputeShortTimeEnergy(const std::vector<short>& frame) {
    long long energy_sum = 0;
    for (const auto& sample : frame) {
        energy_sum += sample * sample;
    }
    return static_cast<double>(energy_sum) / kFrameSize;
}

double ComputeZeroCrossingRate(const std:

猜你喜欢

转载自blog.csdn.net/huapeng_guo/article/details/130066823