文字转语音TTS工具,开源可本地或云端部署:GPT-SoVITS

本文介绍了如何在AutoDL平台上利用WebUI进行GPT-SoVITS的中文语音合成,包括数据预处理、微调训练以及通过官方和用户提供的API进行推理的过程。作者还提到了使用GPT-SoVITS替代OpenAITTS的解决方案和参考的网络资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

诸神缄默不语-个人CSDN博文目录

OpenAI官方的TTS模型我在这篇博文中给出了使用教程:ChatGPT 3.5 API的调用不全指南(持续更新ing…) - 知乎

但是OpenAI的TTS对中文支持不好,有一种老外说中文的美,所以本文介绍另一个工具GPT-SoVITS。
主要功能是提供声音示例进行微调或者直接少样本生成。

GitHub仓库:https://github.com/RVC-Boss/GPT-SoVITS
中文文档:https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/cn/README.md
详细的官方教程:GPT-SoVITS指南

目前本博文仅更新了在AutoDL云服务器上直接用WebUI实现数据预处理、微调和测试,以及获得模型权重后如何调用API进行推理(仅更新了使用官方提供的api.py服务的方案)的简洁教程,更多细节请静待后续更新!

1. 直接用WebUI:AutoDL版

这一部分主要参考官方教程中的:AutoDL教程(只要几块钱,方便)

官方提供了一个搭好的社区环境,可以在AutoDL上租个云服务器直接用。直接用这个环境创建实例即可:https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official

打开AutoPanel绑定百度网盘(或者阿里云盘)
下载微调数据(我在这里上传了一个mp4文件)
AutoDL公网网盘帮助文档:https://www.autodl.com/docs/netdisk/

AutoPanel也可以在后续工作流程中检测服务器的内存啊之类的用

打开JupyterLab运行如下代码打开WebUI:echo {}> ~/GPT-SoVITS/i18n/locale/en_US.json && source activate GPTSoVits && cd ~/GPT-SoVITS/ && python webui.py
打开public URL

1. 处理数据集

在这里插入图片描述

开启UVR5-WebUI实现人声分离:
在这里插入图片描述
这一步我没做是因为我的训练数据很干净。所以我跳过了这一步。如果以后要用到这一步我再补充本博文内容。
处理完记得把UVR5关了。

输入上传音频的路径:/root/autodl-tmp/test_tts.mp4
输出前面也要加/root/(也就是说得用绝对路径):/root/output/slicer_opt

开启语音切割

这一步后得到了一堆wav文件,每个文件是切出的小片音频。

ASR(语音转文字)自动打标:
输入文件夹就是那个输出文件夹。输出文件夹依然要加/root/
开启批量ASR

这一步后得到一个list文件,是每个音频对应的自动识别的文字

还有一步是校对,就是打开自动标注结果在标注工具中进行校对。这里因为我懒得搞了所以暂时省略,下次可能会补。

2. 微调训练

1. 训练集格式化工具

在这里插入图片描述
不能使用中文

文本标注文件,使用处理后的结果:/root/output/asr_opt/slicer_opt.list
训练集音频文件目录,使用处理后的结果:/root/output/slicer_opt
直接开启一键三连就可以
结束时会显示一键三连进程结束
在这里插入图片描述

2. 微调训练

开启SoVITS训练(这个比较快啦,我1小时的视频切出647个音频文件,训练1个epoch不到1分钟)
输出SoVITS训练完成结束

在这里插入图片描述

(GPT训练也差不多,但是GPT训练会慢一些)

3. 网页推理

开启TTS推理WebUI
在这里插入图片描述

在终端中打开新的网页

上传参考音频(建议使用训练集中的音频)
填写需要合成的文本
切分随便选
点击“合成语音”

在这里插入图片描述

2. 训练好模型后调用API推理

2.1 官方API服务挂起

如果在AutoDL上需要先激活环境:conda activate GPTSoVits
cd GPT-SoVITS

部署服务:
python api.py -dr "/root/autodl-tmp/output/slicer_opt/test_tts.mp4_0000070720_0000172160.wav" -dt "喂?喂?哦可以,开始" -dl "zh"

