ปรับระดับเสียงที่เป็นไปได้สูงสุดใน pulseaudio


26

บางครั้งเสียง / ภาพยนตร์ / เพลงในระบบ Ubuntu_12.04 ของฉันอยู่ที่ระดับเสียงที่ต่ำมากโดยตัวมันเอง ต่อจากนี้ไปฉันจะเพิ่มระดับเสียงของเอาท์พุทเสียง ฉันสามารถใช้การตั้งค่าต่อไปนี้ (ดูภาพหน้าจอ) ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นจึงดูเหมือนว่า pulseaudio จะสามารถเพิ่มระดับเสียงเกินระดับสูงสุดที่เป็นไปได้โดยใช้เพียงปุ่ม "เพิ่มระดับเสียง" ของเครื่อง คำถามของฉันคือฉันจะปรับ Pulseaudio เพื่อให้มีช่วงที่กว้างขึ้นหรือเพิ่มปริมาณสูงสุดที่สูงขึ้นได้อย่างไร

โดยเฉพาะอย่างยิ่งกับวัสดุเสียงที่มีระดับเสียงต่ำมากเริ่มต้นด้วยความยินดีที่สามารถเพิ่มระดับเสียงเอาต์พุต (powerup) ให้เป็นการตั้งค่าที่สูงขึ้นได้อย่างรวดเร็วกว่าที่จำเป็นสำหรับวัสดุอื่น ๆ

คำตอบ:


24

ระดับเสียงที่เป็นไปได้สูงสุดที่เราสามารถทำได้จากการเลื่อนตัวควบคุมระดับเสียงไปจนถึงมากกว่า 100% นั้นประมาณ 153% เหนือขีด จำกัด สูงสุดปกติ เราได้ตั้งค่าระดับเสียงของ ALSA ด้วย alsamixer เป็น 100 เหล่านี้ 100% เป็นระดับที่เสียงดังกล่าวจะถูกตัดหรือบิดเบี้ยว สิ่งนี้จะเกิดขึ้นเมื่อขยายเป็น 153% ด้วยตัวเลื่อน

อย่างไรก็ตามมีความเป็นไปได้ที่จะเพิ่มระดับนี้โดยการตั้งค่าระดับ sink โดยใช้คำสั่ง follwing ในเทอร์มินัล:

pacmd set-sink-volume <sink> <value>

แทนที่<sink>ด้วยชื่อ sink หรือดัชนี sink ของคุณตามที่ได้รับจาก:

pacmd list-sinks

ขีด จำกัด ล่างที่<value>เห็นได้ชัดคือ0ระดับเสียงเชิงเส้น 100% เป็นค่าของ65536สิ่งที่สูงขึ้นจะขยายเพิ่มเติม ค่าของ 512000 จะนำไปสู่การขยายตัวเกิน 781%

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

ดังนั้นมันจะเป็นวิธีที่ดีกว่าในการทำให้สัญญาณเสียงของคุณเป็นปกติ ดูคำถามต่อไปนี้เกี่ยวกับวิธีการทำสิ่งนี้ด้วย pulseaudio:


ฉันใช้ไปแล้วpactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150% - ตั้งแต่ฉันยังใช้ pacmd ไม่สำเร็จ ความคิดนั้นช่วยอะไรมากมาย ด้วยวิธีนี้คุณสามารถเพิ่มระดับเอาต์พุตเป็นมากกว่า 100% หรือ 153% ที่ GUI อนุญาตขอบคุณ
HumanityANDpeace

2
คำตอบที่ยอดเยี่ยมของคุณอนุญาตให้ตั้งระดับเสียงเป็นค่าที่มากกว่า (เช่นการขยาย 781%) ซึ่งยอดเยี่ยม ส่วนหนึ่งของคำถามของฉันคือวิธีการเปลี่ยนมาตราส่วนที่ใช้ในตอนแรกเพื่อไม่ให้เปลี่ยนจาก 0% เป็น 100% (ผ่าน GUI) แต่จาก 0% เป็น 781% อินฟอร์เพิ่มเติมจะทำสิ่งนี้ได้อย่างไร? มันจะยิ่งใหญ่มาก! ขอบคุณ
humanityANDpeace

ไม่ทราบวิธีเพิ่มค่านี้สำหรับตัวเลื่อนระดับเสียง มันอาจเป็นรหัสยากจึงไม่สามารถเปลี่ยนอื่นนอกเหนือจากการแพ็ตช์แหล่งที่มาและการคอมไพล์ใหม่
Takkat

ใช้งานไม่ได้: โปรแกรมยังสามารถสร้างได้ 100% แม้ว่าฉันจะตั้งไว้ที่ 12%
panzi

ฉันมีลำโพงแล็ปท็อปของฉันถูกทำลายโดยใช้ระดับเสียงที่ 150% ยังช่วยให้ ฉันต้องแทนที่พวกเขา โปรดทราบว่าการเตือนความเสียหายที่อาจเกิดขึ้นนั้นเป็นธรรม
brett

7

ฉันลองคำสั่งนี้:

pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150%

