Nach vielen mühsamen Stunden habe ich endlich etwas Akzeptables zum Laufen gebracht. Ich habe alles rückgängig gemacht, was ich mit ALSA gemacht habe (da ALSA standardmäßig PulseAudio verwendet, was ich ursprünglich überschrieben habe). Ich habe ein einfaches Bash-Skript install_virtmic.sh
erstellt um ein "virtuelles Mikrofon" zu erstellen, das PulseAudio sowie PulseAudio-Clients verwenden können:
#!/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=/home/charles/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" > /home/charles/.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
cat audioFile0.raw > /home/charles/audioFiles/virtmic
done
Ein schnelles Skript uninstall_virtmic.sh
um alles rückgängig zu machen, was das Installationsskript gemacht hat:
#!/bin/bash
# Uninstall the virtual microphone.
pactl unload-module module-pipe-source
rm /home/charles/.config/pulse/client.conf
Ich habe dann Chromium gestartet und auf das Mikrofon geklickt, um die Sprachsuchfunktion zu verwenden, und es hat funktioniert! Ich habe es auch mit arecord test.raw -t raw -f S16_LE -c 1 -r 16000
versucht und es hat auch funktioniert! Es ist nicht perfekt, weil ich immer wieder in die Named Pipe virtmic
schreibe in einer Endlosschleife im Skript (was schnell meine test.raw
Datei wahnsinnig groß), aber für den Moment reicht es aus.
Bitte lassen Sie es mich wissen, wenn jemand da draußen eine bessere Lösung findet!
- Stellen Sie sicher, dass PulseAudio Volume Control (pavucontrol) installiert ist. Wenn nicht, können Sie es installieren, indem Sie einfach in Ihr Terminal eingeben:
sudo apt install pavucontrol
.
- Öffnen Sie die PulseAudio-Lautstärkeregelung (pavucontrol) und gehen Sie zur Registerkarte „Aufnahme“. Wenn Sie kein Gerät haben, das Ihr Mikrofon aufzeichnet, sollte dieses Feld leer aussehen. Sobald eine Anwendung mit der Aufzeichnung oder einem Skype-Anruf beginnt, sollte dieses Panel mindestens einen Eintrag haben.
-
Die Auswahl von „Integriertes analoges Audio-Stereo“ ist das Standardverhalten (leiten Sie Ihre Stimme zum Mikrofonausgang um). Sie sollten auch „Monitor of Built-in Audio Analog Stereo“ sehen. Wenn Sie diese Option auswählen, sollte die Ausgabe jeder Anwendung, die Audio abspielt (z. B. VLC), an das Mikrofon statt an Ihre Stimme umgeleitet werden.
-
Stellen Sie sicher, dass Sie es wieder auf „Integriertes analoges Audio-Stereo“ ändern, nachdem die Audiowiedergabe beendet ist, damit alles wieder normal funktioniert.