у меня уже есть «запись голоса», когда громкость достигает особого уровня.
Но у этого есть один недостаток. Когда он начинает запись, он уже пропустил 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 секунды. Нечто подобное, но здесь я не знаю, как реализовать. Так что любые практические предложения приветствуются.
спасибо, Крис