国内Ubuntu环境Docker部署CosyVoice
国内Ubuntu环境Docker部署CosyVoice
本文旨在记录在 国内
CosyVoice项目在 Ubuntu
环境下如何使用 docker+min-conda
进行一键部署。
源项目地址:
https://github.com/FunAudioLLM/CosyVoice
如果想要使用 docker+python
进行部署,可以参考我另一篇博客中的dockerfile进行修改。
https://blog.csdn.net/qq_36991535/article/details/144872382?spm=1001.2014.3001.5502
你只需要将在 git clone
的项目根目录下创建 docker
文件夹,然后将本文的文件放到docker文件夹内; model_download.py 放到项目根目录下;最后进入docker文件夹,使用docker compose -f compose.yaml up
命令即可一键部署。
文件一览:
- Dockerfile
- compose.yaml
- requirements.txt
- start.sh
- model_download.py
效果,端口8888
:
Dockerfile
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04ARG VENV_NAME="cosyvoice"
ENV VENV=$VENV_NAME
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8ENV DEBIAN_FRONTEN=noninteractive
ENV PYTHONUNBUFFERED=1
SHELL ["/bin/bash", "--login", "-c"]RUN apt-get update -y --fix-missing
RUN apt-get install -y git build-essential curl wget ffmpeg unzip git git-lfs sox libsox-dev && \apt-get clean && \git lfs install# ==================================================================
# conda install and conda forge channel as default
# ------------------------------------------------------------------
# Install miniforge
RUN wget --quiet https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O ~/miniforge.sh && \/bin/bash ~/miniforge.sh -b -p /opt/conda && \rm ~/miniforge.sh && \ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \echo "source /opt/conda/etc/profile.d/conda.sh" >> /opt/nvidia/entrypoint.d/100.conda.sh && \echo "source /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \echo "conda activate ${VENV}" >> /opt/nvidia/entrypoint.d/110.conda_default_env.sh && \echo "conda activate ${VENV}" >> $HOME/.bashrcENV PATH /opt/conda/bin:$PATHRUN conda config --add channels conda-forge && \conda config --set channel_priority strict
# ------------------------------------------------------------------
# ~conda
# ==================================================================RUN conda create -y -n ${VENV} python=3.8
ENV CONDA_DEFAULT_ENV=${VENV}
ENV PATH /opt/conda/bin:/opt/conda/envs/${VENV}/bin:$PATHWORKDIR /workspace
COPY ./requirements.txt ./ENV PYTHONPATH="${PYTHONPATH}:/workspace/CosyVoice:/workspace/CosyVoice/third_party/Matcha-TTS"# RUN git clone --recursive https://github.com/FunAudioLLM/CosyVoice.gitRUN conda activate ${VENV} && conda install -y -c conda-forge pynini==2.1.5
# RUN conda activate ${VENV} && cd CosyVoice && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
RUN conda activate ${VENV} && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.comWORKDIR /workspace/CosyVoice
compose.yaml
services:cosyvoice:container_name: cosyvoiceimage: cosyvoice:1.0restart: alwaysports:- 8888:8888environment:- TZ=Asia/Tokyo- NVIDIA_VISIBLE_DEVICES=allvolumes:- ../../CosyVoice:/workspace/CosyVoice# command: tail -f /dev/nullcommand: sh -c "docker/start.sh"deploy:resources:reservations:devices:- driver: nvidiacapabilities: [gpu]
requirements.txt
# --extra-index-url https://download.pytorch.org/whl/cu121
--extra-index-url https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/wheel/cu121/
--extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/ # https://github.com/microsoft/onnxruntime/issues/21684
conformer==0.3.2
deepspeed==0.14.2; sys_platform == 'linux'
diffusers==0.27.2
gdown==5.1.0
gradio==4.32.2
grpcio==1.57.0
grpcio-tools==1.57.0
huggingface-hub==0.25.2
hydra-core==1.3.2
HyperPyYAML==1.2.2
inflect==7.3.1
librosa==0.10.2
lightning==2.2.4
matplotlib==3.7.5
modelscope==1.15.0
networkx==3.1
omegaconf==2.3.0
onnx==1.16.0
onnxruntime-gpu==1.18.0; sys_platform == 'linux'
onnxruntime==1.18.0; sys_platform == 'darwin' or sys_platform == 'windows'
openai-whisper==20231117
protobuf==4.25
pydantic==2.7.0
rich==13.7.1
soundfile==0.12.1
tensorboard==2.14.0
tensorrt-cu12==10.0.1; sys_platform == 'linux'
tensorrt-cu12-bindings==10.0.1; sys_platform == 'linux'
tensorrt-cu12-libs==10.0.1; sys_platform == 'linux'
torch==2.3.1
torchaudio==2.3.1
transformers==4.40.1
uvicorn==0.30.0
wget==3.2
fastapi==0.111.0
fastapi-cli==0.0.4
WeTextProcessing==1.0.3
matcha
start.sh
#! /bin/bash
python3 model_download.py
python3 webui.py --port 8888 --model_dir pretrained_models/CosyVoice-300M
model_download.py
# SDK模型下载
from modelscope import snapshot_download
snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
snapshot_download('iic/CosyVoice-300M', local_dir='pretrained_models/CosyVoice-300M')
snapshot_download('iic/CosyVoice-300M-25Hz', local_dir='pretrained_models/CosyVoice-300M-25Hz')
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')
相关文章:

