在Pocketsphinx tutorial中,使用512个int16的缓冲区调用ps_process_raw函数:
int16 buf[512];
while (!feof(fh)) {
size_t nsamp;
nsamp = fread(buf, 2, 512, fh);
ps_process_raw(ps, buf, nsamp, FALSE, FALSE);
}
但是在命令行界面调用的own source code中,他们使用了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。如果我理解正确,那么在16khz中首选输入音频,则512个样本对应于大约30毫秒的声音,这与大多数语音识别指南所建议的一致。
我想知道是否有人知道样本缓冲区大小如何影响性能(准确性和速度),以及为什么在不同的“官方”来源中样本缓冲区大小不一致?
我正在使用C ++ API开发最新的狮身人面像版本。