数字人实时对话的实现过程
一、直播间实时对话
1、实现数字人功能
-
下载开源离线安装包(已有)
链接:https://pan.baidu.com/s/1Nquxl3-yej5nl9POv5usqw
提取码:unf2 -
准备素材 (图片+视频)
-
测试功能
2、爬取视频弹幕(获取输入)
- 编写爬虫脚本,获取弹幕
import requests
import json
def crawl_danmu(video_url):
# 添加请求头,模拟浏览器请求
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
}
# 发送带有请求头的请求
response = requests.get(video_url, headers=headers)
if response.status_code != 200:
print("Failed to fetch the webpage.")
return
# 获取弹幕数据的接口地址
cid_api = "https://api.bilibili.com/x/player/pagelist?bvid=" + video_url.split("/")[4]
cid_response = requests.get(cid_api, headers=headers)
cid_data = json.loads(cid_response.text)
cid = cid_data["data"][0]["cid"]
danmu_api = "https://api.bilibili.com/x/v1/dm/list.so?oid=" + str(cid)
# 发送请求获取弹幕数据
danmu_response = requests.get(danmu_api, headers=headers)
danmu_response.encoding = 'utf-8' # 设置编码为 utf-8,确保可以正确解析中文字符
if danmu_response.status_code != 200:
print("Failed to fetch the danmu.")
return
# 解析弹幕数据并打印
danmu_list = danmu_response.text.split("</d><d p=")[1:]
for danmu in danmu_list:
content = danmu.split(">")[1].split("<")[0]
print(content)
# 将视频链接替换为您要爬取的视频链接
video_url = "https://www.bilibili.com/video/BV1qy4y1x7aW"
# 调用函数获取弹幕
crawl_danmu(video_url)
- 保存爬取数据为txt文本,进行整理
3、回复输入及应答
-
链接chatgpt的api(第一种)
-
将获取输入链接给chatgpt,并逐条回复文本(第二种)
- 写python脚本将txt文本输入到cha'tgpt输入框中,点回车
-
获取chatgpt回答的文本内容
-
将文字输入给模块一,实现数字人实时对话功能
note:直播和实时对话要调延迟