Аудио-файл Linux pipe к входу микрофона - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь создать виртуальный микрофон для питания других программ, нуждающихся в аудиовходе. Я использую решение, предложенное 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
...