GNU/Linux >> Tutoriels Linux >  >> Linux

Fichier audio de tuyau Linux vers l'entrée du microphone

Après de nombreuses heures laborieuses, j'ai finalement réussi à faire fonctionner quelque chose d'acceptable. J'ai annulé tout ce que j'ai fait avec ALSA (puisque ALSA utilise par défaut PulseAudio à la place, ce que j'ai d'abord remplacé). J'ai créé un simple script bash install_virtmic.sh pour créer un "microphone virtuel" que PulseAudio pourra utiliser ainsi que les clients 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 petit script uninstall_virtmic.sh pour annuler tout ce qui a été fait par le script d'installation :

#!/bin/bash

# Uninstall the virtual microphone.

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

J'ai ensuite allumé Chromium et cliqué sur le microphone pour utiliser sa fonction de recherche vocale et cela a fonctionné ! J'ai aussi essayé avec arecord test.raw -t raw -f S16_LE -c 1 -r 16000 et ça a marché aussi ! Ce n'est pas parfait, car je continue d'écrire dans le canal nommé virtmic dans une boucle infinie dans le script (ce qui a rapidement rendu mon test.raw fichier incroyablement volumineux), mais cela suffira pour le moment.

N'hésitez pas à me faire savoir si quelqu'un trouve une meilleure solution !


  1. Assurez-vous que le contrôle du volume PulseAudio (pavucontrol) est installé. sinon, vous pouvez l'installer en tapant simplement dans votre terminal :sudo apt install pavucontrol .

  1. Ouvrez PulseAudio Volume Control (pavucontrol) et allez dans l'onglet "Enregistrement". Lorsque vous n'avez aucun appareil enregistrant votre microphone, ce panneau devrait sembler vide. Dès qu'une application commence à enregistrer ou à lancer un appel Skype, ce panneau doit avoir au moins une entrée.

  1. La sélection de "Stéréo analogique audio intégrée" est le comportement par défaut (redirige votre voix vers la sortie du microphone). Vous devriez également voir "Moniteur de la stéréo analogique audio intégrée". lorsque vous sélectionnez cette option, la sortie de toute application qui lit de l'audio (par exemple VLC) doit être redirigée vers le microphone au lieu de votre voix.

  2. Assurez-vous de le remettre sur "Stéréo analogique audio intégrée" une fois la lecture terminée pour que tout revienne à la normale.


Linux
  1. Comment déplacer un fichier sous Linux

  2. Redirection d'entrée/sortie sous Linux/Unix

  3. Linux - Tout est un fichier ?

  4. Comment puis-je rediriger vers la commande split de Linux ?

  5. Modification de fichiers à la volée sous Linux (écriture dans un fichier d'entrée sur un tube)

Commande Gunzip sous Linux

Commande Stat sous Linux

Comment diviser de gros fichiers audio sous Linux

Contrôle audio avancé sous Linux

Introduction au logiciel de station de travail audio Tracktion 5 DAW sous Linux

Qu'est-ce qu'umask sous Linux ?