Answers:
通过将音量控制滑动到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 0 100%
其中0
的接收器编号在哪里,pacmd list-sinks
并且100%
是默认的非增强卷。您可以输入高于100%的值以获取音频增强(200%
例如)。
这是一个用于计算和设置音量的小脚本(只需将音量作为参数传递)。例如: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 $@
由于我的父亲笔记本电脑(12.04 32位)未保存最大音量设置,因此我将以下行插入了shell脚本并将其设置为在启动时运行。
pacmd set-sink-volume 0 99999
如果只有一张声卡,它的索引可能为0,那么您无需键入全名。我在上面看到该值基于65536为100%。当我使用99999时,我在黑暗中拍摄。153%实际上是100270,与使用gui可获得相同的结果。
#!/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
pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150%
-因为使用pacmd无法成功。无论如何,这个想法已经帮了很多忙。这样,可以将输出级别提高到GUI允许的100%或153%以上,谢谢。