먼저 세 줄로
- 마이크는 완전한 0을 내지 않습니다. 조용한 구간에는 방의 공기와 프리앰프의 잡음이 남습니다.
- 그 값을 한 번 크게 틀렸습니다. 곡 앞뒤의 디지털 무음을 방 소리로 세어 실제 음원이 −141dB로 나왔습니다.
- 고쳤지만 이 값들만으로 등급을 주지는 않습니다. 잘 만든 생성 음원은 방 소리까지 흉내 냅니다.
소리에는 렌즈도 센서도 없습니다. 비네팅도 색수차도 없습니다. 그러면 무엇을 재야 합니까.
마이크와 방이 있습니다. 그 둘은 파형에 지워지지 않는 것을 남깁니다.
1. 마이크는 0을 내지 않습니다
아무 소리도 나지 않는 방에서 녹음 버튼을 누르고 파형을 확대해 보면, 값이 0에 붙어 있지 않습니다. 아주 작게 떨립니다. 이유가 여럿입니다.
공기 분자는 가만히 있지 않습니다. 절대 영도가 아닌 한 계속 진동하고, 그 진동이 진동판을 때립니다. 마이크 뒤의 프리앰프에는 저항이 있고, 저항 안의 전자도 열 때문에 움직입니다(존슨-나이퀴스트 잡음). 아날로그를 디지털로 바꾸는 회로도 자기 잡음을 더합니다. 그리고 사람이 조용하다고 느끼는 방에도 실제로는 소리가 있습니다 — 환기구, 냉장고, 창밖, 자기 심장.
그래서 실제 녹음의 조용한 구간에는 항상 무언가가 남습니다. 이것을 노이즈 플로어라고 부릅니다. 반대로 생성된 소리나 잡음을 완전히 지운 편집물에는 그것이 없을 수 있습니다.
재는 방법을 한 번 틀렸습니다
처음에는 간단하게 접근했습니다. 파일 전체를 짧은 구간으로 훑으면서 가장 조용한 구간의 세기를 구하면 되겠다고 생각했습니다.
실제 음원으로 재보니 −141dB이 나왔습니다. 어떤 파일에서는 −∞가 나왔습니다. 물리적으로 불가능한 값입니다.
가장 조용한 구간이 방의 소리가 아니라 곡 앞뒤의 디지털 무음이었기 때문입니다. 음원 파일은 시작과 끝에 정확히 0인 표본을 붙여 둡니다. 재생기가 이어 붙일 때 튀지 않게 하려는 것입니다. 그러니 "가장 조용한 구간"을 찾으면 언제나 그 패딩이 잡힙니다. 방을 재려던 자가 파일의 여백을 재고 있었습니다.
고친 방법은 두 단계입니다. 디지털 무음에 가까운 구간은 아예 빼고, 남은 구간에서 가장 조용한 쪽을 대표값으로 고르되 맨 밑바닥은 쓰지 않습니다. 가장 조용한 한 순간을 그대로 쓰지 않는 이유는, 그 한 순간 때문에 전체 판정이 흔들리지 않게 하려는 것입니다.
고치고 나니 실측이 −15.8dB에서 −44.0dB 사이로 들어왔습니다. 통화 녹음은 −25.6dB, 마스터링을 거친 음원은 −44.0dB. 이제 말이 되는 숫자입니다.
2. 대역 한계 — 몇 번 압축됐는가
손실 압축은 사람이 덜 듣는 것부터 버립니다. 가장 먼저 버리는 것이 고역입니다. 나이가 들면 안 들리고, 들려도 음악의 인상을 크게 바꾸지 않기 때문입니다.
그래서 파일 전체에서 구간을 고르게 뽑아 평균 스펙트럼을 구하고, 에너지가 어느 주파수에서 끊기는지를 보면 압축의 이력이 남아 있습니다. 실측으로 14.0kHz에서 20.1kHz까지 갈렸습니다. 20kHz 위까지 살아 있으면 손실 압축을 거의 거치지 않은 것에 가깝고, 14kHz에서 끊기면 여러 번 압축된 파일입니다.
여기서도 함정이 있었습니다
브라우저의 오디오 장치는 기기 출력 속도로 소리를 다시 표본화합니다. 보통 48kHz입니다. 44.1kHz 파일을 그냥 디코딩하면 48kHz로 보고되고, 그러면 나이퀴스트 주파수(표본율의 절반)가 22.05kHz에서 24kHz로 바뀝니다. "나이퀴스트의 몇 %까지 살아 있는가"라는 비율이 어긋납니다.
실측에서 네 개의 44.1kHz MP3가 전부 48kHz로 보고됐습니다. 그래서 컨테이너에서 읽은 표본율로 디코딩 문맥을 만들어 쓰고, 브라우저가 그 속도를 지원하지 않으면 대역 값을 믿을 수 없다고 결과 화면에 표시합니다.
3. 크레스트 팩터 — 얼마나 눌렀는가
가장 큰 순간(피크)과 전체 평균(RMS)의 비를 데시벨로 나타낸 값입니다. 연주에는 여린 데와 센 데가 있고, 그 차이가 클수록 이 값이 큽니다.
상업 음원은 이 값이 작습니다. 스트리밍에서 남보다 크게 들리려면 전체를 눌러 올려야 하고, 누르면 피크와 평균의 차이가 줄어듭니다. 실측으로 11.1dB(눌린 마스터)에서 20.1dB(손대지 않은 통화 녹음)까지 벌어졌습니다.
두 채널의 상관도 함께 봅니다. 마이크 두 개로 공간을 담으면 왼쪽과 오른쪽이 서로 다릅니다. 상관이 1에 가까우면 스테레오로 저장했을 뿐 한 소리를 복사한 것입니다. 실측 음원들은 0.815에서 0.979 사이였습니다.
버린 측정 하나
정확히 0인 표본이 길게 이어지는 구간을 "사람이 만들지 않았다"는 근거로 쓰려고 했습니다. 마이크는 0을 연속으로 내지 않으니까요.
실제 상업 음원 두 개에서 1.3%와 2.3%가 나왔습니다. 앞에서 말한 그 패딩입니다. 실제 음원에서 흔하게 나오는 값을 AI의 근거로 쓸 수는 없습니다. 그래서 사실로만 적고 판정에서 뺐습니다.
결과 화면에 이 항목이 남아 있는 것을 보실 수 있습니다. "실제 음원에서도 나옵니다. 판정에 쓰지 않습니다"라고 적혀 있습니다. 재긴 했으니 보여 드리고, 쓰지 않는다는 것도 같이 적는 편이 맞다고 봅니다.
그런데 이 값들만으로는 등급을 주지 않습니다
노이즈 플로어가 남아 있고, 다이내믹이 눌리지 않았고, 두 채널이 서로 다릅니다. 세 가지가 다 맞으면 사람이 마이크로 녹음한 것이라고 말해도 될까요.
말하면 안 됩니다. 실측에서 출처를 알 수 없는 MP3가 이 세 조건을 통과해 3등급을 받았습니다. 실제 음원이니 통과하는 것이 이상하지는 않습니다. 문제는 잘 만든 생성 음원도 같은 값을 낼 수 있다는 것입니다. 노이즈 플로어를 흉내 내는 일은 어렵지 않습니다. 학습 데이터에 이미 그 잡음이 들어 있으니까요.
사진에서는 EXIF에 적힌 주장과 픽셀에서 잰 값을 서로의 증인으로 쓸 수 있습니다. "ISO 6400이라고 적어 놓고 노이즈가 없다"는 모순을 잡을 수 있습니다. 소리에는 그렇게 대조할 주장이 없습니다.
그래서 기기 기록이 아예 없는 파일에는 등급을 발급하지 않습니다. WAV의 방송용 덩어리, 녹음기의 메타데이터, 기기 이름 가운데 하나라도 남아 있어야 합니다. 사진에서 촬영 정보가 없으면 발급하지 않는 것과 같은 자리입니다.
이 조건 때문에 유통을 거친 실제 음원이 떨어집니다. 억울한 쪽이 생기는 것을 알고 고른 선입니다. 파형 값만으로 등급을 주면 생성물도 함께 통과하고, 그렇게 발급된 등급은 아무 의미가 없습니다.
아직 재보지 못한 것
솔직히 적어 둡니다. 위의 숫자들은 모두 실제 녹음과 실제 음원에서 나온 값입니다. AI가 만든 음원에서 이 값들이 어떻게 나오는지는 재보지 못했습니다.
지금 구조는 녹음의 흔적을 측정하고 결과를 기록합니다. 생성 음원의 노이즈 플로어가 실제 녹음과 구별되는지는 계속 확인할 항목이며, 표본을 확보하면 이 글에 반영하겠습니다.