Gracias a @Matthias por la sugerencia de usar el módulo de dispositivo de sonido. Es exactamente lo que necesito.
Para la posteridad, aquí hay un ejemplo de trabajo que imprime niveles de audio en tiempo real en el 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)
Usuario de Python 3 aquí
Tuve algunos problemas para que funcionara, así que usé:https://python-sounddevice.readthedocs.io/en/0.3.3/examples.html#plot-microphone-signal-s-in-real-time
Y necesito instalar sudo apt-get install python3-tk
para python 3.6 busque el módulo Tkinter no encontrado en Ubuntu
Luego modifiqué el 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)
Y sí, funciona :)