Speaker Identity A2A Evidence And Gap Audit
이 문서는 화자 분리/인식 PoC와 Cloud A2A Task Manager 확장 문서의 요구사항 충족 상태를 증거 기준으로 점검한다.
목적은 “문서가 많다”가 아니라, 각 주장이 어떤 소스/계약/검증으로 뒷받침되는지와 제품화 전에 무엇이 더 필요한지를 명확히 남기는 것이다.
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
판단:
- 현재 PoC의 구조 분석은 충분히 문서화되어 있다.
- 다만 이 분석은 PoC 경로 기준이다. 실제 제품 E2E에 speaker context가 연결됐다는 의미는 아니다.
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
판단:
- Cloud가 직접 화자를 분석하지 않고 온디바이스 산출물인
speaker_context를 받아 사용하는 경계가 타당하다. - 현재 문서는 additive field 방식의 계약 제안까지 포함한다.
- 실제 Cloud 코드에
speaker_context를 정규화하고 TaskManager 정책에 반영하는 구현은 후속 작업이다.
2.3 서비스 확장성
근거 문서:
정리된 확장 축:
- 단일 화자 안전 확인
- 다화자/겹침 발화 차단
- 사용자별 대화 memory 분리
- speaker profile 기반 개인화
- authority/guest/child 권한 정책
- 복합명령 workflow owner 유지
- takeover/confirmation 정책
판단:
- 서비스 확장 방향은 문서화되어 있다.
- 제품 반영 전에는 speaker_id 저장/삭제/동의와 권한 정책 소유자를 확정해야 한다.
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을 기준으로 본다.
- 온디바이스에서 speaker context DTO를 정의한다.
- PoC speaker identification 결과를 DTO로 변환하는 adapter를 만든다.
- Cloud 호출 payload의
voice_context에 speaker context를 additive field로 포함한다. - Cloud
normalize_voice_context()에서 speaker context 기본값과 허용 상태값을 정규화한다. memory_update에 speaker scope를 추가하되 unknown/ambiguous 상태에서는 write를 제한한다.- TaskManager side-effect gate에서
speaker_state,safety_gate,authority_level을 확인한다. - 등록/인식/다화자/겹침/복합명령 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 검증 미완료