글을 작성하는 이유
2022년 4월 부터 12월까지 인공지능 코드 악보를 제공해주는 서비스를 팀원들과 함께 개발했습니다. 성공적으로 기능개발을 하고 배포까지 했었지만. 당시에 마주쳤던 문제들 해결과정 등이 정리가 안되있어서 정리를 하려고합니다.
인공지능 기술이 발전되면서 많은 기업이 해당 기술을 활용하여 사용자에게 비즈니스 가치를 창출하고 있습니다. 또한 인공지능 기술과 관련된 시장이 점점 커지고 있죠 엔지니어링 기술을 통해 가치를 제공하는 개발자는 빠르게 변화하는 트렌드에 따라가기 위해 관련된 기술을 습득한것을 정리하고 셀프 피드백 해야한다고 생각했습니다.
서비스 개요
저희가 개발한 서비스는 유튜브에 존재하는 모든 음원의 기타 코드 악보를 생성하여 사용자에게 제공하는 서비스입니다. 크게 두가지 기능으로 나뉩니다
- 사용자에게 유튜브 음원 기반 악보 제공
- 기타 악보를 연주할때의 틀린 반주에 대한 피드백
왜 개발했는가.
당시 유명한 클래식음악, 가요 음악에 대한 악보는 인터넷에 많이 제공되고 있지만 최신 곡 같은 경우는 1) 악보데이터를 구하기 힘들었습니다. 또한 2) 코드 악보를 저장할 마땅한 저장소가 존재하지 않았습니다. 다양한 대학 동아리, 밴드에서 수요조사를 해본결과 많은 분들의 코드 악보에 대한 1번 2번에 관한 니즈를 파악할 수 있었고 이를 기술적으로 해결하여 가치를 제공하려고 했습니다.
ML 시스템 개발
모델 리서치 & 분석
서비스의 비즈니스 요구사항은 음원을 디지털 악보로 변환하는 것입니다. 그래서 음원을 transcription 하여 Symbolic representation 으로 변환하는 모델에 대한 리서치를 진행했습니다. 이때 구글 브레인 팀에서 개발한 Onsets on Frames 논문을 발견하고 해당 모델에 대한 리서치를 진행했습니다.
해당 모델은 CNN + biLSTM 모델 based 로 정의되어있었습니다. 여기서 아래와 같은 궁금중이 발생했습니다.🧐
CNN 은 비전분야에서 사용되는 모델인데 어떻게 오디오 데이터를 처리할 수 있다는거지?
결론은 오디오 데이터를 이미지 데이터처럼 변환(Mel-Spectrogram)하여 추론을 하고 있었는데요 해당 논문에서 명시한 모델의 구조는 아래와 같았습니다.
그림에서 보실 수 있는 것처럼 Mel-Spectrogram 을 인풋으로 넣고 있었는데요. 처음 보는 포멧이라 해당 포멧에 대한 리서치를 진행했었습니다.
디지털 데이터에 대한 이해
논문을 보다보면 sample rate 라는 단어를 자주 봤었는데요 도대체 sample rate 가 뭔지 궁금했었습니다. sample rate 는 아날로그 신호를 디지털 신호로 변환할때 사용되는 개념이였는데요 아래와 같은 이론을 포함하고 있었습니다.
디바이스는 아날로그를 디지털신호로 변환하기위해 ADC(Analog Digital Converter) 칩을 가지고 있습니다. 변환과정은 아래와 같습니다.
위 그림에서 Sampling 과 Quantizing 이라는 생소한 개념을 볼수 있었는데요 이에 대한 개념은 아래와 같습니다.
- Sampling : 일정한 간격으로 아날로그 신호로 부터 그려져 있는 직선
- Quantizing(양자화): 아날로그 데이터를 2진수로 표현된 가장 가까운 y축에 매칭합니다.
변환되는 과정을 확대해서 보면 아래와 같습니다.
위 그림에서 샘플링 주기란 샘플을 추출하는 시간 간격 (sec) 를 의미하고, 샘플링 율이란 1초에 추출하는 샘플링 개수를 의미합니다. 수식으로는 아래와 같이 표현할 수 있습니다.
- T = 1 / S
- S = 1 / T
위 그림을 보다보면 변환 시에 아날로그 신호에서 데이터 손실이 발생할 수도 있을 것 같다는 의문이 생길수도 있습니다. 그래서 이러한 문제를 해결하는데에 사용된 정리가 있는데 바로 나이퀴스트-섀넌 표본화 정리입니다.
"만약 신호가 대역제한(bandlimited)신호이고, 표본화 주파수가 신호의 대역의 두 배 초과라면 표본으로부터 연속 시간 기저 대역 신호를 완전히 재구성할 수 있다."
이를 수식으로 나타내면 아래와 같습니다
샘플링 율 >= 2 * fBw (주파수 대역폭)
보통 사람이 들을수 있는 주파수 대역은 20 ~ 20000 Hz 인데요 이때의 주파수 대역폭은 (20000 - 20) 입니다. 그래서 주파수 대역 대략 2만 Hz 의 2배인 4만개 이상을 1초에 뽑아낼 수 있다면 원래의 신호를 완전히 복원할 수 있다는 의미입니다.
Spectrom 에 대한 이해
Mel-Spectrom 변환이전 사용되는 오디오 데이터의 메타데이터에 관한 지식을 학습한 이후 그렇다면 왜 인공지능 모델에서 해당 포멧을 사용해야하는지에 대한 리서치를 진행했습니다.
딥러닝 기술이 등장하기 이전 이미지 데이터는 기존의 영상처리 기술에 의존하여 데이터를 처리 했었는데요 오디오 데이터도 마찬가지로 기존의 디지털 처리 신호에 의지하여 데이터를 처리했습니다.
하지만 딥러닝 기술의 발전으로 딥러닝을 사용하면 오디오 처리 기술을 사용하지 않고도 더욱 효율적으로 오디오 데이터의 특징을 추출할 수 있게 되었습니다. CNN 과 같은 이미지 관련 모델로요! 하지만 오디오 데이터를 CNN 모델에 인풋으로 넣으려면 데이터를 이미지화 해야합니다. 이미지화 된 오디오 데이터를 스펙트럼이라합니다.
스펙트럼의 X 축은 시간, Y 축은 해당 시간의 신호 (주파수) 를 나타냅니다. 이러한 스펙트럼은 퓨리에 변환을 사용하여 신호를 모든 구성 주파수로 분리하여 표현합니다.
이렇게 오디오 파일을 2차원 형태로 변환한 다음 모델의 입력값으로 넣고, CNN 모델의 레이어를 통과하여 결과 값을 얻을 수 있습니다.

위와 같은 과정으로 오디오 변환 도메인에서 사용하는 데이터 및 모델의 기본구조와 이론을 학습한 뒤에 서비스에 적용하기 위한 성능테스트를 진행했습니다.
참고
- https://www.elprocus.com/analog-to-digital-converter/
- https://www.myreadingroom.co.in/notes-and-studymaterial/68-dcn/732-analog-to-digital-conversion-techniques.html
- https://towardsdatascience.com/audio-deep-learning-made-simple-part-2-why-mel-spectrograms-perform-better-aad889a93505
- https://towardsdatascience.com/audio-deep-learning-made-simple-part-1-state-of-the-art-techniques-da1d3dff2504
'프로젝트 > 소프트웨어 마에스트로' 카테고리의 다른 글
[소프트웨어 마에스트로] - 악보 생성 상태 전파 feat. Redis (1) | 2024.01.29 |
---|---|
[소프트웨어 마에스트로] - 백엔드 아키텍처 설계 (0) | 2024.01.12 |