3.4.0

음성 인식 후처리(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. 띄어쓰기가 전혀 없는 긴 문장도 보정되나요?

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

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

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

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

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

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

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

관련 문서

음성 인식 후처리(ASR) | 바른 도움말