음성인식 핫워드로 오인식은 8건에서 1건, 대신 없던 말이 8번 생겼습니다
회의록을 자동으로 만들어 주는 도구를 운영하고 있습니다. 녹음 파일을 넣으면 전사된 글이 나오고, 그걸 사람이 다듬어 회의록으로 씁니다. 이 흐름에서 품질을 가르는 것은 문장이 매끄러운지가 아니라 업무 용어가 맞게 적혔는지입니다. 제도 이름 한 글자가 어긋나면 회의록을 읽는 사람이 다른 제도를 떠올리게 됩니다.
그래서 새로 나온 음성인식 전용 모델을 같은 녹음 파일로 견줘 봤습니다. 값이 큰 폭으로 내려갔고 화자 분리까지 내세우고 있어서 전환할 만한 후보였습니다. 속도와 비용은 실제로 앞섰습니다. 그런데 업무 용어를 많이 틀렸습니다.
가장 값싸고 명백한 처방을 먼저 썼습니다
그 모델은 '핫워드'(모델에 미리 알려주는 용어 사전) 기능을 제공합니다. 자주 나오는 업무 용어를 목록으로 넘기면 그 낱말이 나올 확률을 올려 줍니다. 용어만 잡히면 전환할 수 있으니, 핫워드 10개에 가중치 5를 걸고 같은 파일을 다시 돌렸습니다.
대상은 28분(1,686초) 분량의 회의 녹음 한 건입니다. 모노 녹음이고 참석자는 두세 명입니다. 재실행은 63초, 입력 38,937토큰·출력 4,750토큰으로 기본 실행과 거의 같았습니다. 값이 거의 안 드는 처방이었습니다.
한 가지 전제를 먼저 적어 둡니다. 정답 원고가 없습니다. 사람이 받아 적어 둔 대조본이 없어서, 맞았는지 틀렸는지는 문맥으로 판정한 눈 비교입니다.
오인식은 8건에서 1건으로 줄었습니다
먼저 명백한 오인식부터 셌습니다. 업무 용어가 한 글자씩 어긋나 아무 뜻도 없는 말이 된 자리입니다. 기본 실행에서 8건이었던 것이 핫워드를 켜자 1건으로 줄었습니다. 거의 사라진 셈입니다.
여기서 멈추면 이 실험은 성공입니다. 처방 값은 거의 0이고, 고치려던 지표는 8분의 1로 내려갔습니다. 보고할 문장도 한 줄로 깔끔하게 나옵니다. 저는 습관적으로 낱말별 등장 횟수까지 같이 세는데, 그 표에서 다른 것이 보였습니다.

0회였던 용어가 8회로 늘어 있었습니다
넘긴 용어가 글 안에 몇 번 나왔는지 낱말별로 셌습니다. 용어 실명은 닫고 A부터 E까지로 두었습니다. 참고로 운영 중인 경로는 상용 언어 모델로 녹음을 조각내 돌리는 방식이고, 그쪽 횟수도 같이 적었습니다.
용어 | 기본 | 핫워드 | 운영 경로 |
|---|---|---|---|
업무 용어 A | 14 | 24 | 46 |
업무 용어 B | 0 | 1 | 20 |
업무 용어 C | 1 | 0 | 13 |
업무 용어 D | 0 | 0 | 2 |
업무 용어 E | 0 | 8 | 2 |
명백한 오인식 | 8 | 1 | 0 |
업무 용어 E 가 0회에서 8회로 늘었습니다. 표만 보면 좋은 신호입니다. 안 잡히던 용어가 잡히기 시작한 것처럼 보입니다.
그 8곳을 원문에서 하나씩 열었습니다. 하나는 같은 낱말을 네 번 잇달아 반복한 문장이었습니다. 다른 자리는 전혀 다른 직책 이름이 나와야 할 곳에 그 용어가 끼워져 있었습니다. 8곳 중 실제로 그 말을 한 자리는 하나도 없었습니다.
그리고 회의에서 실제로 그 용어를 말한 두 곳은 핫워드를 켠 뒤에도 여전히 못 잡혔습니다. 맞혀야 할 자리는 그대로 두고 안 나와야 할 자리를 채운 것입니다. 업무 용어 B·C 는 한 글자 다른 비슷한 말로 바뀐 채 남았고, 업무 용어 D 는 목록에 넣었는데도 0회 그대로였습니다.
원리는 간단합니다
핫워드는 넘긴 낱말이 나올 확률을 인위로 올리는 장치입니다. 확률을 올리면 그 낱말은 나와야 할 자리에서 더 잘 나옵니다. 동시에 안 나와야 할 자리에서도 올라갑니다. 모델은 어느 쪽이 어느 쪽인지 구분하지 않습니다.
그래서 이 실패는 에러로 오지 않습니다. 경고도 없고, 지어낸 문장이 자연스럽습니다. 총계 지표에는 개선으로 잡히고, 사람이 읽어도 걸리지 않습니다. 오인식은 읽다가 걸립니다. 글자가 어긋나 있어서 뜻이 통하지 않기 때문입니다. 이쪽은 뜻이 통해서, 읽는 사람이 회의에서 나오지도 않은 말을 회의록에서 읽고 그대로 받아들입니다.

