AI孙燕姿项目实现

最近在b站刷到很多关于ai孙笑川唱的歌曲,加上最近大火的ai孙燕姿,
这下“冷门歌手”整成热门歌手了

于是写下一篇文章, 如何实现属于的ai歌手。
注意滥用ai,侵犯他人的名誉是要承担法律责任的

在这里插入图片描述
下面是一些所需的文件链接:
sovits:github.com/svc-develop-team/so-vits-svc
一鍵包:www.bilibili.com/video/BV1Cc411H74D/
UVR5:www.bilibili.com/video/BV1ga411S7gP/

RX Audio Editor
123盤:www.123pan.com/s/RiyA-LjS03
夸克網盤:pan.quark.cn/s/f9791f6790d3
百度網盤:pan.baidu.com/s/1xUXd9vVHR11sjJ6wCVuwHQ?pwd=hjhj 提取碼: hjhj

Audio Slicer:
Github鏈接:github.com/flutydeer/audio-slicer/blob/main/README.zh-CN.md

整个项目的使用,从深度学习角度来说,可以分为模型推理和模型训练。

  • 第一种,我们可以用已有的ai歌手模型直接进行推理,输出
  • 第二种,自己训练一个ai歌手模型

对于模型推理,对电脑性能要求不高,但是模型训练,对显卡要求挺高

本项目主要使用的是So-VITS-SVC 4.0这个项目,github地址是:https://github.com/svc-develop-team/so-vits-svc

本地项目实现

1.软件安装

sovits:github.com/svc-develop-team/so-vits-svc

解压后,找到webui.bat(这就是我们ai合成的工具)

2.准备数据集

注意数据集质量比数量更重要,如果要训练一个歌手,最好的方法就是下载他的唱的歌,下载高品质的音乐,除了歌手,还可以考虑采访的,直播的

做过语音处理的应该知道,语音数据需要经过一些处理,这里用UVR5软件提取出音乐的人声

具体实现

打开软件后,把需要提取的视频,拖到select input,文件最好用wav,设置输出路径select Output(随意),其余的参数,可以看下图
然后点击start processing,运行
在这里插入图片描述

处理完,还可以用RX Audio Editor(音频切片机)进一步处理,类似于做语音处理的,预加重,去燥,也可以用代码去实现

下载RX Audio Editor后解压,找到slicer-gui双击运行,将刚才处理好的,导入到其中,设置输出路径,输出完,把文件放到sovits目录下的dataset_raw
在这里插入图片描述

3.开始训练 (本地训练)

打开webui
点击识别数据集
然后点击数据预处理

在这里插入图片描述
往下看输出的信息,当看到100%,证明数据已经加载完毕了
在这里插入图片描述

配置自己的训练超参数,信息,然后点击从头开始训练
在这里插入图片描述

4.模型推理

回头推理界面,选择G开头的模型。选择配置文件,之后上传要转化的视频

在这里插入图片描述
设置音色变调
男转女 设置为5~8,女转男 -5~-8

在这里插入图片描述

接着直接点转换
在这里插入图片描述

如果音色不太好,可能就是模型训练,迭代次数少了,可以继续上次训练。跟深度学习模型训练原理一样

云端项目实现

跟上面处理数据集一样,把数据集压缩后,上传到云上的sovits项目地址的dataset_raw文件夹下,用命令unzip解压

云端项目实现的流程,在项目文件的reame-v4.ipynb里有详细说明了

在这里插入图片描述
按照这个jupyter notebook上面的步骤运行就行了

⚠️

这个github项目最后有一段关于模型使用的说明,以后ai的使用一定也会越来规范,不会滥用
在这里插入图片描述

