记录Docker部署CosyVoice V2.0声音克隆

news2025/7/15 8:23:23

#记录工作

CosyVoice 是由 FunAudioLLM 团队开发的一个开源多语言大规模语音生成模型,提供了从推理、训练到部署的全栈解决方案。

项目地址:

https://github.com/FunAudioLLM/CosyVoice.git

该项目目前从v1.0版本迭代到v2.0版本,但是在Windows中的部署多半情况下并不会顺利。因为项目依赖的很多包在windows系统上的适配性并不好,比如:

pynini

ttsfrd

Matcha-TTS

WeTextProcessing

 等包,我分别通过python310、python311、python312三种虚拟环境部署,效果不是很满意,

所以,建议还是使用WSL或者Docker部署,

因为这起码在网络通畅的情况下不会遭遇一些奇怪的报错输出。

先上结果:

以下是通过Docker部署CosyVoice V2.0的记录:

(.venv) F:\PythonProjects\CosyVoice\runtime\python git:[main] docker build -t cosyvoice:v2.0 .

[+] Building 1158.5s (13/13) FINISHED                                                                                                    docker:desktop-linux 
 => [internal] load build definition from Dockerfile                                                                                                     0.0s 
 => => transferring dockerfile: 768B                                                                                                                     0.0s 
 => [internal] load metadata for docker.io/pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime                                                                 0.3s 
 => [internal] load .dockerignore                                                                                                                        0.0s 
 => => transferring context: 2B                                                                                                                          0.0s 
 => [1/9] FROM docker.io/pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime@sha256:82e0d379a5dedd6303c89eda57bcc434c40be11f249ddfadfd5673b84351e806           0.0s 
 => => resolve docker.io/pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime@sha256:82e0d379a5dedd6303c89eda57bcc434c40be11f249ddfadfd5673b84351e806           0.0s 
 => CACHED [2/9] WORKDIR /opt/CosyVoice                                                                                                                  0.0s 
 => CACHED [3/9] RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list                                                          0.0s 
 => CACHED [4/9] RUN apt-get update -y                                                                                                                   0.0s 
 => CACHED [5/9] RUN apt-get -y install git unzip git-lfs g++                                                                                            0.0s 
 => CACHED [6/9] RUN git lfs install                                                                                                                     0.0s 
 => [7/9] RUN git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git                                                                        32.0s 
 => [8/9] RUN cd CosyVoice && pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com            779.2s
 => [9/9] RUN cd CosyVoice/runtime/python/grpc && python3 -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. cosyvoice.proto                    0.6s
 => exporting to image                                                                                                                                 343.6s 
 => => exporting layers                                                                                                                                302.9s 
 => => exporting manifest sha256:06b7276ad763946f8db509d077a1475916067228c8b61f244cc20a5ef876f341                                                        0.0s 
 => => exporting config sha256:d72dd119f99b66b0ce4e0325cc653b143e3001a5a7496c3666de8cf44d7b71c4                                                          0.0s 
 => => exporting attestation manifest sha256:8e195ae249a98138698b38b9d4284b5d0797e74782287fefa459d868be056791                                            0.0s 
 => => exporting manifest list sha256:9be1dd1c1b03e833be844595847b6d59df3e63853713f04f8a9cd0db5a303b0a                                                   0.0s 
 => => naming to docker.io/library/cosyvoice:v2.0                                                                                                        0.0s 
 => => unpacking to docker.io/library/cosyvoice:v2.0                                                                                                    40.6s 

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/uifq2oi2pl4uuxr7sosu7nnqs

 

(.venv) F:\PythonProjects\CosyVoice\runtime\python git:[main] docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v2.0 /bin/bash -c "cd /opt/CosyVoice/CosyVoice/runtime/python/grpc && python3 server.py --port 50000 --max_conc 4 --model_dir iic/CosyVoice-300M && sleep infinity"
97b59dd3d047792b0649da7e768b15d022bb6f64e188d54e2fb14d0aa1e42295
访问http://localhost:50000

 可以看到,整个过程还是比较顺利,没有了手动解决依赖的烦恼。

 以下是通过Docker部署CosyVoice V2.0的详细步骤:

 项目官方主页里有Docker部署教程,不过是部署V1.0版本的命令,要部署V2.0版本需要修改下版本号再行部署

