Visualisation de la voix Python

Résolu

Bonjour.

Je suis un peu coincé sur un exercice spécifique.

Je suis capable de créer un graphe sur Python et d'enregistrer un fichier audio.wav sans problème. L'endroit où je bloque, c'est lorsque je dois intégrer mon fichier au code pour pouvoir le visualiser sur un graphique.

Je crois qu'il y a une erreur sur la valeur Y.

import matplotlib.pyplot as plt

fig, graphe = plt.subplots(figsize=(20,10))
valX = list(range(50))
valY = [i * i for i in valX]
graphe.set_title("Graphique audio")
graphe.set_xlabel("numéro de l'échantillon")
graphe.set_ylabel("Temps")
graphe.scatter(x=valX, y=valY, marker='*', c='b')
Audio(audio.wav, rate=sr)
fig.tight_layout()

 J'ai l'erreur suivante :

 AttributeError: 'numpy.ndarray' object has no attribute 'wav'

Samy Baril

2 réponses

  1. Bonjour,

    Pour poster du code il faut utiliser la coloration syntaxique, c'est plus agréable à lire. Si possible, il faut poster le code complet. Et être patient surtout le Dimanche.:-)

    En attendant une réponse plus spécifique, voir ceci.

    1. C'est que j'essaye aussi d'ajouter une image, mais le site ne veux pas que je mette une image et un code dans la même publication.

  2. Modérateur

    Bonjour,

    Je confirme que le lien partagé par hypothetix #3 fournit une solution qui marche (presque). Voici une version corrigée (à toi d'adapter le chemin vers le fichier .wav) :

    import matplotlib.pyplot as plt
    import numpy as np
    import wave
    import sys
    
    spf = wave.open("/usr/share/sounds/alsa/Front_Center.wav", "r")
    
    # Extract Raw Audio from Wav File
    signal = spf.readframes(-1)
    signal = np.fromstring(signal, np.int16)
    
    
    # If Stereo
    if spf.getnchannels() == 2:
        print("Just mono files")
        sys.exit(0)
    
    plt.figure(1)
    plt.title("Signal Wave...")
    plt.plot(signal)
    plt.show()

    Si ton fichier est stéréo, voir cette solution.

    Bonne chance