Wednesday, 25 September 2019

TLSphinx cmusphinx pocketsphinx Hypothesis result text empty string score negative (-) number

I ran the sample code in the readme file at tryolabs/TLSphinx README.md, and the result of the text property of the Hypothesis is an empty string, while the score property is a negative number around the range of -681.

Why is the text empty? Why is the score so low? How would I fix this so that I get a text result and a high score?

Here is my code:

let hmm = localDocumentsURL.path // Path to the acustic model
let lm = localDocumentsURL.appendingPathComponent("6844").appendingPathExtension("lm").path // Path to the languaje model
let dict = localDocumentsURL.appendingPathComponent("cmudict-en-us").appendingPathExtension("dict").path // Path to the languaje dictionary

if let config = Config(args: ("-hmm", hmm), ("-lm", lm), ("-dict", dict)) {
    if let decoder: TLSphinx.Decoder = TLSphinx.Decoder(config:config) {

        let audioFile = Bundle.main.path(forResource: "audio16000", ofType: "mp3")! // Path to an audio file

        do {
            try decoder.decodeSpeech(atPath: audioFile) {

                if let hyp: Hypothesis = $0 {
                    // Print the decoder text and score
                    print("Text: \(hyp.text) - Score: \(hyp.score)")
                } else {
                    // Can't decode any speech because of an error
                }
            }
        } catch {
            print(error)
        }
    } else {
        // Handle Decoder() fail
        print("Decoder fail")
    }
} else {
    // Handle Config() fail
    print("Config fail")
}

Here is the debug window:

