설정
음성 인식과 비용
기기 내 whisper(무료), 내 OpenAI 키, 또는 직접 운영하는 GPU 서버 같은 OpenAI 호환 엔드포인트 중에서 고를 수 있습니다. 오디오는 내 컴퓨터에서 선택한 서비스로 바로 전송됩니다.
#누가 비용을 내고, 통신은 어디로 가는가
비용과 네트워크 구조
- 개발사(Japan Marketing LLC)는 음성 인식이나 AI 사용 비용을 부담하지 않으며, 중계하거나 청구하지도 않습니다.
- 요청은 내 컴퓨터에서 OpenAI 또는 내 엔드포인트로 바로 전송되며, 개발사 서버를 거치지 않습니다.
- OpenAI 사용량은 내 OpenAI 계정으로 청구됩니다.
- 정리는 API 실행기를 명시적으로 고르지 않는 한(
organizer.runner: "api:<provider>", settings.json으로 설정 참고) 이미 로그인한 Claude Code / Codex CLI를 사용합니다. 스스로 API 키로 전환하는 일은 없습니다.
#방식
설정 → 음성 인식 → 엔진에서 고릅니다. 푸터의 마이크 및 음성 인식 팝오버에 현재 선택이 표시됩니다.
| 엔진 | 오디오 전송 대상 | 비용 |
|---|---|---|
| 기기 내(무료)(기본값) | 없음 | 무료 |
| OpenAI(내 키) | OpenAI | 내 OpenAI 청구: gpt-transcribe는 분당 $0.0045(시간당 약 $0.27) |
| OpenAI 호환(셀프 호스팅 GPU, Groq 등) | 입력한 엔드포인트 Base URL | 엔드포인트에 따라 다름 |
설정 → 음성 인식 → 언어: 자동, 일본어, 영어. 말하는 언어를 뜻하며, 인터페이스 언어와는 별개입니다.
#기기 내 whisper(무료)
기기 내 음성 인식은 whisper.cpp (새 탭에서 열림)를 사용합니다. whisper-cli 바이너리와 GGML 모델이 필요합니다.
1. whisper-cli 설치. Ferret은 번들된 사본(resources/whisper/<platform>-<arch>/), PATH, Homebrew 같은 일반적인 위치 순서로 찾습니다.
# macOS
brew install whisper-cpp
# Linux: build from source, then add build/bin to PATH
git clone https://github.com/ggml-org/whisper.cpp && cd whisper.cpp
cmake -B build && cmake --build build -j --config Release
# Windows: download the zip from github.com/ggml-org/whisper.cpp/releases
# and add the folder containing whisper-cli.exe to PATH
2. 모델 받기. 기기 내(무료)를 선택한 상태에서 모델을 고르고 모델 다운로드를 클릭합니다. 파일은 Hugging Face(ggerganov/whisper.cpp)에서 바로 받으며, 앱에 고정된 sha256과 대조하고(일치하지 않으면 파일을 삭제), <userData>/models/에 저장됩니다. 받은 모델은 자동으로 선택됩니다. 취소하면 받다 만 파일이 남고, 다운로드 재개로 그 지점부터 이어 받습니다.
| 모델 | 크기 | 비고 |
|---|---|---|
large-v3-turbo | 1.6 GB | 권장 기본값. Metal / GPU에서 빠름 |
large-v3-turbo-q5_0 | 574 MB | 양자화 버전. 디스크와 메모리 절약 |
small | 488 MB | CPU만 있는 컴퓨터용 |
base | 148 MB | 가벼움. 일본어 오류가 많음 |
tiny | 78 MB | 가장 빠름. 일본어에는 정확도가 부족함 |
이미 모델이 있다면 파일 선택…으로 원하는 ggml-*.bin을 지정하세요. 모델이 없으면 설정에 모델이 설정되지 않았다고 표시됩니다. 그래도 녹화는 할 수 있습니다. 오디오는 저장되고, 펜 지적 사항만 만들어집니다.
whisper-cli는 앱에 포함되어 있지 않습니다. 위와 같이 직접 설치하세요. 찾을 수 없으면 설정에 whisper.cpp(whisper-cli)를 찾을 수 없습니다. 설치한 후 설정을 다시 여세요.
가 같은 안내와 함께 표시됩니다.
#내 OpenAI 키
- 엔진을 OpenAI(내 키)로 설정합니다.
sk-로 시작하는 키를 OpenAI API 키에 붙여 넣고 저장을 클릭합니다.- 연결 테스트를 클릭합니다. 1초 분량의 무음을 보냅니다(약 $0.0001).
모델은 gpt-transcribe로 고정되어 있습니다. 개발 모드(pnpm dev)에서만 무시 목록에 있는 .env 파일의 OPENAI_API_KEY도 읽습니다. 패키징된 빌드는 .env를 읽지 않습니다.
#OpenAI 호환 엔드포인트
Ferret은 POST <base>/v1/audio/transcriptions(multipart: file, model, response_format=json, language, prompt)를 보내므로, OpenAI 음성 인식 경로를 구현한 서버를 대상으로 설계되어 있습니다.
- 엔진을 OpenAI 호환(셀프 호스팅 GPU, Groq 등)으로 설정합니다.
- 엔드포인트 Base URL과 모델(엔드포인트의 모델 이름)을 입력합니다.
- 서버에 키가 필요하면 엔드포인트 API 키(선택 사항)를 입력하고 저장을 클릭합니다.
- 연결 테스트를 클릭합니다. 오류에는 원인이 표시됩니다. 예: 잘못된 Base URL(
/v1/audio/transcriptions없음), 거부된 키, 알 수 없는 모델 이름.
| 서버 | Base URL | 모델(예) |
|---|---|---|
| speaches (새 탭에서 열림)(이전 이름 faster-whisper-server) | http://localhost:8000/v1 | Systran/faster-whisper-small |
vLLM (새 탭에서 열림)(vllm serve openai/whisper-large-v3) | http://localhost:8000/v1 | openai/whisper-large-v3 |
| Groq (새 탭에서 열림) | https://api.groq.com/openai/v1 | whisper-large-v3-turbo |
Ferret은 이러한 OpenAI 호환 서버를 대상으로 설계되었지만, 아직 Ferret과 함께 테스트하지는 않았습니다. URL과 모델 이름은 각 서버 문서에 적힌 기본값입니다.
- 끝의
/v1이나 붙여 넣은/v1/audio/transcriptions는 저장할 때 제거되므로 어느 형식이든 됩니다. - 사용자 이름이나 비밀번호가 들어 있는 URL은 거부되므로, 키가
settings.json에 남는 일은 없습니다. - LAN이나 tailnet에 있는 GPU 서버라면 그 주소를 사용하세요. 예:
http://100.x.y.z:8000/v1
#비용 한도
OpenAI와 호환 엔드포인트에서는 비용 한도를 설정할 수 있습니다: 없음, 또는 리뷰당 최대 $0.10부터 $0.50, $1(기본값), $5, $20까지. 내 GPU라면 없음이 적절합니다. 이 설정은 capture.costLimitUsd로 저장됩니다(최대 1000, null은 한도 없음). 호환 엔드포인트는 분당 $0.006으로 추정합니다.
다음 청크가 한도를 넘게 되면 Ferret은 전송을 멈추고 오디오를 보관합니다. 실패한 API 호출은 자동으로 다시 시도하지 않습니다.
#키가 저장되는 곳
설정에서 입력한 키는 Electron safeStorage로 암호화되어 <userData>/stt-keys.bin에 기록됩니다. 앱은 키를 settings.json에 쓰지 않습니다. 대신 settings.json에서 키를 가리키려면(환경 변수나 .env 항목) API 키를 참고하세요.
- macOS: 키체인
- Windows: DPAPI
- Linux: libsecret 또는 KWallet.
basic_text백엔드만 사용할 수 있으면 키는 현재 세션 동안만 메모리에 보관됩니다(버튼이 이번 세션에 설정으로 표시됨).
키 삭제로 삭제합니다. <userData> 경로는 파일과 환경을 참고하세요.