Visualisation de la voix Python

Résolu
SamB_1051 Messages postés 4 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

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. hypothetix Messages postés 194 Date d'inscription   Statut Membre Dernière intervention   68
     

    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.

    0
    1. SamB_1051 Messages postés 4 Statut Membre
       

      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.

      0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    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

    0