### 基于深度学习的人脸识别签到系统的APP设计与实现 #### 一、设计背景与目标 随着人工智能技术的发展,人脸识别技术逐渐成熟并在多个领域得到广泛应用。本项目旨在设计并实现一个基于深度学习的人脸识别签到系统,用于学校、公司等场所的考勤管理。该系统能够自动识别进入人员的身份,并记录签到信息,提高签到效率和准确性。 #### 二、技术选型 1. **深度学习框架**:PaddlePaddle 2. **图像处理库**:OpenCV-Python, Pillow 3. **Web框架**:Flask 4. **数据库**:SQLite 5. **前端技术**:HTML, CSS, JavaScript 6. **其他**:NumPy, Pandas #### 三、系统架构 1. **数据采集模块**: - 使用摄像头采集人脸图像。 - 利用OpenCV进行图像预处理,如灰度化、归一化等。 2. **模型训练模块**: - 收集并标注大量人脸图像数据。 - 使用PaddlePaddle训练卷积神经网络(CNN)模型,提取人脸特征。 3. **人脸识别模块**: - 加载训练好的模型,实时检测和识别摄像头捕获的人脸。 - 利用Pillow进行图像处理,提高识别精度。 4. **签到管理模块**: - 将识别结果与数据库中的用户信息进行比对,确认身份。 - 记录签到时间和地点,生成签到日志。 5. **Web接口模块**: - 使用Flask搭建Web服务器,提供API接口。 - 前端页面使用HTML、CSS、JavaScript实现用户交互。 6. **数据库管理模块**: - 使用SQLite存储用户信息、签到记录等数据。 - 提供数据查询和统计功能。 #### 四、核心功能实现 1. **数据采集**: ```python import cv2 def capture_face(): cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break # 进行人脸检测 faces = detect_faces(frame) for (x, y, w, h) in faces: face_image = frame[y:y+h, x:x+w] # 保存人脸图像 cv2.imwrite('faces/face_{}.jpg'.format(time.time()), face_image) cv2.imshow('Capture Face', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 2. **模型训练**: ```python import paddle from paddle.vision import transforms from paddle.io import Dataset, DataLoader class FaceDataset(Dataset): def __init__(self, data_dir, transform=None): self.data_dir = data_dir self.transform = transform self.image_paths = glob.glob(os.path.join(data_dir, '*.jpg')) self.labels = [int(path.split('/')[-1].split('_')[0]) for path in self.image_paths] def __len__(self): return len(self.image_paths) def __getitem__(self, idx): image_path = self.image_paths[idx] label = self.labels[idx] image = Image.open(image_path).convert('RGB') if self.transform: image = self.transform(image) return image, label transform = transforms.Compose([ transforms.Resize((128, 128)), transforms.ToTensor(), transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) ]) dataset = FaceDataset('faces', transform=transform) dataloader = DataLoader(dataset, batch_size=32, shuffle=True) model = paddle.vision.models.resnet18(pretrained=True) num_ftrs = model.fc.in_features model.fc = paddle.nn.Linear(num_ftrs, num_classes) criterion = paddle.nn.CrossEntropyLoss() optimizer = paddle.optimizer.Adam(parameters=model.parameters(), learning_rate=0.001) for epoch in range(num_epochs): for images, labels in dataloader: outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() optimizer.clear_grad() ``` 3. **人脸识别**: ```python def recognize_face(model, image_path): image = Image.open(image_path).convert('RGB') image = transform(image).unsqueeze(0) with paddle.no_grad(): output = model(image) _, predicted = paddle.max(output, 1) return predicted.item() ``` 4. **签到管理**: ```python import sqlite3 def add_sign_in(user_id, time, location): conn = sqlite3.connect('sign_in.db') c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS sign_ins (id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, time TEXT, location TEXT)''') c.execute("INSERT INTO sign_ins (user_id, time, location) VALUES (?, ?, ?)", (user_id, time, location)) conn.commit() conn.close() def get_sign_in_history(user_id): conn = sqlite3.connect('sign_in.db') c = conn.cursor() c.execute("SELECT * FROM sign_ins WHERE user_id = ?", (user_id,)) history = c.fetchall() conn.close() return history ``` 5. **Web接口**: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/recognize', methods=['POST']) def recognize(): file = request.files['image'] image_path = 'temp.jpg' file.save(image_path) user_id = recognize_face(model, image_path) os.remove(image_path) return jsonify({'user_id': user_id}) @app.route('/sign_in', methods=['POST']) def sign_in(): user_id = request.form['user_id'] time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') location = request.form['location'] add_sign_in(user_id, time, location) return jsonify({'status': 'success'}) @app.route('/history/<user_id>', methods=['GET']) def history(user_id): history = get_sign_in_history(int(user_id)) return jsonify(history) if __name__ == '__main__': app.run(debug=True) ``` #### 五、总结与体会 1. **周杰伦**: - 主要负责数据采集模块的实现。 - 遇到的问题:摄像头图像采集不稳定。 - 解决方法:增加图像预处理步骤,提高图像质量。 2. **孙燕姿**: - 主要负责模型训练模块的实现。 - 遇到的问题:模型过拟合。 - 解决方法:引入数据增强和正则化技术,提高模型泛化能力。 3. **林夕**: - 主要负责人脸识别模块的实现。 - 遇到的问题:识别速度慢。 - 解决方法:优化模型结构,减少计算量。 4. **莫文蔚**: - 主要负责签到管理模块的实现。 - 遇到的问题:数据库连接异常。 - 解决方法:增加异常处理机制,确保数据安全。 5. **张学友**: - 主要负责Web接口模块的实现。 - 遇到的问题:API接口响应慢。 - 解决方法:优化代码逻辑,减少不必要的计算。 通过本次项目,我们不仅掌握了深度学习和人脸识别技术的应用,还提高了团队协作能力和问题解决能力。未来,我们将继续探索更多的人工智能应用场景,为社会带来更多的便利。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T1.Faker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值