Pocketsphinx yra biblioteka parašyta C kalba. Bibliotekos veikimas priklauso nuo kitos bibliotekos SphinxBase. Pastaroji turi suprogramuotą bendrą funkcionalumą daugumai CMU Sphinx projektų. Norint priversti veikti Pocketsphinx reikia turėti ir Sphinxbase.
PocketSphinx gali veiti MS Windows ir Linux OS.
Oficiliam puslapyje(Building application with pocketsphinx) teigiama kad reikia turėti:
Sukompiliuoti išeities kodą:
Daugiau informacijos:
Daugiau informacijos:
Daugiau informacijos:
Biblioteka buvo kuriama atsižvelgiant į kuo lengvesnį panaudojimą programuotojui:
Kodas buvo testuotas su pocketsphinx-0.8 ir basesphinx-08. Daugiau informacijos galima rasti aprašyme: PocketSphinx panaudojimas su Lietuvišku modeliu Mondhs@github/url-lt-pocketsphinx-tutorial.
gcc -o robotas_ps robotas_ps.c \
-DMODELDIR=\"`pkg-config --variable=modeldir pocketsphinx`\" \
`pkg-config --cflags --libs pocketsphinx sphinxbase`
Paleisti komandą (Linux OS)
./robotas_ps
Rezultate, jei viskas gerai, matoma test1.wav atapžinimo rezultatai:
INFO: ps_lattice.c(1365): Normalizer P(O) = alpha(</s>:201:201) = -249971
INFO: ps_lattice.c(1403): Joint P(O,S) = -252262 P(S|O) = -2291
Atpažinimo hipotezė: VARYK PIRMYN
Kodas robotas_ps.c:
#include
int main(int argc, char *argv[]) { //Argumentai ///////////////////////////// ps_decoder_t *pocketsphinx; cmd_ln_t *config; FILE *fileHandler; char const *hyp, *uttid; int32 score;
//Inicializavimas
/////////////////////////////
config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", "../models/hmm/lt.cd_cont_200/", //acustinis modelis
"-jsgf", "../models/lm/robotas.gram", //gramatika
"-dict", "../models/dict/robotas.dict", //žodynas
NULL);
pocketsphinx = ps_init(config); // atpažintuvo inicializavimas
//Failo atidarymas skaitymui
/////////////////////////////
fileHandler = fopen("../test/audio/test1.wav", "rb");
//Visos bylos turinio dekodavimas
/////////////////////////////
ps_decode_raw(pocketsphinx, fileHandler, "robotas", -1);
// Hipotezės ištraukimas
/////////////////////////////
hyp = ps_get_hyp(pocketsphinx, &score, &uttid);
printf("Atpažinimo hipotezė: %s\n", hyp);
// Bylos uždarymas
/////////////////////////////
fclose(fileHandler);
ps_free(pocketsphinx);
return 0; }