GNU/Linux >> Linux Esercitazione >  >> Linux

Linux reindirizza il file audio all'ingresso del microfono

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!


  1. Assicurati di aver installato PulseAudio Volume Control (pavucontrol). in caso contrario, puoi installarlo semplicemente digitando nel tuo terminale:sudo apt install pavucontrol .

  1. 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.

  1. 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.

  2. Assicurati di riportarlo su "Audio stereo analogico integrato" al termine della riproduzione dell'audio affinché tutto torni alla normalità.


Linux
  1. Come spostare un file in Linux

  2. Reindirizzamento input/output in Linux/Unix

  3. Linux:tutto è un file?

  4. Come posso reindirizzare al comando split di Linux?

  5. Modifica dei file al volo in Linux (scrittura nel file di input su una pipe)

Comando Gunzip in Linux

Comando Stat in Linux

Come dividere file audio di grandi dimensioni su Linux

Controllo audio avanzato su Linux

Introduzione al software per workstation audio Tracktion 5 DAW su Linux

Cos'è umask in Linux?