RaspberryPi + Pocketsphinx + ps3eye错误:无法打开音频设备

Mal*_*nes 10 audio speech-recognition speech-to-text cmusphinx raspberry-pi

刚刚在我的覆盆子pi上安装了pocketsphinx.我觉得我疯了但不确定我是否提供了正确的设备.

每当我跑:

src/programs/pocketsphinx_continuous -adcdev plughw:1,0 -nfft 2048 -samprate 48000

我得到以下内容:

root @ scarlettpi:/usr/install/pocketsphinx-0.8#src/programs/pocketsphinx_continuous -adcdev plughw:1,0 -nfft 2048 -samprate 48000 INFO:cmd_ln.c(691):解析命令行:/ usr/install/pocketsphinx -0.8/src/programs/.libs/lt-pocketsphinx_continuous\-adcdev plughw:1,0\-nfft 2048\-samprate 48000

当前配置:[NAME] [DEFLT] [VALUE] -adcdev plughw:1,0 -agc无无-agcthresh 2.0 2.000000e + 00 -alpha 0.97 9.700000e-01 -argfile
-ascale 20.0 2.000000e + 01 -aw 1 1 -backtrace无无-beam 1E-48 1.000000e-48 -bestpath是是-bestpathlw 9.5 9.500000e + 00 -bghist无无-ceplen 13 13 -cmn当前电流-cmninit 8.0 8.0 -compallsen无无-debug 0 -dict
- dictcase无无-dither无无-doublebw无无-ds 1 1 -fdict
-feat 1s_c_d_dd 1s_c_d_dd -featparams
-fillprob 1E-8 1.000000e-08 -frate 100 100 -fsg
-fsgusealtpron是是-fsgusefiller是是-fwdflat是是-fwdflatbeam 1E-64 1.000000e-64 -fwdflatefwid 4 4 -fwdflatlw 8.5 8.500000e + 00 -fwdflatsfwin 25 25 -fwdflatwbeam 7E-29 7.000000e-29 -fwdtree是是-hmm
-infile
-input_endian一点一点-jsgf
-kdmaxbbi - 1 -1 -kdmaxdepth 0 0 -kdtree
-latsize 5000 5000 -lda
-ldadim 0 0 -lextreedump 0 0 -lifter 0 0 -lm
-lmctl
-lmname default default -logbase 1.0001 1.000100e + 00 -logfn
-logspec no no -lowerf 133.33334 1.333333e + 02 -lbebeam 1e -40 1.000000e-40 -lponlybeam 7e-29 7.000000e-29 -lw 6.5 6.500000e + 00 -maxhmmpf -1 -1 -maxnewoov 20 20 -maxwpf -1 -1 -mdef
-mean
-mfclogdir
-min_endfr 0 0 -mixw
-mixwfloor 0.0000001 1.000000e-07 -mllr
-mmap yes yes -ncep 13 13 -nfft 512 2048 -nfilt 40 40 -nwpen 1.0 1.000000e + 00 -pbeam 1e-48 1.000000e-48 -pip 1.0 1.000000e + 00 -pl_beam 1e-10 1.000000e-10 -pl_pbeam 1e-5 1.000000e-05 -pl_window 0 0 -rawlogdir
-remove_dc no no -round_filters yes yes -samprate 16000 4.800000e + 04 -seed -1 -1 -sendump
-senlogdir
-senmgau
- silprob 0.005 5.000000e-03 -smoothspec无无-svspec
-time无无-tmat
-tmatfloor 0.0001 1.000000e-04 -topn 4 4 -topn_beam 0 0 -toprule
-transform遗留遗留-unit_area是是-upperf 6855.4976 6.855498e + 03 -usewdphones no no -uw 1.0 1.000000e + 00 -var
-varfloor 0.0001 1.000000e-04 -varnorm no no -verbose no no -warp_params
-warp_type inverse_linear inverse_linear -wbeam 7e-29 7.000000e-29 -wip 0.65 6.500000e-01 -wlen 0.025625 2.562500e-02

INFO:cmd_ln.c(691):解析命令行:\ -nfilt 20\-lowerf 1\-upperf 4000\-wlen 0.025\-transform DCT\-round_filters没有\ -remove_dc是\ -svspec 0-12/13- 25/26-38\-feat 1s_c_d_dd\-agc none\-cmn current\-cmninit 56,-3,1\-varnorm no

