ฉันจะกำหนดค่าเสียงของฉันสำหรับ Jasper บน Raspbian Jessie ได้อย่างไร


19

ฉันใช้Raspbian Jessie (2015-11-21)เพื่อเรียกใช้Jasper (สาขาหลัก)ใน Raspberry Pi 2 Model B คำแนะนำในการติดตั้งในเอกสารดูเหมือนจะเป็น Wheezy ไม่ใช่ Jessie

ใช้งาน Jasper บน Wheezy ได้ดี แต่ในเจสซีฉันมีปัญหาในการตั้งค่าเสียง ไมค์ของฉันทำงานได้ แต่ไม่ใช่ลำโพงหรือในทางกลับกัน

สิ่งที่ต้องทำคือต้องตั้งค่าการ์ดเสียงเริ่มต้นเป็น USB เพราะนั่นคือที่ที่ USB mic ของฉันเชื่อมต่ออยู่และ Jasper ต้องการสิ่งนี้ มีจำนวนมากของคำตอบที่พูดคุยเกี่ยวกับการกำหนดค่าผ่านทางเป็น ALSA ~/.asoundrc, /etc/asound.confและแม้กระทั่ง/usr/share/alsa/alsa.confแต่ไม่มีพวกเขาทำงานให้ฉัน

เมื่อฉันเปิดมิกเซอร์ผ่านalsamixerและกดF6ฉันจะเห็นbcm2835ว่าเป็นการ์ดเริ่มต้นเสมอ นั่นเป็นการ์ดเริ่มต้นของ Pi2 แต่ฉันต้องการทำให้ USB เป็นการ์ดเริ่มต้น

ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


25

ตามALSA Wikiภายใต้ชื่อที่อ่านว่า " วิธีเลือกคำสั่งซื้อเฉพาะสำหรับการ์ดที่ติดตั้งหลายการ์ด " จะระบุสิ่งต่อไปนี้:

การ์ดใบใดเป็นหมายเลขบัตร 0, 1 และอื่น ๆ จะถูกกำหนดโดยค่าเริ่มต้นตามลำดับการโหลดโมดูล สิ่งนี้มีประโยชน์อย่างยิ่งในการเลือกบัตรที่จะเป็นบัตรเริ่มต้น

ในทางทฤษฎีแล้วมันเป็นไปได้ที่จะเลือกการ์ดที่ติดตั้งหลายการ์ดกลายเป็นการ์ด 0 ซึ่งเป็นการ์ดมาตรฐานโดยตรวจสอบให้แน่ใจว่าได้โหลดโมดูลไดรเวอร์ก่อน (หมายเหตุ: นี่ถือว่าสมมติว่าการ์ดเสียงแต่ละตัวต้องใช้ไดรเวอร์ที่แตกต่างกันหากคุณมีการ์ดเสียงสองประเภทที่เหมือนกันโปรดข้ามไปยังส่วนถัดไป)

มีสองวิธีในการบรรลุเป้าหมายนี้ตัวเลือก "old" index = ของโมดูลไดรเวอร์การ์ดและตัวเลือก (และใหม่) slot = ตัวเลือกของโมดูล snd

เป็นเอกสารสองวิธีในการทำสิ่งนี้:

  1. เมธอด "index =" ที่เก่ากว่า
  2. เมธอด "slots =" ที่ใหม่กว่า

สิ่งแรกคือสิ่งที่คำแนะนำในการติดตั้ง Jasper แนะนำ นอกจากนี้ยังเป็นสิ่งที่โซลูชันส่วนใหญ่พูดถึงด้วย อย่างไรก็ตามนี่เป็นวิธีที่เก่ากว่าและอาจไม่ทำงานกับรูปภาพ Raspbian Jessie ในปัจจุบัน

การรวมกันของทั้งสองวิธีเป็นสิ่งที่ได้ผลสำหรับฉัน

ก่อนอื่นให้ตรวจสอบดูว่าลำดับการโหลดไพ่ของคุณคืออะไร:

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

การนับไพ่เริ่มต้นจาก0ค่าเริ่มต้นbcm2835จะถูกโหลดก่อนและการ์ด USB ของฉันที่มีไมโครโฟนของฉันถูกโหลดที่สอง

/etc/modprobe.d/alsa-base.confเพื่อเรียงลำดับบัตรของฉันครั้งแรกที่ผมสร้างไฟล์ชื่อ .confมันสามารถตั้งชื่อสิ่งที่คุณต้องการตราบเท่าที่มันจบลงด้วย ฉันเพิ่มต่อไปนี้แล้ว:

# 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

ความคิดเห็นควรอธิบายว่าแต่ละบรรทัดทำอะไร เมื่อคุณทำเช่นนั้นดูเหมือนว่าคุณต้องรีบูตเครื่องของคุณเพื่อให้มันทำงาน

เมื่อคุณรีบูทคุณควรจะสามารถบันทึกเสียงด้วยการ์ดเริ่มต้นซึ่งตอนนี้ควรเป็นไมโครโฟนของคุณ:

