Merci à @Matthias pour la suggestion d'utiliser le module sounddevice. C'est exactement ce dont j'ai besoin.
Pour la postérité, voici un exemple de travail qui imprime des niveaux audio en temps réel sur le shell :
# Print out realtime audio volume as ascii bars
import sounddevice as sd
import numpy as np
def print_sound(indata, outdata, frames, time, status):
volume_norm = np.linalg.norm(indata)*10
print ("|" * int(volume_norm))
with sd.Stream(callback=print_sound):
sd.sleep(10000)
Utilisateur de Python 3 ici
J'ai eu quelques problèmes pour que cela fonctionne, alors j'ai utilisé :https://python-sounddevice.readthedocs.io/en/0.3.3/examples.html#plot-microphone-signal-s-in-real-time
Et je dois installer sudo apt-get install python3-tk
pour python 3.6 look module Tkinter introuvable sur Ubuntu
Puis j'ai modifié le script :
#!/usr/bin/env python3
import numpy as np
import sounddevice as sd
duration = 10 #in seconds
def audio_callback(indata, frames, time, status):
volume_norm = np.linalg.norm(indata) * 10
print("|" * int(volume_norm))
stream = sd.InputStream(callback=audio_callback)
with stream:
sd.sleep(duration * 1000)
Et oui ça marche :)