본문으로 건너뛰기

측정

단어를 인식하기도 전에 Mac 음성 입력이 치르는 비용

클라우드 음성 입력은 모델이 실행되기 전에 연결 설정과 업로드 바이트라는 고정 비용을 치릅니다. 이 두 가지 비용을 Mac 한 대에서 측정했고, 각각의 스크립트를 함께 실었습니다. 인식 정확도는 여기서 측정하지 않았으며, 이 페이지는 그 빈칸을 수치로 메우지 않고 측정하지 않았다고 밝힙니다.

정확도 수치는 아직 여기에 공개하지 않았습니다

이 사이트에는 Voice Type의 단어 오류율 실측값이 없으며, 이 페이지는 수치를 지어내지 않습니다. 우리가 공개하는 모든 수치에는 그 수치를 만든 스크립트가 함께 제공됩니다. 단어 오류율 벤치마크는 막혀 있습니다. 앱에 헤드리스 진입점이 없어서, 사람이 키보드 앞에 있지 않으면 코퍼스를 인식기에 통과시킬 수 없기 때문입니다. 그 진입점이 생기기 전까지, 아래의 수치는 어느 것도 정확도 수치가 아닙니다. 전송과 페이로드에 관한 수치이므로, 둘을 혼동하지 않도록 주의해 주세요. 벤더가 내세우는 정확도 퍼센트는 우리 것까지 포함해, 코퍼스 이름과 반복 실행할 수 있는 스크립트가 없다면 의미가 없는 것으로 보셔야 합니다.

클라우드 요청이 오디오를 보내기 전에 치르는 고정 비용

Apple M1 Pro, macOS 26.5.1 빌드 25F80, 가정용 Wi-Fi 환경에서 2026-08-29에 측정했습니다. 엔드포인트마다 12회씩 반복했습니다. API 키도 오디오도 보내지 않았기 때문에, 측정한 응답은 인증 없는 거부 응답입니다. 추론이 전혀 없는, 제공업체 엣지까지의 실제 왕복입니다. 재현 스크립트는 bench/connsetup.py --profile wifi --repeat 12이고, 원시 샘플은 bench/results/03-connection-setup-20260829T065129Z.json에 있습니다.

엔드포인트오디오 전송 전 설정 시간(중앙값)p95
api.openai.com30.9 ms61.0 ms
api.deepgram.com514.9 ms766.2 ms
기기 내전혀 없음전혀 없음

같은 기기, 같은 연결, 같은 시각인데도 잘 운영되는 두 제공업체의 고정 비용은 17배 차이가 납니다. Deepgram이 느린 서비스라는 뜻은 아닙니다. TCP 연결 중앙값 252.9 ms는 이 Mac에서 보았을 때 접속 지점이 멀리 있다는 의미입니다. 이 수치에는 단서가 따라붙습니다. macOS의 DNS 캐시는 첫 요청 이후 데워져 있었고, 한 기기에서 한 연결로 한 시점에 잰 결과이며, 실제 요청에서는 이 하한선 위에 오디오 업로드와 모델 대기 시간이 더해집니다.

30분 분량의 음성 입력은 얼마나 무거울까요

실제 오디오를 인코딩해서 바이트를 측정했습니다. 재현 스크립트는 bench/payloadsize.py이고, 원시 샘플은 bench/results/05-payload-size-20260829T070405Z.json에 있습니다. 클라우드 인식기는 처음 세 행 중 하나를 받아야 합니다. 기기 내 인식기는 그중 어느 것도 받지 않습니다.

30분 분량의 음성 입력을업로드 크기
원본 48 kHz WAV172.8 MB
16 kHz WAV57.6 MB
Opus 24k5.25 MB
기기 내0바이트

손실 압축 행에 영향을 주는 단서가 있습니다. 이번 측정에서는 사람의 음성이 아니라 합성음 say 코퍼스를 인코딩했습니다. Opus와 AAC는 가변 비트레이트라서 크기가 내용에 따라 달라집니다. WAV 행은 영향을 받지 않습니다.

인식기가 실제로 받는 것

Whisper 기반 모델은 비교적 좁은 음량 범위의 16 kHz 모노 음성을 기대합니다. 반면 MacBook 마이크는 방의 환경과 앉은 자세에 따라 정해진 음량의 48 kHz 오디오를 내보내고, 그 밑에는 책상을 두드리는 소리와 건물의 낮은 진동이 깔려 있습니다. 전처리 체인이 이 간극을 메웁니다. 각 단계는 특정한 결함을 하나씩 보정하며, 뒤 단계는 앞 단계가 먼저 실행되었다는 전제에서 동작하므로 순서가 정해져 있습니다.

macOS에서 열린 Voice Type 창으로, Custom Vocabulary 창이 보입니다. Custom Words 입력란에는 쉼표로 구분한 용어를 넣을 수 있고, Find and Replace 목록에는 open parenthesis 같은 말로 한 표현을 삽입될 문자에 대응시킨 108개 항목이 들어 있습니다.
앱의 사용자 지정 어휘와 말로 한 문장부호 치환 기능입니다. 보정하지 않은 macOS의 Voice Type 스크린샷입니다.

각 단계와 그 단계가 보정하는 결함

  • Silero 음성 활동 감지: 스트리밍 음성 게이트가 말이 있는 구간을 표시합니다. 무음이나 일정한 배경 소음은 디코딩에 도달하지 않으므로, 인식기가 선풍기 소리를 받아 적으려 하지 않습니다.
  • 하이패스 필터링: 50 Hz 하이패스로 책상 두드리는 소리, 발소리, 건물의 낮은 진동을 제거합니다. 이런 소리는 음성 대역 아래에 있으면서 헤드룸을 갉아먹습니다.
  • 음량 정규화: K 가중 정규화로 마이크와의 거리 차이와, 말하는 도중 몸을 뒤로 젖혔을 때 생기는 음량 변화를 보정합니다. 목표값은 경로에 따라 다릅니다. 파일 받아쓰기는 −14 LUFS, 실시간 음성 입력은 기본 −16 LUFS, 다른 실시간 구성에서는 −18 LUFS입니다.
  • 대역 제한 리샘플링: 로우패스를 거쳐 48 kHz를 16 kHz로 변환하므로, 8 kHz 위의 성분이 화자가 내지도 않은 에일리어싱으로 음성 대역에 접혀 들어오지 않습니다.
  • 교정용 프롬프트 계층 없음: 받아쓴 결과 위에 과도한 LLM 정리를 돌리지 않습니다. 그렇게 하면 출력은 자신 있게 읽히지만 실제로 한 말에서 멀어집니다. 눈에 보이지 않기 때문에 정확도 실패 중에서도 가장 나쁜 유형입니다.

이 체인의 어떤 단계도 고치지 못하는 것

  • 나쁜 마이크: 전처리는 이미 들어온 소리의 크기를 조정하고 필터링할 뿐입니다. 녹음에 담기지 않은 음성의 에너지를 되살릴 수는 없습니다.
  • 겹치는 다른 사람의 말소리: 게이트가 감지하는 것은 음성입니다. 다른 사람이 말하는 것도 음성이므로 그대로 통과합니다.
  • 모델이 한 번도 본 적 없는 고유명사: 사용자 지정 어휘가 도움이 되지만, 흔치 않은 성이나 사내 코드명은 그래도 가끔 틀리게 나옵니다.
  • 범주를 잘못 고른 경우: 정말 필요한 것이 macOS를 손 대지 않고 제어하는 일이라면, 어떤 음성 입력 앱도 음성 제어를 대신할 수 없습니다.

기술 세부 내용은 여기에 있습니다