当前配置:[NAME] [DEFLT] [VALUE] -agc none none -agcthresh 2.0 2.000000e + 00 -alpha 0.97 9.700000e-01 -ceplen 13 13 -cmn当前电流-cmninit 8.0 56,-3,1-否没有-doublebw无无-feat 1s_c_d_dd 1s_c_d_dd -frate 100 100 -input_endian一点一点-lda
-ldadim 0 0 -升降0 0 -logspec无无-lowerf 133.33334 1.000000e + 00 -ncep 13 13 -nfft 512 2048 -nfilt 40 20 -remove_dc no yes -round_filters yes no -samprate 16000 4.800000e + 04 -seed -1 -1 -smoothspec no no -svspec 0-12/13-25/26-38 -transform legacy dct -unit_area yes yes -upperf 6855.4976 4.000000 e + 03 -varnorm no no -verbose no no -warp_params
-warp_type inverse_linear inverse_linear -wlen 0.025625 2.500000e-02

INFO:acmod.c(246):来自/usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/feat.params的详细模型特定参数INFO:feat.c(713):初始化要输入的特征流:'1s_c_d_dd',ceplen = 13,CMN ='current',VARNORM ='no',AGC ='none'信息:cmn.c(142):mean [0] = 12.00,mean [1..12] = 0.0 INFO:acmod.c(167):使用子向量规范0-12/13-25/26-38 INFO:mdef.c(517):读取模型定义:/ usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/mdef INFO:mdef.c(528):找到字节顺序标记BMDF,假设这是一个二进制mdef文件INFO:bin_mdef.c(336):读取二进制模型定义:/ usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/mdef INFO:bin_mdef.c(513):50 CI-phone,143047 CD-phone,3 emitstate/phone,150 CI-sen,5150 Sen,27135 Sen-Seq INFO:tmat. c(205):读取HMM转移概率矩阵:/ usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/transition_matrices INFO:acmod.c(121):尝试使用SCHMM计算mo dule INFO:ms_gauden.c(198):读取混合高斯参数:/ usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k /表示INFO:ms_gauden.c(292):1个码本,3个特征,大小: INFO:ms_gauden.c(294):256x13 INFO:ms_gauden.c(294):256x13 INFO:ms_gauden.c(294):256x13 INFO:ms_gauden.c(198):读取混合高斯参数:/ usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/variances INFO:ms_gauden.c(292):1个码本,3个特征,大小:INFO:ms_gauden.c(294):256x13 INFO:ms_gauden.c(294):256x13 INFO :ms_gauden.c(294):256x13 INFO:ms_gauden.c(354):0 variance values floored INFO:s2_semi_mgau.c(903):从转储文件/ usr/local/share/pocketsphinx/model/hmm/en_US加载senones/hub4wsj_sc_8k/sendump INFO:s2_semi_mgau.c(927):BEGIN文件格式说明信息:s2_semi_mgau.c(1022):使用存储器映射的I/O为句音INFO:s2_semi_mgau.c(1296):最大顶-N:4前N个波束:0 0 0 INFO:dict.c(317):为词条分配137543*20个字节(2686 KiB)INFO:dict .C(332):读取主词典:/usr/local/share/pocketsphinx/model/lm/en_US/cmu07a.dic信息:dict.c(211):分配1010昆明植物研究所的字符串,1664昆明植物研究所的手机信息:字典.C(335):133436个字读INFO:dict.c(341):读填料词典:在/ usr /本地/共享/ pocketsphinx /模型/ HMM/EN_US/hub4wsj_sc_8k/noisedict INFO:dict.c(211):分配字符串为0 KiB,电话为0 KiB INFO:dict.c(344):11字读取信息:dict2pid.c(396):构建字典的PID表INFO:dict2pid.c(404):分配50 ^ 3*2字首字母(244 KiB)用于字初始三音素INFO:dict2pid.c(131):为字最终三音素分配30200字节(29 KiB)INFO:dict2pid.c(195):为单个分配30200字节(29 KiB)手机三音节词INFO:ngram_model_arpa.c(77):未在LM文件信息\ DATA \标志:ngram_model_dmp.c(142):将使用LM文件信息内存映射I/O:ngram_model_dmp.c(196):n元语法1 = 5001,2 = 436879,3 = 418286 INFO:ngram_model_dmp.c(242):5001 = LM.unigrams(+ trailer)读取信息:ngram_model_dmp.c(28)8):436879 = LM.bigrams(+ trailer)读取信息:ngram_model_dmp.c(314):418286 = LM.trigrams读取信息:ngram_model_dmp.c(339):37293 = LM.prob2条目读取信息:ngram_model_dmp.c( 359):14370 = LM.bo_wt2条目读取信息:ngram_model_dmp.c(379):36094 = LM.prob3条目读取信息:ngram_model_dmp.c(407):854 = LM.tseg_base条目读取信息:ngram_model_dmp.c(463) :5001 = ASCII词串读INFO:ngram_search_fwdtree.c(99):788唯一的初始双音素INFO:ngram_search_fwdtree.c(147):0根,0非根信道,60个单电话话INFO:ngram_search_fwdtree.c(186 ):创建搜索树INFO:ngram_search_fwdtree.c(191):before:0 root,0个非root通道,60个单电话字INFO:ngram_search_fwdtree.c(326):after:max nonroot chan增加到13428 INFO:ngram_search_fwdtree .c(338):after:457 root,13300个非root通道,26个单电话字INFO:ngram_search_fwdflat.c(156):fwdflat:min_ef_width = 4,max_sf_win = 25 INFO:continuous.c(371):/ USR /安装/ pocketsphi nx-0.8/src/programs/.libs/lt-pocketsphinx_continuous编译日期:2013年7月21日,AT:14:34:06

混音器加载失败:无效参数FATAL_ERROR:"continuous.c",第246行:无法打开音频设备

我目前正在使用ps3eye.如果我做一个简单的:

arecord -D plughw:1,0 -d 5 -q -f cd -t wav~/test.wav

一切正常(通过HDMI连接Raspberrypi并运行播放〜/ test.wav验证了这一点)

我做错了什么人?

您可能需要的信息(基于我见过的其他帖子):

root@scarlettpi:/usr/install/pocketsphinx-0.8# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
root@scarlettpi:/usr/install/pocketsphinx-0.8# 
root@scarlettpi:/usr/install/pocketsphinx-0.8# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
sysdefault:CARD=ALSA
    bcm2835 ALSA, bcm2835 ALSA
    Default Audio Device
root@scarlettpi:/usr/install/pocketsphinx-0.8#



root@scarlettpi:/usr/install/pocketsphinx-0.8# dpkg -l | grep "alsa"
ii  alsa-base                             1.0.25+3~deb7u1                      all          ALSA driver configuration files
ii  alsa-firmware-loaders                 1.0.25-2                             armhf        ALSA software loaders for specific hardware
ii  alsa-oss                              1.0.25-1                             armhf        ALSA wrapper for OSS applications
ii  alsa-tools                            1.0.25-2                             armhf        Console based ALSA utilities for specific hardware
ii  alsa-utils                            1.0.25-4                             armhf        Utilities for configuring and using ALSA
ii  alsaplayer-alsa                       0.99.80-5.1                          armhf        PCM player designed for ALSA (ALSA output module)
ii  alsaplayer-common                     0.99.80-5.1                          armhf        PCM player designed for ALSA (common files)
ii  alsaplayer-gtk                        0.99.80-5.1                          armhf        PCM player designed for ALSA (GTK+ version)
ii  gstreamer0.10-alsa:armhf              0.10.36-1.1                          armhf        GStreamer plugin for ALSA
ii  libsox-fmt-alsa                       14.4.0-3                             armhf        SoX alsa format I/O library
root@scarlettpi:/usr/install/pocketsphinx-0.8#



root@scarlettpi:/usr/install/pocketsphinx-0.8# dpkg -l | grep pulseaudio
ii  gstreamer0.10-pulseaudio:armhf        0.10.31-3+nmu1                       armhf        GStreamer plugin for PulseAudio
root@scarlettpi:/usr/install/pocketsphinx-0.8# 
Run Code Online (Sandbox Code Playgroud)

另外在安装口袋狮身人面像方面我做了以下几点:

# uninstall pulse audio if its already installed 
apt-get remove pulseaudio -y 
aptitude purge pulseaudio -y

# sphinxbase install
apt-get install bison -y
cd /usr/install
wget  http://downloads.sourceforge.net/project/cmusphinx/sphinxbase/0.8/sphinxbase-0.8.tar.gz
tar -xvf sphinxbase-0.8.tar.gz
cd sphinxbase-0.8
./configure
make
make install
cd -

# pocketsphinx installwget http://sourceforge.net/projects/cmusphinx/files/pocketsphinx/0.8/pocketsphinx-0.8.tar.gz
tar -xvf pocketsphinx-0.8.tar.gz
cd pocketsphinx-0.8
./configure
make
make install
Run Code Online (Sandbox Code Playgroud)

