From 65be443e982755a96915b363af6b6ad2dfe5c827 Mon Sep 17 00:00:00 2001 From: "jiaqi.sjq" Date: Tue, 11 Oct 2022 17:22:58 +0800 Subject: [PATCH] [to #41669377] Add more models to test in tts UT Link https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/10360754#tab=detail Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/10360754 --- .../audio/tts/models/datasets/__init__.py | 0 tests/pipelines/test_text_to_speech.py | 70 +++++++++++++++---- 2 files changed, 58 insertions(+), 12 deletions(-) mode change 100755 => 100644 modelscope/models/audio/tts/models/datasets/__init__.py diff --git a/modelscope/models/audio/tts/models/datasets/__init__.py b/modelscope/models/audio/tts/models/datasets/__init__.py old mode 100755 new mode 100644 diff --git a/tests/pipelines/test_text_to_speech.py b/tests/pipelines/test_text_to_speech.py index f659e59b..0caf1c84 100644 --- a/tests/pipelines/test_text_to_speech.py +++ b/tests/pipelines/test_text_to_speech.py @@ -27,21 +27,67 @@ class TextToSpeechSambertHifigan16kPipelineTest(unittest.TestCase, def setUp(self) -> None: self.task = Tasks.text_to_speech - self.model_id = 'damo/speech_sambert-hifigan_tts_zhitian_emo_zh-cn_16k' + zhcn_text = '今天北京天气怎么样' + en_text = 'How is the weather in Beijing?' + zhcn_voice = ['zhitian_emo', 'zhizhe_emo', 'zhiyan_emo', 'zhibei_emo'] + enus_voice = ['andy', 'annie'] + engb_voice = ['luca', 'luna'] + self.tts_test_cases = [] + for voice in zhcn_voice: + model_id = 'damo/speech_sambert-hifigan_tts_%s_%s_16k' % (voice, + 'zh-cn') + self.tts_test_cases.append({ + 'voice': voice, + 'model_id': model_id, + 'text': zhcn_text + }) + for voice in enus_voice: + model_id = 'damo/speech_sambert-hifigan_tts_%s_%s_16k' % (voice, + 'en-us') + self.tts_test_cases.append({ + 'voice': voice, + 'model_id': model_id, + 'text': en_text + }) + for voice in engb_voice: + model_id = 'damo/speech_sambert-hifigan_tts_%s_%s_16k' % (voice, + 'en-gb') + self.tts_test_cases.append({ + 'voice': voice, + 'model_id': model_id, + 'text': en_text + }) + zhcn_model_id = 'damo/speech_sambert-hifigan_tts_zh-cn_16k' + enus_model_id = 'damo/speech_sambert-hifigan_tts_en-us_16k' + engb_model_id = 'damo/speech_sambert-hifigan_tts_en-gb_16k' + self.tts_test_cases.append({ + 'voice': 'zhcn', + 'model_id': zhcn_model_id, + 'text': zhcn_text + }) + self.tts_test_cases.append({ + 'voice': 'enus', + 'model_id': enus_model_id, + 'text': en_text + }) + self.tts_test_cases.append({ + 'voice': 'engb', + 'model_id': engb_model_id, + 'text': en_text + }) @unittest.skipUnless(test_level() >= 0, 'skip test in current test level') def test_pipeline(self): - text = '今天北京天气怎么样?' - voice = 'zhitian_emo' - - model = Model.from_pretrained( - model_name_or_path=self.model_id, revision='pytorch_am') - sambert_hifigan_tts = pipeline(task=self.task, model=model) - self.assertTrue(sambert_hifigan_tts is not None) - output = sambert_hifigan_tts(input=text, voice=voice) - self.assertIsNotNone(output[OutputKeys.OUTPUT_PCM]) - pcm = output[OutputKeys.OUTPUT_PCM] - write('output.wav', 16000, pcm) + for case in self.tts_test_cases: + logger.info('test %s' % case['voice']) + model = Model.from_pretrained( + model_name_or_path=case['model_id'], revision='pytorch_am') + sambert_hifigan_tts = pipeline(task=self.task, model=model) + self.assertTrue(sambert_hifigan_tts is not None) + output = sambert_hifigan_tts(input=case['text']) + self.assertIsNotNone(output[OutputKeys.OUTPUT_PCM]) + pcm = output[OutputKeys.OUTPUT_PCM] + write('output_%s.wav' % case['voice'], 16000, pcm) @unittest.skip('demo compatibility test is only enabled on a needed-basis') def test_demo_compatibility(self):