отрегулируйте максимально возможную громкость в pulaudio


26

Иногда звук / фильм / музыка в моей системе Ubuntu_12.04 сам по себе очень низкий. Отныне я увеличиваю громкость звука на выходе. Я могу использовать следующие настройки (см. Скриншот) введите описание изображения здесь

Таким образом, кажется, что pulseaudio способен увеличить громкость выше максимально возможной, просто используя кнопки «увеличения громкости» на машине. У меня вопрос, как я могу настроить Pulseaudio, чтобы увеличить диапазон или увеличить максимальную громкость ???

Особенно с некоторым аудио материалом, который имеет очень низкую громкость, чтобы начать с него, было бы неплохо иметь возможность быстро увеличить выходную громкость (powerup) до более высокого значения, чем это может быть необходимо для другого, уже довольно громкого, материала.

Ответы:


24

Максимально возможный уровень громкости, который мы можем получить, сдвинув регулятор громкости более чем на 100%, составляет ок. 153% выше нормального предела пика. При условии, что мы установили громкость ALSA с помощью alsamixer на 100, эти 100% - это уровень, выше которого звук будет обрезан или искажен. Это также произойдет при усилении до 153% с помощью ползунка.

Тем не менее, возможно дальнейшее повышение этого уровня путем установки уровня приемника с помощью следующей команды в терминале:

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

Замените <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%, что позволяет графический интерфейс, спасибо.
человечествоANDpeace

2
Ваш отличный ответ позволил установить громкость на большее значение (например, усиление 781%), и это здорово. Часть моего вопроса также состоит в том, как изменить первоначально использованную шкалу, чтобы она составляла не от 0% до 100% (через GUI), а от 0% до 781%. Может, есть дополнительная информация, как этого добиться? это было бы дополнительно здорово! спасибо
человечность, и,

Не знаю, как увеличить это значение для ползунка громкости. Он может быть жестко запрограммирован, поэтому не может быть изменен, кроме исправления источника и перекомпиляции.
Таккат

Не работает: программа все еще может сделать это на 100%, даже если я установлю это на 12% таким образом.
Panzi

У меня были уничтожены динамики моего ноутбука с использованием громкости на 150%, что позволяет. Я должен был заменить их. Имейте в виду, что предупреждение о возможном повреждении оправдано.
Бретт

7

Я попробовал эту команду:

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

и это было очень полезно. Можно изменить 150% на любое значение.


Следует отметить, что он отключает регулировку громкости.
Зеленый

4

Видео Демонстрация


я использую

pactl set-sink-volume 0 100%

Откуда берется 0номер приемника, pacmd list-sinksи 100%это объем по умолчанию без загрузки. Вы можете ввести значения выше 100% для усиления звука ( 200%например).


это отключает регулировку громкости.
Зеленый

Зачем? нет, это не так. Я только что попробовал, и это нормально. Дело в том, что он поднимает громкость выше максимальной громкости, которую может достичь шкала громкости. Полный бар, вероятно, будет около 150%, поэтому 200% нельзя сделать с помощью бара. @Green
Мина Майкл

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

Я вставил следующую строку в сценарий оболочки и настроил его запуск при запуске, так как мой портативный компьютер отцов (12.04 32 бит) не сохранял настройку максимальной громкости.

pacmd set-sink-volume 0 99999

если есть только одна звуковая карта, то это вероятно индекс 0, и тогда вам не нужно вводить полное имя. Я вижу выше, что значение основано на 65536, составляющем 100%. Когда я использовал 99999, я снимал в темноте. 153% на самом деле будет 100270, достигая того же результата, что и при использовании графического интерфейса.


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
Спасибо за ваш ответ. Если возможно, не могли бы вы отредактировать свой ответ, чтобы подробнее рассказать об этом? Людям всегда полезно знать, почему решение должно работать, а не просто слепо копировать и вставлять код, который они не понимают. Это также помогает адаптировать решения к различным проблемам.
Хеннинг Кокербек,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.