프라이버시 · 온디바이스 · Apple Neural Engine

Mac이 재생하는
무엇에든 붙는 실시간 캡션.

영상, 통화, 팟캐스트. 재생되는 동안 그대로 받아 적어 항상 맨 위의 오버레이로 그립니다. 업로드도, 녹음도, 디스크 기록도 없습니다.

14일 이내 환불, 이유는 묻지 않아요

한 번 $9, 앞으로 나올 모든 업데이트 포함 · macOS 14.2 이상 · Apple Silicon
캡션은 원하는 만큼 무제한입니다. 따로 살 시간도, 계정도, 구독도 없어요.

앱을 바꿔도 캡션은 남아 있습니다. 오버레이는 모든 창 위에 있고, 클릭은 그대로 통과시켜요.

창을 클릭하면 앞으로 나옵니다. 캡션을 옮기려면 앱에서와 마찬가지로 를 누른 채 드래그하세요.

캡션을 가리키면 그 아래가 녹아 사라집니다. 를 누르고 있으면 최근 몇 개가 다시 쌓여요. 둘 다 여기서도 앱에서와 똑같이 동작합니다.

Mac의 모든 앱에 붙는 실시간 자막

Subtitles는 특정 서비스와 연동하는 대신 앱 자체에서 소리를 가져오기 때문에, Mac이 재생할 수 있는 소리라면 무엇에든 캡션을 붙입니다. 청각장애나 난청이 있든, 제2언어로 듣고 있든, 그냥 시끄러운 곳에서 일하고 있든, 세 가지 상황이 계속 반복돼요.

01

회의와 통화

Zoom, Google Meet, Teams, Slack 허들, 브라우저 탭에서 하는 통화까지, 전부 앱에서 나오는 소리일 뿐이에요. 그래서 전부 캡션이 붙습니다. 외국어든 아니든, 억양이 낯설거나 누군가의 마이크 상태가 나쁘거나 두 사람이 동시에 말하는 순간 바로 값을 합니다. 반쯤 들린 단어는 다시 물어보는 것보다 읽는 편이 빠르고, 아무도 방해하지 않으니까요.

02

일하면서도 흐름을 놓치지 않기

소리는 기다려 주지 않아요. 메모나 에디터, 브라우저 창으로 넘어가는 순간부터 대화를 놓치기 시작합니다. 오버레이는 항상 모든 창 위에 있고 클릭도 통과시켜서, 그 앞에서 일하는 동안에도 자리를 지켜요. 메모하고, 뭔가 찾아보면서도 오가는 말을 계속 따라갈 수 있습니다. Granola 같은 노트 앱은 회의가 끝난 뒤에 정리해 주고, 이건 회의가 진행되는 동안 일어나야 하는 나머지 절반이에요.

03

영상, 팟캐스트, 강의

캡션이 없는 영상, 또는 없느니만 못한 자동 캡션. 아직 배우는 중인 언어로 된 팟캐스트. 녹화 강의나 스트리밍 강의, 인터뷰, 대사가 작게 들리는 영화. 캡션은 그것을 재생하는 창 위에, 원하는 글자 크기로 나타납니다. 언어는 열여섯 개이고, 어떤 언어인지는 알아서 감지해요.

셋 다 공통점이 하나 있어요. 회의도, 통화도, 개인적인 녹음도 서버가 알 바가 아니라는 것입니다. 여기서는 어떤 오디오도 업로드되지 않아요. 그럴 필요가 없으니까요. 모델은 이 Mac에서 돕니다.

세 가지 제약 위에 만들었습니다

실시간 오디오는 일시정지할 수 없고, 다시 돌릴 수 없고, 기기를 떠날 이유도 없습니다. 여기 있는 모든 것이 거기서 나왔어요.

아무것도 Mac을 벗어나지 않습니다

로컬에서, 오프라인으로 돕니다. 네트워크 요청도, 계정도, 사용 정보 수집도 없어요. 오디오는 탭에서 인식기로 바로 들어가고 그대로 버려집니다. 내려받는 것은 모델 하나뿐이고, 그것도 한 번뿐이에요.

CPU가 아니라 Neural Engine

