Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags more
Archives
Today
Total
관리 메뉴

Victor의 AI 레퍼런스

신규 STT 엔진의 WER 분석 본문

프로젝트 관리/신규 STT 엔진의 WER 분석

신규 STT 엔진의 WER 분석

Victor’s Reference Note 2026. 2. 3. 08:30

목적

본 보고서는 새로운 음성 인식(Speech-to-Text, STT) 엔진의 성능을 평가하기 위해 단어 오류율(WER, Word Error Rate)을 분석한 내용을 다룹니다.

WER은 STT 엔진의 성능을 평가하는 데 사용되는 중요한 지표로, 이 문서는 STT 엔진의 WER 평가 절차, 오류 처리 방식, 통합 고려사항 등을 설명하며, [KR2] 환경에서의 통합 및 배포와 관련된 기술적 사항을 정리하였습니다.

내용

WER(Word Error Rate) 소개

  • WER은 음성 인식 엔진의 성능을 평가하는 데 사용되는 일반적인 지표로, STT 엔진이 생성한 텍스트와 참조 텍스트를 비교하여 정확도를 측정합니다.
  • WER 공식: WER=S+D+INWER = \frac{S + D + I}{N}WER=NS+D+I
    • S: 대체된 단어의 수 (잘못 인식된 단어)
    • D: 삭제된 단어의 수 (누락된 단어)
    • I: 삽입된 단어의 수 (추가된 단어)
    • N: 참조 텍스트의 전체 단어 수
  • WER은 퍼센트로 표현되며, 낮을수록 성능이 우수함을 의미합니다.
  • Word Error Rate (WER): 음성 인식 성능의 대표적인 지표로, 잘못 인식된 단어, 삽입된 단어, 삭제된 단어의 비율을 나타냅니다. WER이 낮을수록 정확도가 높습니다.
  • WER=Substitutions+Insertions+DeletionsTotalWordsinReferenceWER = \frac{Substitutions + Insertions + Deletions}{Total Words in Reference}WER=TotalWordsinReferenceSubstitutions+Insertions+Deletions
  • Sentence Error Rate (SER): 전체 문장이 정확히 인식되지 않은 비율을 측정하며, 문장 단위의 오류를 평가하는 데 유용합니다.
  • Character Error Rate (CER): WER과 유사하나, 단어 대신 문자 단위로 계산됩니다. 특히 언어적 특성에 따라 유용합니다.
  • Precision, Recall, F1 Score: 특정 음성 명령어 또는 키워드 인식 성능을 평가하는 데 사용됩니다.
    • Precision: 정확히 인식한 키워드의 비율
    • Recall: 실제 존재하는 키워드 중 인식한 비율
    • F1 Score: Precision과 Recall의 조화 평균
  • Confusion Matrix: 잘못 인식된 단어들이 어떻게 혼동되는지 보여주는 매트릭스입니다.

  • Latency (지연 시간): 입력 음성부터 텍스트 변환이 완료되기까지의 시간입니다. 실시간 응용 프로그램에서 중요합니다.
  • Real-Time Factor (RTF): 처리 속도를 측정하며, 실시간 처리에 얼마나 가까운지를 나타냅니다. RTF가 1 이하이면 실시간 처리가 가능함을 의미합니다.
  • Throughput: 단위 시간당 처리할 수 있는 음성 입력의 양입니다.

  • Noise Robustness: 다양한 소음 조건에서의 음성 인식 성능을 평가하며, SNR 변화에 따른 WER 변화를 측정합니다.
  • Speaker Variability: 다양한 화자의 인식 성능을 평가하며, 연령, 성별, 억양, 방언을 고려합니다.
  • Domain Adaptability: 특정 도메인에서 사용되는 용어들을 얼마나 잘 인식하는지를 평가합니다.

  • User Satisfaction: 사용자 만족도를 설문조사나 피드백을 통해 평가합니다.
  • Error Recovery Rate: 오류 발생 후 문제 해결의 용이성을 측정합니다.
  • Ease of Use: 인터페이스의 직관성을 평가합니다.

  • Computational Cost: 음성 인식을 처리하는 데 필요한 리소스(CPU/GPU)의 양을 측정합니다.
  • Scalability: 시스템의 확장 가능성을 평가합니다.

  • Multilingual Support: 여러 언어에 대한 음성 인식 성능을 평가하며, 각 언어별 WER을 비교합니다.
  • Language Model Accuracy: 특정 언어의 발음 및 문법적 구조를 정확하게 반영하는지 평가합니다.