$ arecord temp.wav

จากนั้นเล่นโดยระบุการ์ดเป็น 1 และอุปกรณ์เป็น 0 ซึ่งเป็นที่ที่ลำโพงของคุณควรมี:

aplay -D plughw:1,0 temp.wav

ตอนแรกฉันเพิ่มบรรทัดด้วยslotsเท่านั้น สิ่งนี้ทำงานในการทำให้การ์ด USB ของฉันเป็นการ์ดเริ่มต้น แต่ถูกทำดัชนีผิด ตัวอย่างเช่นเมื่อฉันทำอย่างนั้นนี่คือสิ่งที่ฉัน/proc/asound/modulesดูเหมือน:

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

เป็นการดีที่ควรมีลักษณะเช่นนี้:

 0 snd_usb_audio
 1 snd_bcm2835

และนั่นคือเหตุผลที่ฉันยังใช้indexวิธีการเพื่อให้บรรลุนี้


ดีใจที่มันช่วย :) ฉันจะมีสคริปต์ติดตั้งทุบตีและตำราทำอาหารเชฟทำทั้งหมดนี้ในอีกไม่กี่วันในบัญชี Github ของฉัน (ลิงก์ในโปรไฟล์ของฉัน)
Housni

ฉันมีอุปกรณ์สองตัวที่เรียกว่าsnd_usb_audioน่าเสียดาย
kleinfreund

@Housni คุณสร้างสคริปต์นั้นหรือยัง
not2qubit

0

หลังจากพยายามดีบักปัญหา alsa สำหรับโครงการนี้และรับทั้ง usb usb และลำโพง bcm2835 ทำงานฉันคิดว่ามีปัญหาพื้นฐานที่คำแนะนำ ALSA ทั้งหมดที่ฉันได้รับไม่ได้จัดการ

ไดเร็กทอรี / usr / share / alsa / cards ไม่มีไฟล์ bcm2835.conf ไฟล์ไดเร็กทอรี / usr / share / alsa alsa.conf จะทิ้งสตับจำนวนมากที่ต้องระบุ ยกเว้นว่ามีการจัดหาการ์ดสำหรับ bcm2835 การเริ่มต้นใช้งาน Jasper.py จะแสดงข้อความแสดงข้อผิดพลาดที่ไม่ร้ายแรง โดยการทำงานกับไฟล์ bcm2835.conf คุณสามารถกำจัดข้อความที่น่ารำคาญ

ฉันคิดว่านี่เป็นข้อผิดพลาดของ Jessie; ควรมีไฟล์ที่แก้ไขข้อผิดพลาดเหล่านี้ ฉันดูเหมือนขี้เกียจสำหรับโปรแกรมเมอร์ jessie ที่เกี่ยวข้องกับ ALSA เพื่อไม่ได้สร้างหนึ่งที่ผ่านการทดสอบ

ฉันไม่ได้ทำงานผ่านข้อความแสดงข้อผิดพลาดทั้งหมด แต่ฉันสงสัยว่าข้อความอื่นนั้นเกิดจากสิ่งนี้เช่นกัน

อีกกรณีที่ไม่มีรุ่นวางจำหน่ายคือความล้มเหลวในการตรวจสอบเฟิร์มแวร์เก่าระหว่างการบู๊ต เฟิร์มแวร์เก่าบนเจสซี่ของฉันส่งผลให้เดสก์ท็อปที่ไม่ตอบสนองต่อแป้นพิมพ์หรือเมาส์ซึ่งเป็น showstopper สำหรับการใช้เจสซี่กับเฟิร์มแวร์เก่าเว้นแต่ว่าคุณรู้จัก ssh ไม่ใช่สถานการณ์ผู้ใช้ที่ไร้เดียงสา


1
WRT มัน "ดูเหมือนจะขี้เกียจสำหรับโปรแกรมเมอร์ jessie ที่เกี่ยวข้องกับ ALSA ที่ไม่ได้สร้างหนึ่งที่ผ่านการทดสอบ" อย่าสับสนกับความเชื่อที่ว่าDebian 8, aka เจสซี่ซึ่งสร้าง Raspbian นั้นมีจุดประสงค์เพื่อ Raspberry Pi และ BCM2835 SoC เป็นหลัก ส่วนหลังจะคิดเป็น <1% ของผู้ใช้ Debian ดังนั้นจึงแทบไม่ได้รับการพิจารณาว่าเป็นลำดับความสำคัญสำหรับพวกเขา ความจริงที่ว่ากลุ่มอาสาสมัครส่วนใหญ่ไม่ต้องการทำงานที่แป้นพิมพ์ 25 ชั่วโมง / วันเพื่อเป็นทุกอย่างที่ทุกคนไม่ได้ทำให้พวกเขาขี้เกียจ ....
goldilocks

... มันแสดงให้เห็นว่าคนในชุมชนมีความสนใจไม่เพียงพอกับความเชี่ยวชาญด้านเทคนิคที่จำเป็นในการทำงาน
goldilocks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.