사운드 이벤트 분석
Listen은 기본 분석, 비동기 분석, 배치 분석의 세 가지 방식의 사운드 이벤트 분석 방식을 제공합니다. 여기서는 이미 시작하기 및 녹음 기능 구현을 완료했다고 가정하고 설명을 진행합니다.
val listen = Listen(context)
listen.load("SDK_KEY", "MODEL_ASSETS_PATH")
val audioSamples = getAudioSamplesForMic() // AudioRecord를 이용해 오디오 샘플을 얻는 함수
기본 분석
가장 간단하고 직관적인 방법은 기본 분석 방식입니다.
// audioSamples 변수는 반드시 미리 정해진 샘플링 속도로 녹음된 값이어야 하고, 최소 길이 제한보다 큰 길이를 가져야 합니다.
// 이 두 값은 각각 listen.getAudioParams().sampleRate, listen.getAudioParams().minInputSize 값을 통해 알 수 있습니다.
val results = listen.inference(audioSamples)
기본 분석 기능을 제공하는 analyze() 함수는 미리 정해진 샘플링 속도로 녹음된 고정 길이의 오디오 샘플을 인자로 받습니다.
각 모델에 따라 샘플링 속도와 오디오 샘플의 길이가 다를 수 있는데, 각각의 값은
getAudioParams() 메소드를 이용해 sampleRate 속성과 inputSize 속성으로 얻을 수 있습니다.
비동기 분석
만약 실시간으로 특정한 사운드 이벤트를 감지해야 할 경우, 언제 그 이벤트가 발생할지 알 수 없기 때문에 비동기 분석 방식을 사용하는 것이 더욱 바람직합니다. 비동기 분석은 다음과 같은 방식으로 구현됩니다.
setAsyncInferenceListener()메소드를 이용해 리스너를 등록합니다.실시간으로 녹음된 오디오 샘플 데이터를
inferenceAsync(audioSamples)메소드로 계속 전달합니다.등록했던 사운드 이벤트가 감지되면 리스너 혹은 코틀린 코루틴이 호출됩니다.