Scailout Station
블로그
한국어
신청하기

블로그

부스에서 두 사람이 말하면 파일은 둘 다 잃는다

Robert Kim ·

1미터 떨어진 두 상담이 마이크 하나에 도착하면 신호는 하나로 합쳐진다. 그 실패에는 이미 이름이 있다. 전시 업계 글에 그 이름이 등장한 적은 없다.

방문객 둘이 1분 간격으로 같은 카운터에 도착한다. 직원 하나는 왼쪽 자리에, 다른 하나는 오른쪽 자리에 앉는다. 8분 동안 별개의 상담 둘이 1미터 거리에서 나란히 돌아간다. 전시장에서는 잘 풀린 시간이다. 전시회 부스 동시 상담이 나중에 복원 불가능해지는 조건이기도 하다.

녹음은 성공한다. 기록은 실패한다. 남는 건 두 대화가 겹쳐 담긴 파일 하나다. 어느 방문객의 것도 아니다.

마이크 하나에 대화 둘이 도착하면

부스에 상담 둘이 돌아가는 동안 마이크 하나가 받는 신호는 하나다. 그 신호 안에는 어느 말이 어느 자리에서 나왔는지 표시가 없다. 여기서 뽑은 전사본은 화자 라벨이 카운터를 오가며 흔들리는 텍스트 한 덩어리다. 어느 방문객에게도 확신을 갖고 붙일 수 없다. 파일은 남는데 그 파일을 누구 미팅이라고 부를지가 정해지지 않는다. 부스가 붐빌수록 이 실패가 잦아진다.

원거리 화자 분리는 사람 몸에 붙지 않고 떨어져 놓인 마이크로 누가 언제 말했는지 가려내는 일이다. 어렵게 만드는 건 거리다. 라펠 마이크는 입에서 몇 센티미터 떨어져 있어서 그 목소리의 직접음이 다른 무엇보다 압도적으로 크게 들어온다. 1~2미터 밖 마이크는 사정이 다르다. 직접음, 부스 벽과 전시장 천장에 반사된 그 소리, 옆자리 대화, 홀 전체의 웅성거림이 비슷한 크기로 함께 들어온다. 두 사람이 동시에 말하면 음성은 같은 주파수 대역에서 비슷한 진폭으로 겹친다. 한 번에 한 명만 말한다고 가정한 시스템에는 고를 수 있는 정답이 없다. 마이크 성능을 올려도 이 조건은 바뀌지 않는다. 겹친 신호를 나누는 일은 더 잘 듣는 일과 다른 일이다. CHiME-6와 AMI 같은 연구 코퍼스는 바로 이 조건을 담으려고 만들어졌다. 거리, 잔향, 경쟁 음원, 중첩이 한꺼번에 걸리면 깨끗한 단일 화자 음성에서 잘 돌던 방법이 무너진다. 부스 카운터가 그 넷을 동시에 만족하는 자리다. 아래는 연구 쪽이 이 조건을 어디까지 풀어 놓았고 어디서 멈춰 있는지를 본 것이다.

부스가 만드는 실패가 정확히 이 모양이다. 부스가 바쁠 때마다 반복된다. 한산한 부스는 깨끗하게 녹음되고 아무것도 알려주지 않는다. 남길 가치가 있는 시간은 대화 둘이 겹친 그 시간이다. 사흘 행사라면 그런 시간이 계속 돌아온다.

전시 업계 글은 이걸 부르지 않는다. 부를 이름이 없어서가 아니다. 이름이 다른 서가에 꽂혀 있어서다. 영어로 검색하면 arXiv 프리프린트와 학회 논문, 음성 툴킷 문서가 나온다. 부스 사후관리로 검색하면 워크플로와 메모 습관을 다룬 벤더 블로그가 나온다. 중첩을 언급한 글은 없다. 두 글뭉치가 같은 오후를 설명하는데 서로를 인용하지 않는다. 비어 있는 메모 칸과 사라진 대화 사이의 거리는 절반이 워크플로 문제고 나머지 절반이 이 문제다.

전시회 부스 동시 상담은 이 그릴에 신호 하나로 겹쳐서 도착한다.
전시회 부스 동시 상담은 이 그릴에 신호 하나로 겹쳐서 도착한다.

