马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
- 英文名称: FunAudioLLM: Voice Understanding and Generation Foundation Models for Natural Interaction Between Humans and LLMs
- 中文名称: FunAudioLLM: 人与LLMs之间自然互动的语音理解和生成基础模型
- 论文地址: http://arxiv.org/abs/2407.04051v3
- 相关论文:https://fun-audio-llm.github.io/pdf/CosyVoice_v1.pdf
- 代码: https://github.com/FunAudioLLM
- 官网介绍:https://fun-audio-llm.github.io/
- 作者: Tongyi SpeechTeam
- 机构: 阿里巴巴集团,通义Speech团队
- 日期: 2024-07-04
复制代码 | 读后感
FunAudioLLM 工具集在 24 年 7 月初开源,焦点包罗两个语音模子:SenseVoice 和 CosyVoice。
模子(SenseVoice 和 CosyVoice)已在 Modelscope 和 Huggingface 上开源,而且 GitHub 上也发布了相应的练习、推理和微调代码。通过将这些模子与 LLMs 集成,FunAudioLLM 实现了多种应用,比方:语音到语音翻译、情绪语音谈天、互动播客和富有体现力的有声书叙述。这些应用推动了语音交互技能的发展。
从算法角度来看,作者奇妙地团结了语音合成和语音辨认。通过利用中心效果来优化 Speech Tokens,从而得到了效果更好的码表。
从练习数据来看,这些模子紧张针对中文举行了优化。
择要
目标:先容 FunAudioLLM 模子家属,旨在加能人类与大型语言模子(LLMs)之间的天然语音交互。
方法:引入两个创新模子:SenseVoice 处置惩罚多语言语音辨认、情绪辨认和音频变乱检测;CosyVoice 促进多语言语音天生,具有对多种语言、音色、语言风格和语言人身份的控制。
结论:SenseVoice-Small 为 中文、英文、粤语、日文、韩文 5 种语言提供极低耽误的 ASR,性能比 Whisper-small 快 5 倍以上;SenseVoice-Large 支持 50 余种语言的高精度 ASR,在中文和粤语方面相较 Whisper 提升很大。CosyVoice 支持五种语言:中文、英文、日文、粤语和韩文,在零次学习上下文、跨语言语音克隆和依照指令等方面体现出色。
1 FunAudioLLM 模子
1.1 FunAudioLLM 概述
SenseVoice 支持多语言语音辨认,颠末高出 300k 小时的练习。
CosyVoice 可以天生多语言语音,颠末高出 170k 小时的练习,支持五种语言,包罗中文(ZH)、英文(EN)、日语(JP)、粤语(Yue)和韩语(KO)。
1.2 语音明白模子:SenseVoice
图 2:SenseVoice 旨在实行各种语音明白任务,包罗主动语音辨认(ASR)、语言辨认(LID)、语音情绪辨认(SER)和音频变乱检测(AED)。SenseVoice-Small(上):这是一款专为快速语音明白而优化的仅编码器模子。它提供高速处置惩罚,同时支持五种语言。SenseVoice-Large(下):这是一种编码器 - 解码器模子,旨在实现更广泛语言范围内更精确的语音明白。
SenseVoice-Small 是一个非自回归的编码器模子,实用于多语言、多风格的语音辨认以及多个语音明白任务。对于给定输入的音频波形,起首盘算 80 维的对数梅尔滤波器组特性,然后将一连帧堆叠并下采样 6 倍。这些提取特性被映射到编码器的维度,记为𝑋speech∈ℝ𝑇×𝐷,此中𝑇是下采样特性的长度。编码器是一个带有影象功能的自留意力网络。为了指定任务,在语音特性前添加四个嵌入,作为编码器的输入。
𝑉′ 是词汇表,包罗用于 ASR 和其他任务的令牌,e 是四个任务嵌入:
- LID:语音对应的语言,如:中/英文。
- SER:语音情绪标签,如:高兴、伤心、气愤、畏惧等。
- AEC:音频变乱标签,如:音乐、掌声和笑声等。
- ITN/NoITN:将语音转换成带有或不带精确标点和格式的笔墨。
在练习阶段,LID、SER 和 AEC 任务利用交错熵丧失举行优化。ASR 任务利用 CTC 丧失举行优化,它的输入输出均为序列数据,CTC 丧失的最大优点是可以大概处置惩罚输入和输出序列长度不同等的环境,并答应网络在输出序列中插入空缺符号。
SenseVoice-Large 是一种自回归编码器 - 解码器模子,专用于多语言语音辨认(ASR)和多种语音明白任务。类似于 Whisper,SenseVoice-Large 通过一系列输入令牌到解码器来指定任务。
SenseVoice 具有强盛的富文本辨认本领,不但能辨认情绪,还支持声音变乱检测功能。它可以检测到音乐、掌声、笑声、哭声、咳嗽和喷嚏等多种常见的人机交互变乱。从表 1 中可以看到,SenseVoice 辨认到的感情符号如下:
1.3 语义语音分词器
语音标记器将语音信号转换为离散标记 (原理见 论文阅读_语音表现_HuBERT),从而可以通过自回归转换器举行建模和猜测以天生语音。无监视或自监视练习的分词器通常与语义内容的关联较弱,导致合成过程不稳固,而且对干净的练习数据需求量大。
在 SenseVoice 模子乐成的底子上,作者引入了一种监视语义语音标记器,称为 S3。
基于预练习的 SenseVoice-Large 模子,在编码器的前六层后参加了一个向量量化器,如图 -3 所示。量化后参加了额外的位置嵌入以加强时间信息。Encoder1 和向量量化器组合后作为语音分词器,利用最靠近码向量的索引作为语音标记。此向量量化器利用一个包罗 4,096 个条目标大辞书。得到的标记序列频率为 50 Hz,从而镌汰了语言模子中从文本到标记天生的盘算负担。
由于语音分词器颠末了到端练习以镌汰文本辨认错误,提取的标记与文本和副语言信息有很强的语义关系。别的,S3 分词器通过监视练习,进步了对数据噪声的鲁棒性,镌汰了对高质量数据网络的依靠,因此可以利用更广泛的数据来练习模子。这优化了后续的语音合成模子。
|500
1.4 语音合成模子:CosyVoice
CosyVoice 是一种语音天生模子,可以大概天生天然的语音,实用于多种应用场景。它可以处置惩罚多语言语音天生,在没有练习的环境下顺应新语言者,跨语言复制声音,创建带有情绪的语音,并通过指令文本对语音输出举行精致调解。CosyVoice 支持五种语言,包罗中文、英语、日语、粤语和韩语。
我们推出了三个开源模子:第一个是 CosyVoice-base-300M,它善于精确代表语言者身份,无需微调即可顺应差异上下文,还可以跨语言克隆声音。第二个是 CosyVoice-instruct-300M,它擅永天生带有情绪的语音,并答应通过指令文本举行精致调解。末了一个是 CosyVoice-sft-300M,该模子在七个多语言语言者上举行了微调,可以立刻利用。这些模子共享类似的架构和学习框架。
1.4.1 CosyVoice 原理
CosyVoice 团结了基于 Transformer 的自回归语言模子(LM),为输入文本天生语音标记。出下内容来自 CosyVoice 论文。
如图 1 所示,此中 b 为主图,a 和 c 分别与绿色和黄色模块干系。CosyVoice 由四个组件构成:文本编码器(红)、语音标记器(绿)、大型语言模子(白)和条件流匹配模子(黄)。
1.4.1.1 有监视语音的语义标记
在 CosyVoice 中,利用了一个有监视的主动语音辨认(ASR)模子来天生语音的语义标记,如图 1(a) 所示。这个模子是阿里自有的 SenseVoice ASR 模子的微调版本。差异于原始的 ASR 模子,这里将编码器分成两部门,并在中心插入一个矢量量化层。输入一个 Mel 频谱图后,它会颠末位置编码和第一个编码器,以得到上下文感知的表现:
|350
接下来,利用向量量化器(VQ)来得到离散的语音标记。在每个时间点,近来的嵌入索引作为语音标记。盘算公式为:
|400
练习阶段,通过指数移动匀称(EMA)更新码表嵌入:
|300
此中α是预设的衰减系数。这些更新后的代表嵌入作为量化后的隐蔽表现,转达给剩余的编码器层举行处置惩罚:
300
在反面的编码层之前,我们添加了一个额外的位置编码来加强时间信息。在 Encoder2 之后,跟随一个基于 transformer 的 ASR 解码器,猜测文本标签的后验概率。
|300
小编说:与别的工具相比,在 ASR 过程中产出的 speech tokens,可将它看作是码表的调优。
1.4.1.2 TTS 的大型语言模子
将 TTS 任务表现为利用大语言模子(LLM)的自回归语音天生题目。对于 LLM,序列构建是最紧张的,如下所示:
|300
开始 S 和竣事 E 表现序列的起始和竣事。v 是从语音 X 中提取的语言人嵌入向量,通过预练习声纹模子得到。文本编码是通过将文本转达给字节对编码(BPE)分词器和文本编码器得到的:
|300
由于文本和语音标记在差异的语义条理上,因此利用文本编码器举行对齐。
在练习阶段,利用西席逼迫机制,即用左移的序列作为模子输入,原始序列作为渴望输出。
|300
1.4.1.3 最优传输条件流匹配
CosyVoice 利用了一种称为最优传输条件流匹配模子(OT-CFM)的方法,来学习 Mel 频谱图的分布,并根据天生的语音标记来天生样本。在一连时间规范化流(CNFs)中,它从一个初始分布到 Mel 频谱图的数据分布之间构建了一条概率路径。如图 1(c) 所示。
该方法通过一个随时间厘革的矢量场来形貌语音信号的厘革,这个矢量场由一个神经网络来学习。通过办理一个特定的数学题目,即常微分方程,我们可以近似天生语音的分布,并从中采样天生语音。
在练习阶段,自回归语言模子(LM)利用西席欺凌范式举行练习。此过程中,提供标记化文本和左移版本的语音令牌作为输入,以猜测后续的语音令牌(Speech tokens)。
1.4.2 模子练习
在练习阶段,自回归语言模子(LM)接纳西席欺凌范式举行练习。在此过程中,输入的是左移版本的标记化文本和语音令牌,以猜测后续的语音令牌(Speech tokens)。
流匹配模子(The flow matching model)用于估计条件概率 P(S|X, v, Sref)。此中,X 和 v 分别表现语音片断和语言人嵌入,S 和 Sref 分别表现目标和参考语音的梅尔频谱。该模子利用卷积 Transformer U-Net 来确定最优传输 ODE 中先验分布与目标分布之间的矢量场。在推理阶段,只需五到十次迭代即可天生令人满意的梅尔频谱图。别的,还接纳无分类器引导技能,通过屏蔽 70% 到 100% 的前置特性条件来加强上下文学习本领。
在从猜测的梅尔频谱图合成波形时,我们利用改进的 HiFTNet 声码器,以支持流式天生。详细调解请拜见代码发布。
1.4.3 零样本上下文学习
CosyVoice 模子具有零样本上下文学习本领,只需一个简短的语音样本就能复刻恣意声音。在过程中,必要构建输入序列,如图 5 所示。对于同一语言的提示语音和输入文本,将它们归并成一个同一的输入,并将提示语音标记视为预天生内容。利用这个输入序列,自回归 LM 会渐渐猜测下一个标记,直到遇到“序列竣事”标记 E。假如提示语音和输入文本是差异语言,会忽略与提示干系的文本和标记,以防止原语言韵律特性影响目标语言。提示文本(Prompt Text)可以通过人工解释或 ASR 模子(如 SenseVoice)举行转录,而提示标记(Prompt Speech Token)是通过 S3 分词器从提示语音中提取出来的。
在天生语音标记后,将其附加在提示标记之后,形成一个复合条件以供流匹配模子利用。别的,还会团结语言人的嵌入(Spk Emb)和 Mel 频谱图,以进一步加强音色和环境的同等性。
1.4.4 指令微调
为了提升 CosyVoice 的可控性,我们举行了额外的指令微调实验。CosyVoice-instruct 在 CosyVoice-base 的底子上加强了指令跟随本领,支持对语言人身份(即语言者的特性)、语言风格(包罗情绪、性别、语速和音高)以及细粒度副语言特性的控制。这些特性包罗插入笑声、呼吸声、边笑边说以及夸大某些词。表 3 展示了语言人身份、语言风格和细粒度副语言特性的一些例子。
2 数据集
2.1 SenseVoice 的练习集
SenseVoice-Small 模子在约莫 30 万小时的广泛音频数据语料上举行了练习,涵盖中文、粤语、英语、日语和韩语等五种语言。为进一步提升 SenseVoice-Large 的多语种本领,练习语料库中额外整合了 10 万小时的多语种数据。
为了从语音数据中得到丰富的转录标签,我们利用开源的音频变乱检测(AED)和语音情绪辨认(SER)模子来天生伪标签,从而产生广泛而丰富的转录数据集。详细来说,AED 数据为 1.5 亿个条目,而 SER 数据为 3000 万个条目。
2.2 CosyVoice 的练习集
我们利用专门的内部工具举行语音检测、信噪比(SNR)估计、语言人分类和分离。随后,利用 SenseVoice-Large 和 Paraformer 天生伪文本标签。通过力对齐(FA)模子,这些标签得到了细化。这有助于消除低质量数据并进步标点符号的精确性。表 4 提供了各种语言的练习数据连续时间的全面细分。
|400
3 实验
3.1 语音辨认
利用字符错误率(CER)评估五种语言的模子:中文、粤语、日语、韩语和泰语。利用单词错误率(WER)评估全部其他语言的模子。
表 6 中的效果展示了 Whisper、SenseVoice 和 Paraformer 的比力。
(小编说,之前利用阿里 FunASR 工具集语音辨认,在主观体验上,中文方面就已经优于 Whisper)
模子参数比力如表 -7 所示。此中,实时因子(RTF,即转录时间与音频长度的比率)和 10 秒音频耽误(转录 10 秒音频时的匀称时间资本)在 A800 呆板上举行了基准测试。
别的实验的几个指标比力小众,就不在这里贴了。
3.2 语音合成
3.2.1 语音合成质量
通过查抄内容同等性和语言人相似性来评估 CosyVoice 语音合成的质量。
表 10 和表 11 分别列出了英文和中文的效果,对单词错误率(WER)和语言人相似度(SS)的比力。“±”毗连每个评估指标的均值和标准差。
3.2.2 语音合成情绪
为六种感情中的每一种天生并评估 100 个英语话语:快乐、愤怒、伤心、惊讶、恐惊和讨厌。合成文本的内容旨在匹配目标情绪。对 CosyVoice-base 和 CosyVoice-instruct 的感情控制精确率比力。
4 应用
通过集成 SenseVoice、CosyVoice 和 LLMs,FunAudioLLM 提供了多种丰富的应用演示,包罗语音到语音翻译、情绪语音谈天、交互式播客和富有体现力的有声读物旁白。演示版本为 https://fun-audio-llm.github.io。
比方:通过利用 LLMs 的分析本领来辨认书中的情绪,并将其与 CosyVoice 团结,我们实现了具有加强体现力的有声读物,如图 13 所示。LLMs 用于叙述和对话分析、脚色分析及细粒度情绪分析,而 CosyVoice 则以加强的体现力合成语音。
5 试用
假如呆板自己已经有了 PyTorch 2.0+ 的深度学习环境,那么设置环境会非常快。
| - $ git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
- $ cd CosyVoice
- $ pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
- $ mkdir pretrained_models -p
- $ 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
- $ python webui.py
复制代码 | 留意:
- 假如在 Docker 内部启动,请修改 webui.py 中的 server_name 为 '0.0.0.0',而且不要忘记映射端标语。
- 假如必要利用 instruct 模子,请在运行时指定:--model_dir pretrained_models/CosyVoice-300M-Instruct/
- instruct 的提示词请参考其论文表 3 中的示例,许多自己想到的内容大概不起作用。
6 参考
- 阿里炸裂开源两个神级语音模子
- 阿里通义音频天生大模子 FunAudioLLM 开源
- 阿里语音天生大模子CosyVoice:开源模子效果测试
7 利用体验
(仅代表我个人观点)
- 资源和效能
- 模子非常小,仅 300M,资源占用方面非常友爱。
- 利用 1080ti GPU 的呆板上,每秒处置惩罚 8 个字,对话根本够用。
- 依靠 torch 代码,以是 image 并不小,最好与其他深度学习模子共用库。
- 利用体验
- 团体体验不错,但没有特殊惊艳。官方示例效果很好,发起自己切身试试。
- 声音清晰度没题目,可以感觉到练习数据是高品格的。
- 合成后的声效固然不是标准播音腔,但相对天然。
- 音色克隆效果尚可,不能渴望录 3-6 秒就能完全复刻韵律,韵律还通过文本设定。
- gradio 界面计划精良,一键启动主动下载,关键元素清晰明白,学习资本低。还在 gradio 中增长了录制功能,方便复刻自己的声音。
- 论文中列出的提示词效果很好,用他示例的提示词唤出了我想要的声优效果;但别的自己写的不太行。不确定模子对哪些提示词更敏感。
- 测试 sft 中七个声音的精调(设置 seed 无效),达不到声优效果。
- 必要提示工程:找到符合的提示词和洽的声音 seed 组合大概会有很好的效果,但必须一个一个去实验。
- 可控度没有想象中那么好,用差异的 seed 也没有 ChatTTS 天生的个性化水平高。
|