Pertanyaan sesuaikan semaksimal mungkin volume di pulseaudio


Kadang-kadang beberapa suara / film / musik pada sistem Ubuntu_12.04 saya berada pada volume yang sangat rendah dengan sendirinya. Untuk selanjutnya saya meningkatkan volume output suara. Saya dapat menggunakan pengaturan berikut (lihat screenshot) enter image description here

Oleh karena itu pulseaudio mampu meningkatkan volume melebihi maksimum yang mungkin muncul hanya dengan menggunakan tombol "peningkatan volume" dari mesin. Pertanyaan saya adalah bagaimana saya dapat menyesuaikan Pulseaudio untuk memungkinkan rentang yang lebih besar atau peningkatan volume maksimal yang lebih tinggi ???

Terutama dengan beberapa materi audio yang pada volume yang sangat rendah untuk memulai dengan itu akan menyenangkan untuk dapat dengan cepat meningkatkan volume output (powerup) ke pengaturan yang lebih tinggi dari yang mungkin diperlukan untuk materi lain yang sudah cukup keras.


26
2017-11-20 12:12


asal




Jawaban:


Tingkat volume maksimal yang dapat kita peroleh dari menggeser kontrol volume menjadi lebih dari 100% adalah kira-kira. 153% di atas batas normal puncak. Asalkan kita telah mengatur volume ALSA dengan alsamixer ke 100 ini 100% adalah tingkat di atas mana audio akan dipotong atau terdistorsi. Ini juga akan terjadi ketika memperkuat hingga 153% dengan slider.

Namun demikian adalah mungkin untuk lebih meningkatkan tingkat ini dengan menetapkan tingkat tenggelam menggunakan perintah follwing di terminal:

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

Menggantikan <sink> dengan nama wastafel atau sink index Anda seperti yang diberikan dari:

pacmd list-sinks

Batas bawah untuk <value> jelas 0, volume linier 100% adalah nilai 65536, apa pun yang lebih tinggi akan lebih diperkuat. Nilai 512000 akan menyebabkan overamplifikasi 781%.

Ini adalah metode yang sangat kasar untuk memperkuat output suara dari berbagai level karena overamplifying tidak hanya akan menyebabkan kliping dan distorsi yang buruk tetapi juga dapat merusak speaker Anda.

Oleh karena itu, ini akan menjadi cara yang lebih baik untuk menormalkan output audio Anda. Lihat pertanyaan berikut tentang cara melakukan ini dengan pulseaudio:


23
2017-11-20 20:05



Saya telah menggunakan pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150%  - Karena saya belum bisa berhasil dengan pacmd. Bagaimanapun ide itu sudah banyak membantu. Dengan cara ini dimungkinkan untuk meningkatkan level output hingga lebih dari 100% atau 153% yang diizinkan oleh GUI, terima kasih. - humanityANDpeace
Jawaban hebat Anda memungkinkan untuk mengatur volume ke nilai yang lebih besar (seperti 781% amplifikasi) yang sangat bagus. Bagian dari pertanyaan saya adalah bagaimana mengubah skala yang semula digunakan sehingga tidak dari 0% hingga 100% (melalui GUI) tetapi dari 0% hingga 781%. Informasi tambahan bagaimana mencapai ini, mungkin? itu akan sangat bagus! Terima kasih - humanityANDpeace
Tidak tahu bagaimana meningkatkan nilai ini untuk slider volume. Ini mungkin sulit dikodekan, sehingga tidak dapat diubah selain menambal sumber dan mengkompilasi ulang. - Takkat
Tidak berfungsi: Sebuah program masih dapat membuatnya 100% bahkan jika saya menetapkannya menjadi 12% seperti itu. - panzi


Saya mencoba perintah ini:

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

dan itu sangat membantu. Satu dapat mengubah 150% ke nilai apa pun.


7
2018-03-22 00:20



Anda harus menyebutkan bahwa ini menonaktifkan kontrol volume. - Green


Demonstrasi Video


saya menggunakan

pactl set-sink-volume 0 100%

Dimana 0 adalah nomor wastafel dari pacmd list-sinks dan 100% adalah volume default yang tidak dikuatkan. Anda dapat memasukkan nilai di atas 100% untuk mendapatkan peningkatan audio (200% sebagai contoh).


4
2018-04-06 17:02



itu menonaktifkan kontrol volume. - Green
Mengapa? tidak, tidak. Saya baru saja mencobanya dan tidak apa-apa. Masalahnya adalah bahwa hal itu menaikkan volume di atas volume maksimum yang dapat dijangkau oleh bar volume. Bar penuh mungkin sekitar 150% mungkin, jadi 200% tidak bisa dilakukan dengan bar. @Hijau - Mina Michael


Berikut ini adalah skrip kecil untuk melakukan perhitungan dan mengatur volume untuk Anda (hanya lulus volume sebagai argumen). Sebagai contoh: vol 105 akan mengatur volume menjadi 105%.

  • Buat file

    $> file=/usr/bin/vol;sudo touch $file && \
    sudo chmod u+x $file && sudo chown $USER:$USER $file && \
    gedit $file
    
  • Salin dan tempel:

    #!/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 $@
    

2
2018-05-04 11:05





Saya memasukkan baris berikut ke dalam skrip shell dan mengaturnya untuk dijalankan saat startup karena laptop ayah saya (12,04 32 bit) tidak menyimpan pengaturan volume maksimal.

pacmd set-sink-volume 0 99999

jika hanya ada satu kartu suara, itu mungkin indeks 0 dan kemudian Anda tidak perlu mengetikkan nama lengkapnya. Saya melihat di atas bahwa nilainya berdasarkan 65536 menjadi 100%. Ketika saya menggunakan 99999 saya memotret dalam gelap. 153% sebenarnya akan 100270 mencapai hasil yang sama dengan menggunakan gui.


1
2017-10-08 01:05





#!/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

0
2017-11-19 03:22



Terima kasih atas jawaban Anda. Jika memungkinkan, bisakah Anda mengedit jawaban Anda untuk menguraikan sedikit lebih banyak tentangnya? Itu selalu membantu orang untuk mengetahuinya Mengapa sebuah solusi seharusnya berfungsi, alih-alih hanya menyalin kode "membabi buta" yang tidak mereka pahami. Itu juga membantu menyesuaikan solusi untuk masalah yang berbeda. - Henning Kockerbeck