Skip to content

Commit 4838262

Browse files
committed
Fix: Support for limiting language range in VITS
1 parent 690f7b0 commit 4838262

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

manager/TTSManager.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,12 @@ def vits_infer(self, state, encode=True):
271271
state["text"] = re.sub(r'\s+', ' ', state["text"]).strip()
272272
sampling_rate = model.sampling_rate
273273

274-
sentences_list = sentence_split_and_markup(state["text"], state["lang"], state["segment_size"])
274+
sentences_list = sentence_split_and_markup(
275+
text=state["text"],
276+
target_language=state["lang"],
277+
segment_size=state["segment_size"],
278+
speaker_lang=state["speaker_lang"],
279+
)
275280

276281
# 停顿0.5s,避免语音分段合成再拼接后的连接突兀
277282
brk = np.zeros(int(0.5 * sampling_rate), dtype=np.int16)

tts_app/voice_api/views.py

+12-9
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ def voice_vits_api():
160160
# 校验模型是否支持输入的语言
161161
speaker_lang = model_manager.voice_speakers[ModelType.VITS.value][id].get('lang')
162162
lang_list, status, msg = get_lang_list(lang, speaker_lang)
163+
163164
if status == "error":
164165
return make_response(jsonify({"status": status, "message": msg}), 400)
165166

@@ -173,15 +174,17 @@ def voice_vits_api():
173174

174175
fname = f"{str(uuid.uuid1())}.{format}"
175176
file_type = f"audio/{format}"
176-
state = {"text": text,
177-
"id": id,
178-
"format": format,
179-
"length": length,
180-
"noise": noise,
181-
"noisew": noisew,
182-
"segment_size": segment_size,
183-
"lang": lang_list,
184-
"speaker_lang": speaker_lang}
177+
state = {
178+
"text": text,
179+
"id": id,
180+
"format": format,
181+
"length": length,
182+
"noise": noise,
183+
"noisew": noisew,
184+
"segment_size": segment_size,
185+
"lang": lang_list,
186+
"speaker_lang": speaker_lang,
187+
}
185188

186189
if use_streaming:
187190
audio = tts_manager.stream_vits_infer(state)

utils/sentence.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -162,15 +162,15 @@ def sentence_split_reading(text: str) -> list:
162162
return sentences_list
163163

164164

165-
def sentence_split_and_markup(text, target_language, segment_size=50):
165+
def sentence_split_and_markup(text, target_language, segment_size=50, speaker_lang=None):
166166
sentences_list = []
167167

168168
if target_language[0].upper() == "MIX":
169169
sentences_list.append(text)
170170
else:
171171
for _text in sentence_split(text, segment_size):
172172
if target_language[0].upper() == "AUTO":
173-
sentence = markup_language(_text, target_language)
173+
sentence = markup_language(_text, speaker_lang)
174174
elif len(target_language) == 1:
175175
sentence = f"[{target_language[0].upper()}]{_text}[{target_language[0].upper()}]"
176176
else:

0 commit comments

Comments
 (0)