대략 실시간 계수 0.15입니다. 연산 1초당 음성 6초를 처리해요. 같은 모델을 CPU에서 재 보니 실시간 스트림을 따라가기에 약 100배 느렸습니다.

모든 앱, 아니면 하나만

기본적으로 Mac이 재생하는 모든 소리를 듣기 때문에, 쓰기 전에 설정할 것이 없습니다. 두 가지가 동시에 말하고 있다면 메뉴 막대에서 앱 하나로 좁히세요. 그 앱과 거기서 파생되는 보조 프로세스까지 함께 가져오는데, 브라우저와 Electron 앱이 되는 이유가 그것입니다. 그런 앱의 소리는 메인 프로세스에서 나오지 않거든요.

음악은 가사가 되지 않습니다

음성 감지기가 인식기 앞에 서 있어서 배경 음악은 인식기까지 닿지 않습니다. 이게 없으면 음악이 모델의 문맥을 채우고, 음악 다음에 나오는 첫 단어들이 사라져요.

화자마다 새 상자

말이 잠깐 멈출 때처럼, 다른 사람이 말하기 시작하면 새 자막을 시작하게 할 수 있습니다. 기본은 꺼져 있어요. 첫 번째 모델과 나란히 두 번째 모델을 돌리기 때문입니다.

열여섯 개 언어

기본 모델은 언어를 스스로 감지합니다. 영어에는 전용 체크포인트 일곱 개가 더해지고, 160 ms부터 지연 시간과 정확도를 맞바꿔요.

오버레이는 방해하지 않습니다

모든 창 위에 있는 물건은 피해 다니는 대상이 되지 않아야만 쓸모가 있습니다. 클릭을 받지 않고, 가리키는 자리에서 녹아 사라지고, 눈을 뗀 사이의 줄을 되돌려 줍니다.

포인터를 따라 뚫리는 구멍

포인터를 상자 근처로 가져가면 그 아래가 흐려져 사라집니다. 읽고 있는 문장이 쓰고 있는 문장을 덮지 않아요. 얼마나 사라질지, 구멍이 얼마나 넓을지는 직접 정합니다. 를 누르면 진하게 유지돼요.

놓친 부분은 ⌥를 누른 채로

상자는 방송 자막처럼 페이지 단위로 넘어갑니다. 채우고, 지우고, 다시 시작하니까 잠깐 눈을 뗀 줄은 사라져 있어요. 를 누르고 있으면 최근에 끝난 상자들이 현재 상자 위로 최대 서른 개까지 다시 쌓이고, 더 이전 것은 스크롤할 수 있습니다. 손을 떼면 다시 사라져요. 어디에도 기록되지 않습니다.

오버레이 자체가 미리보기입니다

메뉴에서 ,를 누르면 설정이 열려요. 상자가 몇 줄까지 차면 지워지는지, 얼마나 진하게 보일지, 포인터가 비추는 범위가 어디까지인지, 로 얼마나 뒤까지 돌아갈지를 정합니다. 슬라이더를 움직이는 동안 오버레이에 바로 반영되니까, 숫자를 고르는 게 아니라 눈으로 보면서 맞추게 돼요.

작동 방식

복사만 하는 실시간 오디오 스레드, 변환은 하지 않는 이식 가능한 코어, 그리고 있어야 할 자리에서 도는 모델.

  1. 1

    Core Audio 프로세스 탭

    48 kHz 스테레오, 10.7 ms마다 콜백이 옵니다. 실시간 스레드는 락 프리 링 버퍼에 복사만 하고 그 밖에는 아무 일도 하지 않아요.

  2. 2

    리샘플링과 게이트

    작업 스레드에서 16 kHz 모노로 낮추고 무음은 건너뜁니다. 말이 시작되기 전 약 1초를 앞에 붙여 다시 넣기 때문에, 첫 단어가 잘리는 일이 없어요.

  3. 3

    Neural Engine에서 도는 Parakeet

    30초 창 방식이 아니라 스트리밍 모델입니다. 소리를 따라오는 캡션과 몇 초 늦게 도착하는 캡션의 차이예요.

  4. 4

    오버레이

    방송 자막처럼 지워졌다가 다시 시작하는 세 줄짜리 페이지. 소리가 멈춘 뒤가 아니라 마지막 텍스트가 나오고 4초가 지나면 사라집니다.

