PocketSphinx error


11 posts
by StevenR » Fri Mar 15, 2013 7:43 pm
I've attempted to set up PocketSphinx (version 0.8) based on the instructions here:

https://sites.google.com/site/observing ... spberry-pi

I haven't been able to get it to access my USB soundcard. I've updated /etc/modprobe.d/alsa-base.conf so that it appears as the first audio device, but pocketsphinx_continuous gives the following error:

Error opening audio device (null) for capture: Connection refused
FATAL_ERROR: "continuous.c", line 246: Failed to open audio device

I've tried using the -adcdev option with pocketsphinx_continuous to set the audio device. I've tried hw:0 and hw:0,0 (and their plughw equivalents), and nothing seems to change except that the (null) in the error message is replaced with the device name used.

The arecord command works fine with the same device.

Does anyone have any ideas?
Posts: 2
Joined: Fri Mar 15, 2013 6:16 pm
by observing » Fri Mar 15, 2013 9:54 pm
From my experience, this error would raise the possibility that sphinxbase was either built before libasound2-dev was installed or the installation of libasound2-dev had a problem. If either situation occurs, sphinxbase will think that alsa isn't installed and default to OSS.
Posts: 39
Joined: Mon Feb 27, 2012 12:18 pm
by NickE » Sat Mar 16, 2013 12:14 am
I struggled quite a bit trying to get Pocketsphinx to work. I could not get it to work with pulseaudio. Pulseaudio would not see my (cheap) USB Sound device. I could arecord and aplay without problems.

Watching the ./configure progress, I could see that if pulseaudio was present, configure would skip trying to use ALSA. So, I uninstalled pulseaudio with the apt-get --purge. That was not enough. There were a couple of pulseaudio remnants (like the pulseaudio.h and libpulsecommon-2.0.so). I temporarily renamed those. Then I proceeded with

./configure
make
sudo make install

for both sphinxbase and pocketsphinx.

Again, watching the progress of ./configure, I could see that ALSA was finally accepted.

After that, I retested arecord and aplay. Assured that they worked, I then tried pocketsphinx_continuous. I had to use:

pocketsphinx_continuous -samprate 48000 -nfft 2048 -adcdev sysdefault

to get any kind of usable results with the default dictionaries.

The nfft parameter is needed to clear the frame size error. The adcdev parameter was required for pocketsphinx to find the mic even though it is the default.

There probably is a way to get it to work with pulseaudio, but once the above worked, I have not gone back. I will be reinstalling pulseaudio to see if it will coexist with pocketsphinx now that it is compiled.
Posts: 3
Joined: Sun Sep 09, 2012 5:50 pm
by observing » Sun Mar 17, 2013 12:43 am
That was a good catch, NickE. I'll add it as a cautionary note to my instructions.
Posts: 39
Joined: Mon Feb 27, 2012 12:18 pm
by StevenR » Sun Mar 17, 2013 9:18 am
NickE wrote:Watching the ./configure progress, I could see that if pulseaudio was present, configure would skip trying to use ALSA. So, I uninstalled pulseaudio with the apt-get --purge. That was not enough. There were a couple of pulseaudio remnants (like the pulseaudio.h and libpulsecommon-2.0.so). I temporarily renamed those.


Thanks for that, that got Pocketsphinx working for me.
I actually didn't need to rename anything, such as pulseaudio.h. I simply had to uninstall libpulse-dev (apt-get --purse remove libpulse-dev) to get rid of them.
Posts: 2
Joined: Fri Mar 15, 2013 6:16 pm
by danjperron » Fri Mar 29, 2013 9:01 pm
I got pocketsphinx 0.8 working on my raspberrypi using the microphone on the webcam. I used the instruction from http://codebangers.com/?p=678 except I didn't change the alsa device order.
I use this command
Code: Select all
pocketsphinx_continuous -adcdev hw:1,0  -nfft 2048 -samprate 48000

Now I will like to change the model and dictionary to french.
But when I use
Code: Select all
./pocketsphinx_continuous -adcdev hw:1,0 -hhm  -lm /usr/src/language/french3g62k.Im.dmp -dic /usr/src/frenchWords62K.dic
it doesn't recognize the new model! It is still in english.
Daniel
Posts: 727
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada
by danjperron » Fri Mar 29, 2013 11:40 pm
Ok I took out -hhm and now it is in french. But recognition in french doesn't work very well!

