首页 > 解决方案 > PocketSphinx ps_process_raw 样本缓冲区大小影响

问题描述

在 pocketsphinx tutorial中,使用 512 个 int16s 的缓冲区调用了 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);
}

但是在命令行界面调用的他们自己的源代码中,他们使用了 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 使用最新的 sphinx 版本。

标签: c++cmusphinxpocketsphinx

解决方案


推荐阅读