任何正确方向的想法或建议都会非常有帮助.

谢谢,

马尔科姆琼斯

编辑:

忘了包含这些信息:

root@scarlettpi:/usr/install/pocketsphinx-0.8# arecord -L
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
sysdefault:CARD=CameraB409241
    USB Camera-B4.09.24.1, USB Audio
    Default Audio Device
front:CARD=CameraB409241,DEV=0
    USB Camera-B4.09.24.1, USB Audio
    Front speakers
surround40:CARD=CameraB409241,DEV=0
    USB Camera-B4.09.24.1, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=CameraB409241,DEV=0
    USB Camera-B4.09.24.1, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=CameraB409241,DEV=0
    USB Camera-B4.09.24.1, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=CameraB409241,DEV=0
    USB Camera-B4.09.24.1, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=CameraB409241,DEV=0
    USB Camera-B4.09.24.1, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=CameraB409241,DEV=0
    USB Camera-B4.09.24.1, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
root@scarlettpi:/usr/install/pocketsphinx-0.8# 
Run Code Online (Sandbox Code Playgroud)

Mal*_*nes 19

我花了一些时间,在一些来源的帮助下(他们将在我的答案中列出)和一些来自nikolay-shmyrev的有用提示,我终于想出了一个对我有用的答案.

主要假设:

  1. 以pi用户身份运行这些命令(之前我以root身份运行它们,这是不正确的)

  2. 我正在使用持续识别,我只是在寻找能够"唤醒"我的覆盆子pi.醒来之后,我还有其他应该如何互动的计划.

我的设置:

  1. Canakit RaspberryPi

  2. HDMI线连接到我的东芝电视

  3. usb wifi加密狗

  4. Playstation 3 Eye用于语音识别

向前进.我在RaspberryPi上运行了以下命令,让PulseAudio + pocketsphinx与我的Playstation 3 Eye一起工作.(如果您有任何改进的地方请告诉我)

安装脉冲音频/开发包

sudo apt-get install gstreamer0.10-pulseaudio libao4 libasound2-plugins libgconfmm-2.6-1c2 libglademm-2.4-1c2a libpulse-dev libpulse-mainloop-glib0 libpulse-mainloop-glib0-dbg libpulse0 libpulse0-dbg libsox-fmt-pulse paman paprefs pavucontrol pavumeter pulseaudio pulseaudio-dbg pulseaudio-esound-compat pulseaudio-esound-compat-dbg pulseaudio-module-bluetooth pulseaudio-module-gconf pulseaudio-module-jack pulseaudio-module-lirc pulseaudio-module-lirc-dbg pulseaudio-module-x11 pulseaudio-module-zeroconf pulseaudio-module-zeroconf-dbg pulseaudio-utils oss-compat -y
Run Code Online (Sandbox Code Playgroud)

设置ALSA

根据http://forums.debian.net/viewtopic.php?f=16&t=12497的说明

sudo \cp -pf /etc/asound.conf /etc/asound.conf.ORIG 
echo 'pcm.pulse {
    type pulse
}

ctl.pulse {
    type pulse
}

pcm.!default {
    type pulse
}

ctl.!default {
    type pulse
}' | sudo tee /etc/asound.conf
Run Code Online (Sandbox Code Playgroud)

确保相机设备在启动时加载

_DEVICE_LOAD_ON_START=$(grep "snd.bcm2835" /etc/modules | wc -l)
if [[ "${_DEVICE_LOAD_ON_START}" = "0" ]]; then

  sudo \cp -pf /etc/modules /etc/modules.ORIG
  echo "snd-bcm2835" | tee -a /etc/modules

fi

# Disallow module loading after startup. This is a security feature since it disallows additional module loading during runtime and on user request.
_DISALLOW_MODULE_LOADING=$(grep "DISALLOW_MODULE_LOADING=1" /etc/default/pulseaudio | wc -l)
if [[ "${_DISALLOW_MODULE_LOADING}" = "0" ]]; then

  sudo \cp -pf /etc/default/pulseaudio /etc/default/pulseaudio.ORIG
  sudo sed -i "s,DISALLOW_MODULE_LOADING=1,DISALLOW_MODULE_LOADING=0,g" /etc/default/pulseaudio

fi
Run Code Online (Sandbox Code Playgroud)

为网络连接设置PulseAudio守护程序

