API 文档
在线手册
摩尔线程数字人驱动服务开放平台
该平台提供摩尔线程数字人AI驱动的API服务。目前集成了Speech2Animation模块。服务运行于摩尔线程全自研GPU服务器上,对外提供S2A接口。输入一段文本,即可生成面部及动作驱动信号,用于数字人驱动。如需试用请联系我们获取 API 密钥。概念介绍
Speech2Animation服务
Speech2Animation服务是摩尔线程DigitalMe数字人驱动的API服务。本服务集成了text2face以及text2motion模块。服务运行于摩尔线程全自研GPU服务器上,对外提供S2A接口。输入一段文本,即可生成面部及动作驱动信号,用于数字人驱动。使用指南
获取API密钥
您需要申请一个 API 密钥来使用我们的服务。如需试用请联系我们获取 API 密钥。发送请求
Speech2Animation服务基于gRPC搭建。您可以使用我们的S2A API 来发送请求。处理响应
输入一段文本,请求成功后,通过调用TTS返回的时间戳信息,会生成驱动信号,包含与口型相关的视位变化、与情绪相关的表情变化,以及动作触发序列。API文档
基本信息
| 名称 | 说明 |
|---|---|
| 服务地址 | api.mthreads.com:53966 |
| 请求方式 | gRPC |
| 授权信息 | 密钥 |
调用方法
Python调用:"""Moore_Speech2Animation gRPC Client"""
import argparse
import grpc
from protos.cv.digitalhuman import MotionTrigger_pb2, MotionTrigger_pb2_grpc
from utils.tts_grpc_client import simple_streaming_synthesize, dump_wav
import json
import numpy as np
def run_normal_client(host: str, tts_address: str):
channel = grpc.insecure_channel(host)
stub = MotionTrigger_pb2_grpc.MotionTriggerStub(channel)
metadata=(("authorization", "<TOKEN>"),) #将<TOKEN>改为您获取的API密钥
# text = "{开心:3}大[单手挥手 /]家好,{开心:2}我[指向自己 /]是穆莎。" #情绪标签为{情绪类型:程度},程度为1,2,3,数值越大,情感强度越大。动作标签为[动作名称 /],目前支持15个动作。
text = "大家好,我是穆莎。" #输入文本
animation_seq = []
audio_chunks = []
for meta, audio_chunk in simple_streaming_synthesize(address=tts_address, text=text, voice="SSB3002", metadata=metadata): #SSB3002为TTS音色
if not meta is None:
meta.text = text
request = MotionTrigger_pb2.Meta2TriggerRequest(meta=meta, emotion="")
response = stub.Meta2Trigger(request, metadata=metadata).viseme_seq
result = list(map(lambda x:dict(x.viseme), response))
animation_seq.extend(result)
elif audio_chunk is not None:
audio_chunks.append(audio_chunk)
audio_data = np.concatenate(audio_chunks)
dump_wav(audio_data, 22050, 'tmp', path='.') #输出音频
with open('tmp.json', 'w') as fp: #输出驱动信号,保存在json文件中
data_ue = {
'face_data': animation_seq,
'fps': 30,
}
json.dump(data_ue, fp)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--host", type=str, default="")
parser.add_argument("--tts_host", type=str, default="")
args = parser.parse_args()
run_normal_client(host=args.host, tts_address=args.tts_host)
请求参数
| 名称 | 说明 |
|---|---|
| host | S2A服务地址 |
| tts_host | 调用的TTS服务地址 |
输入介绍
支持无标签和指定情绪及动作标签的文本输入,如“大家好,我是穆莎。”or “{开心:3}大[单手挥手 /]家好,{开心:2}我是穆莎。”输出介绍
口型:17个中文+14个英文标准视位的权重值,对应输出的"a_ch", "aa", "ai_ch", "ao_ch", "ch", "dd", "dd_ch", "e", "e_ch", "ei_ch", "ff", "ff_ch", "i", "i_ch", "kk", "kk_ch", "ll_ch", "nn", "o", "o_ch", "ou_ch", "pp", "pp_ch", "rr", "ss", "th", "u", "u_ch", "v_ch", "z_ch", "zh_ch" 键。表情:6种表情的权重值,对应输出的"Anger-01_Sternness", "Disgust-01_Disdain", "Fear-01_Concern", "Joy-01_Satisfaction", "Sadness-01_Dejection", "Surprise-01_Alertness"键。
动作:15个动作的触发序列,对应输出的‘trigger'键。
