Skip to content

Flask 서버에서 모델 구동 후 이슈 정리 #72

Description

@hanjo8813

FLOW

  • 음성 녹음 후 데이터를 백엔드로 전송 #71 이슈에서 음성데이터를 백엔드로 전송 성공
  • 위의 기능은 버튼 이벤트로 녹음의 시작과 끝을 정함
  • 이제 추가적으로 화자가 말할때 녹음을 시작하고 말이 끝나면 녹음을 중단해야함.
  • 따라서 Chrome STT 의 이벤트를 활용하여 STT 분석이 끝나는 시점에 녹음을 중단하고 다시 시작하도록 구현함
  • 하지만 이렇게 구현하면 발언 대기시간동안 녹음이 계속 진행되므로 묵음 제거가 필요
  • 백엔드에서 녹음된 음성을 받게되면 pydub 라이브러리를 사용해 묵음구간을 제거해준다.
myaudio = AudioSegment.from_wav(fs)
dBFS=myaudio.dBFS
silence_section = silence.detect_silence(myaudio, min_silence_len=1000, silence_thresh=dBFS-16)
silence_section = [((start/1000),(stop/1000)) for start,stop in silence_section]

감정 분석

  • 학습된 모델 (pkl) 파일을 서버에 올려 load.
  • 모델(pkl)은 4초 단위로 학습되었으므로, 묵음 제거 음성을 4초단위로 slice함
  • 각 음성 slice를 전처리해준다.
# 음성 전처리 실시
mfcc = librosa.feature.mfcc(sliced_signal, sr, n_fft=400, hop_length=160, n_mfcc=36)
mfcc = mfcc.reshape(-1)
mfcc = scaler_from_joblib.transform([mfcc])
  • 전처리된 음성을 모델에 넣고, 감정 결과 반환
    image

정확도 이슈

  • 현재 음성 전처리가 부족한 부분이 있어 happy 와 sad 의 두 감정이 가장 많이 나옴
  • 나머지 감정은 잘 인식하지 못하고 있으므로 정확도를 높여야함

묵음 이슈

  • 모든 묵음을 제거 vs 맨 앞 가장 큰 묵음 제거
  • 모든 묵음 제거 : 음성이 매우 짧아짐. 대신 정확도 향상 기대 가능
  • 맨 앞 가장 큰 묵음 제거 : 음성 길이를 보존 가능 + 자연스러운 음성 추출 가능
  • but 묵음 중간에 발언이 아닌 잡음이 들어간다면 그 뒤 묵음은 제거가 안됨. => 묵음 부분 모두 sad 반환됨

감정 선택 이슈

  • 감정 결과 리스트에서 빈도수 체크하는데 빈도수가 동일할때의 감정 우선순위 지정 필요

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    AI인공지능 관련Backend백엔드 관련Test테스트 할때~

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions