CosyVoice:开源强大的 AI 语音合成工具

在当今科技飞速发展的时代,AI 语音合成技术正逐渐改变着我们的生活。今天,就为大家介绍一款卓越的语音合成工具——CosyVoice。
A 3D rendering of the "CosyVoice" logo. The logo features a rounded font in pastel shades of pink, blue, and purple. The name is adornedwith stars, pink hearts, and a crown. The logo has a fun and youthful aesthetic. a microphone on left.The background is a soft gradient. This logo is perfect for romantic and youthful projects, photography, illustration, 3D rendering, typography, cinematic visuals, anime, fashion, and more.

一、安装步骤

  1. 克隆和安装
    • 克隆仓库:git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git。如果克隆子模块失败,可以运行命令cd CosyVoice; git submodule update --init --recursive
  2. 安装 Conda:请参考https://docs.conda.io/en/latest/miniconda.html。
  3. 创建 Conda 环境
    • conda create -n cosyvoice python=3.8
    • conda activate cosyvoice
    • conda install -y -c conda-forge pynini==2.1.5
    • pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
  4. 解决 sox 兼容性问题
    • Ubuntu:sudo apt-get install sox libsox-dev
    • CentOS:sudo yum install sox sox-devel

二、模型下载

强烈建议下载预训练的CosyVoice - 300MCosyVoice - 300M - SFTCosyVoice - 300M - Instruct模型和CosyVoice - ttsfrd资源。

  1. SDK 模型下载
    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')
    
  2. 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
    git clone https://www.modelscope.cn/iic/CosyVoice - ttsfrd.git pretrained_models/CosyVoice - ttsfrd
    
  3. 可选步骤:解压ttsfrd资源并安装ttsfrd包以获得更好的文本归一化性能,但这不是必需的。若不安装,将默认使用WeTextProcessing
    cd pretrained_models/CosyVoice - ttsfrd/
    unzip resource.zip -d.
    pip install ttsfrd - 0.3.6 - cp38 - cp38 - linux_x86_64.whl
    

