【发布时间】:2017-11-13 23:16:04
【问题描述】:
我想通过 Google 的 Cloud Speech API [reference] 运行 mp3 文件 - 但只是每个音频文件的前 15 秒。我正在使用 JavaZoom 建议的导入的 jlayer、mp3spi 和 tritonus 库在 Scala 中工作。到目前为止,我的代码如下所示:
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()
但是,当我打印出 ByteString 复制缓冲区的值时,它只有 0,并且 API 调用什么也不返回。关于我做错了什么的任何想法?这是我第一次在 Java/Scala 中处理音频,所以我可能会遗漏一些明显的东西......
【问题讨论】:
标签: java scala google-cloud-platform codec google-cloud-speech