← Docs hub

실제 대화 화자 식별 설계

상위 기준: 보이스 프로필 등록 제품 구현 기준서 8장

이 문서는 등록 이후 실제 음성 턴에서 수행되는 현재 CPU 식별 경로를 상세화한다.

현재 런타임 화자 식별

식별 흐름 크게 보기

현재 구현

  1. AudioRecordManager가 기존 WUW/STT 마이크 입력을 수집한다.
  2. ForegroundService.stopRecording()이 post-WUW 발화 샘플을 확정한다.
  3. 같은 샘플을 STT decode와 SpeakerTurnAnalyzer.analyze(samples)에 분기한다.
  4. SpeakerIdentificationEngine이 Query Embedding을 생성한다.
  5. 로컬 SpeakerProfileStore의 Reference Embedding들과 비교한다.
  6. threshold를 넘는 최적 Voice ID를 현재 턴의 화자로 사용한다.

화자 식별 때문에 두 번째 AudioRecord를 열지 않는다. Query Embedding도 파일로 저장하거나 DeviceAgent로 전달하지 않는다.

판정과 사용

결과 현재 동작 제품 목표
MATCH 로컬 Voice ID와 닉네임 사용 가능 Voice ID로 Cloud 사용자 정보 조회
LOW_CONFIDENCE 식별하지 않음 재확인 또는 비개인화
NO_MATCH 게스트 처리 비개인화 유지
Cloud offline 현재 조회 자체가 없음 기본 기기 기능은 계속 동작

Cloud Profile API와 계정 권한 조회는 아직 연결되지 않았다. 따라서 현재 CPU PoC에서 표시되는 닉네임은 OnDevice 프로필의 로컬 표시명이며 Cloud 사용자 정보가 아니다.

책임 경계

판단 책임자
발화 임베딩 생성 OnDevice Agent Service
등록 화자와 일치 여부 OnDevice Agent Service
Voice ID에 연결된 계정·동의·권한 향후 Profile Cloud
최종 개인화 허용 제품 정책 + Cloud 정책

Voice ID 일치만으로 결제, 보안, 개인정보 접근 권한을 부여하지 않는다.

데이터 경계

남은 검증

  1. 실제 사용자·환경별 FAR, FRR, EER과 threshold를 측정한다.
  2. 등록 인원 증가에 따른 메모리와 검색 지연을 측정한다.
  3. 겹침 발화와 짧은 발화의 보수적 fallback을 확인한다.
  4. Profile Cloud 조회 실패 시 비개인화 fallback을 E2E로 검증한다.

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date