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

Programmation multimédia/Jeux Python Discussion :

Concaténer 2 fichiers WAVE en python


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Concaténer 2 fichiers WAVE en python
    Bonjour,

    Je me retrouve confronté à une problématique. Je souhaite générer le son WAVE d'un numéro de téléphone épelé.

    Processus :
    • Je récupère des sons de 0 à 9
    • je concatène les 10 numéros à la suite
    • je génère un son .wav


    Je ne sais pas qu'elle est la meilleure technique, extraire les fréquences de mes fichiers ".wav" pour les concaténer ou stoker simplement les fréquences de mes chiffres dans une liste puis les concaténer.

    Je n'ai pas trouvé beaucoup d'informations en ce qui concerne la concaténation de fichier WAVE en PYTHON.

    Sauriez-vous m'aider ?
    Merci beaucoup.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé la solution ci-join sur le lien : http://stackoverflow.com/questions/2...e-using-python

    import wave

    infiles = ["sound_1.wav", "sound_2.wav"]
    outfile = "sounds.wav"

    data= []
    for infile in infiles:
    w = wave.open(infile, 'rb')
    data.append( [w.getparams(), w.readframes(w.getnframes())] )
    w.close()

    output = wave.open(outfile, 'wb')
    output.setparams(data[0][0])
    output.writeframes(data[0][1])
    output.writeframes(data[1][1])
    output.close()

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Ce n'est pas difficile non plus de générer les sons DTMF directement en Python:
    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
    45
    46
    47
    48
    49
    50
    51
    52
    from math import sin, pi
    from array import array
    from cStringIO import StringIO
    import wave
     
    tones = {
        '1' : (697, 1209),
        '2' : (697, 1336),
        '3' : (697, 1477),
        'A' : (697, 1633),
        '4' : (770, 1209),
        '5' : (770, 1336),
        '6' : (770, 1477),
        'B' : (770, 1633),
        '7' : (852, 1209),
        '8' : (852, 1336),
        '9' : (852, 1477),
        'C' : (852, 1633),
        '*' : (941, 1209),
        '0' : (941, 1336),
        '#' : (941, 1477),
        'D' : (941, 1633)
        }
     
    def dial(number, tone_duration=0.3, spacing=0.05, samprate=44100, sampwidth=2):
        sound = []
        mult = 2**((sampwidth*8)-2)-1
        samp = 2*pi/samprate
        for c in number:
            if c in tones:
                for i in range(int(samprate*tone_duration)):
                    s = sin(tones[c][0]*samp*i) + sin(tones[c][1]*samp*i)
                    s = int(s * mult + 0.5)
                    sound.append(s)
                sound.extend([0]*int(spacing*samprate))
        a = array('h', sound).tostring()
        return a
     
    def make_wave(f, number):
        w = wave.open(f, 'w')
        w.setnchannels(1)
        w.setsampwidth(2)
        w.setframerate(44100)
        w.writeframes(dial(number))
        w.close()
     
    if __name__ == '__main__':
        f = StringIO()
        make_wave(f, '123456789*0#')
        # Windows only:
        import winsound
        winsound.PlaySound(f.getvalue(), winsound.SND_MEMORY)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier wave
    Par miminou dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 04/10/2005, 14h29
  2. fichier wave
    Par miminou dans le forum Windows
    Réponses: 1
    Dernier message: 30/09/2005, 22h42
  3. [debutant] concaténation de fichiers
    Par Spyco dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 13/07/2005, 10h52
  4. Commandes MCI : durée fichier wave
    Par eag35 dans le forum MFC
    Réponses: 1
    Dernier message: 11/04/2005, 12h25
  5. Comment concaténer plusieurs fichiers en un ?
    Par souch dans le forum Langage
    Réponses: 16
    Dernier message: 14/12/2004, 18h58

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