GNU/Linux >> Belajar Linux >  >> Linux

File audio pipa Linux ke input mikrofon

Setelah berjam-jam yang melelahkan, saya akhirnya mendapatkan sesuatu yang dapat diterima bekerja. Saya membatalkan semua yang saya lakukan dengan ALSA (karena defaultnya adalah ALSA menggunakan PulseAudio sebagai gantinya, yang awalnya saya kesampingkan). Saya membuat skrip bash sederhana install_virtmic.sh untuk membuat "mikrofon virtual" untuk digunakan PulseAudio serta klien 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

Skrip cepat uninstall_virtmic.sh untuk membatalkan semua yang dilakukan oleh skrip pemasangan:

#!/bin/bash

# Uninstall the virtual microphone.

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

Saya kemudian menyalakan Chromium dan mengklik mikrofon untuk menggunakan fitur pencarian suaranya dan berhasil! Saya juga mencoba dengan arecord test.raw -t raw -f S16_LE -c 1 -r 16000 dan itu berhasil juga! Itu tidak sempurna, karena saya terus menulis ke pipa bernama virtmic dalam loop tak terbatas dalam skrip (yang dengan cepat membuat test.raw saya sangat besar), tetapi itu akan dilakukan untuk saat ini.

Jangan ragu untuk memberi tahu saya jika ada orang di luar sana yang menemukan solusi yang lebih baik!


  1. Pastikan Anda telah menginstal Kontrol Volume PulseAudio (pavucontrol). jika tidak, Anda dapat menginstalnya dengan mengetikkan terminal Anda:sudo apt install pavucontrol .

  1. Buka Kontrol Volume PulseAudio (pavucontrol) dan buka tab "Perekaman". Jika tidak ada perangkat yang merekam mikrofon Anda, panel ini akan terlihat kosong. Segera setelah aplikasi apa pun mulai merekam atau memulai panggilan Skype, panel ini harus memiliki setidaknya satu entri.

  1. Memilih "Stereo Analog Audio Bawaan" adalah perilaku default (mengalihkan suara Anda ke keluaran mikrofon). Anda juga akan melihat "Monitor Stereo Analog Audio Bawaan". saat Anda memilih opsi ini, keluaran aplikasi apa pun yang memutar audio (mis. VLC) harus dialihkan ke mikrofon, bukan ke suara Anda.

  2. Pastikan untuk mengubahnya kembali ke "Stereo Analog Audio Bawaan" setelah audio selesai diputar agar semuanya kembali normal.


Linux
  1. Pengalihan Input/Output di Linux/Unix

  2. Linux – Semuanya Adalah File?

  3. Bagaimana cara mem-pipe ke perintah split Linux?

  1. Cara memindahkan file di Linux

  2. Memahami Izin File Linux

  3. Mengubah file dengan cepat di Linux (menulis ke file input di pipa)

  1. Perintah Ekor Linux

  2. Perintah Sentuh Linux

  3. Perintah Cat di Linux