링 버퍼에서 모델 경계까지는 전부 이식 가능한 Rust이고, 일부러 변환은 하지 않습니다. 프레임을 넘겨줄 뿐이에요. Mac에만 있는 부분은 탭과 오버레이뿐입니다.

14일 이내 환불, 이유는 묻지 않아요.

검토할 것도, 거부할 것도 없음

업무 통화에 이걸 써도 되는 이유는 이게 서비스가 아니기 때문입니다. 서버도, 계정도, 기록도 없으니 보낼 것도 없고 중간에 낄 사람도 없어요. 자세한 내용은 따로 적어 두었습니다. 소스도 공개돼 있으니, 어느 것도 그냥 믿을 필요가 없습니다.

  • 봇이 통화에 들어가지 않아요. Mac이 이미 재생하고 있는 소리를 가져오기 때문에, 참가자 목록에 아무것도 뜨지 않고 뭔가 돌아가고 있다는 알림도 가지 않습니다. 이 분야의 다른 제품 대부분은 눈에 보이는 참가자를 대신 넣는데, 아예 금지하는 회사도 많아요.
  • 녹음도 없고, 디스크 기록도 없습니다. 오디오는 탭에서 인식기로 넘어가 그 자리에서 버려져요. 캡션은 화면에 떴다가 사라지고, 로 불러오는 상자는 앱을 끌 때까지만 메모리에 있습니다. 나중에 찾을 파일은 이 Mac에도, 다른 어디에도 없어요.
  • 마이크는 절대 열리지 않습니다. Mac이 재생하는 소리만 듣습니다. 분명한 한계이자, 내가 한 말이 어디로도 갈 수 없는 이유이기도 해요.
  • 계정도, 사용 정보 수집도, 네트워크도 없어요. 로그인할 것이 없고, 사용 기록을 어디에도 보내지 않습니다. 모델은 약 633 MB로 한 번만 내려받고, 그 뒤로는 보낼 네트워크 요청이 남아 있지 않아요. Wi-Fi를 꺼도 캡션은 계속 나옵니다.
  • 학습에 쓸 것이 없습니다. 보낼 기록 자체가 없으니 찾아볼 학습 설정도, 확인할 기본값도, 데이터 처리 계약에 적을 수탁사도 없어요. 그것이 회사 정책을 통과하는지는 판단하실 몫이지만, 검토할 제3자가 애초에 없습니다.
  • 단 하나의 예외는 결제입니다. 다른 상점과 마찬가지로 Gumroad가 결제를 처리하면서 이메일 주소를 보고, 앱이 업데이트되면 메일을 보내요. 앱 자체는 둘 중 어느 것도 물어보지 않습니다.

모델이 아니라 언어를 고르세요

모델을 쓸지 말지를 가장 먼저 가르는 것이 언어라서, 메뉴의 맨 위가 언어입니다. 같은 팩 안에서 바꾸는 건 즉시 되고, 팩을 넘어가면 다른 팩을 받아 오면서 이미 가진 것은 그대로 둡니다.

내려받는 중에 마음이 바뀌면 그 자리에서 취소하고 새 모델을 바로 받기 시작합니다. 나중에 다시 돌아오면 처음부터가 아니라 이어서 받아요.

모두 열여섯 개입니다. 영어, 스페인어, 프랑스어, 이탈리아어, 포르투갈어, 독일어, 네덜란드어, 튀르키예어, 러시아어, 아랍어, 힌디어, 일본어, 한국어, 베트남어, 우크라이나어, 중국어(만다린). 다국어로 두면 어떤 언어인지 알아서 판단하고, 언어를 지정하면 더는 추측하지 않습니다.

메뉴 막대에 삽니다

Dock 아이콘도, 관리할 창도 없습니다. 아이콘이 지금 무엇을 하고 있는지 알려 줘요. 듣는 중에는 남색, 모델을 내려받는 중에는 파란색, 처리가 밀리기 시작하면 노란색입니다. 빨간색은 절대 없어요. 빨간색은 녹화를 뜻하는데, 여기서는 어디에도 아무것도 기록되지 않으니까요. 스위치는 메뉴에 있고, 거기서 ,를 누르면 그 뒤의 세부 조절을 담은 설정 창이 열립니다.

