콘텐츠로 이동

음성 인식 후처리(ASR)

음성 인식 후처리(ASR post-processing) 적용

음성 인식(ASR) 결과는 띄어쓰기가 거의 없거나 구어체로 흐트러진 텍스트입니다. 이 상태로는 검색·분석·자막 표시에 쓰기 어렵습니다. 바른은 구어 말뭉치로 학습되어 구어 적응력이 좋고, 띄어쓰기 보정으로 ASR 출력을 읽기 좋은 문장으로 다듬습니다.

문제 상황

  • ASR 출력은 오늘날씨가어떻게되나요처럼 띄어쓰기가 빠져 있습니다.
  • 구어 특유의 표현·말줄임이 일반 분석기에서 오분석됩니다.
  • 띄어쓰기가 없으면 형태소 분석·검색 모두 어긋납니다.

바른을 어떻게 적용하나

형태소 분석의 띄어쓰기 보정(auto_spacing) 옵션이 어절 경계를 자동으로 잡아줍니다. 바른은 모두의 말뭉치 등 구어 데이터를 학습에 포함해 구어 문장에도 강합니다(자세한 비교는 구어체 적응력 참고). 보정된 문장(refined)을 후속 처리에 사용하세요.

graph TD
  ASR[음성 인식 출력] --> SP[바른 띄어쓰기 보정 auto_spacing];
  SP --> REFINED[보정 문장 refined];
  REFINED --> TAG[형태소 분석];
  TAG --> USE[자막·검색·분석];
from bareunpy import Tagger

tagger = Tagger("koba-XXXX-...", "localhost")

# 띄어쓰기가 빠진 ASR 출력
asr = "오늘날씨가어떻게되나요"
res = tagger.tags([asr])

# 보정된 문장과 형태소
print("형태소:", res.morphs())
형태소: ['오늘', '날씨', '가', '어떻', '게', '되', '나요']

붙어 있던 입력이 의미 단위로 분리되어 분석됩니다.

결과와 이점

항목 원시 ASR 출력 바른 후처리
띄어쓰기 없음 auto_spacing 보정
구어 표현 오분석 잦음 구어 말뭉치 학습으로 강함
활용 결과 사용 어려움 검색·자막에 바로 사용

어절 위치가 중요하다면

자막 싱크처럼 위치 정합성이 중요하면, 입력 순서를 보존하는 AnalyzeSyntaxList 계열을 쓰세요. 각 형태소의 위치는 TextSpan의 오프셋으로 확인합니다.

자주 묻는 질문

Q. 띄어쓰기가 전혀 없는 긴 문장도 보정되나요?

네. 분절은 80자 단위로 나누어 처리하므로 긴 입력도 보정됩니다. 다만 너무 긴 한 덩어리는 문장 단위로 미리 나눠 넣으면 결과가 더 안정적입니다.

Q. 맞춤법까지 고쳐야 하면요?

띄어쓰기뿐 아니라 오탈자·표준어까지 고쳐야 하면 맞춤법 검사 API(CorrectError)를 함께 쓰세요. ASR 특유의 동음이의 오류도 교정 단계에서 일부 보정됩니다.

Q. 구어체 말줄임도 잘 분석되나요?

바른은 구어 말뭉치를 학습에 포함해 구어 문장에 비교적 강합니다. 방언·신조어가 많으면 신조어·고유명사 등록으로 사용자 사전을 보강하세요.

Q. STT 결과를 형태소 분석·검색에 바로 쓸 수 있나요?

원시 STT 출력은 띄어쓰기가 거의 없어 그대로는 분석·검색에 쓰기 어렵습니다. 바른의 띄어쓰기 보정 (auto_spacing)으로 어절 경계를 잡아 refined 문장을 만든 뒤 형태소 분석에 넘기면, 검색·자막·분석에 바로 활용할 수 있습니다. 위치 정합성이 중요하면 AnalyzeSyntaxList 계열로 오프셋을 확인하세요.

관련 문서

도움이 되었나요?