Audio PCM 데이터에서 정상적인 데이터가 맞는 지, 구간 마다 어느정도의 파장크기를 확인 하는 방법을 본 문서에서 정의하고 있습니다. 개발을 하다가 음성 발화 인식을 위해 해당 코드를 작성하게 되었으며 16bit little endian mono 채널에서만을 기준으로 작성되었습니다.
사진을 보게 되면 파장이 -1.0 부터 1.0 까지 구성되어 있습니다. 이러한 로직을 처리하는 부분입니다.
# Contents
- 예제 코드
# 예제 코드
코드는 아주 간단합니다. 매번 2바이트를 처리하는데, little endian이므로 8비트를 왼쪽 시프트하고, 부호처리를 하게 되면 0-1사이의 값 이 나오게 됩니다. 해당 코드는 값이 들어오는 구간 마다 데이터의 max 값을 찾는 코드였습니다. 해당 코드를 응용하여 사용해주시기 바랍니다.
function foundMax(chunk) {
var max = 0.0;
for (let i = 0; i + 1 < chunk.length; i += 2) {
var msbFirst = (chunk[i] & 0xff) + ((chunk[i + 1] & 0xff) << 8);
var msbSigned = ((msbFirst + 32768) % 65536) - 32768;
var value = msbSigned / 65536.0;
max = value > max ? value.toFixed(3) : max;
}
return max;
}
'오픈소스 > 노드' 카테고리의 다른 글
[Node] Webpack 설치 및 사용법 (0) | 2021.10.12 |
---|---|
[Node] PM2 설치 및 사용법 (0) | 2021.10.06 |
[Node] Express 서버에서 Form을 이용하여 여러 개 데이터 전송 (0) | 2021.10.06 |
[Node] Express 404 Not Found 처리 (0) | 2021.10.06 |
[Node] 04. 콜백을 사용한 비동기 제어 흐름 패턴 (0) | 2021.10.06 |