피드로 돌아가기
Dev.toAI/ML
원문 읽기
On-device Whisper 기반 AI 팟캐스트 플레이어 구현 및 Android 최적화
Shipping an Android podcast player with on-device Whisper — 6 lessons from a Czech indie launch
AI 요약
Context
개인정보 보호를 위해 오디오 데이터의 외부 유출을 차단하는 On-device AI 전사 시스템 구축 필요. Flutter 기반 환경에서 Android NDK 버전 충돌 및 시스템 자원 경합으로 인한 안정성 확보가 핵심 과제로 대두.
Technical Solution
- whisper_ggml 바인딩 사용을 위해 Android NDK 29.0.13113456 강제 적용 및 CI 단계에서의 패치 스크립트 자동화 구현
- 배터리 소모 최소화를 위해 50% 임계값 기준 충전 중 상태에서만 Transcription을 수행하는 큐잉 시스템 설계
- NoiseDetectionService를 통한 block/unblock 프로토콜 도입으로 Microphone 점유 권한 충돌 및 ERROR_NO_MATCH 방지
- SpeechRecognizer 시작 전 200ms Grace Window를 설정하여 이전 AudioRecord의 완전한 해제 보장
- R8 Resource Shrinking으로 인한 런타임 Exception 방지를 위해 keep.xml을 통한 Drawable 리소스 정적 참조 명시
- Gemini 2.5 Flash 기반의 2-Pass 번역 파이프라인을 구축하여 22개 언어 로컬라이제이션 자동화
실천 포인트
- R8 리소스 최적화 사용 시 동적 룩업(getIdentifier) 대상 리소스는 반드시 keep.xml에 명시했는가? - 시스템 API(Microphone, Camera 등)를 공유하는 서비스 간에 명확한 권한 획득/해제 프로토콜과 시간적 여유(Grace Window)를 두었는가? - On-device 모델 실행 시 배터리 임계값 기반의 실행 조건(Charging only)을 설정하여 사용자 경험을 보호했는가?