https://github.com/RVC-Boss/GPT-SoVITS/issues/938

用requests模拟本地的GET调用(在4090上计时约3秒):

import requests
import time

# 设置请求的URL和参数
url = "http://127.0.0.1:9880"
params = {
    'text': '先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。',
    'text_language': 'zh'
}

# 记录开始时间
start_time = time.time()

# 发送GET请求
response = requests.get(url, params=params)

# 检查请求是否成功
if response.status_code == 200:
    # 打开一个文件用于写入
    with open('output.wav', 'wb') as file:
        file.write(response.content)
    print("文件已下载到本地")
else:
    print(f"请求失败,错误代码:{response.status_code}")

# 记录结束时间并计算运行时长
end_time = time.time()
elapsed_time = end_time - start_time
print(f"总运行时长:0.0597秒")

2.2 其他用户提供的服务

  1. ben0oil1/GPT-SoVITS-Server: 【脱离复杂的环境配置和整合包,极简配置推理服务】从GPT-SoVITS项目里面提取出来的,纯粹的推理服务方案。
  2. GPT-soVITS-Inference

3. 本文撰写过程中参考的其他网络资料

  1. 官方视频教程:耗时两个月自主研发的低成本AI音色克隆软件,免费送给大家!【GPT-SoVITS】_哔哩哔哩_bilibili
    有教程和效果展示,还有简单的原理讲解,讲了一下SoVITS模型,GPT-SoVITS是用CotentVec替代了SoftVC