และมันก็มีประโยชน์มาก หนึ่งสามารถเปลี่ยน 150% เป็นค่าใด ๆ


คุณควรพูดถึงว่ามันปิดการใช้งานการควบคุมระดับเสียง
สีเขียว

4

การสาธิตวิดีโอ


ฉันใช้

pactl set-sink-volume 0 100%

0เป็นหมายเลข sink จากที่ไหนpacmd list-sinksและ100%เป็นไดรฟ์ข้อมูลที่ไม่ได้เริ่มต้น คุณสามารถป้อนค่าที่สูงกว่า 100% เพื่อรับการเพิ่มเสียง ( 200%ตัวอย่าง)


มันปิดการใช้งานการควบคุมระดับเสียง
สีเขียว

ทำไม? ไม่มันไม่ ฉันแค่ลองแล้วก็ใช้ได้ สิ่งหนึ่งคือมันเพิ่มระดับเสียงเหนือระดับเสียงสูงสุดที่ระดับเสียงสามารถเข้าถึงได้ อาจมีบาร์เต็มรูปแบบอาจจะอยู่ที่ประมาณ 150% ดังนั้นจึงไม่สามารถทำได้ 200% กับบาร์ @Green
Mina Michael

2

นี่เป็นสคริปต์เล็กน้อยสำหรับทำการคำนวณและตั้งค่าระดับเสียงให้คุณ (เพียงแค่ผ่านระดับเสียงเป็นอาร์กิวเมนต์) ตัวอย่างเช่น: vol 105จะตั้งค่าระดับเสียงเป็น 105%

  • สร้างไฟล์

    $> file=/usr/bin/vol;sudo touch $file && \
    sudo chmod u+x $file && sudo chown $USER:$USER $file && \
    gedit $file
    
  • คัดลอกและวาง:

    #!/bin/bash
    SetPacmdSinkVol()
    {
        #default index of 0 - can be changed
        local mySinkIndex=0
        #if you want to ignore pacmd output
        local ignoreOutput=true
        local num=$1
        local vol=$((num * 655)); 
        vol=$((num * 36 / 100 + vol));
        echo -e "\033[0;32mVol - ${num}:${vol}\033[0;m"
        if $ignoreOutput; then
            pacmd set-sink-volume $mySinkIndex $vol > /dev/null
        else
            pacmd set-sink-volume $mySinkIndex $vol
        fi
    }
    SetPacmdSinkVol $@
    

1

ฉันแทรกบรรทัดต่อไปนี้ลงในเชลล์สคริปต์และตั้งให้ทำงานเมื่อเริ่มต้นตั้งแต่แล็ปท็อป fathers ของฉัน (12.04 32 บิต) ไม่ได้บันทึกการตั้งค่าระดับเสียงสูงสุด

pacmd set-sink-volume 0 99999

หากมีการ์ดเสียงเพียงอันเดียวอาจเป็นดัชนี 0 และคุณไม่จำเป็นต้องพิมพ์ชื่อเต็ม ฉันเห็นข้างต้นว่าค่าจะขึ้นอยู่กับ 65536 เป็น 100% เมื่อฉันใช้ 99999 ฉันถูกยิงในที่มืด 153% จริง ๆ แล้วจะได้ 100270 บรรลุผลเช่นเดียวกับการใช้ gui


0
#!/bin/bash

FILE=/tmp/currentVolume

interval=15
minVolume=10
maxVolume=140

if [ -f "$FILE" ];
then
   CurrentVolume=$(cat $FILE )
else
   CurrentVolume=50
fi

        if [ $CurrentVolume -lt 60 ]; then
            interval=3
        elif [ $CurrentVolume -lt 80 ]; then
            interval=5
        elif [ $CurrentVolume -lt 110 ]; then
            interval=10
        else
            interval=15
        fi

if [ "$1" == "UP" ] 
then
    CurrentVolume=$(echo "$CurrentVolume + $interval" | bc)
    if (( $(echo "$maxVolume < $CurrentVolume" | bc -l) ))
    then
        CurrentVolume=$maxVolume
    fi  
else
    CurrentVolume=$(echo "$CurrentVolume - $interval" | bc)
    if (( $(echo "$minVolume > $CurrentVolume" | bc -l) ))
    then
        CurrentVolume=$minVolume
    fi
fi

echo "CurrentVolume:" $CurrentVolume >> /tmp/currentVolume.log
echo $CurrentVolume > $FILE


for i in {1..20}
do
   pactl -- set-sink-volume $i $(echo $CurrentVolume)%
done

1
ขอบคุณสำหรับคำตอบ. ถ้าเป็นไปได้คุณสามารถแก้ไขคำตอบของคุณให้ละเอียดยิ่งขึ้นได้ไหม? เป็นประโยชน์เสมอสำหรับคนที่จะรู้ว่าทำไมการแก้ปัญหาควรจะทำงานแทนรหัส copy'n'pasting สุ่มสี่สุ่มห้าที่พวกเขาไม่เข้าใจ นอกจากนี้ยังช่วยในการปรับแก้ปัญหาต่าง ๆ
Henning Kockerbeck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.