刚刚在我的覆盆子pi上安装了pocketsphinx。我觉得我疯了但不确定我是否提供了正确的设备。
每当我跑:
src / programs / pocketsphinx_continuous -adcdev plughw:1,0 -nfft 2048 -samprate 48000
我得到以下内容:
根@ 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 none none -agcthresh 2.0 2.000000e + 00 -alpha 0.97 9.700000e-01 -argfile
-ascale 20.0 2.000000e + 01 -aw 1 1 - 回溯否否 -beam 1e-48 1.000000e-48 -bestpath是的 -bestpathlw 9.5 9.500000e + 00 - 不,没有 -ceplen 13 13 -cmn电流 -cmninit 8.0 8.0 -compallsen no no -debug 0 -dict
-dictcase no no - 不,不 -doublebw不,不 -ds 1 1 -fdict
-feat 1s_c_d_dd 1s_c_d_dd -featparams
-fillprob 1e-8 1.000000e-08 - 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默认默认值 -logbase 1.0001 1.000100e + 00 -logfn
-logspec no no -lowerf 133.33334 1.333333e + 02 -lpbeam 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是的 -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没有没有 -round_filters是的 -samprate 16000 4.800000e + 04 - 种子-1 -1 -sendump
-senlogdir
-senmgau
-silprob 0.005 5.000000e-03 -smoothspec no no -svspec
- 没有没有 -tmat
-tmatfloor 0.0001 1.000000e-04 -topn 4 4 -topn_beam 0 0 -toprule
- 转变传统遗产 -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 - 不,不 -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-02INFO:cmd_ln.c(691):解析命令行:\ -nfilt 20 \ -lowerf 1 \ -upperf 4000 \ -wlen 0.025 \ -transform dct \ -round_filters no \ -remove_dc yes \ -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 - 100 100 -input_endian有点小 -lda
-ldadim 0 0 -lifter 0 0 -logspec no no -lowerf 133.33334 1.000000e + 00 -ncep 13 13 -nfft 512 2048 -nfilt 40 20 -remove_dc没有 -round_filters是的 -samprate 16000 4.800000e + 04 - 种子-1 -1 -smoothspec no no -svspec 0-12 / 13-25 / 26-38 - 转换传统dct -unit_area是的 -upperf 6855.4976 4.000000e + 03 -varnorm no no - 不,不 -warp_params
-warp_type inverse_linear inverse_linear -wlen 0.025625 2.500000e-02INFO: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 ='当前',VARNORM =' no',AGC ='无'信息:cmn.c(142): mean [0] = 12.00,mean [1..12] = 0.0 INFO:acmod.c(167):使用子向量 规范0-12 / 13-25 / 26-38信息:mdef.c(517):阅读模型 定义: / usr / local / share / pocketsphinx / model / hmm / en_US / hub4wsj_sc_8k / mdef信息: mdef.c(528):找到字节顺序标记BMDF,假设这是二进制 mdef文件INFO:bin_mdef.c(336):读取二进制模型定义: / usr / local / share / pocketsphinx / model / hmm / en_US / hub4wsj_sc_8k / mdef信息: 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 /模型/哼/ EN_US / hub4wsj_sc_8k / transition_matrices INFO:acmod.c(121):尝试使用SCHMM计算模块INFO: ms_gauden.c(198):读取混合高斯参数: 的/ usr /本地/共享/ pocketsphinx /模型/ HMM / EN_US / hub4wsj_sc_8k /装置 信息:ms_gauden.c(292):1个码本,3个特征,大小:信息: ms_gauden.c(294):256x13 INFO:ms_gauden.c(294):256x13信息: ms_gauden.c(294):256x13 INFO:ms_gauden.c(198):读取混合物 高斯参数: 在/ usr / local / share下/ pocketsphinx /模型/哼/ EN_US / hub4wsj_sc_8k /方差 信息:ms_gauden.c(292):1个码本,3个特征,大小:信息: ms_gauden.c(294):256x13 INFO:ms_gauden.c(294):256x13信息: ms_gauden.c(294):256x13 INFO:ms_gauden.c(354):0方差值 floored INFO:s2_semi_mgau.c(903):从转储文件加载senones 在/ usr / local / share下/ pocketsphinx /模型/哼/ EN_US / hub4wsj_sc_8k / sendump 信息:s2_semi_mgau.c(927):开始文件格式说明信息: s2_semi_mgau.c(1022):为senone使用内存映射I / O INFO: s2_semi_mgau.c(1296):最大前N:4前N个波束:0 0 0信息: 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 KiB,为手机分配1664 KiB INFO: dict.c(335):133436 words read INFO:dict.c(341):读取填充符 字典: 在/ usr / local / share下/ pocketsphinx /模型/哼/ EN_US / hub4wsj_sc_8k / noisedict INFO:dict.c(211):为字符串分配0 KiB,为手机分配0 KiB INFO: dict.c(344):11个字读取信息:dict2pid.c(396):构建PID表 对于字典信息:dict2pid.c(404):分配50 ^ 3 * 2字节(244 单词初始三音素的KiB)信息:dict2pid.c(131):分配30200 单词最终三音素的字节数(29 KiB)INFO:dict2pid.c(195): 为单电话三字电话分配30200字节(29 KiB)INFO: ngram_model_arpa.c(77):LM文件INFO中没有\ data \标记: ngram_model_dmp.c(142):对LM文件INFO使用内存映射I / O: ngram_model_dmp.c(196):ngrams 1 = 5001,2 = 436879,3 = 418286信息: ngram_model_dmp.c(242):5001 = LM.unigrams(+ trailer)读取信息: ngram_model_dmp.c(288):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字符串读取信息: ngram_search_fwdtree.c(99):788个独特的初始双音素信息: ngram_search_fwdtree.c(147):0个根,0个非根通道,60 单个电话词INFO:ngram_search_fwdtree.c(186):创建搜索 tree INFO:ngram_search_fwdtree.c(191):before:0 root,0 non-root 频道,60个单个电话词INFO:ngram_search_fwdtree.c(326): 之后: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/install/pocketsphinx-0.8/src/programs/.libs/lt-pocketsphinx_continuous 编译日期:2013年7月21日,AT:14:34:06
混音器加载失败:无效参数FATAL_ERROR:" continuous.c",line 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#
另外,在安装口袋狮身人面像方面,我做了以下几点:
# 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
任何正确方向的想法或建议都会非常有用。
谢谢,
Malcolm Jones
编辑:
忘记包含此信息:
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#
答案 0 :(得分:19)
我花了一些时间,在一些来源的帮助下(他们将在我的答案中列出)和nikolay-shmyrev的一些有用提示,我终于想出了一个对我有用的答案。
主要假设:
以pi用户身份运行这些命令(之前我以root身份运行它们,这是不正确的)
我正在使用持续识别,我只是在寻找“唤醒”我的覆盆子pi的能力。在醒来之后,我还有其他计划应该如何互动。
我的设置:
Canakit RaspberryPi
HDMI线缆连接到我的东芝电视
usb wifi dongle
Playstation 3 Eye for Speech recognition
前进。我在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
来自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
_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
# 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
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
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
/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
# 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 -
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
重要提示 你必须是用户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
参考文献:
我计划在我的家庭自动化项目的博客文章中添加更多详细信息,说明为什么我使用了某些设置和配置,但想通了,我将分享我到目前为止所做的事情,因为其他人被卡住了像我一样,愿意继续他们的工作。希望这有助于某人。谢谢你的建议。
答案 1 :(得分:2)
apt-get remove pulseaudio -y aptitude purge pulseaudio -y
如果你不知道如何配置alsa,你最好使用pulseaudio,而且,它是在你的系统上配置的。您最好使用pulseaudio支持编译sphinxbase。有关更多信息,请阅读常见问题解答:
混音器加载失败:参数无效
这是一个关键信息,它表示你的alsa配置不支持电平调音台。如果您不知道如何在alsa配置中添加混音器,请使用pulseaudio
./ configure --enable-fixed
这也是一个坏主意,会降低设备的速度和准确性。您的处理器具有FPU,因此您不应使用定点模式。
答案 2 :(得分:1)
我遇到了无法打开音频设备的问题。
我修复它购买安装libpulse-dev软件包然后重新安装sphinxbase,pocketsphinx。