IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Jouer .wav en Python [Débutant(e)]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut Jouer .wav en Python
    Bonjour,

    Je cherche un moyen de jouer des fichiers .wav avec Python3 sous windows 7 (64bits si ça peut être utile).

    Je me suis déjà renseigné un peu sur le net et les cours Python : apparemment j'ai le choix entre pymedia, pyaudio, winsound et pygames.

    C'est mes débuts en python donc j'ai aucune idée de comment ces trucs peuvent marcher.

    Même sur ce site qui est pourtant bien fournit j'ai rien trouvé qui puisse m'aider.

    J'ai bien trouvé des codes d'exemple pour pyaudio sur le site : http://people.csail.mit.edu/hubert/pyaudio/
    Mais ils ne marchent pas et je comprend la moitié de ce qui est écrit.

    Apparement c'est ça qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if len(sys.argv) < 2:
        print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
        sys.exit(-1)
    Monest inférieur à 2 donc il fait son et ensuite . Donc pas de lecture de son...

    Pour winsound j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import winsound
    winsound.PlaySound('son_pur_1000.wav',winsound.SND_FILENAME)
    Le résultat c'est un bip d'erreur et rien d'autre, pas de message.

    Je sollicite votre aide.

    Ça serait génial une fonction qui a pour seul argument le nom du fichier .wav et qui puisse le jouer mais je crois que je suis en plein rêve la, non ?

  2. #2
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Alors une petite precision qui est peut etre la source de ton probleme. Sys.arv comprend les arguments passés lors de l'appel de ton code python (disons test.py).

    Il s'agit d'une liste. Par défaut, l'élement 0 est le nom meme de ton code python (test.py). l'élément 1 est le nom de ta musique. C'est pour ça qu'on teste par rapport à 2.

    Ensuite attention à ton chemin, vers ta musique, si celui ci comprend des espaces. Lors de la lecture, ce qui sert à séparer les arguments passé en paramètres, ce sont les espaces. Par exemple, "python toto.py c:\ma zik\test.wav. Tu récupèreras la liste ["toto.py", "c:\ma", "zik\test.wav"]

    Pour contourner le probleme, il faut mettre le chemin entre double cote:
    python toto.py "c:\ma zik\test.wav".

    C'est un probleme qu'on a souvent rapport à "mes documents", "program files", ...

    Est-ce que cela te permet deja de contourner le probleme? Si non, on cherchera plus loin

    EDIT: il faudrait poster ton code complet pour t'aider correctement.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je viens d'essayer winsound (uniquement sous Windows), et chez moi, ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import winsound
     
    winsound.PlaySound("fichier.wav", winsound.SND_FILENAME)
    Mais, bien sûr, le fichier doit pouvoir être trouvé par Python: Si nécessaire, donne le chemin complet du fichier wav.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Citation Envoyé par AudioGBM Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if len(sys.argv) < 2:
        print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
        sys.exit(-1)
    Mon len(sys.argv) est inférieur à 2 donc il fait son et ensuite . Donc pas de lecture de son...
    Pour que sys.argv soit >= 2, il faut passer le fichier .wav au lancement du script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python monscript.py fichier.wav
    Citation Envoyé par AudioGBM Voir le message
    C'est mes débuts en python donc j'ai aucune idée de comment ces trucs peuvent marcher.
    Apprendre a utiliser un langage de programmation prend du temps. Vous avez des tutos qui peuvent vous aider. Apprendre a programmer avec Python3 de Swinnen est une référence.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Je reprend ton exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if len(sys.argv) < 2:
        print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
        sys.exit(-1)
    sys.argv te retourne exactement ce que tu as mis dans ta ligne de commande sous forme de liste.

    test.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import sys
    print sys.argv
    et dans mon terminal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ python test.py argument1 fichiermachin
    ['test.py', 'argument1', 'fichiermachin']
    Donc dans ton exemple, ce sera le nom du script python et le nom du fichier .wav et si celui-ci n'est pas présent, il t'avertit et ferme boutique.


    Edit: Ha, je ne suis pas le premier venu, je vois.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Alors si je comprend bien il faut que je passe par la fenêtre de commande windows pour utiliser le script ?

    Et je tape par exemple : python Playwave.py "C:\mon_son.wav" ?

    Et bien ça marche pas. Il me sort tout un tas de trucs mais les dernières lignes c'est :
    raise Error('unknown format: %r' % (wFormatTag,))
    wave.Error: unknown format : 3.

    Voila le script que j'essaie de faire marcher :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    """PyAudio Example: Play a WAVE file."""
     
    import pyaudio
    import wave
    import sys
     
    CHUNK = 1024
     
    if len(sys.argv) < 2:
        print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
        sys.exit(-1)
     
    wf = wave.open(sys.argv[1], '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()
    Malheureusement je n'ai que 3 mois pour apprendre à programmer en python et crée une interface graphique. Il devra lire des sons, modifier le volume et permettre rentrer tout un tas de résultat qui seront résumés dans un fichier excel.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Finalement avec le chemin complet du fichier winsound me joue le son !

    Winsound permet il de faire varier le volume ?

    Si oui je pense que je vais m'en contenter.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Donc d’après ce que j'ai compris de la doc, winsound ne permet pas de toucher au volume.

    je vais pas pouvoir m'en contenter...

    C'est dommage car deux ligne de code pour jouer un son c'est quand même cool.

  9. #9
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Pygame permet de gérer le volume. As tu fait quelque essais avec?
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    J'ai pas essayé pygame. Ça ma fait un peu peur quand j'ai lu des descriptifs. Vous connaissez des tutos ou quoi que ce soit qui puisse m'aider ?

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Ça marche si j’installe pygame pour python3.2 alors que je suis en 3.3 ? C'est la dernière version disponible.

  12. #12
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Cel doit fonctionner (chez moi en tout cas oui). La fenetre n'est obligatoire que pour l'interface sans IHM à côté, sinon tu peut t'en passer.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #! /usr/bin/env PYTHON
    # -*- coding: utf-8 -*-
     
    import pygame
    from pygame.locals import *
     
    pygame.init()
    fenetre = pygame.display.set_mode((300,300))
    pygame.mixer.music.load("/home/test/test.wav")
    pygame.mixer.music.play()
     
    go = True
    volume = 0.5
    play = True
     
    while go:
    	 for event in pygame.event.get():
    		if event.type == KEYDOWN and event.key == K_u: #appuyer sur u pour sortir de pause
    			print "sortie de pause"
    			pygame.mixer.music.unpause()
    			play = True
     
    		if event.type == QUIT:
    			go = False
     
    		if event.type == KEYDOWN and event.key == K_p: #appuyer sur p pour mettre en pause
    			print "Mise en pause"
    			pygame.mixer.music.pause()
    			play = False
     
    		if event.type == KEYDOWN and event.key == K_s: #appuyer sur s pour arreter la musique
    			print "Arret de musique"
    			pygame.mixer.music.stop()
    			play = False
     
    		if event.type == KEYDOWN and event.key == K_UP and volume < 0.9: #appuyer sur fleche haute pour monter le volume
    			volume += 0.1
    			print "Volume:", volume
    			pygame.mixer.music.set_volume(volume)
     
    		if event.type == KEYDOWN and event.key == K_DOWN and volume > 0.1: #appuyer sur fleche bas pour baisser le volume
    			volume -= 0.1
    			print "Volume:", volume
    			pygame.mixer.music.set_volume(volume)
    EDIT:

    D'apres le site:
    Does Pygame work with Python 3?

    Mostly yes. Only the scrap, _movie, surfarray for Numeric, and threads modules have not been ported. The Pygame alternative, pgreloaded (Pygame Reloaded), also supports Python 3.
    Donc à priori ça fonctionne, vu qu'ici on utilise que la partie son
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Peut être pas.

    Je l'ai installé. http://pygame.org/ftp/pygame-1.9.2a0.win32-py3.2.msi

    Et le "import pygame" me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "<pyshell#6>", line 1, in <module>
        import pygame
      File "C:\Python33\lib\site-packages\pygame\__init__.py", line 95, in <module>
        from pygame.base import *
    ImportError: DLL load failed: Le module spécifié est introuvable.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Par contre ton code a l'air très intéressant deusyss !

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    D’après la doc, le module pygame.mixer.music.set_volume permet de changer le volume. La valeur de l'argument varie entre 0.0 et 1.0 par pas de 0.1 c'est ça ?

    J'ai peur que le pas soit trop grand pour mon projet. J'aurais à faire une calibration en dB slp assez précise ensuite. Je me trompe ?

    A la base on m'avait conseillé pyaudio pour ce genre d'utilisation ça serait peut être mieux ? Il faut que je travaille les cours alors.

  16. #16
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Chez moi, cela marche (ubuntu).
    Pour le pas, il suffit de le changer.
    Pas d'aide par mp.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Je t'avoue que je saurais pas comment faire pour le changer. Tu as une idée ?

    J'ai réussi l'installation finalement !

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Autan pour moi il suffit de rajouter des chiffres après le point.

    Pygame installé et tous fonctionne.

    Merci à tous, et aussi merci pour les super Cours et tutoriels pour apprendre Python , surtout ça : Apprendre à programmer avec Python 3 par Gérard Swinnen !

  19. #19
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Heureux que ton probleme soit resolu. N'oublie pas le RSOLU pour indiquer aux autres membres qu'il existe une solution pour ce probleme. Merci pour eux.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

Discussions similaires

  1. [Débutant] jouer wav C# WPF
    Par yrtera dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 29/05/2012, 14h58
  2. Bibiotheque audio pour jouer .wav simultanés
    Par Guy Tariste dans le forum Audio
    Réponses: 8
    Dernier message: 29/05/2010, 13h13
  3. jouer un son (*.wav ou *.mid) avec python
    Par - Glop - dans le forum Programmation multimédia/Jeux
    Réponses: 18
    Dernier message: 22/02/2010, 19h38
  4. Jouer .wav inclus dans projet
    Par ceetix dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/06/2009, 17h16
  5. Ecriture de fichiers .wav en python
    Par matstriker dans le forum Calcul scientifique
    Réponses: 7
    Dernier message: 02/04/2007, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo