отрегулируйте максимально возможную громкость в 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.