mirror of
https://github.com/FunAudioLLM/CosyVoice.git
synced 2026-02-05 18:09:24 +08:00
fix(bug).when generating text that contains only punctuation marks or whitespace characters, the CPU usage reaches 100%, and the process crashes.
This commit is contained in:
@@ -19,6 +19,7 @@ from torch.nn import functional as F
|
|||||||
from contextlib import nullcontext
|
from contextlib import nullcontext
|
||||||
import uuid
|
import uuid
|
||||||
from cosyvoice.utils.common import fade_in_out
|
from cosyvoice.utils.common import fade_in_out
|
||||||
|
from cosyvoice.utils.common import is_only_punctuation
|
||||||
|
|
||||||
|
|
||||||
class CosyVoiceModel:
|
class CosyVoiceModel:
|
||||||
@@ -145,6 +146,9 @@ class CosyVoiceModel:
|
|||||||
llm_prompt_speech_token=torch.zeros(1, 0, dtype=torch.int32),
|
llm_prompt_speech_token=torch.zeros(1, 0, dtype=torch.int32),
|
||||||
flow_prompt_speech_token=torch.zeros(1, 0, dtype=torch.int32),
|
flow_prompt_speech_token=torch.zeros(1, 0, dtype=torch.int32),
|
||||||
prompt_speech_feat=torch.zeros(1, 0, 80), stream=False, speed=1.0, **kwargs):
|
prompt_speech_feat=torch.zeros(1, 0, 80), stream=False, speed=1.0, **kwargs):
|
||||||
|
if is_only_punctuation(text):
|
||||||
|
logging.info('only punctuation, skip synthesis:{}'.format(text))
|
||||||
|
return {'tts_speech': torch.zeros(1, int(0.01 * 22050))} #返回10ms空白音频,保证了一致的上下游处理逻辑
|
||||||
# this_uuid is used to track variables related to this inference thread
|
# this_uuid is used to track variables related to this inference thread
|
||||||
this_uuid = str(uuid.uuid1())
|
this_uuid = str(uuid.uuid1())
|
||||||
with self.lock:
|
with self.lock:
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ from typing import List
|
|||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
|
import regex
|
||||||
|
|
||||||
IGNORE_ID = -1
|
IGNORE_ID = -1
|
||||||
|
|
||||||
@@ -153,3 +154,9 @@ def set_all_random_seed(seed):
|
|||||||
np.random.seed(seed)
|
np.random.seed(seed)
|
||||||
torch.manual_seed(seed)
|
torch.manual_seed(seed)
|
||||||
torch.cuda.manual_seed_all(seed)
|
torch.cuda.manual_seed_all(seed)
|
||||||
|
|
||||||
|
|
||||||
|
def is_only_punctuation(text):
|
||||||
|
# Regular expression: Match strings that consist only of punctuation marks or are empty.
|
||||||
|
punctuation_pattern = r'^[\p{P}\p{S}]*$'
|
||||||
|
return bool(regex.fullmatch(punctuation_pattern, text))
|
||||||
|
|||||||
Reference in New Issue
Block a user