<think>好的,我现在需要回答用户关于是否存在类似DeepSeek与摄像头交互的产品开源项目的问题。用户是Java后端程序员,有一定前端基础,正在调研开发一个辅助盲人的实时对话系统。首先,我需要回想之前的对话内容,用户已经询问了所需技术,现在想知道是否有现成的类似方案。 首先,我应该考虑现有的商业产品和开源项目。商业产品方面,像微软的Seeing AI是一个明显的例子,它专门为视障人士设计,使用摄像头进行场景描述。还有Be My Eyes,虽然主要依赖志愿者,但结合AI后可能有类似功能。OrCam MyEye也是直接帮助视障人士的设备,可能符合用户的需求。 接下来是开源项目,可能需要查找GitHub上的相关项目。比如,OpenCV结合TensorFlowPyTorch的物体检测项目,者使用Whisper、Vosk进行语音识别的例子。Hugging Face可能有结合多模态模型的应用,如BLIPLLaVA。这些项目虽然不完全是用户想要的,但可以作为基础进行修改。 然后,需要分析用户的需求核心:实时摄像头交互、多模态对话、无障碍设计。现有的产品可能在某个方面有优势,比如Seeing AI的场景描述,但可能没有DeepSeek的对话功能。开源项目则可能提供模块化的组件,用户需要自己集成和调整。 用户可能需要知道这些现有方案的优缺点,以及如何借鉴集成到自己的项目中。例如,使用Seeing AI的部分设计思路,结合DeepSeek的API实现更自然的对话。同时,开源项目可以作为技术参考,帮助用户快速搭建基础功能,而不必从零开始。 还需要考虑技术实现上的差异,比如现有的开源项目可能使用不同的AI模型,用户需要将其替换为DeepSeek的接口。此外,实时性和延迟是需要关注的问题,可能需要优化视频流处理和API调用的效率。 最后,应该总结现有资源和可能的路径,帮助用户决定是借鉴现有方案还是自行开发。同时提醒用户注意隐私和延迟等实际问题,确保项目可行性和实用性。</think>目前市场上已有部分类似功能的商业产品和开源项目,但具体实现方式和深度学习的结合程度各有不同。以下是详细对比分析: --- ### **一、成熟商业产品参考** #### 1. **微软Seeing AI**(最接近需求) - **功能**:实时摄像头扫描→描述场景/人脸/货币/文字 - **技术特点**: - 使用Azure Custom Vision定制图像识别模型 - 离线优先设计(隐私保护) - 定向语音提示("左前方3米有人站立") - **参考价值**:https://www.microsoft.com/en-us/ai/seeing-ai #### 2. **Be My Eyes + OpenAI**(多模态交互) - **功能**:志愿者协助+GPT-4V实时分析画面 - **技术架构**: ```mermaid graph LR 手机摄像头 --视频流--> OpenAI[GPT-4V] OpenAI --文本描述--> TTS[语音合成] TTS --> 用户 ``` - **局限**:依赖云端处理,延迟较高(平均2-3秒) #### 3. **OrCam MyEye**(硬件级方案) - **特性**:可穿戴设备,实时OCR和物体识别 - **技术栈**: - 嵌入式ARM处理器 - 定制轻量化YOLO模型 - 骨传导音频输出 - **官网**:https://www.orcam.com/ --- ### **二、开源项目资源** #### 1. **视觉-语言多模态项目** - **BLIP-2**(Hugging Face) - 支持图像描述生成和问答 -本地部署(需至少16GB显存) ```python from transformers import Blip2Processor, Blip2ForConditionalGeneration processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b") model = Blip2ForConditionalGeneration.from_pretrained("Salesforce/blip2-opt-2.7b") ``` - **LLaVA**(视觉助手) - 结合CLIP视觉编码器和Vicuna语言模型 - 项目地址:https://github.com/haotian-liu/LLaVA #### 2. **实时视频处理框架** - **MediaPipe**(Google开源- 提供即用型物体检测、姿态估计pipeline - Java/Kotlin支持示例: ```java // Android摄像头接入示例 CameraInput cameraInput = new CameraInput(this); cameraInput.setNewFrameListener(textureFrame -> { Bitmap bitmap = textureFrame.getBitmap(); // 发送到推理模型 }); ``` - **OpenCV Zoo**(预训练模型库) - 包含人脸识别、文字检测等现成模型 - 部署文档:https://github.com/opencv/opencv_zoo #### 3. **语音交互方案** - **Rhasspy**(离线智能家居助手) - 集成ASR/TTS和意图识别 - 支持自定义唤醒词 - 项目地址:https://rhasspy.readthedocs.io/ --- ### **三、可复用代码片段** #### 1. **实时视频流+GPT-4V交互**(Python示例) ```python import cv2 import openai def analyze_frame(frame): _, img_bytes = cv2.imencode('.jpg', frame) response = openai.ChatCompletion.create( model="gpt-4-vision-preview", messages=[{ "role": "user", "content": [ {"type": "text", "text": "描述当前画面并指出潜在危险"}, {"type": "image_url", "image_url": f"data:image/jpeg;base64,{base64.b64encode(img_bytes).decode()}"} ] }] ) return response.choices[0].message.content # 主循环中调用 while cap.isOpened(): ret, frame = cap.read() description = analyze_frame(frame) text_to_speech(description) # 接入TTS引擎 ``` #### 2. **Android摄像头连续捕获**(Java示例) ```java public class CameraActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { private CameraBridgeViewBase mOpenCvCameraView; @Override public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { Mat rgba = inputFrame.rgba(); // 每30帧处理一次(约1秒) if (frameCount % 30 == 0) { new AsyncTask<Mat, Void, String>() { protected String doInBackground(Mat... frames) { return DeepSeekAPI.analyze(frames[0]); } protected void onPostExecute(String result) { speak(result); // 调用TTS } }.execute(rgba.clone()); } return rgba; } } ``` --- ### **四、关键差异与改进空间** 1. **现有方案不足**: - 商业产品封闭性强,无法接入DeepSeek模型 - 开源项目多为单点技术(仅视觉语音- 缺乏完整的"感知-分析-对话"闭环 2. **您的创新点建议**: - **情境化对话**:结合地理位置和用户历史偏好(如"您常走的XX路当前施工") - **多传感器融合**:加入IMU数据判断用户姿态(上楼梯时增加安全提醒频率) - **渐进式细节**:优先播报关键信息(障碍物),再补充环境描述 建议以Seeing AI为交互设计参考,结合DeepSeek的对话优势,采用Rhasspy+MediaPipe构建基础框架,逐步替换为自研模块。可以先fork类似项目(如LLaVA)在其基础上修改视觉编码器接入DeepSeek API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

诸神缄默不语

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

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

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

打赏作者

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

抵扣说明:

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

余额充值