Skip to content

v1.5.1: 로컬 TTS/대화형 STT 완성, LiteRT GPU→CPU 폴백, SDengine 실제 구동, OOM 보호 재설계

Choose a tag to compare

@zmxnpquryet-gif zmxnpquryet-gif released this 20 Sep 16:51
· 33 commits to main since this release

주요 변경

음성 (STT / TTS)

  • 대화 모드 로컬 STT 정상화 — 녹음 상태 고착 버그를 고치고, 무음 감지 자동 종료(엔드포인팅)를 넣어 핸즈프리 루프가 실제로 돌아갑니다.
  • 한국어 신경망 TTS(Supertonic 3 int8, ~145MB) 실제 동작 — 다운로드·설치·선택·스트리밍 재생, 화자 10명/속도 조절, 시스템 TTS는 옵션/폴백으로 유지.
  • TTS가 조용히 앱을 죽이던 JNI 콜백 ABI 크래시 수정 (기기에서 SIGABRT로 재현 → 명시적 콜백 클래스로 해결).
  • 삼성 기기에서 소리가 안 나던 오디오 라우트 수정 (USAGE_ASSISTANT → USAGE_MEDIA: 어시스턴트 스트림 볼륨이 2/15로 분리돼 있었음).

엔진

  • LiteRT: OpenCL/NPU 프리플라이트 정책, 백엔드별 실패 사유 집계, 실패한 엔진 정리, 드라이버 실패 기억(litert_gpu_unavailable), 그리고 추론 중 GPU→CPU 자동 폴백(같은 요청 안에서 재시도).
    실기기에서 확인된 실제 "OpenCL" 실패는 로드가 아니라 샘플러가 libLiteRtTopKOpenClSampler.so를 못 여는 것이었습니다.
  • SDengine: 실제 런타임으로 연결(로드/생성/중단), MoE GGUF 자동 감지·라우팅, 모델별 런타임 오버라이드, 로드 실패 시 llama.cpp 1회 재시도. TEST 경고는 그대로 유지.

메모리 보호

  • in-flight 마커로 비정상 종료(OS 킬)를 다음 실행에서 감지 → 감축 레벨 0~4 자동 적용.
  • 모델 로드 전 실제 필요 메모리 추정(가중치+KV 캐시+버퍼) → 컨텍스트 자동 하향 또는 로드 거부.
  • 생성 중 메모리 감시로 위험 시 안전 중단, Java OOM/trim 이벤트 기록, 설정에 레벨·사고 이력·로그 뷰어·초기화 추가.

UI

  • 설정 / API 서버 / 모델 관리 / 드로어에 하단 인셋 적용 — 태스크바에 마지막 항목이 가려지던 문제 수정(드로어 "설정" 항목은 탭 자체가 안 되던 문제).
  • 음성 화면을 유연한 오브 영역 + 높이 제한 스크롤 컨트롤로 재구성 — 화면이 짧아도 잘리지 않고, 화자 10명이 모두 표시됩니다.
  • libsdengine.so 16KB 페이지 정렬.

⚠️ 서명 키 변경 안내

기존 업로드 키(my-upload-key.jks)의 비밀번호를 확인할 수 없어 새 업로드 키로 서명했습니다.
그래서 v1.4.0 이하 설치본 위에는 업데이트 설치가 되지 않습니다 — 기존 앱을 삭제한 뒤 새로 설치해 주세요. (이번 이후 버전부터는 정상 업데이트됩니다.)

검증

  • 단위 테스트: :engine 42개 / :app 78개 전부 통과
  • 계측 테스트: 실기기(Galaxy S23 FE, Android 16)에서 14 + 3개 통과 (로컬 TTS 합성·재생·완료 콜백 포함)