# allow other clients on the network to connect to pulseaudio daemon ( only add auth-anonymous=1 if you know EVERY machine on your LAN ... this could be a security risk otherwise )
sudo \cp -fvp /etc/pulse/system.pa /etc/pulse/system.pa.ORIG
echo "
# ScarlettPi ADDED THIS
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1
load-module module-zeroconf-publish" | sudo tee -a /etc/pulse/system.pa

echo "
# ScarlettPi added this
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1
load-module module-zeroconf-publish" | sudo tee -a /etc/pulse/default.pa

# check to make sure it looks okay
cat /etc/pulse/default.pa
Run Code Online (Sandbox Code Playgroud)

将默认声音驱动程序从alsa更改为pulseaudio

sudo \cp -fvp /etc/libao.conf /etc/libao.conf.ORIG
sudo sed -i "s,default_driver=alsa,default_driver=pulse,g" /etc/libao.conf 

# daemon settings according to Pi-Musicbox ( https://github.com/woutervanwijk/Pi-MusicBox )
sudo \cp -fvp /etc/pulse/daemon.conf /etc/pulse/daemon.conf.ORIG

echo "
# ScarlettPi added this
high-priority = yes
nice-level = 5
exit-idle-time = -1
resample-method = src-sinc-medium-quality
default-sample-format = s16le
default-sample-rate = 48000
default-sample-channels = 2" | sudo tee -a /etc/pulse/daemon.conf
Run Code Online (Sandbox Code Playgroud)

pi用户添加到脉冲访问组

sudo adduser pi pulse-access

# shut down the machine to make sure all the settings we just made are loaded correctly
sudo shutdown -r now
Run Code Online (Sandbox Code Playgroud)

确保添加/usr/local/lib到库路径

export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

# also add these to your .bashrc so they get set once you login 
echo "
# scarlettPi added this
export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig" | tee -a ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

安装基础PocketSphinx

# install python dev packages
sudo apt-get install python2.7-dev -y

# sphinxbase install ( required to install pocketsphinx )
sudo apt-get install bison -y
cd ~pi/
wget  http://downloads.sourceforge.net/project/cmusphinx/sphinxbase/0.8/sphinxbase-0.8.tar.gz
tar -xvf sphinxbase-0.8.tar.gz
cd sphinxbase-0.8
./configure
make
sudo make install
cd -

# pocketsphinx install
# set this: LD_LIBRARY_PATH=/path/to/pocketsphinxlibs /usr/local/bin/pocketsphinx_continuous
# http://www.voxforge.org/home/forums/message-boards/speech-recognition-engines/howto-use-pocketsphinx
wget http://sourceforge.net/projects/cmusphinx/files/pocketsphinx/0.8/pocketsphinx-0.8.tar.gz
tar -xvf pocketsphinx-0.8.tar.gz
cd pocketsphinx-0.8
./configure
make
sudo make install
cd -

# install sphinxtrain
wget http://sourceforge.net/projects/cmusphinx/files/sphinxtrain/1.0.8/sphinxtrain-1.0.8.tar.gz
tar -xvf sphinxtrain-1.0.8
cd sphinxtrain-1.0.8
./configure
make
sudo make install
cd -
Run Code Online (Sandbox Code Playgroud)

检查脉冲守护程序是否正在运行

ps aux | grep pulse

# If it isn't, start it up yourself ( need to figure out the best way to make this run on boot...init.d script maybe? )
/usr/bin/pulseaudio --start --log-target=syslog --system=false
Run Code Online (Sandbox Code Playgroud)

最后,运行Sphinx

重要提示 您必须是用户PI并且PULSEAUDIO服务器需要运行

确认现有的语料库文件,.jsgf文件,.dic和.lm文件(使用lmtool)

cd ~pi/pocketsphinx-0.8
pocketsphinx_continuous -lm /home/pi/scarlettPi/config/speech/lm/scarlett.lm -dict /home/pi/scarlettPi/config/speech/dict/scarlett.dic -hmm /home/pi/scarlettPi/config/speech/model/hmm/en_US/hub4wsj_sc_8k -silprob  0.1 -wip 1e-4 -bestpath 0
Run Code Online (Sandbox Code Playgroud)

参考文献:

我计划在我的家庭自动化项目的博客文章中添加更多详细信息,为什么我使用了某些设置,配置,但想通了,我将分享我到目前为止所做的事情,因为其他人像我一样被困住了我们希望继续推进他们的工作.希望这有助于某人.谢谢你们的建议.