펄스 오디오에서 가능한 최대 볼륨을 조정


26

Somtimes 내 Ubuntu_12.04 시스템의 일부 사운드 / 영화 / 음악은 그 자체로 볼륨이 매우 낮습니다. 따라서 나는 소리 출력의 볼륨을 증가시킵니다. 다음 설정을 사용할 수 있습니다 (스크린 샷 참조). 여기에 이미지 설명을 입력하십시오

따라서 펄스 오디오는 단순히 기계의 "볼륨 증가"버튼을 사용하여 가능한 최대 값 이상으로 볼륨을 증가시킬 수 있습니다. 내 질문은 더 큰 범위 또는 더 높은 최대 볼륨 증가를 허용하도록 Pulseaudio를 조정하는 방법입니다. ??

특히 볼륨이 매우 낮은 일부 오디오 자료의 경우 출력 음량 (파워 업)을 다른 큰 소리의 자료에 필요한 것보다 빠르게 높은 설정으로 빠르게 늘릴 수있는 것이 좋습니다.

답변:


24

볼륨 컨트롤을 100 % 이상으로 슬라이드하여 얻을 수있는 최대 볼륨 레벨은 약입니다. 정상 피크 한계보다 153 % 높음. alsamixer가있는 ALSA 볼륨을 100으로 설정 한 경우이 100 %는 오디오가 클리핑되거나 왜곡되는 수준보다 높습니다. 슬라이더로 153 %로 증폭 할 때도 마찬가지입니다.

그럼에도 불구하고 터미널에서 다음 명령을 사용하여 싱크 레벨을 설정하여이 레벨을 더 높일 수 있습니다.

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

교체 <sink>에서 주어진 싱크대 이름이나 싱크 지수 :

pacmd list-sinks

하한은 <value>분명히 0100 %의 선형 부피는65536 더 더욱 증폭된다 아무것도. 512000의 값은 781 %의과 증폭으로 이어질 것입니다.

과 증폭은 클리핑 및 추악한 왜곡을 유발할뿐만 아니라 스피커를 손상시킬 수 있으므로 다양한 레벨의 사운드 출력을 증폭하는 매우 조잡한 방법입니다.

따라서 오디오 출력을 정규화하는 것이 더 좋은 방법입니다. pulseaudio로이를 수행하는 방법에 대한 다음 질문을 참조하십시오.


나는 pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150% pacmd로 아직 성공할 수 없기 때문에 사용 했습니다. 어쨌든 아이디어는 이미 많은 도움이되었습니다. 이런 식으로 GUI가 허용하는 100 % 또는 153 % 이상으로 출력 레벨을 증가시킬 수 있습니다. 감사합니다.
humanandANDpeace

2
당신의 큰 대답은 음량을 더 큰 값 (예 : 781 % 증폭)으로 설정하도록 허용했습니다. 내 질문의 일부는 원래 사용 된 스케일을 변경하여 GUI를 통해 0 %에서 100 %가 아닌 0 %에서 781 %로 변경하는 방법입니다. 이것을 달성하는 방법에 대한 추가 정보가 있습니까? 추가로 좋을 것입니다! 감사합니다
humanandANDpeace

음량 슬라이더에서이 값을 높이는 방법을 모릅니다. 하드 코딩되어 소스를 패치하고 다시 컴파일하는 것 외에는 변경할 수 없습니다.
Takkat

작동하지 않음 : 프로그램을 12 %로 설정해도 여전히 100 %로 만들 수 있습니다.
panzi 2016 년

150 %의 볼륨으로도 노트북 스피커를 파괴했습니다. 나는 그것들을 교체해야했다. 가능한 손상 경고가 정당하다는 점에 유의하십시오.
brett

7

나는이 명령을 시도했다 :

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

매우 도움이되었습니다. 150 %를 임의의 값으로 변경할 수 있습니다.


볼륨 컨트롤을 비활성화한다고 언급해야합니다.
Green

4

비디오 데모


나는 사용한다

pactl set-sink-volume 0 100%

어디 0에서 싱크 번호 pacmd list-sinks100%기본 unboosted 볼륨입니다. 오디오 부스트를 얻기 위해 100 % 이상의 값을 입력 할 수 있습니다 ( 200%예 :) .


볼륨 컨트롤을 비활성화합니다.
Green

왜? 아뇨. 방금 시도했지만 괜찮습니다. 문제는 볼륨 막대가 도달 할 수있는 최대 볼륨 이상으로 볼륨을 높입니다. 전체 막대는 아마도 약 150 % 일 것이므로 막대로 200 %를 수행 할 수 없습니다. @ 그린
미나 마이클

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 일 수 있으며 전체 이름을 입력 할 필요가 없습니다. 위의 값은 100 % 인 65536을 기반으로한다는 것을 알 수 있습니다. 99999를 사용했을 때 나는 어둠 속에서 촬영하고있었습니다. 153 %는 실제로 GUI를 사용하는 것과 동일한 결과를 달성하는 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
답변 주셔서 감사합니다. 가능하다면 답변을 편집하여 좀 더 자세히 설명해 주시겠습니까? 사람들이 이해하지 못하는 코드를 맹목적으로 복사하지 않고 솔루션이 작동하는 이유 를 아는 것은 항상 도움이됩니다 . 또한 다양한 문제에 솔루션을 적용하는 데 도움이됩니다.
Henning Kockerbeck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.