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