연구 코퍼스가 이 문제를 부르는 이름

이 어휘의 주인은 음성 연구지 이벤트 마케팅이 아니다. 화자 분리는 음성을 화자별로 잘라 붙이는 작업이다. 원거리는 마이크가 몸에 붙지 않고 떨어진 자리에 놓인 상태를 가리킨다. 학계는 이 문제를 10년 넘게 미해결로 다뤄 왔다. 이름 붙은 코퍼스가 그 시간 위에 쌓였고 코퍼스마다 공개된 파이프라인이 뒤따랐다. 보고된 오류율도 함께 남아 있다.

Mosner 연구진이 Interspeech 2018에서 이 제약을 가장 단순한 형태로 정리했다. 제목이 Dereverberation and Beamforming in Robust Far-Field Speaker Recognition, 곧 잔향 제거와 빔포밍이다. 제목 자체가 주장이다. 거리가 있으면 원신호에 화자 인식을 돌리지 않는다. 잔향 제거와 빔포밍이 이미 손본 신호에 돌린다. 이 단계를 건너뛰면 결과가 완만하게 나빠지지 않는다. 뒤쪽 모델이 보는 대상 자체가 달라진다.

건너야 할 다리가 여기 있다. 부스 캡처 장비를 알아보는 사람은 CRM 연동과 명함 스캔을 다룬 페이지를 읽는다. 방문객 둘이 동시에 앉는 순간 실제로 생기는 질문은 원거리 화자 분리 질문이다. 15년치 논문이 쌓여 있는데도 구매 과정에서 그 존재를 알려주는 사람이 없다.

연구용 파이프라인이 먼저 하는 일

공개된 시스템은 원거리 음성을 화자 분리기에 그대로 넣지 않는다. 엔지니어링의 대부분을 그 앞단에 쓴다. Johns Hopkins University가 CHiME-6에 낸 시스템이 가장 또렷한 기록이다. 화자를 판정하기 전에 향상 단계가 줄줄이 돌아간다. 화자 분리기의 출력은 다시 음원 분리로 되먹임된다. 분리 자체보다 그 앞에서 신호를 정리하는 일에 더 많은 공이 들어간다. 마이크가 놓인 자리가 그 앞단의 성패를 미리 정한다.

논문은 배치를 이렇게 적는다. “the beamformer outputs, one per array, are used for (i) speech activity detection and (ii) speaker diarization, both of which fuse information across arrays to improve accuracy, and (iii) overlap-aware variational Bayes hidden Markov model (VB-HMM) resegmentation to assign multiple speakers to overlapped speech regions.”

단계 하는 일 부스에 필요한 이유
잔향 제거 반사되어 돌아온 목소리 사본을 눌러 준다 부스는 단단한 벽 상자고 옆에도 같은 상자가 붙어 있다
빔포밍 (BeamformIt) 어레이 소자에 가중 지연을 걸어 감도를 특정 방향으로 돌린다 자리 둘은 방향 둘이다. 방향이 유일하게 깨끗한 구분자다
음성 구간 검출 어디부터 어디까지가 말인지 표시한다 홀 소음은 단순한 검출기에 말처럼 들린다
어레이 간 화자 분리 여러 어레이의 근거를 합쳐 누가 언제 말했는지 하나로 만든다 한 어레이의 사각이 다른 어레이에는 정면이다
중첩 인식 VB-HMM 재분할 겹친 구간에 화자를 둘 이상 배정한다 동시 발화가 예외가 아니라 기본값이다
다중 어레이 유도 음원 분리 화자 표식을 써서 스트림을 갈라낸다 분리는 마지막 단계지 첫 단계가 아니다

여섯 단계고 구매자가 제품의 전부라고 상상하는 화자 분리기는 네 번째에 나온다. 오른쪽 열을 부스에 대 보면 대응이 정확히 맞아떨어진다. 모든 단계가 부스에도 그대로 있는 조건 때문에 존재한다. 장비가 분해할 수 있는 거리가 사양서의 어떤 항목보다 앞에 와야 하는 근거를 이 표가 그대로 보여 준다.

논문이 화자 넷에서 멈추는 이유