1、启动Docker容器,启动稳定后待命;

2、克隆存储库

#克隆项目到本地
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git

3、进入项目目录

#进入项目目录
cd CosyVoice

4、初始化并更新所有子模块

#初始化并更新所有子模块
git submodule update --init --recursive

5、进入Docker文件所在目录

进入Docker文件所在目录
cd runtime/python

6、运行 Docker命令构建容器

docker build -t cosyvoice:v2.0 .

7、下载模型

在项目目录下新建一个.py文件并命名为“python download_models.py”,然后粘贴以下代码:

#命名为:
python download_models.py

 该文件内容如下:

from modelscope import snapshot_download
snapshot_download('iic/CosyVoice-300M', local_dir='pretrained_models/CosyVoice-300M')
snapshot_download('iic/CosyVoice-300M-SFT', local_dir='pretrained_models/CosyVoice-300M-SFT')
snapshot_download('iic/CosyVoice-300M-Instruct', local_dir='pretrained_models/CosyVoice-300M-Instruct')
snapshot_download('iic/CosyVoice-ttsfrd', local_dir='pretrained_models/CosyVoice-ttsfrd')

然后运行该python download_models.py文件来自动下载模型,等全部模型下载完毕后,可以启动容器以运行CosyVoice声音克隆。
 

 

8、镜像构建完成后运行容器

英伟达显卡用户:

docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v2.0 /bin/bash -c "cd /opt/CosyVoice/CosyVoice/runtime/python/grpc && python3 server.py --port 50000 --max_conc 4 --model_dir iic/CosyVoice-300M && sleep infinity"

 非NVIDIA用户请看第9条中的命令

 9、浏览器访问

http://localhost:50000

10、相关命令注解

# 进入包含Dockerfile的目录
cd runtime/python

# 使用当前目录下的Dockerfile构建一个名为cosyvoice:v2.0的Docker镜像
docker build -t cosyvoice:v2.0 .

# 如果你想使用instruct推理模式,将iic/CosyVoice-300M改为iic/CosyVoice-300M-Instruct

# 使用grpc方式运行服务
# 在后台运行一个Docker容器,使用NVIDIA运行时,将容器的50000端口映射到宿主机的50000端口
# 容器中运行的命令会启动一个gRPC服务器,端口为50000,最大并发数为4,模型目录为iic/CosyVoice-300M
docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v2.0 /bin/bash -c "cd /opt/CosyVoice/CosyVoice/runtime/python/grpc && python3 server.py --port 50000 --max_conc 4 --model_dir iic/CosyVoice-300M && sleep infinity"

# 进入grpc目录并运行客户端进行测试
cd grpc && python3 client.py --port 50000 --mode <sft|zero_shot|cross_lingual|instruct>

# 使用fastapi方式运行服务
# 在后台运行一个Docker容器,使用NVIDIA运行时,将容器的50000端口映射到宿主机的50000端口
# 容器中运行的命令会启动一个FastAPI服务器,端口为50000,模型目录为iic/CosyVoice-300M
docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v2.0 /bin/bash -c "cd /opt/CosyVoice/CosyVoice/runtime/python/fastapi && python3 server.py --port 50000 --model_dir iic/CosyVoice-300M && sleep infinity"

# 进入fastapi目录并运行客户端进行测试
cd fastapi && python3 client.py --port 50000 --mode <sft|zero_shot|cross_lingual|instruct>

命令解释

• `cd runtime/python`:

切换到包含Dockerfile的目录。

• `docker build -t cosyvoice:v2.0 .`:

基于当前目录下的Dockerfile构建一个新的Docker镜像,标签为`cosyvoice:v2.0`。

• `docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v2.0 ...`:

运行一个Docker容器,使用NVIDIA运行时以便利用GPU加速,并将容器的50000端口映射到宿主机的50000端口。容器中运行的命令会启动一个服务(gRPC或FastAPI),并保持运行状态。

