Итак, я нашел пример, который показывает, как передать волновой файл в качестве входа микрофона, используя «модуль-труба-модуль-труба-пакет».Я также нашел, как заставить это не добавлять аудио бесконечно.Вот что я закончил:
#!/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
Я думаю, что это может быть потому, что модуль "модуль-труба-источник" не установлен (РЕДАКТИРОВАТЬ: он установлен, и он может быть загружен только с
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
Да, это так просто.