CosyVoice介绍

CosyVoice介绍

CosyVoice是阿里开源的一个多语言语音生成大模型,可应用于TTS(Text To Speech) 工具的开发。它支持内置预制语音生成、语音克隆、自然语言控制语音生成等功能。CosyVoice的另一个亮点在于它对生成语音情感和韵律的精细控制,这是通过富文本或自然语言输入实现的。这种控制机制显著提高了合成语音的情感表达能力,使得生成的语音更加栩栩如生,充满情感色彩。这个系统支持中文、英文、日文、粤语和韩语五种语言的语音生成,并且在语音合成的效果上远超传统模型。

Github仓库地址:https://github.com/FunAudioLLM/CosyVoice

官方在线体验地址:魔搭社区

系统要求

无硬性要求,普通个人电脑也可以运行,不过推理耗时较长,只能用作尝鲜体验。如果机器有NVIDIA GPU,可以用NVIDIA CUDA加速。本文部署的机器使用GPUMart的RTX A4000 VPS,其GPU为NVIDIA RTX A4000,其显存为16GB。

如何部署CosyVoice

步骤1. 克隆项目,安装依赖

首先克隆官方项目,创建一套独立的Python虚拟环境。

#因为项目内部引用了Matcha-TTS项目,所以记得使用--recursive参数
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git#创建Python 3.8+环境并激活
conda create -n cosyvoice python=3.8
conda activate cosyvoice

此时已经激活了虚拟环境,现在下载项目依赖的第三方包。

#在具有美国IP的GPUMart服务器上
pip install -r requirements.txt#如果服务器在国内
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com

步骤2. 接着安装Pynini

Pynini是一个基于字符串的传播和转换的库,可以用于各种自然语言处理任务,如词性标注、名词短语提取和依赖句法分析。

conda install -y -c conda-forge pynini==2.1.5

步骤3. 下载模型

根据文档要提前下载模型,这里不使用阿里的魔搭包下载,而是使用Git下载,前提是安装git lfs 插件:

# git模型下载,请确保已安装git lfs
mkdir -p pretrained_models
git clone https://www.modelscope.cn/iic/CosyVoice-300M.git pretrained_models/CosyVoice-300M
git clone https://www.modelscope.cn/iic/CosyVoice-300M-SFT.git pretrained_models/CosyVoice-300M-SFT
git clone https://www.modelscope.cn/iic/CosyVoice-300M-Instruct.git pretrained_models/CosyVoice-300M-Instruct

可选的,您可以下载、解压 ttsfrd 资源并安装 ttsfrd 包以获得更好的文本规范化性能。请注意,此步骤不是必需的。如果您不安装 ttsfrd 包,我们将默认使用 WeTextProcessing。

git clone https://www.modelscope.cn/iic/CosyVoice-ttsfrd.git pretrained_models/CosyVoice-ttsfrd
cd pretrained_models/CosyVoice-ttsfrd/
unzip resource.zip -d .
pip install ttsfrd-0.3.6-cp38-cp38-linux_x86_64.whl

步骤4. 启动服务

模型文件非常大,又需要等待较长时间才能下载完成。完成后,使用以下命令启动服务:

python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice-300M

有个要注意的地方,如果需要从外网访问,需要把webui.py文件中

demo.launch(server_port=args.port)

改成

demo.launch(server_port=args.port, server_name="0.0.0.0")

如果是本机访问可以忽略。这在最新的版本里不存在,默认是支持外网访问的。这时访问局域网IP加端口号50000就能访问到这个由gradio库搭建的WebUI 网页应用了。

CosyVoice web ui

如何使用CosyVoice

方法1. 在Web UI中使用

以语音克隆为例,第一步上传原素材的音频文件(可能需要处理以使效果更好),第二步输入原素材的音频文件对应的字幕,第三步输入想要的生成的语音的文案,最后一步点击生成,耐心等待。

在使用语音克隆功能时,除了提供文本,还需要提供一段示范性的语音样本,用于大模型模仿音色、语调、朗读习惯等。语音样本的质量对最终生成效果影响非常大。对于输入的样本语音,同样可以做一些前置处理。例如长度截取(官方建议语音样本在3-10s,过长需要耗费更多的推理性能)、降噪处理等。

方法2. Python编程调用

如果需要基于模型做应用开发,或者调整更多细节参数,就需要对模型提供的API进行封装和二次开发。对于零样本/跨语言推理,请使用CosyVoice-300M模型。对于 sft 推理,请使用CosyVoice-300M-SFT模型。对于指令推理,请使用CosyVoice-300M-Instruct模型。首先,添加third_party/Matcha-TTS到您的PYTHONPATH。

