Я пытаюсь создать виртуальный микрофон для питания других программ, нуждающихся в аудиовходе. Я использую решение, предложенное cheerupcharlie в апреле 2017 года
Теперь он обрабатывает, как только он пишет в канал, вы должны открыть другой сеанс терминала и прочитать из канала. Затем он снова запишет в канал (см. Цикл while в скрипте). То, что я хочу сделать, это выполнить скрипт Python из основного скрипта (см. Строку комментария в цикле). А затем вернитесь, чтобы снова написать в трубу. В настоящее время все, что он делает, это зависает после записи в канал (все еще ожидает чтения из другого процесса)
Есть предложения?
Вот сценарий
#!/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
echo "Creating virtual microphone."
pactl load-module module-pipe-source source_name=virtmic file=/home/pi/audiofiles/virtmic format=s16le rate=44100 channels=2
# 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" > /home/pi/.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."
n=1
while (( $n <= 3))
do
ffmpeg -re -i testout.wav -f s16le -ar 44100 -ac 2 - > /home/pi/audiofiles/virtmic
echo "speechrec running"
# python3 speechrec.py
n=$(( n+1 ))
done