Name Last Update
frontend Loading commit data...
server Loading commit data...
.gitignore Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
about-polly.md Loading commit data...
docker-compose.yml Loading commit data...
infra.png Loading commit data...
polly-example.html Loading commit data...

Khuwitch

khuwitch는 다국어 번역 지원하며, 이를 음성으로도 들을 수 있도록해주는 twitch bot 입니다.

khuwitch를 이용하면 채널 관리자는 자신의 채널의 외국어 채팅을 한국어로 바로 번역해 볼 수 있고, 필요한 경우 이를 음성파일로 변환하여 재생한 뒤 시청자들에게 송출할 수도 있습니다.

사용되는 API

아키텍쳐

infra.png

사용된 기술 및 동작 방법

khuwitch는 크게 아래의 항목들로 동작한다고 볼 수 있습니다.

  • websocket 을 기반으로 Twtich api를 편리하게 이용할 수 있게해주는 tmi client
  • Papago API 를 통한 번역
  • Socket io 를 이용한 frontend, backend의 통신
  • AWS Polly 를 이용한 TTS(Text To Speech)

위의 기술들을 바탕으로 khuwitch는 아래와 같이 동작합니다.

  1. websocket 을 기반으로 를 통해 메시지를 받아보거나 작성할 수 있습니다.
  2. Papago의 언어감지 API를 이용해 해당 채팅 메시지가 어떤 언어인지 판별합니다.
  3. 채팅 메시지가 외국어인 경우 Papago의 번역 API를 이용해 내용을 번역한 뒤 채팅으로 번역 내용을 전송하고, socket io를 통해 현재 khuwith 서비스에 접속 중인 사용자에게도 번역 내용을 전송합니다.
  4. frontend에서는 수신한 text를 AWS Polly 를 이용해 음성 파일로 변환한 뒤, 접속자의 브라우저에서 재생합니다.

빌드 및 실행 방법

추후 보완 예정

local에서 실행하기

frontend

$ PORT=8000 npm start

backend

$ KHUWITCH_PORT=3000 npm start

docker image 빌드 후 docker-compose로 실행

frontend 빌드

$ docker build -f Dockerfile-frontend -t khuwitch/frontend

backend 빌드

$ docker build -f Dockerfile-backend -t khuwitch/backend

docker-compose로 실행

$ docker-compose -f docker-compose.yml -f docker-compose-dev.yml up

기본적 설정으로 존재하는 docker-compose.yml 에 추가적인 내용을 담은 docker-compose-{{NAME}}.yml 을 전달함으로써 설정을 Override할 수 있습니다.

사용 방법

로그인 화면 추후 추가.png 봇 입장 화면 추후 추가.png

채널관리자는 twitch login을 통해 khuwitch bot을 자신의 Twitch 채널에 입장시킬 수 있습니다.

번역 화면 추가.png

khuwitch bot이 채널에 입장하면 모든 message에 대해 언어감지를 한 뒤 한국어가 아닌 경우는 해당 text를 한국어로 번역하여 누가 어떤 말을 했는지 알려줍니다.

tts 선택화면 추가.png

단순한 번역 챗봇을 넘어 TTS 번역 봇으로 이용하고 싶다면, TTS를 청취하고싶은 채널을 선택할 수 있습니다. 이후 변환된 음성 파일이 자동으로 재생되므로 내 채널로도 해당 음성이 송출되어 시청자들도 들을 수 있게 됩니다.

License

누구나 편리하게 khuwitch를 개발하고 사용할 수 있도록 해당 프로젝트의 License를 MIT License로 선정하였습니다.