відрегулювати максимально можливий рівень гучності в pulseaudio


26

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

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

Особливо з деяким аудіоматеріалом, який має дуже низький рівень гучності для початку, було б непогано мати можливість швидко збільшити об'єм виводу (живлення) до більш високих налаштувань, ніж це можливо для інших - вже досить гучних матеріалів.

Відповіді:


24

Максимально можливий рівень гучності, який ми можемо отримати від ковзання регулятора гучності до більш ніж 100%, становить приблизно. На 153% вище норми пікової межі. За умови, що ми встановили гучність ALSA за допомогою alsamixer на 100, ці 100% є рівнем, вище якого аудіо буде відсікатися або спотворюватися. Це також станеться при посиленні до 153% за допомогою повзунка.

Тим не менш, можливо додатково підвищити цей рівень, встановивши рівень раковини, використовуючи команду follwing в терміналі:

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%. Будь-яка додаткова інформація, як цього досягти, можливо? було б додатково чудово! дякую
людствоANDpeace

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

Не працює: програма все ще може зробити її на 100%, навіть якщо я встановив її таким чином, щоб це було 12%.
панци

У мене були знищені динаміки ноутбука, використовуючи гучність на 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, досягнувши такого ж результату, як і використання 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
Спасибі за вашу відповідь. Якщо можливо, ви могли б відредагувати свою відповідь, щоб детальніше про неї детальніше розповісти? Людям завжди корисно знати, чому рішення має працювати, а не просто сліпо копіювати код, який вони не розуміють. Це також допомагає адаптувати рішення до різних проблем.
Геннінг Кокербек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.