티스토리 뷰

소개

현장에서 떠오르는 생각을 바로 기록하고 싶었다.

메모 앱을 열고, 제목을 쓰고, 내용을 입력하는 방식은 생각보다 번거로웠다. 특히 밖에서 이동 중이거나 손이 자유롭지 않을 때는 “나중에 정리해야지”라고 생각하다가 결국 기록을 놓치는 일이 많았다.

그래서 목표를 하나 세웠다.

갤럭시 기본 음성녹음 앱으로 말만 하면,
자동으로 텍스트로 변환되고,
Obsidian inbox.md에 저장되며,
GitHub까지 업로드되게 만들기.

처음에는 단순히 음성녹음을 텍스트로 바꾸는 정도를 생각했지만, 진행하다 보니 최종적으로는 다음과 같은 자동화 구조까지 만들게 되었다.

갤럭시 기본 음성녹음 앱
→ 파일명에 “일기”가 포함된 m4a 파일 저장
→ Termux가 새 음성파일 감지
→ Gemini API로 텍스트 변환
→ Obsidian inbox.md에 자동 저장
→ Git commit
→ GitHub push
→ PC Obsidian과 동기화
가장 중요한 것은 아이디어와 구조설정이다.
어느정도 컨셉만 잡히면 AI가 친절히 설명해 준다. 나도 chatGPT에게 질문만 해서 이 결과를 만들었다.

진행 방법

1. 기본 방향 정하기

처음 고민은 이것이었다.

“삼성 기본 음성녹음 앱에서 만든 텍스트 변환 결과를 바로 가져올 수 있을까?”

하지만 실제로 진행해보니 삼성 음성녹음 앱의 자체 텍스트 변환 결과를 외부 자동화가 직접 가져오기는 쉽지 않았다. 그래서 방향을 바꿨다.

삼성 음성녹음 앱이 저장하는 m4a 파일을 감지한 뒤, 그 파일을 별도의 AI 음성 인식으로 다시 텍스트 변환하는 방식으로 진행했다.

핵심 구조는 다음과 같다.

녹음파일 감지
→ AI 전사
→ Obsidian 파일에 append
→ GitHub 업로드

2. 사용한 도구

이번 자동화에 사용한 도구는 다음과 같다.

도구역할

갤럭시 기본 음성녹음 앱 음성 메모 녹음
Termux 안드로이드에서 스크립트 실행
Gemini API m4a 음성파일을 텍스트로 변환
Obsidian 최종 기록 저장소
Git / GitHub 백업 및 PC 동기화
Termux 스마트폰 재부팅 후 자동 실행

MacroDroid도 후보였지만, 이번에는 삼성 기본 음성녹음 앱의 파일을 감지해야 했기 때문에 Termux 중심으로 구성했다.

MacroDroid는 “버튼을 눌러 음성 입력을 바로 텍스트로 받는 방식”에는 좋지만, 이미 저장된 m4a 파일을 감지하고 AI API에 보내는 구조는 Termux가 더 적합했다.

3. 음성녹음 파일 위치 확인

먼저 갤럭시 기본 음성녹음 앱이 파일을 어디에 저장하는지 확인했다.

확인 결과, 음성녹음 파일은 대략 다음과 같은 위치에 저장되었다.

내장 저장공간 / Recordings / Voice Recorder

Termux에서는 이 경로가 다음과 같은 형태로 접근된다.

$HOME/storage/shared/Recordings/Voice Recorder

이 경로를 기준으로 새 .m4a 파일이 생기는지 감시하도록 만들었다.

4. Obsidian inbox.md에 직접 기록되는지 테스트

자동화 전에 가장 먼저 확인한 것은 Termux가 Obsidian 파일에 직접 쓸 수 있는지였다.

Obsidian Vault 안의 inbox.md에 테스트 문장을 추가해보았다.

echo "음성기록 테스트" >> "<Obsidian Vault 경로>/inbox.md"

정상적으로 inbox.md에 문장이 추가되는 것을 확인했다.

이 단계가 중요했다.
AI 변환이 아무리 잘 되어도, 최종 저장 위치에 기록할 수 없다면 자동화가 완성될 수 없기 때문이다.

 

  

5. 새 음성녹음 파일 감지하기

다음으로는 Termux에서 음성녹음 폴더를 주기적으로 확인하면서 새 파일을 감지하는 스크립트를 만들었다.

초기에는 모든 .m4a 파일을 감지하게 했다.

그런데 문제가 있었다.

기존에 저장되어 있던 모든 음성녹음 파일이 한꺼번에 감지되었다. 그래서 이미 처리한 파일 목록을 따로 저장하는 방식으로 중복 처리를 막았다.

구조는 단순하다.

1. 음성녹음 폴더에서 m4a 파일 목록 확인
2. 이미 처리한 파일인지 확인
3. 처음 보는 파일이면 inbox.md에 기록
4. 처리한 파일 목록에 추가

이 과정을 통해 새 녹음이 저장될 때마다 Obsidian에 자동으로 기록되는 것까지 확인했다.

6. “일기” 파일만 처리하도록 필터링

모든 음성녹음 파일을 텍스트 변환하면 불필요한 파일까지 처리될 수 있다.

회의 녹음, 테스트 녹음, 개인 녹음, 벨소리 파일 등까지 전부 변환될 수 있기 때문이다.

그래서 규칙을 하나 만들었다.

파일명에 “일기”가 들어간 음성파일만 자동 변환한다.

예를 들면 다음과 같다.

일기_아침생각
일기_감사메모
일기_기도후느낌

주의할 점도 있었다.

파일명을 바꿀 때 .m4a 확장자를 직접 붙이면 실제 파일명이 일기_테스트.m4a.m4a처럼 중복될 수 있다. 그래서 파일명은 확장자 없이 입력하는 것이 좋다.

