Ошибка сегмента Pocketsphinx с помощью ps_start_utt

Я пытаюсь использовать Pocketsphinx как часть программы на C ++ и у меня возникла проблема при запуске моего кода. У меня было две проблемы: во-первых, из-за того, что pocketsphinx не распознал мой микрофон, а во-вторых, из-за ошибки сегмента при вызове ps_start_utt. Я запускаю это на Ubuntu 14.04. Вот оригинальный код:

ps_decoder_t *ps;
cmd_ln_t *config;
ad_rec_t *ad;

config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", "/usr/local/share/pocketsphinx/model/en-us/en-us",
"-lm", "../audio/1638.lm",
"-dict", "../audio/1638.dic",
"-logfn", "/dev/null",
NULL);
ps = ps_init(config);
ad = ad_open_dev("sysdefault", (int) cmd_ln_float32_r(config, "-samprate"));
// below is the other thing I tried to use to open the audio device.
// ad = ad_open();
cout << "AAAA" << endl;
ad_start_rec(ad);
cout << "BBBB" << endl;
ps_start_utt(ps);
cout << "CCCC" << endl;
utt_started = FALSE;

При выполнении это выдает две ошибки в командной строке. Первой была ошибка из-за невозможности найти sysdefault аудиоустройство, а второй был сбой сегмента, который произошел после AAAA а также BBBB были выведены (CCCC никогда не был напечатан).
Это означает, что что-то в ps_start_utt вызывает ошибку сегмента, но я понятия не имею, что. Первоначально я думал, что эти две ошибки связаны, поэтому я попытался исправить первую. Заменив строку sysdefault с NULL в ad_open_dev первая ошибка больше не появляется, но ошибка сегмента все еще происходит.
С помощью ad_open() вместо ad_open_dev это то же самое, что заменить NULL; первая ошибка больше не присутствует, но ошибка сегмента все еще происходит в том же месте. Тем не менее, самое странное для меня в этом вопросе является то, что pocketsphinx_continuous -inmic yes Команда отлично работает на той же машине с тем же микрофоном. Я посмотрел на continuous.c код на cmusphinx хранилище, но не смог выяснить, в чем разница или как я мог бы ее исправить. Я могу опубликовать больше кода, если это необходимо. Любая помощь будет принята с благодарностью!

ОБНОВЛЕНИЕ: После некоторых проверок я обнаружил, что ошибка, вызывающая ошибку seg, заключается в том, что ps == NULL. Я все еще не уверен, почему это произойдет, как бы то ни было.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]