因此,我找到了一个示例,展示了如何通过使用“ pactl load-module module-pipe-source”将波形文件作为麦克风输入传递。我还发现了如何使其不会无限添加音频。这就是我最终得到的:
#!/bin/bash
# This script will create a virtual microphone for PulseAudio to use and set it as the default device.
# Load the "module-pipe-source" module to read audio data from a FIFO special file.
echo "Creating virtual microphone."
pactl load-module module-pipe-source source_name=virtmic file = ~/audioFiles/virtmic format=s16le rate=16000 channels=1
# Set the virtmic as the default source device.
echo "Set the virtual microphone as the default device."
pactl set-default-source virtmic
# Create a file that will set the default source device to virtmic for all
PulseAudio client applications.
echo "default-source = virtmic" > ~/.config/pulse/client.conf
# 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
ffmpeg -re -i test.ogg -f s16le -ar 16000 -ac 1 - > ~/audioFiles/virtmic
done
问题是,当我尝试运行它时,我受到了轰炸:
/home/user/MakeVirMic.sh: line 20: /home/user/audioFiles/virtmic: No such file or directory
因此,在检查拼写并搜索〜/ audioFiles / virtmic(它不存在)之后,我认为它无法产生病毒性,因此我决定手动创建它。这是我得到的:
user@thisPC:~$ pactl load-module module-pipe-source source_name=virtmic file = ~/audioFiles/virtmic format=s16le rate=16000 channels=1
Failure: Module initialization failed
我认为可能是因为未安装模块“ module-pipe-source”(编辑:已安装并且可以仅使用
进行加载pactl load-module module-pipe-source
,问题是它无法解析参数),但说实话我不知道。有什么我可以做的吗?
解决方案:
#!/bin/bash
# This script will create a virtual microphone for PulseAudio to use and set it as the default device.
# Load the "module-pipe-source" module to read audio data from a FIFO special file.
rm /home/pi/audiofiles/virtmic
pulseaudio -k
echo "Creating virtual microphone."
pactl load-module module-pipe-source source_name=virtmic
file=~/audiofiles/virtmic format=s16le rate=44100 channels=1
# Set the virtmic as the default source device.
echo "Set the virtual microphone as the default device."
pactl set-default-source virtmic
# Create a file that will set the default source device to virtmic for all
# pulseaudio client applications.
echo "default-source = virtmic" > ~/.config/pulse/client.conf
# 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."
ffmpeg -re -i ~/test.ogg -f s16le -ar 44100 -ac 1 - > ~/audioFiles/virtmic
是的,就是这么简单。