Add jieba for Chinese TTS models (#797)

This commit is contained in:
Fangjun Kuang
2024-04-21 14:47:13 +08:00
committed by GitHub
parent 2e0ee0e8c8
commit 6b353bfb42
14 changed files with 513 additions and 8 deletions

View File

@@ -19,6 +19,7 @@
#include "fst/extensions/far/far.h"
#include "kaldifst/csrc/kaldi-fst-io.h"
#include "kaldifst/csrc/text-normalizer.h"
#include "sherpa-onnx/csrc/jieba-lexicon.h"
#include "sherpa-onnx/csrc/lexicon.h"
#include "sherpa-onnx/csrc/macros.h"
#include "sherpa-onnx/csrc/offline-tts-character-frontend.h"
@@ -290,9 +291,26 @@ class OfflineTtsVitsImpl : public OfflineTtsImpl {
void InitFrontend() {
const auto &meta_data = model_->GetMetaData();
if (meta_data.jieba && config_.model.vits.dict_dir.empty()) {
SHERPA_ONNX_LOGE(
"Please provide --vits-dict-dir for Chinese TTS models using jieba");
exit(-1);
}
if (!meta_data.jieba && !config_.model.vits.dict_dir.empty()) {
SHERPA_ONNX_LOGE(
"Current model is not using jieba but you provided --vits-dict-dir");
exit(-1);
}
if (meta_data.frontend == "characters") {
frontend_ = std::make_unique<OfflineTtsCharacterFrontend>(
config_.model.vits.tokens, meta_data);
} else if (meta_data.jieba && !config_.model.vits.dict_dir.empty()) {
frontend_ = std::make_unique<JiebaLexicon>(
config_.model.vits.lexicon, config_.model.vits.tokens,
config_.model.vits.dict_dir, model_->GetMetaData(),
config_.model.debug);
} else if ((meta_data.is_piper || meta_data.is_coqui ||
meta_data.is_icefall) &&
!config_.model.vits.data_dir.empty()) {