当音量达到特殊水平时,我已经有了“开始录音”。但它有一个缺点。当它开始录音时,它已经错过了 1/2 秒左右。当说一个句子时,它会错过第一个单词。
任何想法(最好的例子)。
假设我首先开始聆听并获得峰值功率,平均,低通
[recorder updateMeters]; ALPHA = 0.05;
peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
averagePowerForChannel = pow(10, (0.05 * [recorder averagePowerForChannel:0]));
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
averagePassResults = ALPHA * averagePowerForChannel + (1.0 - ALPHA) * averagePassResults;
比我看的声音大到可以录音吗
if (peakPowerForChannel > 0.08f) ) -> start recording
如果它小于一个值,它就会停止
(peakPowerForChannel < 0.01f) -> stop record, start listening again
现在我发现最好的是听峰值功率,而不是平均值。但还是不行。我还考虑过一种临时记录,当峰值足够高时,我可以从现在开始——2 秒。类似的东西,但在这里我不知道如何实现。所以欢迎任何实用的建议。
谢谢克里斯