51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【语音领域-又双叒更新】阿里开源FunAudioLLM: 2大核心模型、5大亮点功能!效果炸裂!手把手带你理论+实战部署推理!

背景介绍

大家好。之前给大家分享很多关于大模型应用的文章,部分如下:

上期给大家分享4.1k star! FishSpeech1.2重磅开源,目前中文开源TTS效果最好!手把手带你进行部署推理复现官方demo!,最近阿里在语音合成领域有开源FunAudioLLM项目,其中核心的模型语音识别SenseVoice和语音合成CosyVoice效果炸裂,感觉发展太快了,学不完根本学不完!!

本文手把手带你了解FunAudioLLM项目的核心功能点,部署权重代码进行推理效果预测复现官方demo效果,提供很多案例效果展示!CosyVoice的语音合成效果简直太哇塞!下面进入我们今天的主题~

本文目录

  • 理论篇: FunAudioLLM项目介绍

    • FunAudioLLM整体系统框架介绍

    • 核心模型一: 语音识别模型SenseVoice介绍

    • 核心模型二: 语音合成模型CosyVoice介绍

    • FunAudioLLM的应用场景

    • 语音识别-SenseVoice模型: 在线官方体验网址

    • 语音合成-CosyVoice模型: 在线官方体验网址

  • 实战篇: 语音识别模型SenseVoice模型-手把手实操部署权重推理

    • 环境配置

    • 获得音频样本素材

    • 下载模型权重

    • 语音情感文字识别案例展示: 推理效果展示

    • 语音情感文字识别案例展示: 利用FunASR框架来加载推理

  • 实战篇: 语音合成CosyVoice模型-手把手实操部署权重推理

    • 环境部署

    • 准备代合成的文本素材

    • 中文女声案例展示: 对CosyVoice-300M-SFT模型推理生成音频效果展示

    • 粤语女声案例展示: 对CosyVoice-300M-SFT模型推理生成音频效果展示

    • 声音克隆案例展示: 对CosyVoice-300M模型零样本推理生成音频效果展示

    • 同声翻译案例展示: 对CosyVoice-300M模型推理生成音频效果展示

    • 多情感细粒度展示: 对CosyVoice-300M-Instruct模型生成音频效果展示

  • 部署过程中常见的坑点汇总

    • 部署遇到坑点一: 千万不要尝试除python3.8以外的python版本

    • 部署遇到坑点二: ModuleNotFoundError: No module named 'matcha.models'

    • 部署遇到坑点三: ModuleNotFoundError: No module named 'ttsfrd'

    • 部署遇到坑点五: Failed to load library libonnxruntime_providers_cuda.so xxx

  • 参考链接

理论篇: FunAudioLLM项目介绍

FunAudioLLM整体系统框架介绍

FunAudioLLM 是阿里语音团队最新开源的项目,用于改善人类与大型语言模型的自然语音交互。包含两个核心模型:SenseVoice 负责语音识别和音频处理,CosyVoice 负责语音生成和控制。

  • SenseVoice-Small 提供5种语言(中文、英文、日语、韩语、粤语)的低延迟 ASR(目前已开源),SenseVoice-Large 支持超过 50 种语言的高精度 ASR。

  • CosyVoice 特点:包括多语言语音生成、零样本学习、跨语言克隆和指令遵循。整体项目的框架如下:

核心模型一: 语音识别模型SenseVoice介绍

SenseVoice 是一个全面的语音基础模型,旨在执行各种语音理解任务,包括自动语音识别(ASR)、语言识别(LID)、语音情感识别(SER)和音频事件检测(AED)。

  • SenseVoice-Small:一个仅编码器的模型,优化了快速语音理解。它在支持5种语言的同时提供高速处理。

  • SenseVoice-Large:一个编码器-解码器模型,旨在实现更精确的语音理解,支持更广泛的语言范围。它以准确性见长,并支持大量的语言功能。

SenseVoice模型具有的功能特点:

  • 多语言语音识别:SenseVoice 支持包括中文、英文、粤语、日语和韩语在内的多语言识别。

  • 低延迟:特别是 SenseVoice-Small 版本,采用非自回归端到端架构,提供了极低的推理延迟。

  • 高性能:与 Whisper-small(已开源) 和 Whisper-large 相比,SenseVoice-Small 的性能分别快 5 倍和 15 倍以上。

  • 情感识别:SenseVoice 提供最先进的情感识别能力(例如高兴、悲伤、生气等),能够检测音频中的特定事件,如音乐、掌声和笑声等。

  • 高精准度:SenseVoice-Large(目前还未开源) 支持超过 50 种语言的高精准度自动语音识别(ASR)。

核心模型二: 语音合成模型CosyVoice介绍

CosyVoice 是一个语音生成模型,能够合成自然声音,适用于多种应用。模型支持五种语言:中文、英语、日语、粤语和韩语。CosyVoice 包含三个开源模型:

  • CosyVoice-base-300M:擅长准确代表说话者身份,无需微调即可适应不同上下文,能够跨语言克隆声音。

  • CosyVoice-instruct-300M:能够生成富有情感表现力的语音,允许通过指令文本进行精细调整。

  • CosyVoice-sft-300M:已针对七位多语言说话者进行了微调,适合立即部署使用。

