Konverzi mp3 do formátu FLAC LINEAR_16 nebo pro službu Google Cloud řeči

hlasů
1

Mám mp3 soubory I chtěli projít Cloud Speech API Google [referenčním] - ale jen prvních 15 sekund každého audio souboru. Pracuji v Scala s jlayer, mp3spi a tritonus knihoven dovážených, jak navrhuje JavaZoom . Můj kód doposud vypadá takto:

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()

Nicméně, když jsem vytisknout hodnotu vyrovnávací paměti ByteString kopírovaný je to jen 0 je a volání API vrátí nic. Jakékoli myšlenky na to, co dělám špatně? toto je poprvé, co jsem manipulovat audio Java / Scala, takže mohu být něco chybí zřejmý ...

Položena 13/11/2017 v 23:16
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Měl jsem stejný problém. Získáte nic, pokud je zvuk srozumitelný nebo je kódován ve formátu, ale není zakódovaný vhodně a další specifika např th audio soubor nemůže být stereo, to musí být mono. Tak jsem se nejprve převede na zvuk z mp3 do .flac takto pomocí ffmpeg modulu (v Pythonu - musíte najít své scala verze):

# turn the video into audio
ff = ffmpy.FFmpeg(inputs={input_file_path: None}, outputs={output_file_path: '-y -vn -acodec flac -ar 16000 -ac 1'})
ff.run()

input_file_patha out_file_pathjsou struny , které obsahují cesty pro vstupní a výstupní místa audio souborů. Poznámka: můžete otestovat audio výstupní soubor, zda převod proběhl úspěšně pomocí playpříkazu.

Poté, co udělal výše, nyní můžete použít AudioFormat.Encoding.FLACi AudioEncoding.FLACmísto.

Odpovězeno 02/12/2017 v 02:22
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more