问题
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.
回答1:
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...
回答2:
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.
回答3:
Install the PulseAudio.
sudo apt install pulseaudio
PulseAudio has emulation for ALSA.
来源:https://stackoverflow.com/questions/40061291/linux-without-hardware-soundcard-capture-audio-playback-and-record-it-to-fil