Whisper 환각: 아무도 말하지 않은 단어를 Whisper가 입력하는 이유와 막는 방법

Whisper 환각은 변환 결과에 들어 있지만 아무도 말하지 않은 단어입니다. 같은 문구가 계속 반복되거나, 침묵 위에 "Thank you for watching" 같은 마무리 인사가 붙거나, 문장 전체가 지어내진 경우를 말합니다. Whisper는 언어 모델과 비슷한 방식으로 텍스트를 쓰기 때문에 이런 일이 생깁니다. 오디오가 조용하거나 시끄럽거나 불분명하면, 다음에 흔히 오는 말에 대한 감각이 실제로 들은 내용보다 앞설 수 있습니다.

OpenAI의 모델 카드도 이 점을 경고하고, 2024년의 한 연구는 테스트한 변환 결과의 약 1%에서 지어낸 문구를 발견했습니다. 저는 손으로 타이핑하기가 어려워 매일 받아쓰기를 하기 때문에 Mac에서 Whisper를 실행하는 무료 받아쓰기 앱 YapToText를 만들었고, 모델 주변의 작업 상당 부분이 바로 이 문제를 잡는 데 들어갔습니다. 아래에서는 환각이 어떤 모습인지, 왜 생기는지, 연구가 무엇을 발견했는지, YapToText가 어떻게 대응하는지, 그리고 어떤 Whisper 환경에서든 할 수 있는 일을 설명합니다. whisper.cpp 사용자를 위한 내용도 있습니다.

Mac App Store에서 YapToText 다운로드무료로 다운로드할 수 있습니다. 계정이 필요 없고 잠긴 기능도 없습니다. Apple Silicon이 탑재된 Mac과 macOS 14 이상이 필요합니다. 소스 코드는 GitHub에 있습니다.

이 페이지의 내용: 14개 항목
  1. 단계
  2. Whisper 환각은 어떤 모습인가
  3. Whisper가 환각을 일으키는 이유
  4. Careless Whisper 연구가 발견한 것
  5. YapToText는 어떻게 막는가
    1. Whisper가 듣기 전에
    2. 변환 결과가 돌아온 뒤에
    3. 다듬기 모델이 잘못 동작할 때
  6. Whisper가 실제로 들은 것 확인하기
    1. 1단계: History에서 받아쓴 내용 열기
    2. 2단계: 다음 받아쓰기는 원본으로
  7. 어떤 Whisper 앱에서든 환각 막기
  8. whisper.cpp 사용자를 위한 팁
  9. 어떤 보호 장치도 약속할 수 없는 것
  10. 요약
  11. 가이드
  12. 다른 가이드(영어)
  13. 출처
  14. 자주 묻는 질문

단계

  1. 말이 끝나는 즉시 녹음을 멈추거나, Dictation 페이지에서 Auto-stop after silence를 켭니다.
  2. 오래 생각할 때는 침묵을 녹음하지 말고 Space를 눌러 일시 정지합니다.
  3. AI Models 페이지의 Language 선택기에서 말하는 언어를 고릅니다.
  4. 파일을 변환하기 전에 긴 침묵과 음악을 다듬고, whisper-cli를 쓴다면 16비트 WAV로 변환합니다.
  5. History에서 Show pipeline details를 클릭해 원본 변환 결과를 읽거나, 말하는 동안 2를 눌러 Raw Transcription으로 받아씁니다.

Whisper 환각은 어떤 모습인가

