Zuerst wird eine Beispieldatei:
sox -n -r 8k -b 8 test.wav synth 0.02 sine 400 fade t 0 0 0.02 norm
Dies schafft einen 0,02 Sekunden lang 400Hz Sinuston, die bis zum Ende linear von Anfang verblaßt. Es wird als eine 8-Bit-Präzisions-WAV-Datei mit 8 kHz Abtastrate gespeichert.
Wie dies in eine Reihe von Probenwerten im Bereich Umwandlung [0, 255] Sie sind auf dem richtigen Weg mit einem rohen headerless-Format, die mit SOx wie folgt hergestellt werden können:
sox -V test.wav -e unsigned test.raw
Aber wenn Sie die resultierende .raw
Datei in einem Texteditor öffnen, sieht es einfach wie Haufen von Unsinn aus. Um dies zu beheben wir, wenn durch das hexdump
Dienstprogramm senden können die Daten in eine lesbare Form zu übersetzen:
hexdump -v -e '1/1 "%03u "' test.raw > test.txt
Soweit ich sagen kann (ich habe nur gelernt, über hexdump
gestern, nehmen Sie so meine Worte nicht als Gospel): -v
stellt sicher, dass alle Ausgaben explizit geschrieben werden (sonst Wiederholungen sind durch Sternchen dargestellt), -e
können Sie Ihre eigene Formatzeichenfolge erstellen (whats innerhalb der Hochkommata): 1/1
bestellt die Daten in 'Bündeln' von einem, ein Byte pro bundle, "%03u "
stellt sicher, dass jedes "Bündel" als eine nullstellige, dreistellige, vorzeichenlose Dezimalzahl dargestellt wird. Ein einzelner Leerraum wird ebenfalls hinzugefügt, um jeden "Haufen" zu trennen.
sox -V test.wav -t raw -e unsigned - | hexdump -v -e '1/1 "%03u "' > test.txt
Mit dem Inhalt von test.txt etwas wie folgt aussehen:
head -c 64 test.txt
# 132 169 205 233 251 255 250 230 203 167 128 090 057 030 014 009

Alternativ kann der erste Befehl direkt in die zweite wie diese geleitet werden
Um die Nullauffüllung zu entfernen, entfernen Sie einfach '03' vom Befehl hexdump
.
Ich sollte hinzufügen, dass hexdump
ist ein BSD-Programm, und als solches ist ziemlich allgegenwärtig auf * NIX-Systemen, aber ich habe keine Ahnung, was es unter Windows wäre.
Danke, ich denke, genau das brauche ich! – lysigk