Menu

Pocketsphinxdemo for android

Help
2011-02-08
2012-09-22
  • Prateek Sharma

    Prateek Sharma - 2011-02-08

    Hi,

    1. I have managed to compile pocketsphinxdemo for android 2.1 and have successfully created a .apk file but when i try to run the application (after installation), it just flashes the app screen and then closes. After trying many times to run the same app again, it starts the app(and does not close this time) but again when we press the "Hold and speak" button the app crashes again (both times ie when we hold the button for long time or just click once and leave it).

    2. I had created the sdcard ISO (named sdcard1.iso and used the same name in my code) for running on the emulator, but I am not sure where to put the files in the actual sdcard to run the app on the device and what corresponding changes I need to make in my code.

    P.S:
    1. I created the sdcard1.iso using MKSDCARD from android tools and added the hmm and lm folders in my sdcard1.iso using PowerISO.
    2. I am using eclipse on windows to run the project.

    The code which uses the sdcard is as follows:

    c.setString("-hmm",
    "/sdcard1/Android/data/hmm/en_US/hub4wsj_sc_8k");
    c.setString("-dict",
    "/sdcard1/Android/data/lm/en_US/cmu07a.dic");
    c.setString("-lm",
    "/sdcard1/Android/data/lm/en_US/hub4.5000.DMP");

     
  • Nickolay V. Shmyrev

    1. I have managed to compile pocketsphinxdemo for android 2.1 and have
      successfully created a .apk file but when i try to run the application (after
      installation), it just flashes the app screen and then closes. After trying
      many times to run the same app again, it starts the app(and does not close
      this time) but again when we press the "Hold and speak" button the app crashes
      again (both times ie when we hold the button for long time or just click once
      and leave it).

    Most likely it exits because it fails to find th model files. Files need to be
    in specified location. You can check exact reason in the file
    "pocketsphinx.log" where all the debug information is stored. See the source
    for the location of this file.

    c.setString("-hmm",
    "/sdcard1/Android/data/hmm/en_US/hub4wsj_sc_8k");
    c.setString("-dict",

    So this is the path to the file on SD card. Sorry, what trouble do you have
    with it? Do you know how to put files in this location or what? On device it
    must be "sdcard", not "sdcard1".

     
  • Prateek Sharma

    Prateek Sharma - 2011-02-08

    Thanks for the reply.
    1.I cannot find any log file in the location
    "/sdcard1/Android/data/pocketsphinx.log".
    I also tried creating a blank .log file and saved it in that location and
    after running the app, the file is still blank.
    So I cannot find any log of why the app is closing.
    2. I specified the following code because the file locations specified below are in sdcard1.ISO and not on the actual memory card(which should be the case when I deploy the app on my device instead of using emulator). So if I want to put the model files in the actual sd-card then where exactly do I put them (directly create folders in the root location or somewhere else in the memory card).


    pocketsphinx
    .setLogfile("/sdcard1/Android/data/pocketsphinx.log");
    Config c = new Config();

    c.setString("-hmm",
    "/sdcard1/Android/data/hmm/en_US/hub4wsj_sc_8k");
    c.setString("-dict",
    "/sdcard1/Android/data/lm/en_US/cmu07a.dic");
    c.setString("-lm",
    "/sdcard1/Android/data/lm/en_US/hub4.5000.DMP");


    1. So if I try putting the model files directly in the root folder of my memory card, then what location path I need to specify in the above code.
    2. Also, on the cmusphinx site it was given to put data in sdcard1.iso using MTOOLS but I did not get how to use it so instead I used PowerIso. Does it make a difference? Can this be a reason for the app termination.
      Please help me access the log file as I have no clue of whether the app is
      able to access the model files or not.
      If you want to access my files the use following links:
      https://docs.google.com/leaf?id=0B0X5E2LOC_1fMDEwZjI4MTEtMzk3Ni00YWM2LTgxZWEt
      MWM5MWZjM2RmNjZl&hl=en&authkey=CJyW8fME

      https://docs.google.com/leaf?id=0B0X5E2LOC_1fNjY3OTI5MWYtMzlkYy00YTNiLTkzYmMt
      MWFkZjUyYWUxZDhl&hl=en&authkey=CPag_sIM
     
  • Nickolay V. Shmyrev

    1. So if I try putting the model files directly in the root folder of my
      memory card, then what location path I need to specify in the above code.

    You have three attempts to guess that and I'll answer you if you are correct
    or not

     
  • nikhil

    nikhil - 2011-02-16

    hi

    i have an android 2.1 phone and wanted to run pocketsphinx on it. i downloaded
    the 'pocketsphinxdemo' from the link on the cmu site and created a new project
    for 2.1 using the files from 'pocketsphinxdemo' and making the necessary
    changes in the code.

    i do not get any build errors. But when i run my app, it doesn't give any
    output .On checking the log i found that the hyp.getHypstr() function that
    gives the final result returns a null value. The pocketsphinx log also seems
    to be fine and it is reading the model files from the sdcard.

    I'm not able to trace the error. Please help .
    the log files are attached .(it is in ms word since understanding in notepad
    was difficult )

    thnx in advance.

    android log.docx
    pocketsphinx_log.docx

     
  • Nickolay V. Shmyrev

    There is nothing wrong in the behaviour you described. It just didn't
    recognize anything and returned you null.

    I see from the log that you've recorded for quite some time. You need to do it
    quickly - push the button, say something and release the button. You can try
    on host machine first.

     
  • nikhil

    nikhil - 2011-02-21

    thanks a lot!!
    after many retries i finally got it.......but the accuracy is very low... also
    in my application i wanted to recognize the calling party's voice so i changed
    the input to VOICE_DOWNLINK(MediaRecorder.AudioSource class) instead of
    default .
    pocketsphinx now gives some random output. Its nothing close to what we
    speak.Also when we don't speak, some output is still shown.
    Any clue on why this happens and how to overcome it??

     
  • Sinisa Suzic

    Sinisa Suzic - 2012-07-31

    Hi,
    I have a similar problem. When I first ran recognizing I get no output. When I
    start recognizing after that, the app crashes.
    Nijkio002002, what did you make to fix your problem?
    Here is my pocketsphinx .log

    INFO: cmd_ln.c(691): Parsing command line:
    
    
    Current configuration:
    [NAME]      [DEFLT]     [VALUE]
    -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
    
    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     512
    -nfilt      40      20
    -remove_dc  no      yes
    -round_filters  yes     no
    -samprate   16000       8.000000e+03
    -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 /mnt/sdcard/edu.cmu.pocketsphinx/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: /mnt/sdcard/edu.cmu.pocketsphinx/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: /mnt/sdcard/edu.cmu.pocketsphinx/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: /mnt/sdcard/edu.cmu.pocketsphinx/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: /mnt/sdcard/edu.cmu.pocketsphinx/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: /mnt/sdcard/edu.cmu.pocketsphinx/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(908): Loading senones from dump file /mnt/sdcard/edu.cmu.pocketsphinx/hmm/en_US/hub4wsj_sc_8k/sendump
    INFO: s2_semi_mgau.c(932): BEGIN FILE FORMAT DESCRIPTION
    INFO: s2_semi_mgau.c(1027): Using memory-mapped I/O for senones
    INFO: s2_semi_mgau.c(1304): Maximum top-N: 4 Top-N beams: 0 0 0
    INFO: phone_loop_search.c(105): State beam -230231 Phone exit beam -115115 Insertion penalty 0
    INFO: dict.c(317): Allocating 10319 * 20 bytes (201 KiB) for word entries
    INFO: dict.c(332): Reading main dictionary: /mnt/sdcard/edu.cmu.pocketsphinx/lm/en_US/hub4.5000.dic
    INFO: dict.c(211): Allocated 44 KiB for strings, 69 KiB for phones
    INFO: dict.c(335): 6212 words read
    INFO: dict.c(341): Reading filler dictionary: /mnt/sdcard/edu.cmu.pocketsphinx/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(291):   436879 = LM.bigrams(+trailer) read
    INFO: ngram_model_dmp.c(317):   418286 = LM.trigrams read
    INFO: ngram_model_dmp.c(342):    37293 = LM.prob2 entries read
    INFO: ngram_model_dmp.c(362):    14370 = LM.bo_wt2 entries read
    INFO: ngram_model_dmp.c(382):    36094 = LM.prob3 entries read
    INFO: ngram_model_dmp.c(410):      854 = LM.tseg_base entries read
    INFO: ngram_model_dmp.c(466):     5001 = ascii word strings read
    INFO: ngram_search_fwdtree.c(99): 457 unique initial diphones
    INFO: ngram_search_fwdtree.c(147): 0 root, 0 non-root channels, 27 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, 27 single-phone words
    INFO: ngram_search_fwdtree.c(326): after: max nonroot chan increased to 13439
    INFO: ngram_search_fwdtree.c(338): after: 457 root, 13311 non-root channels, 26 single-phone words
    INFO: ngram_search_fwdflat.c(156): fwdflat: min_ef_width = 4, max_sf_win = 25
    INFO: cmd_ln.c(691): Parsing command line:
    

    I get a SIGSEGV 11 error after the second recognition starts

     

Log in to post a comment.