본문 바로가기

일상

Whisper 전사에서 같은 말만 수십 번 반복되고 대화가 사라질 때 (condition_on_previous_text)

반응형

faster-whisper 로 긴 녹음을 전사했는데 "네." 같은 짧은 말이 수십 줄 반복되고 그 사이 대화가 통째로 사라지는 원인과, 이런 구간을 찾아 다시 전사하는 방법입니다.


통화 녹음 수백 건을 전사해 두고 내용을 찾아보다가, 분명히 나눴던 대화가 전사본에서 아무리 찾아도 나오지 않는 일이 있었습니다.


해당 시각 근처를 열어보니 네. 한 글자가 수십 줄 연달아 찍혀 있었습니다. 녹음을 직접 들어보면 그 구간에는 질문과 대답이 몇 분 동안 오가고 있었습니다.


처음엔 녹음 품질 문제인 줄 알았는데, 같은 파일을 옵션 하나만 바꿔 다시 돌리자 사라졌던 대화가 그대로 나왔습니다.


- 원인은 앞 구간의 결과를 다음 구간의 힌트로 넘기는 condition_on_previous_text 기본값이다

- 무음 구간 환각과는 다른 문제라 VAD 를 켜도 막히지 않는다

- 같은 줄이 연속으로 반복되는 곳을 세면 붕괴 구간을 기계적으로 찾을 수 있다

- 옵션을 끄고 문제 파일만 골라 다시 전사하면 된다


1. 증상: 대화 대신 같은 줄이 이어진다

전사본을 보면 앞뒤는 멀쩡한데 어느 순간부터 같은 말이 계속 찍히고, 한참 뒤에야 정상으로 돌아옵니다.



반복되는 말은 네. 같은 맞장구가 제일 많았지만 그것만은 아니었습니다. 아이고. 같은 감탄사, 마침표 하나, 심지어 바로 앞에 나온 문장 한 줄이 스무 번 넘게 반복된 곳도 있었습니다.


무서운 건 전사가 실패로 끝나지 않는다는 점입니다. 에러도 없고 파일도 정상으로 만들어지니, 그 구간을 직접 열어보기 전까지는 대화가 빠졌다는 걸 알 수가 없습니다.


2. 원인: 앞 결과를 다음 구간의 힌트로 쓴다

Whisper 는 긴 음성을 30초 정도씩 나눠서 처리합니다. 이때 condition_on_previous_text=True 이면 앞 구간에서 받아 적은 글자를 다음 구간의 힌트로 같이 넣습니다.


보통은 앞에서 쓴 용어 표기나 문장 흐름이 이어져서 결과가 자연스러워지는데, 문제는 한 번 반복에 빠졌을 때입니다.


- 어느 구간에서 네. 가 연달아 적힌다

- 그 결과가 다음 구간의 힌트로 들어간다

- 모델은 힌트를 따라 또 네. 를 적는다

- 이게 계속 이어지면서 실제 발화를 덮어버린다


통화처럼 맞장구가 잦은 녹음에서 특히 잘 생기는데, 짧은 대답이 여러 번 이어지는 구간이 방아쇠가 되고, 한번 들어가면 몇 분씩 빠져나오지 못합니다.


faster-whisper 에도 결과가 지나치게 반복되면 온도를 올려 다시 시도하는 장치가 있습니다. 다만 이 장치는 구간 안의 글자가 얼마나 뭉쳐 있는지로 판단하는데, 짧은 줄이 구간마다 따로 찍히는 모양은 각각 보면 멀쩡해서 걸러지지 않는 것으로 보였습니다.


3. 무음 환각과는 다른 문제입니다

Whisper 가 없는 말을 지어내는 문제는 보통 무음 구간에서 생기는데, 조용한 곳에 "감사합니다" 같은 말이 붙는 이 현상은 VAD 로 무음을 잘라내면 대부분 해결됩니다.


이번 경우는 VAD 를 이미 켜둔 상태였고, 반복이 생긴 곳도 말소리가 분명히 있는 구간이었습니다. 원인이 다르니 VAD 설정을 아무리 만져도 소용이 없습니다.


4. 붕괴 구간 찾기

녹음이 수백 건이면 하나씩 열어볼 수 없으니, 대신 같은 줄이 연속으로 몇 번 나오는지 세면 됩니다. 정상 대화에서 같은 말이 열다섯 번 넘게 이어지는 일은 거의 없습니다.



기준값은 녹음 성격에 따라 조정하면 되는데, 맞장구가 많은 통화에서는 15 정도가 적당했습니다. 너무 낮추면 정상적인 짧은 대답까지 걸리고, 너무 높이면 짧게 붕괴된 곳을 놓칩니다.


5. 옵션을 끄고 문제 파일만 다시 전사

고치는 건 옵션 하나로, condition_on_previous_text=False 로 두면 구간마다 앞 결과에 끌려가지 않고 새로 받아 적습니다.



대신 앞 구간과의 연결이 약해져서 같은 단어의 표기가 구간마다 조금씩 달라질 수 있습니다. 대화가 통째로 사라지는 것에 비하면 훨씬 작은 손해라서, 긴 통화나 회의 녹음이라면 끄는 쪽을 기본으로 두는 편이 낫다고 봅니다.


다시 돌릴 때는 전체를 다 돌릴 필요 없이 4절에서 걸린 파일만 골라 돌리면 되고, 덮어쓰기 전에 기존 전사본을 따로 백업해 두는 게 좋습니다. 전후를 비교해야 무엇이 복원됐는지 확인할 수 있습니다.


제 경우 100건을 다시 전사했더니 반복되던 줄 4,182줄 자리에서 실제 발화 약 1,500줄이 돌아왔습니다. 재전사 뒤 같은 검사를 다시 돌려 반복 구간이 거의 남지 않았는지도 확인했습니다.


6. 정리

전사본에 없다고 해서 그 대화가 없었던 건 아닐 수 있습니다. 특히 같은 줄이 길게 반복되는 곳은 대화가 묻힌 자리일 가능성이 큽니다.


- 같은 말이 수십 줄 반복되면 condition_on_previous_text 루프를 의심한다

- 무음 환각과 달리 VAD 로는 막히지 않는다

- 연속 반복 줄 수를 세면 붕괴 구간을 한 번에 찾을 수 있다

- condition_on_previous_text=False 로 문제 파일만 다시 전사한다

- 덮어쓰기 전에 백업하고 전후를 비교한다


전사 결과를 검색해서 쓰는 경우라면 이런 구간이 제일 위험합니다. 찾는 말이 안 나오면 "그런 대화는 없었다"고 결론 내리기 쉬운데, 사실은 전사가 그 부분을 먹어버린 것일 수 있으니 반복 구간 검사는 한 번쯤 꼭 돌려보시길 권합니다.


여기까지 Whisper 전사에서 같은 말이 반복되며 대화가 사라지는 문제에 대해서 작성해봤습니다. 여기까지 읽어주셔서 감사합니다!

반응형