first of all I wanted to thank you for all the great work you have done on the
subject. Concerning my question I try to be as specific as possible.
Background : I wanted to use the German Voxforge - model in Pocketsphinx on
Android. Therefore I just copied the files for the AM-Data from
/model_parameters and the LM-Data from /etc inside the voxforge_de_0.1 -
folder to the hmm and lm-folders on the sdcard. When I started the demo-app
(basically an extended PocketSphinxDemo-App which works with the standard
en_US AM from Pocketsphinx) I got following error in the .log :
-agc none none
-agcthresh 2.0 2.000000e+00
-alpha 0.97 9.700000e-01
-ceplen 13 13
-cmn current current
-cmninit 8.0 8.0
-dither no yes
-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.333333e+02
-ncep 13 13
-nfft 512 512
-nfilt 40 40
-remove_dc no no
-round_filters yes yes
-samprate 16000 8.000000e+03
-seed -1 -1
-smoothspec no no
-svspec
-transform legacy legacy
-unit_area yes yes
-upperf 6855.4976 6.855498e+03
-varnorm no no
-verbose no no
-warp_params
-warp_type inverse_linear inverse_linear
-wlen 0.025625 2.560000e-02
INFO: acmod.c(242): Parsed model-specific feature parameters from
/mnt/sdcard/edu.cmu.pocketsphinx/hmm/en_US/hub4wsj_sc_8k/feat.params
INFO: fe_interface.c(289): You are using the internal mechanism to generate
the seed.
FATAL_ERROR: "fe_sigproc.c", line 399: WTF, 4218.750000 < -15.625000 >
4765.625000
when I change the frequency-range to :
-lowerf 1
-upperf 4000
there is no error, but the accuracy is 0%.
Question : What would be an alternative working frequency range, that could
lead to a better accuracy ?
(sidenote-question : Do I have to train the AM first in any case ? I thought
it was trained before, at least sporadically)
Kind regards,
Carl
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
-agc none none
-agcthresh 2.0 2.000000e+00
-alpha 0.97 9.700000e-01
-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
-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 512
-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 1.600000e+04
-seed -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
-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
FATAL_ERROR: "fe_sigproc.c", line 405: Failed to create filterbank, frequency
range does not match. Sample rate 8000.000000, FFT size 512, lowerf
5078.125000 < freq -15.625000 > upperf 4484.375000.
I am new to CMU Sphinx and have no idea where to begin fixing this. Any advice
appreciated.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
That is weird. The en_US model worked quite okay with my phone (8khz), whereas
the German not worked at all.
Your model is obviously 16khz. Your sample rate is 8khz. There is this
phenomenom called Aliasing when sampling a signal with a too low sampling rate
(aka frequency). The first advice is to go to the RecognizerTask.java and
change the sampling rate :
c.setFloat("-samprate", 16000.0);
Unfort. I assume it won"t work since your microphone range is <=8khz. Hmm...
German Voxforge is 16khz model, it will not work on Android. You need to
download Voxforge audio and train 8khz model with it.
Thanks for the hint, I suppose the frequency range of some tablet microphone
above 8khz, other than on my phone. So I will test it on that first.
Regarding training an acoustic model : Could I just use following tutorial for
training the existing German Voxforge-AM with 8khz - audio :
Dear Sphinx-Team,
first of all I wanted to thank you for all the great work you have done on the
subject. Concerning my question I try to be as specific as possible.
Background : I wanted to use the German Voxforge - model in Pocketsphinx on
Android. Therefore I just copied the files for the AM-Data from
/model_parameters and the LM-Data from /etc inside the voxforge_de_0.1 -
folder to the hmm and lm-folders on the sdcard. When I started the demo-app
(basically an extended PocketSphinxDemo-App which works with the standard
en_US AM from Pocketsphinx) I got following error in the .log :
INFO: cmd_ln.c(691): Parsing command line:
\
-alpha 0.97 \
-dither yes \
-doublebw no \
-nfilt 40 \
-ncep 13 \
-lowerf 133.33334 \
-upperf 6855.4976 \
-nfft 512 \
-wlen 0.0256 \
-transform legacy \
-feat 1s_c_d_dd \
-agc none \
-cmn current \
-varnorm no
Current configuration:
-agc none none
-agcthresh 2.0 2.000000e+00
-alpha 0.97 9.700000e-01
-ceplen 13 13
-cmn current current
-cmninit 8.0 8.0
-dither no yes
-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.333333e+02
-ncep 13 13
-nfft 512 512
-nfilt 40 40
-remove_dc no no
-round_filters yes yes
-samprate 16000 8.000000e+03
-seed -1 -1
-smoothspec no no
-svspec
-transform legacy legacy
-unit_area yes yes
-upperf 6855.4976 6.855498e+03
-varnorm no no
-verbose no no
-warp_params
-warp_type inverse_linear inverse_linear
-wlen 0.025625 2.560000e-02
INFO: acmod.c(242): Parsed model-specific feature parameters from
/mnt/sdcard/edu.cmu.pocketsphinx/hmm/en_US/hub4wsj_sc_8k/feat.params
INFO: fe_interface.c(289): You are using the internal mechanism to generate
the seed.
FATAL_ERROR: "fe_sigproc.c", line 399: WTF, 4218.750000 < -15.625000 >
4765.625000
when I change the frequency-range to :
-lowerf 1
-upperf 4000
there is no error, but the accuracy is 0%.
Question : What would be an alternative working frequency range, that could
lead to a better accuracy ?
(sidenote-question : Do I have to train the AM first in any case ? I thought
it was trained before, at least sporadically)
Kind regards,
Carl
Sorry for my stupidity. The sample rate was specified to 8000Hz ;) ... Okay my
only question now is : Does the AM need indeed initial training ?
German Voxforge is 16khz model, it will not work on Android. You need to
download Voxforge audio and train 8khz model with it.
I'm getting the same error after following the Android tutorial
(http://cmusphinx.sourceforge.net/2011/05/building-pocketsphinx-on-
android/)and what I am assuming is the default en_US model (as directed in
the tutorial). Here is my log:
INFO: cmd_ln.c(691): Parsing command line:
Current configuration:
-agc none none
-agcthresh 2.0 2.000000e+00
-alpha 0.97 9.700000e-01
-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
-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 512
-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 1.600000e+04
-seed -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
-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
FATAL_ERROR: "fe_sigproc.c", line 405: Failed to create filterbank, frequency
range does not match. Sample rate 8000.000000, FFT size 512, lowerf
5078.125000 < freq -15.625000 > upperf 4484.375000.
I am new to CMU Sphinx and have no idea where to begin fixing this. Any advice
appreciated.
That is weird. The en_US model worked quite okay with my phone (8khz), whereas
the German not worked at all.
Your model is obviously 16khz. Your sample rate is 8khz. There is this
phenomenom called Aliasing when sampling a signal with a too low sampling rate
(aka frequency). The first advice is to go to the RecognizerTask.java and
change the sampling rate :
c.setFloat("-samprate", 16000.0);
Unfort. I assume it won"t work since your microphone range is <=8khz. Hmm...
Thanks for the hint, I suppose the frequency range of some tablet microphone
above 8khz, other than on my phone. So I will test it on that first.
Regarding training an acoustic model : Could I just use following tutorial for
training the existing German Voxforge-AM with 8khz - audio :
http://cmusphinx.sourceforge.net/wiki/tutorialadapt
?
Thanks for the advice in advance.