设置音量的终端命令?

我有一个外部声卡,大部分情况下都工作正常,只是当它第一次插入或者我打开笔记本电脑时,音量会被设置为100%。也就是说,整个系统的音量,如声音指示器所示。
我正在寻找一个终端命令,可以将该音量设置为50%,这样我可以在登录时运行它,而不必担心如果我忘记调低音量,第一次播放的音频会突然大声响起。有哪些命令可以更改那个音量,即声音指示器中的音量?
我已经在gsettings和dbus中查找过,但是没有找到任何可以让我像那样设置系统音量的东西。我知道alsamixer,但那不是我要找的解决方案,因为它不允许我使用声音指示器或笔记本电脑的多媒体键来调节音量。

@rajagenupula他想要减少与GUI相同的音量。在这种情况下,ALSA不起作用,因为它不受ALSA控制,而是由Pulseaudio控制。http://i.stack.imgur.com/9C8Z2.png - Braiam
还可以在这里查看:http://askubuntu.com/questions/44680/how-to-change-volume-of-pulseaudio-playback-apps-streams-that-arent-currentl - Takkat
5个回答

这个答案的部分内容来自于使用命令行设置麦克风输入音量?,为了方便起见放在这里。
增加音量5%。
amixer -D pulse sset Master 5%+

将音量减少5%。
amixer -D pulse sset Master 5%-

将音量设置为50%。
amixer -D pulse sset Master 50%

If you are using ALSA, amixer can be helpful for your script programming.

When dropping the amixer --help command in a terminal you will see something like this:

enter image description here

Depending on your soundcard, levels may be different than mine, but you can use alsamixer in the terminal in order to check which levels and which features in your sound card you can call in a command to set the volume as you wish.

enter image description here

In my example, with my principal sound card (I have 2: the embedded and a PCI audio card), levels are from 0 to 100, this way I can change the volume of a desired input/output in my soundcard by dropping in a terminal the next command:

amixer -c 0 set Front 50DB 
amixer -c 0 set Front 64DB 

In the first command, the result will set the Front panel output to 78% level and the second one will set the Front panel output to 100% level.

In order to gather information related to your mixer controls, drop the amixer command with no parameters and you will get a list. Or indicate which audio device you wish to see a list of controls with amixer -c X (where "X" is the number of your audio device).

BTW: Remember that DB values are calculated logarithmically and not linearly.

记住,这个命令允许你控制当前正在使用的任何声音设备上的参数。
祝你好运!

1值得一提的是,如果您没有“主”控制器或者“主”控制器无法更改实际输出音量,那么您可能正在使用错误的声卡。在alsamixer上按下F6,在amixer上使用--card n来更改声卡。 - Pooyan Khosravi
这是一个很好的观点!@PooyanKhosravi,即使你可以通过在命令行中添加"-c X"(其中"X"是你的声卡号码)来调用你想要自动化的声卡,了解你提供的信息还是很有帮助的。非常感谢你! - Geppettvs D'Constanzo
2pactl(与amixer不同)允许在100%以上增加音量(可以在pavucontrol中看到):-) - pevik
1amixer命令会随机改变我的扬声器/耳机的平衡(左/右),而使用pactl@DEFAULT_SINK@则没有问题。 - exic
如果你使用的是Ubuntu 18.04或更新版本,似乎这是另一种问题,因为我们在使用pactl时遇到了相同的行为。而pavucontrol可以通过图形界面让我们看到它的效果如何。 - Geppettvs D'Constanzo
1@exic 太棒了!可以在Arch Linux和i3-gaps上使用... - sistematico

你可以使用PulseAudio本身来完成(我不建议使用ALSA,因为这样你就无法使用图形界面来调整音量)。
使用pactl:你可以按照以下方式设置特定设备的音量:
pactl set-sink-volume @DEFAULT_SINK@ +10%

这会使音量增加10%。如果你想要减少10%:
pactl set-sink-volume @DEFAULT_SINK@ -10%

如果你需要音量为50%:
pactl set-sink-volume @DEFAULT_SINK@ 50%

如果你想要让整个地方沸腾起来:
pactl set-sink-volume @DEFAULT_SINK@ 150%

你可以使用百分比或整数,但整数速度较慢,可能不适合你。 pactl/pacmd(与amixer不同)允许将音量增加到100%以上 :-)。

3如果您使用耳机,请尝试将音量从零调到一:pactl set-sink-volume 1 50% - Smile4ever
16如果您想在不同的主机上使用不同的接收器分享相同的命令,您可以使用@DEFAULT_SINK@作为接收器,而不是使用数字0。您可以使用pactl set-default-sink my-sink-name来设置默认接收器(使用pactl list short sinks列出名称)。 - pevik
5获取失败:无法获取接收器信息:没有这样的实体,如何进行故障排除?- 编辑,我需要使用除了0之外的接收器。可以使用pactl list short sinks的第一个数字。例如,以下命令有效:pactl set-sink-volume $(pactl list short sinks | head -n1 | cut -f1) 50% - ideasman42

一个晚回答,但可能对某人有用。
您可以使用以下命令控制当前音频输出的音量:
  • 增大音量pactl set-sink-volume @DEFAULT_SINK@ +1000

  • 降低音量pactl set-sink-volume @DEFAULT_SINK@ -1000

  • 静音pactl set-sink-mute @DEFAULT_SINK@ toggle

您可以使用以下值来控制音量:

整数

  • 特定值:<number>
  • 增加:+<number>
  • 减少:-<number>

示例:

pactl set-sink-volume @DEFAULT_SINK@ 50000 将将音量设置为大约 76%

线性系数

具体数值:<数字>.<数字> 增加:+<数字>.<数字> 减少:-<数字>.<数字> 示例: pactl set-sink-volume @DEFAULT_SINK@ 0.44\ 将音量设置为大约76%
百分比
具体数值:<数字>% 增加:+<数字>% 减少:-<数字>% 示例: pactl set-sink-volume @DEFAULT_SINK@ 76% 将音量设置为大约76%
分贝值
警告:在使用耳机时,请不要尝试调整分贝值,除非您知道自己在做什么,否则可能会损坏听力。
  • 具体数值:<number>dB
  • 增加:+<number>dB
  • 减少:-<number>dB

示例:

pactl set-sink-volume @DEFAULT_SINK@ 0.0dB 将音量设置为100%


来源:Arch Wikipactl man page

+1!!对我来说唯一立竿见影的解决方案。 - djboris

amixer set 'Master' 10%+ - 增加最大音量10%

amixer set 'Master' 10%- - 减少最大音量10%

amixer set 'Master' 10% - 获得最大音量的10%

amixer set 'Master' 80% - 获得最大音量的80%

.. 等等。

如果您想将音量设置为除了'Master'之外的其他选项,请通过以下方式查看列表:

amixer scontrols


你可能还想查看 alsamixerpacmd

这个选项在Gnome桌面上不显示音量更改通知... 如果你们中有些人也是在寻找这个功能,就像我一样。
下面是一个解决这个问题的简短脚本。

https://github.com/garrett92895/gnome-volume-step-osd

(在Gnome桌面环境中,可以在屏幕上显示音量变化的同时控制音量)