export PYTHONPATH=third_party/Matcha-TTS
from cosyvoice.cli.cosyvoice import CosyVoice
from cosyvoice.utils.file_utils import load_wav
import torchaudiocosyvoice = CosyVoice('pretrained_models/CosyVoice-300M-SFT')
# sft usage
print(cosyvoice.list_avaliable_spks())
# change stream=True for chunk stream inference
for i, j in enumerate(cosyvoice.inference_sft('你好,我是通义生成式语音大模型,请问有什么可以帮您的吗?', '中文女', stream=False)):torchaudio.save('sft_{}.wav'.format(i), j['tts_speech'], 22050)cosyvoice = CosyVoice('pretrained_models/CosyVoice-300M')
# zero_shot usage, <|zh|><|en|><|jp|><|yue|><|ko|> for Chinese/English/Japanese/Cantonese/Korean
prompt_speech_16k = load_wav('zero_shot_prompt.wav', 16000)
for i, j in enumerate(cosyvoice.inference_zero_shot('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '希望你以后能够做的比我还好呦。', prompt_speech_16k, stream=False)):torchaudio.save('zero_shot_{}.wav'.format(i), j['tts_speech'], 22050)
# cross_lingual usage
prompt_speech_16k = load_wav('cross_lingual_prompt.wav', 16000)
for i, j in enumerate(cosyvoice.inference_cross_lingual('<|en|>And then later on, fully acquiring that company. So keeping management in line, interest in line with the asset that\'s coming into the family is a reason why sometimes we don\'t buy the whole thing.', prompt_speech_16k, stream=False)):torchaudio.save('cross_lingual_{}.wav'.format(i), j['tts_speech'], 22050)cosyvoice = CosyVoice('pretrained_models/CosyVoice-300M-Instruct')
# instruct usage, support [laughter][breath]
for i, j in enumerate(cosyvoice.inference_instruct('在面对挑战时,他展现了非凡的勇气智慧。', '中文男', 'Theo \'Crimson\', is a fiery, passionate rebel leader. Fights with fervor for justice, but struggles with impulsiveness.', stream=False)):torchaudio.save('instruct_{}.wav'.format(i), j['tts_speech'], 22050)

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

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

相关文章

分布式任务调度XXL-Job

​ XXL-Job 是一款轻量级、分布式的任务调度平台&#xff0c;其核心设计解决了传统任务调度&#xff08;如Quartz&#xff09;在分布式场景下的‌任务分片‌、‌高可用‌、‌可视化管控‌等痛点。以下从原理、核心架构、应用场景、代码示例及关联中间件展开详解 一、主流任务…

GOOSE 协议中MAC配置

在 GOOSE&#xff08;Generic Object Oriented Substation Event&#xff09;协议中&#xff0c;主站&#xff08;Publisher&#xff09;发送的 MAC 地址不需要与从站&#xff08;Listener&#xff09;的 MAC 地址一致&#xff0c;其通信机制与 MAC 地址的匹配逻辑取决于 GOOSE…

交流充电桩IEC 61851-1和IEC 61851-21-2标准测试项目

交流充电桩IEC 61851-1和IEC 61851-21-2标准测试项目 立讯检测的光储充实验室专注于光伏、储能、充电设施等新能源领域的检测与认证服务&#xff0c;以下是详细介绍&#xff1a; ‌1. 实验室概况‌ ‌覆盖领域‌&#xff1a;光伏逆变器、储能电池系统、充电桩、便携式储能电…

备战菊厂笔试2-BFS记忆化MLE?用Set去重-Set会TLE?用SortedSet剪枝

目录 200.岛屿数量 不用getnei&#xff0c;直接在dfs判断&#xff0c;去掉解包 如果害怕栈溢出那么可以用bfs 2617.网格图中最少访问的格子数 注意特判&#xff01; MLE主要是因为vis占用的内存过大 用SortedSet有序剪枝 什么是SortedSet&#xff1f; 基本性质 导入 …

STM32H743输出50%的占空比波形

使用cubeMX进行配置如下&#xff1a; 时钟配置如下&#xff1a; 具体代码如下&#xff1a; /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program b…

MYSQL 查询去除小数位后多余的0

MYSQL 查询去除小数位后多余的0 在MySQL中&#xff0c;有时候我们需要去除存储在数据库中的数字字段小数点后面多余的0。这种情况通常发生在处理金额或其他需要精确小数位的数据时。例如&#xff0c;数据库中存储的是decimal (18,6)类型的数据&#xff0c;但在页面展示时不希望…

物理:从人体组成角度能否说明基本粒子的差异性以及组织结构的可预设性?

人类的个体差异源于粒子组合的复杂性、环境与随机性的相互作用,而非基本粒子本身的差异性。以下分层次解析: 一、基本粒子的同质性与组合多样性 1. 基本粒子的同一性 标准模型确认:同种类基本粒子(如电子、上夸克)具有完全相同的质量、电荷等属性,不存在个体差异。泡利不…

应用探析|千眼狼PIV测量系统在职业病防治中的应用

1、职业病防治背景 随着《职业病防治法》及各省市“十四五”职业病防治规划的深入推进&#xff0c;工作场所粉尘危害监测与防控已成为疾控部门的核心任务。以矿山、建材、冶金、化工等行业为例&#xff0c;粉尘浓度、分布及传播特性的精准测量是评估职业病风险的关键。 传统的…

串口模块详细讲解

目录 1.串口介绍 2。STC-ISP串口功能介绍 3.接口及引脚定义 4.串口知识点 4.1 硬件电路 4.2 电平标准 4.3 相关术语 4.4 常见通信接口比较 4.5 51单片机的UART 4.6 串口参数及时序图 4.7 串口模式图 4.8 串口和中断系统 4.9 串口相关寄存器 5.串口向电脑发送信息…

基于大模型的腰椎管狭窄术前、术中、术后全流程预测与治疗方案研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、腰椎管狭窄概述 2.1 定义与分类 2.2 发病原因与机制 2.3 临床表现与诊断方法 三、大模型技术原理与应用现状 3.1 大模型的基本原理 3.2 在医疗领域的应用案例 3.3 选择大模型预测腰椎管狭窄的依据 四、…

【2025年前端高频场景题系列】使用同一个链接,如何实现PC打开是web应用、手机打是-个H5 应用?

面试情境与问题引入 哈喽大家伙,我是布鲁伊。在前端开发面试中,面试官经常会抛出一些看似简单却能考察多方面能力的问题。"如何实现同一个链接在PC端和移动端展示不同应用?"就是这样一个典型问题。为什么面试官喜欢问这个问题?因为它能同时考察候选人的设备适配…

医疗实时操作系统方案:手术机器人的微秒级运动控制

一、引言 手术机器人作为现代医疗技术的重要突破&#xff0c;正不断推动着外科手术向精准化、微创化和智能化的方向发展。直觉外科&#xff08;Intuitive Surgical&#xff09;作为手术机器人领域的领军企业&#xff0c;其达芬奇手术机器人系统已被广泛应用于全球众多医疗机构…

数据结构基础--蓝桥杯备考

1.优缺点总述 STL中各容器对比图 各类线性数据结构优缺点 1.数组 1.优点 1.简单&#xff0c;容易理解 2.访问快捷&#xff0c;只需要用下标就可以 3.有某些应用场景直接对应&#xff0c;例如二维数组对应平面 2.缺点 删除和插入数据非常耗时 2.链表 1.优点 插入和删…

运用数组和矩阵对数据进行存取和运算——NumPy模块 之六

目录 NumPy模块介绍 3.6.1 数组之间的运算 3.6.2 算术运算 3.6.3 比较运算 3.6.4 逻辑运算 3.6.5 矩阵运算 3.6.6 广播运算 3.6.7 聚合运算 3.6.8 三角函数与指数对数运算 3.6.9 位运算 3.6.10 条件运算 3.6.11 数组的统计运算 3.6.12 关键问题:数组之间的运算对数组的维度有要…

JGL066生活垃圾滚筒筛分选机实验装置

JGL066生活垃圾滚筒筛分选机实验装置 一.实验目的 本实验对生活垃圾滚筒分选机进行垃圾分选的实验。通过实验达到以下目的&#xff1a; 1.了解分选的原理、方法和影响分选效果的主要因素。 2.确定分选的适宜条件。 二.技术指标 1.生活垃圾分选机处理量分为0.5~2t/h。 2.运动参数…

Excelize 开源基础库发布 2.9.1 版本更新

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库&#xff0c;基于 ECMA-376&#xff0c;ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Excel、WPS、OpenOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&#xf…

xss-labs靶场基础8-10关(记录学习)

前言&#xff1a; 内容&#xff1a; 第八关 关卡资源网站&#xff0c;html编码网站&#xff08;两个网站&#xff0c;一个是实体编号转义&#xff08;只对特殊字符有效&#xff0c;字母无效&#xff09;、实体符号转义&#xff09; 在线Html实体编码解码-HTML Entity Encodi…

Kafka topic 中的 partition 数据倾斜问题

在 Kafka 中&#xff0c;如果一个 Topic 有多个 Partition&#xff0c;但这些 Partition 中的消息数量或流量分布不均衡&#xff0c;就会出现 数据倾斜&#xff08;Data Skew&#xff09; 的问题。 ✅ 什么是数据倾斜&#xff1f; 数据倾斜指的是&#xff1a; 某些 Partitio…

Retrofit vs Feign: 介绍、对比及示例

1. 介绍 Retrofit Retrofit 是 Square 公司开发的一个类型安全的 HTTP 客户端库&#xff0c;主要用于 Android 和 Java 应用。它将 HTTP API 转换为 Java 接口&#xff0c;通过注解来描述 HTTP 请求。 主要特点: 基于注解的 API 定义支持同步和异步调用支持多种数据格式转换…

SpringBoot整合MyBatis-Plus:零XML实现高效CRUD

前言 作为一名开发者&#xff0c;数据库操作是我们日常工作中不可或缺的部分。传统的MyBatis虽然强大&#xff0c;但需要编写大量XML映射文件&#xff0c;这在快速开发的今天显得效率不足。MyBatis-Plus&#xff08;简称MP&#xff09;作为MyBatis的增强工具&#xff0c;在保留…