5. 데이터 확보 계획
⚠ 2026-08-28 방향 전환 — 이 페이지보다 결정 기록이 우선한다
도메인을 다산콜센터 하나로 줄이고 외국인 고객 지원을 차별점으로 세웠다
(_project/decisions/201, 비공개). 아래 본문의 금융보험·쇼핑·질병관리본부 서술은
그 시점의 사실이라 지우지 않았다 — 절대 원칙 8(“실패를 지운 기록은 기록이 아니다”)과
같은 이유로, 계획이 바뀐 사실 자체가 기록이다.
이 페이지에서 바뀐 것: 4개 도메인 배분이 무효다. 지식베이스 조항 102 → 20개(다산만), 골든셋 50 → 13건. 3주차 150건 확장은 다산 단일 기준으로 다시 짜야 한다. 외국인 화자 한국어 음성은 AI Hub 에 있다(dataSetSn=505 4,302시간 · 71479 1,500시간, 숙련도 4등급 라벨) — 2026-08-28 조사. 전날 「확보량 0건」이라 적은 것은 틀렸다. ⚠ 다만 44.1kHz 스튜디오 녹음이라 8kHz 통화와 다르다 — 다운샘플링해서 재고, 나온 수치는 상한으로 표기한다.
5.1 지식베이스 — 도메인 4종으로 분리 (2026-08-26 갱신)
가상 통신사 “한별텔레콤” 단일 지식베이스는 폐기했다. 실제로 확보한 데이터가 통신 도메인에는 없고, 아래 5.1-1절의 4개 도메인에만 있기 때문이다. 도메인별로 이용약관/안내지침 + 응대 매뉴얼 + 내부 처리 규정을 각각 두고, ES 인덱스도 도메인 필드로 구분해 적재한다. F-2가 참조하는 종결 요건도 해당 도메인 인덱스 안에 있다(F-2 적용 도메인: 금융보험·쇼핑. 미적용: 다산콜센터· 질병관리본부 — 1.4절).
- 응대 매뉴얼과 내부 처리 규정은 팀이 직접 작성한다(도메인별 가상 사업자/기관 기준). 단, 카테고리·고객의도 체계는 5.1-1절 실측 데이터를 따른다
- 약관 원문 전재는 저작권 문제 소지가 있다. 검색 인덱스 내부 저장은 문제없으나 화면 표시는 요약·해석 중심으로 하고 출처를 명시한다
- 실제 저장 위치:
knowledge-base/{finance,dasan,shopping,health}/— 구조는knowledge-base/README.md참고
5.1-1 데이터 소스 — AI Hub 「민원(콜센터) 질의-응답」
지식베이스의 카테고리·고객의도 체계가 근거로 삼는 실제 데이터셋이다. 음성이 아니라 전사된 QA 텍스트 + 라벨이며, 화자(고객/상담사)·발화문·고객의도·상담사의도·개체명· 지식베이스 참조 필드까지 포함한다.
| 도메인 | 세부 카테고리 (실제 라벨 폴더) |
|---|---|
| 금융보험 | 사고 및 보상 문의 · 상품 가입 및 해지 · 이체출금대출서비스 · 잔고 및 거래내역 |
| 다산콜센터 | 대중교통 안내 · 생활하수도 관련 문의 · 일반행정 문의 · 코로나19 관련 상담 |
| 쇼핑 (K쇼핑) | AS · 결제 · 교환 · 반품 · 배송 · 업무처리 · 주문 |
| 질병관리본부 | 건강질병 · 기타문의 · 약품식품 · 온라인신고 · 요양기관 현황 · 증상징후 · 진료비정보 |
로컬 보관 위치는 5.5-1절 참고. 근거·되돌리는 법:
_project/decisions/004-데모-도메인-4종-확정.md.
이 데이터셋의 QA 원문을 지식베이스 문서에 그대로 옮기지 않는다. 카테고리·의도 체계만 참고하고, 실제 조항·매뉴얼 문장은 팀이 새로 쓴다(CLAUDE.md 절대 원칙 6).
5.2 평가용 통화 음성 — AI Hub 실제 데이터
STT 파이프라인 동작 검증과 데모용 음성은 아래 데이터셋을 쓴다. 이 음성 데이터의 도메인은 5.1-1절의 4개 도메인과 별개다 — 통화 음성은 일반 상담 음성 코퍼스에서, 지식베이스 근거는 민원 QA 데이터셋에서 가져온다.
| 데이터셋 | 규모 | 특징 |
|---|---|---|
| AI Hub 「상담 음성」 | 3,000시간 | 교육·금융·통신판매, 가상 시나리오, 저작권 해결 완료 |
| AI Hub 「고객 응대 음성」 | 3,300시간 | 5개 클래스, 감정·의도 태깅 및 요약문 포함 |
| AI Hub 「저음질 전화망 음성」 | — | 실제 상담 환경 잡음 포함 |
| AI Hub 「민원(콜센터) 질의-응답」 | 4개 도메인(위 5.1-1절) | 텍스트 QA + 도메인/카테고리/의도 라벨. 지식베이스 근거로 사용, 음성 자체도 도메인 폴더별로 포함 |
| 서울 열린데이터광장 「행정 민원상담 음성」 | 56개 시나리오 유형 | 8kHz, 연령·지역·성별 조합. 다산콜(120) 실음성 |
주의: 휴대폰 본인인증이 필요하고 승인에 시간이 걸린다. 1주차 즉시 신청.
실제 데이터가 쓰이는 곳과 아닌 곳을 구분한다.
| 용도 | 데이터 |
|---|---|
| STT 파이프라인 동작 검증, 데모 | AI Hub 실제 음성 |
| 4.2절 오류 내성 실험 | 텍스트 레벨 통제 오류 주입 |
5.3 골든셋 구축 — 일정 재배치
문서 ID가 존재해야 정답 라벨을 붙일 수 있으므로, 문서 수집과 골든셋 대량 작성은 같은 주에 병렬 수행할 수 없다.
| 주차 | 작업 |
|---|---|
| 1주차 | 문서 수집 + 청킹 + ID 부여, 골든셋 10개 |
| 2주차 | 골든셋 50개 → 잠정 베이스라인 측정 |
| 3주차 | 골든셋 150개 → 공식 기준선 확정 |
2주차 측정값은 방향 확인용이며 회귀 검사에 고정하지 않는다. CI에 박히는 기준선은 150개 셋 완성 후 재측정값이다.
골든셋 스펙에 포함할 항목
- 도메인 (금융보험 / 다산콜센터 / 쇼핑 / 질병관리본부 중 하나)
- 고객 발화 스크립트
- 발화 종료 시각 (트리거 채점용, 4.1절)
- 이 시점에 표시되어야 할 문서 ID (정답, 도메인 접두어 포함 — 예: FIN-TERM-3.2)
- 표시되면 안 되는 문서 ID (오답 후보 — 같은 도메인 + 다른 도메인 오검색 케이스 포함)
- 컴플라이언스 위반 삽입 여부
- 개인정보 패턴 삽입 여부 (P1~P7 중, C-5 채점용)
- (F-2 케이스, 금융보험·쇼핑만 해당) 처리 유형 + 근거 필드 충족 상태 + 기대 판정
반영 완료 (2026-08-26): golden-set/v1-10.json(10건)을 4개 도메인 기준으로 전면
재작성했다 — 금융보험 4 · 쇼핑 3 · 다산콜센터 2 · 질병관리본부 1, F-2 케이스는 적용
도메인(금융보험·쇼핑)에서만 작성. 정답 문서 ID는 knowledge-base/의 실제 조항 ID
(도메인 접두어 포함)를 참조하며 깨진 참조는 없다. 지식베이스와 함께 팀 리뷰를 마쳤다
(_project/decisions/004-데모-도메인-4종-확정.md).
50건(2주차)·150건(3주차) 확장 시 도메인 간 비율은 아직 정하지 않았다 — 위 10건 비율은 그때의 참고치이지 확정된 배분이 아니다(티켓).
5.4 F·G 데이터
| 모듈 | 필요 데이터 | 확보 |
|---|---|---|
| F-2 | 처리 유형별 필수 확인 항목 | 가능 — 5.1절 인덱스에 포함, 팀이 규정 작성 |
| F-3 | 반복 문의 판정용 가상 이력 | 가능 — 합성 |
| G-2 | 전국 정신건강복지센터·자살예방센터 목록 | 가능 — 공개 데이터 |
| F-1 / G-1 | 실제 고위험 통화 | 불가능 |
5.5 데이터 한계 — 반드시 명시할 것
검증할 수 없는 것을 검증한 것처럼 제시하지 않는다.
| 항목 | 한계 |
|---|---|
| F-1 / G-1 탐지 성능 | 실제 데이터 확보 불가. 측정 불가 |
| C-5 마스킹 | 실제 통화의 개인정보 발화 패턴을 확보할 수 없다. “P1~P7 패턴 목록에 대한 누락 0건”으로 범위를 한정해 측정한다 |
| H-1 (부록 B) | AI Hub 감정 태깅은 폭언 라벨과 다르다. 분포 괴리 존재 |
| 4.2 오류 내성 | 통제된 합성 오류 기반. 실제 STT 오류 분포와 완전히 같지 않다 |
측정 불가능한 절대 규칙은 범위가 한정된 절대 규칙보다 나쁘다. C-5의 목표를 패턴 목록으로 한정하는 것은 완화가 아니라 검증 가능하게 만드는 조치다.
5.5-1 로컬 데이터 보관 위치
AI Hub Validation 세트(D60~D62, 라벨+원천 약 1.1GB)는 저장소 루트의 data/raw/aihub-ktelspeech/
아래에 D-코드별로 압축 해제해서 둔다. 「민원(콜센터) 질의-응답」데이터셋은
data/raw/aihub-minwon-qa/validation/{source,label}/<도메인명>/에 도메인·카테고리
폴더 그대로 둔다(예: .../label/금융보험/민원(콜센터) 질의응답_금융보험_사고 및 보상
문의_Validation.json). 원본 데이터는 재배포 금지 조항과 용량 문제로 .gitignore
처리되어 커밋되지 않으며, 각자 로컬에 내려받아 채운다. 상세 구조와 받는 법은
data/README.md 참고.
5.6 1주차 전제 확인 항목
착수 전에 확인하지 않으면 후속 설계가 흔들리는 항목들이다.
| # | 확인 대상 | 미확인 시 영향 |
|---|---|---|
| V1 | AI Hub 데이터의 채널 구성 → 확인 완료: 전부 모노. ktelspeech(8,000Hz)·krespspeech(16,000Hz)·lowquality-phone(8,000Hz) 세 데이터셋 wav 헤더 직접 확인 | A-2는 채널 분리로 우회 불가 — Google STT diarization 필수. 데모도 물리 2채널(브라우저 2대) 대체 필요 (리스크) |
| V2 | GPU 가용 여부 → 확인 완료: Apple M5 MacBook Air, 통합메모리 24GB. CUDA GPU 없음, PyTorch MPS 백엔드로 가속. bitsandbytes 등 CUDA 전용 양자화 도구는 사용 불가 | 생성 모델 크기 및 레이턴시 예산 → 소형 한국어 모델(polyglot-ko-1.3b 등)부터 MPS로 시작, 골든셋 실측 후 필요 시 단계적 상향 |
| V3 | Google STT 한국어 숫자 출력 형태 → 확인 완료: 케이스마다 일관되지 않음. 실제 AI Hub 오디오 3건(자릿수 낭독형/단위 낭독형 2종)으로 실측 | C-5 정규화 단계는 “STT가 항상 아라비아 숫자로 준다”고 가정할 수 없다 |
| V4 | Google STT 스트리밍 부분 결과 지연 → 확인 완료. 20.58초 실제 통화 음성을 100ms 청크로 실시간 페이싱 전송해 실측 | 자막 UI·트리거 설계의 지연 기준값으로 사용 |
V3 실측 상세 — 숫자 출력 형태
| 발화 유형 | 실제 발화(AI Hub 정답) | Google STT 출력 |
|---|---|---|
| 자릿수 낭독(에러/인증 코드) | “코드 팔육칠삼” (8673) | "코드 8 60분" — 오인식 (숫자 정규화 이전에 인식 자체가 틀림) |
| 단위 낭독(마이너스+금액) | “마이너스 천” (-1000) | "-1000이라고..." — 아라비아 숫자 + 부호로 완전 정규화 |
| 단위 낭독(금액+원) | “오천 원” (5000원) | "5천 원" — 부분 정규화 (숫자만 아라비아, 단위는 한글 유지) |
결론: 정규화 여부·형태가 케이스마다 다르고, 특히 저품질 통화 음성에서 자릿수 낭독형(인증번호류)은 오인식 위험이 크다. C-5 마스킹 정규식은 “숫자만 나온다”는 가정 없이 한글 단위 혼용·오인식 케이스까지 커버해야 한다. 재현 스크립트: scripts/test_stt_v3.py.
V4 실측 상세 — 스트리밍 부분 결과 지연
- 첫 interim 결과 도착: 전송 시작 후 962ms
- 부분 결과 총 개수: 199건 (오디오 20.58초 동안, 약 100~200ms 간격으로 갱신)
- 최종(FINAL) 결과 지연: 마지막 오디오 청크 전송 완료 후 +346ms
- 발화 중 pause가 있으면 그 지점에서 먼저 FINAL이 끊기고 다음 발화가 새 interim 스트림으로 이어짐 — 자막 UI는 “문장 단위 FINAL”을 기준선으로 삼을 수 있음
재현 스크립트: scripts/test_stt_v4_streaming.py. (측정치는 로컬 macOS + 가정용 회선 1회 실측값이며, 회선 상태에 따라 변동 가능 — 골든셋 규모 재측정 필요)