3

当音量达到特殊水平时,我已经有了“开始录音”。但它有一个缺点。当它开始录音时,它已经错过了 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 秒。类似的东西,但在这里我不知道如何实现。所以欢迎任何实用的建议。

谢谢克里斯

4

1 回答 1

0

就像你说的,连续录制一个短的 1/2 秒块,当达到功率水平并开始无限期录制时,它会无限期地扩展。录制停止时,应包括丢失的 1/2 秒开头。

于 2010-07-30T19:39:40.250 回答