STT 엔진 사양

  • 새로운 STT 엔진의 주요 사양:
    • 입력 형식: 최대 30분 길이의 WAV 또는 MP3 오디오 파일
    • API 요청: 오디오 파일과 API 키를 포함한 POST 요청
    • API 응답: JSON 형식의 텍스트 변환 결과

WER 평가 절차

  • 데이터 수집: 다양한 악센트, 말하기 속도, 배경 소음 수준을 포함한 대표적인 오디오 샘플을 수집하여 명확한 오디오와 어려운 조건의 오디오 모두를 포함합니다.
  • 전사 비교: 각 오디오 파일에 대해 엔진이 생성한 전사 결과를 수작업으로 확인된 참조 텍스트와 비교합니다.
  • WER 계산: 각 전사 쌍에 대해 WER 공식을 적용하여 엔진의 성능을 측정합니다.
  • 분석: WER 결과를 통해 특정 단어의 오인식, 배경 소음 처리 문제, 불완전한 문장 처리 문제 등을 파악합니다.

오류 처리 및 프로토콜 호환성

  • 불명확한 오디오 처리: 엔진이 불완전하거나 명확하지 않은 오디오를 처리하는 방식과 기존 프로토콜과의 호환성을 확인합니다. 예를 들어, no result UEPD와 같은 오류 코드의 반환 여부를 테스트합니다.
  • 오류 관리: 엔진이 오류를 관리하고 보고하는 방식이 현재 시스템의 오류 관리 프로토콜과 일치하는지 평가합니다.

통합 고려사항

  • 기존 시스템과의 호환성: 새로운 STT 엔진의 텍스트 출력이 Chappie 및 OpenBuilder와 같은 기존 시스템과 원활하게 통합될 수 있는지를 확인합니다.
  • 엔진 위치: [KR2]에 위치할 예정인 새로운 엔진의 배치와 관련된 인프라상의 고려사항을 평가합니다.
  • 직접 API 접근: 중계 서버를 우회하여 STT 엔진에 직접 접근하는 방법의 가능성을 조사하고, 이에 따른 시스템 수정 필요성을 평가합니다.

예시 문장 및 테스트 시나리오

1. 일상적인 대화 문장

  • "오늘 아침에 일찍 일어나서 산책을 다녀왔어요."
    • 목적: 일상적인 대화 속에서의 음성 인식 성능을 평가합니다. 간단한 문장 구조와 일상적인 표현을 통해 엔진이 기본적인 대화를 얼마나 정확하게 인식하는지 확인할 수 있습니다.
  • "주말에는 친구들과 영화를 보러 갈 예정이에요."
    • 목적: 일상 표현을 포함한 문장으로, 엔진이 일반적인 주제에 대한 대화를 정확하게 처리하는지 평가합니다.

2. 숫자와 날짜 포함 문장

  • "내 생일은 5월 15일이고, 친구 생일은 7월 7일이에요."
    • 목적: 날짜와 숫자 인식 정확도를 평가합니다. 숫자와 날짜가 포함된 문장은 음성 인식 엔진이 숫자를 정확하게 처리하는 능력을 테스트하는 데 유용합니다.
  • "오후 3시 45분에 회의가 있습니다."
    • 목적: 시간 표현의 인식 성능을 테스트합니다. 엔진이 시간 관련 정보를 올바르게 인식하는지를 평가합니다.

3. 전문 용어 포함 문장

  • "의사는 환자에게 진통제와 항생제를 처방했습니다."
    • 목적: 의료 분야에서 자주 사용하는 전문 용어가 포함된 문장으로, 엔진이 도메인 특화된 용어를 얼마나 정확하게 인식하는지 평가합니다.
  • "프로그래머는 코드 리뷰를 통해 버그를 발견했습니다."
    • 목적: 기술 용어가 포함된 문장으로, IT 분야의 전문 용어 인식 성능을 테스트합니다. 도메인 특화된 용어에 대한 인식 능력을 평가할 수 있습니다.

4. 유사 발음 단어 포함 문장

  • "나는 사과를 먹었는데, 그 사과는 정말 맛있었어요."
    • 목적: 유사한 발음의 단어("사과")가 반복되는 문장을 통해 음성 인식 엔진이 동일한 발음을 여러 번 인식할 때의 정확도를 평가합니다.
  • "이 자료는 잘못된 정보가 포함되어 있어요."
    • 목적: 발음이 유사한 단어들이 포함된 문장으로, 발음 혼동 상황에서의 인식 성능을 평가합니다.