• `cd grpc && python3 client.py --port 50000 --mode ...`:

切换到grpc目录并运行客户端脚本,连接到本地运行的服务进行测试。

• `cd fastapi && python3 client.py --port 50000 --mode ...`:

切换到fastapi目录并运行客户端脚本,连接到本地运行的服务进行测试。

这些命令用于构建和运行一个语音合成服务的Docker容器,并通过gRPC或FastAPI接口进行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2337034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MCU刷写——HEX与S19文件互转详解及Python实现

工作之余来写写关于MCU的Bootloader刷写的相关知识,以免忘记。今天就来聊聊Hex与S19这这两种文件互相转化,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问,可底下评论! 如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走…

全链路开源数据平台技术选型指南:六大实战工具链解析

在数字化转型加速的背景下&#xff0c;开源技术正重塑数据平台的技术格局。本文深度解析数据平台的全链路架构&#xff0c;精选六款兼具创新性与实用性的开源工具&#xff0c;涵盖数据编排、治理、实时计算、联邦查询等核心场景&#xff0c;为企业构建云原生数据架构提供可落地…

Dify智能体平台源码二次开发笔记(5) - 多租户的SAAS版实现(2)

目录 前言 用户的查询 controller层 添加路由 service层 用户的添加 controller层 添加路由 service层-添加用户 service层-添加用户和租户关系 验证结果 结果 前言 完成租户添加功能后&#xff0c;下一步需要实现租户下的用户管理。基础功能包括&#xff1a;查询租…

Linux的目录结构(介绍,具体目录结构)

目录 介绍 具体目录结构 简洁的目录解释 详细的目录解释 介绍 Linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构的最上层是根目录“/”。Linux的世界中&#xff0c;一切皆文件&#xff08;比如&#xff1a;Linux会把硬件映射成文件来管理&#xff09; 具体目…

如何用 esProc 补充数据库 SQL 的缺失能力

某些数据库 SQL 缺失必要的能力&#xff0c;通常要编写大段的代码&#xff0c;才能间接实现类似的功能&#xff0c;有些情况甚至要改用存储过程&#xff0c;连结构都变了。常见的比如&#xff1a;生成时间序列、保持分组子集、动态行列转换、自然序号、相对位置、按序列和集合生…

晶晨线刷工具下载及易错点说明:Key文件配置错误/mac剩余数为0解决方法

晶晨线刷工具下载及易错点说明&#xff1a;Key文件配置错误&#xff0f;mac剩余数为0解决方法 各种版本晶晨线刷工具下载&#xff1a; 晶晨线刷工具易出错点故障解决方法&#xff1a; 1、晶晨线刷工具加载固件的时候提示mac红字且剩余数为0的解决办法 很多同学可能会与遇到加…

论文阅读:Invertible Grayscale

这是一篇 ACM Transactions on Graphic 上的文章&#xff0c;这篇文章中介绍的应用还挺有意思的&#xff0c;关于可逆的图像灰度化。 Abstract 一旦彩色图像被转换为灰度图像&#xff0c;人们普遍认为&#xff0c;即使采用最先进的彩色化方法&#xff0c;原始颜色也无法完全恢…

关于ResNet和FPN的一份介绍

在这篇文章中我将介绍ResNet和FPN这两个深度学习中重要的技术。 一、ResNet-50/101 首先我们先来看ResNet技术&#xff1a; 1.1 概述 ResNet技术是基于残差学习&#xff0c;引入Bottleneck技术以及Shortcut Connection技术&#xff0c;而去解决神经网络中的退化问题。 1.2…

AI大模型学习九:‌Sealos cloud+k8s云操作系统私有化一键安装脚本部署完美教程

一、说明 ‌Sealos‌是一款基于Kubernetes&#xff08;K8s&#xff09;的云操作系统发行版&#xff0c;它将K8s以及常见的分布式应用如Docker、Dashboard、Ingress等进行了集成和封装&#xff0c;使得用户可以在不深入了解复杂的K8s底层原理的情况下&#xff0c;快速搭建起一个…

详解关于VS配置好Qt环境之后但无法打开ui界面