国内Ubuntu环境Docker部署CosyVoice
国内Ubuntu环境Docker部署CosyVoice 本文旨在记录在 国内 CosyVoice项目在 Ubuntu 环境下如何使用 dockermin-conda进行一键部署。 源项目地址: https://github.com/FunAudioLLM/CosyVoice 如果想要使用 dockerpython 进行部署,可以参考我另一篇博客中的…...

嵌入式linux系统中QT信号与槽实现
第一:Qt中信号与槽简介 信号与槽是Qt编程的基础。因为有了信号与槽的编程机制,在Qt中处理界面各个组件的交互操作时变得更加直观和简单。 槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。 案例操作与实现: #ifndef …...

科研绘图系列:R语言单细胞数据常见的可视化图形
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理图1图2图3图4图5图6系统信息参考介绍 单细胞数据常见的可视化图形 因为本教程是单细胞数据,因此运行本画图脚本需要电脑的内存最少32Gb 加载…...
使用 C++ 和函数式编程构建高效的 AI 模型
引言 现代 AI 开发常常使用 Python,但在底层实现中,C 仍是不可或缺的语言,尤其是在性能敏感的场景下。将 C 与函数式编程结合,可以打造高效、模块化的 AI 模型,同时提高代码的可读性和可维护性。本文将深入探讨如何利用…...

guestfish/libguestfs镜像管理工具简介
文章目录 简介guestfishlibguestfs项目 例子原理代码libguestfs架构参考 简介 guestfish Guestfish 是libguestfs项目中的一个工具软件,提供修改虚机镜像内部配置的功能。它不需要把虚机镜像挂接到本地,而是为你提供一个shell接口,你可以查…...
如何在centos中进行有效的网络管理
如何在centos中进行有效的网络管理? 在CentOS中,网络管理是系统管理员日常工作的重要组成部分,本文将详细介绍CentOS中的两种主要网络管理工具:传统的network服务和新一代的NetworkManager,帮助读者更好地配置和管理C…...
Oracle清空表后如何恢复数据
有时候忘记备份数据,把数据清空了,或者删除了,这时候怎么恢复数据呢,使用下面sql即可,替换对应的table和column INSERT INTO table1(column1,column2,column3 ) SELECTcolumn1,column2,column3 FROMtable1 AS OF time…...
ElasticSearch基础-文章目录
ElasticSearch学习总结1(环境安装) ElasticSearch学习总结2(基础查询) ElasticSearch学习总结3(.NetCore操作ES) ElasticSearch学习总结4(sql操作ES) ElasticSearch学习总结5&am…...

