linux使用pactl将音频传输到虚拟麦克风

时间:2018-07-02 03:28:08

标签: ubuntu audio microphone alsa pulseaudio

我找到了一个示例,该示例显示了如何利用“ pactl load-module module-pipe-source”将波形文件作为麦克风输入传递。此示例的问题在于,它依赖于无限的while循环,并且当音频文件一次成功通过麦克风放置时,它不会停止。如果有人可以修复此示例,那就太好了。我听说过: sudo modprobe snd-dummy 但是不知道如何使用它。文档非常缺乏。

示例如下:

# Load the "module-pipe-source" module to read audio data from a FIFO special file.
pactl load-module module-pipe-source source_name=virtmic 
file=/home/cammy/audioFiles/virtmic format=s16le rate=16000 channels=1

# Set the virtmic as the default source device.
pactl set-default-source virtmic

# Write the audio file to the named pipe virtmic. This will block until the named pipe is read.
echo "Writing audio file to virtual microphone."
while true; do
    cat good_morning_vietnam.wav > /home/cammy/audioFiles/virtmic
done

您可以想象,这样做的结果是音频剪辑不断重复循环播放。我只希望播放一次,而不是多次。 如果我尝试以下行:

cat good_morning_vietnam.wav > /home/cammy/audioFiles/virtmic
在while循环之外的

。似乎只有一小部分音频文件到达了麦克风,而不是整个剪辑。我不知道为什么会这样。不确定是否定期清除麦克风文件之类的东西。

1 个答案:

答案 0 :(得分:0)

我找到了答案,作为对另一个类似问题(Linux pipe audio file to microphone input)的评论:

ffmpeg -re -i $AUDIO_FILE -f s16le -ar 16000 -ac 1 - > $VIRTUAL_MIC