좋은 예: 일기_아침생각
주의할 예: 일기_아침생각.m4a

7. Gemini API로 음성 텍스트 변환하기

다음 단계는 실제 음성파일을 텍스트로 바꾸는 것이었다.

Gemini API 키를 Termux에 저장하고, 새로 감지된 m4a 파일을 API에 보내 텍스트 변환을 시도했다.

이때 API 키는 절대 GitHub에 올리면 안 되기 때문에 별도의 설정 파일에 보관했다.

API 키 파일은 GitHub에 올리지 않음

테스트 결과, 짧은 음성파일은 정상적으로 텍스트로 변환되었다.

예를 들어 테스트 음성이 다음과 같았다면,

일기 자동 녹음을 위한 테스트 중입니다.

Obsidian inbox.md에는 다음과 같은 형태로 저장되었다.

## 📓 일기 음성 텍스트 변환
- 변환시간: 2026-06-08 03:00:00
- 파일명: 일기_테스트.m4a

일기 자동 녹음을 위한 테스트 중입니다.

8. GitHub 자동 업로드 붙이기

Obsidian에 저장되는 것만으로도 충분히 유용했지만, PC와 동기화하려면 GitHub까지 자동으로 업로드되어야 했다.

그래서 음성 텍스트 변환이 끝난 뒤 다음 작업이 자동으로 실행되도록 했다.

git add inbox.md
git commit -m "Add diary voice transcription"
git pull --rebase
git push

처음에는 수동으로 Git 연결 상태를 확인했다.

git status
git pull --rebase
git push

문제가 없다는 것을 확인한 뒤, 자동화 스크립트 안에 Git commit과 push 과정을 추가했다.

결과적으로 음성녹음 하나가 저장되면 다음 흐름이 자동으로 이어졌다.

새 일기 녹음 발견
→ Gemini 텍스트 변환
→ inbox.md 저장
→ Git commit
→ GitHub push

9. 재부팅 후에도 자동 실행되게 만들기

마지막 문제는 스마트폰을 재부팅하면 자동화가 멈춘다는 점이었다.

이를 해결하기 위해 Termux를 사용했다.

부팅 시 실행될 스크립트를 만들어두고, 스마트폰을 재부팅한 뒤에도 감시 스크립트가 자동으로 실행되는지 확인했다.

재부팅 후 프로세스를 확인했을 때, 감시 스크립트가 백그라운드에서 정상 실행되고 있었다.

이후 새 음성녹음을 만들고 파일명에 “일기”를 포함하자, 자동으로 텍스트 변환되고 Obsidian에 저장되었으며 GitHub 업로드까지 성공했다.

최종적으로 아래 구조가 완성되었다.

스마트폰 재부팅
→ Termux:Boot 자동 실행
→ 음성녹음 폴더 감시
→ “일기” 파일만 감지
→ Gemini API로 텍스트 변환
→ Obsidian inbox.md 저장
→ GitHub 자동 업로드
  

결과와 배운 점

이번 자동화의 가장 큰 성과는 “기록의 마찰”을 크게 줄였다는 점이다.

이제 현장에서 생각이 떠오르면 복잡한 앱을 열 필요 없이 기본 음성녹음 앱을 켜고 말하면 된다. 그리고 파일명에 “일기”만 포함하면 나머지는 자동으로 처리된다.

이번 과정에서 배운 점은 세 가지다.

첫째, 자동화는 한 번에 완성하려고 하면 어렵다.
처음부터 “음성녹음 → 텍스트 변환 → Obsidian 저장 → GitHub 업로드 → 부팅 자동 실행”을 한 번에 만들려고 했다면 중간에 막혔을 가능성이 높다. 실제로는 아주 작은 단계로 나누어 진행했다.

파일 경로 확인
→ inbox.md 쓰기 테스트
→ 새 파일 감지
→ 일기 파일만 필터링
→ 음성 텍스트 변환
→ GitHub 업로드
→ 부팅 자동 실행

둘째, “완전 자동화”보다 “규칙 있는 자동화”가 더 안정적이다.
모든 음성녹음을 처리하는 대신 파일명에 “일기”가 들어간 것만 처리하도록 한 것이 좋은 선택이었다. 덕분에 불필요한 녹음파일이 자동 변환되는 것을 막을 수 있었다.

셋째, 보안 정보는 반드시 분리해야 한다.
Gemini API 키는 자동화에 필요하지만, GitHub에 올라가면 안 된다. 그래서 API 키는 별도 설정 파일에 저장하고, GitHub에는 자동화 문서와 스크립트만 올렸다.

이번 자동화는 단순한 기술 실험이 아니라, 현장에서 바로 기록하고 나중에 정리할 수 있는 개인 지식관리 시스템의 출발점이 되었다.

앞으로는 이 구조를 확장해서 다음과 같은 방식도 시도해볼 수 있을 것 같다.

일기_ → 개인 일기 파일로 저장
업무_ → 업무 메모 파일로 저장
아이디어_ → 아이디어 inbox로 저장
전시원_ → 현장 관찰 기록으로 저장

음성녹음을 단순한 파일로 남기는 것이 아니라, 자동으로 지식 저장소에 들어오게 만드는 것이 핵심이다.

도움 받은 글

이번 자동화 과정에서 참고한 자료는 다음과 같다.

  • Termux 기본 사용 방법
  • Termux 부팅 자동 실행 방식
  • Gemini API 오디오 입력 문서
  • GitHub SSH 연결 및 Git push 방법
  • Obsidian Vault와 GitHub 동기화 방식
  • 안드로이드 파일 경로 및 저장소 권한 설정 방법
.adsense-box { margin: 32px 0; text-align: center; }