Здравствуйте граждане форумчане.
Недавно задался целью настроить голосовое управление системой(Ubuntu) через pocketsphinx(да я знаю что можно julius или вообще через какой нибудь simon но все эти варианты в силу некоторых причин меня не устраивают). Собственно сам poocketsphinx я настроил, он приемлемо распознает мою речь. Настала пора что то сделать с распознанной речью. Поскольку результат прекрасно выводится в терминал первой моей мыслью было сделать так:
pocketsphinx_continuous -inmic yes -hmm zero_ru.cd_cont_4000 -dict ru.dic -jsgf jsgf > file
pocketsphinx_continuous -inmic yes -hmm zero_ru.cd_cont_4000 -dict ru.dic -jsgf jsgf &> file,
pocketsphinx_continuous -inmic yes -hmm zero_ru.cd_cont_4000 -dict ru.dic -jsgf jsgf > file 2>&1
Отдельно отмечу что поток ошибок stderr прекрасно перенаправляется:
pocketsphinx_continuous -inmic yes -hmm zero_ru.cd_cont_4000 -dict ru.dic -jsgf jsgf > file
а вот stdout либо в терминал либо некак:/
второй моей мыслью было наконец почитать документацию, и о чудо судя по man pocketsphinx_continuous
существует параметр:
-hyp output file name
однако, он тоже не работает:
pocketsphinx_continuous -inmic yes -hmm zero_ru.cd_cont_4000 -dict ru.dic -jsgf jsgf -hyp file
ERROR: "cmd_ln.c", line 604: Unknown argument name '-hyp'
ERROR: "cmd_ln.c", line 701: Failed to parse arguments list
INFO: continuous.c(293): Specify '-infile <file.wav>' to recognize from file or '-inmic yes' to recognize from microphone.
в этот момент мне стало интересно что такого разработчик мог сделать со своей программой что в терминале результат есть а перенаправить его некуда нельзя. Нашол исходники на гитхабе https://github.com/cmusphinx/pocketsphinx/blob/master/src в которых к слову не нашел следов существования параметра -hyp зато нашол там следующий код:
if (!in_speech && utt_started) {
ps_end_utt(ps);
hyp = ps_get_hyp(ps, NULL);
if (hyp != NULL)
printf("%s\n", hyp);
if (print_times)
print_word_times();
fflush(stdout);
ps_start_utt(ps);
utt_started = FALSE;
}
Теперь я прошу помощи знающих людей, где я ошибся, что я сделал неправильно и как таки заставить это работать?