전날은 속이 안좋아서 새벽 4시에 들어갔는데 7시까지 잠을 못잠
15시에 시체처럼 일어나서 병원갔다가 약먹고 밥먹고 18시 출근...
수면시간 취침시간이 점점 밀려서 일주일에 잠을 여섯번만 자는것같은데
이러면 일지는 6번을 써야하나 7번을 써야하나 하는 잡생각
오늘의 목표 :
오디오 분석 프로토타입 개발
여기까지 구현하면
서버담당 백엔드 팀원이 list화한 분석 데이터가 프론트에 잘 가는지 체크
잘 가면 프론트는 그 list data를 차트화하여 웹페이지에 view
거기에 클릭한 time에 해당하는 장면 미리보기 등등 구현하면 우리의 최소기능? 프로토타입?은 완성
비디오와 마찬가지로
FFmpeg으로 오디오만 분리 후 모노타입 PCM으로 디코딩하여 output
아웃풋 파이프를 numpy array화
video는 frame diff를 측정하면 유의미할 것 같아서 그렇게 구현했는데,
오디오는 이 array로부터 뭘 해야 성능이 좋을지 떠오르는게 없어서 그냥 일단 이 파형을 직접 보낼 예정
44.1kHz의 Sampling Rate를 그대로 던져줄 경우
스트림 1시간당 소요시간 90초, 사용 메모리 0.6GB
여기까지로 일단 데이터를 front에서 보여줄 numerical data화 하는 분석엔진 프로토타입은 개발이 끝났는데
해결해야할 성능 이슈가 많다
토요일
상수값들을 바꿔가며 성능에 어떤 문제가 있는지 이것저것 돌려봄
문제점
SR 44.1kHz의 음원을 PCM화하면 음원 1시간당 array의 길이가 1.6억
이걸 다루는것도 살짝 딜레이가 있고, 무엇보다 램을 너무 많이 먹는다
3시간 스트림 넣으면 코드가 돌아가는 동안 램 2기가 사용...
가장 먼저 떠오르는 아이디어는 비디오때처럼 용량을 줄이는 것
하지만 오디오는 비디오랑 다르게 용량을 줄이면 직접적인 정보 손실이 생긴다
소리의 파동을 수치화할때 SR보다 짧은 파장의 부분파는 파형을 제대로 그리지 못하기 때문
SR이 낮아질수록 높은 주파수부터 손실되어 나중가면 동굴소리만 남는다
실시간 스트림의 비디오는 충분히 고화질로 주어짐
화질은 높으면 보는 사람 기분이 좋으니까 높게 제공할수록 좋겠지
그래서 붙어있는 픽셀 4개중에 3개 떼서 화질 1/4해도 똑같이 알아볼 수 있는 영상이다
= 육안으로 보기에 분간이 가능한 선까진 줄여도 큰 문제가 없다
그래서 그냥 램이 터지니까 맘놓고 영상 화질을 수십분의 일로 줄였다
10년전 mp4로 영화보던 시절엔 이 화질로도 다 알아봤으니까...
하지만 오디오는 이미 극한의 이득을 취한 SR로 송신된다
SR의 절반 주파수의 아날로그 음파까지만 오디오 데이터가 커버 가능하고 사람의 가청주파수가 20kHz 내외인데
실시간 스트림의 일반적인 SR이 44.1kHz로 가청주파수를 건드리지 않는 선에서 이미 최대로 낮춘 퀄리티다.
여기서 더 줄이면 가청주파수에서 데이터가 날아가고, 보여줘야할 파형이 달라진다.
오디오는 파형만 제공하니까 그냥 추출하고 보내주면 될줄알았는데 이런 문제가 생길줄은 생각도 못했다.
이걸 어째야 하나...
'나만의 무기 : HIGHLIGHTING > 개발 일지' 카테고리의 다른 글
Day 12, Day 13 : 분석 프로토타입 완성, 시연에 쓸 방송 찾기 (0) | 2022.02.21 |
---|---|
Day 11 : front에 보낼 Audio 데이터 경량화 (0) | 2022.02.14 |
Day 8 : Video 분석 프로토타입 성능검사 (0) | 2022.02.11 |
Day 7 : 역할분담, Video 분석 프로토타입 개발 (0) | 2022.02.11 |
Day 5, Day 6 : 업데이트 발표 준비, 줌미팅과 피드백 (0) | 2022.02.09 |