GoogleのクラウドスピーチAPI [reference]を介して実行したいmp3ファイルがありますが、各オーディオファイルの最初の15秒です。私はscalaでjlayer、mp3spi、およびtritonusのライブラリをJavaZoomのようにインポートして作業しています。私のコードは、これまでのようになります。Googleのクラウドスピーチのmp3をLINEAR_16または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()
をしかし、私はそれが唯一の0のだとAPIコールが何も返さない延ByteString、コピーされたバッファーの値をプリントアウトするとき。私が間違っていることに関するアイデアは?これは初めてJava/Scalaでオーディオを操作するので、私は何かが分かりにくいかもしれません...