음성 번역 기능을 넣어 보자 1. 녹음하기
번역 어플을 개발하면서 문자, 이미지, 음성 번역 서비스를 준비중입니다.
이미 문자와 이미지 번역은 개발되었고 음성 번역 서비스를 추가 하기 위해 자료를 검색하던중 개발 준비 자료를 공유합니다.
폰갭의 기본 플러그인 중에서 해당 음성 녹음에 관련 된 플러그 인이 있습니다.
cordova-plugin-media-capture
https://www.npmjs.com/package/cordova-plugin-media-capture
플러그인에 대한 설명입니다.
음성 및 비디오 캡쳐가 가능한 플러그 인 입니다.
프로그램 계획은 다음과 같이 계획 잡고 있습니다.
스마트폰에서 녹음 파일이 생성되면 서버로 전송하며 서버에서 네이버나 구글 speech api를 이용하여 음성을 문자로 변경할 예정입니다.
그후 번역 api로 언어 번역을 하려고 합니다.
어떻게 보면 2개의 api를 활용하기 때문에 복잡할것 같지면 체계적으로 구성하면 간단하게 개발될것 같습니다.
navigator.device.capture.captureAudio( CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureAudioOptions options]);
자바 스크립트로 위 명령을 실행 하는 겁니다.
function captureSuccess(mediaFiles) {
var i, len;
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
uploadFile(mediaFiles[i]);
}
}
// Called if something bad happens.
//
function captureError(error) {
var msg = 'An error occurred during capture: ' + error.code;
navigator.notification.alert(msg, null, 'Uh oh!');
}
// A button will call this function
//
function captureAudio() {
// Launch device audio recording application,
// allowing user to capture up to 2 audio clips
navigator.device.capture.captureAudio(captureSuccess, captureError, {limit: 2});
}
// Upload files to server
function uploadFile(mediaFile) {
var ft = new FileTransfer(),
path = mediaFile.fullPath,
name = mediaFile.name;
ft.upload(path,
"http://my.domain.com/upload.php",
function(result) {
console.log('Upload success: ' + result.responseCode);
console.log(result.bytesSent + ' bytes sent');
},
function(error) {
console.log('Error uploading file ' + path + ': ' + error.code);
},
{ fileName: name });
}
navigator.device.capture.caputre.captureAudio 명령을 실행하여 captureSuccess 을 실행 하게 됩니다. 이렇게 실행후 파일 업로드를 해주면 됩니다.
파일 업로드 에는 php 로 저장한후 speech api를 이용하면 음성에서 문자 변환이 됩니다.
speech 변환 부분은 다음편에 공개 하겠습니다.
네이버 speech api를 활용하여 음성 -> 문자로 변경할 예정입니다.