语音合成模型 CosyVoice 功能特点:

  • 多语言支持:CosyVoice 支持包括中文、英文、日语、粤语和韩语在内的五种语言。

  • 零样本学习:能够无需训练即可适应新说话者(zero-shot in-context learning),能够在不同语言之间复制声音。

  • 情感共鸣:能够创建情感共鸣的声音, CosyVoice-instruct 版本通过情感指令显著提高了情感控制的准确性。

  • 高质量语音合成:生成的样本在词错误率(WER)和说话者相似性方面达到人类水平。

  • 语音定制化:能够根据特定说话者生成多语言语音,适应新说话者而无需训练。

  • 语音克隆与风格迁移:支持在不同语言之间进行语音克隆和情感风格迁移。

FunAudioLLM的应用场景

SenseVoice+ LLMs+ CosyVoice实现同声翻译

SenseVoice+ LLMs+ CosyVoice实现情感聊天

SenseVoice+ LLMs+ CosyVoice实现互动解说

LLMs + CosyVoice实现有声电子书阅读

语音识别-SenseVoice模型: 在线官方体验网址

如果你想要快速体验语音识别SenseVoice模型的效果,你可以访问https://www.modelscope.cn/studios/iic/SenseVoice。在这里你可以体验到SenseVoice模型的语音识别和情感识别,其中界面如下:

语音合成-CosyVoice模型: 在线官方体验网址

如果你想要快速体验语音合成CosyVoice模型的效果,你可以访https://www.modelscope.cn/studios/iic/CosyVoice-300M 在这里你可以体验到CosyVoice模型的三个版本对应的效果,其中界面如下:

实战篇: 语音识别模型SenseVoice模型-手把手实操部署权重推理

环境配置

这块环境配置简单了很多,对python版本要求在3.8以上,如下:修改requirement.txt依赖文件:

获得音频样本素材

!wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav
import torchaudio
from IPython.display import Audio
waveform, sample_rate = torchaudio.load("asr_example_zh.wav")
Audio(waveform, rate=sample_rate, autoplay=True)

下载模型权重

from model import SenseVoiceSmall
model_dir = "iic/SenseVoiceSmall"
m, kwargs = SenseVoiceSmall.from_pretrained(model=model_dir)

运行效果:

语音情感文字识别案例展示: 推理效果展示

可以看出SenceVoice模型不仅能够准确识别语音文本内容,还能识别出对应说话人的情感。

语音情感文字识别案例展示: 利用FunASR框架来加载推理

import funasr
print("funasr: ", funasr.__version__)
from funasr import AutoModel
model_dir = "iic/SenseVoiceSmall"
input_file = "asr_example_zh.wav"
model = AutoModel(model=model_dir,
                  vad_model="fsmn-vad",
                  vad_kwargs={"max_single_segment_time": 30000},
                  trust_remote_code=True, device="cuda:0")

执行的效果:

下面给大家介绍今天最核心、也是最难部署推理的语音合成CosyVoice模型对应的推理过程~

实战篇: 语音合成CosyVoice模型-手把手实操部署权重推理

下面代码全程都是在jupyter notbook中执行完成的。python环境限定在python3.8版本!!

环境部署

