我正在开发一个应用程序,我需要识别人类(准确地说是婴儿哭泣)的声音。我在iPhone麦克风上引用了以下文章来录制声音并对其进行采样。
http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/ http://developer.apple.com/library/ios/#samplecode/aurioTouch/Introduction/Intro.html http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html
...但我没有得到如何准确区分人声与任何其他声音。任何帮助或示例代码都非常有用。
到目前为止,我写了以下代码:
-(void)levelTimerCallback:(NSTimer *)timer {
[recorder updateMeters];
const double ALPHA = 0.05;
double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
NSLog(@"frequency: %f", lowPassResults);
NSLog(@"Average input: %f Peak input: %f", [recorder averagePowerForChannel:0], [recorder peakPowerForChannel:0]);
if (lowPassResults < 0.95)
[self playSound];
}
感谢。
答案 0 :(得分:0)
这是一个非常棘手的问题。语音识别是一个复杂的主题,甚至大型公司也无法做到正确。建议是对其进行抽样,看它是否在某个高音调范围内。除此之外,您还需要阅读语音识别理论。
如this answer所示,它不在iPhone SDK的范围内,所以这不是一个简单的答案。