Mila: Mac에서 녹음, 받아쓰기 및 전사(Transcription)를 로컬로 처리하는 네이티브 앱
요약
Mila는 Mac에서 녹음, 받아쓰기 및 전사 기능을 로컬로 처리하는 네이티브 macOS 앱입니다. 시스템 오디오 녹음부터 두 가지 언어 구술 지원까지 다양한 기능을 제공하며, OpenAI 또는 Claude와 같은 AI 모델을 활용하여 자동 요약 및 제목 생성이 가능합니다.
핵심 포인트
- 시스템 오디오를 가상 장치 없이 녹음할 수 있습니다.
- OpenAI/ivrit.ai 모델을 이용한 온디바이스 전사 및 구술 지원이 핵심입니다.
- 녹음 후 AI가 자동으로 개요와 제목을 생성해 효율적입니다.
- `.milaconfig` 파일을 통해 팀원 간의 설정 공유가 용이합니다.
Mila
Mac에서 로컬로 녹음하고, 구술하며, 전사(transcribe)할 수 있는 네이티브 macOS 앱입니다. 오디오는 기기를 벗어나지 않습니다. 히브리어 전사는 ivrit.ai의 large-v3 finetune을 사용하며, 영어는 OpenAI의 large-v3-turbo를 사용합니다. 두 모델 모두 whisper.cpp (Metal을 통한 GPU)로 구동됩니다.
다운로드: island-io.github.io/mila
기능(Features)
- 마이크에서 녹음: 언제든지 마이크를 통해 녹음할 수 있습니다.
- 시스템 오디오 녹음:
ScreenCaptureKit을 사용하여 단일 앱(Zoom, Chrome의 Google Meet, Slack 등)의 시스템 오디오를 녹음합니다. 가상 오디오 장치가 필요하지 않습니다. - 회의 녹음: 마이크와 시스템 오디오가 하나의 모노 16 kHz WAV 파일로 혼합됩니다.
- 두 언어 구술(Dictate): 별도의 전역 단축키를 사용하여 두 가지 언어로 구술할 수 있습니다:
⌘2— 영어 구술 (OpenAIlarge-v3-turbo)⌘3— 히브리어 구술 (ivrit.ailarge-v3)
두 단축키는 **설정(Settings) → 일반(General)**에서 사용자가 설정할 수 있습니다.
- 온디바이스 전사: ivrit.ai
large-v3(히브리어) 또는 OpenAIlarge-v3-turbo(영어/다국어)를 사용하여 기기 내에서 전사합니다. 오디오는 절대 Mac을 벗어나지 않습니다. - 원격 서버 전사: Mila를 OpenAI와 호환되는 모든
/v1/audio/transcriptions엔드포인트(OpenAI의 호스팅된 Whisper API 또는 자체 호스팅 서버)에 연결할 수 있습니다. 이는 **설정(Settings) → 모델(Models) → 백엔드(Backend)**에서 설정합니다. 저사양 Mac이나 로컬에서 실행하기에는 너무 큰 히브리어 모델을 사용하고 싶을 때 유용합니다. 원격 전사 서버 설정을 참조하세요. - 화자 분리(Speaker diarization): 누가 무엇을 말했는지 식별하며, 색상 코드가 지정된 각 화자 레이블로 표시됩니다. 화자 이름 지정: 녹음 간에 재사용되는 영구 디렉토리에서 실제 이름을 가져와 레이블을 이름으로 변경할 수 있습니다.
- AI 요약 및 제목: 녹음이 끝날 때마다, Mila는 로컬 Claude/Cursor/OpenAI 호환 CLI를 호출하여 녹음에 자동으로 이름을 지정하고 AI 개요를 생성합니다.
Mila를 **설정(Settings) → AI 제공업체(AI Provider)**에서 한 번 연결한 후, **설정(Settings) → AI 기능(AI Features)**에서 기능을 켜고 프롬프트를 편집합니다. (Live AI 모드도 이 곳에 있습니다.)
- iPhone 음성 메모 동기화(sync) — Mila는 사용자의 iPhone에서 iCloud가 동기화하는 폴더를 모니터링하고 새로운 녹음을 자동으로 전사합니다. **설정(Settings) → 음성 메모(Voice Memos)**에서 설정할 수 있습니다.
.milaconfig파일을 이용한 원클릭 팀 설정 — 구성 파일(config file)을 더블 클릭하여 전사 서버, 모델, 언어 등을 한 번에 적용할 수 있습니다. 팀원에게 즉시 사용할 수 있는 구성을 전달하기에 완벽합니다.- MDM을 통한 조직 전체 설정 —
.milaconfig가 담고 있는 것과 동일한 설정을 구성 프로필(configuration profile) (Jamf, Kandji, Intune 등)로 푸시할 수 있으며, 이는 모든 사용자에게 잠금 처리됩니다("Managed by your organization"). 예를 들어, 회사 전체를 하나의 전사 서버에 연결하는 식입니다. 관리 설정이.milaconfig보다 우선하며,.milaconfig가 사용자의 자체 선택보다 우선합니다.docs/mdm.md참조. - 녹음을 동료와 공유 — 마우스 오른쪽 버튼 클릭 → **녹음 공유(Share Recording…)**를 통해 단일
.milashare파일(오디오 + 전사본 + 화자 이름 + 요약 + 실행 항목, 선택적으로 화자의 음성 프로필)이 생성됩니다. 이 파일을 더블 클릭하면 "Shared by …" 태그가 붙은 라이브러리에 도착합니다. 업데이트된 전사본을 다시 공유할 경우 복제되는 대신 기존 사본이 업데이트됩니다.docs/sharing.md참조. - 전사 대기열(Transcription queue) — 대기 중이거나 진행 중인 작업, 최근 삭제된 작업을 확인하고, 언제든지 대기열의 항목을 중지하거나 제거할 수 있습니다.
- SRT 내보내기(export) (녹음 중간 부분 포함), 세그먼트별 타임스탬프, 클릭하여 탐색, 전사본 복사/공유, 히브리어의 RTL 렌더링 지원.
- 우발적 클립 자동 폐기(Auto-discard) — 음성이 없는 매우 짧은 녹음은 자동으로 삭제됩니다(임계값은 **설정(Settings) → 저장 공간(Storage)**에서 설정 가능).
- 사전 출시 빌드 참여 — **설정(Settings) → 일반(General) → 업데이트(Updates)**를 통해 사전 출시 빌드에 참여할 수 있습니다.
시스템 요구 사항
Mila 실행을 위해:
- macOS 14 (Sonoma) 이상.
- Apple Silicon (M 시리즈) 사용을 강력히 권장합니다. 전사(Transcription)는 Metal GPU(
whisper.cpp)에서, 화자 분리(speaker diarization)는 MPS/CPU(pyannote)에서 실행됩니다. Intel Mac은 CPU로 대체되며 훨씬 느립니다. - 디스크: 기본 Whisper 모델 두 개를 처음 실행 시 다운로드하면 약 4.6 GB가 필요합니다 (ivrit.ai
large-v3~3.0 GB + OpenAIlarge-v3-turbo~1.6 GB). 화자 분리를 활성화할 경우 약 1 GB가 추가로 필요합니다 (번들된 Python 런타임 및 최초 활성화 시 torch 다운로드). - 메모리(근사치): 통합 메모리 16 GB를 권장합니다. 일반 전사에는 8 GB도 작동 가능하지만, 화자 분리를 사용하기에는 빠듯할 수 있습니다. 대략적인 작업 집합: 히브리어
large-v3~3.5–4 GB, 영어large-v3-turbo~1.5–2 GB, 화자 분리는 약 1–2 GB를 추가합니다. (RAM 수치는 정확한 사양이 아닌 근사치 가이드입니다.) - 실시간(Live) 모드 — 실시간으로 전사와 화자 분리를 동시에 실행하는 것이 가장 부하가 큰 경로입니다. 이 기능은 MacBook Air급 칩에서는 자동으로 비활성화됩니다(실시간 처리가 불가능하기 때문이며), M 시리즈 Pro/Max 또는 M2 이상에서 권장됩니다. 녹음 후 나중에 전사하는 방식은 여전히 Air에서도 작동합니다.
Mila를 빌드하려면:
- Xcode 15.3 이상 (Command Line Tools만으로는 부족합니다).
- Homebrew (
xcodegen설치에 사용됩니다).
빌드 및 실행
프로젝트 루트에서:
make bootstrap # 일회성: 누락된 경우 brew를 통해 xcodegen을 설치합니다
make project # project.yml로부터 Mila.xcodeproj를 생성합니다
make open # Xcode를 엽니다
또는 CLI에서 모든 작업을 수행할 수 있습니다:
make run
첫 빌드 시 Packages/WhisperBinary가 해결되면서 공식 ggml-org/whisper.cpp v1.8.4 릴리스의 whisper.xcframework (~65 MB)를 다운로드합니다. 체크섬은 Packages/WhisperBinary/Package.swift에 고정되어 있습니다.
모델
앱을 처음 실행하면 두 기본 모델이 백그라운드에서 다운로드됩니다.
ivrit-ai/whisper-large-v3-ggml— 히브리어(~3.0 GB). 작은large-v3-turbo파인튜닝 모델보다 히브리어 음성에서 경험적으로 더 정확하므로, 크기와 약 2배의 추론 비용에도 불구하고 이 큰 버전을 제공합니다.openai whisper-large-v3-turbo(ggerganov/whisper.cpp 빌드) — 영어 / 다국어(~1.6 GB).
진행 상황은 앱 내 배너에서 모니터링하거나 CLI에서 사전 다운로드할 수 있습니다:
make models
모델은 다음 위치에 저장됩니다:
~/Library/Application Support/Mila/Models/
ivrit-ai-whisper-large-v3.bin
openai-whisper-large-v3-turbo.bin
앱이 해당 디렉토리에서 자동으로 모델을 가져옵니다.
원격 전사(Remote transcription) (선택 사항)
기본적으로 Mila는 장치 내에서 완전히 전사를 수행하며, 오디오는 절대 Mac을 벗어나지 않습니다. 만약 전사를 외부로 처리하고 싶다면 (예: 저전력 Mac의 경우, 또는 로컬에서 실행하기에 너무 큰 히브리어 튜닝 모델을 사용하려는 경우), **설정 → 모델(Settings → Models)**에서 OpenAI와 호환되는 /v1/audio/transcriptions 엔드포인트로 백엔드를 전환할 수 있습니다. 여기에는 OpenAI 자체의 Whisper API나 자체 호스팅 서버가 포함됩니다. API 키는 Keychain에 저장되며, 이 백엔드가 활성화된 동안 오디오가 장치를 벗어난다는 것을 UI에서 표시합니다.
사용자 자신의 기기에서 ivrit.ai의 히브리어 모델(또는 다른 Whisper 모델)을 이 API를 통해 실행하려면 **docs/REMOTE_TRANSCRIPTION_SERVER.md**를 참조하십시오.
Kubernetes에서 공유 팀 서버를 배포하여 (GPU 1개, 사용자 다수 — Mila는 원격 백엔드를 통해 해당 서버를 가리키며, 오디오는 사용자가 제어하는 인프라에 머무름), **docs/self-hosted-server/**를 참조하십시오. 이 폴더에는 Kubernetes 매니페스트와 단계별 가이드가 포함되어 있으며, 팀원에게 원클릭 설정을 위해 전달할 수 있는 example.milaconfig 파일도 있습니다. 대신 조직의 모든 Mac을 해당 서버에 고정하려면 동일한 설정을 구성 프로필로 푸시하십시오 — **docs/mdm.md**를 참조하십시오.
필수 권한
최초 사용 시 macOS는 다음 항목에 대한 권한을 요청합니다. 관련 기능 작동에 모두 필수적입니다:
| 기능 | 시스템 설정 패널 |
|---|---|
| 마이크 녹음 | 개인 정보 보호 및 보안 → 마이크 |
| ... |
회의 캡처 작동 방식
ScreenCaptureKit은 애플리케이션별 오디오 캡처를 허용합니다. 새 녹화 시 Zoom을 선택하면 Zoom의 오디오 출력만 캡처되고 (사용자 마이크나 다른 앱은 제외), 마이크는 AVAudioEngine을 통해 별도로 캡처되며, 이 두 스트림이 다운믹스(평균)되어 단일 모노 16kHz WAV 파일로 만들어 Whisper에 공급됩니다. SCK가 작동하려면 비디오 스트림이 필요하므로 2×2 플레이스홀더가 구성되고 폐기됩니다.
프로젝트 레이아웃
Mila/
├── App/MilaApp.swift # SwiftUI @main 진입점 + AppDelegate
├── Actions/ # LLM 액션 실행기 (제목, 요약, send-to-LLM)
...
릴리스 DMG 빌드하기
# 1. project.yml에서 MARKETING_VERSION + CURRENT_PROJECT_VERSION 변경
# 2. make dmg # ad-hoc 서명된 Mila-<버전>.dmg를 빌드합니다
make dmg는 로컬 테스트 및 자체 배포에 적합한 ad-hoc 서명 DMG를 생성합니다. macOS Gatekeeper는 최초 실행 시 표준 프롬프트(오른쪽 클릭 → 열기)를 표시할 것입니다. 공증된 빌드를 배포하려면, 앱을 자신의 Apple Developer ID로 서명하고 Apple의 notarytool을 통해 실행해야 합니다. 코드 서명 참고 사항은 아래를 참조하세요.
코드 서명 참고 사항
project.yml은 CODE_SIGN_IDENTITY: "-" (ad-hoc)으로 설정하고 샌드박스를 비활성화하여 개발 빌드가 프로비저닝 없이 ScreenCaptureKit을 사용할 수 있도록 합니다. App Store를 통해 배포하려면 다음을 수행해야 합니다:
com.apple.security.app-sandbox재활성화- 적절한 엔타이틀먼트(
com.apple.security.device.screen-recording,com.apple.security.network.client등) 추가 DEVELOPMENT_TEAM에 팀 ID 제공
라이선스
Mila는 Apache License 2.0에 따라 라이선스가 부여되었습니다. 필요한 출처 표시는 NOTICE를 참조하십시오.
원래 Island Technology, Inc.의 Uri Harduf가 개발했습니다.
크레딧
- 히브리어 Whisper 파인튜닝: ivrit.ai
- 로컬 추론: whisper.cpp (MIT)
- 영어 모델 가중치 (ggerganov/whisper.cpp에 의해 ggml로 재패키징됨): OpenAI Whisper
- 자동 업데이트: Sparkle (MIT)
AI 자동 생성 콘텐츠
본 콘텐츠는 개발 자료 GitHub · 0da57016의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기