2010-05-07 18 views
5

Nella mia applicazione eredito una classe javastreamingaudio dal pacchetto freeTTS, quindi eludere il metodo write che invia una matrice di byte al SourceDataLine per l'elaborazione audio. Invece di scrivere sulla linea dati, scrivo questo e gli array di byte successivi in ​​un buffer che poi porto nella mia classe e cerco di elaborare in audio. La mia applicazione processa come array di float, quindi mi converto in float e cerco di processare, ma ottengo sempre un suono statico.Conversione di byte grezzi in audio audio

Sono sicuro che questa è la strada da percorrere ma mi manca qualcosa lungo la strada. So che il suono viene elaborato come frame e ogni frame è un gruppo di byte, quindi nella mia applicazione devo elaborare i byte in frame in qualche modo. Sto guardando questo nel modo giusto? Grazie in anticipo per qualsiasi aiuto.

risposta

12

Prima di tutto, si desidera convertire l'array di byte in un InputStream. Quindi, si crea un AudioInputStream da quello Inputstream usando il proprio AudioSystem. Una volta che hai il tuo stream audio, in pratica hai l'audio e puoi scriverlo su file o fare quello che vuoi.

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

Aveva già capito questo, ma grazie per la vostra soluzione in quanto è quello che ho fatto. Spero che possa aiutare qualcuno prima o poi. –