c++ - 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 版本。
解决方案
推荐阅读
- python - 找不到模型 odoo v8
- java - PagedList 在使用 Room 的 Android 应用程序中不断增长但从未缩小
- java - PDFBox与java并排合并2个pdf文件
- css - Bootstrap 在 Angular 6 中无法正常工作
- c++ - C++ - 是否可以让子类按值包含包含类?
- python - 如何使用eonet api使用python获取自然灾害图像
- c# - 尽管引用了 dll,但无法使用命名空间
- java - 双重没有从一个方法传递到另一个方法
- java - 我想根据我得到的毫秒时间来获得今天或昨天的一天
- javascript - 本地语言在 javascript 文件中的页面加载时转换为外来语言