Validate input sid (#369)

This commit is contained in:
Fangjun Kuang
2023-10-18 14:02:01 +08:00
committed by GitHub
parent 1ee79e3ff5
commit 8545c3b7f0
8 changed files with 51 additions and 14 deletions

View File

@@ -25,6 +25,23 @@ class OfflineTtsVitsImpl : public OfflineTtsImpl {
GeneratedAudio Generate(const std::string &text,
int64_t sid = 0) const override {
int32_t num_speakers = model_->NumSpeakers();
if (num_speakers == 0 && sid != 0) {
SHERPA_ONNX_LOGE(
"This is a single-speaker model and supports only sid 0. Given sid: "
"%d",
sid);
return {};
}
if (num_speakers != 0 && (sid >= num_speakers || sid < 0)) {
SHERPA_ONNX_LOGE(
"This model contains only %d speakers. sid should be in the range "
"[%d, %d]. Given: %d",
num_speakers, 0, num_speakers - 1, sid);
return {};
}
std::vector<int64_t> x = lexicon_.ConvertTextToTokenIds(text);
if (x.empty()) {
SHERPA_ONNX_LOGE("Failed to convert %s to token IDs", text.c_str());