S
일시정지와 재개
누르기
오버레이를 드래그할 수 있게 합니다. 평소에는 클릭이 통과해요
누르기
최근 상자 몇 개를 현재 상자 위로 다시 쌓고, 더 이전 것은 스크롤
,
열린 메뉴에서 여는 설정. 상자당 줄 수, 불투명도, 포인터 비추기, 가 돌아가는 범위
메뉴 막대
모델, 소스, 글자 크기, 오버레이 위치, 권한 상태

Apple 실시간 자막으로는 왜 안 되나요?

macOS에는 모든 Apple silicon Mac에 캡션이 무료로 들어 있습니다. 시스템 설정, 손쉬운 사용, 실시간 자막이요. 필요한 것을 그것이 다 해 준다면 그걸 쓰세요. 아래는 제 경우에 그것으로 충분하지 않았던 지점들이고, 자세한 내용을 원하시면 항목별 비교가 있습니다.

  • 열여섯 개 언어, 알아서 감지합니다. Apple 기능은 모든 언어, 모든 국가, 모든 지역에서 쓸 수 있는 게 아니에요. 여기 기본 모델은 어떤 언어인지 스스로 알아내고, 전환은 메뉴 막대에서 합니다.
  • 모델은 직접 고릅니다. 160 ms부터 지연 시간과 정확도를 맞바꾸는 영어 체크포인트 일곱 개, 그리고 다국어 모델 하나. Apple은 캡션을 줄 뿐 조절 손잡이는 주지 않아요.
  • 오버레이는 클릭이 통과합니다. Apple 쪽은 옮기고 크기를 조절하는 창이에요. 이건 클릭을 아예 받지 않아서, 그 위로 그대로 작업하면 됩니다. 옮기고 싶을 때만 를 누르세요.
  • 포인터가 가리키는 자리는 비켜 줍니다. 포인터 아래에서 상자가 흐려져서 그 밑에 있는 것을 읽을 수 있어요. 얼마나 흐려질지, 범위는 어디까지일지는 직접 정합니다. Apple 쪽은 불투명한 창이라, 대신 창을 다른 곳으로 옮겨야 해요.
  • 전부 다, 아니면 하나만. 둘 다 Mac이 재생하는 모든 소리에서 시작해요. 차이는 이쪽은 원하는 앱 하나로 좁힐 수 있다는 점입니다. 통화에는 캡션이 붙고 나머지는 조용히 있어요.
  • 음악은 가사가 되지 않아요. 음성 감지기가 인식기 앞에 서 있어서, 배경 음악은 인식기까지 닿지 않습니다.
  • 화자마다 새 상자. 선택 사항이고 기본은 꺼져 있어요. macOS 기본 기능에는 이에 해당하는 것이 없습니다.

내려받기 전에 알아 둘 것

  • 첫 실행에는 몇 분이 걸려요. 모델이 약 633 MB이고 첫 실행 때 알아서 내려받습니다. 진행 상황은 메뉴 막대에 보여요.
  • macOS가 시스템 오디오 녹음 권한을 물어봅니다. 이 요청을 건너뛰면 모든 샘플이 디지털 무음으로 들어오는데 오류는 어디에도 뜨지 않아요. 그래서 앱은 아는 척하는 대신 메뉴에 권한 확인 항목을 둡니다. 내려받는 파일은 서명과 공증을 마쳤으니, 한 번 허용한 답은 업데이트를 해도 그대로 유지돼요.
  • 노래는 말로 칩니다. 음성 감지기가 둘을 구분하지 못해서, 보컬이 있는 음악은 가사로 나와요.
  • 화자 구분은 조금 늦게 반영돼요. 화자 분리는 일정한 주기로 결과를 내놓습니다. 그래서 새 화자의 한두 단어가, 지워지기 직전의 상자에 남을 수 있어요.
  • 디스플레이는 하나. 오버레이는 주 화면에 나옵니다.
  • 한 번 써 본 모델은 디스크에 남아요. 여덟 개를 오가며 마음에 드는 것을 찾게 되고, 시도한 모델은 그대로 보관됩니다. 설정에는 아무도 쓰지 않는 모델을 지우는 버튼이 있어요. 사용 중인 모델은 절대 지우지 않습니다.

