-
Jave 예제 (동영상파일에서 음원 추출)JAVA/컨셉 , 예제 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 경로에 설정한대로 파일 생성된다.
'JAVA > 컨셉 , 예제' 카테고리의 다른 글
자바(JAVA) mp4 파일 video control 속성 적용 (0) 2020.02.19 구글 STT 타임스탬프(Timestamp) 예제 (Speech to text API) 로컬 파일 사용, 1분 미만 짧은 오디오 파일 (1) 2020.01.25 (JAVA) 자바 인터페이스(Interface) (0) 2018.08.24 (JAVA) 자바 추상 클래스(abstract class) (0) 2018.08.24 (JAVA) 자바 상속 & 오버라이딩(Over riding) (0) 2018.08.24