我需要使用现有的录音来模拟录制audio文件的过程。
我运行Ubuntu 8.10,并认为这将是非常简单的,但现在似乎不是那么简单。
我想做什么的“概念”是,
$ cat myaudio.wav > /dev/mic
还有另一个程序正在监听/等待input。
编辑:也许从我解释这一点的方式不清楚,但我想基本上欺骗的麦克风inputstream媒体预录制的声音文件到麦克风设备。
我可以
$ cat /dev/dsp > myfile.au
捕获原始input,并
$ cat myfile.au > /dev/dsp
把录音streaminput到我的扬声器,所以我有点困惑,为什么我不能做类似麦克风/录音function的东西? 我仍然知道在Linux上的低级声音的东西,但似乎很奇怪,这是不可能的。
移开设备节点,或重新编译声音库以打开其他内容。 这样,你可以把你自己的先锋,或假环回声音驱动程序,或者什么。
PulseAudio将允许您这样做,假设您的录音工具也使用PulseAudio。 我相信,ALSA可以configuration为使用不同的音源来源。 我猜测答案真的取决于你使用什么应用程序来logging和他们正在使用什么堆栈。
Vsound也会帮你做到这一点。 而最酷的是你可以把声音循环到任何东西。 试一试。 vsound.org
检查是否无法将录音源设置为输出, 然后播放。 我认为这是声卡的一个共同特点,但是这是你必须说服硬件去做的事情。
第一步是安装alsa-utilities软件包(假设只有RHEL / CentOS和命令行):yum install alsa-utils
然后使用alsa混音器命令行文本用户界面启用播放:alsamixer
要testing我使用扬声器testing实用程序的设置:speaker-test -c2
有一点扬声器testing可以做到这一点,这是一个有趣的,将惹恼小动物:扬声器testing-c2 -t正弦波-f 4400
最后的部分是看看录制是否使用这个命令:arecord -v -f cd> soundfile.sound
并播放:aplay soundfile.sound
感谢所有的答复。 这原来是相当学习的经验。 特别是我了解到,linux仍然有一些重要的区域,声音设置(也许是最大的)就是其中之一。
将麦克风input捕捉到文件(或套接字)是相当容易的,直观地说,将文件捕捉到麦克风所读入的内容应该是同样简单的,以便从麦克风读取任何内容都能读取所述声音文件。 但不幸的是,情况并非如此。
因此,我最终修改了监听程序,以便它可以监听套接字而不是原话筒input。 然后我写了一个简单的perl客户端来将麦克风inputredirect到套接字,
#!/usr/bin/perl -w use strict; use warnings; use IO::Socket; my $dspdev = '/dev/dsp'; my $port = 8000; my $host = "127.0.0.1"; my $sock = new IO::Socket::INET( PeerAddr => $host, PeerPort => $port, Type => SOCK_STREAM, Proto => "tcp", ) || die "Couldn't open socket: $!\n"; open(DSP, "<", $dspdev)||die "can't open $dspdev: $!\n"; while( 1 ) { my $rbuf = ""; sysread(DSP, $rbuf, 4096); syswrite($sock, $rbuf); }
在这个阶段,这就是我所需要的,但似乎需要多一点努力。 我已经提出了一个解决scheme,但是我没有真正回答我原来的问题,所以我会把这个开放的。
编辑:决定closures这个,因为它似乎没有吸引更多的关注。