단어 오류율
다른 이름: WER
업데이트
정의
단어 오류율(WER)은 음성 인식 정확도의 표준 척도로, 모델이 틀린 단어 수를 실제로 말한 단어 수로 나눈 값입니다. WER 5%는 대략 20단어 중 1단어가 다른 단어로 바뀌었거나, 빠졌거나, 지어낸 것이라는 뜻입니다.
WER은 세 가지 오류를 셉니다. 대체는 올바른 자리에 들어간 틀린 단어입니다(“낫다” 대신 “낳다”). 삭제는 말했지만 나타나지 않은 단어입니다. 삽입은 나타났지만 말한 적 없는 단어입니다. 이를 모두 더해 올바른 전사본의 단어 수로 나누면 오류율이 됩니다. 삽입에는 상한이 없으므로, 오디오가 나쁘면 100%를 넘을 수도 있습니다.
이 수치는 측정에 쓰인 오디오와 함께 볼 때만 의미가 있습니다. 팟캐스트 마이크로 깨끗하게 낭독한 영어에서 3%를 기록한 모델도 같은 사람이 카페에서 말하면 15%가 나올 수 있고, 학습 때 덜 접한 언어에서는 더 나빠집니다. 공개된 WER 수치는 거의 항상 표준 벤치마크 세트로 측정한 것이며, 그 오디오는 사용자의 책상보다 깨끗합니다.
WER이 담지 못하는 것
모든 오류는 똑같이 계산되지만, 실제로는 같지 않습니다. “음”이 빠지면 오히려 나아지지만, “안”이 빠지면 뜻이 뒤집힙니다. 성의 철자가 틀리면 고쳐야 하지만, “the”의 철자가 틀리면 눈에 띄지도 않으니 아무 비용도 들지 않습니다. 서식은 WER에 전혀 드러나지 않습니다. “1030 am”과 “10:30 AM”은 같은 단어입니다. 그래서 원본 WER은 조금 더 나쁘지만 서식 처리가 훨씬 나은 도구가 고칠 곳이 훨씬 적은 텍스트를 만들 수 있습니다.
그래서 실제로 중요한 수치는 “서식 적용 후 100단어당 수정 횟수”에 가깝습니다. 이를 보고하는 벤치마크는 없으며, 일주일 동안 자신의 업무를 받아써 봐야만 측정할 수 있습니다.
업체의 정확도 주장을 읽는 법
어떤 벤치마크, 어떤 언어, 어떤 마이크인지 물어보세요. 데이터 세트를 밝히지 않은 “정확도 99%”는 마케팅 문구입니다. 그 수치가 수정 단계 전의 것인지 후의 것인지, 개인 사전이 적용되었는지도 물어보세요. 그리고 WER이 보지 못하는 것들과 함께 따져 보세요. 이름, 숫자, 그리고 텍스트가 글로 도착하는지 전사본으로 도착하는지입니다.
내 오류율 줄이기
입에 더 가까이 둔 더 좋은 마이크가 어떤 모델 변경보다 도움이 됩니다. 키를 놓기 전에 문장을 끝까지 말하면 모델이 애매한 부분을 구별할 맥락을 얻습니다. 그리고 실제로 말하는 이름과 용어를 담은 개인 사전은 반복되는 오류를 고칩니다. 중요한 것은 바로 이 오류입니다. 한 달에 한 번 생기는 실수는 성가신 정도지만, 매일 생기는 실수는 받아쓰기를 그만둘 이유가 되기 때문입니다.
Mac에서 내 단어 오류율을 직접 측정하는 방법
jiwer라는 무료 오픈 소스 도구로 내 목소리와 내 마이크의 WER을 측정할 수 있습니다. 이 도구는 정답 전사본과 인식기가 만든 결과 사이의 최소 편집 거리를 계산하며, 벤치마크에서 쓰는 것과 같은 계산입니다.
결과는 내 책상, 내 마이크, 내가 읽은 글에 대한 것입니다. 표본이 작으므로 대략적인 수치로 보고, 결론을 내리기 전에 다른 텍스트로 반복해 보세요.
- 수백 단어 분량의 글을 골라 한 줄에 한 문장씩 ref.txt라는 일반 텍스트 파일로 저장하세요. 이것이 기준 텍스트입니다.
- 테스트할 도구로 같은 글을 받아쓰고, 같은 문장을 같은 줄에 맞춰 결과를 hyp.txt로 저장하세요.
- 대문자, 문장 부호, 숫자를 어떻게 처리할지 정한 다음, 두 파일에 같은 정리를 적용하세요. 간단한 방법은 두 파일 모두 전부 소문자로 바꾸고 문장 부호를 없애는 것입니다.
- 터미널을 열고 다음 명령으로 도구를 설치하세요: pip install jiwer (Python 3.8 이상이 필요합니다).
- 다음을 실행하면 단어 오류율이 출력됩니다: jiwer -r ref.txt -h hyp.txt
- 명령에 -a를 추가하면 문장마다 정렬 결과가 출력되어, 어떤 단어가 바뀌었는지, 빠졌는지, 끼어들었는지 볼 수 있습니다.
- 대신 문자 오류율을 원하면 -c를 추가하세요.
같은 모델의 WER 수치가 서로 다른 이유는 무엇인가요?
대개 점수를 매기기 전에 텍스트를 다르게 정리했기 때문입니다. WER은 문자열 편집 거리에 기반하므로 두 전사본 사이의 모든 차이에 벌점을 줍니다. 축약형을 풀어 쓰거나 숫자를 아라비아 숫자로 쓰는 것처럼 사람이 보기에는 맞는 차이도 포함됩니다.
Whisper 논문은 이 문제를 설명하고, 오류를 세기 전에 두 전사본 모두에 적용하는 텍스트 정규화기로 이에 대응합니다. 저자들은 여러 데이터 세트에서 이 단계만으로 WER이 최대 50% 낮아졌다고 보고합니다. 정규화 방식에 대한 설명이 없는 WER 수치는 다른 수치와 비교할 수 없습니다.
- Whisper 정규화기는 점수를 매기기 전에 hmm, mm, mhm, mmm, uh, um이라는 단어를 제거합니다.
- 대괄호나 괄호 안의 구절을 모두 제거합니다.
- 축약형을 원래 형태로 풀어 씁니다.
- 글자로 쓴 숫자와 금액을 아라비아 숫자로 바꿔 씁니다. 예를 들어 “ten thousand dollars”는 “$10000”이 됩니다.
- 영국식 철자를 미국식 철자로 바꾸고, 대부분의 문장 부호와 기호를 없앱니다.
WER과 CER: 단어인가 문자인가
문자 오류율(CER)은 같은 계산을 단어 대신 문자에 적용한 것입니다. 긴 단어에서 글자 하나가 틀리면 WER에서는 오류 하나지만 CER에서는 오류의 작은 일부에 불과하므로, CER이 더 너그러운 수치이며 둘은 서로 비교할 수 없습니다.
모델 배포자는 언어별로 단위를 고릅니다. 예를 들어 Whisper 프로젝트는 Common Voice 15와 Fleurs 데이터 세트에서 언어마다 WER 또는 CER을 보고합니다. 정확도 표를 볼 때는 다른 행과 비교하기 전에 그 행이 둘 중 무엇을 쓰는지 확인하세요.
자주 묻는 질문.
좋은 단어 오류율은 어느 정도인가요?
깨끗한 영어 벤치마크 오디오에서 현재 최고 수준의 모델은 5% 미만을 기록합니다. 노트북 마이크와 평소 말투로 실제 사용할 때는 5~10%가 일반적이며, 도구에 좋은 서식 처리와 이름을 위한 사전이 있다면 여전히 충분히 쓸 만합니다.
단어 오류율은 어떻게 계산하나요?
대체, 삭제, 삽입 수를 더해 올바른 전사본의 단어 수로 나눕니다. 100단어 구절에서 한 단어를 바꾸고, 한 단어를 빠뜨리고, 한 단어를 더한 모델의 WER은 3%입니다.
WER이 낮을수록 항상 더 나은 도구인가요?
아닙니다. WER은 서식, 문장 부호, 그리고 어떤 단어가 틀렸는지를 무시합니다. 시간, 가격, 이름을 정확하게 쓰고 군더더기 말을 없애는 도구는, 원본 전사본의 WER은 더 낮지만 서식 처리가 없는 도구보다 고칠 곳이 적을 수 있습니다.
WER은 직접 어떻게 계산하나요?
정답 텍스트와 인식기 결과를 두 개의 텍스트 파일로 저장하고, pip install jiwer로 오픈 소스 도구 jiwer를 설치한 다음, 터미널에서 jiwer -r ref.txt -h hyp.txt를 실행하세요. 먼저 두 파일의 대문자와 문장 부호를 같은 방식으로 정리하세요. 그렇지 않으면 서식 차이가 오류로 집계됩니다.
WER과 CER의 차이는 무엇인가요?
WER은 틀린 단어를, CER은 틀린 문자를 세며, 각각 정답 전사본의 길이로 나눕니다. 글자 하나가 틀린 단어는 문자 수준에서는 대부분 맞기 때문에, 같은 결과라도 CER이 더 낮습니다.
단어 오류율에 문장 부호도 포함되나요?
사용한 텍스트 정규화 방식에 따라 다릅니다. 대부분의 벤치마크 설정은 Whisper 논문의 정규화기처럼 점수를 매기기 전에 두 전사본에서 문장 부호와 대문자를 없애므로, 공개된 수치로는 모델이 문장 부호를 얼마나 잘 넣는지 알 수 없습니다.