如何通过iphone应用程序检测声音峰值功率

如何通过iphone应用程序检测声音峰值功率,iphone,cocos2d-iphone,Iphone,Cocos2d Iphone,全部 我无法解决我的问题,我想当应用程序启动时,它会检测到声音,如果录制声音的峰值功率大于0.9,那么它会录制该声音,如果其峰值电平低于0.9,那么它会停止 如何计算录音的峰值音量。 苹果有一个名为SpeakHere的演示。在里面,你会发现一个如何从音频框架中读取“电平表”的示例 还是这个片段 [soundRecorder updateMeters]; //NSLog(@"Average input: %f Peak input: %f", [soundRecorder averagePower

全部

我无法解决我的问题,我想当应用程序启动时,它会检测到声音,如果录制声音的峰值功率大于0.9,那么它会录制该声音,如果其峰值电平低于0.9,那么它会停止

如何计算录音的峰值音量。

苹果有一个名为SpeakHere的演示。在里面,你会发现一个如何从音频框架中读取“电平表”的示例

还是这个片段

[soundRecorder updateMeters];
//NSLog(@"Average input: %f Peak input: %f", [soundRecorder averagePowerForChannel:0], [soundRecorder peakPowerForChannel:0]);
decibelLabel.text = [[NSString alloc] initWithFormat:@"Decibel %f db", [soundRecorder averagePowerForChannel:0]];
编辑#2

上面的链接清楚地理解了-160的含义。它是最小值,而0是最大值

在您的情况下,您正在寻找(平均功率或峰值功率,由您决定)任何大于0.9的值,然后您可以继续使用以下两个选项:

1) 看看是否(输出+160)>(0.9*160))//也许您希望将0.9调整为其他值

或 2) 查看(输出+160)>144//是否对其进行硬编码


3) 看看是否(输出>-16)//硬编码它

@Gray Tsui,我不明白这个AQMeter上到底在做什么。。b/c在录音中,我想看看仪表的液位。我希望当用户说任何话时,它会自动记录下来,当用户停止说任何话后,它就会停止。。我只需要抄表。。我想您也在使用AVSoundRecorder。[录音机更新表];//NSLog(@“平均输入:%f峰值输入:%f”,[soundRecorder averagePowerForChannel:0],[soundRecorder PeakPower ForChannel:0]);decibelLabel.text=[[NSString alloc]initWithFormat:@“分贝%f db”,[soundRecorder averagePowerForChannel:0]];请看编辑后的答案。分贝是标签,soundRecorder是AVAudioRecorder的init。@Gary Tsui它只打印“平均输入:-160.000000峰值输入:-160.00000”这个值,我运行代码2或3次,但输出是相同的,但它记录了吗?这是我从自己的代码片段中得到的,我刚刚测试并确认了。峰值功率相应地变化。