한 구간을 삐 소리로 가리기
취재원의 이름. 소리 내어 읽힌 주소. 누군가 무심코 말한 전화번호. 이 페이지는 녹음의 한 구간을 삐 소리로 덮는 일에 관한 것입니다. 무엇이 정확히 바뀌고 무엇이 그대로 남는지, 그리고 그 위치를 정하는 사람이 왜 사용자 자신인지를 설명합니다.
표시하는 쪽은 사용자입니다. 저희는 추측하지 않습니다
이 용도의 다른 도구들은 모두 자동 감지를 내세웁니다. 녹음을 받아쓰고, 해당 단어를 찾아, 지워 주겠다고 제안합니다. 저희는 그렇게 하지 않으며, 도구를 고르기 전에 그 이유를 읽어 볼 만합니다.
자동 감지에는 단어 단위 타임스탬프가 필요합니다. 앞뒤 문장까지 지우지 않고
한 단어만 지우려면, 그 단어가 어디서 시작하고 끝나는지를 100분의 1초 수준으로
아는 무언가가 있어야 합니다. 영어에서는 받아쓰기 모델이 그것을 내놓습니다.
영어 밖에서는 그렇지 않은 경우가 많고, whisper-base를 중국어로 실측했을 때
타임스탬프는 문장 단위였습니다 —— 3.8초짜리 발화 하나가 0.78에서 4.62까지
한 구간으로 돌아옵니다. 그 안에서 이름만 가릴 수는 없습니다. 문장 전체를 가릴
수밖에 없습니다.
이것은 저희가 실측한 그 한 모델에 대한 이야기이고, 존재하는 모든 모델에 대한 이야기는 아닙니다. 그래도 설계를 정하기에는 충분합니다. 어떤 언어에서는 조용히 잘 작동하고 다른 언어에서는 조용히 잘 작동하지 않는 자동 기능은, 자동 기능이 없는 것보다 나쁩니다. 결과를 봐도 자신이 어느 쪽에 있는지 알 수 없기 때문입니다.
그래서 구간은 사용자가 표시합니다. 시간은 더 걸리고, 그 대신 놓치는 것도 오탐도 없으며 다른 언어보다 못한 언어도 없습니다. 여기에는 언어라는 단계가 아예 없습니다. 받아쓰기라는 단계가 없기 때문입니다.
무엇으로 바뀌는가
1 kHz 삐 소리입니다. 방송에서 바로 이 용도로 쓰는 소리이고, 무음이 아닙니다.
이 선택은 음질이 아니라 의미의 문제입니다. 무음 구간은 모호합니다. 듣는 사람은 의도적으로 가린 것인지, 아니면 파일이 손상됐거나 편집이 잘못됐거나 마이크가 끊긴 것인지 구분할 수 없습니다. 삐 소리는 한 가지만을, 그것도 분명하게 말합니다.
음량은 녹음의 절반 정도로 맞춰져 있습니다. 측정 레벨이 같아도 순음은 음성보다 훨씬 날카롭기 때문에 그대로 맞출 수는 없습니다. 얼마나 낮출지는 귀로 판단할 수밖에 없고, 지금의 설정도 그렇게 정했습니다.
이음매, 그리고 그것이 중요한 이유
삐 소리가 음성과 만나는 지점에서는 파형에 단이 생기지 않게 이어져야 합니다. 그렇지 않으면 "딱" 하는 소리가 납니다 —— 양쪽 끝에서 나는 그 소리 자체가 신호가 됩니다. 무언가가 제거된 정확한 순간을 듣는 모든 사람에게 알려 주는 셈이고, 그것은 이 페이지를 찾은 목적과 정반대입니다.
그래서 삐 소리는 0에서 시작해 0으로 끝나고, 양쪽 4밀리초의 음성이 그 안으로 녹아듭니다. 4밀리초는 페이드로 들리지 않을 만큼 짧고, 이음매에 들릴 것이 남지 않을 만큼은 깁니다. 이음매에서의 도약은 같은 파일에서 이미 자연스럽게 일어나는 인접 표본 간 최대 도약보다 한두 자릿수 작습니다.
페이드가 깎는 것은 남기는 쪽 음성의 아주 얇은 조각이고, 가리는 구간 쪽이 아닙니다. 가리는 쪽을 페이드하면 그 앞부분 몇 밀리초가 작은 음량으로 새어 나갑니다. 음소의 4밀리초는 내용으로 들리지 않지만, 여기는 "대충 맞다"로 넘길 자리가 아닙니다.
길이는 변하지 않습니다
출력의 표본 수는 입력과 정확히 같습니다. 구간을 잘라내는 선택지는 없고, 이는 의도한 것입니다. 음성을 짧게 만들면 그 지점 이후의 모든 영상 프레임이 소리와 어긋나게 됩니다.
길이가 유지되기 때문에 영상은 그대로 쓸 수 있습니다. 화면은 손대지 않고 복사되고, 음성 길이는 원래대로이며, 입 모양도 원래 자리에 떨어집니다. 화면과 소리를 다루는 방식은 영상의 음성 처리하기에 있습니다.
파일 전체를, 브라우저에서
삐 소리는 파일이 흘러가는 도중에 적용됩니다 —— 한 덩이를 읽고, 한 덩이를 처리하고, 한 덩이를 씁니다. 그래서 우회해야 할 길이 상한이 없습니다. 40분짜리 인터뷰도 2분짜리와 같은 방식으로 처리되고, 파일은 어디로도 전송되지 않습니다. 노이즈 제거 자체의 작동 방식과 되는 것·안 되는 것은 배경 노이즈 제거하기에 있습니다.
이 구조에는 알아 둘 만한 결과가 하나 있습니다. 구간 표시는 처리가 시작되기 전에, 사용자 자신의 원본 파일을 들으면서 합니다. 완성된 결과를 듣고 나서 그 안에서 무언가를 골라내는 단계는 없습니다. 그 시점에는 출력이 이미 다 쓰여 있습니다.
이 기능이 하지 않는 일
- 대신 찾아 주지 않습니다. 위에서 설명했습니다. 영어 소재에서 비속어 자동 감지가 필요하다면, 그것을 위해 만들어진 도구가 이보다 잘 맞습니다.
- 파일 전체 처리에 적용되고, 30초 미리듣기에는 적용되지 않습니다. 미리듣기는 노이즈 제거 효과를 판단하기 위한 것이고, 건드리지 않아야 그 판단이 흐려지지 않습니다.
- 표시에는 브라우저가 그 파일을 재생할 수 있어야 합니다. 저희 처리 경로는 일반 재생기가 열지 못하는 컨테이너도 열기 때문에, "처리는 되지만 표시하려고 재생할 수는 없는" 파일이 있습니다. 그럴 때는 표시 조작 부분이 사라지고 이유를 알립니다. 처리 자체는 그대로 작동합니다.
- Firefox에서는 파일 전체 처리 자체를 쓸 수 없습니다. 출력에 필요한 AAC를 인코딩할 수 없어서 삐 소리가 놓일 자리가 없습니다. 30초 미리듣기는 됩니다. Firefox 142에서 실측했습니다.