d'abord un exemple de fichier:
sox -n -r 8k -b 8 test.wav synth 0.02 sine 400 fade t 0 0 0.02 norm
Cela crée une sinusoïde 0,02 secondes à long 400Hz qui se fane linéairement du début à la fin. Il est stocké sous la forme d'un fichier WAV monocanal de 8 bits avec une fréquence d'échantillonnage de 8 kHz.
Comme pour convertir cela en une chaîne de valeurs d'échantillon dans l'intervalle [0, 255] vous êtes sur la bonne voie avec un format de entete brut, qui peut être produit avec sox comme ceci:
sox -V test.wav -e unsigned test.raw
Mais si vous ouvrez le fichier .raw
résultant dans un éditeur de texte, il ressemble à un tas de bêtises. Pour corriger cela, nous pouvons envoyer si, par l'utilitaire hexdump
pour traduire les données sous une forme plus lisible:
hexdump -v -e '1/1 "%03u "' test.raw > test.txt
Pour autant que je peux dire (je n'appris hexdump
hier, alors ne prenez pas mes mots gospel): -v
garantit que toutes les sorties sont écrites explicitement (sinon les répétitions sont représentées par un astérisque), -e
vous permet de créer votre propre chaîne de format (whats dans les guillemets simples): 1/1
ordonne les données en «paquets» de un, un octet par Le groupe "%03u "
veille à ce que chaque «groupe» soit représenté par un nombre décimal non signé, à trois chiffres et sans chiffre. Un espace blanc unique est également ajouté pour séparer chaque 'groupe'.
Alternativement, la première commande peut être canalisé directement dans le second comme celui-ci:
sox -V test.wav -t raw -e unsigned - | hexdump -v -e '1/1 "%03u "' > test.txt
Avec le contenu de la recherche test.txt quelque chose comme ceci:
head -c 64 test.txt
# 132 169 205 233 251 255 250 230 203 167 128 090 057 030 014 009
Pour supprimer le remplissage de zéro, supprimez simplement '03' de la commande hexdump
.
Je devrais ajouter que hexdump
est un programme BSD, et en tant que tel est assez omniprésent sur les systèmes * NIX, mais je n'ai aucune idée de ce que son équivalent serait sur Windows.
Merci, je pense que c'est exactement ce dont j'ai besoin! – lysigk