pulseaudioで可能な最大音量を調整する


26

Ubuntu_12.04システムのサウンド/映画/音楽の一部が、単独では非常に小さい場合があります。以降、音声出力の音量を上げます。次の設定を使用できます(スクリーンショットを参照) ここに画像の説明を入力してください

したがって、pulseaudioは、単にマシンの「音量を上げる」ボタンを使用するだけで、表示される最大値を超えて音量を上げることができるようです。私の質問は、Pulseaudioを調整して、より大きな範囲またはより高い最大音量の増加を許可する方法ですか?

特に、始めに非常に小さい音量のオーディオ素材では、出力音量(パワーアップ)を他の既にかなり大きな素材に必要な設定よりも高い設定にすばやく上げることができると便利です。

回答:


24

ボリュームコントロールを100%以上にスライドさせることで得られる最大可能ボリュームレベルは、約10%です。通常のピーク制限を153%上回っています。alsamixerでALSAボリュームを100に設定した場合、これらの100%はオーディオがクリップまたは歪むレベルです。これは、スライダーで153%に増幅したときにも発生します。

それでも、ターミナルで次のコマンドを使用してシンクレベルを設定することにより、このレベルをさらに上げることが可能です。

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

<sink>以下から指定されたシンク名またはシンクインデックスに置き換えます。

pacmd list-sinks

の下限は<value>明らかにであり0、100%の線形ボリュームはの値であり65536、それ以上の値はさらに増幅されます。したがって、512000の値は、781%の過剰増幅につながります。

これはさまざまなレベルのサウンド出力を増幅する非常に粗雑な方法です。オーバーアンプはクリッピングやandい歪みにつながるだけでなく、スピーカーを損傷する可能性があるためです。

したがって、オーディオ出力を正規化するより良い方法です。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%に変更する方法でもあります。多分これを達成する方法はありますか?さらに素晴らしいだろう!ありがとう
humanityANDpeace

ボリュームスライダーのこの値を増やす方法はわかりません。ハードコードされている可能性があるため、ソースにパッチを適用して再コンパイルする以外は変更できません。
Takkat

動作しません:そのように12%に設定しても、プログラムは100%にすることができます。
パンジー

150%のボリュームを使用してもラップトップスピーカーが破壊されました。私はそれらを交換しなければなりませんでした。考えられる損傷の警告は正当化されることに注意してください。
39分にブレット

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%を達成することはできません。@グリーン
ミーナ・マイケル

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

サウンドカードが1つしかない場合は、おそらくインデックス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
ご回答ありがとうございます。可能であれば、答えを編集して、もう少し詳しく説明してもらえますか?理解できないコードを盲目的にコピーアンドペーストするだけでなく、ソリューションが機能するはずの理由を知ることは、人々にとって常に役立ちます。また、さまざまな問題にソリューションを適応させるのに役立ちます。
ヘニングコッカーベック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.