Jinsu Park

Update: README.md - 제시되었던 README.md tempalte에 맞춰 초안 작성

## Polly
# Khuwitch
> Polly는 text를 음성으로 변환해주는 AWS의 한 서비스이다.
khuwitch는 다국어 번역 지원하며, 이를 음성으로도 들을 수 있도록해주는 twitch bot 입니다.
### 권한 (Cognito service)
khuwitch를 이용하면 채널 관리자는 자신의 채널의 외국어 채팅을 한국어로 바로 번역해 볼 수 있고, 필요한 경우 이를 음성파일로 변환하여 재생한 뒤 시청자들에게 송출할 수도 있습니다.
모든 AWS는 이용하려면 그를 위한 자격 증명이 필요하다.
브라우저에서 이용자가 바로 AWS 서비스를 이용하려면 AWS 서비스를 이용하기위한 자격증명이 필요하지만, IAM User의 Credential을
웹페이지 코드에 공개하는 것은 바람직하지않다.
`Cognito` 는 이런 경우에 웹페이지에서의 인증, 인가 상태와 AWS 서비스를 위한 인증, 인가를 연동할 수 있도록 해주는 AWS의 한 서비스이다.
## 아키텍쳐
우리는 인증되지않은 사용자도 Polly를 통해 TTS(text to speech) 기능을 이용할 수 있도록 Cognito의 자격 증명 풀을 생성했고, 그들은 Polly full access 권한을 갖는다.
> 추후 추가 예정
### 사용 방법
## 사용되는 API
```html
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.796.0.min.js"></script>
* [Papago 언어 감지 API](https://developers.naver.com/docs/papago/papago-detectlangs-overview.md)
* [Papago 번역 API](https://developers.naver.com/docs/papago/papago-nmt-overview.md)
* [Twitch Authentication API](https://dev.twitch.tv/docs/authentication)
* [Twitch Chatbot API](https://dev.twitch.tv/docs/irc)
## 빌드 및 실행 방법
> 추후 보완 예정
### local에서 실행하기
**frontend**
```bash
$ KHUWITCH_PORT=8000 npm start
```
**backend**
```bash
$ KHUWITCH_PORT=3000 npm start
```
### docker image 빌드 후 docker-compose로 실행
**frontend 빌드**
```bash
$ docker build -f Dockerfile-frontend -t khuwitch/frontend
```
**backend 빌드**
```bash
$ docker build -f Dockerfile-backend -t khuwitch/backend
```
브라우저에서 javascript AWS SDK를 설치한다(불러온다).
```html
<script>
// Polly를 사용하기 위한 자격증명을 설정한다.
AWS.config.region = 'ap-northeast-2';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({IdentityPoolId: 'ap-northeast-2:03db97c9-a857-45f3-be6e-3cf84d6f619b'});
const polly = new AWS.Polly({
signatureVersion: 'v4',
region: 'ap-northeast-2',
});
let params = {
'Text': '반가워 친구야~',
'OutputFormat': 'mp3',
'VoiceId': 'Seoyeon'
};
let tts = new AWS.Polly.Presigner(params, polly)
// tts로 변환한 음성 파일을 얻는다.
tts.getSynthesizeSpeechUrl(params, function(error, url) {
if (error) {
} else {
setTimeout(()=>{
console.log("실행")
let audio = new Audio(url)
audio.play()
.then(delete audio);
}, 3000)
}
})
</script>
**docker-compose로 실행**
```bash
$ 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로 선정하였습니다.
......
## Polly
> Polly는 text를 음성으로 변환해주는 AWS의 한 서비스이다.
### 권한 (Cognito service)
모든 AWS는 이용하려면 그를 위한 자격 증명이 필요하다.
브라우저에서 이용자가 바로 AWS 서비스를 이용하려면 AWS 서비스를 이용하기위한 자격증명이 필요하지만, IAM User의 Credential을
웹페이지 코드에 공개하는 것은 바람직하지않다.
`Cognito` 는 이런 경우에 웹페이지에서의 인증, 인가 상태와 AWS 서비스를 위한 인증, 인가를 연동할 수 있도록 해주는 AWS의 한 서비스이다.
우리는 인증되지않은 사용자도 Polly를 통해 TTS(text to speech) 기능을 이용할 수 있도록 Cognito의 자격 증명 풀을 생성했고, 그들은 Polly full access 권한을 갖는다.
### 사용 방법
```html
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.796.0.min.js"></script>
```
브라우저에서 javascript AWS SDK를 설치한다(불러온다).
```html
<script>
// Polly를 사용하기 위한 자격증명을 설정한다.
AWS.config.region = 'ap-northeast-2';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({IdentityPoolId: 'ap-northeast-2:03db97c9-a857-45f3-be6e-3cf84d6f619b'});
const polly = new AWS.Polly({
signatureVersion: 'v4',
region: 'ap-northeast-2',
});
let params = {
'Text': '반가워 친구야~',
'OutputFormat': 'mp3',
'VoiceId': 'Seoyeon'
};
let tts = new AWS.Polly.Presigner(params, polly)
// tts로 변환한 음성 파일을 얻는다.
tts.getSynthesizeSpeechUrl(params, function(error, url) {
if (error) {
} else {
setTimeout(()=>{
console.log("실행")
let audio = new Audio(url)
audio.play()
.then(delete audio);
}, 3000)
}
})
</script>
```
\ No newline at end of file