เริ่มต้นด้วยการลดระดับเสียงในการเล่นและตรวจสอบว่าเสียงผิดเพี้ยนนั้นส่งผลกระทบต่อทุกแอปพลิplugเคชันหรือไม่ บน Ubuntu 24.04 Desktop นั้น PipeWire มักจะอยู่ระหว่างแอปพลิเคชันและอุปกรณ์เสียง ดังนั้นการปรับแต่ง ALSA จึงมีประโยชน์ก็ต่อเมื่อแก้ไขที่ต้นเหตุเท่านั้น: ใช้มิกเซอร์สำหรับการตัดเสียง ใช้ ALSA PCM สำหรับแอปพลิเคชัน ALSA-direct ที่มีรูปแบบไม่ตรงกัน หรือใช้การทดสอบโหมดประหยัดพลังงานสำหรับเสียงคลิกหลังจากไม่ได้ใช้งาน หลีกเลี่ยงการเปลี่ยนค่าเริ่มต้นของ ALSA ทั่วทั้งระบบในขั้นตอนแรก
ความผิดเพี้ยนนั้นเกิดจากแอปใดแอปหนึ่งหรือจากทั้งระบบ?
ความแตกต่างนั้นเป็นตัวกำหนดว่าการตั้งค่าใดมีความเกี่ยวข้อง เบราว์เซอร์ที่ให้เสียงไม่ดีในขณะที่ระบบแจ้งเตือน แต่โปรแกรมเล่นเพลงอื่นให้เสียงที่ชัดเจน แสดงว่าปัญหาอยู่ที่แอป ระดับการสตรีม หรือเอาต์พุตที่เลือกไว้ เสียงผิดเพี้ยนในทุกแอปอาจเกิดจากระดับเสียงเล่นที่มากเกินไป อุปกรณ์หรือสายเคเบิล ไดรเวอร์ หรือการเปลี่ยนแปลงของกระแสไฟ การตั้งค่า ALSA ไม่สามารถซ่อมแซมลำโพงที่เสียหายหรือการเชื่อมต่อทางกายภาพที่ไม่ดีได้
- เล่นคลิปเสียงสั้นๆ เดียวกันในสองแอปพลิเคชันที่แตกต่างกัน โดยใช้เอาต์พุตเดียวกัน ลดระดับเสียงของแอปพลิเคชันและระดับเสียงเอาต์พุตของ Ubuntu ก่อนทำการทดสอบ เนื่องจากสัญญาณดิจิทัลที่ถูกตัดทอนในส่วนต้นทางไม่สามารถแก้ไขได้ด้วยการเปลี่ยนมิกเซอร์ฮาร์ดแวร์ในภายหลัง
- เปิดเทอร์มินัลแล้วรัน
pactl infoคำwpctl statusสั่ง `pipeWire` และ `pipeWire` คำสั่งเหล่านี้จะแสดงเซิร์ฟเวอร์เสียงที่ใช้งานอยู่และอ็อบเจ็กต์ PipeWire ที่พร้อมใช้งานเมื่อติดตั้งเครื่องมือเหล่านั้นแล้ว เอกสารแผนการทดสอบเสียงเดสก์ท็อปของ Ubuntu ระบุว่า PipeWire เป็นเซิร์ฟเวอร์เสียงเดสก์ท็อป หากการติดตั้งของคุณได้รับการปรับแต่ง ให้ใช้เอาต์พุตของคำสั่งเหล่านี้แทนการคาดเดาเส้นทางเสียง
- เรียกใช้คำสั่ง
aplay -lเพื่อแสดงรายการฮาร์ดแวร์การเล่น ALSA หากปัญหาเกิดขึ้นเฉพาะกับชุดหูฟัง ลำโพง แท่นวาง หรือสายเคเบิลเพียงชุดเดียว ให้ลองเสียบใหม่หรือสลับการเชื่อมต่อก่อนที่จะเปลี่ยนการตั้งค่า
แผนการทดสอบเดสก์ท็อป Ubuntu PipeWireและหน้าการแก้ไขปัญหาเสียงแตกของ Ubuntuเป็นข้อมูลอ้างอิงที่มีประโยชน์สำหรับเส้นทางเสียงเดสก์ท็อปปัจจุบันและการตรวจสอบทางกายภาพขั้นพื้นฐาน
ตัวอย่างผลลัพธ์จากเทอร์มินัลที่แสดงให้เห็นว่า PipeWire เป็นเซิร์ฟเวอร์เสียง และ aplay แสดงรายการอุปกรณ์เล่นเสียง
ระดับเสียงในการเล่นอาจเกิดการบิดเบือนหรือไม่?
ใช่แล้ว เมื่อเสียงเริ่มหยาบกระด้าง มีเสียงรบกวน หรือขาดๆ หายๆ ในช่วงที่มีเสียงดังมาก ให้ลดระดับเสียงลงก่อนที่จะทำการปรับแต่งเพิ่มเติม สามารถควบคุมระดับเสียงได้หลายแบบพร้อมกัน เช่น ระดับเสียงจากแอปพลิเคชัน ระดับเสียงจากเอาต์พุตบนเดสก์ท็อป และระดับเสียงจากฮาร์ดแวร์ เช่น Master, PCM หรือ Speaker ชื่อของตัวควบคุมระดับเสียงจะแตกต่างกันไปตามอุปกรณ์เสียง ดังนั้นให้เปลี่ยนตัวควบคุมการเล่นที่เกี่ยวข้องทีละตัวแล้วลองฟังอีกครั้ง
- ติดตั้งโปรแกรมผสมเสียงหากจำเป็นด้วยไฟล์
sudo apt install alsa-utils.
- เรียกใช้คำสั่ง
alsamixer. กดF6เพื่อเลือกการ์ดเสียง จากนั้นกดอีกครั้งF3เพื่อแสดงการควบคุมการเล่น ใช้ปุ่มลูกศรเพื่อลดระดับการควบคุม Master, PCM หรือ Speaker ตามความเหมาะสมalsamixerคู่มือ Ubuntu Noble จะอธิบายรายละเอียดเกี่ยวกับการ์ดเสียงและการแสดงผลการเล่นเหล่านี้
- นอกจากนี้ ให้ลดระดับเสียงของแอปและเดสก์ท็อปลงให้อยู่ในระดับปานกลาง อย่าเพิ่มระดับเสียงเกิน 100 เปอร์เซ็นต์เพื่อชดเชยแหล่งกำเนิดเสียงที่เบา เพราะการเพิ่มระดับเสียงอาจทำให้เสียงแตกแย่ลง นี่
Mic Boostคือตัวควบคุมการบันทึกเสียง ไม่ใช่ตัวแก้ไขปัญหาการเล่นเสียง
ทดสอบด้วยไฟล์เสียงเดียวกันหลังจากปรับแต่งแต่ละครั้ง หากการลดค่าควบคุมฮาร์ดแวร์ใดๆ ช่วยลดเสียงผิดเพี้ยนได้ ให้คงค่าควบคุมนั้นไว้ต่ำกว่าระดับที่เสียงผิดเพี้ยนกลับมา ไม่มีเปอร์เซ็นต์ที่ "ถูกต้อง" ตายตัว: ค่าควบคุมบนการ์ดเสียงและความไวของลำโพงแตกต่างกันไป
ภาพแสดงมุมมองการเล่นของ alsamixer โดยที่ปุ่มควบคุม Master, PCM และ Speaker ถูกตั้งค่าไว้ต่ำกว่าค่าสูงสุด
ปัญหาดังกล่าวส่งผลกระทบเฉพาะแอปที่เปิดใช้งาน ALSA โดยตรงหรือไม่?
ลองใช้การแปลงของ ALSA plugก่อนแก้ไขอุปกรณ์เริ่มต้น ปลั๊กอินนี้สามารถแปลงรูปแบบตัวอย่าง อัตรา หรือจำนวนช่องสัญญาณให้ตรงกับฮาร์ดแวร์ได้ เหมาะสำหรับโปรแกรมรุ่นเก่าหรือโปรแกรมบรรทัดคำสั่งที่เปิด ALSA โดยตรงและล้มเหลวหรือมีเสียงผิดเพี้ยนเมื่อใช้สัญญาณ PCM จากฮาร์ดแวร์ดิบ ปลั๊กอินนี้ไม่ได้เปลี่ยนแปลงเส้นทางที่แอปพลิเคชัน PipeWire ทั่วไปใช้
ค้นหาหมายเลขการ์ดและอุปกรณ์ในaplay -l. สำหรับการทดสอบอย่างรวดเร็ว ให้แทนที่ PCM ฮาร์ดแวร์ที่แสดงบนเครื่องของคุณด้วยคำสั่งนี้:
speaker-test -D plughw:0,0 -c 2 -t sine -f 440 -l 1
plughw:0,0หมายถึง การ์ด 0 อุปกรณ์ 0 ตัวเลขของคุณอาจแตกต่างกัน หากการทดสอบการแปลงนี้ฟังดูดีในขณะที่hw:0,0การทดสอบโดยตรงล้มเหลว คุณสามารถกำหนด PCM ที่มีชื่อในไฟล์การกำหนดค่าผู้ใช้ของคุณได้~/.asoundrc:
pcm.converted {
type plug
slave.pcm "hw:0,0"
}
แทนที่hw:0,0ด้วยอุปกรณ์ที่คุณระบุ เลือกconvertedในแอปพลิเคชันที่รองรับ ALSA หรือทดสอบด้วยspeaker-test -D converted -c 2 -t sine -f 440 -l 1สำรองข้อมูลที่มีอยู่ ก่อนแก้ไข เอกสารอ้างอิงปลั๊กอิน PCM~/.asoundrcของโครงการ ALSA อธิบายการแปลง และคู่มือ asoundrc อธิบายการกำหนดค่าผู้ใช้และระบบ หลีกเลี่ยงการคัดลอกคำจำกัดความนี้ลงในเว้นแต่คุณตั้งใจจะแทนที่ค่าเริ่มต้นของ ALSA สำหรับไคลเอนต์ ALSA ทั้งหมดโดยเฉพาะ เพราะอาจทำให้การทำงานของอุปกรณ์อื่นหรือการกำหนดเส้นทางบนเดสก์ท็อปหยุดชะงักได้pcm.!default
ตัวอย่างโค้ดจากไฟล์ ~/.asoundrc ที่ใช้กำหนดชื่อปลั๊ก ALSA PCM สำหรับอุปกรณ์ฮาร์ดแวร์ที่เลือกไว้
เสียงคลิกเกิดขึ้นเฉพาะหลังจากเงียบ หรือเมื่อเล่นต่อเท่านั้น?
รูปแบบดังกล่าวอาจบ่งชี้ถึงการประหยัดพลังงานของโคเด็ค HDA มากกว่าการตัดสัญญาณ ทดสอบการตั้งค่าชั่วคราวเฉพาะในกรณีที่snd_hda_intelไดรเวอร์และพารามิเตอร์มีอยู่เท่านั้น ตรวจสอบค่าปัจจุบันก่อน:
cat /sys/module/snd_hda_intel/parameters/power_save
หากไฟล์ดังกล่าวมีอยู่ ให้ปิดใช้งานช่วงเวลาประหยัดพลังงานของตัวแปลงสัญญาณชั่วคราว จนกว่าจะรีบูตเครื่อง:
echo 0 | sudo tee /sys/module/snd_hda_intel/parameters/power_save
เล่นไฟล์เสียง ปล่อยทิ้งไว้ให้หยุดนิ่งนานพอที่จะเกิดเสียงคลิก แล้วจึงเล่นต่อเอกสารเกี่ยวกับการประหยัดพลังงาน ALSA ของเคอร์เนล อธิบายถึงพารามิเตอร์การประหยัดพลังงาน HDA และระบุว่าการเปลี่ยนแปลงของพลังงานอาจทำให้เกิดเสียงคลิกได้ในฮาร์ดแวร์บางชนิด การปิดใช้งานการตั้งค่านี้อาจใช้พลังงานมากขึ้น และไม่ใช่วิธีแก้ไขทั่วไปสำหรับเสียงผิดเพี้ยนระหว่างการเล่นต่อเนื่อง
หากการทดสอบได้ผลและคุณต้องการให้ผลลัพธ์คงอยู่ ให้สร้าง/etc/modprobe.d/alsa-hda-powersave.confไฟล์ที่มีเนื้อหาดังoptions snd_hda_intel power_save=0กล่าว แล้วรีบูตเครื่อง หากต้องการยกเลิก ให้ลบไฟล์นั้นแล้วรีบูตเครื่อง หากไม่มีเส้นทาง sysfs ให้ข้ามการปรับแต่งนี้ไป เพราะไดรเวอร์อาจไม่ได้ถูกโหลด หรืออุปกรณ์ของคุณอาจใช้ไดรเวอร์อื่น อย่าสร้างเส้นทางที่หายไปด้วยตนเอง
ภาพแสดงมุมมองหน้าจอเทอร์มินัลชั่วคราว แสดงค่า power_save ของ HDA เปลี่ยนจาก 10 เป็น 0 สำหรับการทดสอบชั่วคราว
คุณจะยืนยันได้อย่างไรว่าการแก้ไขนั้นถูกต้อง?
ลองเล่นส่วนเดียวกันซ้ำอีกครั้งในระดับเสียงปานกลางในแอปต้นฉบับและแอปที่สอง ตรวจสอบว่าเสียงสูงสุดไม่แหบแห้งอีกต่อไป และสำหรับปัญหาเสียงคลิกที่ไม่ได้ใช้งาน ให้ตรวจสอบว่าเสียงเล่นต่อโดยไม่มีเสียงคลิก หากคุณเพิ่ม ALSA PCM ที่ตั้งชื่อไว้ ให้ทดสอบจากโปรแกรมที่รองรับ ALSA เบราว์เซอร์หรือไคลเอนต์ PipeWire อื่นๆ อาจไม่ใช้คำจำกัดความนั้น
หากยังคงมีเสียงผิดเพี้ยนในแอปพลิเคชันต่างๆ เอาต์พุต และระดับเสียงเล่นที่เหมาะสม ให้คืนค่าการตั้งค่าทดลองกลับ และตรวจสอบการเชื่อมต่อ อุปกรณ์ หรือไดรเวอร์เคอร์เนล Ubuntu แนะนำให้ตรวจสอบตัวเชื่อมต่อและอุปกรณ์เสียงที่เลือกเพื่อหาสาเหตุของเสียงแตก รวบรวมข้อมูลaplay -lและ (สำหรับเสียง PCI) lspci -nnkเอาต์พุตเมื่อต้องการความช่วยเหลือเกี่ยวกับไดรเวอร์เฉพาะ หลีกเลี่ยงการแก้ไขขนาดบัฟเฟอร์โดยพลการ: การเปลี่ยนแปลงบัฟเฟอร์จะแลกเปลี่ยนความหน่วงกับความทนทานต่อการขาดหายของข้อมูล และควรทำหลังจากพบหลักฐานการขาดหายของข้อมูล ไม่ใช่ใช้เป็นวิธีแก้ปัญหาเสียงผิดเพี้ยนทั่วไป