调整PulseAudio中的最大可能音量


26

有时候,我的Ubuntu_12.04系统上的某些声音/电影/音乐本身的音量非常低。从今以后,我会增加声音输出的音量。我可以使用以下设置(请参见屏幕截图) 在此处输入图片说明

因此,似乎仅通过使用机器的“增大音量”按钮,pulseaudio就能将音量增大到超出可能出现的最大值。我的问题是如何调整Pulseaudio以允许更大的范围或更大的最大音量增加???

尤其是对于某些开始时音量很小的音频材料,能够将输出音量(功率提升)迅速提高到更高的设置(而不是其他已经非常响亮的素材)可能会更好。

Answers:


24

通过将音量控制滑动到100%以上,我们可以获得的最大可能音量约为。比正常峰值限制高153%。如果我们已将使用alsamixer的ALSA音量设置为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无法成功。无论如何,这个想法已经帮了很多忙。这样,可以将输出级别提高到GUI允许的100%或153%以上,谢谢。
humanityANDpeace

2
您的好答案可以将音量设置为更大的值(例如781%放大),这很棒。我的问题之一还在于如何更改最初使用的比例,以使它不是从0%到100%(通过GUI)而是从0%到781%。也许还有其他infor如何实现这一目标?那就太好了!谢谢您
humanityANDpeace

不知道如何增加音量滑块的值。它可能是硬编码的,因此除了修补源代码和重新编译外,不能更改。
塔卡特2012年

不起作用:即使我将程序设置为12%,程序仍然可以将其设置为100%。
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
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

由于我的父亲笔记本电脑(12.04 32位)未保存最大音量设置,因此我将以下行插入了shell脚本并将其设置为在启动时运行。

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
谢谢您的回答。如果可能的话,您可以编辑答案以进一步详细说明吗?对于人们了解解决方案为何有效的做法总是有帮助的,而不是仅仅盲目复制他们不理解的代码。这也有助于使解决方案适应不同的问题。
Henning Kockerbeck's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.