다른 축은 오히려 나빠졌습니다
용어만 보고 판정하지 않으려고 화자 분리도 같이 봤습니다. 이 녹음은 원래 한 사람에게 문장이 쏠리는 문제가 있었는데, 핫워드를 켠 뒤에 더 심해졌습니다. 전체 문장 중 한 화자에게 붙은 비율이 280/307 에서 302/331 로 올라갔습니다. 중간에 다른 언어가 끼어드는 현상도 그대로였습니다.
한 축을 밀면 다른 축이 따라 움직입니다. 축을 하나만 재면 총합이 내려가는 변경을 개선으로 채택하게 됩니다. 이번 건은 용어 축만 재도 이미 걸렸지만, 화자 축을 같이 안 봤다면 개선 폭을 실제보다 크게 적었을 겁니다.
같은 모양을 3주 전에 이미 봤습니다
운영 중인 언어 모델 경로에서 용어집을 켰을 때도 같은 일이 있었습니다. 한 제도 이름이 비슷한 다른 제도 이름으로 바뀐 채 전사됐습니다. 창구가 다르고 제공사가 다르고 용어를 넘기는 방식도 다른데, 증상의 모양이 같았습니다.
두 관측이 엄밀한 재현은 아닙니다. 모델도 방식도 달라서 같은 조건을 두 번 돌린 것이 아닙니다. 다만 용어를 밀어 넣는 장치라는 점만 같고 나머지가 다른데 결과의 모양이 닮았다면, 제품 하나의 결함으로 보기는 어렵습니다. 그래서 이 글은 모델 이름을 주어로 세우지 않습니다. 주어는 장치입니다.
실패할 수 없는 검사를 고르지 않습니다
이번 건에서 가장 오래 남은 것은 질문을 잘못 골랐을 때 무슨 일이 생기는지입니다. 넘긴 용어가 더 나왔는지를 묻는 검사는, 핫워드가 작동하면 무조건 참이 됩니다. 결과가 뒤집힐 수 없는 질문이라 아무것도 검사하지 않습니다.
묻지 않을 것: 넘긴 용어가 전보다 많이 나왔는가
물을 것: 늘어난 자리가 실제 발화인가
같이 물을 것: 원래 맞혀야 했던 자리는 잡혔는가
같이 물을 것: 안 건드린 다른 축은 그대로인가
대조본이 없다는 것도 변명이 되지 않았습니다. 정답 원고가 없어도 낱말별 등장 횟수 표는 만들 수 있고, 이번 건을 잡은 것이 그 표입니다. 완전한 측정을 못 한다고 아무것도 안 세면 보이는 것은 개선뿐입니다.

도입을 검토하는 분을 위한 점검 항목
용어 주입 효과를 보고받을 때, 늘어난 쪽만 적힌 표인지 확인합니다. 줄어든 것과 생겨난 것이 같은 표에 있어야 합니다
낱말별 등장 횟수와 늘어난 자리의 원문 대조를 같이 요구합니다. 총계 지표 하나로는 이번 유형이 개선으로 끝납니다
바꾼 축 말고 다른 품질 축도 전후를 같이 재게 합니다. 용어와 화자 분리처럼 서로 끌어당기는 축이 있습니다
지어낸 문장은 사람 검수에서 안 걸린다는 것을 전제로 둡니다. 문장이 자연스러워서 읽는 사람이 의심하지 않습니다
정답 원고가 없어도 셀 수 있는 것부터 셉니다. 측정을 미루면 개선만 보이는 상태가 유지됩니다
켜지 않기로 했습니다
핫워드를 켠 채로 전환하지 않기로 했습니다. 개선 지표만 보면 켜는 쪽이 맞습니다. 다만 이 도구의 가치는 업무 용어가 맞게 적히는 것이고, 이 장치는 맞히는 만큼 지어냅니다. 읽는 사람이 회의에서 나오지 않은 말을 믿게 되는 실패는 오인식보다 비쌉니다.
용어 주입을 쓰지 말라는 결론은 아닙니다. 어휘가 닫혀 있고 오인식이 치명적인 자리, 예를 들어 제품명 목록이나 사람 이름 목록에서는 여전히 값싼 처방일 수 있습니다. 가중치를 낮추면 지어내는 양이 줄면서 개선도 같이 줄어들 수 있는데, 그쪽은 아직 재지 않았습니다. 이번 실측이 말하는 범위는 이 설정으로는 못 쓴다까지입니다.
기록에는 좋아진 것과 생겨난 것을 같은 표에 나란히 남겼습니다. 그리고 앞으로 용어 주입 실험은 낱말별 등장 횟수와 늘어난 자리의 원문 대조를 같이 하지 않으면 판정하지 않기로 정했습니다. 총계 지표 하나로 판정했다면 이번 건은 성공 사례로 남았을 겁니다.