mirror of
https://github.com/FunAudioLLM/CosyVoice.git
synced 2026-02-04 17:39:25 +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:
@@ -31,7 +31,7 @@ except ImportError:
|
||||
from tn.chinese.normalizer import Normalizer as ZhNormalizer
|
||||
from tn.english.normalizer import Normalizer as EnNormalizer
|
||||
use_ttsfrd = False
|
||||
from cosyvoice.utils.frontend_utils import contains_chinese, replace_blank, replace_corner_mark, remove_bracket, spell_out_number, split_paragraph
|
||||
from cosyvoice.utils.frontend_utils import contains_chinese, replace_blank, replace_corner_mark, remove_bracket, spell_out_number, split_paragraph, is_only_punctuation
|
||||
|
||||
|
||||
class CosyVoiceFrontEnd:
|
||||
@@ -109,6 +109,10 @@ class CosyVoiceFrontEnd:
|
||||
|
||||
def text_normalize(self, text, split=True):
|
||||
text = text.strip()
|
||||
# When generating text that contains only punctuation marks or whitespace characters
|
||||
# - Returning empty texts ensures consistent processing logic.
|
||||
if is_only_punctuation(text):
|
||||
return []
|
||||
if contains_chinese(text):
|
||||
if self.use_ttsfrd:
|
||||
texts = [i["text"] for i in json.loads(self.frd.do_voicegen_frd(text))["sentences"]]
|
||||
|
||||
@@ -19,7 +19,6 @@ from torch.nn import functional as F
|
||||
from contextlib import nullcontext
|
||||
import uuid
|
||||
from cosyvoice.utils.common import fade_in_out
|
||||
from cosyvoice.utils.common import is_only_punctuation
|
||||
|
||||
|
||||
class CosyVoiceModel:
|
||||
@@ -146,10 +145,6 @@ class CosyVoiceModel:
|
||||
llm_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):
|
||||
# When generating text that contains only punctuation marks or whitespace characters
|
||||
# - Returning 10ms of silence ensures consistent processing logic.
|
||||
if is_only_punctuation(text):
|
||||
return {'tts_speech': torch.zeros(1, int(0.01 * 22050))}
|
||||
# this_uuid is used to track variables related to this inference thread
|
||||
this_uuid = str(uuid.uuid1())
|
||||
with self.lock:
|
||||
|
||||
Reference in New Issue
Block a user