본문 바로가기
TIL _Today I Learned/2024.11

[DAY 80] 중간 프로젝트_ 영어 발음 채점 서비스 구현

by gamdong2 2024. 11. 12.
[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.11.12

📕 프로젝트 작업 내역

  • 음성 변환 모델 탐색 & 품질 개선 방안 검토
  • 음성 유사도 채점 모델 선정
  • 캐릭터 외주 진행

 

📗 회의록

  • 회의 일자: 2024년 11월 12일
  • 회의 주제: 음성 변환 모델 탐색 & 품질 개선 방안 검토, 음성 유사도 채점 모델 선정, 캐릭터 외주 진행
  • 참석자: OOO, OOO, OOO

 

1. 주요 논의 사항

1) 텍스트 → 음성 변환 모델

① 텍스트 -> 음성 변환 모델 탐색 및 성능 테스트

  • TTS 모델 중 MOS 점수가 5점에 가까운 모델(TTS(VITS)논문.pdf)들을 선정
  • 선정된 모델:
    • FastSpeech 2 + HiFiGAN
    • Glow-TTS + HiFiGAN
    • Grad-TTS +HiFiGAN
    • VITS
  • 성능 테스트 결과
    • FastSpeech 2 + HiFiGAN 가 비교적 좋은 성능을 보였으나, 만족스럽지 않음
  • 결론
    • 내일 추가 모델 탐색 예정

② 음성 변환 모델 추가 학습 진행 여부 결정

  • 사전 학습된 음성 변환 모델에 추가 학습을 해도 MOS 점수가 약 0.2점 증가하는 등 효과가 미미함을 확인(TTS 추가학습 논문.pdf)
  • 결론
    • 추가 학습을 진행하지 않기로 결정
    • 대신 생성된 음성 파일의 배경 소음, 속도 등은 필터링을 통해 개선하기로 결정

③ 음성 변환 모델 필터링

  • FastSpeech 2 + HiFiGAN 으로 생성된 음성에 대해 필터링 진행
  • 음성 파일의 속도를 느리게 설정(주 사용자가 초등학생이기 때문)하고 배경 소음을 제거했으나, 발음이 뭉개지고 기계음이 여전히 들림
  • 결론
    • 필터링 테스트 코드 보완 필요

 

2) 캐릭터 레퍼런스 취합 및 외주 진행

  • 캐릭터 레퍼런스 자료를 취합하여 전달 완료

 

3) 음성 유사도 채점 모델

① 음성 유사도 채점 방식 구체화

  • 음성 유사도 채점 항목: 피치, 포먼트, MFCC, 타이밍
    • 피치: 음성의 높낮이(억양, 리듬) 평가. 감정 표현 및 강조에 중요
    • 포먼트: 모음 발음의 정확도 평가. 각 모음은 고유한 포먼트 주파수 패턴을 가짐
    • MFCC: 발음의 명확성 및 구별성 평가 (청각적 유사성 측정)
    • 타이밍: 발화 속도 평가
  • 유사도 평가 방식: 코사인 유사도 vs 유클리드 거리
    • 코사인 유사도: 두 벡터 간의 방향성(패턴의 유사성)을 평가. 크기보다 형태(발음 패턴의 유사성)를 평가할 때 유리
    • 결론
      • 코사인 유사도가 발음 비교에 적합하다고 판단
      • 특히 피치, 포먼트, MFCC는 주파수나 스펙트럼 패턴을 다루므로 코사인 유사도 사용을 결정
  • 음성 유사도 채점 항목 및 점수 분배 시안 결정

 

② 음성 유사도 채점 툴킷 선정 및 출력값 예상

  • 사용 툴킷
    • Kaldi: 고성능 음성 인식 툴킷으로, 음성 피처 추출과 유사도 분석에 사용됨. 필요한 음향 모델과 피처를 추출하여 음성 간 유사도 평가에 기여 *리눅스 환경에서 실행됨
    • Montreal Forced Aligner (MFA): 음성과 텍스트의 정렬을 자동으로 수행하여 정확한 음소 구간을 제공함. 음소별로 피치, 포먼트 등 발음 특징을 분석하는 데 필수적
    • Librosa: Python 기반의 오디오 분석 라이브러리로, MFCC 추출 및 기본 음향 분석에 사용됨. 다양한 오디오 피처를 쉽게 추출할 수 있어 음성 유사도 평가에 적합함
    • Pydub: 오디오 파일의 시간 조정 및 소음 제거를 지원하는 라이브러리로, 음성 전처리에 사용됨. 음성 파일의 발화 속도 및 배경 소음 처리를 통해 평가의 신뢰도를 높임
    • SciPy: 신호 처리와 유사도 계산을 위한 Python 라이브러리. 음성 피처 벡터 간의 유사도(코사인 유사도 등) 계산에 활용됨
    • PyKaldi: Kaldi를 Python에서 사용할 수 있게 한 라이브러리로, Kaldi의 기능을 Python에서 직접 제어하여 피처 추출 및 분석을 수행함
  • 예상 출력값
"This is a sample sentence for pronunciation evaluation"

단어 'This' (구간 1) 비교:
  음소 'TH' (단어 'This' 내 음소 1) 비교:
    피치 유사도: 0.85
    포먼트 유사도: 0.88
    MFCC 유사도: 0.76
    타이밍 차이: -0.02 초
  음소 'IH' (단어 'This' 내 음소 2) 비교:
    피치 유사도: 0.90
    포먼트 유사도: 0.83
    MFCC 유사도: 0.81
    타이밍 차이: 0.01 초
    
단어 'is' (구간 2) 비교:
  음소 'IH' (단어 'is' 내 음소 1) 비교:
    피치 유사도: 0.82
    포먼트 유사도: 0.85
    MFCC 유사도: 0.79
    타이밍 차이: 0.03 초

 

2. 다음 과제

  • 음성 데이터 API 성능 문제 해결 방안 확정
  • TTS 모델 성능 최적화(추가 학습 진행)
  • UX/UI 캐릭터 설정 사항 전달
  • HuBERT 및 PTAAT 모델 비교 테스트 진행
  • 서비스 차별화 전략 및 가치 구체화

 

 

📙 내일 일정

  • 중간 프로젝트 기획