Bonjour
J'ai réussi à entendre une note avec pyaudio, sauf qu'après çà boucle indéfiniment
Si on entend une note, c'est que le procédé d'écriture et de lecture a fonctionné une fois
Je crois qu'il manque une temporisation à la boucle de lecture pour pyaudio
Le tutoriel python : M'apprend comment utiliser PyAudio
L'écriture : L'indispensable pour la lecture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import pyaudio import wave ex = "1 AT&T Tone.wav" def jouer(zik): CHUNK = 1024 wf = wave.open(zik, 'rb') p = pyaudio.PyAudio() stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True) data = wf.readframes(CHUNK) while data != '': stream.write(data) data = wf.readframes(CHUNK) stream.stop_stream() stream.close() p.terminate()
La lecture :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 # Partie échantillonnage pour l'écriture de la note.wav nbOctet = nbCanal = 1 fech = 64000 niveau = float(1 / 2) duree = float(1 / 6) nbEch = int(duree * fech) for fy in range(7): toplo = self.fichnom[fy] manote = wave.open(toplo, 'wb') param = (nbCanal, nbOctet, fech, nbEch, 'NONE', 'not compressed') manote.setparams(param) freq = diato[fy] self.framno[fy] = freq amp = 127.5 * niveau for i in range(0, nbEch): val = wave.struct.pack('B', int(128.0 + amp * math.sin(2.0 * math.pi * freq * i / fech))) manote.writeframes(val) manote.close()
Je devrais modifier à cause de """if self.presaudio == 0: Conditionnant la lecture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 # Partie lecture avec pyaudio qui après une première note.wav entendue ne réagit plus for fy in range(7): CHUNK = 1024 toplo = self.fichnom[fy] wf = wave.open(toplo, 'rb') p = pyaudio.PyAudio() stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True) data = wf.readframes(CHUNK) while data != '': stream.write(data) data = wf.readframes(CHUNK) stream.stop_stream() stream.close() p.terminate() wf.close() """if self.presaudio == 0: self.presaudio = 1 for fu in self.fichnom: winsound.PlaySound(fu, winsound.SND_FILENAME) # Windsound : Ne peut être utilisé qu'avec windows"""
Partager