Google의 클라우드 음성 API [reference]을 통해 실행하려는 mp3 파일이 있지만 각 오디오 파일의 처음 15 초뿐입니다. 저는 jlayer, mp3spi 및 tritonus 라이브러리가있는 스칼라에서 JavaZoom에 의해 제안 된대로 가져 왔습니다. 내 코드는 지금까지 다음과 같습니다mp3에서 LINEAR_16 또는 Google 클라우드 음성 용 FLAC 형식으로 변환
val in = AudioSystem.getAudioInputStream(new URL("mySong.mp3"))
val baseFormat = in.getFormat
val decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
16000,
16,
baseFormat.getChannels,
baseFormat.getChannels * 2,
16000,
false)
val audioInputStream = AudioSystem.getAudioInputStream(decodedFormat, in)
val buffer = new Array[Byte](16000*4*15)
var i = 0
while (audioInputStream.available() > 0) {
i += audioInputStream.read(buffer)
}
audioInputStream.close()
in.close()
// pass this to API request:
lazy val recognitionConfig: RecognitionConfig = RecognitionConfig.newBuilder
.setEncoding(AudioEncoding.LINEAR16)
.setLanguageCode("en-US")
.setSampleRateHertz(16000)
.build
val request = RecognizeRequest.newBuilder()
.setAudio(RecognitionAudio.newBuilder().setContent(ByteString.copyFrom(buffer)).build())
.setConfig(recognitionConfig)
.build()
을하지만, 나는 단지 공의의와 API 호출이 아무 것도 반환하지 않는 ByteString - 복사 된 버퍼의 값을 인쇄 할 때. 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까? 이것은 자바/스칼라에서 오디오를 조작하는 나의 처음입니다. 그래서 나는 명백한 것을 놓치고 있을지도 모릅니다 ...