Faire un don
Fichiers audio libres de droits et gratuits.
🛒 Panier | đŸ‘€ Compte
Sons gratuits et bruitages a telecharger
🎁 La SonothĂšque offre 1 jour sans pub ! CrĂ©ez votre compte gratuit 🎁
Tous les dossiers

Fabriquer un enregistreur audio (avec un Raspberry)

Avec ce dossier, on va fabriquer un enregistreur audio basĂ© sur Raspberry Pi, en Python 3, avec une carte son USB (un Raspberry Pi n’a pas d’entrĂ©e micro).

Dans le mĂȘme style, je vous ai dĂ©jĂ  proposĂ© diffĂ©rents dossiers plus simples pour rĂ©aliser des boĂźtes Ă  sons avec un “DF Player”, avec un “Arduino” + “DF Player”, et avec un Raspberry Pi.

Comme toujours, si vous avez la moindre question, n’hĂ©sitez pas Ă  me contacter !

Présentation

Le Raspberry Pi est un micro-ordinateur bon marchĂ© et trĂšs pratique pour l’audio. Mais il y a un point Ă  comprendre dĂšs le dĂ©part : le Raspberry Pi n’a pas d’entrĂ©e audio analogique. Il sait sortir du son, mais pas enregistrer un micro “en jack” tout seul. Donc, pour enregistrer, il vous faut soit :

  • un micro USB (le plus simple),
  • ou une carte son USB avec entrĂ©e micro/line (souvent plus robuste et plus qualitative).

L’avantage d’une carte son USB, c’est que ça se branche, ça se remplace facilement, et ça vous laisse la libertĂ© de choisir le micro. N’importe quelle interface audio USB peut convenir, du petit dongle Ă  10€ jusqu’à une vraie interface studio.

Cependant, les mini “cartes son USB” trĂšs basiques (les dongles Ă  2€ Ă  10€) fonctionnent, mais sont parfois bruitĂ©es, avec un gain micro mĂ©diocre. Si votre projet doit ĂȘtre propre, prĂ©voyez une interface correcte ou un micro USB de qualitĂ©.

CĂŽtĂ© logiciel, on va s’appuyer sur ALSA (le systĂšme audio Linux) et un script Python qui enregistre en WAV, avec un nom de fichier automatique (date/heure). On verra aussi comment lancer le script au dĂ©marrage, et comment dĂ©clencher l’enregistrement avec un bouton sur le GPIO.

Votre projet

Une idée d'installation : mon Sonomaton

D’ailleurs, fabriquer un enregistreur audio avec un Raspberry Pi est la base technique de mon installation sonore "Sonomaton" : Comme un traditionnel photomaton, le "Sonomaton" offre un espace d'expression libre, mais sonore. Car, au lieu de capturer les trombines, il enregistre les voix. Il fait partie de mes nombreuses installations sonores.

ConcrĂštement, il s’agit d’un combinĂ© tĂ©lĂ©phonique dont le haut-parleur et le micro sont reliĂ©s Ă  une carte son, elle-mĂȘme reliĂ©e en USB Ă  un Raspberry Pi. Le choix du combinĂ© tĂ©lĂ©phonique est pratique dans mon cas : il oblige les gens Ă  Ă©couter les consignes et impose une distance constante vis-Ă -vis du microphone. C’est plus difficile Ă  garantir avec un micro + casque “libres”.

Les gens dĂ©crochent et entendent un fichier d’intro leur proposant de rĂ©agir Ă  l’un des trois thĂšmes (A, B ou C). Ils appuient sur l’un des trois boutons : le bouton s’illumine en rouge pour signifier que l’enregistrement a dĂ©marrĂ©. Une voix dĂ©crit ensuite la question en dĂ©tail et invite Ă  parler. Ils peuvent changer de bouton/thĂšme ou raccrocher. Au raccrochage du combinĂ©, l’enregistrement s’arrĂȘte. J’ai poussĂ© les dĂ©tails assez loin, dont l’ajout d’un voyant “ON AIR” qui s’allume au dĂ©crochage du combinĂ©, Ă  l’extĂ©rieur de la cabine, pour indiquer qu’elle est occupĂ©e.

