Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

wavwrite mauvais arguments ?

+3 votes

J'essais de mettre à la suite 2 .wav, mais lorsque j'essais d'écrire le fichier, j'ai cette erreur :

Traceback (most recent call last):
File "mix.py", line 11, in
audiolab.wavwrite(c, 'file3.wav', fs, enc)
File "/usr/local/lib/python2.7/dist-packages/scikits/audiolab/pysndfile/matapi.py", line 47, in basicwriter
hdl = Sndfile(filename, 'w', uformat, nc, fs)
File "
sndfile.pyx", line 463, in scikits.audiolab.pysndfile.sndfile.Sndfile.init (scikits/audiolab/pysndfile/sndfile.c:4027)
ValueError: Bad format specification: check arguments.

Voici le code utilisé :

from scikits import audiolab
import scipy
import os

a, fs, enc = audiolab.wavread('file1.WAV')
b, fs, enc = audiolab.wavread('file2.WAV')
c = scipy.vstack((a,b))
audiolab.wavwrite(c, 'file3.wav', fs, enc)

Les arguments donné à wavwrite semblent être bon ...

demandé 2-Fev-2015 par xyrodileas (174 points)

Si la réponse te conviens, marque là comme "acceptée", ça donne des points à l'auteur.

1 Réponse

+3 votes
 
Meilleure réponse

Le fichier sndfile fait une vérification sur les fichiers audios que tu lui donne (fréquence d'échantillonage, nombre de canaux audios, etc) à la ligne 464.

Je pense qu'il a besoin d'avoir des fichiers audios identiques en terme de samplerate, channels, etc. Essais ça juste pour confirmer:

from scikits import audiolab
import scipy
import os

a, fs, enc = audiolab.wavread('file1.WAV')
b, fs, enc = audiolab.wavread('file1.WAV')
c = scipy.vstack((a,b))
audiolab.wavwrite(c, 'file3.wav', fs, enc)

Il ne serait pas étonnant que tu ais à normaliser tes fichiers audio avant leur manipulation.

répondu 2-Fev-2015 par max (894 points)
sélectionné 8-Avr-2015 par xyrodileas

D'apres ce que j'ai lu ici (et ce que j'en ai compris), les fichiers ne doivent pas obligatoirement être identiques mais doivent plutôt être dans un encoding que libsndfile supporte. Pour le le .wav, voici la liste:

enter image description here

Donc avec deux fichiers audios identiques ça foire quand même ?
Je suis à peu près sûr que tu ne peux pas merger un fichier audio mono avec un stéréo voire même d'un échantillonage différent peut importe le format.
Comment le programme devrait savoir à quoi s'adapter (passer tout en mono ou stereo, tout à 44khz ou 8khz, etc) ?

Tu peux mettre à dispo tes fichiers WAV pour tester ?

Pour mes testes, j'essayais de merger le même fichier pour le moment, donc j'imagine que ca doit être un problème d'encodage, je vais tester avec d'autres fichiers.
son que j'utilise ici

EDIT : Après avoir changé de fichier audio, ca semble marcher, juste une erreur de dimension des array

all the input array dimensions except for the concatenation axis must match exactly

...