livetalking的核心功能是能够实时驱动数字人生成视频流,视频流采用webrtc协议,可以在任意支持h5 webview的软件上播放。下面具体聊聊各种具体应用场景。

  1. 输入文字,数字人实时播报
    livetalking内部自带tts功能,支持多种tts服务,包括gptsovirs、cosyvoice、腾讯云tts、火山云tts等。通过内部tts将输入文字转化成实时语音驱动数字人播报。
    具体使用:调用human接口,type选echo,如
/human
{
    ‘text’: ‘hello’,
    ‘type’: 'echo',
    ‘sessionid’:xxx
}

  1. 输入问题,数字人实时回答
    livetalking内部有自带的大模型使用示例,使用阿里云qwen模型,能够接收外部输入文字,生成应答文字。然后用tts生成语音驱动数字人。如果需要更换大模型,只需要修改项目中llm.py,把大模型调用api更换成自己的即可。
    具体使用:调用human接口,type选chat,如
/human
{
    ‘text’: ‘hello’,
    ‘type’: 'chat',
    ‘sessionid’:xxx
}

另外如果需要与数字人实时语音对话,只需要在前端调用asr服务把语音转成文字,然后输入给livetalking即可。

  1. 输入语音,数字人实时播报
    如果外部已经有生成好的语音,也可以直接输入给livetalking驱动数字人实时播报。
    具体使用:调用humanaudio接口,如
/humanaudio
form{
    ‘file’: binary,
    ‘sessionid’:xxx
}

其中body部分为form表单,不是json结构体,并且file字段为二进制数据,示例

fileinput = document.getElementById('fileInput')
const formData = new FormData(); // form-data数据类型
formData.append('file', fileinput.files[0]);// 获取文件信息,添加到创建的formData数据类型中,file为数据的键名
// const audioBlob = new Blob(audioChunks, {type: 'audio/wav'});
// const formData = new FormData();
// formData.append('file', audioBlob,'recorded_audio.wav');
formData.append('sessionid', parseInt(sessionid))
// 调用接口
fetch('/humanaudio', {
        method: 'POST',
        body: formData
    })

如果外部生成的音频是实时流式片段,如外部tts生成的音频流或者音频对话大模型直接生成音频流,可以通过购买扩展功能将音频流用websocket输入给livetalking驱动数字人实时播报。

总结

livetalking内部自带大模型和tts服务的调用,外部可以直接输入文字,用livetalking自带的大模型和tts功能与数字人对话。 也可以用外部的大模型生成文字应答,输入给livetaking,用内部的tts功能让数字人播报文字。 还可以用外部的大模型和tts直接生成音频,输入给livetalking让数字人做语音播报。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