쿡북 / 음성 일기
음성 일기
, 한 주를 다시 읽어 줍니다

스크린샷. 로컬에서 실행 중인 템플릿입니다.
- 모델
- ink-whisper, sonic-3.6
- 언어
- 영어
- 라이선스
- Apache-2.0
- 기술 스택
- ExpoReact NativeExpo Router API routesAI SDKAsyncStorage
- Cartesia 제품
- InkSonic 3.6
하는 일
앱 하나가 iOS, Android, 웹에서 돌아갑니다. 일기는 내 기기에 남으므로 데이터베이스도 로그인도 없습니다. 녹음은 받아쓰기를 위해 Cartesia로, 받아쓴 텍스트는 내 LLM 제공자로 갑니다. 앱은 녹음 버튼 아래에 이 사실을 알리고, 서버는 오디오를 저장하지 않습니다.
직접 실행하기
설치
Node 22.22 이상에서 아래 명령어를 실행하세요. pnpm도 쓸 수 있습니다. 아래 표를 보고
.env.local을 채우세요.환경 변수 - CARTESIA_API_KEY
play.cartesia.ai/keys- LLM_MODEL
provider/model, 예를 들어openai/gpt-5.4-mini- OPENAI_API_KEY
LLM_MODEL이 openai/로 시작할 때- ANTHROPIC_API_KEY
LLM_MODEL이 anthropic/으로 시작할 때- AI_GATEWAY_API_KEY
- 그 밖의 제공업체
- TRUST_PROXY
- 선택 사항. 자체 리버스 프록시 뒤에서는 1
일기 녹음
npm run dev를 실행하고 w를 눌러 웹 앱을 여세요. 휴대폰으로 쓰려면 프로젝트를 시험해 볼 수 있는 Expo의 무료 앱 Expo Go로 QR 코드를 스캔하세요. Start recording으로 일기를 녹음하세요. 그다음 Recap을 열고 Write my recap을 탭하세요.
코딩 에이전트로 만들기
어디서 시작하고 무엇을 먼저 읽어야 하는지 코딩 에이전트에게 알려 주는 프롬프트입니다.
Build a voice journal app in Expo with Cartesia. Start from https:/ and follow its AGENTS.md for the commands, files and rules. Expo Router API routes hold the keys: /api/transcribe sends each recording to ink-whisper with client.stt.transcribe from @cartesia/cartesia-js, the AI SDK writes the title, mood, reflection and weekly recap, and /api/speak turns the recap into an MP3 with sonic-3.6 through client.tts.generate. Never give a key an EXPO_PUBLIC_ prefix. If I don't have a Cartesia API key yet, follow https:/ to get one.
작동 방식
이렇게 만든 이유
녹음이 끝난 파일에는 스트림이 필요 없습니다
일기는 이미 끝난 녹음이라 ink-whisper에 한 번 올리는 편이 실시간 스트림보다 간단합니다. 스트리밍에는 말하는 동안의 원시 오디오가 필요한데, Expo의 녹음기는 웹에서 이를 주지 못합니다.
요약은 듣기 좋게 씁니다
요약은 최근 7일의 일기를 오래된 것부터 읽고, 듣기 좋게 120~200단어로 씁니다. Sonic 3.6은 이를 어느 플랫폼에서나 재생되는 MP3로 돌려줍니다.
원하는 대로 바꾸기
기본 음성 바꾸기
기본 음성은 lib/limits.ts에서 정합니다. Cartesia 음성 라이브러리에서 다른 음성을 고른 뒤 app/recap.tsx에서 소개 문구를 바꾸세요.
다른 언어 전사
받아쓰기 언어는 app/api/transcribe+api.ts에서 바꾸세요. 그다음 app/api/speak+api.ts에서 음성 언어를 바꾸고 그 언어를 말하는 음성을 고르세요.
기분 바꾸기
기분 목록은 lib/schema.ts에 있습니다. 회고와 요약의 프롬프트는 lib/server/prompts.ts에 있습니다.
자주 묻는 질문
모바일 앱에서 API 키는 안전한가요?
서버에 두기만 하면 안전합니다. 키는 앱의 서버 라우트만 읽고, 휴대폰에 설치되는 앱에는 들어가지 않습니다. 키에 EXPO_PUBLIC_ 접두사를 붙이지 마세요. Expo가 그 값을 앱에 넣어 누구나 읽을 수 있게 됩니다.
실제 iPhone이나 Android 폰에서 동작하나요?
개발 중에는 Expo Go에서 동작합니다. 스토어용 빌드에서는 서버 라우트를 배포하고 앱이 그곳을 가리키게 합니다. 웹 빌드는 Chrome에서 테스트했고, 휴대폰 빌드는 컴파일되지만 실제 기기에서 실행하지는 않았습니다.
그대로 공개해도 되나요?
아니요. 서버 라우트는 누구나 호출할 수 있으니, 배포하기 전에 로그인을 추가하고 라우트마다 확인하세요. 내장된 요청 제한은 가벼운 남용만 늦춰 줍니다.
치료용 앱인가요?
아니요. 프롬프트는 모델에게 진단하거나 의학적 조언을 하지 말라고 지시합니다. 일기에 자해 이야기가 나오면, 모델은 믿을 만한 사람이나 지역 위기 상담 전화를 안내합니다.
요약에 내 목소리를 쓸 수 있나요?
이 템플릿에서는 안 됩니다. 음성 복제는 일부러 넣지 않았으므로 앱은 Cartesia 라이브러리의 음성만 씁니다.
이 템플릿의 단계별 가이드가 있나요?
네. 레시피에서 코드를 따라가며 설명하고, README에서 설정, 환경 변수, 배포를 다루며, 배치 전사 API 레퍼런스에서 Cartesia 쪽을 설명합니다.
쿡북 더 보기
오늘 시작하세요
전문가와 상담하세요.
팀원과 연결해 Cartesia가 세계적 수준의 음성 경험을 만드는 데 어떻게 도움이 되는지 알아보세요.
개발을 시작하세요.
API로 모델을 사용하고 몇 분 만에 음성 에이전트를 프로덕션에 배포하세요.

