Repository navigation
Releases
SoundVisualizer for Android v1.8.4
SoundVisualizer for Android v1.8.4
v1.8.3에 개발자 모드 표시 수정 하나를 더한 버전입니다. 일반 사용자 화면과 소리 판정, 진동은 v1.8.3과 같습니다.
바뀐 것
- 개발자 모드 표시: 조기 표시(
SPEECH ~PREVIEW)일 때 긴 소리 이름이 오면 첫 줄이 두 줄로 꺾여 표시 높이가 흔들렸습니다. 한 줄(58자)을 넘으면 이름 끝을 말줄임표로 줄입니다. 개발자 기록(CSV)에는 온전한 이름이 남습니다. (#461)
v1.8.3에서 바뀐 것 (이 버전에도 들어 있습니다)
- 말소리가 시작될 때 '사람 소리' 색이 한순간 환경음으로 바뀌었다 돌아오던 깜빡임을 없앴습니다. (#456)
- 음성 감지 모델이 깨진 값을 한 번 내도 조기 표시가 꺼지지 않습니다. (#456)
- 개발자 기록 맨 끝에
speech_preview열을 더했습니다. (#456)
설치
아래 SoundVisualizer-v1.8.4.apk를 받아 설치합니다. 서명 키가 이전 버전과 같아, 덮어 설치하면 설정이 그대로 남습니다.
확인한 것
- 단위 시험 832개, 린트, 에뮬레이터 계측 시험 통과
- 배포된 APK의 버전, 서명 키, 코드 난독화 예외 목록, 네이티브 함수
확인하지 못한 것
- 테스트폰이 연결되어 있지 않아 실제 폰에서는 확인하지 못했습니다.
SoundVisualizer for Android v1.8.3
SoundVisualizer for Android v1.8.3
말소리가 시작될 때 '사람 소리' 색을 먼저 보여 주는 기능(조기 표시)을 다듬은 버전입니다. 소리 판정 자체와 위협음, 진동, 잠금 화면 알림은 v1.8.2와 같습니다.
바뀐 것
- 말소리가 시작될 때의 깜빡임: 먼저 띄운 '사람 소리' 색이 다음 판정보다 먼저 사라져, 사람 소리 → 환경음 → 사람 소리로 한순간 바뀔 수 있었습니다. 먼저 띄운 색을 붙잡아 두는 시간을 0.275초에서 0.35초로 늘려, 판정 계산이 느린 폰에서도 다음 판정까지 이어지게 했습니다. (#456)
- 사람 소리가 처음 뜨는 빠르기는 그대로입니다.
- 말이 아주 짧게 나고 바로 조용해지면 사람 소리 색이 최대 0.075초 더 남습니다.
- 조기 표시가 조용히 꺼지던 경우: 음성 감지 모델이 깨진 값을 한 번 내면 다시 켤 때까지 조기 표시가 꺼졌습니다. 이제 상태를 비우고 계속 동작합니다. (#456)
- 개발자 기록: CSV 맨 끝에
speech_preview열을 더해, 조기 표시로 보인 줄을 정식 판정과 구분합니다. 기존 열의 차례는 그대로입니다. (#456)
설치
아래 SoundVisualizer-v1.8.3.apk를 받아 설치합니다. 서명 키가 이전 버전과 같아, 덮어 설치하면 설정이 그대로 남습니다.
확인한 것
- 단위 시험 831개, 린트, 에뮬레이터 계측 시험 통과(깨진 값을 넣어도 조기 표시가 계속 도는지 포함)
- 배포된 APK의 버전, 서명 키, 코드 난독화 예외 목록, 네이티브 함수
확인하지 못한 것
- 테스트폰이 연결되어 있지 않아 실제 폰에서는 확인하지 못했습니다. 0.35초는 Windows 판에서 잰 깜빡임과 "판정 계산이 0.1초 걸리는 폰까지 이어진다"는 계산으로 정한 값이고, 폰에서 표시 시각을 직접 잰 값은 아닙니다.
SoundVisualizer for Android v1.8.2
SoundVisualizer for Android v1.8.2
v1.8.1의 문구를 바로잡은 버전입니다. 소리를 받고 그리고 진동하는 동작은 v1.8.0과 같습니다.
바뀐 것
- 외부 사운드 모드의 진동 안내: "사람 소리은 ‘느림’까지만 …"으로 나오던 조사 오류를 고쳤습니다. 이제 "사람 소리 진동은 ‘느림’까지만 선택할 수 있습니다"로 나옵니다. (#451)
- 한국어 문구: '고르기', '고릅니다'로 쓰던 8곳을 다른 화면과 같이 '선택'으로 맞췄습니다. (#451)
- 튜토리얼 3쪽 (일본어·인도네시아어·태국어·터키어): 사람 소리의 이름과 예시가 같은 낱말이라 두 번 보이던 것을 고쳤습니다. 예: 일본어 "人の声 人の声" → "人の声 話し声" (#451)
- 문서: README에 사람 소리 조기 표시 설명을 더하고, 설계 문서의 옛 이름 '대화음'을 '사람 소리'로 바꿨습니다.
설치
아래 SoundVisualizer-v1.8.2.apk를 받아 설치합니다. 서명 키가 이전 버전과 같아, 덮어 설치하면 설정이 그대로 남습니다.
확인한 것
- 단위 시험 826개, 린트, 에뮬레이터 계측 시험 통과
- 배포된 APK의 버전, 서명 키, 코드 난독화 예외 목록, 네이티브 함수
확인하지 못한 것
- 테스트폰이 연결되어 있지 않아 실제 폰에서는 확인하지 못했습니다. 바뀐 것은 문구뿐이고, 소리 받기·그리기·진동 코드는 v1.8.0과 같습니다.
SoundVisualizer for Android v1.8.1
SoundVisualizer for Android v1.8.1
v1.8.0을 다듬은 버전입니다. 소리를 받고 그리고 진동하는 동작은 v1.8.0과 같고, 화면 문구와 링크를 고쳤습니다.
바뀐 것
- 튜토리얼 2쪽: 외부 사운드 모드를 켠 폰에서도 다른 폰과 똑같이 "왼쪽·오른쪽을 구분합니다"가 나옵니다. 지금까지는 그 모드에서만 "방향은 아직 가운데로만 그립니다"가 나와 폰마다 설명이 달랐습니다. (#444)
- 다른 언어의 '사람 소리' 이름: 기침, 재채기, 숨소리까지 들어가는 종류라서, 한국어·영어와 같이 '사람이 내는 소리'라는 뜻의 이름으로 바꿨습니다. 중국어는 이미 같은 뜻이라 그대로입니다. (#446)
- 예: 독일어 Menschliche Laute, 일본어 人の声, 스페인어 Sonidos humanos, 힌디어 इंसानी आवाज़ें
- 저장소 주소: 저장소가 SOVIS-Team 조직의 SoundVisualizer-Android로 옮겨졌습니다. 도움말 탭의 제보 버튼이 새 저장소의 이슈 화면을 엽니다. 옛 주소도 새 주소로 연결됩니다. (#442)
설치
아래 SoundVisualizer-v1.8.1.apk를 받아 설치합니다. 서명 키가 이전 버전과 같아, v1.8.0 위에 덮어 설치하면 설정이 그대로 남습니다.
확인한 것
- 단위 시험 822개, 린트, 에뮬레이터 계측 시험 통과
- 배포된 APK의 버전, 서명 키, 코드 난독화 예외 목록, 네이티브 함수
확인하지 못한 것
- 테스트폰이 연결되어 있지 않아 실제 폰에서는 확인하지 못했습니다. 바뀐 것은 문구와 링크뿐이고, 소리 받기·그리기·진동 코드는 v1.8.0과 같습니다.
v1.8.0 — 쉬운 설정과 사람 소리, 잠금을 풀면 바로 다시 보이는 오버레이
v1.7.2 위에 지우지 않고 설치하면 됩니다. 서명 키가 같아 설정이 그대로 남습니다.
바뀐 것
- 설정 탭에 '쉬운 설정'이 생겼습니다(#408). 그림을 보고 선택하는 화면입니다. 1차 실증에서 "설정이 어렵다"는 의견이 나와 만들었습니다.
- 잠금을 풀면 오버레이가 바로 다시 보입니다(#401). Galaxy S25+(안드로이드 17)에서 잠금을 푼 뒤 앱 화면을 열기 전까지 오버레이가 보이지 않던 결함을 고쳤습니다.
- '대화음'이 '사람 소리'가 되었습니다(#426, 팀원 기여). 말소리뿐 아니라 재채기·기침·숨소리도 사람 소리로 보여 줍니다. 한국어와 영어 이름이 바뀌었고, 다른 언어는 다음 버전에서 맞춥니다.
- 사람 소리를 조금 더 일찍 표시합니다(#423, 팀원 기여). 말소리만 가려내는 작은 AI(Silero)를 함께 돌립니다. 말이 시작되면 확정되기 전에 노란색을 먼저 잠깐 띄웁니다.
- 진동, 잠금 화면 위협음 알림, 위협음 표시는 그대로입니다.
- 녹음 파일로 진단했을 때 첫 표시가 중앙값으로 약 0.1초 빨라졌습니다. 실제 폰에서 잰 값은 아닙니다.
- 상단바·알림 아이콘을 앱 아이콘 모양으로 바꿨습니다(#404).
- 화면 읽어주기와 번역을 다듬었습니다(#434).
- 쉬운 설정의 선택지는 보이는 순서대로 읽힙니다.
- 포르투갈어·터키어·폴란드어에서는 화면의 소리 종류 이름이 읽는 이름에도 들어갑니다.
- 독일어처럼 긴 낱말은 하이픈을 넣어 줄을 바꿉니다.
알아 둘 점
- 앱 크기가 약 2.3MB 늘었습니다(Silero 모델).
- 사람 소리 조기 표시는 실행하는 동안 늘 함께 돌아서 CPU 를 조금 더 씁니다. Galaxy S25+ 에서 외부 사운드 모드로 5분씩 켜고 끄며 비교했습니다.
- 앱 CPU(코어 하나 기준): 41.9% → 46.3%. 그중 Silero 몫이 약 5% 입니다.
- 발열 단계는 둘 다 정상(0)이었습니다.
- AI 분류는 참고용입니다. 안전이 걸린 상황에서 이 앱을 유일한 수단으로 쓰지 마세요.
확인한 것
- 시험: 배포한 코드(main
654b1cb, develop64891ef와 같은 내용)에서 유닛 테스트 822개가 통과했습니다. Lint 는 기존 경고 1건(의존성 새 버전 안내)뿐입니다.- develop CI(빌드·유닛·에뮬레이터 계측)는 버전 번호만 다른 같은 코드
1121cea에서 통과했습니다.
- develop CI(빌드·유닛·에뮬레이터 계측)는 버전 번호만 다른 같은 코드
- Galaxy S25+(안드로이드 17), release 빌드: 소리와 앱 진동을 막고 확인했습니다.
- 쉬운 설정 화면이 제대로 그려집니다. '자세한 설정' 칸을 누르면 크기 칸은 그 모드의 크기로, 진동 칸은 그 종류의 진동으로 갑니다.
- 진동 미리보기 경로가 막힌 채로 돌았고, 앱이 꺼지지 않았습니다. v1.7.0 의 충돌이 났던 경로입니다.
- 폰 소리 모드와 외부 사운드 모드 모두 실행·종료가 됐습니다. 상단바 아이콘이 새 아이콘으로 나왔습니다.
- 잠금을 푼 그 1초 안에 오버레이가 다시 그렸습니다. 잠금 풀림 신호를 일부러 무시한 시험용 빌드로도 지문 3번·패턴 2번을 풀어 봤고, 모두 멈추지 않았습니다.
- 화면이 저절로 꺼진 뒤 잠기기 전에 다시 켰을 때, 0.5초 안에 다시 그렸습니다. 이전 빌드는 약 2초였습니다.
- Silero 를 켠 빌드와 끈 빌드를 각각 5분씩 썼고, 앱이 꺼지지 않았습니다.
- 올라온 APK: 버전 1.8.0(14), targetSdk 37, arm64-v8a.
- 이전 버전과 같은 서명 키(SHA-256
f6a88fab…)라 지우지 않고 위에 설치하면 됩니다. - R8 유지 규칙 14개가 그대로 있고, 네이티브 함수 6개가 들어 있습니다.
- APK SHA-256
e17f093ac8281ba0f8a1a343abc696fa06bf49de2ca4e23efabdd0044fa4b59b.
- 이전 버전과 같은 서명 키(SHA-256
확인하지 못한 것
- 진동을 직접 느끼는 확인은 이번에 다시 하지 않았습니다. 쉬운 설정의 진동은 10/22 오전에 팀원이 폰으로 확인했고, 그 뒤로 진동 코드는 바뀌지 않았습니다.
- 오래 켜 둘 때의 발열. Silero 를 켜고 끈 비교는 5분씩만 했습니다.
- Galaxy S21 Ultra, S22(안드로이드 12)에서의 동작
- 한국어·영어 외 16개 언어의 '사람 소리' 이름
v1.7.2 — 색이 바뀌는 반응이 조금 빨라졌습니다
실증에 쓰는 버전입니다. v1.6.0·v1.7.0·v1.7.1 위에 지우지 않고 설치하면 됩니다. 서명 키가 같아 설정이 그대로 남습니다.
바뀐 것
- 색이 바뀌는 반응이 조금 빨라졌습니다(#379, 팀원 기여). AI 가 소리 종류를 판단하는 간격이 0.25초로 일정해졌습니다. 예전에는 판단을 마친 뒤 0.25초를 쉬어서 실제 간격이 0.27초쯤이었습니다.
- Galaxy S25+ 에서 결과 간격 중앙값이 0.273초에서 0.250초가 됐습니다. 팀원이 써 보았을 때도 반응이 빨라진 것이 느껴졌습니다.
- 판단이 오래 걸리는 느린 폰에서도 판단 사이에 최소 0.1초는 쉬어, 쉬지 않고 계속 돌지 않게 했습니다.
- AI 는 여전히 한 번에 약 1초의 소리를 듣고, 대화음·환경음은 두 번 연달아 같아야 바뀝니다. 그래서 늦게 느껴지는 시간이 모두 없어지지는 않습니다.
알아 둘 점
- 판단을 조금 더 자주 하므로, 위협음이 순간 번쩍일 기회도 조금 늘 수 있습니다. 팀원이 녹음 812개로 분석했을 때, 환경음 파일에서 위협음이 한 번이라도 보인 비율이 15.7%에서 17.5%가 됐습니다. 실제 폰에서는 두 번 들은 소리가 달라 이 차이를 재지 못했습니다.
- 외부 사운드 모드에서 물건을 내려놓는 소리처럼 작고 짧은 충격음이 폭발음·폭죽·장난감 총 소리로 들려, 위협음으로 표시되고 진동할 수 있습니다. v1.7.0 부터 있던 것이고 팀원이 따로 살펴보고 있습니다.
- AI 분류는 참고용입니다. 안전이 걸린 상황에서 이 앱을 유일한 수단으로 쓰지 마세요.
- v1.6.0 에서 올라오면 v1.7.0·v1.7.1 의 바뀐 점도 모두 함께 들어옵니다. v1.7.1 릴리스 노트를 함께 보세요.
확인한 것
- 배포한 코드(main
4bda8ee와 같은 내용인e5f46aa)에서 유닛 테스트 740개가 통과했고, Lint 는 기존 경고 1건(의존성 새 버전 안내)뿐입니다. - 에뮬레이터 계측 테스트 79개
- 안드로이드 17(Pixel 7): 보통 화면과 작은 화면(320×640) 모두 통과
- 안드로이드 10: 보통 화면과 작은 화면 모두 통과
- Galaxy S25+(안드로이드 16)에서 이 버전과 앱 코드가 같은(버전 번호만 다른) release 빌드를 외부 사운드 모드로 6분 썼습니다.
- 결과 간격 중앙값 250ms, 판단 시간 중앙값 27ms(최대 38ms)였습니다.
- 진동이 울렸고, 앱이 꺼지지 않았습니다.
- 설정의 진동 미리 듣기와 튜토리얼 진동은 같은 날 v1.7.1 에서 폰으로 확인했고, 이번에 바뀐 곳이 아닙니다.
- 올라온 APK: 버전 1.7.2(13), targetSdk 37, arm64-v8a. 이전 버전과 같은 서명 키(SHA-256
f6a88fab…)라 지우지 않고 위에 설치하면 됩니다. R8 유지 규칙 13개가 그대로 있고 네이티브 함수 6개가 들어 있습니다. APK SHA-2565eb89df49820b71119040b20087e0c6e1f8613b585f8f8538c94307d79f6c5a6.
확인하지 못한 것
- 같은 영상을 두 버전으로 틀어 색이 바뀌는 느낌을 나란히 비교하지는 않았습니다.
- 오래 켜 둘 때의 발열.
- Galaxy S21 Ultra, S22(안드로이드 12)에서의 동작.
v1.7.1 — v1.7.0 에서 진동 때 앱이 꺼지던 것과 잠금을 풀어도 남던 위협음 알림을 고쳤습니다
v1.7.0 에서 앱이 꺼지던 결함을 고친 버전입니다. v1.7.0 대신 이 버전을 쓰세요. v1.6.0 이나 v1.7.0 위에 지우지 않고 설치하면 됩니다. 서명 키가 같아 설정이 그대로 남습니다.
v1.7.1 에서 고친 것
- 진동이 울릴 때 앱이 꺼지던 결함(#383). v1.7.0 에서 설정의 진동 방식을 누르거나(미리 듣기), 튜토리얼의 진동 쪽을 열거나, 외부 사운드 모드에서 진동이 울리면 앱이 꺼졌습니다. 앱 안의 준비 순서가 어긋나 생긴 일로, v1.7.0 에만 있었습니다.
- 잠금을 풀어도 잠금 화면 위협음 알림이 남던 것(#385). 잠금을 풀면 사라져야 하는데, 직접 지우거나 5분이 지날 때까지 남았습니다. 앱이 잠금 풀림 신호를 받지 못하고 있었습니다. 이제 잠금을 풀면 바로 사라집니다.
v1.7.0 에서 바뀐 것
v1.6.0 에서 올라오면 아래 내용이 모두 함께 들어옵니다.
새로 생긴 것
분류 탭을 모두가 씁니다. 지금까지는 팀용 미리보기였던 분류 탭이 홈 · 설정 · 분류 · 도움말 순서로 모든 사람에게 보입니다. 여기서 고른 종류가 이제 실제로 화면 색, 진동, 잠금 화면 알림에 쓰입니다.
- AI 가 알아듣는 소리를 비슷한 것끼리 묶음(위협음 11개, 대화음 6개, 환경음 20개)으로 보여 주고, 묶음마다 환경음·대화음·위협음 가운데 무엇으로 볼지 고릅니다. 기본값을 고르면 원래대로 돌아갑니다.
- 소리를 하나씩 바꾸고 싶으면 고급 모드를 켭니다.
- 예를 들어 ‘초인종’ 묶음을 위협음으로 바꾸면, AI 가 초인종이나 노크 소리로 알아들을 때 위협음 색과 진동이 나옵니다. 다만 새로 위협음으로 정한 소리는 AI 가 종류를 가리는 데 한 표로 들어갈 뿐이라, 초인종이 울릴 때마다 반드시 알린다는 뜻은 아닙니다.
- 한 소리가 여러 이름으로 함께 들릴 때가 많습니다(사이렌은 ‘경보음’으로도 들립니다). 바꾼 뒤에도 예전 종류로 보이면 관련된 묶음도 함께 바꿔 주세요. 탭 안에도 이 안내가 있습니다.
잠금 화면 위협음 알림. 폰이 잠겨 있거나 화면이 꺼진 동안에는 그래픽이 잠금 화면에 가려 보이지 않습니다. 그때 위협음이 들리면 잠금 화면에 “위협음이 들렸습니다” 알림을 띄우고, 꺼진 화면을 잠깐 켭니다.
- 알림에는 위협음을 만든 소리의 이름(예: 사이렌)을 적습니다. 분류 탭에서 바꾼 종류를 따르고, 이름을 뚜렷하게 고를 수 없으면 이름 없이 알립니다.
- 알림은 소리 없이 뜹니다. 한 번 이어지는 위협음에 한 번만 알리고(다음 알림까지 30초 이상), 잠금을 풀면 사라집니다.
- 화면이 꺼져 있을 때는 외부 사운드 모드이거나, 배터리 설정의 화면이 꺼지면 일시정지를 끈 경우에만 알립니다.
- 위협음 표시를 꺼 두면 알리지 않습니다. 삼성 폰에서 잠금 화면 알림을 “아이콘만”으로 두었다면 폰 설정에서 내용을 보이게 바꿔야 글이 보입니다.
튜토리얼에서 진동을 느끼고 소리를 들을 수 있습니다.
- 진동 쪽에서 그림 속 폰이 떨 때 폰도 같은 박자로 실제로 진동합니다(처음 설정의 위협음 진동과 같은 박자).
- 그림 아래 소리 버튼을 누르면 그림이 그리는 소리를 새소리·대화·자동차 경적 같은 실제 녹음으로 함께 들려줍니다. 처음에는 꺼져 있고, 미디어 볼륨을 따릅니다.
- 시각화가 실행 중일 때는 튜토리얼의 진동과 소리가 나오지 않습니다. 실제 알림과 섞이지 않게 하려는 것입니다.
바뀐 동작
외부 사운드 모드의 진동
외부 사운드 모드에서 폰이 자기 진동 소리를 주변 소리로 착각해 진동이 멈추지 않던 문제를 여러 겹으로 막았습니다.
- 종류마다 고를 수 있는 가장 빠른 진동 방식이 정해졌습니다. 대화음은 ‘느림’까지, 위협음은 ‘중간’까지이고, 환경음은 이 모드에서 진동하지 않습니다(주변에 늘 있는 소리라 진동이 그치지 않기 때문입니다). 더 빠르게 정해 둔 종류는 정해진 가장 빠른 방식으로 울리고, 설정 화면에는 그 칸이 흐리게 보이며 까닭이 적힙니다. 외부 사운드 모드를 끄면 정해 둔 대로 울립니다. 저장해 둔 설정은 바뀌지 않습니다.
- 진동은 울림 사이의 쉬는 틈에서만 소리가 이어지는지 봅니다. 그래서 소리가 멈춘 뒤에도 잠시(보통 1초 안) 더 울릴 수 있습니다.
- 앱이 울린 진동은 소리 종류를 가리는 AI 가 듣는 소리에서 뺍니다. 진동하는 동안 AI 에는 그 직전의 주변 소리를 이어 들려줍니다. 그래서 앱의 진동이 화면 색을 바꾸거나, 대화음 진동을 스스로 이어 가거나, 잠금 화면 알림을 띄우지 않습니다. 폭발음처럼 큰 소리는 진동 중에도 그대로 듣습니다.
- 주변이 조용해져 AI 가 쉬면 진동도 1초쯤 뒤에 멈춥니다. AI 가 마지막으로 들은 종류로 계속 울리지 않게 하려는 것입니다. 잠금 화면 위협음 알림도 오래된 판정으로는 뜨지 않습니다. 조용하던 끝에 다시 소리가 나면 첫 진동이 0.3초쯤 늦을 수 있습니다.
마이크 감도는 숫자 없이 16칸입니다. 퍼센트(50~800%) 대신 슬라이더의 칸만 보이고, 맨 오른쪽이 최대(×32), 기본은 왼쪽에서 네 번째 칸입니다. 예전에 고른 값은 가장 가까운 칸으로 옮겨집니다(예전 최대 800% 는 열한 번째 칸). 화면 읽어주기는 “4/16”처럼 몇 번째 칸인지 읽습니다.
- 감도는 그래픽·진동·잠금 화면 알림이 보는 소리 크기에만 걸리고, AI 가 듣는 소리는 바꾸지 않습니다. 그래서 AI 가 듣지 못할 만큼 작은 소리는 감도를 올려도 진동하지 않습니다. 그럴 때는 폰을 소리 나는 곳 가까이에 두고 마이크를 가리지 마세요. 도움말과 설명서도 이 내용으로 고쳤습니다.
AI 분류(팀원 기여)
- 총소리 후보가 함께 있어도, 따로 들린 사이렌·폭발음 같은 위협 단서가 충분히 뚜렷하면(상위 후보 안에서 5% 이상) 위협음으로 봅니다. 예전에는 총소리 후보가 하나라도 있으면 이 경로가 막혔습니다.
- 분류 탭에서 사이렌을 다른 종류로 바꿔 두어도, 함께 들린 폭발음 같은 다른 위협 단서는 그대로 위협음으로 봅니다.
- 기본 종류가 바뀐 소리는 아래 ‘바뀐 기본값’에 모두 적었습니다.
홈과 설정 화면
- 언어 버튼이 홈 오른쪽 아래(지구본과 지금 언어 이름)로, 튜토리얼 보기가 왼쪽 아래로 옮겨졌습니다. 아랍어처럼 오른쪽에서 왼쪽으로 쓰는 언어에서는 좌우가 바뀝니다. 설정 탭 맨 위의 언어 카드는 없어졌습니다.
- 알림창에서 켜고 끄기(빠른 설정 타일) 카드는 설정 탭의 소리 분류와 배터리 사이로 옮겼습니다.
- 탭 화면과 튜토리얼은 쪽 너비의 10%만 옆으로 끌어도 다음 쪽으로 넘어갑니다. 빠르게 연달아 넘길 때 앞 쪽으로 되돌아가던 것도 고쳤습니다.
분류 탭 다듬기
- 대화음의 첫 묶음 이름을 **‘말소리·속삭임’**으로 새로 지었습니다. 여러 언어에서 구역 제목(대화음)과 같은 낱말이라 헷갈렸습니다. 웃음·고함 등이 대화음 묶음으로 옮겨 가면서 남은 묶음 이름도 **‘박수·콧노래·휘파람’**으로 바꿨습니다.
- 소리마다 종류가 다른 묶음을 바꿀 때, 하나씩 바꿔 둔 소리가 실제로 덮어써질 때만 한 번 묻습니다.
- 종류 거르기(예: 위협음만, 바꾼 소리만)를 켠 채 종류를 바꾸면, 그 카드가 바로 사라지지 않고 거르기나 찾는 말을 바꿀 때까지 그 자리에 남습니다.
- 바꾼 수 문구가 소리 수를 센다는 것이 드러나게 고쳤습니다(영어 “Sounds changed: N” 등).
- 거르기 버튼의 누르는 자리를 48dp 이상으로 넓혔습니다.
바뀐 기본값
아래 23개 소리의 기본 종류가 바뀌었습니다. 분류 탭에서 직접 바꿔 둔 소리는 그대로 내가 고른 종류를 따르고, 바꾸지 않은 소리만 새 기본값을 따릅니다. 예전으로 돌리고 싶으면 분류 탭에서 그 소리(또는 묶음)의 종류를 고르면 됩니다.
환경음 → 위협음 (주의를 끌어야 하는 경고음과 갑작스러운 소리, 9개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 후진 경고음 (Reversing beeps) | 환경음 | 위협음 |
| 기차 경적 (Train horn) | 환경음 | 위협음 |
| 기차 기적 소리 (Train whistle) | 환경음 | 위협음 |
| 안개 경적 (Foghorn) | 환경음 | 위협음 |
| 자전거 벨 (Bicycle bell) | 환경음 | 위협음 |
| 긴급 차량 (Emergency vehicle) | 환경음 | 위협음 |
| 차 미끄러지는 소리 (Skidding) | 환경음 | 위협음 |
| 타이어 끼익 소리 (Tire squeal) | 환경음 | 위협음 |
| 문 쾅 닫는 소리 (Slam) | 환경음 | 위협음 |
환경음 → 대화음 (사람이 내는 목소리, 11개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 우렁찬 고함 (Bellow) | 환경음 | 대화음 |
| 환호성 (Whoop) | 환경음 | 대화음 |
| 고함 (Yell) | 환경음 | 대화음 |
| 응원 함성 (Cheering) | 환경음 | 대화음 |
| 키득키득 웃음 (Giggle) | 환경음 | 대화음 |
| 비웃음 (Snicker) | 환경음 | 대화음 |
| 폭소 (Belly laugh) | 환경음 | 대화음 |
| 조용한 웃음 (Chuckle, chortle) | 환경음 | 대화음 |
| 아기 울음소리 (Baby cry, infant cry) | 환경음 | 대화음 |
| 흐느낌 (Whimper) | 환경음 | 대화음 |
| 신음 (Wail, moan) | 환경음 | 대화음 |
개가 낑낑거리는 소리(Whimper (dog))는 그대로 환경음입니다.
위협음 → 환경음 (총소리 대신으로 쓰던 임시 규칙을 없앰, 2개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 퐁당 소리 (Plop) | 위협음 | 환경음 |
| 가글하는 소리 (Gargling) | 위협음 | 환경음 |
대화음 → 환경음 (사람 목소리가 아니라 악기, 1개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 싱잉볼 (Singing bowl) | 대화음 | 환경음 |
알아 두면 좋은 것:
- 아기 울음소리와 웃음·고함은 이제 대화음 색으로 보입니다. 대화음 진동은 처음에 꺼져 있으니, 진동으로 받고 싶으면 설정에서 대화음 진동을 켜 주세요.
- 외부 사운드 모드에서는 환경음이 진동하지 않으므로, 이번에 환경음이 된 소리(퐁당 소리, 가글하는 소리, 싱잉볼)는 이 모드에서 진동하지 않습니다.
고친 것
- 화면 읽어주기와 큰 글꼴에서 생기던 접근성 문제를 고쳤습니다.
- 큰 글꼴에서 권한 안내 창의 글이 잘리고 스크롤도 되지 않았습니다.
- 크기·반지름 슬라이더를 화면과 다른 숫자로 읽었습니다. 진동 제목과 세기 슬라이더는 이제 “위협음, 세기”처럼 어느 종류의 것인지 함께 읽습니다.
- 실행과 종료를 화면 읽어주기가 알려 주지 않았습니다.
- 설정의 구역 제목이 제목으로, 펼치는 카드의 머리가 버튼으로 읽히지 않았습니다.
- 도움말 목록에서 “•”와 번호를 따로 멈춰 읽었고, 안드로이드 12 이상 알림에서 고른 모드를 “선택됨”으로 두 번 읽었습니다.
- 큰 글꼴에서 진동 방식·표현 모드 칸의 이름이 글자 중간에서 끊겼습니다. 이제 칸을 여러 줄로 나눕니다.
- 글자 대비를 4.5:1 이상으로 올렸습니다(파란 버튼, 파란 글자, 빨간 종료 버튼). 탭 버튼, 진동 선택 칸, 소리 종류 표시 줄의 누르는 자리를 48dp 이상으로 넓혔습니다.
- 안드로이드 10 에서 ‘터치 진동’을 꺼 둔 폰은 느림·중간·빠름 진동과 미리보기가 울리지 않았습니다. 기본 위협음 진동(중간)도 해당했습니다.
- 튜토리얼에서 쪽을 넘길 때 그림이 빈 화면으로 툭 바뀌며 처음부터 다시 시작하던 것을 고쳤습니다. 이제 보이던 장면에서 그대로 이어 움직입니다.
- 잠금 화면 위협음 알림이 위협음을 만든 소리가 아닌 다른 소리 이름을 적거나 이름을 비우던 것을 고쳤습니다.
- 앱 안 라이선스 안내와 오픈소스 고지를 바로잡았습니다. 분류 탭의 소리 이름과 묶음은 AudioSet 온톨로지를 바탕으로 해 CC BY-SA 4.0 을 따릅니다.
- 도움말과 설명서를 실제 동작에 맞췄습니다(외부 사운드 모드의 진동 상한과 마이크 감도 조언, 위협음으로 끌어올리는 조건, 초인종을 진동으로 받으려면 분류 탭에서 바꿔야 한다는 것).
빨라진 것
- 오버레이가 화면 가장자리에서 그리는 영역을 정확히 재고, 화면 변마다 따로 재서 매 프레임 그리는 양을 줄였습니다. 보이는 그림은 같습니다.
- 분류 탭을 열 때마다 소리 이름 521개와 찾기 값을 다시 만들지 않습니다. 한 번 만든 것을 다시 씁니다. 앱을 켠 뒤 처음 열 때와 언어를 바꾼 뒤에는 잠깐 비어 보일 수 있습니다.
- 튜토리얼에서 쪽을 넘길 때 화면을 그리는 쪽에서 하던 무거운 계산을 뒤로 옮겼습니다.
알아 둘 점
- AI 분류는 참고용입니다. 안전이 걸린 상황에서 이 앱을 유일한 수단으로 쓰지 마세요.
- 외부 사운드 모드에서 다른 앱의 진동은 AI 가 듣는 소리에서 빼지 못합니다. 폰에 따라 앱의 진동 소리가 조금 남을 수 있고, 진동하는 동안에만 났다 끝난 작은 소리는 듣지 못합니다.
- 외부 사운드 모드에서 초인종은 기본으로 환경음이라 진동하지 않습니다. 진동으로 받으려면 분류 탭에서 ‘초인종’ 묶음을 위협음이나 대화음으로 바꿔 두세요. 바꿔도 모든 초인종 소리를 알리지는 못할 수 있습니다.
- 아기 울음소리·환호처럼 이번에 대화음이 된 소리가 경보음과 섞여 들리면, 위협음으로 끌어올려지지 않을 수 있습니다.
- 외부 사운드 모드에서는 방향을 아직 가운데로만 그립니다.
- ‘연속’ 진동이 다른 앱의 진동에 끊기면 다시 이어지기까지 최대 30초 걸릴 수 있습니다(폰 안의 소리 모드).
- 새로 지은 묶음 이름의 번역은 아직 원어민 검토를 받지 않았습니다. 어색한 표현이 있으면 알려 주세요.
확인한 것
- 배포한 코드(main
cfe77c2와 같은 내용인d392e4c)에서 유닛 테스트 737개가 통과했고, Lint 는 기존 경고 1건(의존성 새 버전 안내)뿐입니다. - 에뮬레이터 계측 테스트 79개
- 안드로이드 17(Pixel 7): 보통 화면과 작은 화면(320×640) 모두 통과
- 안드로이드 10: 보통 화면과 작은 화면 모두 통과
- 진동 때 꺼지던 결함(#383)
- 고치기 전 코드에서 실패하는 테스트를 넣었고, 고친 뒤 통과합니다.
- Galaxy S25+(안드로이드 16)에 같은 코드의 release 빌드를 깔아 확인했습니다. 설정의 진동 미리 듣기, 튜토리얼의 진동 쪽, 외부 사운드 모드에서 2분 동안 여러 번 울린 진동 모두에서 앱이 꺼지지 않았습니다.
- 잠금 알림(#385): 외부 사운드 모드로 실행한 채 잠갔다 풀어, 앱이 잠금 풀림 신호를 받는 것을 확인했습니다. 안드로이드 17 과 10 에뮬레이터, Galaxy S25+ 에서 봤고, 고치기 전에는 받지 못했습니다.
- 올라온 APK: 버전 1.7.1(12), targetSdk 37, arm64-v8a. v1.6.0·v1.7.0 과 같은 서명 키(SHA-256
f6a88fab…)라 지우지 않고 위에 설치하면 됩니다. R8 유지 규칙 13개가 그대로 있고 네이티브 함수 6개가 들어 있습니다. APK SHA-256b8758438f7eb08fe857fcdc24546968bbcfa920e6e4de5804a080acecc17131e.
확인하지 못한 것
- 외부 사운드 모드에서 진동이 울리는 것은 폰에서 봤습니다. 하지만 앱 진동을 AI 입력에서 빼는 것(#352)과 진동이 스스로 이어지지 않는 것(#290)은 일부러 시험하지 않았고, 시뮬레이션과 에뮬레이터로만 확인했습니다.
- 잠금 화면 위협음 알림이 떴다가 잠금을 풀면 사라지는 전체 흐름은 보지 못했습니다. 알림을 띄우려면 실제 위협음 소리를 내야 하기 때문입니다. 앱이 잠금 풀림 신호를 받는 데까지 확인했습니다.
- Galaxy S21 Ultra, S22(안드로이드 12)에서의 동작.
- 분류 탭의 속도 개선은 에뮬레이터에서만 쟀습니다.
- AI 정확도 숫자는 사람 발성 11개를 대화음으로 바꾼 뒤(#369) 다시 재지 않아 넣지 않았습니다.
v1.7.0 — 모두에게 열린 분류 탭, 잠금 화면 위협음 알림, 스스로 이어지지 않는 외부 사운드 모드 진동
⚠️ 이 버전은 쓰지 마세요. 설정에서 진동 방식을 고르거나 외부 사운드 모드에서 진동이 울리면 앱이 꺼지는 결함이 있습니다(#383). 고친 최신 버전을 쓰세요.
새로 생긴 것
분류 탭을 모두가 씁니다. 지금까지는 팀용 미리보기였던 분류 탭이 홈 · 설정 · 분류 · 도움말 순서로 모든 사람에게 보입니다. 여기서 고른 종류가 이제 실제로 화면 색, 진동, 잠금 화면 알림에 쓰입니다.
- AI 가 알아듣는 소리를 비슷한 것끼리 묶음(위협음 11개, 대화음 6개, 환경음 20개)으로 보여 주고, 묶음마다 환경음·대화음·위협음 가운데 무엇으로 볼지 고릅니다. 기본값을 고르면 원래대로 돌아갑니다.
- 소리를 하나씩 바꾸고 싶으면 고급 모드를 켭니다.
- 예를 들어 ‘초인종’ 묶음을 위협음으로 바꾸면, AI 가 초인종이나 노크 소리로 알아들을 때 위협음 색과 진동이 나옵니다. 다만 새로 위협음으로 정한 소리는 AI 가 종류를 가리는 데 한 표로 들어갈 뿐이라, 초인종이 울릴 때마다 반드시 알린다는 뜻은 아닙니다.
- 한 소리가 여러 이름으로 함께 들릴 때가 많습니다(사이렌은 ‘경보음’으로도 들립니다). 바꾼 뒤에도 예전 종류로 보이면 관련된 묶음도 함께 바꿔 주세요. 탭 안에도 이 안내가 있습니다.
잠금 화면 위협음 알림. 폰이 잠겨 있거나 화면이 꺼진 동안에는 그래픽이 잠금 화면에 가려 보이지 않습니다. 그때 위협음이 들리면 잠금 화면에 “위협음이 들렸습니다” 알림을 띄우고, 꺼진 화면을 잠깐 켭니다.
- 알림에는 위협음을 만든 소리의 이름(예: 사이렌)을 적습니다. 분류 탭에서 바꾼 종류를 따르고, 이름을 뚜렷하게 고를 수 없으면 이름 없이 알립니다.
- 알림은 소리 없이 뜹니다. 한 번 이어지는 위협음에 한 번만 알리고(다음 알림까지 30초 이상), 잠금을 풀면 사라집니다.
- 화면이 꺼져 있을 때는 외부 사운드 모드이거나, 배터리 설정의 화면이 꺼지면 일시정지를 끈 경우에만 알립니다.
- 위협음 표시를 꺼 두면 알리지 않습니다. 삼성 폰에서 잠금 화면 알림을 “아이콘만”으로 두었다면 폰 설정에서 내용을 보이게 바꿔야 글이 보입니다.
튜토리얼에서 진동을 느끼고 소리를 들을 수 있습니다.
- 진동 쪽에서 그림 속 폰이 떨 때 폰도 같은 박자로 실제로 진동합니다(처음 설정의 위협음 진동과 같은 박자).
- 그림 아래 소리 버튼을 누르면 그림이 그리는 소리를 새소리·대화·자동차 경적 같은 실제 녹음으로 함께 들려줍니다. 처음에는 꺼져 있고, 미디어 볼륨을 따릅니다.
- 시각화가 실행 중일 때는 튜토리얼의 진동과 소리가 나오지 않습니다. 실제 알림과 섞이지 않게 하려는 것입니다.
바뀐 동작
외부 사운드 모드의 진동
외부 사운드 모드에서 폰이 자기 진동 소리를 주변 소리로 착각해 진동이 멈추지 않던 문제를 여러 겹으로 막았습니다.
- 종류마다 고를 수 있는 가장 빠른 진동 방식이 정해졌습니다. 대화음은 ‘느림’까지, 위협음은 ‘중간’까지이고, 환경음은 이 모드에서 진동하지 않습니다(주변에 늘 있는 소리라 진동이 그치지 않기 때문입니다). 더 빠르게 정해 둔 종류는 정해진 가장 빠른 방식으로 울리고, 설정 화면에는 그 칸이 흐리게 보이며 까닭이 적힙니다. 외부 사운드 모드를 끄면 정해 둔 대로 울립니다. 저장해 둔 설정은 바뀌지 않습니다.
- 진동은 울림 사이의 쉬는 틈에서만 소리가 이어지는지 봅니다. 그래서 소리가 멈춘 뒤에도 잠시(보통 1초 안) 더 울릴 수 있습니다.
- 앱이 울린 진동은 소리 종류를 가리는 AI 가 듣는 소리에서 뺍니다. 진동하는 동안 AI 에는 그 직전의 주변 소리를 이어 들려줍니다. 그래서 앱의 진동이 화면 색을 바꾸거나, 대화음 진동을 스스로 이어 가거나, 잠금 화면 알림을 띄우지 않습니다. 폭발음처럼 큰 소리는 진동 중에도 그대로 듣습니다.
- 주변이 조용해져 AI 가 쉬면 진동도 1초쯤 뒤에 멈춥니다. AI 가 마지막으로 들은 종류로 계속 울리지 않게 하려는 것입니다. 잠금 화면 위협음 알림도 오래된 판정으로는 뜨지 않습니다. 조용하던 끝에 다시 소리가 나면 첫 진동이 0.3초쯤 늦을 수 있습니다.
마이크 감도는 숫자 없이 16칸입니다. 퍼센트(50~800%) 대신 슬라이더의 칸만 보이고, 맨 오른쪽이 최대(×32), 기본은 왼쪽에서 네 번째 칸입니다. 예전에 고른 값은 가장 가까운 칸으로 옮겨집니다(예전 최대 800% 는 열한 번째 칸). 화면 읽어주기는 “4/16”처럼 몇 번째 칸인지 읽습니다.
- 감도는 그래픽·진동·잠금 화면 알림이 보는 소리 크기에만 걸리고, AI 가 듣는 소리는 바꾸지 않습니다. 그래서 AI 가 듣지 못할 만큼 작은 소리는 감도를 올려도 진동하지 않습니다. 그럴 때는 폰을 소리 나는 곳 가까이에 두고 마이크를 가리지 마세요. 도움말과 설명서도 이 내용으로 고쳤습니다.
AI 분류(팀원 기여)
- 총소리 후보가 함께 있어도, 따로 들린 사이렌·폭발음 같은 위협 단서가 충분히 뚜렷하면(상위 후보 안에서 5% 이상) 위협음으로 봅니다. 예전에는 총소리 후보가 하나라도 있으면 이 경로가 막혔습니다.
- 분류 탭에서 사이렌을 다른 종류로 바꿔 두어도, 함께 들린 폭발음 같은 다른 위협 단서는 그대로 위협음으로 봅니다.
- 기본 종류가 바뀐 소리는 아래 ‘바뀐 기본값’에 모두 적었습니다.
홈과 설정 화면
- 언어 버튼이 홈 오른쪽 아래(지구본과 지금 언어 이름)로, 튜토리얼 보기가 왼쪽 아래로 옮겨졌습니다. 아랍어처럼 오른쪽에서 왼쪽으로 쓰는 언어에서는 좌우가 바뀝니다. 설정 탭 맨 위의 언어 카드는 없어졌습니다.
- 알림창에서 켜고 끄기(빠른 설정 타일) 카드는 설정 탭의 소리 분류와 배터리 사이로 옮겼습니다.
- 탭 화면과 튜토리얼은 쪽 너비의 10%만 옆으로 끌어도 다음 쪽으로 넘어갑니다. 빠르게 연달아 넘길 때 앞 쪽으로 되돌아가던 것도 고쳤습니다.
분류 탭 다듬기
- 대화음의 첫 묶음 이름을 **‘말소리·속삭임’**으로 새로 지었습니다. 여러 언어에서 구역 제목(대화음)과 같은 낱말이라 헷갈렸습니다. 웃음·고함 등이 대화음 묶음으로 옮겨 가면서 남은 묶음 이름도 **‘박수·콧노래·휘파람’**으로 바꿨습니다.
- 소리마다 종류가 다른 묶음을 바꿀 때, 하나씩 바꿔 둔 소리가 실제로 덮어써질 때만 한 번 묻습니다.
- 종류 거르기(예: 위협음만, 바꾼 소리만)를 켠 채 종류를 바꾸면, 그 카드가 바로 사라지지 않고 거르기나 찾는 말을 바꿀 때까지 그 자리에 남습니다.
- 바꾼 수 문구가 소리 수를 센다는 것이 드러나게 고쳤습니다(영어 “Sounds changed: N” 등).
- 거르기 버튼의 누르는 자리를 48dp 이상으로 넓혔습니다.
바뀐 기본값
아래 23개 소리의 기본 종류가 바뀌었습니다. 분류 탭에서 직접 바꿔 둔 소리는 그대로 내가 고른 종류를 따르고, 바꾸지 않은 소리만 새 기본값을 따릅니다. 예전으로 돌리고 싶으면 분류 탭에서 그 소리(또는 묶음)의 종류를 고르면 됩니다.
환경음 → 위협음 (주의를 끌어야 하는 경고음과 갑작스러운 소리, 9개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 후진 경고음 (Reversing beeps) | 환경음 | 위협음 |
| 기차 경적 (Train horn) | 환경음 | 위협음 |
| 기차 기적 소리 (Train whistle) | 환경음 | 위협음 |
| 안개 경적 (Foghorn) | 환경음 | 위협음 |
| 자전거 벨 (Bicycle bell) | 환경음 | 위협음 |
| 긴급 차량 (Emergency vehicle) | 환경음 | 위협음 |
| 차 미끄러지는 소리 (Skidding) | 환경음 | 위협음 |
| 타이어 끼익 소리 (Tire squeal) | 환경음 | 위협음 |
| 문 쾅 닫는 소리 (Slam) | 환경음 | 위협음 |
환경음 → 대화음 (사람이 내는 목소리, 11개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 우렁찬 고함 (Bellow) | 환경음 | 대화음 |
| 환호성 (Whoop) | 환경음 | 대화음 |
| 고함 (Yell) | 환경음 | 대화음 |
| 응원 함성 (Cheering) | 환경음 | 대화음 |
| 키득키득 웃음 (Giggle) | 환경음 | 대화음 |
| 비웃음 (Snicker) | 환경음 | 대화음 |
| 폭소 (Belly laugh) | 환경음 | 대화음 |
| 조용한 웃음 (Chuckle, chortle) | 환경음 | 대화음 |
| 아기 울음소리 (Baby cry, infant cry) | 환경음 | 대화음 |
| 흐느낌 (Whimper) | 환경음 | 대화음 |
| 신음 (Wail, moan) | 환경음 | 대화음 |
개가 낑낑거리는 소리(Whimper (dog))는 그대로 환경음입니다.
위협음 → 환경음 (총소리 대신으로 쓰던 임시 규칙을 없앰, 2개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 퐁당 소리 (Plop) | 위협음 | 환경음 |
| 가글하는 소리 (Gargling) | 위협음 | 환경음 |
대화음 → 환경음 (사람 목소리가 아니라 악기, 1개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 싱잉볼 (Singing bowl) | 대화음 | 환경음 |
알아 두면 좋은 것:
- 아기 울음소리와 웃음·고함은 이제 대화음 색으로 보입니다. 대화음 진동은 처음에 꺼져 있으니, 진동으로 받고 싶으면 설정에서 대화음 진동을 켜 주세요.
- 외부 사운드 모드에서는 환경음이 진동하지 않으므로, 이번에 환경음이 된 소리(퐁당 소리, 가글하는 소리, 싱잉볼)는 이 모드에서 진동하지 않습니다.
고친 것
- 화면 읽어주기와 큰 글꼴에서 생기던 접근성 문제를 고쳤습니다.
- 큰 글꼴에서 권한 안내 창의 글이 잘리고 스크롤도 되지 않았습니다.
- 크기·반지름 슬라이더를 화면과 다른 숫자로 읽었습니다. 진동 제목과 세기 슬라이더는 이제 “위협음, 세기”처럼 어느 종류의 것인지 함께 읽습니다.
- 실행과 종료를 화면 읽어주기가 알려 주지 않았습니다.
- 설정의 구역 제목이 제목으로, 펼치는 카드의 머리가 버튼으로 읽히지 않았습니다.
- 도움말 목록에서 “•”와 번호를 따로 멈춰 읽었고, 안드로이드 12 이상 알림에서 고른 모드를 “선택됨”으로 두 번 읽었습니다.
- 큰 글꼴에서 진동 방식·표현 모드 칸의 이름이 글자 중간에서 끊겼습니다. 이제 칸을 여러 줄로 나눕니다.
- 글자 대비를 4.5:1 이상으로 올렸습니다(파란 버튼, 파란 글자, 빨간 종료 버튼). 탭 버튼, 진동 선택 칸, 소리 종류 표시 줄의 누르는 자리를 48dp 이상으로 넓혔습니다.
- 안드로이드 10 에서 ‘터치 진동’을 꺼 둔 폰은 느림·중간·빠름 진동과 미리보기가 울리지 않았습니다. 기본 위협음 진동(중간)도 해당했습니다.
- 튜토리얼에서 쪽을 넘길 때 그림이 빈 화면으로 툭 바뀌며 처음부터 다시 시작하던 것을 고쳤습니다. 이제 보이던 장면에서 그대로 이어 움직입니다.
- 잠금 화면 위협음 알림이 위협음을 만든 소리가 아닌 다른 소리 이름을 적거나 이름을 비우던 것을 고쳤습니다.
- 앱 안 라이선스 안내와 오픈소스 고지를 바로잡았습니다. 분류 탭의 소리 이름과 묶음은 AudioSet 온톨로지를 바탕으로 해 CC BY-SA 4.0 을 따릅니다.
- 도움말과 설명서를 실제 동작에 맞췄습니다(외부 사운드 모드의 진동 상한과 마이크 감도 조언, 위협음으로 끌어올리는 조건, 초인종을 진동으로 받으려면 분류 탭에서 바꿔야 한다는 것).
빨라진 것
- 오버레이가 화면 가장자리에서 그리는 영역을 정확히 재고, 화면 변마다 따로 재서 매 프레임 그리는 양을 줄였습니다. 보이는 그림은 같습니다.
- 분류 탭을 열 때마다 소리 이름 521개와 찾기 값을 다시 만들지 않습니다. 한 번 만든 것을 다시 씁니다. 앱을 켠 뒤 처음 열 때와 언어를 바꾼 뒤에는 잠깐 비어 보일 수 있습니다.
- 튜토리얼에서 쪽을 넘길 때 화면을 그리는 쪽에서 하던 무거운 계산을 뒤로 옮겼습니다.
알아 둘 점
- AI 분류는 참고용입니다. 안전이 걸린 상황에서 이 앱을 유일한 수단으로 쓰지 마세요.
- 외부 사운드 모드에서 다른 앱의 진동은 AI 가 듣는 소리에서 빼지 못합니다. 폰에 따라 앱의 진동 소리가 조금 남을 수 있고, 진동하는 동안에만 났다 끝난 작은 소리는 듣지 못합니다.
- 외부 사운드 모드에서 초인종은 기본으로 환경음이라 진동하지 않습니다. 진동으로 받으려면 분류 탭에서 ‘초인종’ 묶음을 위협음이나 대화음으로 바꿔 두세요. 바꿔도 모든 초인종 소리를 알리지는 못할 수 있습니다.
- 아기 울음소리·환호처럼 이번에 대화음이 된 소리가 경보음과 섞여 들리면, 위협음으로 끌어올려지지 않을 수 있습니다.
- 외부 사운드 모드에서는 방향을 아직 가운데로만 그립니다.
- ‘연속’ 진동이 다른 앱의 진동에 끊기면 다시 이어지기까지 최대 30초 걸릴 수 있습니다(폰 안의 소리 모드).
- 새로 지은 묶음 이름의 번역은 아직 원어민 검토를 받지 않았습니다. 어색한 표현이 있으면 알려 주세요.
확인한 것
- 배포한 코드(main
05fde7e와 같은 내용인6a232b9)에서 유닛 테스트 734개 통과, Lint 는 기존 경고 1건(의존성 새 버전 안내)뿐입니다. - 에뮬레이터 계측 테스트 79개
- 안드로이드 17(Pixel 7): 보통 화면과 작은 화면(320×640) 모두 통과
- 안드로이드 10: 보통 화면과 작은 화면 모두 통과(버전 번호만 다른 같은 코드)
- release 빌드(R8)를 안드로이드 10 에뮬레이터에 깔아 켰을 때 오류가 없었습니다.
- Galaxy S25+(안드로이드 16)에서 외부 사운드 모드가 쓰는 캡처 시각 표시가 빠짐없이 오는 것을 확인했습니다(진동 없이 잰 1단계).
- 올라온 APK: 버전 1.7.0(11), targetSdk 37, arm64-v8a. v1.6.0 과 같은 서명 키(SHA-256
f6a88fab…)라 지우지 않고 위에 설치하면 됩니다. R8 유지 규칙 13개가 그대로 있고 네이티브 함수 6개가 들어 있습니다. APK SHA-25605b6e98b401e599b3b7f397485062d0e1e94b6a90795fb48235c978bf8edcc38.
확인하지 못한 것
v1.6.0 — 주변 소리를 듣는 외부 사운드 모드, 튜토리얼, 더 정확해진 AI 분류
새로 생긴 것
외부 사운드 모드. 홈에서 켜고 실행하면 폰 안의 소리 대신 마이크로 주변 소리를 듣습니다. 초인종, 화재경보, 누가 부르는 소리 같은 폰 밖의 소리를 같은 그래픽과 진동으로 알려 줍니다.
- 화면 녹화 동의 없이 바로 켜집니다. 안드로이드 12 이상에서는 듣는 동안 상태 표시줄에 마이크 표시가 뜨고, 실행 중 알림과 홈에도 주변 소리라고 나옵니다.
- 들은 소리는 크기를 재고 종류를 구분하는 데만 씁니다. 소리 자체는 파일로 남기거나 밖으로 보내지 않습니다.
- 폰을 내려놓아도 알 수 있도록 화면이 꺼져도 계속 듣습니다. 그만큼 배터리를 더 씁니다.
- 마이크 감도(50~800%)를 고를 수 있습니다.
- 통화 중이거나 다른 앱이 마이크를 쓰고 있어 소리가 들어오지 않으면 홈과 알림에 알려 줍니다.
- 방향은 아직 가운데로만 그립니다.
처음 여는 사람을 위한 튜토리얼. 앱이 무엇을 하는지, 소리 종류와 색, 켜고 끄는 순서를 몇 쪽으로 보여 줍니다. 홈에서 다시 볼 수 있습니다.
진동을 단순하게 바꿨습니다. 소리 종류마다 꺼짐·느림·중간·빠름·연속 가운데 하나를 고르고, 세기는 슬라이더(10~100%)로 정합니다. 그 종류의 소리가 이어지는 동안 울리고, 소리가 멈추면 함께 멈춥니다. 종류마다 방식을 다르게 해 두면 화면을 보지 않고도 어떤 소리인지 구분할 수 있습니다.
- ‘연속’이 2초마다 살짝 끊겨 느껴지던 것을 고쳤습니다. 화면을 끌 때 안드로이드가 끊은 진동도 바로 다시 울립니다.
AI 분류가 더 정확해졌습니다(팀원 기여). 소리를 AI 에 넣기 전의 처리를 바꾸고, 어떤 소리를 어느 종류로 볼지 규칙을 정리했습니다.
- 사이렌·경보음은 AI 가 1순위로 꼽지 않더라도 상위 후보에 뚜렷하게 있으면 위협음으로 봅니다.
- 경적, 전기톱, 천둥도 위협음으로 봅니다. 발소리는 환경음으로 옮겼습니다.
- 팀이 모은 평가용 소리 812개에서 v1.0.0 과 비교하면 정확도가 46%에서 **75%**로, 위협음이라고 했을 때 맞는 비율이 62%에서 **95%**로 올랐습니다.
AI 가 없어도 큰 소리에는 진동합니다. 드물게 AI 모델을 불러오지 못하면 지금까지는 진동이 아예 꺼졌습니다. 이제는 종류와 상관없이 큰 소리에 위협음 진동 설정으로 울리고, 그렇다고 홈과 설정, 알림에 알려 줍니다.
고친 것
- 사용자가 켜지 않았는데 예전 알림 버튼 같은 경로로 소리 받기가 시작될 수 있던 것을 막았습니다.
- 앱을 켤 때 시작 화면의 로고 모서리가 잘려 보였습니다.
- 튜토리얼을 닫는 동안의 누름이 홈 버튼에 닿을 수 있었습니다. 가로 화면에서는 실행 버튼을 카드 위에 둡니다.
- 같은 폰에 다시 깔면 백업이 예전의 타일 추가 여부와 꺼짐 안내를 되살렸습니다.
- 진동이 소리 종류가 바뀌는 순간 따라 바뀌지 않았고, 실행 중에 설정을 만지면 미리보기 진동이 실제 진동과 섞였습니다.
- 튜토리얼의 위협음 예시에서 발소리를 빼고 사이렌을 넣었습니다.
그 밖에
- 빠른 설정 타일 추가 버튼을 홈에서 설정 탭으로 옮겼습니다.
- 도움말을 보강했습니다. 미디어 볼륨과 폰 안의 소리, 마이크 감도가 바꾸는 것, 외부 사운드 모드일 때의 설명이 들어갔습니다.
- 팀용(개발자 모드에서만 보임): 소리마다 종류를 고르는 분류 탭의 미리보기를 넣었습니다. 아직 AI 판정에는 쓰이지 않습니다. AI 기록 CSV 에는 소리를 어디서 받았는지가 남습니다.
확인한 것
배포한 커밋(0ff34c3)에서 그대로 돌렸습니다.
- 유닛 테스트 471개 통과, Lint 오류 0(경고는 의존성 새 버전 알림 1건)
- 에뮬레이터 계측 테스트와 AI 전처리 대조(TensorFlow·torchaudio 기준) 통과
- 올라온 APK 확인: 버전
1.6.0(코드 10), arm64-v8a, minSdk 29, targetSdk 37, 서명 지문f6a88fab…(예전과 같은 팀 공용 디버그 키라 기존 설치 위에 그대로 깔립니다), R8 이 지켜야 할 13개 항목이mapping-v1.6.0.txt에 모두 남아 있고, 네이티브 라이브러리에 코드가 부르는 함수 6개가 모두 들어 있습니다. - 출시 전 점검을 두 번 했습니다(10/1, 10/6). 막는 결함은 없었고, 찾은 것은 이 배포 전에 고쳤습니다.
- 외부 사운드 모드, 진동, AI 분류는 팀이 Galaxy S25+ 에서 이 배포 직전의 개발 빌드로 실제 소리(뉴스, 빗소리·주방 ASMR, 구급차, 총소리 영상, 영화)를 들려 확인했습니다.
- 배포한 뒤 이 APK 를 Galaxy S25+(Android 16)에 깔아 외부 사운드 모드로 켜 봤습니다(앱 진동은 막고). AI 모델을 정상으로 불러와 판정이 실시간으로 나왔고(추론 약 23ms), 끄면 마이크가 바로 반납됐습니다.
확인하지 못한 것
- 마지막에 들어간 분류 탭 번역(개발자 모드 전용)은 실기기에서 보지 못했습니다.
- Android 12 기기(S22)에서는 외부 사운드 모드를 아직 확인하지 못했습니다.
알려진 제한
v1.5.2 — 발광 켠 화면이 가벼워지고, 색 고르기·알림 언어를 고쳤습니다
무엇이 나아졌나
발광을 켜 두면 화면 그리는 비용이 크게 줄었습니다. 가장자리만 칠하는 모드(파도·외곽선·패드)는 화면 전체가 아니라 가장자리 띠만 그리도록 바꿔 두었는데, 발광을 켠 경우는 그동안 빠져 있었습니다. Galaxy S25+ 에서 한 코어 기준으로 이렇게 달라집니다.
| 모드 (발광 켬) | 전 | 후 |
|---|---|---|
| 파도 | 90% | 52% |
| 패드 | 88% | 31% |
| 외곽선 | 88% | 60% |
늦게 그려지는 프레임도 함께 줄었습니다(파도 97% → 34%, 패드 97% → 2%). 발광을 켜 둔 채 게임을 하던 분들이 가장 크게 느낄 부분입니다.
고친 것
- 가로 화면에서 색을 고를 때 사각형을 위아래로 끌면 밝기가 바뀌지 않고 창이 밀렸습니다. 밝기는 그 끌기로만 고를 수 있어서, 가로에서는 어두운 색을 만들 방법이 없었습니다.
- 색을 고르는 중 화면을 돌리거나 화면이 다시 만들어지면 창이 닫히고 고르던 색이 처음으로 돌아갔습니다.
- 가로 화면에서 색 고르기 창의 색조 막대와 미리 담긴 색이 잘렸습니다.
- 백업으로 새 폰에 옮기면 그 폰에서 켠 적도 없는데 "꺼졌습니다" 안내가 떴습니다.
- OS 업데이트를 받으면 같은 폰인데도 꺼짐 안내와 타일 추가 표시가 지워졌습니다.
- 앱 언어를 바꿔도 실행 중 알림이 떠난 언어로 남았습니다. 시스템 설정의 알림 채널 이름도 옛 언어로 남아 있었습니다. Android 12 이하와 13 이상 모두 고쳤습니다.
- 탭을 옮기는 동안 손을 떼면 지나가던 탭으로 되돌아갔습니다.
- 색 고르기 창의 사각형과 색조 막대를 화면 읽어주기로 읽을 수 없었습니다. 지금 값을 읽어 줍니다.
팀용 도구 (기본 꺼짐)
- 개발자 모드 아래에 결과를 파일로 기록을 넣었습니다. 켜면 AI 가 내놓은 판정을 매번 CSV 로 남깁니다 — 3분류, 모델이 말한 이름, 가장 높게 본 이름 다섯 개와 확률, 부스터 전후, 소요 시간까지 들어갑니다. 지나간 소리를 나중에 되짚어 볼 때 씁니다. 켜지 않으면 파일도 폴더도 만들지 않습니다.
- 쓰이지 않던 내부 코드를 정리했습니다(팀원 기여).
확인한 것
배포한 커밋(787bf04)에서 그대로 돌렸습니다.
- 유닛 테스트 358개 통과, Lint 오류 0 · 경고 0
- 에뮬레이터(Pixel 7, API 37) 계측 테스트 26개 통과
- 올라온 APK 확인: 버전
1.5.2(코드 9), arm64-v8a, targetSdk 37, 서명 지문f6a88fab…(예전과 같은 팀 공용 디버그 키라 기존 설치 위에 그대로 깔립니다), R8 이 지켜야 할 13개 항목이mapping-v1.5.2.txt에 모두 남아 있고, 네이티브 라이브러리에pushAudioBuffer·takeHapticPeak·takePeakSinceLastCheck·currentLevel이 들어 있습니다. - 발광 성능 수치는 Galaxy S25+ 에서 두 방식을 한 APK 에 넣어 번갈아 재고 순서를 뒤집어 다시 쟀습니다. 띠를 쓰지 않는 원형 모드를 대조군으로 함께 뒀습니다.
- 색 고르기·언어 변경은 에뮬레이터에서 화면과 시스템 값(알림 문구·채널 이름)으로 확인했습니다.
확인하지 못한 것
- 이 배포판을 실기기에 깔아 손으로 만져 보지는 못했습니다. 폰이 배포 직전에 잠금·절전 상태여서 입력을 보내지 않았습니다. 대신 배포 커밋에서 자동 검사를 모두 돌렸습니다.
- 소리를 내야 하는 확인(AI 분류, 진동)은 이 PC 와 폰에서 소리를 낼 수 없어, 호스트 소리를 끈 에뮬레이터에서만 했습니다. 진동은 에뮬레이터에 모터가 없어 직접 느껴 보지 못했습니다.