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
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()
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
# 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()
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"""
Je devrais modifier à cause de """if self.presaudio == 0: Conditionnant la lecture