This document is for an old version of Python that is no longer supported. You should upgrade and read the Python documentation for the current stable release.

# 21.5. `wave` — Lecture et écriture des fichiers WAV

Code source : Lib/wave.py

Le module `wave` fournit une interface pratique pour le format de son WAV. Il ne gère pas la compression ni la décompression, mais gère le mono et le stéréo.

Le module `wave` définit la fonction et l’exception suivante :

`wave.``open`(file[, mode])

  If file is a string, open the file by that name, otherwise treat it as a seekable file-like object. mode can be any of

  `'r'`, `'rb'`

    Mode lecture seule.

  `'w'`, `'wb'`

    Mode écriture seule.

  Notez que ce module ne permet pas de manipuler des fichiers WAV en lecture/écriture.

  A mode of `'r'` or `'rb'` returns a `Wave_read` object, while a mode of `'w'` or `'wb'` returns a `Wave_write` object. If mode is omitted and a file-like object is passed as file, `file.mode` is used as the default value for mode (the `'b'` flag is still added if necessary).

  Si vous donnez un objet de type fichier, l’objet wave ne le ferme pas lorsque sa méthode `close()` est appelée car c’est l’appelant qui est responsable de la fermeture.

`wave.``openfp`(file, mode)

  Un synonyme de `open()`, maintenu pour la rétrocompatibilité.

exception `wave.``Error`

  Une erreur est levée lorsque quelque chose est impossible car elle enfreint la spécification WAV ou rencontre un problème d’implémentation.

## 21.5.1. Objets Wave_read

Les objets Wave_read, tels qu’ils sont renvoyés par `open()`, ont les méthodes suivantes :

`Wave_read.``close`()

  Ferme le flux s’il a été ouvert par `wave` et rend l’instance inutilisable. Ceci est appelé automatiquement lorsque l’objet est détruit .

`Wave_read.``getnchannels`()

  Renvoie le nombre de canaux audio (`1` pour mono, `2` pour stéréo).

`Wave_read.``getsampwidth`()

  Renvoie la largeur de l’échantillon en octets.

`Wave_read.``getframerate`()

  Renvoie la fréquence d’échantillonnage.

`Wave_read.``getnframes`()

  Renvoie le nombre de trames audio.

`Wave_read.``getcomptype`()

  Renvoie le type de compression (`'NONE'` est le seul type géré).

`Wave_read.``getcompname`()

  Version compréhensible de `getcomptype()`. Généralement, `'not compressed'` équivaut à `'NONE'`.

`Wave_read.``getparams`()

  Returns a tuple `(nchannels, sampwidth, framerate, nframes, comptype, compname)`, equivalent to output of the `get*()` methods.

`Wave_read.``readframes`(n)

  Reads and returns at most n frames of audio, as a string of bytes.

`Wave_read.``rewind`()

  Remet le pointeur de fichier au début du flux audio.

Les deux méthodes suivantes sont définies pour la compatibilité avec le module `aifc` ; elles ne font rien d’intéressant.

`Wave_read.``getmarkers`()

  Renvoie `None`.

`Wave_read.``getmark`(id)

  Lève une erreur.

Les deux fonctions suivantes utilisent le vocabulaire « position ». Ces positions sont compatible entre elles, la « position » de l’un est compatible avec la « position » de l’autre. Cette position est dépendante de l’implémentation.

`Wave_read.``setpos`(pos)

  Place le pointeur du fichier sur la position spécifiée.

`Wave_read.``tell`()

  Renvoie la position actuelle du pointeur du fichier.

## 21.5.2. Objets Wave_write

Les objets Wave_write, tels qu’ils sont renvoyés par `open()`, ont les méthodes suivantes :

`Wave_write.``close`()

  Make sure nframes is correct, and close the file if it was opened by `wave`. This method is called upon object collection.

`Wave_write.``setnchannels`(n)

  Définit le nombre de canaux.

`Wave_write.``setsampwidth`(n)

  Définit la largeur de l’échantillon à n octets.

`Wave_write.``setframerate`(n)

  Définit la fréquence des trames à n.

`Wave_write.``setnframes`(n)

  Set the number of frames to n. This will be changed later if more frames are written.

`Wave_write.``setcomptype`(type, name)

  Définit le type de compression et la description. Pour le moment, seul le type de compression `NONE` est géré, c’est-à-dire aucune compression.

`Wave_write.``setparams`(tuple)

  Le tuple doit être `(nchannels, sampwidth, framerate, nframes, comptype, compname)`, avec des valeurs valides pour les méthodes `set*()`. Tous les paramètres sont obligatoires et doivent être définis.

`Wave_write.``tell`()

  Renvoie la position actuelle dans le fichier, avec les mêmes réserves que pour les méthodes `Wave_read.tell()` et `Wave_read.setpos()`.

`Wave_write.``writeframesraw`(data)

  Écrit les trames audio sans corriger nframes.

`Wave_write.``writeframes`(data)

  Write audio frames and make sure nframes is correct.

Notez qu’il est impossible de définir des paramètres après avoir appelé `writeframes()` ou `writeframesraw()`, et toute tentative en ce sens lève une `wave.Error`.