OpenAI의 Whisper 논문은 실패 유형을 쉬운 말로 나열합니다. 반복 루프에 갇히는 것, 오디오 구간의 처음이나 끝 몇 단어를 변환하지 않는 것, 그리고 모델이 실제 오디오와 전혀 무관한 변환 결과를 내놓는 완전한 환각입니다. 실제로는 네 가지 패턴으로 나타납니다. 환각은 잘못 들은 단어가 아닙니다. 뒤에 소리가 전혀 없는 단어입니다.

  • 반복 루프. 같은 문장, 문구, 단어가 계속 되풀이되고, 침묵으로 흐려지며 끝나는 녹음의 끝부분에서 자주 생깁니다. OpenAI의 모델 카드는 시퀀스 투 시퀀스 구조 때문에 모델이 반복되는 텍스트를 만들기 쉽고, 빔 서치와 온도 스케줄링으로 어느 정도 줄일 수 있지만 완벽하지는 않다고 밝힙니다.
  • 침묵에서 나오는 텍스트. Whisper 저장소의 토론 스레드 "Share your hallucinations here"에서 사용자들은 아무도 말하지 않은 침묵, 음악, 효과음 위에 "Thank you for watching"이나 자막 크레딧 같은 줄이 나타난다고 보고합니다.
  • 지어낸 문장. 말한 적 없는 문구 전체입니다. Careless Whisper 연구에 대한 코넬 대학교의 기사는 Whisper가 가끔 문구와 문장 전체를 지어내고, 때로는 폭력적인 표현, 지어낸 개인 정보, 가짜 웹사이트까지 만든다고 전합니다.
  • 라벨과 지문. 말보다 대본처럼 읽히는 텍스트입니다. YapToText 1.4 릴리스 노트에는 변환 결과에 "Male speaker:" 같은 지어낸 화자 라벨이 나타나던 문제를 고쳤다는 기록이 있습니다.

반대의 실패인 처음이나 끝 단어가 빠지는 문제도 관련이 있고, 그래서 첫 단어가 빠지는 것과 마지막 줄이 지어내지는 것이 같은 녹음에서 나올 수 있습니다. 평범하게 잘못 들은 단어는 다른 문제이고 해결책도 다르며, Mac용 Whisper 가이드에서 다룹니다.

Whisper가 환각을 일으키는 이유

OpenAI는 모델 카드에서 원인을 설명합니다. 모델이 대규모의 잡음 섞인 데이터로 약한 지도 방식으로 학습되었기 때문에, 예측에 오디오에서 실제로 말하지 않은 텍스트가 들어갈 수 있습니다. 모델 카드는 모델이 다음 단어를 예측하는 일과 오디오 자체를 변환하는 일을 함께 하기 때문에 이런 일이 생기는 것으로 보고, 자원이 적거나 발견되기 어려운 언어에서는 더 심할 수 있다고 밝힙니다. 참고할 소리가 적으면 모델의 짐작하는 쪽이 일을 더 많이 합니다.

그래서 환각을 부르는 조건이 있습니다.

  • 침묵과 긴 멈춤. Careless Whisper 연구는 말하지 않는 시간의 비율이 길어서 멈춤이 긴 사람에게서 환각이 불균형하게 많이 나타난다고 발견했습니다.
  • 음악과 효과음. Whisper 저장소의 보고는 말이 없는 구간에 몰려 있습니다.
  • 시끄럽거나 약한 신호. 말이 덜 또렷하면 모델이 각 단어의 근거로 삼을 것이 줄어듭니다.
  • 언어. OpenAI는 성능이 언어에 따라 크게 달라진다고 밝히고, 모델 카드는 자원이 적은 언어에서 환각이 더 심할 수 있다고 말합니다.

알아보는 데 중요한 사항이 하나 더 있습니다. 이 연구는 OpenAI의 Whisper API가 만든 환각이 비결정적이라서 실행할 때마다 다른 무작위 텍스트가 나왔다고 발견했고, 같은 오디오를 두 번 실행해 나온 차이로 환각을 찾았습니다. 같은 오디오인데 도구가 두 번 실행에서 다른 텍스트를 내놓는다면, 달라진 부분은 다시 살펴볼 만합니다.

Careless Whisper 연구가 발견한 것

이 연구는 Allison Koenecke, Anna Seo Gyeong Choi, Katelyn X. Mei, Hilke Schellmann, Mona Sloane가 쓴 "Careless Whisper: Speech-to-Text Hallucination Harms"이고, ACM Conference on Fairness, Accountability, and Transparency인 FAccT 2024에서 발표되었습니다. 비율은 작습니다. 하지만 지어낸 문장 하나가 끼치는 해는 클 수 있습니다.

2026년 10월 5일에 arXiv와 ACM Digital Library의 논문, 그리고 코넬 대학교 뉴스 기사에서 확인했습니다.

  • 무엇을 테스트했나. AphasiaBank의 오디오 거의 40시간, 13,140개 구간을 실어증이 있는 화자와 대조군에게서 가져와 2023년에 OpenAI의 Whisper API로 보냈습니다.
  • 얼마나 자주. 변환 결과의 약 1%에 원본 오디오에는 어떤 형태로도 없는 환각 문구나 문장 전체가 들어 있었습니다.
  • 얼마나 심각한가. 환각의 38%에 폭력을 부추기거나, 부정확한 연관을 지어내거나, 거짓 권위를 암시하는 것처럼 명백한 해악이 포함되어 있었습니다.
  • 누구에게. 실어증이 있는 화자는 대조군보다 환각이 더 많았고, 말하지 않는 시간이 더 많은 구간일수록 환각이 생길 가능성이 컸습니다.
  • 시간이 지나면. 저자들이 2023년 12월에 오디오를 다시 돌리자 많은 사례가 해결되었지만, 187개 오디오 구간 중 12개는 여전히 환각을 일으켰습니다.

이 숫자를 읽을 때 구분해야 할 것이 두 가지 있습니다. 이 숫자는 2023년에 그 표본에서 OpenAI의 호스팅 API가 보인 결과이고, whisper.cpp나 Whisper Large v3 Turbo나 YapToText의 결과가 아니므로, 여러분의 받아쓰기에 대한 예측이 아닙니다. 그리고 놀랄 이유도 아닙니다. 받아쓴 내용을 읽어 봐야 하는 이유이고, 어차피 좋은 습관입니다. 긴 멈춤이 말하는 방식의 일부라면, 상황별 받아쓰기가 YapToText가 부족할 수 있는 곳을 솔직하게 말합니다.

YapToText는 어떻게 막는가

YapToText는 기본 Whisper Large v3 Turbo (Q5) 파일을 whisper.cpp로 실행합니다. 저는 모델을 다시 학습시키지 않았습니다. 제가 만든 것은 모델 주변의 파이프라인이고, 그 파이프라인의 일부는 아무도 말하지 않은 단어가 문서에 들어가지 않게 하려고 존재합니다. 모델은 기본 그대로입니다. 작업은 그 주변의 보호 장치에 들어갔습니다.

Whisper가 듣기 전에

  • 긴 침묵을 압축합니다. 변환하기 전에 하므로 모델이 흐트러지지 않습니다.
  • 받아쓸 때마다 잡음을 측정하고, 일정한 잡음은 비율이 필요하다고 할 때만 빼냅니다. 작은 목소리는 방에 비해 키워집니다.
  • 잡음이 있는 클립은 더 깊게 탐색합니다. 클립이 시끄럽다고 측정되면 디코딩이 그리디에서 빔 서치로 바뀝니다.
  • 키를 누르기 전 0.5초를 보존하므로 첫 단어가 잘리지 않습니다.
확장된 녹음 패널 위에 위의 오디오 단계를 나열한, It hears you through anything이라는 제목의 App Store 포스터.
그림 1. 기본 모델 주변의 단계로, 배경 잡음 제거부터 침묵 이해까지입니다. 환각을 막는 일의 대부분은 여기서, 그리고 변환 결과가 돌아온 직후에 일어납니다.

변환 결과가 돌아온 뒤에

  • 반복 루프를 잡아서 제거합니다. 보호 장치가 Whisper가 조용한 끝부분에서 빠지는 루프를 하나로 줄이고, 1.4부터는 침묵으로 끝나는 긴 받아쓰기가 마지막 문장을 계속 반복하지 않습니다.
  • 지어낸 화자 라벨을 제거하고 지문도 제거합니다. 1.4에서 고치기 전에는 "Male speaker:" 같은 라벨이 어휘로 학습되기도 했습니다.
  • 침묵에서 환각으로 생긴 인사말을 잡아서 제거합니다.
  • 침묵은 아무것도 입력하지 않습니다. 받아쓴 내용이 침묵뿐이었다면 YapToText는 "Didn't catch that"이라고 알려 주고 아무것도 변환하지 않습니다.
  • 짧은 변환 결과는 한 번 더 처리합니다. 들어간 음성보다 텍스트가 짧게 돌아오면 구제 단계가 실행됩니다.

다듬기 모델이 잘못 동작할 때

