Open PeiwenWu opened 3 months ago
目前感觉无从下手,请问如果参考c++的例子,参考哪个代码文件比较好呢? 您可以推荐一下吗?
目前感觉无从下手,请问如果参考c++的例子,参考哪个代码文件比较好呢? 您可以推荐一下吗?
就按照接口,需要什么参数给什么参数。 参考 ASR,相似度非常高 https://github.com/k2-fsa/sherpa-onnx/blob/master/c-api-examples/decode-file-c-api.c 或者这个 https://github.com/k2-fsa/sherpa-onnx/tree/master/c-api-examples/asr-microphone-example
@PeiwenWu 来晚了,最近才开始用这个库,我想大概长这样,这是我代码里的片段拼凑的。
//加载模型
_spotter = SherpaOnnxCreateKeywordSpotter(_config.get());
SherpaOnnxKeywordSpotter* _spotter;
//1. 打开
auto stream = SherpaOnnxCreateKeywordStream(_spotter);
//2. 传入语音
bool ok = false;
SherpaOnnxOnlineStreamAcceptWaveform(stream, _config->feat_config.sample_rate, reinterpret_cast<const float*>(samples), samples_len);
//SherpaOnnxOnlineStreamInputFinished(_stream);
if (SherpaOnnxIsKeywordStreamReady(_spotter, stream) == 1) {
SherpaOnnxDecodeKeywordStream(_spotter, stream);
auto* result = SherpaOnnxGetKeywordResult(_spotter, stream);
ok = result && result->keyword != nullptr;
if (ok) {
LOG_INFO("Wake up by key words: %s", result->keyword);
}
if (result) {
SherpaOnnxDestroyKeywordResult(result);
}
}
//3. 关闭
SherpaOnnxDestroyOnlineStream(stream);
//卸载模型
SherpaOnnxDestroyKeywordSpotter(_spotter);
_spotter = nullptr;
唯一不确定的是这个 SherpaOnnxOnlineStreamInputFinished
这是我看 bin 代码里的,我需要连续监测这里是不是不能 finished, 注释说调用了之后就不能 accept.
因为我发现没有办法生成唤醒词 token, 暂时没用这些代码,也就没有测试, 参考已经足够。希望可以帮到你。
请自己根据 c++/python/javascript/c# 等中的 keyword spotting 例子,自己加一个 c api 的例子。 如果你自己在加的过程中,有任何的问题,可以随时贴出来。