중국어 성조를 교정하기 위해 9M 파라미터로 훈련된 모델을 만들었어요

1 week ago 6

  • 중국어 발음과 성조 연습을 돕기 위해 약 300시간의 음성 데이터로 훈련된 9M 파라미터 CTC 기반 음성 모델을 직접 만들어 봄
  • Conformer 인코더 구조를 사용해 지역적 음성 특징과 전역적 문맥을 모두 포착하며, Pinyin+성조 단위 토큰화로 발음 오류를 명확히 구분
  • CTC 손실을 통해 사용자가 실제로 발음한 내용을 프레임 단위로 평가하고, Viterbi 알고리듬으로 시간 정렬을 수행
  • 모델 크기를 75M→9M으로 줄여도 정확도 손실이 거의 없었으며, INT8 양자화 후 약 11MB로 웹 브라우저에서도 즉시 실행 가능
  • 브라우저 기반 데모는 온디바이스 발음 교정 시스템의 가능성을 보여주며, 데이터 품질 개선이 향후 성능 향상의 핵심임

발음 평가 모델 개요

  • 중국어 발음 학습의 어려움을 해결하기 위해 발음을 채점하는 소형 음성 모델을 직접 훈련
    • 약 300시간의 전사된 음성 데이터(AISHELL-1, Primewords)를 사용
    • 브라우저에서 직접 실행 가능한 형태로 제공
  • 기존의 피치 시각화 방식은 잡음, 발화 차이 등으로 불안정했으며, 데이터 기반 접근이 더 효과적임을 확인
  • 목표는 상용 API 없이 온디바이스 Computer-Assisted Pronunciation Training (CAPT) 시스템 구현

모델 구조와 학습 방식

  • Conformer 인코더 + CTC 손실 구조를 채택
    • CNN이 짧은 시간대의 음향 특징(예: zh vs z)을 포착
    • Transformer가 문맥적 성조 패턴(예: tone sandhi)을 처리
  • CTC 방식은 프레임별 확률 분포를 출력해 실제 발음된 음소를 직접 평가
    • `` 토큰을 활용해 반복과 공백을 정렬
    • 자동 보정 없이 실제 발음된 내용을 그대로 반영

토큰화 및 정렬

  • Pinyin+성조 조합을 하나의 토큰으로 정의
    • 예: zhong1과 zhong4는 서로 다른 토큰
    • 중성조는 tone 5(ma5)로 통일
    • 총 1,254개 토큰 + , 구성
  • Viterbi 알고리듬으로 음성 프레임과 토큰 간 최적 경로를 계산
    • 예: “Nǐ hǎo” 발음 시 ni3와 hao3 구간을 구분

모델 경량화 및 성능

  • 초기 75M 파라미터 모델에서 9M까지 축소
    • 75M: TER 4.83%, Tone Accuracy 98.47%
    • 9M: TER 5.27%, Tone Accuracy 98.29%
    • 정확도 손실이 미미해 데이터 의존적(data-bound) 과제임을 시사
  • FP32 모델(37MB)을 INT8 양자화로 11MB까지 축소
    • onnxruntime-web을 통해 브라우저에서 즉시 로드 가능

정렬 오류와 수정

  • 무음 구간이 발음 평가를 왜곡하는 문제 발생
    • 예: “我喜欢…” 발음 전 1초 정적이 wo3로 잘못 정렬되어 0점 처리
  • 해결책: 무음 프레임을 점수 계산에서 제외
    • `` 확률이 0.7 이상인 프레임을 필터링
    • 수정 후 첫 음절 신뢰도 점수가 0.0 → 0.99로 개선

결과 및 한계

  • 베타 테스트 중 발음 교정 효과를 체감
    • 모델은 매우 엄격하게 채점
  • 원어민과 아동 음성은 정확도 저하
    • AISHELL 데이터가 주로 낭독체 음성이라 속도·억양 차이 존재
    • 향후 Common Voice 등 대화체 데이터 추가가 필요
  • 웹 데모는 약 13MB로, 대부분의 웹사이트보다 가벼운 크기에서 완전한 발음 교정 기능 제공

Read Entire Article