amixer命令用于设置系统音量
使用到命令:
amixer命令:
对于amixer的使用,你首先需要搞懂你要设置的参数是哪些,然后才可能去了解,如何去配置对应的值,整体来说,相对alsamixer来说,是有点繁琐,下面简要介绍其具体用法:
2.再看看当前你的音频系统(不同的音频驱动对应不同的内容和操作接口)提供了那些供你使用的接口去操作
关于驱动里面已经提供了多少接口可以去操作,可以用命令:
amixer contents
查看,比如:
# amixer controls
numid=3,iface=MIXER,name='Master Mode Switch'
numid=29,iface=MIXER,name='Master Mux'
numid=4,iface=MIXER,name='Master Quality Switch'
numid=2,iface=MIXER,name='Master Switch'
numid=1,iface=MIXER,name='Master Volume'
numid=7,iface=MIXER,name='PCM Mode Switch'
numid=6,iface=MIXER,name='PCM Switch'
numid=5,iface=MIXER,name='PCM Volume'
numid=21,iface=MIXER,name='Line Input Switch'
numid=16,iface=MIXER,name='Line Mode Switch'
numid=27,iface=MIXER,name='Line Mux'
。。。。。
numid=9,iface=MIXER,name='Mic Switch'
numid=8,iface=MIXER,name='Mic Volume'
numid=19,iface=MIXER,name='ADC Mode Switch'
numid=28,iface=MIXER,name='ADC Mux'
。。。。。。。。
去查看,当然你的Linux内核支持哪些配置参数,如上,一共有20多个参数可供你配置。
而对于所有的当然的配置的值,可以通过这个查看:
# amixer contents
numid=3,iface=MIXER,name='Master Mode Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Common Buffer Off'
; Item #1 'Common Buffer On'
: values=0
。。。。。。。。。。
numid=5,iface=MIXER,name='PCM Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=27,step=0
: values=27,27
| dBscale-min=-40.50dB,step=1.50dB,mute=0
numid=24,iface=MIXER,name='Mixer ADC Mix Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=26,iface=MIXER,name='Mixer DAC Mix Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=25,iface=MIXER,name='Mixer Line Mix Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=23,iface=MIXER,name='Mixer Mic Mix Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
3.搞懂如何去设置某个参数
总结起来就是,先要用get系列命令去看懂有哪些接口,然后再去用set系列的命令,去设置对应你所要设置的值。
想要针对某项设置,比如想要设置上面的的主音量,master volume,即controls中显示的:
numid=5,iface=MIXER,name='PCM Volume'
那么,可以先看看当前的值:
# amixer cget numid=5,iface=MIXER,name='PCM Volume'
numid=5,iface=MIXER,name='PCM Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=27,step=0
: values=27,27
| dBscale-min=-40.50dB,step=1.50dB,mute=0
显示的是最大的27,假设想要设置为25,那么就用cset去设置:
# amixer cset numid=5,iface=MIXER,name='PCM Volume' 25
numid=5,iface=MIXER,name='PCM Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=27,step=0
: values=25,25
| dBscale-min=-40.50dB,step=1.50dB,mute=0
再比如,去将'Mic Supply 的switch关闭:
# amixer cset numid=12,iface=MIXER,name='Mic Supply Switch' Off
numid=12,iface=MIXER,name='Mic Supply Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'On'
; Item #1 'Off'
: values=1
总结一下用法,就是:
amixer cget
amixer cset
【提示】
同上面介绍的的cget/cset系列命令:
controls
contents
cset cID P
cget cID
类似的,还有另外一套sget/sset系列的命令:
scontrols
scontents
sset sID P
sget sID
也是同样做法,比如:
通过查看当然有哪些选择可以控制:
# amixer scontrols
Simple mixer control 'Master',0
Simple mixer control 'Master Mode',0
Simple mixer control 'Master Mux',0
Simple mixer control 'Master Quality',0
。。。
同理,amixer scontents,可以查看当前所有的值,具体就不在这列举了。
另外,去查看或者配置用sget,比如:
# amixer sget 'Microphone Input',0
Simple mixer control 'Microphone Input',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
如果想要修改对应设置,用amixer sset ,具体用法是:
amixer sset sID(控制字符串) P(支持的某个值)
其中sID,就是上面的Simple mixer control后面的那个字符串,比如'Master Mux',0
而对其设置就是,先看看其提供了哪些供你设置的值:
# amixer sget 'Master Mux',0
Simple mixer control 'Master Mux',0
Capabilities: enum
Items: 'Sum' 'DAC' 'Line' 'Mic'
Item0: 'DAC'
然后比如要设置成Line的,就可以这样:
# amixer sset 'Master Mux',0 Line
Simple mixer control 'Master Mux',0
Capabilities: enum
Items: 'Sum' 'DAC' 'Line' 'Mic'
Item0: 'Line'
多个声卡可能需要手动设置默认设备:
aplay -l
创建或者修改/etc/asound.conf(对所有用户有效),~/.asound.conf(对本用户有效)
defaults.pcm.card 0
defaults.pcm.device 0
defaults.ctl.card 0
记ekho安装到嵌入式设备
ekho按照官方编译安装ubuntu版本的
apt-get install libsndfile1-dev libpulse-dev libncurses5-dev libmp3lame-dev libespeak-dev pulseaudio
wget --no-check-certificate https://sourceforge.net/projects/e-guidedog/files/Ekho/7.7/ekho-7.7.1.tar.xz
tar xvf ekho-7.7.1.tar.xz
cd ekho-7.7.1
./configure
make
make install
ekho "hello 123"
编译后运行发现报错
pa_simple_new() failed: Access denied
pa_sample_spec(format=3,rate=16000,channels=ch=1)
Fail to init audio stream.
Fail to init sound.
最后发现是 pulseaudio 服务里用了--system参数, 去掉即可正常使用, 具体原因还不清楚.
1) Would you please try this with user1:
sudo gpasswd -a user1 pulse-access sudo gpasswd -a user1 pulse-rt sudo gpasswd -a pulse audio
2) Have you tried this?
" edit /usr/local/etc/pulse/system.pa and add:
load-module module-native-protocol-unix auth-anonymous=1
Reference: https://tango.0pointer.de/pipermail/pulseaudio-discuss/2009-January/002942.html
3) Try running pulseaudio in system mode
Reference: https://bugzilla.redhat.com/attachment.cgi?id=262541
4) Make sure user2 does not run pulseaudio as root
5) Remove applications from user2 that may not release audio (e.g. timidity)
6) Go through ~/.asoundrc
and /etc/asound.conf
if present
7) Check if "the evil libflashsupport library" is installed. To uninstall:
sudo aptitude purge libflashsupport flashplugin-nonfree-extrasound
8) Start pulseaudio daemon system wide:
gksu gedit /etc/default/pulseaudio
And change "PULSEAUDIO_SYSTEM_START=0" for "PULSEAUDIO_SYSTEM_START=1"
9) Try unplugging audio hardware like external speakers and reboot.
Ekho语音合成软件的原理很简单,为每一个拼音录制一个音频文件,然后拼接起来合成句子。
Ekho默认的安装包里包含的音频文件是gsm后缀的,尺寸较小,质量较低。大家可以到Ekho语音数据页面下载质量更高的语音包替换。步骤如下:
- 访问Ekho Voice Data页面:https://sourceforge.net/projects/e-guidedog/files/Ekho-Voice-Data/0.2/
- 找到需要下载的语言即版本,文件名中44100这样的数字表示音频文件的采样率,44100Hz是CD的音质。以藏语为例,应该下载tibetan-trinley-44100-wav-v1.tar.xz。文件放在国外的服务器,下载起来可能会比较慢(这里有一个藏语语音数据包国内镜像)。
- 下载以后解压文件,替换Ekho/ekho-data文件夹里对应的语音数据文件夹。继续以藏语为例,tibetan-trinley-44100-wav-v1.tar.xz解压后是tibetan-trinley-44100-wav,改名为tibetan,替换C:\Program Files\Ekho\ekho-data\tibetan。tibetan目录下应该有许多wav文件(而不应再嵌套一个tibetan目录)。
- 如果是Linux版本,并且是拼音或粤语,需要把ekho-data下的pinyin.voice和pinyin.index文件删除。
- 重启Ekho即可。
以上方法,同样适用于制作和替换自己的声音。
正常启动pulseaudio后, 播放声音程序都能正常运行,但是没有声音,可能是系统有多个播放设备,需要手动指定默认播放设备
aplay -l
查看正确播放设备的id后更新到asound.conf里, 重启服务
/etc/asound.conf
defaults.pcm.card 0
defaults.pcm.device 0
defaults.ctl.card 0