Raw Transcription을 제외한 모든 모드는 변환 결과를 Mac의 작은 다듬기 모델에게 넘기고, 언어 모델도 지어낼 수 있습니다. 앱은 그 결과를 검사합니다. 결과가 어시스턴트의 답변처럼 읽히거나, 말한 것보다 훨씬 길어지거나, 참고 텍스트를 반복하거나, 말줄임표를 지어내면 그 결과는 버려지고 대신 원본 변환 결과가 입력됩니다. 다듬기 모델에게는 문장을 빼거나 말하지 않은 것을 더하지 말라고도 지시합니다. 그 규칙은 AI 받아쓰기 페이지에서 설명합니다.

이런 변경은 모두 출시 전에 제 실제 받아쓰기로 만든 테스트 환경에서 측정합니다. 한 사람의 녹음이지 벤치마크가 아니고, 잡아서 제거한다는 것이 절대 없다는 뜻은 아닙니다. 새로운 종류의 환각은 여전히 빠져나올 수 있습니다.

Whisper가 실제로 들은 것 확인하기

환각과 다듬기 오류를 구분하는 가장 빠른 방법은 다른 것이 손대기 전에 Whisper가 만든 결과를 보는 것입니다. 지어낸 텍스트가 원본 변환 결과에 있으면 Whisper가 쓴 것입니다. 없으면 다듬기가 만든 것입니다.

1단계: History에서 받아쓴 내용 열기

  • 할 일: History를 열고, 받아쓴 항목을 찾아 Show pipeline details를 클릭합니다.
  • YapToText: 최종 텍스트 위에 원본 변환 결과를 보여 주고, 아래에 모드, 언어, 걸린 시간을 보여 줍니다.
  • 확인: 원본 변환 결과를 내가 기억하는 말과 비교해 읽습니다.
파이프라인 세부 정보가 열린 YapToText History 항목. 원본 변환 결과, 다듬은 변환 결과, 모드, 전달 방식, 대상 앱, 걸린 시간이 보인다.
그림 2. 원본 변환 결과가 다듬은 텍스트 위에 있으므로, 아무도 말하지 않은 줄이 Whisper에서 왔는지 다듬기에서 왔는지 추적할 수 있습니다.

2단계: 다음 받아쓰기는 원본으로

  • 할 일: 말하는 동안 2를 누릅니다. Auto mode가 켜져 있는 기본 순서에서 Raw Transcription입니다.
  • YapToText: 그 받아쓰기 한 번에 한해, AI 모델 없이 기본 구두점만 붙여서 Whisper의 단어를 입력합니다.
  • 확인: 입력되는 것은 Whisper가 들은 그대로입니다. 모든 받아쓰기를 원본으로 유지하려면 Home 페이지에서 Post-transcription analysis를 끕니다.

각 History 항목의 내보내기 메뉴에 있는 Copy Raw Transcript는 다듬기 전의 버전을 클립보드에 복사합니다. 긴 받아쓰기를 입력되기 전에 모두 읽어 보고 싶다면, Settings, Advanced, Text output에서 Review before inserting을 켭니다. 각 모드가 바꿀 수 있는 것은 모드 가이드에서 설명합니다.

어떤 Whisper 앱에서든 환각 막기

환각은 대부분 침묵에서 자라므로, 가장 좋은 예방은 Whisper에 침묵을 덜 주는 것입니다. 아래 방법은 어떤 Whisper 앱에서도 통하고, 해당하는 곳에는 YapToText의 설정 이름을 적었습니다. 침묵이 덜 들어갈수록 지어낸 단어가 덜 나옵니다.

  1. 끝나면 멈춥니다. 말이 끝나는 즉시 키를 탭하고, 녹음이 계속 돌아가게 두지 않습니다. YapToText의 Auto-stop after silence는 Dictation 페이지의 Recording 카드에 있고 기본은 꺼짐이며, 켜면 0.5초에서 5초 동안 조용할 때 받아쓰기를 끝냅니다.
  2. 일부러 멈춥니다. 중간에 오래 생각해야 하면 Space를 눌러 받아쓰기를 멈추고, 다시 눌러 이어 갑니다. 스페이스는 입력되지 않습니다.
  3. 언어를 정합니다. Whisper가 알아내게 두지 말고 AI Models 페이지의 Language 선택기에서 말하는 언어를 고릅니다. 언어 페이지에 29개가 모두 나와 있습니다.
  4. 깨끗한 신호를 줍니다. 마이크는 가깝게, 방은 조용하게, 음악은 끕니다. YapToText의 Pause music and video while dictating은 기본으로 켜져 있어서 말하는 동안 재생을 멈춥니다.
  5. 녹음을 먼저 다듬습니다. 파일을 변환하기 전에, 아무 오디오 편집기에서 처음과 끝의 긴 무음과 음악 구간을 잘라 냅니다.
  6. 중요해지기 전에 읽습니다. 보내거나, 보관하거나, 인용할 내용은 원본 변환 결과를 읽어 봅니다.
Mac의 YapToText Dictation 설정 페이지. Keys, Recording, Microphone, Delivery 카드가 보인다.
그림 3. Auto-stop after silence는 Dictation 페이지의 Recording 카드에 있고 기본은 꺼짐입니다. 켜면 말을 멈출 때 받아쓰기가 끝납니다.

키와 단축키 페이지에서 Space, Esc 등을 설명합니다.

whisper.cpp 사용자를 위한 팁

whisper.cpp로 직접 Whisper를 실행한다면 들어가는 오디오를 직접 통제할 수 있고, 예방의 대부분이 거기에 있습니다. 깨끗하게 다듬은 오디오는 가장 싼 환각 해결책입니다.

  • 제대로 변환하세요. whisper.cpp의 README는 whisper-cli가 현재 16비트 WAV 파일에서만 실행된다고 밝히고, 다른 파일을 변환하는 ffmpeg 명령을 알려 줍니다.
  • 먼저 다듬으세요. 변환하기 전에 긴 침묵과 음악을 잘라 내면 모델이 그것을 아예 보지 않습니다.
  • 가능하면 언어를 정하세요. 자동 감지에 기대지 말고 whisper-cli의 도움말 출력에서 언어 옵션을 확인하세요.
  • 다른 모델 크기를 시험해 보세요. 영어만 말하고 메모리가 빠듯하다면, OpenAI는 영어 전용 .en 모델이 영어에서 더 나은 경향이 있고 특히 tiny와 base에서 그렇다고 밝힙니다.
  • 실시간 모드가 무엇인지 알아 두세요. whisper-stream은 0.5초마다 마이크를 샘플링해 계속 변환하고, README는 이를 단순한 예제라고 부릅니다.

터미널: README의 명령으로, 다듬은 녹음을 whisper-cli가 읽는 WAV 형식으로 변환합니다.

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

실행 결과: ffmpeg가 output.wav를 16 kHz, 모노, 16비트 오디오로 만들고, 그 파일을 -f 뒤에 넣어 whisper-cli에 넘깁니다.

whisper.cpp용으로 내려받은 모델 파일은 YapToText에서도 쓸 수 있습니다. AI Models 페이지의 Your own models 아래에서 Add Model이 모든 whisper.cpp GGML .bin 파일을 받습니다. 전체 설정, 모델 크기, 메모리 수치는 로컬 Whisper 가이드에 있습니다.

어떤 보호 장치도 약속할 수 없는 것

  • 모든 환각. 보호 장치는 제가 본 패턴과 테스트한 패턴을 잡습니다. 새로운 패턴은 빠져나올 수 있고, 그래서 원본 변환 결과는 언제나 클릭 한 번 거리에 있습니다.
  • 듣지 못한 단어. 마이크가 잡지 못한 음성은 어떤 보호 장치로도 되찾을 수 없고, 지어낸 텍스트를 제거하면 실제 단어가 아니라 빈자리가 남습니다.
  • 제 나름의 비율. 저는 YapToText나 어떤 모델의 환각 비율도 측정하지 않았으므로, 이 페이지는 공개된 연구만 그 한계와 함께 인용합니다.
  • 파일 변환의 부가 기능. 파일은 타임스탬프 없는 일반 텍스트로 돌아오므로, 의심스러운 줄에서 오디오의 해당 위치로 바로 이동할 수 없습니다. 그 기능은 오디오 파일 페이지에서 설명합니다.
  • 긴 멈춤이 말하는 방식인 경우. Whisper는 범용 모델이고, YapToText에는 침묵을 압축하는 것 말고 긴 멈춤이 있는 음성을 다루는 방식을 바꾸는 것이 없습니다.
  • Intel Mac. YapToText에는 macOS 14 이상의 Apple Silicon Mac이 필요합니다.

