Mengirim Pesan Suara ke Telegram Desktop Menggunakan Linux Loopback Audio

Meski judulnya secara spesifik menyebut Telegram, namun tulisan mengenai loopback audio ini bisa diterapkan secara umum pada banyak piranti perekam multimedia di GNU/Linux. Misalnya jika hendak menggunakan SimpleScreenRecorder untuk merekam suara dari game yang dimainkan dalam wine. Dan lainnya.

Terkadang mungkin Anda ingin mengirim pesan suara ke Telegram Desktop (kita singkat saja menjadi TDesktop) namun bukan suara hasil tangkapan microphone, melainkan suara dari sumber lain seperti pemutar audio, video dan bahkan game. Bagaimana Anda akan melakukannya? Yang langsung terlintas di pikiran pastinya merekam suara tersebut dan kemudian mengirimkan berkas rekamannya ke TDesktop.
Namun menggunakan cara ini Anda bukan mengirimkan pesan suara (voice message), melainkan mengirimkan berkas suara (audio/file message).

Anda bisa pula memainkan musik secara lantang di laptop, dan kemudian merekamnya menggunakan TDesktop melalui microphone laptop. Namun mutu suara tentunya hampir bisa dipastikan amburadul.

Lalu, bagaimana cara kita mengirimkan pesan suara TDesktop dari audio yang dihasilkan piranti lunak dalam sistem operasi GNU/Linux?
Jawabannya adalah dengan menggunakan loopback audio. Fitur ini mungkin bisa disamakan dengan Stereo Mix di Microsoft Windows.
Loopback audio akan membuat jalur baru dari output perangkat audio menuju input audio di komputer. Jadi seakan-akan kita menggunakan kabel untuk menghubungkan port line out/headphone ke port line in/microphone, hanya saja ini dilakukan programmatically.

Merekam dari loopback audio

Di bawah ini akan ditunjukkan cara melakukan rekaman menggunakan loopback audio di Debian GNU/Linux yang menggunakan PulseAudio. Dari artikel yang saya baca, jika kita peduli soal keandalan dan mutu suara, maka JACK paling disarankan. Namun JACK relatif sulit untuk dipakai, sementara PulseAudio relatif mudah dan telah terpasang secara default di banyak distro modern. Jadi, ya, kita gunakan PulseAudio saja.

  • Buka pavucontrol, sebuah pengendali volume untuk PulseAudio. Jika belum terpasang, gunakan perintah di bawah ini untuk memasangnya pada sistem Debian based.
    sudo apt install pavucontrol
    
  • Klik tab Input Devices, kemudian pilih Monitors pada menu Show di sudut kanan bawah.

    Jendela tab Input Devices pavucontrol yang menampilkan source dari perangkat monitor

  • Jalankan aplikasi (misalnya Rhythmbox) yang keluaran suaranya hendak Anda rekam.

  • Klik tab Recording untuk melihat apakah aplikasi yang Anda gunakan untuk merekam (misalnya TDesktop) tertera pada tab ini.

    Karena TDesktop hanya merekam ketika kita menekan tombol microphone, maka entri Telegram hanya akan muncul di tab Recording ini jika kita sedang menahan tombol microphone di kolom input TDesktop.

    Jendela tab Recording pavucontrol yang menunjukkan Telegram Desktop merekam suara dari perangkat loopback

    Jika mendapati entri "Telegram: Capture Stream from Monitor of Built-in Audio Analog Stereo" maka proses loopback telah berhasil, dan TDesktop akan merekam dari keluaran suara aplikasi dalam komputer (dalam contoh kali ini adalah Rhythmbox) dan akan mengirimkan hasilnya sebagai voice message.

    Lalu, bagaimana jika TDesktop tidak merekam dari "Monitor of Built-in Audio Analog Stereo"? Melainkan dari "Built-in Audio Analog Stereo" seperti gambar di bawah ini?

    Jendela tab Recording pavucontrol yang menunjukkan Telegram Desktop merekam suara bukan dari perangkat loopback

    Nah, ini berarti proses loopback tidak berjalan dan TDesktop akan merekam dari input microphone laptop (atau dari input lain yang ada).
    Solusinya bisa dibaca pada paragraf di bawah.

Solusi jika perangkat loopback audio tidak dikenali

Menggunakan pavucontrol sebagaimana cara di atas, kini mestinya Anda sudah bisa reroute output ke input hingga aplikasi bisa merekam suara langsung dari output audio driver. But, shit happens sometimes...
Awalnya saya bisa langsung mengirimkan voice message ke TDesktop dengan mengikuti langkah di atas. Namun beberapa waktu setelahnya, tiap kali merekam suara, TDesktop selalu merekam dari speaker laptop, bukan dari output driver audio.
Setelah diselidiki, ternyata TDesktop merekam dari "Built-in Audio Analog Stereo", bukan dari "Monitor of Built-in Audio Analog Stereo".
Bagi Anda yang juga mengalami kendala yang sama, berikut solusinya:

  • Buka terminal, dan kemudian jalankan perintah berikut untuk mengetahui input source apa saja yang tersedia di komputer.
    pacmd list-sources | grep -e 'name:'
    

    Misal, dalam sistem saya hasilnya adalah sebagai berikut.

    name: <alsa_input.pci-0000_00_1b.0.analog-stereo>
    name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
    

    <alsa_input.pci-0000_00_1b.0.analog-stereo> adalah perangkat default ke speaker, sementara <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor> adalah monitor yang bisa dijadikan input oleh aplikasi-aplikasi perekam suara.

  • Jika menginginkan aplikasi perekam suara (misal TDesktop) untuk merekam keluaran suara dari aplikasi lain dalam sistem (misal Rhythmbox), maka kita harus menjadikan alsa_output.pci-0000_00_1b.0.analog-stereo.monitor sebagai source.
    Ada dua cara untuk mencapainya:

    1. Cara permanen dan berlaku menyeluruh adalah dengan menambahkan baris berikut ke dalam berkas /etc/pulse/default.pa.
      set-default-source alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
      
    2. Cara sementara yang perubahannya akan hilang jika komputer dihidupkan-ulang. Jalankan perintah berikut dalam terminal:
      pacmd "set-default-source alsa_output.pci-0000_00_1b.0.analog-stereo.monitor"
      

      Dan jika hendak mengembalikan ke source semula:

      pacmd "set-default-source alsa_input.pci-0000_00_1b.0.analog-stereo"
      
  • Disarankan untuk restart TDesktop tiap kali melakukan perubahan source. Setidaknya, di komputer saya TDesktop tidak segera mengenali source yang baru ditetapkan. TDesktop akan mengenali source baru ketika ia dihentikan dan kemudian dijalankan ulang.

Demikian cara kita menyambungkan output audio dari piranti lunak dalam sistem GNU/Linux ke input agar bisa langsung direkam. Kata orang, fitur ini mirip dengan Stereo Mic di Microsoft Windows. Well, saya sendiri belum pernah mencoba Stereo Mix, jadi tidak bisa membandingkan apa pun di antara keduanya.
Fitur loopback audio memiliki banyak kegunaan, misalnya saja Anda merekam suara ke TDesktop melalui microphone sambil diiringi lantunan musik dari Rhythmbox. Voila! Jadilah telepodcast.

Wassalam...