SpringMVC(二)原理
目录 一、配置Maven(为了提升速度) 二、流程&&原理 SpringMVC中心控制器 完整流程: 一、配置Maven(为了提升速度) 在SpringMVC(一)配置-CSDN博客的配置中,导入Maven会非…...

Selenium 自动化,如何下载正确的 ChromeDriver
在 Python 的 Selenium 自动化操作中,chromedriver 是不可或缺的驱动程序。没有正确安装对应版本的驱动,运行代码时常常会遇到报错问题,比如 “session not created: This version of ChromeDriver only supports Chrome version XX”。 今天…...

[Linux]redis5.0.x升级至7.x完整操作流程
1. 从官网下载最新版redis: 官网地址:https://redis.io/download 注:下载需要的登录,如果选择使用github账号登录,那么需要提前在github账号中取消勾选“Keep my email addresses private”(隐藏我的邮箱…...
Java字符编码与正则表达式深度解析
Java字符编码与正则表达式深度解析 1. 字符编码发展 1.1 ASCII 码 在计算机最初发明时,主要用于数值计算,但随着计算需求的增加,人们发现计算机可以用来处理文本信息。因此,将字符映射为数字来表示。 字母 ‘A’ 映射为 65&am…...

【C++】B2099 矩阵交换行
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述题目描述输入格式输出格式输入输出样例输入 #1输出 #1 💯题目分析💯不同解法分析我的做法实现步骤:优点:不足&#…...

论文解读 | NeurIPS'24 IRCAN:通过识别和重新加权上下文感知神经元来减轻大语言模型生成中的知识冲突...
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 史丹,天津大学博士生 内容简介 大语言模型(LLM)经过海量数据训练后编码了丰富的世界知识。最近的研究表明,…...

edeg插件/扩展推荐:助力生活工作
WeTab 此插件在我看来有2个作用 1.改变edeg的主页布局和样式,使其更加精简,无广告 2.提供付费webtab Ai(底层是chatGpt) 沉浸式翻译 此插件可翻译网页的内容 假设我们浏览github 翻译前 翻译后 Better Ruler 可以对网页的距离进行测量 适合写前端的小伙伴 用法示例:...
基于Python读取ZIP和TAR格式压缩包教程
在数据处理和文件管理中,压缩包(如ZIP、TAR等格式)的使用非常普遍。Python提供了多种库来读取和处理这些压缩包。本文将介绍如何使用Python的内置库和第三方库来读取ZIP和TAR格式的压缩包。 1、读取ZIP文件 Python的zipfile模块提供了处理Z…...
懒人不下床型遥控方案--手机对电脑的简单遥控(无收费方案)
兄弟们,天气越发寒冷,不得不说,对像我这种喜欢看直播睡觉的懒狗越发的不友好了,每次昏昏欲睡但还要下床关直播的操作就像泡完温泉直接冲凉水澡,透心凉,心飞扬。 最进也是有时间找找合适的懒人方案解决这个…...

人工智能知识分享第八天-机器学习_泰坦尼克生存预估线性回归和决策树回归对比案例
泰坦尼克生存预估案例 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import classification_report import matplotlib.pyplot as plt from sklearn.tree import plot_t…...
html中下拉选框的基本实现方式及JavaScript动态修改选项内容情况总结
最近项目中使用到了下拉选项以及通过js判断动态改变选项值的相关操作,查询了一些相关内容,在此记录一下,以免后续再碰到布置如何书写。 一、html中下拉选框的基本方式 在 HTML 中,创建下拉选择框(也叫选择菜单&#…...
sql server期末复习
表操作 创建create 删除drop 修改alter 数据操作 查询 select from <tableName> 插入 insert into <tableName> values 修改 update <tableName> set 删除 delete from <tableName> 授权与收回对数据的操作权限 授予 grant <权…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...