Spaces:
Sleeping
Sleeping
File size: 1,524 Bytes
09321b6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
from ..output_wrapper import AudioWrapper
from modelscope.utils.constant import Tasks
from .pipeline_tool import ModelscopePipelineTool
class TexttoSpeechTool(ModelscopePipelineTool):
default_model = 'damo/speech_sambert-hifigan_tts_zh-cn_16k'
description = '文本转语音服务,将文字转换为自然而逼真的语音,可配置男声/女声'
name = 'modelscope_speech-generation'
parameters: list = [{
'name': 'input',
'description': '要转成语音的文本',
'required': True
}, {
'name': 'gender',
'description': '用户身份',
'required': True
}]
task = Tasks.text_to_speech
def _local_parse_input(self, *args, **kwargs):
if 'gender' not in kwargs:
kwargs['gender'] = 'man'
voice = 'zhizhe_emo' if kwargs['gender'] == 'man' else 'zhiyan_emo'
kwargs['voice'] = voice
if 'text' in kwargs and 'input' not in kwargs:
kwargs['input'] = kwargs['text']
kwargs.pop('text')
kwargs.pop('gender')
return args, kwargs
def _remote_parse_input(self, *args, **kwargs):
if 'gender' not in kwargs:
kwargs['gender'] = 'man'
voice = 'zhizhe_emo' if kwargs['gender'] == 'man' else 'zhiyan_emo'
kwargs['voice'] = voice
kwargs.pop('gender')
return kwargs
def _parse_output(self, origin_result, remote=True):
audio = origin_result['output_wav']
return {'result': AudioWrapper(audio)}
|