← Docs hub

Speaker Identity A2A Evidence And Gap Audit

이 문서는 화자 분리/인식 PoC와 Cloud A2A Task Manager 확장 문서의 요구사항 충족 상태를 증거 기준으로 점검한다.

목적은 “문서가 많다”가 아니라, 각 주장이 어떤 소스/계약/검증으로 뒷받침되는지와 제품화 전에 무엇이 더 필요한지를 명확히 남기는 것이다.

Evidence And Gap Audit

1. 감사 기준

항목 완료로 보는 증거 현재 상태
온디바이스 화자 등록/인식 PoC 분석 실제 소스 파일과 주요 함수/상수/제약이 문서화되어 있음 충족
diarization 기반 화자 분리 분석 segmentation/embedding 모델 경로와 segment 계약이 문서화되어 있음 충족
화자 안정화 정책 분석 boost, decay, speaker count gate가 문서화되어 있음 충족
Cloud A2A Task Manager 연결 분석 orchestrator.py, task_manager.py, session_state.py, memory_context.py 연결 지점이 문서화되어 있음 충족
speaker context 계약 제안 additive JSON 계약과 상태 전이가 문서화되어 있음 충족
메모리/개인화 확장 speaker-scoped memory, profile, authority policy가 문서화되어 있음 충족
서비스 시나리오 단일 화자, 다화자, 개인화, 권한, workflow owner 예시가 문서화되어 있음 충족
개인정보/안전 정책 raw audio 금지, Reference Embedding sync, Query Embedding 비저장, 삭제/동의/logging 기준이 문서화되어 있음 충족
제품 identity model OnDevice Voice ID 발급과 Cloud Person Profile 연결 관계가 문서화되어 있음 설계 충족, 구현 필요
테스트 계획 PoC, contract, memory, TaskManager, release gate가 문서화되어 있음 충족
실제 제품 통합 완료 ForegroundService/Cloud request에 speaker_context가 실제 삽입되고 E2E 검증됨 미충족, 후속 구현 필요
실기기 검증 완료 실제 디바이스에서 등록->인식->Cloud A2A->TaskManager까지 검증 로그가 있음 미충족, 후속 검증 필요

2. 요구사항별 근거

2.1 온디바이스 소스 레벨 구성

근거 문서:

근거 소스:

app/src/main/java/com/skmagic/ondeviceai/agent/service/module/SpeakerIdentificationEngine.kt
app/src/main/java/com/skmagic/ondeviceai/agent/service/module/DiarizationEngine.kt
app/src/main/java/com/skmagic/ondeviceai/agent/service/extension/SpeakerStabilityFeature.kt
app/src/main/java/com/skmagic/ondeviceai/agent/ui/SpeakerListActivity.kt
app/src/main/java/com/skmagic/ondeviceai/agent/ui/SpeakerHistoryActivity.kt
docs/SPEAKER_THRESHOLDS.md

판단:

2.2 Cloud A2A / Task Manager 연결

근거 문서:

근거 소스:

gemini/a2a/runtime/orchestrator.py
gemini/a2a/runtime/task_manager.py
gemini/a2a/runtime/session_state.py
gemini/a2a/runtime/memory_context.py
gemini/a2a/runtime/contracts.py

판단:

2.3 서비스 확장성

근거 문서:

정리된 확장 축:

판단:

3. 현재 남은 제품화 갭

갭 이유 후속 작업
speaker_context 실제 request 삽입 현재 문서는 계약 제안이며 제품 경로 삽입은 별도 구현 필요 온디바이스 Cloud request 생성부에 voice_context.speaker_context 추가
Cloud 정규화 구현 normalize_voice_context()가 아직 speaker_context 계약을 직접 강제하지 않을 수 있음 session_state.py에 default/validation 추가
TaskManager side-effect gate speaker_state 기반 실행 차단 정책은 문서 수준 task_manager.py에서 side-effect step 실행 전 정책 적용
speaker-scoped memory 현재 memory_update는 speaker scope 확장이 필요 memory_context.py에 speaker_id, privacy policy, no-write gate 추가
영속 저장 정책 등록 embedding/history의 제품 저장/삭제/암호화 정책 필요 저장소 구조, 삭제 API, consent state 설계
OnDevice Voice ID 현재 nickname 정제 문자열을 ID로 사용 opaque generator와 local repository 구현
Voice Sync Registry 제품 구현 Voice ID와 Reference Embedding을 동기화하고 사용자 정보에 연결할 저장소가 없음 sync/delete/lookup API와 DB 구현
등록 Sync Outbox Cloud offline 동기화 경로가 없음 raw 음성 없이 Voice ID와 Reference Embedding만 재전송하는 idempotent outbox 구현
실기기 E2E evidence 현재 문서화와 정적 검증 중심 등록->인식->Cloud->TaskManager 로그 수집
threshold 튜닝 현재 threshold는 PoC 기준 거리/소음/다화자/언어별 test set 기반 튜닝

4. 다음 구현 순서

상세 티켓 분해와 파일별 수정 지점은 Implementation Roadmap을 기준으로 본다.

  1. OnDevice에서 opaque Voice ID와 local template repository를 구현한다.
  2. 5세트 등록 controller와 Voice ID/Reference Embedding Sync Outbox를 구현한다.
  3. Cloud에 Voice Sync Registry, delete/resolve와 Person mapping을 구현한다.
  4. Cloud 호출 payload에 speaker-context-v2를 additive field로 포함한다.
  5. Cloud가 person_context를 만든 뒤 person scope memory와 권한을 적용한다.
  6. TaskManager side-effect gate를 적용한다.
  7. 등록/ID 발급/사용자 조회/삭제 E2E 로그를 수집한다.

5. 완료 판단 기준

이 축을 제품 반영 완료로 보려면 아래 증거가 필요하다.

기준 필요한 증거
계약 구현 on-device request log에 voice_context.speaker_context가 포함된 실제 payload
Cloud 정규화 unit test 또는 log에서 speaker state default/validation 확인
메모리 분리 동일 발화라도 speaker_id별 memory write/read가 분리되는 테스트
권한/안전 unknown/multi/overlap 상태에서 side-effect task가 block/reprompt 되는 테스트
TaskManager owner 복합명령 후속 turn에서 동일 화자/다른 화자 정책이 구분되는 테스트
개인정보 일반/등록 raw audio Cloud 미전송, 임시 파일 삭제, Reference Embedding 암호화·삭제, Query Embedding 비저장, Voice ID masking 확인
실기기 실제 디바이스 logcat 또는 Cloud request/response evidence

6. 현재 결론

현재 문서 축은 PoC 분석과 확장 설계 관점에서는 충족 상태다.

하지만 제품 기능 완료 상태는 아니다. 제품 완료로 전환하려면 speaker context를 실제 온디바이스 request와 Cloud A2A runtime에 연결하고, 실기기 evidence를 확보해야 한다.

따라서 이 세션의 현재 위치는 다음과 같이 본다.

소스 분석 완료
계약 초안 완료
서비스 확장 설계 완료
테스트 계획 완료
제품 코드 통합 미완료
실기기 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