C'est mon premier post sur la pile. Jusqu'à présent, ce site a été très utile, mais je suis novice et j'ai besoin d'une explication claire à mon problème, qui est liée à l'audio de décomposition de pitch-python. J'ai les modules actuels installés: NUMPLY, SCIPY, PYGAME ET LES SCIKITES API "SAMPLERER".
Mon objectif est de prendre un fichier stéréo et de le lire sur un autre pas possible dans la mesure du possible. Actuellement, je charge le fichier dans un tableau à l'aide de Pygame.sndarray, puis appliquez une conversion à l'aide de SCIKITS.SAMPLERER.RESAMPLE, puis convertissez la sortie à un objet sonore pour la lecture à l'aide de PYGAME. Le problème est l'audio de la poubelle sort de mes orateurs. Il me manque sûrement quelques étapes (en plus de ne rien savoir sur les mathématiques et l'audio). P>
Merci. P>
import time, numpy, pygame.mixer, pygame.sndarray from scikits.samplerate import resample pygame.mixer.init(44100,-16,2,4096) # choose a file and make a sound object sound_file = "tone.wav" sound = pygame.mixer.Sound(sound_file) # load the sound into an array snd_array = pygame.sndarray.array(sound) # resample. args: (target array, ratio, mode), outputs ratio * target array. # this outputs a bunch of garbage and I don't know why. snd_resample = resample(snd_array, 1.5, "sinc_fastest") # take the resampled array, make it an object and stop playing after 2 seconds. snd_out = pygame.sndarray.make_sound(snd_resample) snd_out.play() time.sleep(2)
4 Réponses :
Très probablement, les SCIKITS.SAMPARERE.RESAMPLE est "Pensant" que votre audio est dans un autre format que 16 bits stéréo. Vérifiez la documentation sur Scikits.Samplate sur où sélectionnez le format audio approprié dans votre tableau - Si elle rééchappa 16 bits audio le traite comme une poubelle 8 bits est ce qui sortirait. P>
Votre meilleur pari est probablement en utilisant Python Audière. p>
Voici un lien, je l'ai utilisé pour faire le même genre de chose, c'est très facile, il suffit de lire toute la documentation. P>
Merci, Audière était mon premier choix, mais je ne pouvais pas l'obtenir à faire i> sans erreurs. Je ne suis pas trop lumineux avec ce genre de choses, je n'ai donc pas d'aller avec quel travail compte tenu de mes compétences limitées.
Cela semble bon, ça marche pour Python 2.7? Il semble être pour Python 2.2
à partir du Si l'entrée est remplie que toutes les données sont utilisées et que toutes les données sont utilisées et sont supposées provenir d'un signal mono. Si le rang est 2, les colonnes numériques seront supposées être le nombre de canaux. Em> p> donc je pense que ce que vous devez faire est quelque chose comme ça pour transmettre les données stéréo sur SCIKITS.SAMPLERERE.RESAMPLE code> Documentation:
Rééchantillonner code> dans le format, il s'attend: P>
snd_array = snd_array.reshape((-1,2))
snd_resample = resample(snd_array, 1.5, "sinc_fastest")
snd_resample = snd_resample.reshape(-1) # Flatten it out again
Merci. J'ai essayé votre suggestion, mais la même sortie sort.
Votre problème est que Pygame fonctionne avec numpy.int16 code> mais l'appel à
réélu code> retourner un
numpy.float32 code> tableau:
>>> snd_resample = resample(snd_array, 1.5, "sinc_fastest").astype(snd_array.dtype)
Oh mec, je ne sais pas comment vous remercier. Pas d'attente, je le fais, je peux vous envoyer de l'argent de la bière à PayPal si vous acceptez mon offre. J'ai d'innombrables heures à la recherche d'une solution. C'est fantastique.
Content de vous voir comme ma réponse :) Vous n'avez rien à me proposer, votre question était intéressante et j'ai aussi appris quelques choses avec elle!
Serait-il possible d'enregistrer l'objet de pygame.micer.sound modifié comme fichier son au lieu de la jouer?
Je le ferais avec le module SciPy Io.Wavefile: docs.cipy.org/ DOC / SCIPY / Référence / IO.HTML