5. 다양한 화자 변이 포함 문장

  • "저는 서울에서 태어나서, 표준어를 사용합니다."
    • 목적: 억양이나 방언이 없는 표준어 문장을 통해 엔진의 기본 발음 인식 성능을 평가합니다.
  • "나는 경상도 출신이라서, 사투리를 자주 써요."
    • 목적: 특정 방언이나 억양이 포함된 문장을 통해 음성 인식 엔진이 화자의 억양 변이를 얼마나 잘 처리하는지 평가합니다.

6. 복잡한 문장

  • "오늘은 비가 오고 있어서 우산을 챙겼어요, 그런데 바람이 너무 강해서 우산이 뒤집혔어요."
    • 목적: 문장 구조가 복잡하고 길이가 긴 문장을 통해 엔진이 긴 문맥에서 발생하는 복잡한 구문을 얼마나 정확하게 인식하는지 평가합니다.
  • "내일은 중요한 발표가 있어서 아침 일찍 일어나야 해요, 발표 준비가 다 끝났는지 확인해 주세요."
    • 목적: 복합 문장을 통해 음성 인식 엔진의 문맥 이해 능력을 테스트합니다. 긴 문장과 여러 가지 정보를 포함하는 문장에서의 인식 성능을 평가할 수 있습니다.

7. 의도적인 오타 및 정정 문장

  • "내일 회의는 오전 열 시였지... 아니, 오후 세 시로 변경되었어요."
    • 목적: 사용자가 말을 수정하는 상황을 시뮬레이션하여 엔진이 정정된 발언을 얼마나 정확하게 인식하는지 테스트합니다. 오류 복구 능력을 평가할 수 있습니다.

8. 문맥에 따른 다의어 평가 문장

  • "나는 은행에서 일해, 오늘도 은행에 갔어."
    • 목적: 같은 단어("은행")가 다른 의미로 사용되는 상황에서의 인식 성능을 평가합니다. 문맥에 따른 단어 의미 구분 능력을 테스트하는 데 유용합니다.

테스트

테스트 방법

  1. 데이터 준비
  • 테스트 문장 선정: 다양한 시나리오에 맞는 테스트 문장을 준비합니다. 예를 들어, 일상적인 대화, 숫자와 날짜가 포함된 문장, 전문 용어가 포함된 문장 등을 선택합니다.
  • 참조 텍스트 준비: 각 테스트 문장의 정확한 텍스트(참조 텍스트)를 준비합니다. 이는 음성 인식 엔진이 제대로 인식했는지 비교하기 위한 기준이 됩니다.
  • 음성 파일 생성: 준비된 테스트 문장을 실제 사람이 발화한 음성 파일로 녹음합니다. 다양한 화자, 억양, 속도, 소음 조건을 고려하여 다양한 음성 데이터를 준비합니다.
  1. 음성 인식 엔진 테스트
  • 음성 파일 입력: 준비된 음성 파일을 STT 엔진에 입력합니다. 이 과정은 일반적으로 API 요청을 통해 수행되며, 음성 파일과 함께 API 키를 포함한 POST 요청을 보냅니다.
  • 출력 텍스트 수신: STT 엔진이 음성 파일을 텍스트로 변환하여 반환한 결과(출력 텍스트)를 수신합니다.
  1. WER 계산
  • 비교 작업: STT 엔진이 반환한 출력 텍스트를 참조 텍스트와 비교합니다. 이때 다음 요소를 확인합니다:
    • Substitutions: 잘못 인식된 단어의 수
    • Insertions: 추가된 단어의 수
    • Deletions: 누락된 단어의 수
  • WER 공식 적용: 다음 공식에 따라 WER을 계산합니다: WER=Substitutions+Insertions+DeletionsTotalWordsWER = \frac{Substitutions + Insertions + Deletions}{Total Words}WER=TotalWordsSubstitutions+Insertions+Deletions 여기서 Total Words는 참조 텍스트의 전체 단어 수입니다.

4. 결과 분석

  • WER 분석: 계산된 WER 값을 분석하여 음성 인식 엔진의 성능을 평가합니다. WER 값이 낮을수록 인식 성능이 우수함을 의미합니다.
  • 오류 유형 분석: Substitutions, Insertions, Deletions의 비율을 분석하여 주로 발생하는 오류 유형을 파악하고, 개선이 필요한 부분을 확인합니다.