I will check how to do my own dictionary and model. bummer!

Daniel
Posts: 727
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada
by bossjones » Mon Jul 22, 2013 1:06 am
Still having issues guys....anyone else?

Just installed pocketsphinx on my raspberry pi. Think i'm going crazy but not sure if I'm providing the correct input device.

Whenever I run:

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

I get the following:

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

Current configuration: [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
-backtrace no no
-beam 1e-48 1.000000e-48
-bestpath yes yes
-bestpathlw 9.5 9.500000e+00
-bghist no no
-ceplen 13 13
-cmn current current
-cmninit 8.0 8.0
-compallsen no no
-debug 0
-dict
-dictcase no no
-dither no no
-doublebw no no
-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 yes yes
-fsgusefiller yes yes
-fwdflat yes yes
-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 yes yes
-hmm
-infile
-input_endian little little
-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
-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 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 no no
-svspec
-time no no
-tmat
-tmatfloor 0.0001 1.000000e-04
-topn 4 4
-topn_beam 0 0
-toprule
-transform legacy legacy
-unit_area yes yes
-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): Parsing command line: \ -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

Current configuration: [NAME] [DEFLT] [VALUE]
-agc none none
-agcthresh 2.0 2.000000e+00
-alpha 0.97 9.700000e-01
-ceplen 13 13
-cmn current current
-cmninit 8.0 56,-3,1
-dither no no
-doublebw no no
-feat 1s_c_d_dd 1s_c_d_dd
-frate 100 100
-input_endian little little
-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 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.000000e+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): Parsed model-specific feature parameters from
/usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/feat.params
INFO: feat.c(713): Initializing feature stream to type: '1s_c_d_dd',
ceplen=13, CMN='current', VARNORM='no', AGC='none' INFO: cmn.c(142):
mean[0]= 12.00, mean[1..12]= 0.0 INFO: acmod.c(167): Using subvector
specification 0-12/13-25/26-38 INFO: mdef.c(517): Reading model
definition:
/usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/mdef INFO:
mdef.c(528): Found byte-order mark BMDF, assuming this is a binary
mdef file INFO: bin_mdef.c(336): Reading binary model definition:
/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): Reading HMM
transition probability matrices:
/usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/transition_matrices
INFO: acmod.c(121): Attempting to use SCHMM computation module INFO:
ms_gauden.c(198): Reading mixture gaussian parameter:
/usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/means
INFO: ms_gauden.c(292): 1 codebook, 3 feature, size: INFO:
ms_gauden.c(294): 256x13 INFO: ms_gauden.c(294): 256x13 INFO:
ms_gauden.c(294): 256x13 INFO: ms_gauden.c(198): Reading mixture
gaussian parameter:
/usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/variances
INFO: ms_gauden.c(292): 1 codebook, 3 feature, size: 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): Loading senones from dump file
/usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/sendump
INFO: s2_semi_mgau.c(927): BEGIN FILE FORMAT DESCRIPTION INFO:
s2_semi_mgau.c(1022): Using memory-mapped I/O for senones INFO:
s2_semi_mgau.c(1296): Maximum top-N: 4 Top-N beams: 0 0 0 INFO:
dict.c(317): Allocating 137543 * 20 bytes (2686 KiB) for word entries
INFO: dict.c(332): Reading main dictionary:
/usr/local/share/pocketsphinx/model/lm/en_US/cmu07a.dic INFO:
dict.c(211): Allocated 1010 KiB for strings, 1664 KiB for phones INFO:
dict.c(335): 133436 words read INFO: dict.c(341): Reading filler
dictionary:
/usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/noisedict
INFO: dict.c(211): Allocated 0 KiB for strings, 0 KiB for phones INFO:
dict.c(344): 11 words read INFO: dict2pid.c(396): Building PID tables
for dictionary INFO: dict2pid.c(404): Allocating 50^3 * 2 bytes (244
KiB) for word-initial triphones INFO: dict2pid.c(131): Allocated 30200
bytes (29 KiB) for word-final triphones INFO: dict2pid.c(195):
Allocated 30200 bytes (29 KiB) for single-phone word triphones INFO:
ngram_model_arpa.c(77): No \data\ mark in LM file INFO:
ngram_model_dmp.c(142): Will use memory-mapped I/O for LM file INFO:
ngram_model_dmp.c(196): ngrams 1=5001, 2=436879, 3=418286 INFO:
ngram_model_dmp.c(242): 5001 = LM.unigrams(+trailer) read INFO:
ngram_model_dmp.c(288): 436879 = LM.bigrams(+trailer) read INFO:
ngram_model_dmp.c(314): 418286 = LM.trigrams read INFO:
ngram_model_dmp.c(339): 37293 = LM.prob2 entries read INFO:
ngram_model_dmp.c(359): 14370 = LM.bo_wt2 entries read INFO:
ngram_model_dmp.c(379): 36094 = LM.prob3 entries read INFO:
ngram_model_dmp.c(407): 854 = LM.tseg_base entries read INFO:
ngram_model_dmp.c(463): 5001 = ascii word strings read INFO:
ngram_search_fwdtree.c(99): 788 unique initial diphones INFO:
ngram_search_fwdtree.c(147): 0 root, 0 non-root channels, 60
single-phone words INFO: ngram_search_fwdtree.c(186): Creating search
tree INFO: ngram_search_fwdtree.c(191): before: 0 root, 0 non-root
channels, 60 single-phone words INFO: ngram_search_fwdtree.c(326):
after: max nonroot chan increased to 13428 INFO:
ngram_search_fwdtree.c(338): after: 457 root, 13300 non-root channels,
26 single-phone words 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
COMPILED ON: Jul 21 2013, AT: 14:34:06

