1
0
Просмотр исходного кода

Merge pull request #721 from FunAudioLLM/dev/lyuxiang.lx

update readme
Xiang Lyu 11 месяцев назад
Родитель
Сommit
091e5c4ed8
4 измененных файлов с 19 добавлено и 4 удалено
  1. 13 3
      README.md
  2. 1 1
      cosyvoice/cli/cosyvoice.py
  3. 4 0
      cosyvoice/cli/frontend.py
  4. 1 0
      cosyvoice/tokenizer/tokenizer.py

+ 13 - 3
README.md

@@ -131,19 +131,29 @@ export PYTHONPATH=third_party/Matcha-TTS
 from cosyvoice.cli.cosyvoice import CosyVoice, CosyVoice2
 from cosyvoice.utils.file_utils import load_wav
 import torchaudio
+```
 
-# cosyvoice2
+**CosyVoice2 Usage**
+```python
 cosyvoice = CosyVoice2('pretrained_models/CosyVoice2-0.5B', load_jit=True, load_onnx=False, load_trt=False)
 
 # zero_shot usage
 prompt_speech_16k = load_wav('zero_shot_prompt.wav', 16000)
 for i, j in enumerate(cosyvoice.inference_zero_shot('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '希望你以后能够做的比我还好呦。', prompt_speech_16k, stream=False)):
     torchaudio.save('zero_shot_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
+
+# fine grained control
+prompt_speech_16k = load_wav('zero_shot_prompt.wav', 16000)
+for i, j in enumerate(cosyvoice.inference_cross_lingual('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', prompt_speech_16k, stream=False)):
+    torchaudio.save('fine_grained_control_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
+
 # instruct usage
 for i, j in enumerate(cosyvoice.inference_instruct2('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '用四川话说这句话', prompt_speech_16k, stream=False)):
-    torchaudio.save('zero_shot_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
+    torchaudio.save('instruct_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
+```
 
-# cosyvoice
+**CosyVoice Usage**
+```python
 cosyvoice = CosyVoice('pretrained_models/CosyVoice-300M-SFT', load_jit=True, load_onnx=False, fp16=True)
 # sft usage
 print(cosyvoice.list_avaliable_spks())

+ 1 - 1
cosyvoice/cli/cosyvoice.py

@@ -85,7 +85,7 @@ class CosyVoice:
                 start_time = time.time()
 
     def inference_cross_lingual(self, tts_text, prompt_speech_16k, stream=False, speed=1.0):
-        if self.frontend.instruct is True:
+        if self.frontend.instruct is True and isinstance(self.model, CosyVoiceModel):
             raise ValueError('{} do not support cross_lingual inference'.format(self.model_dir))
         for i in tqdm(self.frontend.text_normalize(tts_text, split=True)):
             model_input = self.frontend.frontend_cross_lingual(i, prompt_speech_16k, self.sample_rate)

+ 4 - 0
cosyvoice/cli/frontend.py

@@ -109,6 +109,10 @@ class CosyVoiceFrontEnd:
 
     def text_normalize(self, text, split=True):
         text = text.strip()
+        # NOTE(lyuxiang.lx) move this judgement into ttsfrd in the future
+        for token in self.tokenizer.special_tokens['additional_special_tokens']:
+            if token in text:
+                return text if split is False else [text]
         if contains_chinese(text):
             if self.use_ttsfrd:
                 texts = [i["text"] for i in json.loads(self.frd.do_voicegen_frd(text))["sentences"]]

+ 1 - 0
cosyvoice/tokenizer/tokenizer.py

@@ -255,6 +255,7 @@ class QwenTokenizer():
                 "[lipsmack]", "[mn]"
             ]
         }
+        self.special_tokens = special_tokens
         self.tokenizer = AutoTokenizer.from_pretrained(token_path)
         self.tokenizer.add_special_tokens(special_tokens)
         self.skip_special_tokens = skip_special_tokens