2011-03-24 7 views
3

Android 음성 인식 API를 사용하여 '비명 소리'또는 '시끄러운 소리'등을 감지 할 수 있습니까? 또는 동일한 작업을 수행 할 수있는 다른 소프트웨어/타사 도구가 있습니까? 나는 비명 소리 나 큰 소리를 감지하려고 한 경우특정 사운드 피치에 대한 Android 음성 인식

덕분에, KAPS

답변

4

클래퍼를 구현한다는 의미입니까?

공상 수학 또는 음성 인식 API를 사용할 필요가 없습니다. MediaRecorder와 그 getMaxAmplitute() 메소드를 사용하면됩니다.

다음은 필요한 코드 중 일부입니다. 알고리즘은 일정 기간 동안 기록한 다음 앰플리파이어 차이를 측정합니다. 크기가 클 경우 사용자가 큰 소리로 말했을 것입니다.

public void recordClap() 
{ 
    recorder.start(); 

    int startAmplitude = recorder.getMaxAmplitude(); 
    Log.d(D_LOG, "starting amplitude: " + startAmplitude); 
boolean ampDiff; 
do 
{ 
    Log.d(D_LOG, "waiting while taking in input"); 
    waitSome(); 
    int finishAmplitude = 0; 
    try 
    { 
     finishAmplitude = recorder.getMaxAmplitude(); 
    } 
    catch (RuntimeException re) 
    { 
     Log.e(D_LOG, "unable to get the max amplitude " + re); 
    } 
    ampDiff = checkAmplitude(startAmplitude, finishAmplitude); 
    Log.d(D_LOG, "finishing amp: " + finishAmplitude + " difference: " + ampDiff); 
} 
while (!ampDiff && recorder.isRecording()); 

}

private boolean checkAmplitude(int startAmplitude, int finishAmplitude) 
{ 
    int ampDiff = finishAmplitude - startAmplitude; 
    Log.d(D_LOG, "amplitude difference " + ampDiff); 
    return (ampDiff >= 10000); 
} 
2

, 방금 높은 제곱 평균 제곱 마이크를 통해 나오는 소리의 찾을 것입니다. 나는 당신이 비명을 인식하는 음성 인식 시스템을 훈련 시키려고 할 수 있다고 생각하지만 과잉이라고 생각합니다.

+0

합리적인 것 같다. 이 샘플 코드를 추가 할 수 있습니까? – Kaps

+0

음, 아니. 나는 실제로 안드로이드를 한 가지 코딩했다. 방금 다양한 사운드 프로그램을했습니다. 또한, 이것은 '코드 제공'사이트가 아닙니다. 도움이 필요하면 코드를 게시하고 코드를 게시하십시오. 제곱 평균을보세요. 기본적으로 시간을 갖고 값을 제곱하고 그 값의 평균을 찾은 다음 평균의 제곱근을 취합니다. 제곱근은 실제로이 사용을 위해 실제로 건너 뛸 수 있습니다. 그런 다음 비명을 지르거나 조용하게 말하고 올바른 임계 값을 설정할 때 얻는 가치를 살펴 봐야합니다. –

+0

나는 당신의 대답이 도움이되지 않는다고 생각합니다. 나는 투표 할 수 없다. 그래서 이것이 대안이다. – brainmurphy1