Une fois le Sonomaton utilisĂ©, il ne me reste plus qu’à rĂ©cupĂ©rer les fichiers dans les dossiers /A/, /B/ et /C/.

Étape par Ă©tape

1. Préparation

Installez Raspberry Pi OS avec “Raspberry Pi Imager” (Windows, Mac, Linux) : page officielle.

Si vous débutez, installez une version avec interface graphique. Vous gagnerez du temps (et vous éviterez 90% des galÚres liées à une configuration au clavier).

2. Branchement et vérification de la carte son USB

Branchez votre micro USB ou votre carte son USB, puis ouvrez un terminal. Listez les pĂ©riphĂ©riques d’enregistrement :

arecord -l
arecord --list-pcms

Ces commandes permettent d’identifier la carte et le pĂ©riphĂ©rique utilisĂ©s par ALSA.

3. Installation des outils (et la question “pip” sur Raspberry Pi OS)

Mettez le systĂšme Ă  jour :

sudo apt update
sudo apt full-upgrade -y

Installez ce qu’il faut pour enregistrer en Python (dont PortAudio) :

sudo apt install -y python3-venv python3-pip portaudio19-dev libsndfile1

Le paquet portaudio19-dev est une dépendance classique pour les bibliothÚques audio Python (sounddevice, pyaudio, etc.).

Important : depuis Raspberry Pi OS “Bookworm”, Ă©vitez d’installer des bibliothĂšques avec pip dans le Python systĂšme. Utilisez un environnement virtuel (venv).

Créez un dossier de projet, puis un venv :

mkdir -p /home/LOGIN/sonomaton-rec
cd /home/LOGIN/sonomaton-rec
python3 -m venv .venv
source .venv/bin/activate

Installez les bibliothĂšques Python :

pip install sounddevice soundfile

4. Test rapide en ligne de commande (avant Python)

Avant d’accuser Python, testez dĂ©jĂ  que l’enregistrement fonctionne au niveau Linux. Exemple, 10 secondes en WAV stĂ©rĂ©o :

arecord -d 10 -c 2 -r 48000 -f S16_LE test.wav

C’est volontairement simple : si ça Ă©choue ici, votre problĂšme est la carte son, le micro, ou ALSA.

5. Programmation : un enregistreur WAV en Python

Ouvrez Thonny (ou un éditeur), et créez rec.py dans /home/LOGIN/sonomaton-rec.

import os
from datetime import datetime

import sounddevice as sd
import soundfile as sf

# Dossier de sortie
OUT_DIR = "/home/LOGIN/sonomaton-rec/records"

# Réglages audio (à adapter)
SAMPLE_RATE = 48000
CHANNELS = 1          # 1 = mono, 2 = stéréo
DURATION_S = 10       # durĂ©e d’enregistrement en secondes

# Optionnel : choisir un device précis
# Laissez à None pour le device par défaut ALSA
INPUT_DEVICE = None   # exemple: 2 (index sounddevice)

def ensure_out_dir():
    os.makedirs(OUT_DIR, exist_ok=True)

def filename():
    ts = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    return os.path.join(OUT_DIR, f"rec_{ts}.wav")

def record_once():
    ensure_out_dir()
    path = filename()

    print("Périphériques audio disponibles :")
    print(sd.query_devices())

    print(f"Enregistrement {DURATION_S}s -> {path}")
    audio = sd.rec(
        int(DURATION_S * SAMPLE_RATE),
        samplerate=SAMPLE_RATE,
        channels=CHANNELS,
        device=INPUT_DEVICE,
        dtype="int16",
    )
    sd.wait()

    sf.write(path, audio, SAMPLE_RATE, subtype="PCM_16")
    print("Terminé.")

if __name__ == "__main__":
    record_once()

Ce script fait exactement ce qu’on veut : un enregistrement WAV propre, horodatĂ©, dans un dossier dĂ©diĂ©.

N’oubliez pas de remplacer LOGIN par votre nom d’utilisateur Raspberry.

6. Déclenchement avec un bouton GPIO (optionnel, mais trÚs utile)

Si vous voulez une logique “installation” (un bouton, un enregistrement), le GPIO est parfait. Voici une version simple : un appui lance un enregistrement (et ignore les appuis pendant l’enregistrement).

