Add non-streaming ASR support for HarmonyOS. (#1564)

This commit is contained in:
Fangjun Kuang
2024-11-26 16:38:35 +08:00
committed by GitHub
parent a4b79f077c
commit 298b6b6fda
50 changed files with 648 additions and 454 deletions

View File

@@ -13,6 +13,10 @@
#include "android/asset_manager.h"
#include "android/asset_manager_jni.h"
#elif __OHOS__
#include <strstream>
#include "rawfile/raw_file_manager.h"
#endif
#include "fst/extensions/far/far.h"
@@ -211,9 +215,9 @@ std::unique_ptr<OfflineRecognizerImpl> OfflineRecognizerImpl::Create(
exit(-1);
}
#if __ANDROID_API__ >= 9
template <typename Manager>
std::unique_ptr<OfflineRecognizerImpl> OfflineRecognizerImpl::Create(
AAssetManager *mgr, const OfflineRecognizerConfig &config) {
Manager *mgr, const OfflineRecognizerConfig &config) {
if (!config.model_config.sense_voice.model.empty()) {
return std::make_unique<OfflineRecognizerSenseVoiceImpl>(mgr, config);
}
@@ -389,7 +393,6 @@ std::unique_ptr<OfflineRecognizerImpl> OfflineRecognizerImpl::Create(
exit(-1);
}
#endif
OfflineRecognizerImpl::OfflineRecognizerImpl(
const OfflineRecognizerConfig &config)
@@ -436,9 +439,9 @@ OfflineRecognizerImpl::OfflineRecognizerImpl(
}
}
#if __ANDROID_API__ >= 9
template <typename Manager>
OfflineRecognizerImpl::OfflineRecognizerImpl(
AAssetManager *mgr, const OfflineRecognizerConfig &config)
Manager *mgr, const OfflineRecognizerConfig &config)
: config_(config) {
if (!config.rule_fsts.empty()) {
std::vector<std::string> files;
@@ -482,7 +485,6 @@ OfflineRecognizerImpl::OfflineRecognizerImpl(
} // for (const auto &f : files)
} // if (!config.rule_fars.empty())
}
#endif
std::string OfflineRecognizerImpl::ApplyInverseTextNormalization(
std::string text) const {
@@ -499,4 +501,19 @@ void OfflineRecognizerImpl::SetConfig(const OfflineRecognizerConfig &config) {
config_ = config;
}
#if __ANDROID_API__ >= 9
template OfflineRecognizerImpl::OfflineRecognizerImpl(
AAssetManager *mgr, const OfflineRecognizerConfig &config);
template std::unique_ptr<OfflineRecognizerImpl> OfflineRecognizerImpl::Create(
AAssetManager *mgr, const OfflineRecognizerConfig &config);
#endif
#if __OHOS__
template OfflineRecognizerImpl::OfflineRecognizerImpl(
NativeResourceManager *mgr, const OfflineRecognizerConfig &config);
template std::unique_ptr<OfflineRecognizerImpl> OfflineRecognizerImpl::Create(
NativeResourceManager *mgr, const OfflineRecognizerConfig &config);
#endif
} // namespace sherpa_onnx