녹취 메타데이터 추출과 매핑: 검색 가능한 상태로
녹취 이관에서 가장 흔한 실패는 음성이 안 나오는 것이 아니라, 나왔는데 특정 한 건을 찾지 못하는 것입니다. 검색에 필요한 항목은 음성 파일이 아니라 플랫폼 데이터베이스에 있습니다. 함께 내보낼 항목, 대응 관계 고정, 시각 처리, 검색 가능한 산출물의 형태를 정리합니다.
업데이트
이관을 멈추게 하는 것은 대개 음성이 아니다
녹취 이관 프로젝트가 중간에 멈출 때, 원인이 음성 자체인 경우는 드뭅니다. 독자 컨테이너는 파싱되고, 코덱도 판별되고, WAV도 일괄로 나오고, 수십만 건의 파일이 새 아카이브에 가지런히 놓입니다. 그때 컴플라이언스 부서에서 "몇 년 몇 월 며칠, 어느 상담원이 어느 번호와 통화한 그 한 건을 뽑아 달라"는 요청이 오고, 아무도 응하지 못합니다. 어떤 한 건을 특정할 수 있는지를 결정하는 항목은 대부분 음성 파일 안에 없고, 원 플랫폼의 데이터베이스에 있기 때문입니다. 통화 시작 시각, 상담원 ID, 발신 번호, 수신 번호, 통화 방향(수신인지 발신인지), 통화 시간, 그리고 이 통화를 업무 시스템과 이어 주는 거래 일련번호. 이 항목들이 빠진 산출물은 재생만 될 뿐 검색은 되지 않습니다. 그리고 재생만 되는 것의 가치는 거의 없습니다. 삼십만 건을 한 건씩 들어 보는 사람은 없습니다.
대응 관계가 깨지는 두 가지 방식: 끊기거나, 어긋나거나
음성과 메타데이터의 대응은 보통 원본 데이터베이스에서 저장 위치를 가리키는 열로 성립합니다. 통화 레코드마다 녹취 파일의 경로, 파일명 또는 내부 ID를 들고 있는 형태입니다. 약점은 이 대응이 파일 자체의 속성이 아니라 외부의 약속에 불과하다는 점입니다. 내보내는 과정에서 파일명을 바꾸거나, 날짜별 폴더로 재배치하거나, 여러 배치를 하나의 평평한 디렉터리에 합치다가 이름이 충돌하면 그것만으로 대응은 끊깁니다. 끊긴 뒤에 복원하려면 음성 쪽에 남은 몇 안 되는 물리적 특징, 즉 길이, 파일 크기, 수정 시각으로 추측하는 수밖에 없습니다. 수십만 건 중에는 같은 초에 시작해 같은 길이로 끝나는 통화가 대량으로 존재하며, 그런 추측의 결과를 규제 기관 제출에 쓸 수 있는 사람은 없습니다. 대응 관계는 내보내기의 첫 단계에서 고정해야 하는 것이지, 마지막에 다시 짜맞출 것이 아닙니다. 또 하나의 깨지는 방식은 더 조용합니다. 대응은 끊기지 않았는데 시각 자체가 틀린 경우입니다. 플랫폼 데이터베이스가 무엇을 저장하고 있는지는 도입 건마다 확인해야 합니다. 시간대 표시 없이 서버 로컬 시각을 담은 것, UTC를 담은 것, 테이블에 따라 둘이 섞인 것이 모두 있습니다. 오프셋이 없으면 그 열은 모호하며, 시간대를 넘나드는 조회에서는 실제 통화에서 몇 시간씩 어긋나고, 서머타임 전환일에는 한 시간이 중복되거나 통째로 사라집니다. 안전한 방법은 세 가지를 함께 내보내는 것입니다. 변환된 UTC 타임스탬프, 원본 값 그대로, 그리고 그 원본 값이 속한 시간대와 오프셋. 셋이 다 있으면 나중에 어긋남이 생겨도 되짚을 수 있습니다. 변환 결과만 남기면 오류는 영원히 보이지 않게 됩니다.
검색 가능한 산출물은 어떤 모습인가
- 메타데이터를 부속물이 아니라 주 색인으로 다룹니다: 원본 데이터베이스의 통화 레코드 한 건을 한 행으로 두고, 각 행에 특정 음성 파일을 가리키는 상대 경로를 담되 그 열은 전량 범위에서 유일해야 합니다.
- 시각은 세 개의 열로 나눕니다: UTC 타임스탬프, 원본 값 그대로, 그리고 그 값이 속한 시간대 또는 오프셋. 시각이라는 열 하나로는 부족합니다.
- 항목명과 값의 대응을 문서로 명시합니다. 통화 방향이 어떤 시스템에서는 1과 2, 다른 시스템에서는 I와 O일 수 있고, 상담원 ID가 두 테이블에서 서로 다른 체계일 수도 있습니다. 이 대응은 스크립트 안이 아니라 문서에 남아야 합니다.
- 바로 적재할 수 있는 구조화 포맷(CSV, JSONL, Parquet 등)을 고르고, 사람이 손으로 관리하는 스프레드시트는 피합니다. 수십만 행은 스프레드시트의 행 수 상한을 넘고 기본키 제약도 걸 수 없습니다.
- 내보낸 직후 양방향 대조를 수행합니다: 모든 메타데이터 행이 파일로 해결되고, 모든 파일이 다시 행으로 해결되어야 합니다. 양쪽 차집합이 모두 비어 있어야 하며 그 결과를 기록으로 남깁니다.
- 원본 데이터베이스의 건수, 실제로 내보낸 건수, 누락 건수, 그리고 누락이 몰린 시기를 검증 보고서에 적습니다. 그 보고서가 검색 가능하다는 사실의 증명입니다.
상하이 완춘의 방식
저희는 콜센터 과거 녹취의 파싱과 이관을 오랫동안 수행해 왔으며, 메타데이터를 음성에 딸린 부가물로 다루지 않습니다. 음성과 동등한 납품물로 보고, 검색에 필요한 항목 전부를 원 플랫폼 데이터베이스에서 추출해 파싱된 음성과 건별로 대응시켜 고정하고, 시각 항목은 위에서 설명한 세 열 방식으로 내보냅니다. 산출물은 검색 시스템에 그대로 적재할 수 있는 구조화된 목록이며, 원본 데이터베이스와 건별로 대조한 검증 보고서를 함께 제공합니다. 목표는 언제나 같습니다. 과거 녹취를 특정 벤더에서 떼어내어, 영구히 온라인 상태로 언제든 꺼내 쓰고 검색하고 분석할 수 있게 만드는 것입니다.