Mikrofon USB melalui sakelar USB tidak berfungsi dengan TeamSpeak

1

Saya menjalankan Mikrofon USB melalui sakelar USB (bersama dengan Mouse dan Keyboard) di beberapa Komputer.

Ketika saya beralih kembali dari Komputer saya yang lain, Mikrofon saya diaktifkan kembali oleh Linux, tetapi TeamSpeak tidak dapat mengaktifkannya kembali atau masih berpikir itu rusak / tidak tersedia. Saya harus mengubah konfigurasi "Perangkat Tangkap" di Teamspeak dari "Default" ke Mikrofon USB saya atau sebaliknya untuk membuatnya berfungsi lagi.

Dalam instalasi Ubuntu yang lebih lama saya entah bagaimana menyelesaikan ini dengan bantuan Google sehingga Mikrofon USB selalu tampak aktif (meskipun dicabut), tetapi saya tidak bisa untuk live saya menemukan perbaikan ini lagi.

Pembuang waktu
sumber
Apakah Anda ingat rincian bagaimana Anda menyelesaikannya? Dengan wastafel Pulseaudio nol, dan loopback? Dengan beberapa plugin ALSA, pengeditan .asoundrc? Apa pun?
dirkt
@ tidak, sayangnya tidak. Saya baru saja mencoba null sink dengan ide modul loopback, dan itu hanya berfungsi satu kali, jika saya lepaskan mikrofon lebih dari satu kali itu tidak menyambungkan kembali mic ke null sink.
TimeWaster

Jawaban:

0

jadi, setelah berkeringat darah dan air mata, membaca berton-ton dokumentasi dan mencoba hal-hal selama berhari-hari akhirnya saya punya solusi. tidak bagus, tetapi saya punya satu.

pertama-tama tambahkan ke konfigurasi pulseaudio Anda (dalam kasus saya sudo nano /etc/pulse/default.pa) konfigurasi berikut:

# create virtual sink named Mic and loopback USB Microphone to virtual sink
load-module module-null-sink sink_name=Mic
load-module module-loopback source=alsa_input.usb-Thomann_SC450USB-00.iec958-stereo sink=Mic source_dont_move=true sink_dont_move=true
set-default-source Mic.monitor

ini menciptakan "null-sink" yang tidak hilang ketika beberapa perangkat terlepas karena itu bukan milik perangkat apa pun, yang juga memiliki sumber monitor yang sesuai yang dapat digunakan TS3 sebagai sumber permanen. kemudian loopback dibuat dari mikrofon ke wastafel nol. sekarang restart pulseaudio:

pulseaudio -k

sekarang Anda perlu memastikan bahwa TS3 menggunakan monitor Mic sebagai sumber secara permanen dengan membuka pavucontroldan memastikan bahwa di bawah tab "Rekaman" "TeamSpeak3" terikat dengan "Monitor Output Null" di dropdown.

biasanya ini sudah cukup, tetapi pulseaudio tidak memasang kembali loopback setelah mikrofon terhubung kembali. untuk itu terjadi kita perlu udev.

pertama buat skrip yang bisa dipanggil oleh udev:

sudo nano /usr/local/bin/udev_sound

dan tambahkan skrip berikut:

#!/bin/bash

# check if microphone is mounted already
while ! $(pactl list sources|grep -q 'alsa_input.usb-Thomann_SC450USB-00.iec958-stereo')
do
  let "n += 1"
  sleep 1
  if [ "$n" -eq 10 ]
    then break
  fi
  echo "running"
done

# loopback microphone to null sink
export PULSE_RUNTIME_PATH="/run/user/$(id -u)/pulse/"
pactl load-module module-loopback source=alsa_input.usb-Thomann_SC450USB-00.iec958-stereo sink=Mic source_dont_move=true sink_dont_move=true

sekarang buat skrip dapat dieksekusi:

sudo chmod +x /usr/local/bin/udev_sound

ini akan memeriksa periode waktu 10 detik jika mikrofon terpasang, dan jika ya, buat pulseaudio loopback lagi yang dihapus ketika mikrofon dilepaskan.

sekarang mari kita membuat aturan udev memulai skrip ketika ketika perangkat terpasang kembali:

sudo nano /lib/udev/rules.d/91-someNameYouWillRecogniseAsYours.rules

dengan konten berikut:

ACTION=="add", SUBSYSTEM=="sound", ATTR{id}=="SC450USB", RUN+="/bin/su YOURuSERnAME -c 'screen -d -m /usr/local/bin/udev_sound'"

sekarang mulai ulang udev:

sudo /etc/init.d/udev restart

ini memeriksa apakah perangkat dengan id tertentu ditambahkan (terlampir) dan menjalankan skrip yang baru saja kita buat dengan nama pengguna Anda (jangan lupa untuk mengubahnya). ini penting karena pada kebanyakan sistem pulseaudio dijalankan di userland. screen -d -mPenting agar skrip dijalankan non-pemblokiran, jika tidak, mikrofon tidak akan dilampirkan sampai skrip benar-benar berjalan.

perintah khusus perangkat Anda kemungkinan besar akan terlihat berbeda, apa "ATTR" dan pengidentifikasi lainnya untuk digunakan tergantung pada perangkat Anda, bagaimana cara mengetahui bahwa dijelaskan jutaan kali online.

ini seharusnya. sekarang setiap kali mikrofon dipasang kembali, skrip menciptakan loopback, dan TS3 semestinya setiap saat mendengarkan monitor null sinks dengan berpikir itu adalah mikrofon asli.

dalam semua langkah ini ganti "alsa_input.usb-Thomann_SC450USB-00.iec958-stereo" dengan apa pun yang namanya perangkat Anda!

secara keseluruhan saya bisa mengatakan saya benci udev. ia memiliki sejuta hal khusus yang ditangani berbeda dari sistem linux normal dan hampir tidak mungkin untuk di-debug. saya tidak pernah ingin melihatnya lagi.

Pembuang waktu
sumber