Mixer load failed: Invalid argument FATAL_ERROR: "continuous.c", line
246: Failed to open audio device


I'm using a ps3eye currently. If i do a simple:

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

Everything works fine ( Verified this by hooking up Raspberrypi to TV via HDMI and running aplay ~/test.wav )

What am I doing wrong guys?

Information you might need ( based on other posts i've seen ):

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#

Also in terms of installing pocket sphinx I did the following:

# 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/projec ... 0.8.tar.gz
tar -xvf sphinxbase-0.8.tar.gz
cd sphinxbase-0.8
./configure --enable-fixed
make
make install
cd -

# pocketsphinx installwget http://sourceforge.net/projects/cmusphi ... 0.8.tar.gz
tar -xvf pocketsphinx-0.8.tar.gz
cd pocketsphinx-0.8
./configure
make
make install

Any ideas or advice in the right direction would be extremely helpful.

Thanks,

Malcolm Jones
Posts: 2
Joined: Tue Jul 09, 2013 1:06 am
by observing » Tue Jul 23, 2013 12:29 pm
Malcolm,
I may have missed it in reviewing your post, but I didn't see where you installed the Alsa development headers (e.g. apt-get install libasound2-dev). As I pointed out in my instructions (which appear to have been copied on codebangers.com as well), ALSA headers have to be installed before you build sphinxbase. Otherwise, sphinxbase will not use ALSA. This is a common reason for "Failed to open audio device" errors, as pocketsphinx will look for an OSS device to open.
Posts: 39
Joined: Mon Feb 27, 2012 12:18 pm
by bossjones » Thu Jul 25, 2013 6:04 pm
Hey observing!

I actually came to a solution for this whole thing.

Put together a write up on it on stackoverflow so that it can help anyone else who encounters it again in the future.

Here's the link:

"RaspberryPi + Pocketsphinx + ps3eye Error: Failed to open audio device"

http://stackoverflow.com/questions/1777 ... 7#17823877

Ended up using pulseaudio to get everything working instead of alsa.
Posts: 2
Joined: Tue Jul 09, 2013 1:06 am
by observing » Sun Jul 28, 2013 2:04 am
Nice work, Malcolm. Once you have your blog page set up, I'll put a link to it on my page for those who want a Pulseaudio-based solution.
Posts: 39
Joined: Mon Feb 27, 2012 12:18 pm