13

Is such a thing even possible?

Is there a possibility to create a virtual sound card and then use for example PyAudio to listen to its output and save it to a file? NOTE that there is no hardware soundcard present on the machine.

I have tried a lot of things, especially snd-dummy ALSA module, but I am starting to doubt if I am looking for the right tools. I would be grateful if someone could point me towards at least high-level solution. Preferably something that would work on Ubuntu server.

Paweł Duda
  • 1,713
  • 4
  • 18
  • 36

3 Answers3

11

Thanks to both @mjy and @Matthias I have finally managed to figure out the minimal steps to take in order to make the recording work:

sudo apt-get install pulseaudio jackd2 alsa-utils dbus-x11

No need to play with snd-dummy, no need to create any additional config files... All these things only caused me to lose few hours :( After installing these packages on a clean Ubuntu server installation, I was able to run Python script and capture output audio to a file using PyAudio...

Paweł Duda
  • 1,713
  • 4
  • 18
  • 36
  • 1
    You are the man & Saved me hours <3 -- a note: you can check that this answer is working by typing `python3 -m sounddevice` in a terminal – Jealie May 17 '20 at 17:29
  • Thanks! Was setting up baresip in debian netinst and ubuntu server and this worked like a charm. My error message was "alsa could not open auplay device 'default' (no such file or directory)" for context – r3dapple Dec 18 '20 at 15:47
  • This is a great solution! – Dinuka Salwathura May 13 '21 at 12:51
4

If the application producing the sound supports JACK, this should be easy. Then you only need to select the dummy driver for JACK and you can route the audio signal to any sound recording program you want (as long as it also supports JACK).

You'll need the package jackd, which has a command line interface for starting the JACK daemon. The package qjackctl provides a nice GUI for experimenting with different settings and for making audio connections between programs. For recording, you can try the program jack_rec which is part of jackd, but there are many other recording application for JACK available as well.

If you want to use Python for recording, you can try the sounddevice and soundfile modules. If you need some JACK-specific functionality, you should try jackclient-python.

Matthias
  • 4,524
  • 2
  • 31
  • 50
1

Install the PulseAudio.

sudo apt install pulseaudio

PulseAudio has emulation for ALSA.

mjy
  • 315
  • 2
  • 13