So Tired !_! 逆水行舟, 不进则退!

28May/18

amixer命令用于设置系统音量

Posted by Nick Xu

 amixer命令用于设置系统音量

   该句为-c选择0的声卡(貌似),PCM volume设置为增加60*2=120(value值变为加上120),60dB-就是减小60*2=120,如果是如下:

               amixer -c 0 set PCM 60db+

   则为把value设置为60.

  在FX1的case中,value的值如果loopback要过的话,必须得value的值在一定范围80-127以内,不能超过127即爆声(我是这样记的)。

   在FX1的case中,runin阶段有设置系统声卡音量,使音量增大,而这句影响到final阶段的loopback测试,使得播放和录音的两个音频不一样,check_wav时就fail了,但是如果没有amixer命令,不会出错。

使用到命令:

      amixer controls(找到一个关于PCM的控制项PCM Playback Volume)

      amixer cget numid=1,iface=MAXER,name=‘PCM Playback Volume’(出现PCM的value的数据)

      amixer -c 0 set PCM 60dB+(将value值在原基础上加上60*2=120)

 Q:但是FX1中有一些批次产品是reboot之后会恢复default 的value值,有一些则不会。

amixer命令:

  alsamixer是Linux 音频架构ALSA中的Alsa工具的其中一个,用于配置音频的各个参数。

  alsamixer是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个switch(开关)等等操作。

  amixer,是alsamixer的文本模式,即命令行模式,需要用amixer命令的形式去配置你的声卡的各个选项。

对于amixer的使用,你首先需要搞懂你要设置的参数是哪些,然后才可能去了解,如何去配置对应的值,整体来说,相对alsamixer来说,是有点繁琐,下面简要介绍其具体用法:

  1.先看看amixer支持哪些命令,大概有哪些功能

 # amixer --help

  Usage: amixer [command]

  Available options:
  -h,--help       this help
 -c,--card N     select the card
 -D,--device N   select the device, default 'default'
 -d,--debug      debug mode
 -n,--nocheck    do not perform range checking
 -v,--version    print version of this program
 -q,--quiet      be quiet
 -i,--inactive   show also inactive controls
 -a,--abstract L select abstraction level (none or basic)
 -s,--stdin      Read and execute commands from stdin sequentially

   Available commands:
    scontrols       show all mixer simple controls
   scontents       show contents of all mixer simple controls (default command)
   sset sID P      set contents for one mixer simple control
   sget sID        get contents for one mixer simple control
   controls        show all controls for given card
   contents        show contents of all controls for given card
   cset cID P      set control contents for one control
   cget cID        get control contents for one control

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    controls中所输出的某个参数

amixer cset    controls中所输出的某个参数      具体的值(比如,0,1,On,Off等)

【提示】

同上面介绍的的cget/cset系列命令:

controls        show all controls for given card
contents        show contents of all controls for given card
cset cID P      set control contents for one control
cget cID        get control contents for one control

类似的,还有另外一套sget/sset系列的命令:

scontrols       show all mixer simple controls
scontents       show contents of all mixer simple controls (default command)
sset sID P      set contents for one mixer simple control
sget sID        get contents for one mixer simple control

也是同样做法,比如:

通过查看当然有哪些选择可以控制:

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'

 

28May/18

记ekho安装到嵌入式设备

Posted by Nick Xu

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语音数据页面下载质量更高的语音包替换。步骤如下:

  1. 访问Ekho Voice Data页面:https://sourceforge.net/projects/e-guidedog/files/Ekho-Voice-Data/0.2/
  2. 找到需要下载的语言即版本,文件名中44100这样的数字表示音频文件的采样率,44100Hz是CD的音质。以藏语为例,应该下载tibetan-trinley-44100-wav-v1.tar.xz。文件放在国外的服务器,下载起来可能会比较慢(这里有一个藏语语音数据包国内镜像)。
  3. 下载以后解压文件,替换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目录)。
  4. 如果是Linux版本,并且是拼音或粤语,需要把ekho-data下的pinyin.voice和pinyin.index文件删除。
  5. 重启Ekho即可。

 

以上方法,同样适用于制作和替换自己的声音。

   
site
site