5. 테스트 반복 및 개선

    • 다양한 시나리오 테스트: 다양한 시나리오에 대해 반복적으로 테스트를 수행하여 엔진의 전반적인 성능을 평가합니다.
    • 피드백 및 개선: 테스트 결과를 바탕으로 음성 인식 엔진을 개선하거나, 최적의 설정을 찾습니다.

음성엔진PoC 업무 관련 검토사항

1. 신규 음성 엔진의 배치 및 인프라 설치

  • KR2 인프라 설치 필요성
  • 검토사항: 신규 STT 엔진을 테스트하기 위해서는 KR2라는 장소에 인프라를 설치해야 합니다. 이 인프라는 신규 엔진이 정상적으로 작동하고 기존 시스템과의 통합 테스트를 수행할 수 있는 환경을 제공합니다.
  • 대체 가능성: 신규 엔진이 [KR2]에 위치될 예정이나, 기존 엔진과의 직접적인 대체는 현재 사용 중인 VSC가 Kakao i 서비스에 종속되어 있어 어렵습니다. 이로 인해 Kakao와의 협의가 필요하며, VSC에서 STT 엔진을 대체하기 위해서는 시스템 수정이 필요합니다.

2. VSC에서 KC에 설치된 신규 음성 엔진 호출 가능성

  • 검토사항: VSC에서 KC에 설치된 신규 음성 엔진을 호출할 수 있는 방법에 대한 검토가 필요합니다. 현재 VSC는 Kakao i 서비스에 통합되어 있으며, 이를 통해 음성 인식 엔진을 호출하고 있습니다.
  • 대안: STT 엔진 호출이 어려운 경우, 음성을 미리 인식하여 텍스트로 변환한 뒤, 이 텍스트를 VSC의 입력으로 사용하는 방법을 고려할 수 있습니다. 이를 통해 기존 VSC 환경에 대한 대대적인 수정 없이도 음성 인식 결과를 활용할 수 있습니다.

3. 신규 STT 엔진의 텍스트 형식 호환성

  • 검토사항: 신규 STT 엔진이 반환하는 텍스트 형식이 Chappie 엔진 및 오픈빌더에서 문제없이 처리될 수 있는지 확인이 필요합니다.
  • 결론: 텍스트 형식만을 사용하므로, 큰 문제가 없을 것으로 예상됩니다. 다만, 구체적인 테스트를 통해 최종 확인이 필요합니다.

4. 오류 처리 및 현재 프로토콜과의 호환성

  • 검토사항: 신규 STT 엔진이 불완전하거나 명확하지 않은 오디오에 대해 어떻게 오류를 처리하는지 확인해야 합니다. 특히, 현재 사용 중인 오류 관리 프로토콜과 일치하는지 검토가 필요합니다.
  • 현재 상황: 무음 데이터의 경우 "no result UEPD"라는 에러가 반환됩니다. 하지만, 불완전하거나 명확하지 않은 오디오에 대한 처리는 명확하지 않으며, 이로 인해 인식된 결과가 잘못된 분류를 초래할 가능성이 있습니다. 이러한 상황을 테스트를 통해 명확히 하고, 필요한 경우 오류 처리 프로토콜을 수정하거나 보완해야 합니다.

5. 뉴톤을 통한 음성 엔진 호출 및 직접 호출 가능성

  • 검토사항: VSC에서 뉴톤 음성 중계서버를 호출하지 않고, 직접 음성 엔진을 호출할 수 있는지에 대한 확인이 필요합니다.
  • 현재 상황: 현재 VSC는 뉴톤 음성 중계서버를 통해 음성 엔진을 호출하고 있으며, 직접 음성 서버를 사용하는 사례는 없습니다. 내용이 잘못 전달된 것으로 보이며, 이 부분에 대한 추가 확인이 필요합니다.

6. 기타 고려사항

  • 저작권 이슈: 신규 STT 엔진에 대한 저작권 관련 문제와 TTS(speed & volume) 기능 추가 작업이 진행 중입니다. 이와 관련된 사항은 최종 PoC 단계에서 함께 검토해야 합니다.
  • 기존 엔진 대체 검토: 새로운 커스텀 엔진을 사용하는 것과 기존 AI Hub를 적용하는 방법 사이에서의 선택도 고려되고 있습니다. 이 부분에 대해서는 각각의 장단점과 비용 효율성을 분석하여 최종 결정을 내려야 합니다.