PDA

Visualizza la versione completa : Convertire file binario in AUDIO?


Core dumped
10-12-2010, 18:46
Bah,
mi si è presentato un problema spinoso.

Ho una collezione di dati binari che provengono da scansioni di analisi di laboratorio; sono dati acquisiti nel dominio del tempo, quindi hanno un andamento tipo esponenziale decrescente: dopo un certo tempo, variabile tra 1-5 secondi, l'intensità del segnale è praticamente nulla.
Immaginiamo quindi di avere a che fare con il campionamento di un mix di sinusoidi smorzate nel tempo (con intensità, frequenza e fase diverse)

Le frequenze campionate cadono tutte nello spettro dell'udibile (10-20kHz).

Vorrei convertire i dati binari in formato pcm, wav o mp3 o un qualunque altro formato audio facilmente leggibile da un lettore multimediale.

Sto provando con VLC ma ovviamente non riconosce il dato d'ingresso e non pare in grado di operare alcuna conversione. Ho provato con sox , ma leggendo l'header del file di input, si incarta subito non sapendo come trattare il file.

Avrei bisogno di un'idea illuminante :spy:

mroghy
10-12-2010, 20:49
Ti serve un convertitore da RAW a WAV. Ce ne sono molti. Devi prima rinominare il file originale con estensione .raw e poi salvarlo come .wav. Tutto qui.

Modifica:
OOOppps solo adesso mi sono accorto che è il forum di Linux :meaculpa:
Comunque il succo non cambia.

Core dumped
11-12-2010, 10:33
Ciao mroghy

grazie per la risposta!

Quindi tu dici che sarebbe sufficiente un rename a livello di file ed usare un tool di conversione da raw a wav? :dottò:
Ma il formato raw non necessita di un header? I dati che manipolo io sono solo binari così come vengono catturati dal digitizer dello strumento di analisi, non hanno header.

Se gentilmente puoi segnalare un software di conversione, anche per Windows, cerco l'analogo per Linux come punto di partenza.

Grazie :ciauz:

Core dumped
11-12-2010, 10:48
Hmm...

proverei con sox una robina del genere:


sox -e raw -b 32 -c 1 -r SAMPLERATE --endian little data.raw -b 16 -c 1 -r 44100 sound.wav

considerando:


-b 32, dati long integer a 32bit
-c 1, un solo canale
-r SAMPLERATE, da sperimentare... devo rileggere la doc dello strumento ma non sono certo di trovare specs così a basso livello


Altre idee?

toraz
11-12-2010, 10:56
Puoi usare sox. Ovviamente dovrai dirgli che il file in ingresso sono dati raw e quindi specificare pure a che frequenza sono campionati, quanto e` lungo un campione e come e` rappresentato un campione.
Dovrebbe essere una cosa del genere (vado a memoria, quindi leggi il manuale che vai piu` sul sicuro!)



sox -t raw -r <frequenza_di_campionamento> -b <lunghezza_del_campione> -e <formato_del_campione> input.raw output.wav

toraz
11-12-2010, 11:00
Ecco, dicevo proprio una cosa del genere, l'unica cosa che non mi torna e` l'argomento dell'opzione -e, che dovrebbe essere (vado sempre a memoria) un token che identifica in che formato sono registrati i campioni, mi pare che siano signed, unsigned, floating-point o cose del genere.

Core dumped
11-12-2010, 14:56
ottimo, direi che le idee convergono.

Farò qualche exp in merito,

Grazie ancora per la risposta :ciauz:

mroghy
11-12-2010, 17:25
Originariamente inviato da Core dumped
Ciao mroghy

grazie per la risposta!

Quindi tu dici che sarebbe sufficiente un rename a livello di file ed usare un tool di conversione da raw a wav? :dottò:

Ma il formato raw non necessita di un header? I dati che manipolo io sono solo binari così come vengono catturati dal digitizer dello strumento di analisi, non hanno header.

No, il raw (come dice il nome) è un binario puro, senze header, bulks e menate varie.
Sta alla conversione in wav poi definire il sample-rate.


Se gentilmente puoi segnalare un software di conversione, anche per Windows, cerco l'analogo per Linux come punto di partenza.

Grazie :ciauz:

Me ne vengono in mente due: Audacity (c'è anche per Linux), expstudio. Entrambi free.

Loading