CS492-FE-Dev-Team-Project / LiveClass

블렌디드 러닝을 위한 실시간 · 비실시간 강의 지원 서비스
http://ec2-3-38-83-97.ap-northeast-2.compute.amazonaws.com/
MIT License
1 stars 2 forks source link

[Backend] Papago API 사용 #40

Open hy2850 opened 2 years ago

hy2850 commented 2 years ago

https://developers.naver.com/docs/papago/papago-nmt-overview.md

hy2850 commented 2 years ago

파파고 API를 호출하기 위해선, 원본 언어(source language)와 목적 언어(target language)를 지정해주어야 합니다. 링크

정인님께서 만들어주신 member class에 language를 '목적 언어'로 보고 채팅 번역 기능 구현하겠습니다.

// server/src/data/member.ts
class Member {
  ...
  constructor(member: ClassMember, language: Language = Language.KO) {...} // 바뀌는 부분: EN->KO
}

반대로, 클라이언트 LanguageContext 언어를 source lang으로, Member class 언어를 target lang으로 봐도 됩니다. 이에 대해 다른 분들의 의견을 듣고싶습니다.

jirheee commented 2 years ago

음 언어 감지 api를 사용해서 source language를 판단하는게 더 적절하지 않을까요?

jirheee commented 2 years ago

그리고 target language는 context에서 설정된 언어가 적절할 것 같습니다. 일반적으로 유저가 설정한 언어가 자신이 보고싶은 언어라고 보는게 맞을 것 같아요!

hy2850 commented 2 years ago

음 언어 감지 api를 사용해서 source language를 판단하는게 더 적절하지 않을까요?

그것도 가능합니다. 다만 아래와 같은 문제점이 있을거라고 생각합니다.

  1. 시간 - 매 채팅마다 파파고 번역 API 뿐만 아니라 언어감지 API까지, API 2번 호출
  2. 감지 퀄리티 - 영어와 한글이 섞이는 경우?
jirheee commented 2 years ago

사실 두번의 api 호출이 bottleneck이 될 것 같지는 않습니다..! 걱정되시면 시간을 측정해보시는 것도 괜찮을 것 같아요!

hy2850 commented 2 years ago

요약 : Live chat 기능인 'OnChatTextMessage' 이벤트에 번역 기능을 합쳐보려고 했는데, 힘들 것 같습니다. 채팅 기능과 번역 기능을 분리해야 할 것 같네요

현재 Live chatting의 작동 방식은 아래와 같습니다. 한 사용자가 채팅을 치면 'OnChatTextMessage' 이벤트를 발생시켜, 서버 Socket이 같은 room에 있는 다른 사용자들에게 동일한 이벤트로 메시지를 전달합니다.

문제는, 이러면 다른 사용자들에게 가는 메시지의 번역이 힘들어집니다. (다른 사용자의 LanguageContext - target lang 정보를 모르니까)

Screenshot_20211129-110758_Samsung Notes

그래서 다른 사용자가 메시지를 받으면, 'TranslateMessage' 이벤트를 통해 서버로 메시지를 보내서 번역하는 과정을 거쳐야 할 것 같습니다.

Screenshot_20211129-110804_Samsung Notes

사실 Live chat 뿐만 아니라, discussion 내용의 번역을 위해서라면 Translate 기능을 따로 만드는게 바람직해보입니다.