표준 벤치마크로 쓰이는 AMI Meeting Corpus 위의 다중 채널 화자 분리 연구는 범위를 명시한다. 2022년 arXiv 논문 multi-channel speaker diarization with spatial information은 화자 넷을 넘지 않는 회의를 대상으로 삼는다. 화자 수 추정에는 Steered-Response Power Phase Transform, 곧 SRP-PHAT를 쓴다. 시스템 출력은 DOVER-LAP으로 융합한다.

이 범위는 방법을 어디서 평가했는지 밝힌 진술이지 누가 증명한 상한이 아니다. 동시에 경고이기도 하다. 논문이 보고한 개선치는 AMI 평가셋 위에서 다른 공개 시스템과 비교한 값이다. 회의실이다. 화자 수가 적고 녹음 조건을 안다. 이 조건이 전시장으로 그냥 옮겨가지 않는다. 홀에는 회의실에 없는 소음 바닥이 깔린다. 근처에서 말하는 사람 수를 알 수도 통제할 수도 없다. 옆 부스가 자기 스피커로 무엇을 트는지 관여할 방법도 없다.

정직하게 읽으면 범위는 좁다. 어레이의 공간 정보가 도움이 된다는 것, 화자 수를 따로 추정하면 도움이 된다는 것, 이 방법들이 한정된 조건 안에서 꼼꼼히 특성화됐다는 것까지가 연구가 보여준 전부다. 부스에서 무슨 일이 벌어지는지는 알려주지 않는다. 회의실 넷과 전시장 둘 사이에는 화자 수 말고도 다른 것이 너무 많이 놓여 있다.

고정 지오메트리가 바꾸는 것과 못 바꾸는 것

카운터에 고정된 마이크 어레이는 착용형 녹음기가 끝내 모르는 걸 안다. 자기 소자가 어디 있는지, 그리고 자리들이 그 소자 기준으로 어느 방향에 있는지다. 직원이 몸을 돌리거나 기대거나 선반으로 걸어가도 이 각도는 바뀌지 않는다. 목줄에 매달려 흔들리는 기기보다 확실히 나은 출발 조건이다.

방향을 쓸 수 있게 만드는 것부터가 알려진 기하 구조다. 빔포밍은 채널마다 의도한 지연을 걸어 합치는 방식으로 돌아간다. 한 방위에서 온 소리는 보강되고 다른 방위에서 온 소리는 부분적으로 상쇄된다. 그 지연값은 소자 위치에서 계산한다. 위치가 움직이면 빔도 따라 움직인다. 웨어러블의 위치는 쉬지 않고 움직인다. 어레이를 가구에 붙이면 이 변수가 사라진다. 캡처가 사람이 아니라 카운터에 있어야 하는 이유 가운데 하나다.

고정 지오메트리가 못 하는 일은 이렇다. 목소리를 갈라 주지 않는다. 알려진 방위 둘은 분리된 스트림 둘이 아니다. 잔향, 홀 소음, 겹친 발화, 뒤쪽 모델 각각의 실패 방식이 여전히 남아 있는 사슬에서 오차원 하나를 덜어낼 뿐이다. 조건이 좋아진 건 결과가 아니다. 구조적으로 유리한 출발점은 더 나은 결과를 기대할 근거다. 기대는 측정이 아니다. 사양서에서 이 둘을 나란히 적으면 독자는 뒤엣것을 읽는다.

우리에게 없는 숫자

우리 작업에는 N자 분리 정확도를 잰 값이 없다. 이 글은 그 값을 말하지 않는다. 퍼센트도, 화자 분리 오류율도, 동시 상담 최대 개수도 내놓지 않는다. 측정을 한 적이 없으니 보고할 것도 없고 반올림할 것도 없다. 자리를 비워 두는 편이 채워 넣는 것보다 정확하다.

이 문단은 길이보다 무겁다. 없는 숫자를 말하지 않는 일이 있는 숫자를 말하는 일보다 어렵다. 위에 적은 것은 전부 다른 사람이 다른 방에서 수행한 연구의 인용이거나 독자가 직접 다시 계산할 수 있는 산술이다. 장비 성능은 하나도 없다. 고정 지오메트리는 알려진 각도를 준다. 알려진 각도는 분리 시스템이 받아서 쓰는 입력값이다. 그 시스템이 내놓는 결과와는 다르다. 유리한 기하 구조가 아무리 쌓여도 양옆에 진짜 부스가 선 홀에서 잰 숫자를 대신하지 못한다.

다음 절의 수치는 종류가 다르다. 계산에서 나온 요구사항이라서 아무것도 측정되기 전에 공개할 수 있다. 요구사항은 하드웨어가 무엇을 틀리면 안 되는지 말한다. 성능 수치는 완성된 물건이 얼마나 잘 도는지 말한다. 이 둘을 섞는 순간 사양서가 주장으로 바뀐다. 캡처 장비를 검토하는 사람은 지금 보고 있는 숫자가 어느 쪽인지 물어야 한다. 제조사에 던질 질문 목록에 그 물음을 미리 적어 뒀다. 이 형태가 못 덮는 범위를 잘하는 것과 나란히 내놓기로 한 결정도 그 물음 앞에서 내렸다.

대신 붙잡은 제약

정확도 수치가 없는 상태에서 설계가 할 일은 선택지를 미리 닫지 않는 것이다. 의견이 아니라 산술에서 따라 나오는 제약이 셋 있다. 셋 다 나중에 소프트웨어로 되돌릴 수 없는 실수를 가리킨다. 클럭과 저장 포맷과 지오메트리 기록이다. 셋 중 하나라도 놓치면 나중에 어떤 모델을 붙여도 그 녹음에서는 두 대화가 갈리지 않는다.

마이크 채널은 전부 클럭 하나를 공유한다. 소리는 초당 약 343미터로 간다. 채널 둘 사이 타이밍 어긋남이 50마이크로초면 겉보기 경로 차이로 약 17밀리미터다. 소자 간격이 9센티미터쯤인 어레이에서 이 값은 약 10.7도의 방위 오차가 된다. 카운터 자리 둘 사이 각도보다 넓다. 이 정도 어긋남은 각자 발진기를 돌리는 USB 마이크를 여러 개 붙이면 공짜로 따라온다. 8시간 하루 동안 서로 어긋난 채 흘러간다. 공통 I2S 또는 TDM 비트클럭과 동기 ADC는 이걸 하드웨어 층에서 없앤다. 처리 사슬의 어느 단계도 나중에 복구하지 못한다. 여기 적은 값은 산술에서 곧장 따라 나온 요구사항이다. 만들어진 장비를 실제로 재서 얻은 숫자는 하나도 없다.

오디오는 48kHz 멀티채널 무손실로 저장한다. 48kHz에서 샘플 하나의 주기는 20.8마이크로초, 소리가 약 7밀리미터 가는 시간이다. 16kHz에서는 62.5마이크로초, 약 21밀리미터다. 빔포머가 쓸 수 있는 각도 분해능이 그만큼 영구히 깎인다. 손실 압축은 낮은 샘플레이트보다 더 나쁘다. Opus나 AAC의 멀티채널 모드는 채널 간 위상 관계를 보존하지 않는다. 빔포머가 다루는 신호가 바로 그 채널 간 위상이다. 사람 귀에 멀쩡한 파일이 분리에는 못 쓰게 된다. 3분의 1로 줄인 저장 용량은 한 번 아끼고 영원히 값을 치른다.

처리 순서도 같은 이유로 고정한다. pyannote 같은 화자 분리기는 멀티채널 입력을 내부에서 모노로 합친다. 어레이가 모으려고 만들어진 공간 정보가 그 자리에서 버려진다. 순서는 원본 보존, ODAS 같은 도구로 공간 분리, 16kHz 모노 다운믹스, 그다음 화자 분리와 전사여야 한다. 이 가운데 둘만 뒤집어도 4채널 어레이는 값비싼 단일 마이크가 된다.

방어할 결과가 나오기 전에 붙잡아 둔 설계 제약이다. 동의와 고지 문제를 다루는 방식도, 표시등에 끄기 스위치를 두지 않은 이유도 같은 자리에서 나왔다. 카운터 하나에서 두 사람이 8분을 말한다. 그 8분이 둘 다 남는지는 기능 목록이 정하지 않는다. 훨씬 앞에서 정해진다. 사슬의 어느 지점이 왼쪽과 오른쪽의 차이를 버렸는지가 전부다.