View Full Version : [JAVA] Leggere file audio come double
erik j morgan
10-09-2012, 13:02
Salve a tutti dato che ho bisogno di utilizzare il contenuto di un file audio come ingresso per una trasformata di fourier volevo chiedere nel forum se qualcuno conosce un modo per leggere un file audio come un vettore di double. Oppure, in alternativa convertire un file audio letto in byte in double.
Al momento ho letto un file audio in byte ma avrei bisogno che i dati fossero in double!!
Grazie a tutti per l'aiuto.
banryu79
10-09-2012, 16:08
Credo che dovresti fornirci maggiori informazioni sul formato del file da leggere.
Di che tipo di file audio parliamo?
Dipende dal formato.... se è un formato compresso (mp3, flac, wma, ogg...) è uno sbatti bello lungo considerando che devi dotarti delle librerie dei codec.
Altrimenti se ce l'hai in wav, basta che ti studi un po' la struttura di un file WAV: https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
Sempre in quel documento, trovi alcune informazioni sulle quali devi ragionare, soprattutto queste:
The default byte ordering assumed for WAVE data files is little-endian. Files written using the big-endian byte ordering scheme have the identifier RIFX instead of RIFF.
8-bit samples are stored as unsigned bytes, ranging from 0 to 255. 16-bit samples are stored as 2's-complement signed integers, ranging from -32768 to 32767.
Da cui deduci come devi leggere i dati dal file, poi per trasformarli in dati double, dipende dal linguaggio. Tipicamente basta trasferire il dato i una variabile double con una seplice assegnazione.
Io tempo fa cazzeggiando un po' avevo scritto delle funzioni in C che mixavano due pezzi wav e un semplice filtro passa banda. Mentre per android ho scritto un accordatore cromatico (che applica una DFT al buffer di uno stream in ingresso al microfono dello smartphone), e nella stessa occasione, per verificare il funzionamento della DFT, avevo pure creato una sorta di spettrogramma. Ma sempre e solo partendo da dati RAW, non compressi (come WAV o stream di input)
erik j morgan
11-09-2012, 10:55
il formato dei file che mi interessano è il wav molto più semplice sicuramente...
Altrimenti se ce l'hai in wav, basta che ti studi un po' la struttura di un file WAV: https://ccrma.stanford.edu/courses/4...ts/WaveFormat/
Sempre in quel documento, trovi alcune informazioni sulle quali devi ragionare, soprattutto queste:
Quote:
The default byte ordering assumed for WAVE data files is little-endian. Files written using the big-endian byte ordering scheme have the identifier RIFX instead of RIFF.
8-bit samples are stored as unsigned bytes, ranging from 0 to 255. 16-bit samples are stored as 2's-complement signed integers, ranging from -32768 to 32767.
Da cui deduci come devi leggere i dati dal file, poi per trasformarli in dati double, dipende dal linguaggio. Tipicamente basta trasferire il dato i una variabile double con una seplice assegnazione.
Grazie demos88 vedrò dove mi porta la tua risposta....
speriamo bene
sottovento
11-09-2012, 12:09
Java dovrebbe avere gia' tutto. Prova a guardare
http://stackoverflow.com/questions/938304/how-to-get-audio-data-from-a-mp3
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.