ฉันมีคำเตือนต่อไปนี้ในขณะที่สร้างอินสแตนซ์ เสียง
.
chris@chris-Inspiron-3847:~/Documents/Projects/Papinhio player/setup/database_init$ หลาม
Python 3.9.7 (ค่าเริ่มต้น 10 กันยายน 2021, 14:59:43 น.)
[GCC 11.2.0] บนลินุกซ์
พิมพ์ "help", "copyright", "credits" หรือ "license" เพื่อดูข้อมูลเพิ่มเติม
>>> นำเข้า pyaudio
>>> p = pyaudio.PyAudio()
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) ไม่สามารถเปิดทาสได้
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) พอร์ตฟิลด์ที่ไม่รู้จัก
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) พอร์ตฟิลด์ที่ไม่รู้จัก
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) ประเภทการ์ดไม่ถูกต้อง
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) ประเภทการ์ดไม่ถูกต้อง
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) ไม่สามารถเปิดทาสได้
>>> ทางออก ()
chris@chris-Inspiron-3847:~/Documents/Projects/Papinhio player/setup/database_init$
ไฟล์: /usr/share/alsa/alsa.conf
#
# ไฟล์กำหนดค่าไลบรารี ALSA
#
# โหลดไฟล์การกำหนดค่าล่วงหน้า
@ตะขอ [
{
ฟังค์ชั่นโหลด
ไฟล์ [
"/usr/etc/alsa/conf.d"
"/etc/alsa/conf.d"
"/etc/asound.conf|||/usr/etc/asound.conf"
"~/.asoundrc"
{
@func เชื่อมต่อ
สตริง [
{
@func getenv
วาร์ [
XDG_CONFIG_HOME
]
เริ่มต้น "~/.config"
}
"/อัลซา/asoundrc"
]
}
]
ข้อผิดพลาดเป็นเท็จ
}
]
# โหลดไฟล์การกำหนดค่าเฉพาะการ์ด (ตามคำขอ)
cards.@hooks [
{
ฟังค์ชั่นโหลด
ไฟล์ [
{
@func เชื่อมต่อ
สตริง [
{ @func datadir }
"/cards/aliases.conf"
]
}
]
}
{
ฟังก์ชัน load_for_all_cards
ไฟล์ [
{
@func เชื่อมต่อ
สตริง [
{ @func datadir }
"/การ์ด/"
{ @func ส่วนตัว_string }
".conf"
]
}
]
ข้อผิดพลาดเป็นเท็จ
}
]
#
# ค่าเริ่มต้น
#
# แสดงคำใบ้ชื่อทั้งหมดสำหรับคำจำกัดความที่ไม่มีคำใบ้ {} ส่วน
defaults.namehint.showall บน
# แสดงเพียงคำใบ้ชื่อพื้นฐาน
defaults.namehint.basic บน
# แสดงคำแนะนำชื่อเพิ่มเติม
defaults.namehint.extended บน
#
defaults.ctl.card 0
defaults.pcm.card 0
defaults.pcm.device 0
defaults.pcm.subdevice -1
defaults.pcm.nonblock1
defaults.pcm.compat 0
defaults.pcm.minperiodtime 5000 # ในเรา
defaults.pcm.ipc_key 5678293
เสียง defaults.pcm.ipc_gid
defaults.pcm.ipc_perm 0660
defaults.pcm.tstamp_type ค่าเริ่มต้น
defaults.pcm.dmix.max_periods 0
defaults.pcm.dmix.channels2
defaults.pcm.dmix.rate 48000
defaults.pcm.dmix.format ไม่เปลี่ยนแปลง
defaults.pcm.dmix.card defaults.pcm.card
defaults.pcm.dmix.device defaults.pcm.device
defaults.pcm.dsnoop.card defaults.pcm.card
defaults.pcm.dsnoop.device defaults.pcm.device
defaults.pcm.front.card defaults.pcm.card
defaults.pcm.front.device defaults.pcm.device
defaults.pcm.rear.card defaults.pcm.card
defaults.pcm.rear.device defaults.pcm.device
defaults.pcm.center_lfe.card defaults.pcm.card
defaults.pcm.center_lfe.device defaults.pcm.device
defaults.pcm.side.card defaults.pcm.card
defaults.pcm.side.device defaults.pcm.device
#defaults.pcm.surround21.card defaults.pcm.card
#defaults.pcm.surround21.device defaults.pcm.device
#defaults.pcm.surround40.card defaults.pcm.card
#defaults.pcm.surround40.device defaults.pcm.device
#defaults.pcm.surround41.card defaults.pcm.card
#defaults.pcm.surround41.device defaults.pcm.device
#defaults.pcm.surround50.card defaults.pcm.card
#defaults.pcm.surround50.device defaults.pcm.device
#defaults.pcm.surround51.card defaults.pcm.card
#defaults.pcm.surround51.device defaults.pcm.device
#defaults.pcm.surround71.card defaults.pcm.card
#defaults.pcm.surround71.device defaults.pcm.device
defaults.pcm.iec958.card defaults.pcm.card
defaults.pcm.iec958.device defaults.pcm.device
defaults.pcm.modem.card defaults.pcm.card
defaults.pcm.modem.device defaults.pcm.device
defaults.pcm.file_format ดิบ
defaults.pcm.file_truncate true # ตัดไฟล์ผ่านไฟล์หรือที PCM
defaults.rawmidi.card 0
defaults.rawmidi.device 0
defaults.rawmidi.subdevice -1
defaults.hwdep.card 0
ค่าเริ่มต้น hwdep.device 0
defaults.timer.class 2
defaults.timer.sclass 0
defaults.timer.card 0
defaults.timer.device 0
defaults.timer.subdevice 0
#
#อินเทอร์เฟซ PCM
#
pcm.hw {
@args [ การ์ด DEV ย่อย DEV ]
@args.CARD {
พิมพ์สตริง
ค่าเริ่มต้น {
@func getenv
วาร์ [
ALSA_PCM_CARD
ALSA_CARD
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.pcm.card
}
}
}
@args.DEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func igetenv
วาร์ [
ALSA_PCM_DEVICE
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.pcm.device
}
}
}
@args.SUBDEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.pcm.subdevice
}
}
พิมพ์ hw
การ์ด $CARD
อุปกรณ์ $DEV
อุปกรณ์ย่อย $SUBDEV
คำใบ้ {
แสดง {
@func อ้างอิง
ชื่อ defaults.namehint.extended
}
คำอธิบาย "อุปกรณ์ฮาร์ดแวร์โดยตรงโดยไม่มีการแปลงใดๆ"
}
}
pcm.plughw {
@args [ การ์ด DEV ย่อย DEV ]
@args.CARD {
พิมพ์สตริง
ค่าเริ่มต้น {
@func getenv
วาร์ [
ALSA_PCM_CARD
ALSA_CARD
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.pcm.card
}
}
}
@args.DEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func igetenv
วาร์ [
ALSA_PCM_DEVICE
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.pcm.device
}
}
}
@args.SUBDEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.pcm.subdevice
}
}
ประเภทปลั๊ก
ทาส.pcm {
พิมพ์ hw
การ์ด $CARD
อุปกรณ์ $DEV
อุปกรณ์ย่อย $SUBDEV
}
คำใบ้ {
แสดง {
@func อ้างอิง
ชื่อ defaults.namehint.extended
}
คำอธิบาย "อุปกรณ์ฮาร์ดแวร์พร้อมการแปลงซอฟต์แวร์ทั้งหมด"
}
}
pcm.ปลั๊ก {
@args [ ทาส ]
@args.SLAVE {
พิมพ์สตริง
}
ประเภทปลั๊ก
slave.pcm $ทาส
}
pcm.shm {
@args [ ซ็อกเก็ต PCM ]
@args.SOCKET {
พิมพ์สตริง
}
@args.PCM {
พิมพ์สตริง
}
พิมพ์ shm
เซิร์ฟเวอร์ $SOCKET
พีซีเอ็ม $พีซีเอ็ม
}
pcm.tee {
@args [ รูปแบบไฟล์ทาส ]
@args.SLAVE {
พิมพ์สตริง
}
@args.FILE {
พิมพ์สตริง
}
@args.FORMAT {
พิมพ์สตริง
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.pcm.file_format
}
}
ไฟล์ประเภท
slave.pcm $ทาส
ไฟล์ $FILE
จัดรูปแบบ $FORMAT
ตัดทอน {
@func อ้างอิง
ชื่อ defaults.pcm.file_truncate
}
}
pcm.file {
@args [ รูปแบบไฟล์ ]
@args.FILE {
พิมพ์สตริง
}
@args.FORMAT {
พิมพ์สตริง
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.pcm.file_format
}
}
ไฟล์ประเภท
slave.pcm เป็นโมฆะ
ไฟล์ $FILE
จัดรูปแบบ $FORMAT
ตัดทอน {
@func อ้างอิง
ชื่อ defaults.pcm.file_truncate
}
}
pcm.null {
พิมพ์ null
คำใบ้ {
แสดง {
@func อ้างอิง
ชื่อ defaults.namehint.basic
}
คำอธิบาย "ทิ้งตัวอย่างทั้งหมด (เล่นกลับ) หรือสร้างตัวอย่างเป็นศูนย์ (จับภาพ)"
}
}
# เปลี่ยนเส้นทางไปยังคำจำกัดความ pcm แบบขยายตามความต้องการ
pcm.cards การ์ด.pcm
pcm.default cards.pcm.default
pcm.sysdefault cards.pcm.default
pcm.หน้าบัตร.pcm.หน้า
#pcm.การ์ดหลัง.pcm.การ์ดหลัง
#pcm.center_lfe การ์ด.pcm.center_lfe
#pcm.ไซด์การ์ด.pcm.ไซด์
#pcm.surround21 การ์ด.pcm.surround21
#pcm.surround40 การ์ด.pcm.surround40
#pcm.surround41 การ์ด.pcm.surround41
#pcm.surround50 การ์ด.pcm.surround50
#pcm.surround51 การ์ด.pcm.surround51
#pcm.surround71 การ์ด.pcm.surround71
การ์ด pcm.iec958.pcm.iec958
pcm.spdif iec958
การ์ด pcm.hdmi.pcm.hdmi
การ์ด pcm.dmix.pcm.dmix
การ์ด pcm.dsnoop.pcm.dsnoop
การ์ด pcm.modem.pcm.modem
pcm.บัตรโทรศัพท์ไลน์.pcm.phoneline
#
#ส่วนต่อประสานการควบคุม
#
ctl.sysdefault {
พิมพ์ hw
การ์ด {
@func getenv
วาร์ [
ALSA_CTL_CARD
ALSA_CARD
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.ctl.card
}
}
คำใบ้ คำอธิบาย "อุปกรณ์ควบคุมเริ่มต้น"
}
ctl.default ctl.sysdefault
ctl.hw {
@args [ การ์ด ]
@args.CARD {
พิมพ์สตริง
ค่าเริ่มต้น {
@func getenv
วาร์ [
ALSA_CTL_CARD
ALSA_CARD
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.ctl.card
}
}
}
พิมพ์ hw
การ์ด $CARD
คำใบ้ คำอธิบาย "อุปกรณ์ควบคุมโดยตรง"
}
ctl.shm {
@args [ ซ็อกเก็ต CTL ]
@args.SOCKET {
พิมพ์สตริง
}
@args.CTL {
พิมพ์สตริง
}
พิมพ์ shm
เซิร์ฟเวอร์ $SOCKET
ctl $CTL
}
#
# อินเทอร์เฟซ RawMidi
#
rawmidi.default {
พิมพ์ hw
การ์ด {
@func getenv
วาร์ [
ALSA_RAWMIDI_CARD
ALSA_CARD
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.rawmidi.card
}
}
อุปกรณ์ {
@func igetenv
วาร์ [
ALSA_RAWMIDI_DEVICE
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.rawmidi.device
}
}
Hint.description "อุปกรณ์ MIDI ดิบเริ่มต้น"
}
rawmidi.hw {
@args [ การ์ด DEV ย่อย DEV ]
@args.CARD {
พิมพ์สตริง
ค่าเริ่มต้น {
@func getenv
วาร์ [
ALSA_RAWMIDI_CARD
ALSA_CARD
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.rawmidi.card
}
}
}
@args.DEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func igetenv
วาร์ [
ALSA_RAWMIDI_DEVICE
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.rawmidi.device
}
}
}
@args.SUBDEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น -1
}
พิมพ์ hw
การ์ด $CARD
อุปกรณ์ $DEV
อุปกรณ์ย่อย $SUBDEV
คำใบ้ {
คำอธิบาย "อุปกรณ์ไดรเวอร์ rawmidi โดยตรง"
อุปกรณ์ $DEV
}
}
rawmidi.virtual {
@args [ รวม ]
@args.MERGE {
พิมพ์สตริง
ค่าเริ่มต้น 1
}
พิมพ์เสมือน
รวม $MERGE
}
#
# อินเทอร์เฟซซีเควนเซอร์
#
seq.default {
พิมพ์ hw
คำใบ้ คำอธิบาย "อุปกรณ์ซีเควนเซอร์เริ่มต้น"
}
seq.hw {
พิมพ์ hw
}
#
# อินเทอร์เฟซ HwDep
#
hwdep.default {
พิมพ์ hw
การ์ด {
@func getenv
วาร์ [
ALSA_HWDEP_CARD
ALSA_CARD
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.hwdep.card
}
}
อุปกรณ์ {
@func igetenv
วาร์ [
ALSA_HWDEP_DEVICE
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.hwdep.device
}
}
คำใบ้ คำอธิบาย "อุปกรณ์ขึ้นอยู่กับฮาร์ดแวร์เริ่มต้น"
}
hwdep.hw {
@args [ การ์ด DEV ]
@args.CARD {
พิมพ์สตริง
ค่าเริ่มต้น {
@func getenv
วาร์ [
ALSA_HWDEP_CARD
ALSA_CARD
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.hwdep.card
}
}
}
@args.DEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func igetenv
วาร์ [
ALSA_HWDEP_DEVICE
]
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.hwdep.device
}
}
}
พิมพ์ hw
การ์ด $CARD
อุปกรณ์ $DEV
คำใบ้ {
คำอธิบาย "อุปกรณ์ขึ้นอยู่กับฮาร์ดแวร์โดยตรง"
อุปกรณ์ $DEV
}
}
#
# อินเทอร์เฟซตัวจับเวลา
#
timer_query.default {
พิมพ์ hw
}
timer_query.hw {
พิมพ์ hw
}
ตัวจับเวลาเริ่มต้น {
พิมพ์ hw
ระดับ {
@func อ้างอิง
ชื่อ defaults.timer.class
}
คลาส {
@func อ้างอิง
ชื่อ defaults.timer.sclass
}
การ์ด {
@func อ้างอิง
ชื่อ defaults.timer.card
}
อุปกรณ์ {
@func อ้างอิง
ชื่อ defaults.timer.device
}
อุปกรณ์ย่อย {
@func อ้างอิง
ชื่อ defaults.timer.subdevice
}
Hint.description "อุปกรณ์จับเวลาเริ่มต้น"
}
ตัวจับเวลา hw {
@args [ คลาส SCLASS การ์ด DEV SUBDEV ]
@args.CLASS {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.timer.class
}
}
@args.SCLASS {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.timer.sclass
}
}
@args.CARD {
พิมพ์สตริง
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.timer.card
}
}
@args.DEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.timer.device
}
}
@args.SUBDEV {
พิมพ์จำนวนเต็ม
ค่าเริ่มต้น {
@func อ้างอิง
ชื่อ defaults.timer.subdevice
}
}
พิมพ์ hw
คลาส $CLASS
สคลาส $SCLASS
การ์ด $CARD
อุปกรณ์ $DEV
อุปกรณ์ย่อย $SUBDEV
คำใบ้ {
คำอธิบาย "อุปกรณ์จับเวลาโดยตรง"
อุปกรณ์ $DEV
}
}
แม้จะมีคำเตือน แต่ดูเหมือนว่าโมดูลจะทำงานได้ดี (ไม่ผ่านการทดสอบอย่างสมบูรณ์)
ฉันยังคงต้องการลบออกหากเป็นไปได้ ข้อเสนอแนะใด ๆ