В учебнике pocketsphinx функция ps_process_raw была вызвана с буфером 512 int16s:
int16 buf[512];
while (!feof(fh)) {
size_t nsamp;
nsamp = fread(buf, 2, 512, fh);
ps_process_raw(ps, buf, nsamp, FALSE, FALSE);
}
Однако в их собственном исходном коде , вызванном командойЛинейный интерфейс, они использовали 256:
total = 0;
while (!feof(rawfh)) {
int16 data[256];
size_t nread;
nread = fread(data, sizeof(*data), sizeof(data)/sizeof(*data), rawfh);
ps_process_raw(ps, data, nread, FALSE, FALSE);
total += nread;
}
В других местах я также видел 2048.Если я правильно понимаю, данный входной звук предпочтителен в 16 кГц, 512 сэмплов соответствуют примерно 30 мс звука, что соответствует тому, что, по-видимому, предлагает большинство руководств по распознаванию речи.
Интересно, кто-нибудь знает, какРазмер буфера выборки влияет на производительность (точность и скорость), а также на то, почему она не согласована с разными «официальными» источниками.
Я использую C ++ API последней версии sphinx.