Dopo molte ore scrupolose, ho finalmente ottenuto qualcosa di accettabile funzionante. Ho annullato tutto ciò che ho fatto con ALSA (poiché l'impostazione predefinita è che ALSA utilizzi invece PulseAudio, che inizialmente ho ignorato). Ho creato un semplice script bash install_virtmic.sh
per creare un "microfono virtuale" che PulseAudio possa utilizzare così come i client PulseAudio:
#!/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
Un rapido script uninstall_virtmic.sh
per annullare tutto ciò che è stato fatto dallo script di installazione:
#!/bin/bash
# Uninstall the virtual microphone.
pactl unload-module module-pipe-source
rm /home/charles/.config/pulse/client.conf
Ho quindi avviato Chromium e ho fatto clic sul microfono per utilizzare la sua funzione di ricerca vocale e ha funzionato! Ho provato anche con arecord test.raw -t raw -f S16_LE -c 1 -r 16000
e ha funzionato anche! Non è perfetto, perché continuo a scrivere sulla pipe con nome virtmic
in un ciclo infinito nello script (che ha reso rapidamente il mio test.raw
file incredibilmente grande), ma per ora andrà bene.
Non esitare a farmi sapere se qualcuno là fuori trova una soluzione migliore!
- Assicurati di aver installato PulseAudio Volume Control (pavucontrol). in caso contrario, puoi installarlo semplicemente digitando nel tuo terminale:
sudo apt install pavucontrol
.
- Apri PulseAudio Volume Control (pavucontrol) e vai alla scheda "Registrazione". Quando non hai dispositivi che registrano il tuo microfono, questo pannello dovrebbe apparire vuoto. Non appena un'applicazione inizia a registrare o avvia una chiamata Skype, questo pannello dovrebbe avere almeno una voce.
-
Selezionare "Built-in Audio Analog Stereo" è il comportamento predefinito (reindirizzare la voce all'uscita del microfono). Dovresti anche vedere "Monitor dello stereo analogico audio integrato". quando selezioni questa opzione, l'output di qualsiasi applicazione che riproduce audio (ad es. VLC) dovrebbe essere reindirizzato al microfono anziché alla tua voce.
-
Assicurati di riportarlo su "Audio stereo analogico integrato" al termine della riproduzione dell'audio affinché tutto torni alla normalità.