INFO: pocketsphinx.c(152): Parsed model-specific feature parameters from /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/feat.params
Current configuration:
[NAME]          [DEFLT]     [VALUE]
-agc            none        none
-agcthresh      2.0     2.000000e+00
-allphone               
-allphone_ci        no      no
-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
-ceplen         13      13
-cmn            live        current
-cmninit        40,3,-1     40,3,-1
-compallsen     no      no
-debug                  0
-dict                   /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/cmudict-en-us.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                    /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents
-input_endian       little      little
-jsgf                   
-keyphrase              
-kws                    
-kws_delay      10      10
-kws_plp        1e-1        1.000000e-01
-kws_threshold      1       1.000000e+00
-latsize        5000        5000
-lda                    
-ldadim         0       0
-lifter         0       22
-lm                 /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/6844.lm
-lmctl                  
-lmname                 
-logbase        1.0001      1.000100e+00
-logfn                  
-logspec        no      no
-lowerf         133.33334   1.300000e+02
-lpbeam         1e-40       1.000000e-40
-lponlybeam     7e-29       7.000000e-29
-lw         6.5     6.500000e+00
-maxhmmpf       30000       30000
-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      25
-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-10       1.000000e-10
-pl_pip         1.0     1.000000e+00
-pl_weight      3.0     3.000000e+00
-pl_window      5       5
-rawlogdir              
-remove_dc      no      no
-remove_noise       yes     yes
-remove_silence     yes     yes
-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                 0-12/13-25/26-38
-tmat                   
-tmatfloor      0.0001      1.000000e-04
-topn           4       4
-topn_beam      0       0
-toprule                
-transform      legacy      dct
-unit_area      yes     yes
-upperf         6855.4976   6.800000e+03
-uw         1.0     1.000000e+00
-vad_postspeech     50      50
-vad_prespeech      20      20
-vad_startspeech    10      10
-vad_threshold      2.0     2.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: feat.c(715): Initializing feature stream to type: '1s_c_d_dd', ceplen=13, CMN='batch', VARNORM='no', AGC='none'
INFO: acmod.c(162): Using subvector specification 0-12/13-25/26-38
INFO: mdef.c(518): Reading model definition: /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/mdef
INFO: mdef.c(531): Found byte-order mark BMDF, assuming this is a binary mdef file
INFO: bin_mdef.c(336): Reading binary model definition: /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/mdef
INFO: bin_mdef.c(516): 42 CI-phone, 137053 CD-phone, 3 emitstate/phone, 126 CI-sen, 5126 Sen, 29324 Sen-Seq
INFO: tmat.c(149): Reading HMM transition probability matrices: /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/transition_matrices
INFO: acmod.c(113): Attempting to use PTM computation module
INFO: ms_gauden.c(127): Reading mixture gaussian parameter: /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/means
INFO: ms_gauden.c(242): 42 codebook, 3 feature, size: 
INFO: ms_gauden.c(244):  128x13
INFO: ms_gauden.c(244):  128x13
INFO: ms_gauden.c(244):  128x13
INFO: ms_gauden.c(127): Reading mixture gaussian parameter: /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/variances
INFO: ms_gauden.c(242): 42 codebook, 3 feature, size: 
INFO: ms_gauden.c(244):  128x13
INFO: ms_gauden.c(244):  128x13
INFO: ms_gauden.c(244):  128x13
INFO: ms_gauden.c(304): 222 variance values floored
INFO: ptm_mgau.c(476): Loading senones from dump file /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/sendump
INFO: ptm_mgau.c(500): BEGIN FILE FORMAT DESCRIPTION
INFO: ptm_mgau.c(563): Rows: 128, Columns: 5126
INFO: ptm_mgau.c(595): Using memory-mapped I/O for senones
INFO: ptm_mgau.c(838): Maximum top-N: 4
INFO: phone_loop_search.c(114): State beam -225 Phone exit beam -225 Insertion penalty 0
INFO: dict.c(320): Allocating 138623 * 32 bytes (4331 KiB) for word entries
INFO: dict.c(333): Reading main dictionary: /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/cmudict-en-us.dict
INFO: dict.c(213): Dictionary size 134522, allocated 1014 KiB for strings, 1677 KiB for phones
INFO: dict.c(336): 134522 words read
INFO: dict.c(358): Reading filler dictionary: /Users/shinehah/Library/Developer/CoreSimulator/Devices/CF88C08D-B126-4446-B8EA-AEC59AA78724/data/Containers/Data/Application/A2AE947A-B4B5-4A1A-BF6E-AEB3AD22C465/Documents/noisedict
INFO: dict.c(213): Dictionary size 134527, allocated 0 KiB for strings, 0 KiB for phones
INFO: dict.c(361): 5 words read
INFO: dict2pid.c(396): Building PID tables for dictionary
INFO: dict2pid.c(406): Allocating 42^3 * 2 bytes (144 KiB) for word-initial triphones
INFO: dict2pid.c(132): Allocated 42672 bytes (41 KiB) for word-final triphones
INFO: dict2pid.c(196): Allocated 42672 bytes (41 KiB) for single-phone word triphones
INFO: ngram_model_trie.c(354): Trying to read LM in trie binary format
INFO: ngram_model_trie.c(365): Header doesn't match
INFO: ngram_model_trie.c(177): Trying to read LM in arpa format
INFO: ngram_model_trie.c(193): LM of order 3
INFO: ngram_model_trie.c(195): #1-grams: 5
INFO: ngram_model_trie.c(195): #2-grams: 4
INFO: ngram_model_trie.c(195): #3-grams: 3
INFO: lm_trie.c(474): Training quantizer
INFO: lm_trie.c(482): Building LM trie
INFO: ngram_search_fwdtree.c(74): Initializing search tree
INFO: ngram_search_fwdtree.c(101): 790 unique initial diphones
INFO: ngram_search_fwdtree.c(186): Creating search channels
INFO: ngram_search_fwdtree.c(323): Max nonroot chan increased to 128
INFO: ngram_search_fwdtree.c(333): Created 0 root, 0 non-root channels, 5 single-phone words
INFO: ngram_search_fwdflat.c(157): fwdflat: min_ef_width = 4, max_sf_win = 25
INFO: cmn_live.c(120): Update from < 40.00  3.00 -1.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 >
INFO: cmn_live.c(138): Update to   < 98.45 -23.43 -7.54 -7.44 -4.21 -4.07 -2.48 -3.39 -3.60 -2.93 -1.08 -1.35 -0.73 >
INFO: ngram_search_fwdtree.c(1550):      573 words recognized (5/fr)
INFO: ngram_search_fwdtree.c(1552):     1044 senones evaluated (9/fr)
INFO: ngram_search_fwdtree.c(1556):      583 channels searched (4/fr), 0 1st, 583 last
INFO: ngram_search_fwdtree.c(1559):      583 words for which last channels evaluated (4/fr)
INFO: ngram_search_fwdtree.c(1561):        0 candidate words for entering last phone (0/fr)
INFO: ngram_search_fwdtree.c(1564): fwdtree 0.08 CPU 0.064 xRT
INFO: ngram_search_fwdtree.c(1567): fwdtree 0.08 wall 0.063 xRT
INFO: ngram_search_fwdflat.c(302): Utterance vocabulary contains 2 words
INFO: ngram_search_fwdflat.c(948):      530 words recognized (4/fr)
INFO: ngram_search_fwdflat.c(950):     1053 senones evaluated (9/fr)
INFO: ngram_search_fwdflat.c(952):      583 channels searched (4/fr)
INFO: ngram_search_fwdflat.c(954):      583 words searched (4/fr)
INFO: ngram_search_fwdflat.c(957):       68 word transitions (0/fr)
INFO: ngram_search_fwdflat.c(960): fwdflat 0.01 CPU 0.008 xRT
INFO: ngram_search_fwdflat.c(963): fwdflat 0.01 wall 0.008 xRT
INFO: ngram_search.c(1250): lattice start node <s>.0 end node </s>.101
INFO: ngram_search.c(1276): Eliminated 2 nodes before end node
INFO: ngram_search.c(1381): Lattice has 195 nodes, 304 links
INFO: ps_lattice.c(1380): Bestpath score: -611
INFO: ps_lattice.c(1384): Normalizer P(O) = alpha(</s>:101:118) = -43163
INFO: ps_lattice.c(1441): Joint P(O,S) = -49739 P(S|O) = -6576
INFO: ngram_search.c(872): bestpath 0.00 CPU 0.000 xRT
INFO: ngram_search.c(875): bestpath 0.00 wall 0.000 xRT
INFO: cmn_live.c(120): Update from < 98.45 -23.43 -7.54 -7.44 -4.21 -4.07 -2.48 -3.39 -3.60 -2.93 -1.08 -1.35 -0.73 >
INFO: cmn_live.c(138): Update to   < 98.45 -23.43 -7.54 -7.44 -4.21 -4.07 -2.48 -3.39 -3.60 -2.93 -1.08 -1.35 -0.73 >
INFO: ngram_search_fwdflat.c(302): Utterance vocabulary contains 0 words
INFO: ngram_search_fwdtree.c(429): TOTAL fwdtree 0.24 CPU 0.206 xRT
INFO: ngram_search_fwdtree.c(432): TOTAL fwdtree 0.26 wall 0.223 xRT
Text:  - Score: -681
INFO: ngram_search_fwdflat.c(176): TOTAL fwdflat 0.01 CPU 0.008 xRT
INFO: ngram_search_fwdflat.c(179): TOTAL fwdflat 0.01 wall 0.008 xRT
INFO: ngram_search.c(303): TOTAL bestpath 0.00 CPU 0.000 xRT
INFO: ngram_search.c(306): TOTAL bestpath 0.00 wall 0.000 xRT

Everything I show above from the debug window is from cmusphinx itself, except for the line that gives the text property and score property of the Hypothesis from the line in the code I show that prints those values.

I am still getting the same result as before after using a wav file. I used Audacity to convert my mp3 file to wav at 16000 Hz sample rate, signed 16 bit PCM format, 16 bit depth, and mono audio channel. Those are the required specifications.



from TLSphinx cmusphinx pocketsphinx Hypothesis result text empty string score negative (-) number

No comments:

Post a Comment