三、基本用法

  1. 对于不同的推理需求选择不同的模型:
    • 零样本/跨语言推理,请使用CosyVoice - 300M模型。
    • SFT 推理,请使用CosyVoice - 300M - SFT模型。
    • 指令推理,请使用CosyVoice - 300M - Instruct模型。
  2. 首先,将third_party/Matcha - TTS添加到PYTHONPATH
    export PYTHONPATH=third_party/Matcha - TTS
    
  3. 示例代码:
    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></laughter><strong></strong>[laughter][breath]
    for i, j in enumerate(cosyvoice.inference_instruct('在面对挑战时,他展现了非凡的<strong>勇气</strong>与<strong>智慧</strong>。', '中文男', '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)
    

四、启动 Web 演示

可以使用 Web 演示页面快速熟悉 CosyVoice,支持 sft/零样本/跨语言/指令推理。具体详情请参考演示网站。
示例命令:python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice - 300M(可根据需要更改模型)。

五、高级用法

对于高级用户,examples/libritts/cosyvoice/run.sh中提供了训练和推理脚本,可以按照此示例熟悉 CosyVoice。

六、构建用于部署

若要使用 grpc 进行服务部署,可执行以下步骤,否则可忽略此步骤。

  1. 构建 docker 镜像:
    cd runtime/python
    docker build -t cosyvoice:v1.0.
    
  2. 运行 docker 容器(根据需要选择推理模式):
    • grpc 用法
      docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v1.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"
      cd grpc && python3 client.py --port 50000 --mode <sft|zero_shot|cross_lingual|instruct>
      
    • fastapi 用法
      docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v1.0 /bin/bash -c "cd /opt/CosyVoice/CosyVoice/runtime/python/fastapi && python3 server.py --port 50000 --model_dir iic/CosyVoice - 300M && sleep infinity"
      cd fastapi && python3 client.py --port 50000 --mode <sft|zero_shot|cross_lingual|instruct>
      

CosyVoice 以其强大的功能和灵活的使用方式,为我们带来了全新的语音合成体验。快来尝试吧!

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

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

相关文章

LabVIEW步进电机控制方式

在LabVIEW中控制步进电机可以通过多种方式实现。每种方法都有其独特的优缺点&#xff0c;适用于不同的应用场合。下面详细介绍几种常见的步进电机控制方式&#xff0c;并进行比较。 1. 开环控制&#xff08;Open-Loop Control&#xff09; 特点 通过定期发出脉冲信号来控制步进…

SpringBoot整合Minio及阿里云OSS(配置文件无缝切换)

SpringBoot整合Minio及阿里云OSS 文章目录 SpringBoot整合Minio及阿里云OSS1.Minio安装测试1.Docker安装启动容器 2.创建bucket3.上传文件修改权限 2.SpringBoot整合Minio及阿里云OSS1.公共部分抽取2.Minio配置整合1.添加pom依赖2.添加配置文件3.操作接口实现 3.阿里云OSS配置整…

家政上门小程序系统设计解析

一、系统概述 上门家政系统是一种基于互联网技术的综合性服务平台&#xff0c;该系统利用大数据分析和人工智能算法&#xff0c;实现家政服务资源的有效整合与优化配置&#xff0c;进而达到用户与家政服务提供者之间的精准匹配。编辑&#xff1a;qawsed2466 二、系统功能模块 …

RabbitMQ简介

RabbitMQ简介 MQ 百度百科-MQ MQ&#xff1a;Message Queue 消息队列 # 何为消息队列&#xff1f; 消息&#xff1a;字符串&#xff0c;数字&#xff0c;对象&#xff0c;文件...... 业务中需要用到的数据都可以称为消息 队列&#xff1a;先进先出的数据结构常用来解耦&…

【Python知识宝库】迭代器与生成器:高效处理大数据集

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、迭代器&#xff1a;逐个访问数据的艺术1. 迭代器的定义2. 自定义迭代器3. 迭代器的优势 二、生成器&#xff…

分布式风电电池储能系统

风能作为一种清洁的可再生能源,越来越受到世界各国的*视。但风能随机波动的特点,造成风电出力的频繁波动,使电网的调频、调峰压力加大,成为长期困扰风电并网的主要难题。 我国的弃风限电*次出现于2010年,此后弃风从零星现象快速扩散,2012年的情况*为严*,弃风率达17%。之后随着…

VueSax-解决Vue3报错问题,并支持typescript

以下为坑点 根据官方提示&#xff0c;本人在vue3typescript的项目中添加了vuesax的组件依赖 根据正常的导入依赖思路编写代码&#xff0c;发现typescript一直报 查询vuesax的目录文件发现存在ts文件&#xff0c;于是乎觉得是自己的问题&#xff0c;就查阅gpt与网上资料&#x…

【学习笔记】SSL证书安全机制之证书撤销

前言&#xff1a;以往提到过&#xff0c;钓鱼网站会仿冒我们&#xff0c;如果我们的私钥泄露了&#xff0c;如果被不法分子得到了私钥&#xff0c;他们就能假装是我们网站。那现在&#xff0c;我们要做的是生成新私钥并申请新证书。问题来了&#xff0c;旧的证书亦然存在且有效…

sql-labs51-55通关攻略

第51关 一.查询数据库 1and updatexml(1,concat(0x7e,(select database()),0x7e),1)-- 二.查表 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schemadatabase() ),0x7e),1) -- 三.查列 and updatexml(1,concat…

如何利用mHand Pro动捕数据手套连接虚拟与现实?

数据手套作为虚拟现实中的一种交互动捕设备&#xff0c;能够模拟真人手部的动作和感知反馈&#xff0c;实现人机交互的效果。随着虚拟现实技术的不断发展&#xff0c;数据手套也在不断地改进和升级。 mHand Pro是一款由拥有多年经验的惯性动作捕捉技术团队广州虚拟动力研发的数…

Java并发编程实战 04 | 使用WaitNotify时要注意什么?

在 Java 中&#xff0c;wait()、notify() 和 notifyAll() 方法在多线程编程中主要用于线程间的协作和同步。理解这些方法的使用特点对于编写稳定的多线程程序至关重要。我们将从以下三个问题入手深入探讨它们的使用&#xff1a; 为什么必须在 synchronized 代码块中使用 wait(…

gazebo可能打不开的问题

如果经常遇到gazebo只能断网才能运行的时候&#xff0c;主要就是因为无法联网访问gazebo的在线模型库&#xff0c;此时我们一般无法在联网的情况下打开gazebo。 这个时候就直接将下载好的模型先放到~/.gazebo/models/文件夹下面即可&#xff1a; https://github.com/osrf/gazeb…

大语言模型(LLM)如何更好地继续预训练(Continue PreTraining)

预训练&#xff08;Pretraining&#xff09;是一个非常消耗资源的工作&#xff0c;尤其在 LLM 时代。随着LLama2的开源&#xff0c;越来越多人都开始尝试在这个强大的英文基座模型上进行中文增强。但&#xff0c;我们如何才能保证模型在既学到「中文知识」的情况下&#xff0c;…

简单的EasyCaptcha图片验证码学习

简单的EasyCaptcha图片验证码学习 1. 需求 图片验证码是一种常见的验证形式&#xff0c;它通过生成一串随机数字或符号&#xff0c;并加入一些干扰像素&#xff0c;最终生成用于验证的图片。这种验证码的设计旨在增加破解难度&#xff0c;主要通过加大干扰强度来提高安全性。…

vue3 element-plus form 表单 循环校验

需求&#xff1a; 表单是循环出来的&#xff0c;3个一组&#xff0c;每组对于前端来说是一样的&#xff0c; 需要校验输入框是否必填是否为小数或者整数 效果&#xff1a; 未输入--显示&#xff1a;请输入 输入不是小数或整数--显示&#xff1a;请输入整数或小数 输入正确…

Vue - 关于Router路由跳转时显示的animate.css动画

Vue - 关于Router路由跳转时显示的animate.css动画 在Vue中&#xff0c;操作路由跳转时页面是闪白的&#xff0c;没有动画效果&#xff0c;我们可以通过在router-view中设置transition&#xff0c;并搭配animate丰富的动画效果来美化路由跳转时的显示效果. 1.安装animate np…

Java使用类加载器解决类冲突,多版本jar共存

Java使用类加载器解决类冲突 1、案例说明2、打包新版本POI并将要调用的方法封装2.1、POM文件2.2、封装的方法 3、要使用多个POI版本的项目3.1、打包前面的项目生成一个jar包3.1、POM文件3.2、类加载器代码3.3、Jar加载工具3.4、最终调用 1、案例说明 项目中已经有了一个旧版本…

奖项再+1!通义灵码智能编码助手通过可信 AI 智能编码工具评估,获当前最高等级

阿里云的通义灵码智能编码助手参与中国信通院组织的可信AI智能编码工具首轮评估&#xff0c;最终获得 4 级评级&#xff0c;成为国内首批通过该项评估并获得当前最高评级的企业之一。 此次评估以《智能化软件工程技术和应用要求 第 2 部分&#xff1a;智能开发能力》为依据&…

别给智能猫砂盆花冤枉钱了!这三款好用智能猫砂盆哪个更好用?

节假日回老家&#xff0c;不方便带猫咪怎么办&#xff1f;而且猫咪这么能拉&#xff0c;猫砂盆里拉满了又怎么办&#xff1f;猫砂盆一满&#xff0c;就会变脏&#xff0c;变脏了小猫就会抗拒上厕所&#xff0c;从而在家里找其他干净的地方排泄&#xff0c;那我们要怎么保证不在…

python中 if __name__ == “__main__“的代码没被执行

运行pytest 和unittest时&#xff0c;if name “main”: 下的代码没有被执行&#xff0c;发现__name__等于模块名 一、“name” 的作用 1、 __name__是python的一个内置类属性&#xff0c;它天生就存在于一个 python 程序中。 2、直接运行python程序时&#xff0c;__name__的…