2010-05-07 17 views
5

En mi aplicación heredo una clase javastreamingaudio del paquete freeTTS y omito el método de escritura que envía una matriz de bytes a SourceDataLine para el procesamiento de audio. En lugar de escribir en la línea de datos, escribo esto y las subsiguientes matrices de bytes en un buffer que luego llevo a mi clase y trato de procesar en sonido. Mi aplicación procesa sonidos como matrices de flotadores, así que me convierto en flotar y trato de procesar, pero siempre obtengo un sonido estático.Conversión de bytes sin formato en sonido de audio

Estoy seguro de que este es el camino a seguir, pero me falta algo en el camino. Sé que el sonido se procesa como marcos y cada cuadro es un grupo de bytes, así que en mi aplicación tengo que procesar los bytes en marcos de alguna manera. ¿Estoy mirando esto de la manera correcta? Gracias de antemano por cualquier ayuda.

Respuesta

12

En primer lugar, desea convertir su matriz de bytes en un InputStream. Luego, crea un AudioInputStream a partir de ese Inputstream utilizando su AudioSystem. Una vez que tienes tu transmisión de audio, esencialmente tienes audio y puedes escribirlo en un archivo o hacer lo que quieras.

ByteArrayInputStream oInstream = new ByteArrayInputStream(ayAudioData); 
AudioInputStream oAIS = AudioSystem.getAudioInputStream(oInstream); 
+2

Ya había pensado en esto, pero gracias por su solución, ya que es lo que hice. Con suerte, ayudará a alguien algún día. –

Cuestiones relacionadas