目录 找到Qt安装目录中designer.exe的路径 找到vs中的解决方案资源管理器 右键ui文件&#xff0c;找到打开方式 点击添加 然后把前面designer.exe的路径填到程序栏中&#xff0c;点击确定 然后设置为默认值&#xff0c;并点击确定 当在vs中配置好Qt环境之后&#xff0c;但…

【深度学习与大模型基础】第9章-条件概率以及条件概率的链式法则

简单理解条件概率 条件概率就是在已知某件事发生的情况下&#xff0c;另一件事发生的概率。用数学符号表示就是&#xff1a; P(A|B) 在B发生的前提下&#xff0c;A发生的概率。 计算机例子&#xff1a;垃圾邮件过滤 假设你写了一个程序来自动判断邮件是否是垃圾邮件&#xf…

STM32-FreeRTOS的详细配置

配置FreeRTOS 原文链接&#xff1a;https://ydamooc.github.io/posts/c9defcd/ 1.1 下载FreeRTOS 打开FreeRTOS官网&#xff1a;https://www.freertos.org/ 点击下载&#xff0c;并且选择"FreeRTOS 202212.01"版本&#xff0c;再点击Download按钮下载官方的资源包…

视觉自回归图像生成:基于多模态大模型的万字深度梳理

目前利用多模态大模型进行图像生成主要有以下两种形式&#xff1a; LLM作为condtioner&#xff1a;利用MLLM依据用户输入的text prompt来生成条件信息&#xff0c;条件信息被注入到下游生成模型进行更精细化的生成控制。这种形式通常需要外接一个额外专门的多模态生成模型&…

openssh离线一键升级脚本分享(含安装包)

查看当前的版本 [rootmyoracle ~]#ssh -V相关安装包下载地址 openssh下载地址&#xff1a;http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssl下载地址&#xff1a;https://www.openssl.org/source/zlib下载地址&#xff1a;http://www.zlib.net/今天演示从7.4升级…

音视频之H.265/HEVC预测编码

H.265/HEVC系列文章&#xff1a; 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 预测编码是视频编码中的核心技术之一。对于视频信号来说&#xff0c;一幅图像内邻近像素之间有着较强的空间相关性,相邻图像之…

Python异步编程入门:Async/Await实战详解

引言 在当今高并发的应用场景下&#xff0c;传统的同步编程模式逐渐暴露出性能瓶颈。Python通过asyncio模块和async/await语法为开发者提供了原生的异步编程支持。本文将手把手带你理解异步编程的核心概念&#xff0c;并通过实际代码案例演示如何用异步爬虫提升10倍效率&#…

设计模式每日硬核训练 Day 13:桥接模式(Bridge Pattern)完整讲解与实战应用

&#x1f504; 回顾 Day 12&#xff1a;装饰器模式小结 在 Day 12 中&#xff0c;我们学习了装饰器模式&#xff08;Decorator Pattern&#xff09;&#xff1a; 强调在不改变原类结构的前提下&#xff0c;动态为对象增强功能。通过“包装对象”实现运行时组合&#xff0c;支…

库洛游戏一面+二面

目录 一面 1. ArrayList和LinkedList的区别&#xff0c;就是我在插入和删除的时候他们在时间复杂度上有什么区别 2. hashmap在java的底层是怎么实现的 3. 红黑树的实现原理 4. 红黑树的特点 5. 为什么红黑树比链表查询速度快 6. 在java中字符串的操作方式有几种 7. Stri…

XSS攻击(反射型、存储型、dom型、PDF、SWF、SVG)

一、XSS攻击是什么 XSS是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中 Web 里面的脚本代码会被执行&#xff0c;从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。 二、XSS分类 反射型XSS 常见情况是…

C复习(主要复习)

指针和数组 指针数组是一个数组&#xff0c;数组的每个元素都是指针。它适用于需要存储多个指针的场景&#xff0c;如字符串数组。数组指针是一个指针&#xff0c;指向一个数组。它适用于需要传递整个数组给函数或处理多维数组的场景。 函数指针&#xff1a;函数指针的定义需要…