GNU/Linux >> Tutoriales Linux >  >> Linux

Linux canaliza el archivo de audio a la entrada del micrófono

Después de muchas horas laboriosas, finalmente conseguí algo aceptable que funcionara. Deshice todo lo que hice con ALSA (ya que el valor predeterminado es que ALSA use PulseAudio en su lugar, que inicialmente anulé). Creé un script bash simple install_virtmic.sh para crear un "micrófono virtual" para que PulseAudio lo use, así como los clientes de 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 guión rápido uninstall_virtmic.sh para deshacer todo lo hecho por el script de instalación:

#!/bin/bash

# Uninstall the virtual microphone.

pactl unload-module module-pipe-source
rm /home/charles/.config/pulse/client.conf

Luego encendí Chromium e hice clic en el micrófono para usar su función de búsqueda por voz y ¡funcionó! También probé con arecord test.raw -t raw -f S16_LE -c 1 -r 16000 ¡y funcionó también! No es perfecto, porque sigo escribiendo en la canalización con nombre virtmic en un bucle infinito en el script (que rápidamente hizo que mi test.raw archivo increíblemente grande), pero servirá por ahora.

¡No dude en hacerme saber si alguien encuentra una solución mejor!


  1. Asegúrese de tener instalado el control de volumen PulseAudio (pavucontrol). si no, puedes instalarlo simplemente escribiendo en tu terminal:sudo apt install pavucontrol .

  1. Abra el control de volumen de PulseAudio (pavucontrol) y vaya a la pestaña "Grabación". Cuando no tenga ningún dispositivo grabando su micrófono, este panel debería verse vacío. Tan pronto como cualquier aplicación comience a grabar o inicie una llamada de Skype, este panel debe tener al menos una entrada.

  1. Seleccionar "Estéreo analógico de audio incorporado" es el comportamiento predeterminado (redirigir su voz a la salida del micrófono). También debería ver "Monitor de estéreo analógico de audio integrado". cuando selecciona esta opción, la salida de cualquier aplicación que reproduzca audio (por ejemplo, VLC) debe redirigirse al micrófono en lugar de a su voz.

  2. Asegúrate de volver a cambiarlo a "Estéreo analógico de audio incorporado" después de que el audio termine de reproducirse para que todo vuelva a la normalidad.


Linux
  1. Cómo mover un archivo en Linux

  2. Redirección de entrada/salida en Linux/Unix

  3. Linux – ¿Todo es un archivo?

  4. ¿Cómo canalizo el comando dividido de Linux?

  5. Cambiar archivos sobre la marcha en Linux (escribir en el archivo de entrada en una tubería)

Comando Gunzip en Linux

Comando Stat en Linux

Cómo dividir archivos de audio grandes en Linux

Control de audio avanzado en Linux

Introducción al software de estación de trabajo de audio Tracktion 5 DAW en Linux

¿Qué es umask en Linux?