Bagaimana cara mengonfigurasi suara saya untuk Jasper di Raspbian Jessie?

19

Saya menggunakan Raspbian Jessie (2015-11-21) untuk menjalankan Jasper (cabang utama) pada Raspberry Pi 2 Model B. Instruksi instalasi dalam dokumentasi tampaknya untuk Wheezy dan bukan Jessie.

Menjalankan Jasper on Wheezy berfungsi dengan baik. Tapi, pada Jessie, aku kesulitan mengatur suaranya. Entah mic saya berfungsi tetapi tidak speaker atau sebaliknya.

Yang perlu dilakukan adalah, kartu suara default harus diatur ke USB karena di situlah mic USB saya terhubung dan Jasper membutuhkan ini. Ada banyak jawaban yang berbicara tentang mengkonfigurasi ALSA melalui ~/.asoundrc, /etc/asound.confdan bahkan /usr/share/alsa/alsa.conftetapi tidak satupun dari mereka yang bekerja untuk saya.

Ketika saya membuka mixer saya melalui alsamixerdan tekan F6, saya selalu melihat bcm2835sebagai kartu default. Itu kartu standar Pi2 tapi saya ingin menjadikan USB saya kartu default.

Bagaimana saya melakukan ini?

Housni
sumber

Jawaban:

25

Menurut Wiki ALSA , di bawah judul yang bertuliskan " Cara memilih pesanan tertentu untuk beberapa kartu yang dipasang ", ini menyatakan sebagai berikut:

Kartu mana yang merupakan kartu nomor 0, 1 dan secara default ditentukan oleh urutan pemuatan modul. Ini sangat berguna untuk memilih kartu mana yang menjadi kartu standar.

Oleh karena itu secara teori dimungkinkan untuk memilih dari beberapa kartu yang terpasang menjadi kartu 0, kartu standar, dengan memastikan modul drivernya dimuat terlebih dahulu. (Catatan: ini mengasumsikan bahwa setiap kartu suara memerlukan driver yang berbeda. Jika Anda memiliki dua kartu suara dengan jenis yang sama, silakan lewati ke bagian selanjutnya.)

Ada dua cara untuk mencapai ini, opsi "old" index = dari modul driver kartu, dan slot alternatif (dan baru) = opsi dari modul snd.

Ini mendokumentasikan dua metode untuk melakukan ini:

  1. Metode "index =" yang lebih lama
  2. Metode "slots =" yang lebih baru

Yang pertama adalah rekomendasi instruksi instalasi Jasper. Itu juga yang dibicarakan mayoritas solusi di luar sana. Namun, ini adalah metode yang lebih lama dan mungkin tidak berfungsi pada gambar Jessie Raspbian yang lebih baru.

Kombinasi kedua metode inilah yang berhasil bagi saya.

Pertama-tama, periksa untuk melihat urutan kartu Anda dimuat:

$ cat /proc/asound/modules
 0 snd_bcm2835
 1 snd_usb_audio

Menghitung kartu dimulai dari 0sehingga standar bcm2835dimuat pertama dan kartu USB saya yang memiliki mic saya dimuat kedua.

Untuk menyusun ulang kartu saya, pertama-tama saya membuat file bernama /etc/modprobe.d/alsa-base.conf. Itu bisa dinamai apa saja yang Anda inginkan asalkan berakhir .conf. Saya kemudian menambahkan yang berikut ini:

# This sets the index value of the cards but doesn't reorder.
options snd_usb_audio index=0
options snd_bcm2835 index=1

# Does the reordering.
options snd slots=snd_usb_audio,snd_bcm2835

Komentar harus menjelaskan apa yang dilakukan setiap baris. Setelah Anda melakukannya, tampaknya Anda harus me-reboot mesin Anda agar bisa berfungsi.

Setelah Anda reboot, Anda harus dapat merekam beberapa audio dengan kartu default yang sekarang menjadi mic Anda:

$ arecord temp.wav

dan kemudian mainkan, tentukan kartu sebagai 1 dan perangkat sebagai 0 yang merupakan tempat output speaker Anda:

aplay -D plughw:1,0 temp.wav

Saya awalnya hanya menambahkan baris dengan slotsdi dalamnya. Ini berfungsi untuk menjadikan kartu USB saya kartu default tetapi diindeks salah. Misalnya, setelah saya melakukan itu, inilah yang /proc/asound/modulestampak seperti saya :

$ cat /proc/asound/modules
 1 snd_usb_audio
 2 snd_bcm2835

Idealnya, akan terlihat seperti ini:

 0 snd_usb_audio
 1 snd_bcm2835

Dan itulah mengapa saya juga menggunakan indexmetode untuk mencapai ini.

Housni
sumber
Senang itu membantu :) Saya akan memiliki skrip pengaturan bash serta buku masak Chef untuk melakukan semua ini dalam beberapa hari, pada akun Github saya (tautan di profil saya).
Housni
snd_usb_audioSayangnya, saya punya dua perangkat yang dipanggil .
kleinfreund
@ Husni Apakah Anda sudah membuat skrip itu?
not2qubit
0

Setelah mencoba men-debug masalah alsa untuk proyek ini dan membuat KEDUA usb mic dan bcm2835 speaker berfungsi, saya pikir ada masalah dasar yang SEMUA saran ALSA yang saya terima tidak berurusan dengan itu.

Direktori / usr / share / alsa / cards tidak memiliki file bcm2835.conf. File direktori / usr / share / alsa alsa.conf meninggalkan BANYAK stubs yang perlu ditentukan. Kecuali kartu untuk bcm2835 disediakan, menyalakan Jasper.py menampilkan banyak pesan kesalahan yang tidak fatal. Dengan mengerjakan file bcm2835.conf, Anda dapat menyingkirkan pesan yang menjengkelkan.

Sepertinya saya ini adalah bug Jessie; harus ada file yang menyelesaikan pesan kesalahan ini. Saya sepertinya malas untuk programmer jessie yang berurusan dengan ALSA untuk tidak membuat yang diuji.

Saya belum bekerja melalui semua pesan kesalahan, tapi saya menduga bahwa pesan lain juga disebabkan oleh ini.

Kasus lain dari tidak memiliki rilis yang matang adalah kegagalan untuk memeriksa firmware lama saat boot. Firmware lama di jessie saya menghasilkan desktop yang tidak akan menanggapi keyboard atau mouse yang merupakan showstopper untuk menggunakan jessie dengan firmware lama, kecuali Anda tahu ssh. Bukan situasi pengguna yang naif.

rchoppin
sumber
1
WRT itu "sepertinya malas bagi programmer jessie yang berurusan dengan ALSA untuk tidak membuat yang diuji", jangan bingung untuk percaya bahwa Debian 8, alias. jessie, dari mana Raspbian dibangun, ditujukan terutama untuk Raspberry Pi dan BCM2835 SoC. Yang terakhir akan menjelaskan <1% dari pengguna Debian, sehingga hampir tidak dapat dianggap sebagai prioritas bagi mereka. Fakta bahwa sekelompok relawan terutama tidak ingin bekerja di keyboard 25 jam / hari untuk menjadi segalanya bagi semua orang tidak membuat mereka malas ....
goldilocks
... Ini hanya menunjukkan tidak ada minat yang cukup oleh orang-orang di komunitas dengan keahlian teknis yang diperlukan untuk melakukan pekerjaan.
goldilocks