Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linux - Without hardware soundcard, capture audio playback, and record it to file

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.

like image 558
Paweł Duda Avatar asked Oct 15 '16 16:10

Paweł Duda


2 Answers

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...

like image 122
Paweł Duda Avatar answered Oct 07 '22 17:10

Paweł Duda


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.

like image 35
Matthias Avatar answered Oct 07 '22 18:10

Matthias