2010-07-30 63 views
3

当音量达到特殊水平时,我已经有'开始语音录音' 但它有一个缺点,当它开始录音时,它已经错过了1/2秒左右 当说一句,将错过第一个字。iPhone开始通过语音录音

任何想法(最好的例子)。

可以说,我开始第一次听到,并得到peakpower,平均,低通

[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 

现在我发现最好是听的peakpower,而平均。但仍然不好。 我也想过所有的时间都有一种临时记录,当峰值足够高时,我可以从现在开始-2秒。类似的东西,但在这里我不知道如何去实现。因此,欢迎任何实际的建议。

感谢克里斯

+0

hi @christian muller我有同样的问题。如果你发现任何解决方案,你可以与我分享..... [email protected] – Johnykutty 2012-03-15 16:50:14

回答

0

就像你说的,持续录制简短的1/2S块,当达到功率水平和不确定的记录开始无限期其扩大。录音停止时,应该包括丢失的1/2s开头。

+0

理论上我知道,但如何实现?现在我只有 \t recorder = [[AVAudioRecorder alloc] initWithURL:RecordUrlPfad settings:settings error:&error]; 因此,我将如何缓冲以及以后如何作为音频文件提取:)任何来源都将有所帮助 – 2010-07-30 19:41:53