import os
from datetime import datetime
import threading

import sounddevice as sd
import soundfile as sf
from gpiozero import Button, LED

OUT_DIR = "/home/LOGIN/sonomaton-rec/records"
SAMPLE_RATE = 48000
CHANNELS = 1
DURATION_S = 10
INPUT_DEVICE = None

btn = Button(17, pull_up=True)  # bouton entre GPIO17 et GND
led = LED(27)                   # LED sur GPIO27 (avec résistance)
busy = False

def ensure_out_dir():
    os.makedirs(OUT_DIR, exist_ok=True)

def filename():
    ts = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    return os.path.join(OUT_DIR, f"rec_{ts}.wav")

def do_record():
    global busy
    if busy:
        return
    busy = True
    led.on()

    ensure_out_dir()
    path = filename()

    audio = sd.rec(
        int(DURATION_S * SAMPLE_RATE),
        samplerate=SAMPLE_RATE,
        channels=CHANNELS,
        device=INPUT_DEVICE,
        dtype="int16",
    )
    sd.wait()
    sf.write(path, audio, SAMPLE_RATE, subtype="PCM_16")

    led.off()
    busy = False
    print(f"OK: {path}")

def on_press():
    threading.Thread(target=do_record, daemon=True).start()

btn.when_pressed = on_press

print("PrĂȘt. Appuyez sur le bouton pour enregistrer.")
while True:
    pass

Vous avez maintenant un “magnĂ©tophone” minimal : bouton, LED, fichiers WAV horodatĂ©s. C’est typiquement le genre de base qui sert ensuite Ă  construire une installation comme Sonomaton.

7. Autostart propre au démarrage (recommandé : systemd)

Pour une installation, vous ne voulez pas “ouvrir Thonny et cliquer Run”. Utilisez un service systemd, c’est fait pour ça.

Créez un fichier de service :

sudo nano /etc/systemd/system/sonomaton-rec.service

Collez (en adaptant LOGIN et le nom du script) :

[Unit]
Description=Sonomaton Recorder
After=network.target sound.target

[Service]
Type=simple
User=LOGIN
WorkingDirectory=/home/LOGIN/sonomaton-rec
ExecStart=/home/LOGIN/sonomaton-rec/.venv/bin/python /home/LOGIN/sonomaton-rec/rec_gpio.py
Restart=on-failure

[Install]
WantedBy=multi-user.target

Activez et démarrez :

sudo systemctl daemon-reload
sudo systemctl enable sonomaton-rec.service
sudo systemctl start sonomaton-rec.service

Idées supplémentaires

  • durĂ©e variable : enregistrer tant que le bouton est appuyĂ© (start/stop) au lieu d’une durĂ©e fixe.
  • dĂ©tection de niveau : dĂ©clencher automatiquement si le son dĂ©passe un seuil (pratique en ambiance).
  • compression mp3 : enregistrer en WAV, puis convertir en MP3 avec ffmpeg (plus lĂ©ger, mais ce n’est plus “brut”).
  • nommage mĂ©tier : plutĂŽt qu’une date, un compteur de prise, un nom de visiteur, un identifiant de session, etc.
  • double flux : enregistrer, puis jouer immĂ©diatement (ou envoyer vers un serveur) selon le principe de votre installation.

Conclusion

Vous avez maintenant un enregistreur audio autonome basĂ© sur Raspberry Pi : une entrĂ©e micro via USB, un script Python, des fichiers WAV propres, et une option bouton/LED + lancement automatique au dĂ©marrage. C’est le socle technique qui permet ensuite de monter une installation comme Sonomaton.

Si vous voulez rester sur des systÚmes plus simples orientés lecture (et non enregistrement), relisez aussi mes dossiers : DF Player, Arduino + DF Player, et Raspberry Pi.

Et si ça coince (son absent, mauvais périphérique, volume trop faible, souffle), ne perdez pas une journée à bricoler au hasard : commencez par valider arecord, puis seulement aprÚs Python. Si vous avez la moindre question, contactez-moi.

- Joseph SARDIN - Fondateur et Sonothécaire de BigSoundBank.com et LaSonotheque.org - Contact