J'écris un programme pour vérifier les pépins dans un signal audio enregistré par un ordinateur. Après avoir détecté l'audio, je voudrais vérifier les pépins dans les 5 premières secondes de données (correspondant à 220500 échantillons à un taux d'échantillonnage de 44,1 kHz), passer aux 5 secondes suivantes de données et vérifier les pépins dans cela, puis les 5 secondes suivantes etc. J'ai une boucle while qui commence après que l'audio a été détecté, il commence à lire des échantillons audio d'un flux dans un tableau jusqu'à ce qu'il ait 220500 échantillons dans le tableau, après quoi il entre dans une instruction if vérifier les défauts dans les 220500 échantillons (et supprimer tous les éléments dans le tableau par la suite). Mon problème est que pendant ce temps, l'audio est toujours enregistré par l'ordinateur mais il n'est pas lu depuis le flux dans la matrice et au moment où j'ai quitté l'instruction if et redémarré la boucle while j'ai manqué quelques secondes de données audio.Traitement audio en temps réel en Python
while 1:
# little endian, signed short
snd_data = array('h', stream.read(1500))
if byteorder == 'big':
snd_data.byteswap()
r.extend(snd_data)
if len(r) == 220500 or silent:
r = trim(r)
data = pack('<' + ('h'*len(r)), *r)
data = np.fromstring(data,dtype=np.int16)
glitch detection carried out here...
J'utilise PyAudio pour l'enregistrement audio
p=pyaudio.PyAudio() # start the PyAudio class
stream=p.open(format=pyaudio.paInt16,channels=1,rate=RATE,input=True,input_device_index = 1, output_device_index = 6,frames_per_buffer=1500)
Je voudrais savoir est-il un moyen pour moi de continuer la lecture du flux audio dans le tableau tout en effectuant la détection de pépin dans la si déclaration? Ou sinon, y a-t-il un autre moyen de m'y prendre?
Avez-vous essayé d'utiliser plusieurs processus? Vous pouvez générer un processus pour lire votre flux audio et un autre pour le traiter pour "détection de pépin". Jetez un oeil à ceci: https://docs.python.org/2/library/multiprocessing.html – ma3oun
Merci, je vais y jeter un coup d'oeil. – CJF
"l'audio est toujours en cours d'enregistrement par l'ordinateur mais il n'est pas lu du flux dans la matrice" Pourquoi pas? Le tampon du flux est-il trop petit? – Trilarion