from IPython.display import Video,clear_output,Audio,Image
!git clone https://www.modelscope.cn/studios/iic/CosyVoice-300M.git
!git clone  https://github.com/FunAudioLLM/CosyVoice.git
%cd CosyVoice-300M
!cp -r ../CosyVoice/*.wav ./
!sudo apt-get install sox libsox-dev -y
!ls
clear_output()

修改项目的requirements.txt配置依赖

%%writefile requirements.txt
--extra-index-url https://download.pytorch.org/whl/cu118
conformer
deepspeed==0.14.2
diffusers==0.27.2
gdown==5.1.0
grpcio==1.57.0
grpcio-tools==1.57.0
hydra-core
HyperPyYAML
inflect
librosa==0.10.2
lightning==2.2.4
matplotlib
modelscope
networkx==3.1
omegaconf
onnxruntime-gpu
openai-whisper==20231117
protobuf==4.25
pydantic==2.7.0
rich==13.7.1
soundfile==0.12.1
tensorboard
torch
torchaudio
pyarrow
wget

创建python3.8的虚拟环境

!conda create  -y -n  cosyvoice python=3.8
clear_output()
!source activate cosyvoice && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
clear_output()
!git clone https://www.modelscope.cn/speech_tts/speech_kantts_ttsfrd.git ./speech_kantts_ttsfrd
!source activate cosyvoice && pip install ./speech_kantts_ttsfrd/ttsfrd-0.3.6-cp38-cp38-linux_x86_64.whl
clear_output()
!source activate cosyvoice &&pip list|grep torch
!source activate cosyvoice &&pip list|grep ttsfrd
!source activate cosyvoice &&pip list|grep onnxruntime

准备代合成的文本素材

当你压力大到快要崩溃的时候,不要跟别人讲,也不觉得自己委屈,没有人会心疼你。
要像余华说的那样:在夜深人静的时候,把心掏出来,自己缝缝补补,然后睡一觉醒来,又是信心百倍。
无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事情,而不是让烦恼和焦虑,毁掉你本就不多的热情和定力。
心可以碎,手不能停,该干什么干什么在崩溃中继续前行,这才是一个成年人的素养。

共计181个字。

中文女声案例展示: 对CosyVoice-300M-SFT模型推理生成音频效果展示

正入上面理论介绍所说,CosyVoice-300M-SFT版本已微调7位说话人的声音,分别是'中文女', '中文男', '日语男', '粤语女', '英文女', '英文男', '韩语女';

运行结果:对应合成的音频效果展示:

粤语女声案例展示: 对CosyVoice-300M-SFT模型推理生成音频效果展示

正入上面理论介绍所说,CosyVoice-300M-SFT版本已微调7位说话人的声音,分别是'中文女', '中文男', '日语男', '粤语女', '英文女', '英文男', '韩语女';运行结果:对应合成的粤语音频效果展示:

声音克隆案例展示: 对CosyVoice-300M模型零样本推理生成音频效果展示

首先我们准备音频素材,来自于CosyVoice-300M的github项目中的语音素材

import torchaudio
from IPython.display import Video,clear_output,Audio,Image
waveform, sample_rate = torchaudio.load("zero_shot_prompt.wav")
Audio(waveform, rate=sample_rate, autoplay=True)

对应的原音频素材效果如下:

编写代码进行推理

运行的效果展示:对应合成的音频效果展示:

同声翻译案例展示: 对CosyVoice-300M模型推理生成音频效果展示

首先我们准备音频素材,来自于CosyVoice-300M的官方github项目中的语音素材

import torchaudio
from IPython.display import Video,clear_output,Audio,Image
waveform, sample_rate = torchaudio.load("cross_lingual_prompt.wav")
Audio(waveform, rate=sample_rate, autoplay=True)

对应的原音频素材效果如下:

编写代码进行推理

运行的效果展示:对应合成的音频效果展示:

多情感细粒度展示: 对CosyVoice-300M-Instruct模型生成音频效果展示

CosyVoice-300M-Instruct模型支持的停顿词有

待合成的文本

在面对挑战时,他展现了非凡的<strong>勇气</strong>与<strong>智慧</strong>。\
他累计创造了23部恶作剧,让大家<laughter>忍俊不禁</laughter>。 \
那位喜剧演员真有才,[laughter]一开口就让全场观众爆笑。

进行推理展示

运行的效果展示

import torchaudio
from IPython.display import Video,clear_output,Audio,Image
waveform, sample_rate = torchaudio.load("instruct.wav")
Audio(waveform, rate=sample_rate, autoplay=True)

对应合成的音频效果展示:

效果简直太哇塞啦!!跟官方展示demo效果表现几乎一致~

部署过程中常见的坑点汇总

部署遇到坑点一: 千万不要尝试除python3.8以外的python版本

刚开始我的环境版本是python3.10,开始部署CosyVoice模型,知道官方使用的是python3.8版本,结果在部署运行中花了接近4个小时,遇到各种各样的问题,果断放弃,转向搭建python3.8版本。

部署遇到坑点二: ModuleNotFoundError: No module named 'matcha.models'

遇到这个原因主要是没有指定第三方包matcha对应的位置

%cd CosyVoice-300M # 进入项目环境
export PYTHONPATH=third_party/AcademiCodec:third_party/Matcha-TTS
#在执行对应的代码就可成功

部署遇到坑点三: ModuleNotFoundError: No module named 'ttsfrd'

遇到这个原因主要是没有安装ttsfrd模块

!git clone https://www.modelscope.cn/speech_tts/speech_kantts_ttsfrd.git ./speech_kantts_ttsfrd
!source activate cosyvoice && pip install ./speech_kantts_ttsfrd/ttsfrd-0.3.6-cp38-cp38-linux_x86_64.whl
clear_output()

部署遇到坑点五: Failed to load library libonnxruntime_providers_cuda.so xxx

这块主要问题是onnxruntime-gpu库的版本和cuda的依赖对不上;我在实操部署中没有指定对应的版本,最终代码运行成功对应的版本是1.8.1。

希望上面这些坑点,希望可以帮助到你~

参考链接

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

  2. SenseVoice: https://github.com/FunAudioLLM/SenseVoice

  3. FunAudioLLM论文报告: https://fun-audio-llm.github.io/pdf/FunAudioLLM.pdf

  4. CosyVoice论文报告: https://fun-audio-llm.github.io/pdf/CosyVoice_v1.pdf

  5. https://fun-audio-llm.github.io/

  6. https://www.modelscope.cn/studios/iic/SenseVoice

  7. https://www.modelscope.cn/studios/iic/CosyVoice-300M

👉往期文章精选

赞(5)
未经允许不得转载:工具盒子 » 【语音领域-又双叒更新】阿里开源FunAudioLLM: 2大核心模型、5大亮点功能!效果炸裂!手把手带你理论+实战部署推理!