Подключение файла грамматики для распознавания речи на Python - pocketsphinx
13.02.2019, 13:28. Показов 3942. Ответов 1
Задача - реализовать приложения, которое бы распознавало голосовые команды из аудиофайла, с подключением своего словаря и файла грамматики.
Установка pocketsphinx была следующей
sudo apt-get install swig
sudo apt-get install python-dev
sudo apt-get install libpulse-dev
sudo apt install libasound2-dev
pip install pocketsphinx
Код
| Python | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| import os
from pocketsphinx import AudioFile, get_model_path, get_data_path
model_path = get_model_path()
data_path = get_data_path()
config = {
'verbose': True,
'audio_file': os.path.join(data_path, '/home/mmamonova/sphinx/audio/record-1544774411160.wav'),
'buffer_size': 2048,
'no_search': False,
'full_utt': False,
'hmm': os.path.join(model_path, 'zero_ru.cd_cont_4000'),
'lm': False,
'jsgf': os.path.join(model_path, 'grammar.jsgf'),
'dict': os.path.join(model_path, 'dictionary.dic'),
}
audio = AudioFile(**config)
for phrase in audio:
print(phrase) |
|
выдает ошибку
Traceback (most recent call last):
File "app.py", line 65, in <module>
audio = AudioFile(**config)
File "/home/mmamonova/sphinx/env/lib/python3.6/site-packages/pocketsphinx/__init__.py", line 169, in __init__
super(AudioFile, self).__init__(**kwargs)
File "/home/mmamonova/sphinx/env/lib/python3.6/site-packages/pocketsphinx/__init__.py", line 90, in __init__
super(Pocketsphinx, self).__init__(config)
File "/home/mmamonova/sphinx/env/lib/python3.6/site-packages/pocketsphinx/pocketsphinx.py", line 275, in __init__
this = _pocketsphinx.new_Decoder(*args)
RuntimeError: new_Decoder returned -1
Эта проблема возникает только если прописан путь к файлу грамматики (jsfd). Если пользоваться стандартной языковой моделью, всё работает (но качество распознавания отвратительное).
Подскажите, как это решить и подключить грамматику?
Все действия выполняются в виртуальной среде приложения.
Детализация ошибки:
INFO: pocketsphinx.c(152): Parsed model-specific feature parameters from /home/m mamonova/sphinx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_co nt_4000/feat.params
Current configuration:
[NAME] [DEFLT] [VALUE]
-agc none none
-agcthresh 2.0 2.000000e+00
-allphone
-allphone_ci yes yes
-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 11.64,0.15,-0.04,0.17,-0.40,-0.03,-0.50, -0.13,-0.33,-0.11,-0.19,-0.10,-0.24
-compallsen no no
-dict /home/mmamonova/sphinx/env/lib/python3.6 /site-packages/pocketsphinx/model/dictionary.dic
-dictcase no no
-dither no yes
-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 /home/mmamonova/sphinx/env/lib/python3.6 /site-packages/pocketsphinx/model/zero_ru.cd_cont_4000
-input_endian little little
-jsgf /home/mmamonova/sphinx/env/lib/python3.6 /site-packages/pocketsphinx/model/grammar.jsgf
-keyphrase
-kws
-kws_delay 10 10
-kws_plp 1e-1 1.000000e-01
-kws_threshold 1e-30 1.000000e-30
-latsize 5000 5000
-lda
-ldadim 0 0
-lifter 0 0
-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 31
-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
-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 3.700000e+03
-uw 1.0 1.000000e+00
-vad_postspeech 50 50
-vad_prespeech 20 20
-vad_startspeech 10 10
-vad_threshold 3.0 3.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: fe_interface.c(324): Using -1 as the seed.
INFO: feat.c(715): Initializing feature stream to type: '1s_c_d_dd', ceplen=13, CMN='batch', VARNORM='no', AGC='none'
INFO: acmod.c(152): Reading linear feature transformation from /home/mmamonova/s phinx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/fe ature_transform
INFO: mdef.c(518): Reading model definition: /home/mmamonova/sphinx/env/lib/pyth on3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/mdef
INFO: bin_mdef.c(181): Allocating 145321 * 8 bytes (1135 KiB) for CD tree
INFO: tmat.c(149): Reading HMM transition probability matrices: /home/mmamonova/ sphinx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/t ransition_matrices
INFO: acmod.c(113): Attempting to use PTM computation module
INFO: ms_gauden.c(127): Reading mixture gaussian parameter: /home/mmamonova/sphi nx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/means
INFO: ms_gauden.c(242): 4159 codebook, 1 feature, size:
INFO: ms_gauden.c(244): 63x29
INFO: ms_gauden.c(127): Reading mixture gaussian parameter: /home/mmamonova/sphi nx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/varia nces
INFO: ms_gauden.c(242): 4159 codebook, 1 feature, size:
INFO: ms_gauden.c(244): 63x29
INFO: ms_gauden.c(304): 182668 variance values floored
INFO: ptm_mgau.c(803): Number of codebooks exceeds 256: 4159
INFO: acmod.c(115): Attempting to use semi-continuous computation module
INFO: ms_gauden.c(127): Reading mixture gaussian parameter: /home/mmamonova/sphi nx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/means
INFO: ms_gauden.c(242): 4159 codebook, 1 feature, size:
INFO: ms_gauden.c(244): 63x29
INFO: ms_gauden.c(127): Reading mixture gaussian parameter: /home/mmamonova/sphi nx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/varia nces
INFO: ms_gauden.c(242): 4159 codebook, 1 feature, size:
INFO: ms_gauden.c(244): 63x29
INFO: ms_gauden.c(304): 182668 variance values floored
INFO: acmod.c(117): Falling back to general multi-stream GMM computation
INFO: ms_gauden.c(127): Reading mixture gaussian parameter: /home/mmamonova/sphi nx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/means
INFO: ms_gauden.c(242): 4159 codebook, 1 feature, size:
INFO: ms_gauden.c(244): 63x29
INFO: ms_gauden.c(127): Reading mixture gaussian parameter: /home/mmamonova/sphi nx/env/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/varia nces
INFO: ms_gauden.c(242): 4159 codebook, 1 feature, size:
INFO: ms_gauden.c(244): 63x29
INFO: ms_gauden.c(304): 182668 variance values floored
INFO: ms_senone.c(149): Reading senone mixture weights: /home/mmamonova/sphinx/e nv/lib/python3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/mixture_w eights
INFO: ms_senone.c(200): Truncating senone logs3(pdf) values by 10 bits
INFO: ms_senone.c(207): Not transposing mixture weights in memory
INFO: ms_senone.c(268): Read mixture weights for 4159 senones: 1 features x 63 c odewords
INFO: ms_senone.c(320): Mapping senones to individual codebooks
INFO: ms_mgau.c(144): The value of topn: 4
INFO: phone_loop_search.c(114): State beam -225 Phone exit beam -225 Insertion p enalty 0
INFO: dict.c(320): Allocating 4107 * 32 bytes (128 KiB) for word entries
INFO: dict.c(333): Reading main dictionary: /home/mmamonova/sphinx/env/lib/pytho n3.6/site-packages/pocketsphinx/model/dictionary.dic
ERROR: "dict.c", line 195: Line 4: Phone 'Э' is mising in the acoustic model; wo rd 'Экран' ignored
INFO: dict.c(213): Dictionary size 7, allocated 0 KiB for strings, 0 KiB for pho nes
INFO: dict.c(336): 7 words read
INFO: dict.c(358): Reading filler dictionary: /home/mmamonova/sphinx/env/lib/pyt hon3.6/site-packages/pocketsphinx/model/zero_ru.cd_cont_4000/noisedict
INFO: dict.c(213): Dictionary size 10, allocated 0 KiB for strings, 0 KiB for ph ones
INFO: dict.c(361): 3 words read
INFO: dict2pid.c(396): Building PID tables for dictionary
INFO: dict2pid.c(406): Allocating 53^3 * 2 bytes (290 KiB) for word-initial trip hones
INFO: dict2pid.c(132): Allocated 67840 bytes (66 KiB) for word-final triphones
INFO: dict2pid.c(196): Allocated 67840 bytes (66 KiB) for single-phone word trip hones
INFO: jsgf.c(709): Defined rule: <commands.g00000>
INFO: jsgf.c(709): Defined rule: <commands.action>
INFO: jsgf.c(709): Defined rule: <commands.g00002>
INFO: jsgf.c(709): Defined rule: <commands.device>
INFO: jsgf.c(709): Defined rule: PUBLIC <commands.commands>
INFO: fsg_model.c(208): Computing transitive closure for null transitions
INFO: fsg_model.c(270): 0 null transitions added
INFO: fsg_search.c(227): FSG(beam: -1080, pbeam: -1080, wbeam: -634; wip: -26, p ip: 0)
ERROR: "fsg_search.c", line 141: The word 'Включить' is missing in the dictionar y
INFO: fsg_search.c(265): TOTAL fsg 0.00 CPU -nan xRT
INFO: fsg_search.c(268): TOTAL fsg 0.00 wall -nan xRT
Traceback (most recent call last):
File "app.py", line 65, in <module>
audio = AudioFile(**config)
File "/home/mmamonova/sphinx/env/lib/python3.6/site-packages/pocketsphinx/__in it__.py", line 169, in __init__
super(AudioFile, self).__init__(**kwargs)
File "/home/mmamonova/sphinx/env/lib/python3.6/site-packages/pocketsphinx/__in it__.py", line 90, in __init__
super(Pocketsphinx, self).__init__(config)
File "/home/mmamonova/sphinx/env/lib/python3.6/site-packages/pocketsphinx/pock etsphinx.py", line 275, in __init__
this = _pocketsphinx.new_Decoder(*args)
RuntimeError: new_Decoder returned -1
0
|