JAVA/컨셉 , 예제
Jave 예제 (동영상파일에서 음원 추출)
minwoohi
2020. 1. 25. 17:52
회사에서 업무 중 stt 기술 적용 시켜야 할 일이 있었다. 텍스트 뿐 아니라 타임스탬프까지 기록하고 싶었는데, google cloud platform에서 지원하고 있었고, 이를 적용시키는 와중 동영상에서 raw 음원 파일 추출해주는 라이브러리가 있어 소개
내가 해결해야 하는 이슈는
- 동영상(.mp4) 파일에서 음원파일을 추출해야 하는 것 (google에서는 wav, flac 등 음원파일만을 파라미터로 허용)
이었고, 이를 JAVE 라이브러리를 통해 해결했다.
자바 버전 1.7에서 동작 확인
http://www.sauronsoftware.it/projects/jave/
홈페이지 접속해서 바이너리 파일 받으면, jar 파일이 있다. 이를 외부 라이브러리로 등록하면
it.sauronsoftware.jave 패키지의 클래스들 사용 가능
Documentations에 보면 지원하는 포맷, 예제 코드까지 친절하게 적혀 있다.
import it.sauronsoftware.jave.AudioAttributes;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncodingAttributes;
public String makeFlacFile ( MultipartFile mp4File) throws IOException {
String result = "";
String uuid = UUID.randomUUID().toString().replace("-", "");
try {
String filePath = File.separator + "var" + File.separator + "stt" + File.separator;
Encoder encoder = new Encoder();
File source = new File(mp4File.getOriginalFilename());
mp4File.transferTo(source);
File target = new File(filePath + uuid + ".flac" );
// 오디오 포맷 속성 정의. Google speech to text api 동작 조건
AudioAttributes audio = new AudioAttributes();
audio.setSamplingRate(new Integer(16000)); // 샘플 레이트
audio.setChannels(new Integer(1)); // Mono 채널로 설정해야 speech to text api 사용 가능
audio.setCodec("flac"); // 코덱 조건
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("flac"); // 포맷 설정
attrs.setAudioAttributes(audio);
encoder.encode(source, target, attrs);
result = target.getPath();
} catch (Exception e) {
result = "flacFile make fail";
}
return result;
}
파일 생성 메소드
만들고 싶은 포맷 조건 설정해서 source, attrs 파라미터를 넣으면 지정한 target 경로에 설정한대로 파일 생성된다.