GNU/Linux >> Znalost Linux >  >> Linux

Zvukový soubor linuxového potrubí do mikrofonního vstupu

Po mnoha namáhavých hodinách jsem konečně dostal něco přijatelného, ​​co funguje. Zrušil jsem vše, co jsem udělal s ALSA (protože výchozí nastavení je, že ALSA místo toho používá PulseAudio, což jsem zpočátku přepsal). Vytvořil jsem jednoduchý bash skript install_virtmic.sh vytvořit "virtuální mikrofon" pro PulseAudio, který bude používat stejně jako klienti 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

Rychlý skript uninstall_virtmic.sh pro vrácení všeho provedeného instalačním skriptem:

#!/bin/bash

# Uninstall the virtual microphone.

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

Pak jsem spustil Chromium a kliknul na mikrofon, abych použil jeho funkci hlasového vyhledávání a fungovalo to! Zkoušel jsem také s arecord test.raw -t raw -f S16_LE -c 1 -r 16000 a taky to fungovalo! Není to dokonalé, protože stále píšu do pojmenované roury virtmic v nekonečné smyčce ve skriptu (což rychle udělalo můj test.raw soubor šíleně velký), ale zatím to bude stačit.

Neváhejte a dejte mi vědět, pokud někdo najde lepší řešení!


  1. Ujistěte se, že máte nainstalované ovládání hlasitosti PulseAudio (pavucontrol). pokud ne, můžete jej nainstalovat jednoduše zadáním do terminálu:sudo apt install pavucontrol .

  1. Otevřete ovládání hlasitosti PulseAudio (pavucontrol) a přejděte na kartu „Nahrávání“. Pokud nemáte žádná zařízení nahrávající váš mikrofon, tento panel by měl vypadat prázdný. Jakmile jakákoli aplikace začne nahrávat nebo zahájí Skype hovor, tento panel by měl mít alespoň jednu položku.

  1. Volba "Built-in Audio Analog Stereo" je výchozí chování (přesměrování hlasu na výstup mikrofonu). Měli byste také vidět „Monitor vestavěného analogového zvuku“. když vyberete tuto možnost, výstup jakékoli aplikace, která přehrává zvuk (např. VLC), by měl být přesměrován na mikrofon místo vašeho hlasu.

  2. Po dokončení přehrávání zvuku jej změňte zpět na „Built-in Audio Analog Stereo“, aby se vše vrátilo do normálu.


Linux
  1. Přesměrování vstupu/výstupu v Linuxu/Unixu

  2. Linux – všechno je soubor?

  3. Jak přejdu pomocí kanálu na příkaz rozdělení Linuxu?

  1. Jak přesunout soubor v Linuxu

  2. Vysvětlení oprávnění souborů v systému Linux

  3. Změna souborů za chodu v Linuxu (zápis do vstupního souboru na rouře)

  1. Linux Tail Command

  2. Linux Touch Command

  3. Cat Command v Linuxu