-
Notifications
You must be signed in to change notification settings - Fork 1
Home
안녕! 클로바파트라는 음성 기반 발음 게임 프로젝트로 사용자들이 발음과 관련된 다양한 도전을 통해 즐거움을 느끼고, 실시간으로 소통할 수 있도록 도와주는 서비스입니다.
이 프로젝트를 통해 사용자들은 음성 인식과 텍스트 변환 기술을 체험하고, 게임을 통해 발음을 개선하며 소통 능력을 향상시키는 경험을 할 수 있습니다.
사용자들은 직접 방을 개설하고, 다른 사람들을 초대해 실시간으로 소통할 수 있습니다. 닉네임을 지정하여 방에 참여하고, 참가자 목록을 통해 현재 방에 있는 모든 사람을 확인할 수 있습니다.
- 방 개설 및 링크 공유
- 참가자 닉네임 지정 및 실시간 참가자 목록 조회
- 음성 기반의 실시간 통화 지원
게임은 '클로바파트라'로, 음성을 기반으로 한 독특한 발음 게임입니다. 음성을 텍스트와 음정으로 분석하여 도전 성공/실패 여부를 판별합니다. 다양한 게임 로직을 통해 사용자에게 흥미를 더합니다.
-
클로바파트라 게임:
- 서버 소켓을 통해 사용자별 음성 데이터를 수집하고, 이를 텍스트와 음정으로 변환
-
게임 로직:
- 사용자 순서를 랜덤으로 설정하고 발음 도전 게임을 무작위로 제공
- 클레오파트라 및 발음 게임에서 성공/실패 여부를 판단하고 게임 탈락 여부 결정
- 모든 게임이 종료되면 최종 순위를 결정하여 보여줍니다.
flowchart TB
%% ===========================================
%% 클라이언트 그룹 정의
%% ===========================================
subgraph ClientGroup["클라이언트 그룹(Mesh)"]
direction LR
Client1["클라이언트 1"]
Client2["클라이언트 2"]
Client3["클라이언트 3"]
Client4["클라이언트 4"]
%% P2P 연결
Client1 <--> |P2P WebRTC| Client2
Client1 <--> |P2P WebRTC| Client3
Client1 <--> |P2P WebRTC| Client4
Client2 <--> |P2P WebRTC| Client3
Client2 <--> |P2P WebRTC| Client4
Client3 <--> |P2P WebRTC| Client4
end
%% ===========================================
%% 시스템 컴포넌트 정의
%% ===========================================
%% 로드 밸런서
subgraph LoadBalancer["로드 밸런서"]
direction TB
NGINXMain["NGINX"]
end
%% 게임 서버
subgraph GameServer["게임 서버 (NestJS)"]
direction TB
GameLogic["게임 로직"]
WebSocket["WebSocket 핸들러"]
GameState["게임 상태 관리"]
end
%% 시그널링 서버
subgraph SignalingServer["시그널링 서버 (Express)"]
direction TB
SignalingLogic["시그널링 로직"]
WebRTCHandler["WebRTC 핸들러"]
end
%% 음성 처리 서버 클러스터
subgraph VoiceProcessing["음성 처리 서버 (Express) 클러스터"]
direction TB
VoiceServer1["음성 처리 서버 1"]
VoiceServer2["음성 처리 서버 2"]
VoiceServer3["음성 처리 서버 3"]
end
%% 외부 API
ClovaAPI["Clova Speech Recognition API"]
%% 저장소
subgraph Storage["저장소"]
direction TB
Redis[(Redis)]
MySQL[(MySQL)]
end
%% ===========================================
%% 시스템 연결 정의
%% ===========================================
%% 1. 프론트엔드 연결
ClientGroup <--> |HTTPS| NGINXMain
%% 2. 로드 밸런서 연결
NGINXMain <--> |게임 트래픽| GameServer
NGINXMain <--> |시그널링 트래픽| SignalingServer
NGINXMain <--> |음성 트래픽| VoiceProcessing
%% 3. 데이터 저장소 연결
GameServer <--> Redis
GameServer <--> MySQL
SignalingServer <--> Redis
%% 4. 서비스 간 연결
VoiceProcessing --> |음성 데이터 처리 결과| GameServer
GameServer <--> |게임 데이터| ClientGroup
%% 5. 외부 API 연결
VoiceServer1 <--> |음성 인식 요청| ClovaAPI
VoiceServer2 <--> |음성 인식 요청| ClovaAPI
VoiceServer3 <--> |음성 인식 요청| ClovaAPI
김태원 | 정진성 | 박나현 |
---|---|---|
BE | BE | FE |
@dev-taewon-kim | @student079 | @studioOwol |
🛠️ AGT - Automatic Git & Github Tool
📊 WebRTC Mesh ‐ 트래픽 계산
🎢 WebRTC Mesh - 험난한 여정
💬 WebRTC를 알아보자
📮 SSE(Server Sent Events)
📖 SSE Pagination
⏳ Socket 통신에서 비동기 작업 순서 보장 방법
📡 Redis pub/sub를 활용한 SSE 적용기
🏗️ Naver Cloud Platform을 활용한 배포 전략
⚔️🚀 부하 테스트: 단일 인스턴스 VS NKS
🚴♀️ Redis로 게임방 관리 최적화: 효율적인 데이터 처리와 성능 개선
📆 회의록 캘린더
🖤 데일리 스크럼 템플릿
🖤 회고 템플릿
0️⃣ 0주차 멘토링 일지
1️⃣ 1주차 멘토링 일지
2️⃣ 2주차 멘토링 일지
3️⃣ 3주차 멘토링 일지
4️⃣ 4주차 멘토링 일지
0️⃣ 0주차 발표
1️⃣ 1주차 발표
2️⃣ 2주차 발표
3️⃣ 3주차 발표
4️⃣ 4주차 발표
5️⃣ 최종 발표