프로젝트

갤럭시 음성 브리지 사용 중

삼성 녹음기 자동화에서 전용 앱으로, 그리고 녹음 캡슐 한 개에 PR 18개를 쓴 닷새

닷새 동안 PR 34개, 그중 18개가 녹음 캡슐.

9/69/79/89/99/101음성 전송10받아쓰기 · 전사9녹음 캡슐91Mac 두 대녹음 캡슐 PR 18개닷새 · PR 34개
칸 안 숫자가 그날 머지한 PR. 파랑은 기능 · 연결, 보라는 Mac 화면 아래 녹음 캡슐.

개발 과정

9월 6일삼성 녹음기 대신 전용 앱9월 7일단축키를 나눠 쓰기9월 7일다시 빌드해도 권한 유지9월 7~8일CPU 서버 → Handy 가속9월 8일케이블 없이 같은 Wi-Fi9월 8~9일녹음 캡슐 — PR 18개9월 9일Esc 를 세 번 고침9월 9~10일Mac 두 대
밀어서 보기
9월 6일

삼성 녹음기 대신 전용 앱

막힘
삼성 음성 녹음기의 녹음 시작 Intent(START_RECORDING)는 signature|privileged 권한 — 남의 앱에서 못 부름. 화면 자동화는 되지만 저장 대화상자에 의존
한 것
전용 안드로이드 앱이 마이크 PCM 을 녹음 중 Mac 으로 전송. 갤럭시 · Mac 양쪽에 WAV 백업. 첫 연결은 ADB reverse 로만
결과
PR #1. 오디오 경로를 먼저 검증하고 Whisper · 단축키는 그 뒤에
날짜를 누르거나 축을 밀면 그때 무엇이 막혔고 무엇을 정했는지 아래에 펼쳐진다.

어떻게 도나

프로세스 셋이 한 소켓으로 붙어 Option+Space 한 번을 커서 자리의 글로 옮긴다. 듣는 쪽과 알아듣는 쪽을 나눈 건 Whisper large 급이 맥의 Metal 을 쓰기 때문이고, 폰이 듣는 건 맥 내장 마이크보다 입에 가깝기 때문이다.

핫키 헬퍼와 수신 서버와 브리지 서비스 셋이 한 소켓으로 붙어 Option+Space 한 번을 커서 자리의 글로 옮기는 흐름
줄이 프로세스, 위에서 아래가 시간. 갈색 줄기는 녹음 중에만 도는 곁가지다.

소리를 나눠 보내는 동안 경계를 잃지 않으려면 길이가 앞에 와야 한다. TCP 는 바이트 흐름이라 알아서 잘라 주지 않는다.

프레임은 종류 1바이트와 길이 4바이트 머리에 몸이 붙는 꼴이고 종류는 다섯 가지다
0.1초치씩 끊어 보낸다 — 말이 끝나기 전에 맥이 이미 대부분을 받아 둔다.

폰은 USB 를 먼저 250ms 만 찔러 보고, 없으면 와이파이로 맥을 부른다. 무선 디버깅을 켜 둘 필요가 없다.

맥이 여는 포트 넷 — 둘은 같은 와이파이 전체에, 둘은 127.0.0.1 에만 묶여 있다
제어 포트만 127.0.0.1 에 묶어 뒀다 — 같은 와이파이에 있는 남이 내 녹음을 켜지 못하게.

음악이 멈추고 다시 나는 자리

멈추는 건 되는데 다시 나지 않던 이유는 하나다 — 빌리지 않고 빼앗았으니 돌려줄 것이 없었다. 안드로이드는 누가 마이크를 열면 음악을 눌러 주는데, 그건 요청이 아니라 결과라서 녹음이 끝났을 때 되살릴 주체가 없다.

전에는 마이크를 잡은 부수효과로 음악이 멈춰 되살릴 주체가 없었고, 이제는 포커스를 빌렸다 놓아 상대가 스스로 이어서 난다
폰에서 재 봤다 — 녹음 전 PLAYING, 녹음 중 PAUSED, 끝난 직후 PLAYING.

TRANSIENT 가 핵심이다. 영구 GAIN 으로 받으면 상대는 끝난 줄 모르고 멈춘 채 남는다. EXCLUSIVE 는 줄이지 말고 아예 멈추라는 뜻이고, 작게라도 나면 그 소리가 녹음에 섞인다. 맥 쪽에서는 스피커를 음소거해 같은 문제를 다르게 푼다 — 끄기 전 상태를 기억해 두고 끝나면 그 값으로 되돌린다. 남의 앱을 건드릴 수 없는 폰에서는 포커스를 빌리는 길밖에 없다.

의사결정 방식

말로 고르지 않고 후보를 HTML 로 그려 같은 조건에서 비교. 캡슐은 시안과 실제 Mac 화면을 나란히 놓고 밀도 · 좌표계를 맞춤. 누르면 그때 페이지.

Mac 상태 표시 넷 · 갤럭시 연결 화면 둘
Mac 상태 표시 넷 · 갤럭시 연결 화면 둘9월 8일후보 보기
밝은 캡슐 그림자 후보
밝은 캡슐 그림자 후보9월 8일후보 보기
실제 캡슐과 대안을 같은 조건에서
실제 캡슐과 대안을 같은 조건에서9월 8일후보 보기
캡슐의 특별한 표현
캡슐의 특별한 표현9월 9일후보 보기
여섯 방향: 잉크 한 방울 · 두 기기 사이 · 빛의 틈 · 말의 밑줄 · 음성 메모지 · 작은 녹음기
여섯 방향: 잉크 한 방울 · 두 기기 사이 · 빛의 틈 · 말의 밑줄 · 음성 메모지 · 작은 녹음기9월 9일후보 보기
결국 기존 캡슐의 미세 조정 A~F, F 채택
결국 기존 캡슐의 미세 조정 A~F, F 채택9월 9일후보 보기
그림을 누르면 크게 뜨고, 「후보 보기」 가 그 판으로 간다.

배운 점

남의 앱 흐름에 기대면 권한 하나에 막힘. 녹음기 자동화 대신 마이크 PCM 부터 직접 잡은 게 첫날의 전환.

멀리 돌아간 탐색이 원래 자리로 옴. 여섯 방향을 그려 본 뒤 고른 건 기존 캡슐의 미세 조정 F안.

산출물

  • 시안 페이지 여섯 — 위 격자
  • 소스 — private repo(newhigen-labs/galaxy-voice-bridge)