← 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/embedding/cloud transfer/delete/consent/logging 기준이 문서화되어 있음 충족
제품 identity model Voice ID, 바이탈 사인 Face ID, 앱 계정, Google 계정 연동 관계가 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 설계
Identity Link 제품 구현 Voice ID, Vital Face ID, Account, Google 계정을 연결하는 실제 Person Profile 저장소 필요 Identity Link API/DB/앱 UI 설계
실기기 E2E evidence 현재 문서화와 정적 검증 중심 등록->인식->Cloud->TaskManager 로그 수집
threshold 튜닝 현재 threshold는 PoC 기준 거리/소음/다화자/언어별 test set 기반 튜닝

4. 다음 구현 순서

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

  1. 온디바이스에서 speaker context DTO를 정의한다.
  2. PoC speaker identification 결과를 DTO로 변환하는 adapter를 만든다.
  3. Cloud 호출 payload의 voice_context에 speaker context를 additive field로 포함한다.
  4. Cloud normalize_voice_context()에서 speaker context 기본값과 허용 상태값을 정규화한다.
  5. memory_update에 speaker scope를 추가하되 unknown/ambiguous 상태에서는 write를 제한한다.
  6. TaskManager side-effect gate에서 speaker_state, safety_gate, authority_level을 확인한다.
  7. 등록/인식/다화자/겹침/복합명령 owner 변경 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에서 동일 화자/다른 화자 정책이 구분되는 테스트
개인정보 등록 삭제, history 삭제, raw audio/cloud 미전송 정책 확인
실기기 실제 디바이스 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