iPhone начинает запись звука по голосу - PullRequest
3 голосов
/ 30 июля 2010

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

спасибо, Крис

1 Ответ

0 голосов
/ 30 июля 2010

Как вы сказали, непрерывно записывайте короткий блок 1/2, который увеличивается до бесконечности, когда достигается уровень мощности и начинается неопределенная запись.Когда запись останавливается, она должна включать пропущенное открытие 1/2 с.

...