김수민

audio language

......@@ -61,6 +61,10 @@
<workItem from="1574494473410" duration="2577000" />
<workItem from="1574565997693" duration="30000" />
<workItem from="1574569996051" duration="559000" />
<workItem from="1574579419218" duration="794000" />
<workItem from="1574662422550" duration="816000" />
<workItem from="1574669792266" duration="65000" />
<workItem from="1574670031852" duration="24000" />
</task>
<servers />
</component>
......
......@@ -98,69 +98,68 @@ function handleEvent(event) {
})
})
}
else {
// 번역 기능 & 음성 기능
return new Promise(function(resolve, reject) {
return new Promise(function (resolve, reject) {
//언어 감지 option
var detect_options = {
url : languagedetect_api_url,
form : {'query': event.message.text},
url: languagedetect_api_url,
form: {'query': event.message.text},
headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
};
//papago 언어 감지
request.post(detect_options,function(error,response,body){
request.post(detect_options, function (error, response, body) {
console.log(response.statusCode);
if(!error && response.statusCode == 200){
if (!error && response.statusCode == 200) {
var detect_body = JSON.parse(response.body);
var source = '';
var target = '';
var result = { type: 'text', text:''};
var result = {type: 'text', text: ''};
//언어 감지가 제대로 됐는지 확인
console.log(detect_body.langCode);
if(detect_options.form.query=='음성'){
if (detect_options.form.query == '음성') {
console.log('audio streaming');
if (!error && response.statusCode == 200){
if (!error && response.statusCode == 200) {
console.log(response.statusCode);
for_audio_client.replyAudio(event.replyToken,{
for_audio_client.replyAudio(event.replyToken, {
"originalContentUrl": "https://panguin.ml/speech.m4a",
"duration": 24000
}).then(resolve).catch(reject);
}
}
//번역은 한국어->영어 / 영어->한국어만 지원
else if(detect_body.langCode == 'ko'||detect_body.langCode == 'en'){
source = detect_body.langCode == 'ko' ? 'ko':'en';
target = source == 'ko' ? 'en':'ko';
else if (detect_body.langCode == 'ko' || detect_body.langCode == 'en') {
source = detect_body.langCode == 'ko' ? 'ko' : 'en';
target = source == 'ko' ? 'en' : 'ko';
//papago 번역 option
var options = {
url: translate_api_url,
// 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
form: {'source':source, 'target':target, 'text':event.message.text},
form: {'source': source, 'target': target, 'text': event.message.text},
headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
};
// Naver Post API
request.post(options, function(error, response, body){
request.post(options, function (error, response, body) {
// Translate API Sucess
if(!error && response.statusCode == 200){
if (!error && response.statusCode == 200) {
// JSON
var objBody = JSON.parse(response.body);
result.text = objBody.message.result.translatedText;
//번역된 문자 audio로 저장
if(options.form.target=='ko'){
let audio_options={
if (options.form.target == 'ko') {
var audio_options = {
'Text': result.text,
'OutputFormat': 'mp3',
'VoiceId':'Amy',
"LanguageCode":'ko-KR'
'VoiceId': 'Seoyeon',
"LanguageCode": 'ko-KR'
};
}
else if(options.form.target=='en'){
let audio_options={
} else if (options.form.target == 'en') {
var audio_options = {
'Text': result.text,
'OutputFormat': 'mp3',
'VoiceId':'Amy',
"LanguageCode":'en-US'
'VoiceId': 'Kendra',
"LanguageCode": 'en-US'
};
}
Polly.synthesizeSpeech(audio_options, (err, data) => {
......@@ -169,7 +168,7 @@ function handleEvent(event) {
throw err;
} else if (data) {
if (data.AudioStream instanceof Buffer) {
fs.writeFile("public/speech.m4a", data.AudioStream, function(err) {
fs.writeFile("public/speech.m4a", data.AudioStream, function (err) {
if (err) {
return console.log(err);
}
......@@ -181,14 +180,14 @@ function handleEvent(event) {
// Message 잘 찍히는지 확인
console.log(result.text);
//번역된 문장 보내기
client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
client.replyMessage(event.replyToken, result).then(resolve).catch(reject);
}
});
}
// 메시지의 언어가 영어 또는 한국어가 아닐 경우
else{
else {
result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.';
client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
client.replyMessage(event.replyToken, result).then(resolve).catch(reject);
}
}
......@@ -196,6 +195,7 @@ function handleEvent(event) {
});
});
}
}
app.listen(80, function () {
......