diff --git a/sherpa-onnx/c-api/c-api.cc b/sherpa-onnx/c-api/c-api.cc index 615e86da8c..5cc5cde01b 100644 --- a/sherpa-onnx/c-api/c-api.cc +++ b/sherpa-onnx/c-api/c-api.cc @@ -561,6 +561,13 @@ SherpaOnnxOnlineStream *CreateKeywordStream( return stream; } +SherpaOnnxOnlineStream *CreateKeywordStreamWithKeywords( + const SherpaOnnxKeywordSpotter *spotter, const char *keywords) { + SherpaOnnxOnlineStream *stream = + new SherpaOnnxOnlineStream(spotter->impl->CreateStream(keywords)); + return stream; +} + int32_t IsKeywordStreamReady(SherpaOnnxKeywordSpotter *spotter, SherpaOnnxOnlineStream *stream) { return spotter->impl->IsReady(stream->impl.get()); diff --git a/sherpa-onnx/c-api/c-api.h b/sherpa-onnx/c-api/c-api.h index 87cdfc5ca8..5638650fa2 100644 --- a/sherpa-onnx/c-api/c-api.h +++ b/sherpa-onnx/c-api/c-api.h @@ -583,6 +583,16 @@ SHERPA_ONNX_API void DestroyKeywordSpotter(SherpaOnnxKeywordSpotter *spotter); SHERPA_ONNX_API SherpaOnnxOnlineStream *CreateKeywordStream( const SherpaOnnxKeywordSpotter *spotter); +/// Create an online stream for accepting wave samples with the specified hot +/// words. +/// +/// @param spotter A pointer returned by CreateKeywordSpotter() +/// @param keywords A pointer points to the keywords that you set +/// @return Return a pointer to an OnlineStream. The user has to invoke +/// DestroyOnlineStream() to free it to avoid memory leak. +SHERPA_ONNX_API SherpaOnnxOnlineStream *CreateKeywordStreamWithKeywords( + const SherpaOnnxKeywordSpotter *spotter, const char *keywords); + /// Return 1 if there are enough number of feature frames for decoding. /// Return 0 otherwise. ///