Meecord
감정분석을 토대로한 비대면 소개팅 서비스입니다.
‘Meecord’는 비대면 1:1로 진행되는 미팅에서 표정인식과 음성인식을 통해 감정을 분석하고 실시간 TIP을 제공합니다.
🔗 Github
🟢 구조도
📌 주요 기능
1. 방 생성, 방 참가
- 미팅룸을 생성하거나 생성된 미팅룸에 입장할 수 있습니다.
- 동일한 코드의 미팅룸에 두 명이 입장 시 자동으로 STT, 감정분석 등이 실행됩니다.
2. 대화록 작성
- speach recognition API를 통해 상대방과의 대화 내용이 우측 하단 대화록에 업데이트됩니다.
- 작성된 대화 내용은 실시간으로 데이터베이스에 저장이 되며, 이는 대화 종료 후 대화목록에 가서 해당 대화를 선택하면 다시 확인할 수 있습니다.
- 동일한 코드의 미팅룸에 두 명이 입장 시 자동으로 STT, 감정분석 등이 실행됩니다.
3. 감정 분석
- 음성 감정분석 모델과 표정 감정분석 API를 통해 상대방의 감정을 분석합니다.
- 상대방의 발언 시에는 음성인식 API를, 발언 중이 아니라면 표정 감정분석 API를 이용합니다.
- 분석된 데이터를 4가지 감정으로 분류하여 사용자의 화면에 띄우고, TIP에 사용하며, 데이터베이스에 저장합니다.
- 소개팅 기록에서는 데이터베이스에서 감정 정보를 불러와 해당 소개팅에서의 감정에 대한 분포도 및 어떤 키워드에 어떤 감정이 드러났는지를 알 수 있습니다.
4. TIP 제공
- 어떤 말을 해야할 지 모르겠을 때 필요한 무작위 질문 TIP, 상대방의 급격한 감정 변화나 변화지 않는 감정 상태에 따른 TIP, 상대방의 현재 대화 및 과거 대화 기록을 분석한 TIP을 제공합니다.
- TIP들은 실시간의 상대방의 감정 및 키워드 뿐만 아니라 상대방의 이전의 소개팅에서 나타났던 감정과 키워드를 기반으로 합니다.
5. 대화목록
- 해당 소개팅 방에서의 대화 내용 및 감정의 분포, 그리고 4가지 감정별 최빈 키워드를 제공합니다.
- 이전 대화 중에 실시간으로 저장된 감정 및 키워드를 사용해 분석 결과를 제공합니다.
📆 제작 과정
✏️ 담당 분야
- 음성 감정분석 모델 개발
- API 서버 구축
- 데이터베이스 설계 및 구축
- 키워드 응용 관련 기능적 함수 개발
📚 이론 및 기술
음성 감정인식 모델
수학, 기초과학
- Fourier Transform (FFT): MFCC를 만들기 위한 음성 데이터 분해식
- Standardization: MFCC가 적용된 음성 데이터 값 범위 축소에 사용된 스케일링 방식
- Cross Entropy: 머신러닝 손실함수
- Adam: 머신러닝 최적화 함수
- ReLU: 활성화 함수
정보기술
- MFCC: 음성 데이터 특징 추출 및 전처리
- CNN: Conv2d, Batch, Norm2d, ReLU, MaxPool2d, Dropout, Linear등의 과정을 거친 합성곱 신경망
시험 결과
음성 감정인식 테스트 결과
음성 데이터 200개 중 148개가 실제 감정으로 일치
📸 스크린샷
1. 메인 화면
2. 미팅 화면
3. 결과 화면
🛠️ 개발환경
- 기술 스택: Firebase, Python, PyTorch, WebRTC
- 지원 OS: Chrome
참고 문헌
- “CNN – LSTM 모델 기반 음성 감정인식”
- [“음성 신호를 이용한 감정인식기술의 연구동향분석”] (https://manuscriptlink-society-file.s3-ap-northeast-1.amazonaws.com/sma/conference/sma2020fall/presentation/51.pdf)
📋 기타
- 화상인식 API: face-api.js
- 개체명인식 API: ETRI NER