용어집 / 알아듣는 방식

환각

업데이트

정의

음성 인식에서 환각은 아무도 말하지 않았는데 모델이 만들어 낸 텍스트입니다. 무음, 잡음, 또는 전사하기에 너무 짧은 조각에서 지어낸 그럴듯한 문구로, 삽입 오류가 극단까지 간 형태입니다.

모든 음성 모델은 텍스트를 만들도록 학습되므로, 말소리가 없는 오디오를 받아도 무언가를 만들려고 합니다. 잘 알려진 예가 Whisper 같은 일괄 처리 모델입니다. 몇 초 동안의 실내 잡음을 넣으면 가끔 “Thank you for watching”이나 다른 언어로 된 완전한 문장을 내놓습니다. 학습 데이터에서 녹음 끝부분에 그런 문자열이 흔했기 때문입니다. 출력은 매끄럽고, 자신 있게 틀립니다.

같은 말이 사실을 지어내는 언어 모델에도 쓰이며, 원리도 비슷합니다. 그럴듯한 출력을 내도록 최적화된 시스템은 입력이 뒷받침하든 아니든 그런 출력을 만들어 냅니다. 받아쓰기 도구에서 환각이란, 말한 적 없는 텍스트가 문서에 입력된다는 뜻입니다.

발생하는 경우

녹음의 시작이나 끝에 있는 무음. 그래서 키를 놓는 시점의 캡처와 음성 활동 감지가 중요합니다. 단어 하나나 기침처럼 아주 짧은 발화. 모델이 기댈 정보가 너무 적습니다. 영상이나 동료의 목소리 같은 배경 음성. 실제 말소리이지만 사용자의 말은 아닙니다. 긴 녹음. 일부 모델은 위치를 놓치고 한 구절을 되풀이합니다. 각각 알려진 대처법이 있으며, 이를 적용하지 않은 도구는 언젠가 사용자를 놀라게 합니다.

좋은 도구가 이를 막는 방법

먼저 음성 활동 감지기를 실행하고, 말소리가 아닌 것은 절대 인식기에 보내지 않습니다. 양쪽 끝의 무음을 잘라 냅니다. 최소 길이보다 짧은 클립의 결과는 버립니다. 그에 해당하는 오디오 에너지 없이 모델이 텍스트를 내놓는지 지켜보다가, 그런 텍스트는 버립니다. 서식 쪽에서는 전사본에 없던 내용어를 더하는 고쳐 쓰기를 모두 거부해, 서식 모델도 환각을 일으킬 수 없게 합니다. 이 모든 것을 하는 도구도 가끔 잘못 알아들을 수는 있지만, 문장을 지어내서는 안 됩니다.

명령줄에서 Whisper 환각을 줄이는 방법

오픈 소스 Whisper 명령줄 도구로 녹음을 처리할 때 텍스트를 지어내거나 반복한다면, 이 도구에는 바로 이 문제를 겨냥해 문서화된 옵션이 있습니다. 문제를 없애지는 못하지만, 두 가지 흔한 형태인 무음 구간에 지어낸 텍스트와 루프처럼 반복되는 구절에 대응합니다.

Whisper 저자들은 이러한 검사를 잡음이 많은 예측에 대한 우회책이지 해결책이 아니라고 설명하므로, 설정을 바꾼 뒤에는 결과를 오디오와 대조해 확인하세요.

  1. 터미널을 열고 기본 설정으로 파일을 한 번 실행하세요. 예: whisper recording.wav --model turbo. 지어낸 텍스트나 반복된 텍스트가 나타나는 위치를 기록해 두세요.
  2. 구절이 반복되면 --condition_on_previous_text False로 다시 실행하세요. 문서에 따르면 이렇게 하면 창 사이의 텍스트 일관성이 떨어질 수 있지만, 모델이 실패 루프에 갇힐 가능성이 줄어듭니다.
  3. 무음 구간에 텍스트가 나타나면 --word_timestamps True --hallucination_silence_threshold 2를 추가하세요. 단어 타임스탬프를 켠 상태에서 환각 가능성이 감지되면, 지정한 초보다 긴 무음 구간을 건너뜁니다.
  4. 바꿀 이유가 없다면 --no_speech_threshold는 기본값 0.6으로, --logprob_threshold는 기본값 -1.0으로 두세요. 이 두 값이 함께 구간을 무음으로 처리할지 결정합니다.
  5. 아무 오디오 편집기에서나 녹음의 시작과 끝에 있는 긴 무음을 잘라 내고 다시 실행하세요. 모델이 처리할 비음성 구간이 줄어듭니다.
  6. 첫 단계에서 기록해 둔 위치에서 새 전사본을 오디오와 비교하세요.

환각과 오인식: 구별하는 방법

오인식은 내가 다른 단어를 말한 자리에 들어간 틀린 단어입니다. 내가 말한 것과 비슷하게 들리고, 모델이 왜 그 단어를 골랐는지 알 수 있습니다. 환각은 오디오에 근거가 전혀 없습니다. Whisper 논문은 극단적인 경우를 실제 오디오와 전혀 관련 없는 전사본으로 설명합니다.

해결 방법이 다르기 때문에 이 차이가 중요합니다. 오인식은 더 좋은 마이크, 더 또렷한 발음, 사전 항목으로 개선됩니다. 환각은 무음과 소음이 모델에 들어가지 않게 하거나, 모델 스스로 확신하지 못한 결과를 버리는 방법으로 막습니다.

  • 말하지 않았거나 말을 멈춘 곳에 나타난 텍스트는 환각입니다.
  • 같은 구절이나 문장이 연속으로 여러 번 반복되는 것은 반복 루프이며, Whisper 논문은 이를 환각과 별개의 실패로 분류합니다.
  • 맞는 단어와 비슷하게 들리는 틀린 단어는 오인식입니다.
  • 녹음의 처음이나 마지막 몇 단어가 빠지는 것은 Whisper 논문에 나오는 세 번째 실패이며, 환각이 아니라 삭제입니다.

Whisper가 자기 출력이 실패했다고 판단하는 방법

오픈 소스 Whisper 코드는 30초 창을 디코딩할 때마다 결과를 검사합니다. 생성된 토큰의 평균 로그 확률이 -1.0보다 낮거나 텍스트의 gzip 압축률이 2.4보다 높으면, 그 창은 실패로 처리되고 더 높은 온도로 다시 디코딩됩니다. 반복이 많은 텍스트는 압축이 잘 되므로, 압축률로 루프를 잡아낼 수 있습니다.

무음에 대해 논문은 무음성(no-speech) 토큰의 확률만으로는 음성이 없는 창을 감지하기에 충분하지 않다고 언급합니다. 무음성 임계값 0.6과 로그 확률 임계값 -1을 함께 쓰면 감지가 더 안정적입니다. 모델 카드에는 여전히 환각과 반복 텍스트가 알려진 한계로 나와 있습니다.

자주 묻는 질문.

받아쓰기 앱이 왜 내가 말하지 않은 내용을 썼나요?

녹음 끝의 무음이나 아주 짧은 클립처럼 말소리가 없는 오디오가 인식기에 들어갔는데, 인식기가 그래도 그럴듯한 문구를 만들어 냈을 가능성이 높습니다. 일괄 처리 모델의 알려진 동작이며, 음성 활동 감지와 무음 제거로 막을 수 있습니다.

서식 단계도 환각을 일으킬 수 있나요?

네, 언어 모델이 전사본을 자유롭게 고쳐 쓴다면 그렇습니다. 안전장치는 규칙입니다. 출력은 군더더기 말을 없애고 문장 부호를 고칠 수는 있지만 말하지 않은 내용어를 더해서는 안 되며, 이 규칙을 어긴 고쳐 쓰기는 버립니다.

Whisper가 같은 문장을 계속 반복하는 이유는 무엇인가요?

Whisper 모델 카드에 따르면 시퀀스 투 시퀀스 구조 때문에 반복 텍스트를 생성하기 쉽습니다. 오픈 소스 명령줄 도구에서 --condition_on_previous_text False를 설정하면 모델이 이런 루프에 갇힐 가능성이 줄어듭니다.

더 큰 Whisper 모델을 쓰면 환각이 사라지나요?

확실하지 않습니다. Whisper 논문에 따르면 더 큰 모델은 비슷하게 들리는 단어를 혼동하는 것 같은 인지 오류에서 꾸준히 개선되었지만, 반복 루프와 환각은 더 끈질기며 디코딩의 문제입니다.

환각은 전사 오류와 같은 것인가요?

전사 오류의 한 종류입니다. 대부분의 오류는 실제로 말한 것을 잘못 들은 것이지만, 환각은 말한 근거가 전혀 없는 텍스트이며, 단어 오류율을 계산할 때 삽입으로 집계됩니다.

이 용어가 쓰인 가이드

관련 용어

목소리가 언제나 더 빨랐습니다.

7일 무료, 그 후 $19 USD 한 번 결제. 계정 없음, 구독 없음, 업로드 없음.

macOS 14 이상 · Apple 실리콘