web-dev-qa-db-ja.com

Ubuntuでプログラムで音量を変更する方法

コマンドラインまたはAPI(できればPython)から、UbuntuのGnomeのボリュームをプログラムでどのように変更しますか?

同様の質問に対して私が見つけた唯一の回答はamixerを使用しています。これはUbuntu 12.04には影響がないようです。ランニング:

amixer set Headphone 10-

ショー:

Simple mixer control 'Headphone',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 115
  Mono:
  Front Left: Playback 0 [57%] [-57.50dB] [on]
  Front Right: Playback 0 [57%] [-57.50dB] [on]

X%は実行するたびに変化します。残念ながら、実際の音量には影響しません。最終的には0%と表示されますが、ボリュームはまだ完全に爆発しています。

もう1つの欠点は、アクティブな出力デバイスを正確に指定する必要があることです。複数のデバイスがあるかどうかはわかりません。たとえば、「マスター」と「ヘッドフォン」がある場合、どちらがアクティブなデバイスかをどのように判断しますか?

25
Cerin

Ubuntuはsounderverとしてpulseaudioを使用しています。これは、コマンドラインからpactlおよびpacmdユーティリティを使用して制御できます。次に例を示します。

pactl set-sink-volume 0 20%

シンク#0のボリュームを20%に設定します。

参照:man pactlおよびpacmd help


編集:

-xxがコマンドラインオプションとして解釈されないようにするには、--をプレフィックスとして付ける必要があります。これにより、その時点からオプションの解析が停止します。

pactl set-sink-volume 0 -- -20%    # or:
pactl -- set-sink-volume 0 -20%    # doesn't matter where the `--` goes
40
mata

ALSAミキサーを使ってやっています。おそらくpython-alsaaudioをダウンロードする必要があります

Sudo apt-get install python-alsaaudio

次に音量を調節します

import alsaaudio
m = alsaaudio.Mixer()   # defined alsaaudio.Mixer to change volume
m.setvolume(50) # set volume
vol = m.getvolume() # get volume float value

http://pyalsaaudio.sourceforge.net/libalsaaudio.html を読んで、alsaaudioライブラリの詳細を確認してください。

16
Froyo

amixerコマンドはUbuntu 13.04で機能し、

音量を5%上げる
amixer -D Pulse sset Master 5%+

音量を5%下げます
amixer -D Pulse sset Master 5%-

pactlまたはpacmdは、Ubuntu 13.04では正しく機能しませんでした。

6
Michael Butler

ボリュームを読み取るためのダーティスニペット(ubuntuではボリュームが「100%」を超えていることを忘れないでください。その時点で、これは〜0.66を返します)。

#!/usr/bin/python
import subprocess

vol = int(filter(lambda l: l.startswith('set-sink-volume'),
          subprocess.check_output(["pacmd","dump"])
          .split('\n'))[0]
          .split()[-1],16)/100000.

print vol
2
user2769792

Pulseaudioを制御するこのツールをお勧めします: https://github.com/graysky2/pulseaudio-ctl

me@mypc ~ $ pulseaudio-ctl
pulseaudio-ctl v1.63

/usr/bin/pulseaudio-ctl {up,down,mute,mute-input,set,atmost,full-status} [n]

Where up and down adjust volume in ±5 % increments
Where up and down [n] adjust volume in ±n % increments
Where mute toggles the mute status on/off
Where mute-input toggles the input status on/off
Where set set the volume to [n] %
Where atmost only takes effect if current volume is higher than [n]
Where full-status prints volume level, sink and source mute state to stdout

Optionally, redefine an upper threshold in /home/me/.config/pulseaudio-ctl/config

Volume level     : 80 %
Is sink muted    : no
Is source muted  : no
Detected sink    : 1
Detected source  : 3
Pulse version    : 8.0
me@mypc ~ $ 
1
Nicolas

シンプルでエレガントな ponymix utillを試すこともできます。ボリュームの増減、オーディオのトグル(ミュート/ミュート解除)などが非常に簡単になります。

最初にponymixを使用して利用可能なオーディオソースのリストを取得します

私の場合、sink 0source 0。番号またはフルネームのいずれかを使用できます内蔵のオーディオデジタルステレオ(HDMI)、オーディオを制御します。

カード0のボリュームを5%増やしますponymix -c 0 increase 5

カード0のボリュームを5%減らしますponymix -c 0 decrease 5