보호 장치는 가능성을 낮춥니다. 받아쓴 내용을 읽는 것이 여전히 마지막 점검입니다.

요약

  • 정체. 뒤에 음성이 없는 텍스트입니다. 루프, 침묵 위의 마무리 인사, 지어낸 문장과 라벨입니다.
  • 이유. Whisper는 변환하면서 예측도 하고, 침묵, 멈춤, 음악, 잡음이 그 예측에 여지를 줍니다.
  • YapToText에서. 긴 침묵을 압축합니다. 반복 루프, 화자 라벨, 침묵에서 생긴 인사말을 제거합니다. 길어진 다듬기 결과는 버립니다.
  • 누구에게나. 끝나면 멈추고, 침묵을 다듬고, 언어를 정하고, 원본 변환 결과를 읽습니다.

YapToText는 Mac App Store에서 무료이고, Whisper는 Mac에서 실행됩니다.

Whisper에 침묵을 덜 주고, Whisper가 쓴 것을 확인하세요. YapToText가 말하지 않은 것을 입력하면 History의 원본 변환 결과를 붙여 GitHub에 이슈를 남겨 주세요. 모두 읽습니다.

Mac App Store에서 YapToText 다운로드무료로 다운로드할 수 있습니다. 계정이 필요 없고 잠긴 기능도 없습니다. Apple Silicon이 탑재된 Mac과 macOS 14 이상이 필요합니다. 소스 코드는 GitHub에 있습니다.

글쓴이 소개. Ryleigh Newman은 소프트웨어를 개발합니다. 손으로 타이핑하기가 어려워서, 이 사이트에서 소개하는 앱인 YapToText로 매일 받아쓰기를 합니다. 이 페이지는 영어에서 번역한 것입니다. 앱의 화면과 사이트의 다른 페이지는 영어로 되어 있습니다. 프로젝트 더 알아보기(영어).

가이드

다른 가이드(영어)

출처

자주 묻는 질문

Whisper는 왜 환각을 일으키나요?

OpenAI의 모델 카드는 Whisper가 대규모의 잡음 섞인 데이터로 학습되어 말하지 않은 텍스트를 출력할 수 있다고 밝히고, 변환하면서 다음 단어도 예측하기 때문일 가능성이 있다고 봅니다. 침묵, 긴 멈춤, 음악, 잡음은 그 예측에 더 많은 여지를 줍니다.

Whisper가 "thank you for watching"을 쓰는 이유는 무엇인가요?

침묵이나 음악 위에서 나타나는 알려진 종류의 환각입니다. Whisper 저장소의 "Share your hallucinations here" 스레드에서 사용자들이 자막 크레딧과 함께 보고합니다. 말이 끝나면 녹음을 멈추고 침묵을 다듬으면 여지가 줄어듭니다.

Whisper가 같은 텍스트를 계속 반복하는 이유는 무엇인가요?

OpenAI의 논문은 반복 루프에 갇히는 것을 실패 유형으로 나열하고, 모델 카드는 구조상 반복되는 텍스트를 만들기 쉽다고 밝힙니다. 루프는 조용한 끝부분에 자주 나타나고, YapToText의 보호 장치는 그것을 하나로 줄입니다.

Whisper 환각은 얼마나 흔한가요?

Careless Whisper 연구는 2023년 표본에서 OpenAI의 Whisper API가 만든 변환 결과의 약 1%에 지어낸 문구나 문장이 들어 있었다고 발견했습니다. 실제 비율은 오디오, 모델, 앱에 따라 달라집니다.

Whisper 환각은 어떻게 해결하나요?

침묵을 덜 주세요. 끝나면 멈추고, 일부러 멈추고, 녹음을 다듬으세요. 언어를 정하고, 깨끗한 마이크 신호를 쓰고, Whisper가 실제로 쓴 것을 볼 수 있도록 원본 변환 결과를 읽으세요.

YapToText도 환각을 일으키나요?

Whisper를 실행하므로 일으킬 수 있습니다. 긴 침묵을 압축하고, 반복 루프, 지어낸 화자 라벨, 침묵에서 환각으로 생긴 인사말을 제거하며, 말한 것보다 훨씬 길어진 다듬기 결과는 버립니다. History에서 원본 변환 결과를 볼 수 있습니다.