김수민

audio language

...@@ -61,6 +61,10 @@ ...@@ -61,6 +61,10 @@
61 <workItem from="1574494473410" duration="2577000" /> 61 <workItem from="1574494473410" duration="2577000" />
62 <workItem from="1574565997693" duration="30000" /> 62 <workItem from="1574565997693" duration="30000" />
63 <workItem from="1574569996051" duration="559000" /> 63 <workItem from="1574569996051" duration="559000" />
64 + <workItem from="1574579419218" duration="794000" />
65 + <workItem from="1574662422550" duration="816000" />
66 + <workItem from="1574669792266" duration="65000" />
67 + <workItem from="1574670031852" duration="24000" />
64 </task> 68 </task>
65 <servers /> 69 <servers />
66 </component> 70 </component>
......
...@@ -98,69 +98,68 @@ function handleEvent(event) { ...@@ -98,69 +98,68 @@ function handleEvent(event) {
98 }) 98 })
99 }) 99 })
100 } 100 }
101 - 101 + else {
102 // 번역 기능 & 음성 기능 102 // 번역 기능 & 음성 기능
103 - return new Promise(function(resolve, reject) { 103 + return new Promise(function (resolve, reject) {
104 //언어 감지 option 104 //언어 감지 option
105 var detect_options = { 105 var detect_options = {
106 - url : languagedetect_api_url, 106 + url: languagedetect_api_url,
107 - form : {'query': event.message.text}, 107 + form: {'query': event.message.text},
108 headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} 108 headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
109 }; 109 };
110 //papago 언어 감지 110 //papago 언어 감지
111 - request.post(detect_options,function(error,response,body){ 111 + request.post(detect_options, function (error, response, body) {
112 console.log(response.statusCode); 112 console.log(response.statusCode);
113 - if(!error && response.statusCode == 200){ 113 + if (!error && response.statusCode == 200) {
114 var detect_body = JSON.parse(response.body); 114 var detect_body = JSON.parse(response.body);
115 var source = ''; 115 var source = '';
116 var target = ''; 116 var target = '';
117 - var result = { type: 'text', text:''}; 117 + var result = {type: 'text', text: ''};
118 //언어 감지가 제대로 됐는지 확인 118 //언어 감지가 제대로 됐는지 확인
119 console.log(detect_body.langCode); 119 console.log(detect_body.langCode);
120 - if(detect_options.form.query=='음성'){ 120 + if (detect_options.form.query == '음성') {
121 console.log('audio streaming'); 121 console.log('audio streaming');
122 - if (!error && response.statusCode == 200){ 122 + if (!error && response.statusCode == 200) {
123 console.log(response.statusCode); 123 console.log(response.statusCode);
124 - for_audio_client.replyAudio(event.replyToken,{ 124 + for_audio_client.replyAudio(event.replyToken, {
125 "originalContentUrl": "https://panguin.ml/speech.m4a", 125 "originalContentUrl": "https://panguin.ml/speech.m4a",
126 "duration": 24000 126 "duration": 24000
127 }).then(resolve).catch(reject); 127 }).then(resolve).catch(reject);
128 } 128 }
129 } 129 }
130 //번역은 한국어->영어 / 영어->한국어만 지원 130 //번역은 한국어->영어 / 영어->한국어만 지원
131 - else if(detect_body.langCode == 'ko'||detect_body.langCode == 'en'){ 131 + else if (detect_body.langCode == 'ko' || detect_body.langCode == 'en') {
132 - source = detect_body.langCode == 'ko' ? 'ko':'en'; 132 + source = detect_body.langCode == 'ko' ? 'ko' : 'en';
133 - target = source == 'ko' ? 'en':'ko'; 133 + target = source == 'ko' ? 'en' : 'ko';
134 //papago 번역 option 134 //papago 번역 option
135 var options = { 135 var options = {
136 url: translate_api_url, 136 url: translate_api_url,
137 // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) 137 // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
138 - form: {'source':source, 'target':target, 'text':event.message.text}, 138 + form: {'source': source, 'target': target, 'text': event.message.text},
139 headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} 139 headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
140 }; 140 };
141 141
142 // Naver Post API 142 // Naver Post API
143 - request.post(options, function(error, response, body){ 143 + request.post(options, function (error, response, body) {
144 // Translate API Sucess 144 // Translate API Sucess
145 - if(!error && response.statusCode == 200){ 145 + if (!error && response.statusCode == 200) {
146 // JSON 146 // JSON
147 var objBody = JSON.parse(response.body); 147 var objBody = JSON.parse(response.body);
148 result.text = objBody.message.result.translatedText; 148 result.text = objBody.message.result.translatedText;
149 //번역된 문자 audio로 저장 149 //번역된 문자 audio로 저장
150 - if(options.form.target=='ko'){ 150 + if (options.form.target == 'ko') {
151 - let audio_options={ 151 + var audio_options = {
152 'Text': result.text, 152 'Text': result.text,
153 'OutputFormat': 'mp3', 153 'OutputFormat': 'mp3',
154 - 'VoiceId':'Amy', 154 + 'VoiceId': 'Seoyeon',
155 - "LanguageCode":'ko-KR' 155 + "LanguageCode": 'ko-KR'
156 }; 156 };
157 - } 157 + } else if (options.form.target == 'en') {
158 - else if(options.form.target=='en'){ 158 + var audio_options = {
159 - let audio_options={
160 'Text': result.text, 159 'Text': result.text,
161 'OutputFormat': 'mp3', 160 'OutputFormat': 'mp3',
162 - 'VoiceId':'Amy', 161 + 'VoiceId': 'Kendra',
163 - "LanguageCode":'en-US' 162 + "LanguageCode": 'en-US'
164 }; 163 };
165 } 164 }
166 Polly.synthesizeSpeech(audio_options, (err, data) => { 165 Polly.synthesizeSpeech(audio_options, (err, data) => {
...@@ -169,7 +168,7 @@ function handleEvent(event) { ...@@ -169,7 +168,7 @@ function handleEvent(event) {
169 throw err; 168 throw err;
170 } else if (data) { 169 } else if (data) {
171 if (data.AudioStream instanceof Buffer) { 170 if (data.AudioStream instanceof Buffer) {
172 - fs.writeFile("public/speech.m4a", data.AudioStream, function(err) { 171 + fs.writeFile("public/speech.m4a", data.AudioStream, function (err) {
173 if (err) { 172 if (err) {
174 return console.log(err); 173 return console.log(err);
175 } 174 }
...@@ -181,14 +180,14 @@ function handleEvent(event) { ...@@ -181,14 +180,14 @@ function handleEvent(event) {
181 // Message 잘 찍히는지 확인 180 // Message 잘 찍히는지 확인
182 console.log(result.text); 181 console.log(result.text);
183 //번역된 문장 보내기 182 //번역된 문장 보내기
184 - client.replyMessage(event.replyToken,result).then(resolve).catch(reject); 183 + client.replyMessage(event.replyToken, result).then(resolve).catch(reject);
185 } 184 }
186 }); 185 });
187 } 186 }
188 // 메시지의 언어가 영어 또는 한국어가 아닐 경우 187 // 메시지의 언어가 영어 또는 한국어가 아닐 경우
189 - else{ 188 + else {
190 result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.'; 189 result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.';
191 - client.replyMessage(event.replyToken,result).then(resolve).catch(reject); 190 + client.replyMessage(event.replyToken, result).then(resolve).catch(reject);
192 } 191 }
193 192
194 } 193 }
...@@ -196,6 +195,7 @@ function handleEvent(event) { ...@@ -196,6 +195,7 @@ function handleEvent(event) {
196 }); 195 });
197 196
198 }); 197 });
198 + }
199 } 199 }
200 200
201 app.listen(80, function () { 201 app.listen(80, function () {
......