我可以设置回送音频设备吗?


16

如果我可以将音频发送到输出设备,则可以录制与波形相同的音频。使用文件系统,您可以只设置回送文件系统,然后在文件而不是设备上写入二进制数据。

我的问题是:我可以将音频信号发送到(例如)WAV文件而不是音频设备吗?怎么样?


该视频介绍了四种声卡环回模式。youtu.be/pqV3P9zRyYc

Answers:


11

是。

其实有很多方法。您可以设置一个声音虚拟声卡设备,您可以将数据从该设备中提取出来……但这不是一种非常有用的格式。

对您而言更有用的是类似于该arecord实用程序的工具,它使您可以窃听alsa输出流并将其保存为几种已知格式。基本上,您可以在alsa声音系统上播放的所有内容都可以复制到标准格式的声音文件中。

存在用于脉冲音频的类似工具


8

如果您的系统或仅您想要记录的应用程序将其输出定向到声音服务器,请考虑对该声音服务器进行记录的可能性。例如,在Ubuntu上,官方的声音服务器是PulseAudio,它是parec命令附带的(来自pulseaudio-utils软件包 install pulseaudio-utils http://bit.ly/software-small)。您可能需要将输出从SoX转换parec成可用的东西(Ubuntu:安装sox http://bit.ly/software-small)。sox

parec -r --rate=44100 | sox --type raw --rate 44100 - --type ogg recording.ogg

这并没有为我工作,但这种变化-上的主题那样:askubuntu.com/questions/60837/...
ixtmixilix

4

它被认为是可能直接到Audacity的记录,但我无法得到那个工作我的系统(Ubuntu的10.10)上。因此,按照Audacity Wiki 此处的说明,我使用ALSA播放设备将音频转移到文件中。

这使用一个.asoundrc文件(在您的主目录中):

pcm.teeraw {
   type empty
   slave.pcm "tee:default,'/tmp/out.raw',raw"
   # 48000 S16_LE 2ch (aplay -t raw -f dat)
}

对于从Flash录制(在Firefox上),我使用

FLASH_ALSA_DEVICE=teeraw firefox

生成的文件/tmp/out.raw为原始格式,因此转换文件时需要知道正确的参数。奇怪的是,lame似乎能够自己解决此问题,但sox需要明确了解它。因此,以下所有方法似乎都有效:

aplay -t raw -f dat -r 44100 /tmp/out.raw # to play
sox -r 44100 -b 16 -e signed -c 2 /tmp/out.raw /tmp/out.wav # to convert to wav
lame /tmp/out.raw # to convert to mp3

Audacity Wiki上的链接已死。
Suzana 2015年

0

ALSA树中有一个回送驱动程序aloop-kernel.c(通过此处);您必须自己构建(并通过aplay/之类的音频应用程序弄清其作为一台设备的利用率arecord)...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.