가장 먼저 나오는 질문들

Zoom, Teams, Google Meet에서 되나요?
네. 특정 서비스와 연동하는 대신 앱이 재생하는 소리를 가져오기 때문에, Zoom 창도, Slack 허들도, 브라우저 탭의 통화도 전부 같은 방식으로 캡션이 붙습니다. 브라우저와 Electron 앱도 마찬가지예요. 그런 앱이 띄우는 보조 프로세스까지 가져오는데, 소리는 실제로 거기서 나옵니다.
오버레이가 거슬리지 않나요?
클릭을 아예 받지 않아서 그 위로 그대로 작업할 수 있고, 포인터 아래에서는 흐려져서 밑에 있는 것을 읽을 수 있어요. 얼마나 흐려질지, 그 범위가 어디까지일지, 상자가 얼마나 진할지, 몇 줄을 담을지는 전부 설정입니다. 를 누르면 진하게 유지되면서 다른 곳으로 끌어다 놓을 수 있고, 놓아둔 자리는 기억됩니다.
제 목소리도 캡션이 되나요?
아니요. Mac이 재생하는 소리만 듣고 마이크는 절대 듣지 않습니다. 통화에서는 상대방을 읽고, 본인은 읽지 않아요.
인터넷 연결이 필요한가요?
첫 실행에서 모델을 받을 때 한 번, 약 633 MB입니다. 그 뒤로는 완전히 오프라인으로 돌아가고 네트워크 요청을 전혀 하지 않아요.
기록을 저장하거나 내보낼 수 있나요?
아니요, 일부러 그렇게 했습니다. 디스크에는 아무것도 쓰지 않아요. 캡션은 화면에 있다가 사라집니다. 를 누르고 있으면 앱이 켜져 있는 동안 최근 상자 몇 개가 돌아오는데, 기록을 남기려는 게 아니라 눈을 뗀 사이의 줄을 잡으려는 기능이에요. 대화 기록이 필요하다면 이건 맞는 도구가 아닙니다.
IT 부서 승인이 필요한가요?
여기에는 승인할 공급업체가 없습니다. 계정도, 서버도, Mac을 떠나는 기록도, 참가자로 통화에 들어가는 것도 없어서, 회의에 있는 누구도 무언가에 녹음되고 있지 않아요. 서명과 공증을 마친 앱 하나가 기기 하나에서 돌 뿐이고, 모델을 한 번 받은 뒤로는 네트워크 요청을 전혀 하지 않습니다. 그것이 회사 정책을 통과하는지는 판단하실 몫이지만, 검토할 제3자가 애초에 없어요.
헤드폰이나 AirPods를 써도 되나요?
네. 스피커에서 나오는 소리가 아니라 앱이 내는 소리를 가져오기 때문에, 무엇으로 듣고 있는지는 상관이 없습니다.
Mac이 느려지나요?
변환은 CPU가 아니라 Neural Engine에서 돌고, 실시간 계수는 대략 0.15입니다. 연산 1초당 음성 6초를 처리해요. 같은 모델을 CPU에서 재 보니 따라가기에 약 100배 느렸습니다.
어떤 Mac에서 실행되나요?
Apple Silicon, macOS 14.2 이상. 버전 하한선은 Core Audio 프로세스 탭 때문이고, 앱 전체가 그 API 위에 만들어져 있습니다.
구독인가요?
아니요. 한 번 $9이고 앞으로 나올 업데이트가 전부 포함됩니다. 만들 계정도, 사둘 시간도 없어요. 맞지 않으면 14일 이내에 환불받을 수 있습니다.
소스 코드를 볼 수 있나요?
네. FSL-1.1-ALv2로 공개돼 있고, 각 릴리스로부터 2년이 지나면 Apache 2.0이 됩니다. github.com/daformat/subtitles에서 읽거나 직접 빌드하세요.

무엇에든 캡션을. 소리는 어디로도 보내지 않고.

14일 이내 환불, 이유는 묻지 않아요

한 번 $9, 앞으로 나올 모든 업데이트 포함 · macOS 14.2 이상 · Apple Silicon
그 Mac을 쓰는 동안 실시간 캡션을 무제한으로 씁니다. 따로 살 시간도, 계정도, 구독도 없어요.