Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions sherpa-onnx/c-api/cxx-api.cc
Original file line number Diff line number Diff line change
Expand Up @@ -821,4 +821,33 @@ bool FileExists(const std::string &filename) {
return SherpaOnnxFileExists(filename.c_str());
}

// ============================================================
// For Offline Punctuation
// ============================================================
OfflinePunctuation OfflinePunctuation::Create(const OfflinePunctuationConfig &config) {
struct SherpaOnnxOfflinePunctuationConfig c;
memset(&c, 0, sizeof(c));
c.model.ct_transformer = config.model.ct_transformer.c_str();
c.model.num_threads = config.model.num_threads;
c.model.debug = config.model.debug;
c.model.provider = config.model.provider.c_str();

const SherpaOnnxOfflinePunctuation *punct = SherpaOnnxCreateOfflinePunctuation(&c);
return OfflinePunctuation(punct);
}

OfflinePunctuation::OfflinePunctuation(const SherpaOnnxOfflinePunctuation *p)
: MoveOnly<OfflinePunctuation, SherpaOnnxOfflinePunctuation>(p) {}

void OfflinePunctuation::Destroy(const SherpaOnnxOfflinePunctuation *p) const {
SherpaOnnxDestroyOfflinePunctuation(p_);
}

std::string OfflinePunctuation::AddPunctuation(const std::string &text) const {
const char *result = SherpaOfflinePunctuationAddPunct(p_, text.c_str());
std::string ans(result);
SherpaOfflinePunctuationFreeText(result);
return ans;
}

} // namespace sherpa_onnx::cxx
27 changes: 27 additions & 0 deletions sherpa-onnx/c-api/cxx-api.h
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,33 @@ SHERPA_ONNX_API std::string GetGitSha1();
SHERPA_ONNX_API std::string GetGitDate();
SHERPA_ONNX_API bool FileExists(const std::string &filename);

// ============================================================================
// Offline Punctuation
// ============================================================================

struct OfflinePunctuationModelConfig {
std::string ct_transformer;
int32_t num_threads = 1;
bool debug = false;
std::string provider = "cpu";
};

struct OfflinePunctuationConfig {
OfflinePunctuationModelConfig model;
};

class SHERPA_ONNX_API OfflinePunctuation
: public MoveOnly<OfflinePunctuation, SherpaOnnxOfflinePunctuation> {
public:
static OfflinePunctuation Create(const OfflinePunctuationConfig &config);

void Destroy(const SherpaOnnxOfflinePunctuation *p) const;

std::string AddPunctuation(const std::string &text) const;
private:
explicit OfflinePunctuation(const SherpaOnnxOfflinePunctuation *p);
};

} // namespace sherpa_onnx::cxx

#endif // SHERPA_ONNX_C_API_CXX_API_H_