CosyVoice-2.0 语音生成大模型升级

CosyVoice 2: Scalable Streaming Speech Synthesis with Large Language Models

[Paper] [Code] [Studio] [HuggingFace] [ModelScope]

CosyVoice是阿里巴巴通义实验室语音团队于今年7月份开源的语音生成大模型,依托大模型技术,实现自然流畅的语音生成体验。与传统语音生成技术相比,CosyVoice具有韵律自然、音色逼真等特点。自开源以来,CosyVoice凭借高品质的多语言语音生成、零样本语音生成、跨语言语音生成、富文本和自然语言的细粒度控制能力获得了广大社区开发者们的喜爱和支持。

CosyVoice迎来全面升级2.0版本,提供更准、更稳、更快、 更好的语音生成能力。

超低延迟:CosyVoice 2.0提出了离线和流式一体化建模的语音生成大模型技术支持双向流式语音合成,在基本不损失效果的情况下首包合成延迟可以达到150ms

高准确度:CosyVoice 2.0合成音频的发音错误相比于CosyVoice 1.0相对下降30%~50%,在Seed-TTS测试集的hard测试集上取得当前最低的字错误率合成绕口令、多音字、生僻字上具有明显的提升。

强稳定性:CosyVoice 2.0在零样本语音生成和跨语言语音合成上能够出色地保证音色一致性,特别是跨语言语音合成相比于1.0版本具有明显提升

自然体验:CosyVoice 2.0合成音频的韵律、音质、情感匹配相比于1.0具有明显提升。MOS评测分从5.4提升到5.53(相同评测某商业化语音合成大模型为5.52)。同时, CosyVoice 2.0对于指令可控的音频生成也进行了升级,支持更多细粒度的情感控制,以及方言口音控制

▎核心模型与算法亮点

CosyVoice 2.0采用和CosyVoice 1一致的LLM+FM的建模框架,但是在具体实现上进行了如下几个要点的算法优化:

1)LLM backbone:CosyVoice 2.0采用预训练好的文本基座大模型(Qwen2.5-0.5B)替换了原来的Text Encoder + random Transformer的结构。采用LLM进行初始化能够更好的进行文本的语义建模,使得在可控生成,音频和文本的情感匹配,多音字发音上会有明显的收益。

2)FSQ Speech Tokenizer:CosyVoice 1.0采用VQ来提取Supervised semantic codec,码本大小为4096,但是有效码本只有963。CosyVoice 2.0采用了FSQ替换VQ,训练了6561的码本,并且码本100%激活。FSQ-Speech Tokenizer的使用使得CosyVoice 2.0在发音准确性上有明显提升。

3)离线和流式一体化建模方案:目前主流的语音生成大模型(CosyVoice, F5-TTS,MaskGCT,GPT-SoViTs等)均不支持流式语音生成。CosyVoice 2.0提出了如图2所示的离线和流式一体化建模方案,使得LLM和FM均支持流式推理,接收5个文字就可以合成首包音频,延迟大致在150ms。同时合成音质相比于离线合成基本无损。

4)指令可控的音频生成能力升级:优化后的 CosyVoice 2.0 在基模型和指令模型的整合上取得了重要进展,不仅延续了对情感、说话风格和细粒度控制指令的支持,还新增了中文指令的处理能力。其指令控制功能的扩展尤为显著,现已支持多种主要方言,包括粤语、四川话、郑州话、天津话和长沙话等,为用户提供了更丰富的语言选择。此外,CosyVoice 2.0 也引入了角色扮演的功能,如能够模仿机器人、小猪佩奇的风格讲话等。这些功能的提升还伴随着发音准确性和音色一致性的显著改善,为用户带来了更自然和生动的语音体验。

▎支持的功能:

🎧 音色复刻:语音克隆/Zero-shot In-context Generation(语音续写)

🎧 多语言合成一个文本,分别用中文,英文,日语,韩语多个语言来说

🎧 混合语种合成:支持 文本中同时出现 中文/英文/日语/韩语等。

🎧 多情感合成:#厌恶# 今天又是打工人的一天;#恐惧#啊已经9点了,怎么办,我要迟到了!#愤怒#都怪昨晚他非要拉我看电影,害我睡晚了!#平静#今年的年假都用光了,#开心#不过没关系,马上要放假啦!

🎧 不同指令合成

(神秘<|endofprompt|>古老城堡笼罩在神秘的雾气中,吸引着无数冒险者前去探索奥秘。

小猪佩奇<|endofprompt|>在忙碌之余,我和朋友像小猪佩奇一样,常去公园享受简单的快乐。

四川话<|endofprompt|>而这些幽默的瞬间仿佛让我置身于四川的宽窄巷子,享受那份安逸。

用伤心的语气说<|endofprompt|>收到拒信的那一刻,我感到无比伤心。虽然知道失败是成长的一部分,但仍然难以掩饰心中的失落。

慢速<|endofprompt|>听着轻柔的音乐,我在画布上慢慢地涂抹色彩,让每一笔都充满灵感和思考。

追求卓越不是终点,它需要你每天都<strong>付出</strong>和<strong>精进</strong>,最终才能达到巅峰。)

🎧 绕口令:黑化肥发灰,灰化肥发黑,黑化肥挥发会发黑,灰化肥挥发会发灰。

🎧 生僻字:煢煢孑立 沆瀣一氣 踽踽獨行 醍醐灌頂 綿綿瓜瓞 奉為圭臬 龍行龘龘

🎧 多音字:天气暖,小王在家泥抹墙;

Demo体验:

>>>创空间地址:https://www.modelscope.cn/studios/iic/CosyVoice2-0.5B

可以支持用户上传音频文件或录音方式进行语音复刻。同时支持流式推理,用户无需等待全部音频合成完毕即可体验效果。

CosyVoice 2支持音色克隆以及自然语言控制的音频生成,可以选择相应的推理模式。

1)3s极速复刻

  • 输入待合成文案
  • 选择是否流式推理,流式推理具有更低的延迟,离线推理具有更好的上限效果
  • 上传prompt音频,或者录制prompt音频
  • 点击生成音频,等待一会儿就会听到合成的音频。

2)自然语言控制

  • 输入待合成文案
  • 上传prompt音频,或者录制prompt音频
  • 输入instruct文本:例如“用粤语说这句话”,“用开心的语气说”,“模仿机器人的声音”等
  • 点击生成音频,等待一会儿就会听到合成的音频。

补充v1版本

CosyVoice: A Scalable Multilingual Zero-shot Text-to-speech Synthesizer based on Supervised Semantic Tokens

CosyVoice 1.0DemosPaperModelscope

V1版本cosyvoice

论文解读:

摘要

 CosyVoice,这是一种基于监督离散语音标记的多语言语音合成模型。通过使用两种流行的生成模型:语言模型 (LM) 和流匹配进行渐进式语义解码,CosyVoice 在语音上下文学习中实现了高韵律自然度、内容一致性和说话人相似性。最近,多模态大型语言模型 (LLMs,其中响应延迟和语音合成的实时因子在交互体验中起着至关重要的作用。因此,在这项工作中,我们引入了一种改进的流式语音合成模型 CosyVoice 2,并进行了全面和系统的优化。首先,我们引入有限标量量化来提高语音标记的码本利用率。其次,我们简化了文本-语音 LM 的模型架构,以便可以直接使用预训练的 LLMs 作为主干。此外,我们还设计了一个 chunk-aware 【数据块感知】因果流匹配模型,以适应不同的 synthesis 场景。因此,我们可以在单个模型中执行 streaming 和非 streaming 合成。通过在大规模多语言数据集上进行训练,CosyVoice 2 实现了与人类相当的合成质量,具有非常低的响应延迟和实时系数。

CosyVoice 2,这是一种流式零样本 TTS 模型,具有改进的韵律自然度、内容一致性和说话人相似性。我们的贡献包括:

  • 将流式和非流式合成统一在一个框架中,并提出统一的文本语音语言模型和块感知因果流匹配模型,与离线模式相比,实现了无损流式合成
  • 通过移除文本编码器和说话人嵌入来简化 LM 架构,允许预先训练的文本大型语言模型 (LLMs) 作为主干,增强上下文理解。
  • 用有限标量量化 (FSQ) 替换语音分词器中的矢量量化 (VQ),提高码本利用率并捕获更多语音信息。
  • 升级指示式 TTS 容量以支持更多指令,包括情感、口音、角色风格和精细控制。在 CosyVoice 2 中,指令和零镜头容量集成到一个模型中,实现更通用、更生动的合成。

通过以上系统性的修改和优化,CosyVoice 2 实现了人偶校验的合成质量,并且在 streaming 模式下几乎无损。统一框架放宽了部署要求,使单个模型能够同时支持流式和非流式合成。升级后的 instructed TTS 容量为用户生成各种语音提供了更强大、更轻松的方法。此外,块感知流匹配设计也可以应用于 NAR TTS 模型,这表明了流式 NAR 模型的潜力。

CosyVoice 2

图 1:CosyVoice 2 概述。(a) 演示了监督式语音分词器,其中虚线模块仅在训练阶段使用。(b) 是用于流式处理和非流式处理合成的统一文本-语音语言模型。虚线表示推理阶段的自回归解码。(c) 说明了在概率密度路径上时间步t对说话人嵌入 𝐯、语义标记 μ、掩蔽语音特征 X~和中间状态 Xt的因果流匹配模型条件。

CosyVoice 2 建立在与前代 类似的设计理念之上,将语音信号的语义和声学信息分离出来,并独立建模。语音生成过程被重新定义为一个渐进的语义解码过程,其中条件信息逐渐被纳入。具体来说,文本-语音语言模型 (LM) 只关注语义信息,将高级文本标记解码为监督式语义语音标记。在 Flow Matching 模型中,通过说话人嵌入和参考语音引入声学细节(例如音色),将语音令牌转换为给定说话人的 Mel 频谱。最后,预先训练的声码器模型恢复了相位,将 Mel 频谱转换回原始音频信号。下面将从文本分词器、监督语义语音分词器、流式/非流式合成的统一文本语音 LM 和分块感知流式匹配模型五个方面介绍 CosyVoice 2 的细节和流式合成的修改。

Text Tokenizer

CosyVoice 2 直接使用原始文本作为输入,并使用基于 BPE 的文本分词器进行分词。这消除了对通过字素到音素 (g2p) 转换获取音素的前端模型的需求。这种方法不仅简化了数据预处理工作流程,还使模型能够以端到端的方式学习各种上下文中单词的发音。与文本 LLMs,CosyVoice 2 屏蔽了一对多的分词。这可以防止令牌的发音变得过长,并减少由数据稀疏引起的极端情况。具体来说,如果 BPE 令牌编码多个中文字符,它将被屏蔽掉,并且每个字符将在分词化过程中单独编码。其他语言(如英语、日语和韩语)不受特殊处理。

Supervised Semantic Speech Tokenizer

将有限标量量化 (FSQ) 模块插入 SenseVoice-Large ASR 模型的编码器中。在训练阶段,输入语音 X 通过 获得 Encoder1 中间表示,其中 Encoder1 由六个带有旋转位置嵌入 的 Transformer 块组成。然后,将中间表示馈送到 FSQ 模块进行量化,并将量化表示传递给 SenseVoice-Large 模块的其余部分,包括 Encoder2 和 ASR⁢Decoder ,以预测相应文本标记的后验概率。

补充FSQ:FINITE SCALAR QUANTIZATION: VQ-VAE MADE SIMPLE

2023 年 google 发表的文章,可以用于文本、视频生成领域中。提出一种称为有限标量量化(FSQ)的简单方案来替换 VQ-VAEs 中的向量量化(VQ)。解决传统 VQ 中的两个主要问题:需要避免 codebook collapse (码码本坍塌:就是大部分codebook elements都没有被用到,多个码字可能会变得非常相似,甚至完全相同。)的辅助损失【在损失函数中添加一个辅助损失项,迫使码字之间保持一定的距离,或者保持其多样性】、大 codebook size 情况下码本利用率低。FSQ 作用:消除辅助损失、提高码本利用率、作为 VQ 的可替换组件

传统的编码器所得到的表征向量z中的每一个元素(标量)的值并没有一个明确的边界,也就是说z在特征空间中不受任何约束。那么,作者就想到了为z中的每个标量都设定好取值的范围和能够取值的个数。假设有一个d维特征向量z,将每个标量zi​都限制只能取L个值,将zi​→⌊L/2⌋tanh(zi​)然后四舍五入为一个整数值。例如图中所示,取d=3,L=3,代表C={(−1,−1,−1),(−1,−1,0),…,(1,1,1)},一共有27种组合,即一个3维向量的每个标量都有三种值的取法。值得一提的是,FSQ中的codebook不像VQ-VAE那样是显式存在的,而是隐式的,编码器直接输出量化后的特征向量z^。因此,FSQ也就没有了VQ-VAE损失的后两项了。

FSQ 的优点是不会遭受码本坍塌(codebook collapse),并且不需要 VQ 中为了避免码本坍塌而使用的复杂机制(承诺损失、码本重新播种、码分割、熵惩罚等)

在 FSQ 模块中,首先 H 将中间表示投影到 D 维低秩空间中,并且每个维度的值通过有界四舍五入操作ROUND 量化到区间[−K,K]。然后,量化后的低秩表示 Hˉ 被投影回原始维度 H~,以供后续模块使用。

在训练阶段, straight-through estimation用于近似 FSQ 模块 和 Encoder1 的梯度。 语音标记 μi 可以通过计算 (2⁢K+1) -ary 系统中量化的低秩表示 h¯i 的索引来获得:

语音分词器以 25 Hz 的令牌速率工作,即每秒 25 个语音令牌。

Unified Text-Speech Language Model

CosyVoice 2 中,使用预训练的文本Qwen2.5-0.5B 作为文本-语音语言模型,以输入文本作为提示自动回归生成语音标记。与其他 LM 类似,文本语音 LM 也采用下一个标记预测方案进行训练,如图 1(b) 所示。与之前的 CosyVoice 不同,我们去除了说话人嵌入,以避免信息泄漏。更重要的是,我们发现这种话语级别的向量不仅包含说话人身份信息,还包含语言和副语言信息,这会影响文本-语音语言模型的韵律自然性和跨语言能力。此外,我们还放弃了之前 CosyVoice 的文本编码器,因为我们发现 Qwen2.5-0.5B 模型已经足够强大,可以对齐文本和语音标记,因此不再需要文本编码器。

受益于文本语音 LM 的简单性,我们可以为流式和非流式合成构建一个统一的模型。在这里,“流模式”意味着输入文本以连续流的形式接收,而不是提前被称为完整的句子。在 CosyVoice 2 中,推流模式和非推流模式的区别只是 LM 的序列构建方式

  • 对于非流模式,“序列开始”S、所有文本标记、“语音转换”T标记、所有语音标记和“序列结束”E按顺序连接,如图 2 底部所示。Ignore 标记表示忽略它们的损失,同时最小化交叉熵目标函数。
  • 流式模式下,我们将文本和语音标记按预定义的比例 N:M 混合,即每 N 个文本标记后跟着 M 个语音标记,如图 2 的顶部所示。如果下一个标记是文本标记,模型会预测一个填充标记(而不是文本标记),该填充标记表示接下来的 N个文本标记应该在推理阶段进行连接。【方便推理时候获取输出的语义token】,当文本标记用尽时,“语音轮次”标记 T和剩余的语音标记会被顺序连接,形成流式模式下的混合文本-语音标记序列。

通过同时在上述两个序列上训练文本-语音 LM,我们可以在单个统一模型中执行流式和非流式语音生成。在实际场景中,例如说话人微调 (SFT) 和上下文学习 (ICL),推理序列有所不同,如下所示:

 ICL,非流式:在 ICL 中,LM 需要来自参考音频的提示文本和语音标记以模仿重音、韵律、情感和风格。在非流式处理模式下,提示和要合成的文本标记连接为整个实体,提示语音标记被视为预先生成的结果并固定:“S 、 prompt_text、 text 、T、 prompt_speech”。LM 的自回归生成从此类序列开始,直到检测到 “End of sequence” 标记。

 ICL,流式处理:在此方案中,我们假设要生成的文本是已知的,并且语音令牌应以流式处理方式生成。同样,我们将 prompt 和 to-generate 文本视为一个整体。然后,我们将其与提示语音标记混合,比例为 N : M : “S, mixed_text_speech,T,remaining_speech”。如果文本长度大于提示语音 Token 的长度,LM 将生成 “filling token”。在这种情况下,我们手动填充 N个文本标记。如果文本令牌用完,将添加“Turn of speech” T 令牌。在流式处理模式下,我们为每个 M 令牌返回生成结果,直到检测到 E为止。

SFT,非流式:在 SFT 场景中,LM 针对特定说话人进行微调,不再需要提示文本和语音。因此,初始序列非常简单:“ S, 文本 ,T ”。从此开始,文本-语音 LM 可以自动回归生成语音标记,直到 E结束。

SFT, Streaming: 在 SFT 的流模式下,我们从以下序列开始语音生成:“ S,first_N_text”。然后,LM 将生成 M 语音令牌,我们手动填充下一N个 文本令牌。我们重复上述过程,直到所有文本标记都用完,然后添加 T 。注意,speech-to-speech多模态大语言模型也可以采用这种模式,以获得极低的延迟。

Chunk-aware Flow Matching

采用梅尔频谱图作为声学特征,帧率为 50 Hz采样率为 24000。由于语音令牌和 Mel 特征之间的帧速率不匹配,我们以 2 的比率对语音令牌进行上采样以匹配 Mel 频谱图的帧速率。在上采样操作之前,我们添加了一个额外的前瞻卷积层,以便为以下因果模块提供未来信息。前瞻层由右填充的一维卷积实现,其填充大小为  P, 卷积核大小为 P+1 。在此之后,几个chunk-aware causal Transformer blocks来对齐语音标记的表示空间以匹配声学特征。

随后,我们的目标是将语音标记进一步解码为由说话人嵌入和参考语音指定的 Mel 频谱图。 为了实现这一目标,我们采用条件流匹配 (CFM) 模型对 Mel 频谱图进行采样,给定语音标记、参考语音和说话人嵌入作为条件。 在 CFM 模型中,目标 Mel 三维频谱图的分布由来自先验分布 p0⁢(X) 和数据分布 q⁢(X) 的概率密度路径 来描述。概率密度路径可以由瞬态向量场定义。 为了提高采样效率,我们采用最佳传输 (OT) 流来匹配矢量场 。

在训练阶段,掩码 Mel 频谱图是通过随机掩码 70% 到 100% 的最终帧来获得的 X1 。至于推论,它由从参考语音中提取的 Mel 频谱图提供。 通过最小化预测 ODE 和真实 ODE 之间的 L1 损失,我们可以按如下方式优化 UNet 参数 θ :

因果流匹配模型:当前的流匹配模型总是以离线模式工作,即只有在生成所有语音标记后,Mel谱图才能被采样,这对于流式合成并不友好。为了解决这个问题,我们将多步流估计视为一个堆叠的深度神经网络,该网络重复使用 UNet 十次。因此,通过使展开的神经网络具有因果性,我们可以将其应用于流式合成。我们构造了四个掩码,以满足不同的应用情况:

Non-causal Mask 

非因果掩码 (Non-causal Mask) 用于离线模式,通过满足所有条件帧来实现最佳性能。非因果掩码适用于对延迟不敏感的情况。

Full-causal Mask

 全因果掩码 (Full-causal Mask) 适用于需要极低延迟的场景,其中只能观看过去的帧。

Chunk-M Mask

可以通过牺牲更多延迟来实现离线模式的近似性能,这可用于级联生成 Chunk 以获得更好的性能。

Chunk-2⁢M Mask

可以通过牺牲更多延迟来实现离线模式的近似性能,这可用于级联生成 Chunk 以获得更好的性能。

对于小批量中的每个训练案例,我们从均匀分布下的上述四个掩码中随机采样一个掩码。这样,一个流匹配模型可以兼容不同的场景,降低部署复杂度。这种块感知训练的另一个优点是,具有更多上下文的掩码可以作为具有较少上下文的掩码的教师,受益于隐含的自我蒸馏方案。

流式处理模式的延迟分析

首包延迟是流式合成模型的一个重要指标,它显着影响用户体验,尤其是在基于 LLM 的语音聊天应用程序中,例如 GPT-4o 。 在 TTS 的上下文中,要合成的文本是事先已知的,延迟来自语音令牌生成、梅尔频谱图重建和波形合成等方面。 因此,CosyVoice 2 的首包延迟 LT⁢T⁢S 可以得到如下:

其中 dl⁢m ,表示 LM 生成一个语音词元的计算时间, df⁢m 表示 Flow Matching 模型生成一个语音词元的梅尔频谱图帧的计算时间, dv⁢o⁢c 表示声码器合成一个语音词元对应的波形的计算时间。 在基于 LLM 的语音聊天上下文中,还应考虑 first-package-required 文本的长度,first-package 延迟 LC⁢h⁢a⁢t 如下

其中 dl⁢l⁢m 表示 LLM 生成一个文本 Token 的计算时间。请注意,由于多字符标记在 CosyVoice 2 的文本分词器中被屏蔽,因此文本 LLMs总是比 CosyVoice 2 使用的文本标记编码更长的原始文本。因此,第一个包的延迟 LC⁢h⁢a⁢t 必须低于 N⋅dl⁢l⁢m 和  LT⁢T⁢S的和。

Instructed Generation

为了增强 CosyVoice 2 的可控性,我们将 indirected 数据集集成到基础训练集中。我们收集了 1500 小时的定向训练数据,其中包括自然语言指令和细粒度指令,如表所示。对于自然语言指令,我们在要合成的输入文本之前预置自然语言描述和特殊结束标记“<|endofprompt|>”。这些描述涵盖情感、语速、角色扮演和方言等方面。对于细粒度的指令,我们在文本标记之间插入人声爆发,使用“[laughter]”和“[breath]”等标记。此外,我们将 vocal feature 标签应用于短语;例如,“<strong>XXX</strong>”表示强调某些词,而“<laughter>XXX</laughter>”表示笑声说话。

Multi-Speaker Fine-tuning

在特定说话人 (SFT) 上微调预训练模型可以进一步提高生成质量和说话人相似度。在本报告中,我们介绍了多扬声器微调 (mSFT),其中预训练模型同时在多扬声器上进行微调,而不是在单个扬声器上进行微调。这种方法可确保跨多个说话人的全面韵律和发音覆盖,并减少预训练模型可能出现的灾难性遗忘。为避免不同说话人之间的音色混淆,我们在特定说话人的输入文本前加上说话人提示标记“Speaker A<|endofprompt|>”。如果训练样本未标记为说话人,则使用特殊标签“unknown<|endofprompt|>”。在整个多说话人微调过程中,学习率设置为 1e-5。

Reinforcement Learning for SFT

强化学习是大型语言模型训练中常用的方法,它可以使 LM 输出与人类偏好保持一致。 在 CosyVoice 2 中,我们采用 ASR 系统的说话人相似度 (SS) 和识别词错误率 (WER) 作为奖励函数,以提高微调阶段的说话人相似度和发音准确性。我们使用 WER 和 SS 来区分首选样品 xw 和不合格样品 xl ,并通过直接偏好优化 (DPO)  优化 TTS 系统,如下所示:

Experimental

Training Data for Speech Tokenizer

一个 200000 小时的数据集用于训练语音分词器,并将规范化转录作为标签。详细的数据信息如表所示。训练数据来自三种不同的资源:开源 ASR 数据集、内部工业数据集和 TTS 生成数据集。虽然我们在训练语音分词器时只使用了中英文数据,如表 所示,但随后的实验表明,语音分词器对其他语言具有零镜头能力。它还可用于日语和韩语等语言的语音合成

Training Data for CosyVoice 2

CosyVoice 2 与之前的版本共享相同的训练数据。我们首先使用内部语音处理工具收集纯语音数据。随后,Paraformer 和 SenseVoice分别用于生成中文和其他语言的伪文本标签。我们还采用内部力对齐模型来过滤掉低质量的数据并提高标点符号的准确性。表 3 提供了数据详细信息:

Experimental Results

Evaluations on Speech Tokenizer

理想的语音分词器应该有效地利用码本,以高保真度保留信息,并展示说话人的独立性。在这部分,我们从四个方面评估我们的监督语音分词器:1) 码本利用率;2) 整个编码器内的 ASR 错误率;3) 不同说话人的令牌可视化;4) 说话人识别培训。表 4 显示了码簿利用率和 ASR 错误率。事实证明,基于 FSQ 的分词器充分利用了码本,从 ASR 方面维护了更有效的信息,表明 FSQ 维护的语义信息更多。

Comparison Results with Baselines:

我们首先在有限的英语文本域上评估了我们的 CosyVoice 2 模型,并将其与几个开源模型进行了比较,例如 ChatTTS、GPT-SoVITs 、OpenVoice、ParlerTTS、EmotiVoice 及其前身 CosyVoice。客观结果如表 5 所示,包括内容一致性 (WER)、语音质量 (NMOS) 和说话人相似度 (SS)。从表中我们可以看到,CosyVoice 2 在 Librispeech 测试清理集上实现了最先进的性能,超越了所有基线模型和所有评估指标。值得注意的是,CosyVoice 2 甚至表现出比人类话语更高的内容一致性、语音质量和说话人相似度,这表明其人类奇偶校验的合成质量。

表 5:LibriSpeech 测试清理基线子集和 CosyVoice 2 上的内容一致性 (WER)、说话人相似度 (SS) 和语音质量 (NMOS) 结果。Whisper-Large V3 用作 ASR 模型,并且在 WER 计算之前排除标点符号。

Modular Ablation Study

我们对文本语音语言模型进行了模块化消融研究,以评估我们的修改的影响,包括 LLM 初始化、删除说话人嵌入和利用 FSQ。表 7 展示了 CosyVoice 2 在前代产品的基础上的逐步发展。通过将随机初始化的语言模型替换为预训练的 LLM),我们在 test-zh 和 test-hard 集上的内容一致性分别实现了 18.46% 和 15.40% 的相对改进 。接下来,我们从文本转语音语言模型中删除了说话人嵌入,这有助于防止上下文学习中的信息泄露和干扰。这一变化导致内容错误显著减少,同时保持说话人相似性,表明内容信息主要由 LM 建模,说话人信息主要由流匹配模型恢复。最后,通过将 VQ 替换为 FSQ,我们实现了 CosyVoice 2 模型,注意到更高的内容一致性和不变的说话人相似度。通过充分利用码本,FSQ 可以捕获更多的内容信息和上下文变化,从而更好地协调文本和语音令牌。此外,我们通过在基于 FSQ 的语音标记器的训练过程中将音高损失作为约束条件进行了比较实验。我们发现这种方法可以提高下游 TTS 任务的性能,如表 7 的最后一行所示。在 CosyVoice 的未来版本中,我们计划进行更详细的实验和分析。

Results on Japanese and Korean Benchmarks

除了中文和英文,CosyVoice 2 还支持日语和韩语。我们在构建的日语和韩语测试集上评估了内容一致性、说话人相似度和语音质量。如表 9 所示,在所有评估指标中,CosyVoice 2 在韩语上的表现明显优于日语。这种差异主要是由于日语和中文之间的字符集重叠,这导致日语上下文中的中文发音。在未来的工作中,我们计划探索增强多语言合成的语言上下文的方法。由于韩语与其他语言没有字符重叠,因此其语音合成性能要好得多。另一个问题是数据不平衡。我们相信,增加训练数据量可以进一步提高日语和韩语的综合性能。

Results on Instructed Generation

为了评估 instructed generation 的性能,我们创建了一个包含 290 个样本的中文测试集。这组指令包括 29 种类型的指令,如表 2.6 所示,每种指令都有 10 种不同的输入文本。我们使用来自 5 个说话人(3 个女性和 2 个男性)的 5 个音频提示和说话人嵌入作为 flow matching 模型的条件。我们的测试以离线模式进行。我们客观地评估了内容一致性 (CER)、说话人相似度 (SS) 和语音质量 (NMOS)。主观上,我们使用教学平均意见分数 (MOS-I) 评估教学的准确性和自然性,范围从 1 到 5。每个样本由 10 名以中文为母语的人进行评估,分数以 0.5 为增量分配。评估标准侧重于语音是否遵守所有指定的指令,例如情感表达、语速调整、方言使用和角色扮演。精细的控制(包括插入笑声、笑声说话、呼吸控制和强调)将评估其自然性和准确性。如表 10 所示,CosyVoice 2 表现出卓越的内容一致性 (CER)、说话人相似性 (SS) 以及指令控制 (MOS-I) 的准确性和自然性,同时保持了与 CosyVoice-Inspire 相当的语音质量。当从 CosyVoice 2 中删除输入指令时,MOS-I 明显下降;然而,在内容一致性 (CER) 、说话人相似度 (SS) 和语音质量 (NMOS) 方面观察到改善。这表明指令可控性很难从内容文本中隐式出现。

Results on Speaker Fine-tuned Models

在微调阶段,我们对同一扬声器的扬声器嵌入采用无监督聚类,以确保扬声器音色的稳定性。我们已经证明,只有 400 个音频记录的目标说话人可以实现相当好的语音合成性能,在不同说话人之间观察到的客观指标仅存在轻微差异,如图 6 所示。我们的实验表明,大多数说话人可以继承零镜头 TTS 模型的稳健上下文理解和感知,从而自然地表达各种情绪和情绪以响应输入文本。

LLM Fine-tuning with Reinforcement Learning

尽管 SFT 可以提高大多数扬声器的性能,但 Spk E 的结果仍然比基本模型差,尤其是在英语上。因为 Spk E 的声音更复杂,说话速度更快。此外,只有 Chinese 录音可用于 Spk E。因此,我们在 Spk E 上应用强化学习以进一步改进。对于 DPO,我们通过 SFT 模型合成了 10,000 个样本对,以改变 ASR 和 SS 奖励对 LM 的偏好偏差。我们还使用可微分的 ASR 奖励来优化 LM 参数。在 RL 之后,我们在 Spk E 测试集上用内容一致性 (WER)、说话人相似度 (SS) 和语音质量 (NMOS) 评估模型,并进一步评估 SeedTTS 测试集上的 WER,以探索模型是否可以保持对域外或跨语言输入文本的鲁棒性。结果如表 11 所示

与预先训练的基础模型相比,SFT 模型显示出更高的说话人相似度和语音质量,但是,WER 可能比基础模型差。我们发现,基本模型合成的音频总是比 SFT 和真实值慢,这对 ASR 系统更友好。对于目标说话人数据集,偏好偏差和可微分奖励都可以降低 WER,而对其他两个指标的有害影响很小。但对于 SEED 测试集,基于 DPO 的强化仅对中文和英文子集有益,而硬样本会更差。原因可能是硬样本包含许多重复的单词或短语,在 DPO 训练期间可以被视为被拒绝的样本。但是,可微分的 ASR 奖励不会遇到这个问题,因为它可以直接通过 ASR 后验优化 TTS 系统。这意味着可微分的 ASR 奖励在域外情况下具有更好的泛化能力。最后,我们可以将它们相互组合以进行进一步改进。

Conclusion 

在 CosyVoice 成功的基础上,本报告介绍了 CosyVoice 2,这是一种改进的流式语音合成模型,它利用了大型语言模型。通过将流式和非流式合成统一在一个框架中,CosyVoice 2 实现了人类奇偶校验的自然性、最小的响应延迟和流式模式下几乎无损的合成质量。关键创新包括用于充分利用码本的有限标量量化、包含预训练文本LLMs,以及开发块感知因果流匹配模型以支持不同的合成场景。此外,指令 TTS 能力的改进允许通过对情感、口音、角色风格和人声爆发的精细控制,生成多功能和生动的语音。通过系统的修改和优化,CosyVoice 2 不仅提供了卓越的合成质量,而且放宽了部署要求,使其适用于流式和非流式应用。我们相信 CosyVoice 2 代表了可扩展、高质量和交互式文本转语音合成的重大进步。

The flow matching model:流匹配模型

最近, Flux.ai的 Flux 系列模型因各种原因而受到科技界和非科技界的广泛关注,模型速度快、易于使用(这要归功于扩散器(diffusers))并且易于调整(再次感谢扩散器)。但是,Flux 出色的图像文本对齐和高质量生成背后的原因是一种超越标准扩散过程的新方法,称为“流匹配(Flow matching)”。

每个生成模型(generative model)理想情况下都是密度估计(density estimaor);因此模拟概率密度,最终是 JPD,具有两个预期特征,即采样和压缩,压缩基本上是将数据推送到信息空间,这似乎是较低维的,而采样是从任何特征分布(z)开始生成 P(x|z) 的能力,可以是正态分布(如 VAE 的情况),因此,在非常高的层次上,我们试图找到将 z 映射到 x 以及将 x 映射到 z(采样和压缩)的映射/函数。

什么是 Flow Matching?

Flow Matching 是一种用于训练生成模型的方法,它基于对流(flow)的概念。在生成模型中,“flow”通常指的是通过可逆的变换(reversible transformation)逐步将复杂的分布映射为简单的分布(如高斯分布),从而使生成模型能够更容易地对复杂数据进行建模。Flow Matching 的目标是通过最小化模型生成的流与真实数据分布的流之间的差异,来学习一个能够生成高质量样本的模型。

在 Flow Matching 中,通过对训练过程中每一步的匹配进行建模,模型逐渐学习如何从简单的噪声分布中生成复杂的目标数据。这种方法可以用于解决传统生成模型中一些难以处理的问题,如模式崩溃(mode collapse)等。

假设两个 PDF,一个表示为 z(潜在或可处理分布),另一个表示为 X(数据分布),因为我们想要找到一个可以将 z 映射到 x 的函数,我们会得到 X 和 Z 密度之间的关系,这必然指出假设 X 和 Z 是共轭分布(变换前后同一家族 z 的分布),X 和 Z 的变化应该是相对的,因此,X 的变化是 Z 的某个函数,反之亦然。但是,按某个量缩放。这个量由雅可比矩阵给出的 z 和 x 之间每个维度的变化表示,在非常简单的尺度上,它基本上是 Z 和 X 之间变量的变化。但是,它不是那么简单,因为 X 和 Z 实际上并不共轭,因此,我们只剩下迭代采样和近似方法,比如最佳传输或吉布斯采样(用于 RBM)。鉴于这些限制,大多数方法都绕道去模拟分布并近似非精确映射,而像 Normalizing flow 这样的方法则做出简化假设,使计算和公式易于处理,形式为 p(x)dx = p(z)dz,可以将其重新表述为两个项,第一个是 MLE 项,第二个是雅可比行列式。

(标准化是因为变量的变化总是给出一个标准化的密度函数,流动是因为它迭代地模拟从源到目标的轨迹/流动)

问题从这里开始,这样的函数存在需要两个条件,

1. p(x,z) 的 MLE 公式必须是双射的。

2. 雅可比矩阵的行列式是可有效计算的。

要解决这个问题,我们需要假设 z 和 X 之间的状态依赖性,使得它是双射的并且行列式可以有效计算,有三种主要方法

1. 耦合块:基本上你将 z 分成两块,只有最后 k 值预测 X 的最后 k 值(通过基于均值/方差的采样),X 的其他部分基本上是 z 的直接复制,这有何帮助?由于这种方法,雅可比矩阵变成了对角矩阵,左上角(<k)部分是恒等矩阵,右下角(>=k)变成元素乘积,右上角变成 0,因为 z(<k)和 x(>=k)之间没有依赖关系,因此,雅可比行列式的计算是有效的。

2. AR 流或自回归流是下一个合乎逻辑的扩展,与其制作大 k 块,为什么不将每个状态/特征视为马尔可夫链的一部分,从而消除额外的依赖关系,这会导致雅可比矩阵的下三角矩阵,这也很容易计算。但是,这种方法保留了更多的特征,并且不易受到我们在耦合层中为保留特征而进行的置换操作的影响。

3. 最后,残差流,我们保留整个特征空间,而不牺牲计算。这个想法很简单,但却有非常复杂的数学支持。公式是残差形式 x = z + f(z),但这不是双射,因为 f 是一个神经网络。有趣的是,多亏了 Banach 和他的收缩映射,在理想情况下,存在一个唯一的 z*,它总是映射到相同的 x(稳定状态 z),因此,它也变成了双射,形式为 x = z* + f(z*),其中 f 是一个收缩映射(函数受 Lipschitz 小于 1 的限制,因此,z 的变化受 X 的变化的限制),该形式还为我们提供了一种在给定先前 z(k) 的情况下表示 z(k+1) 的方法,这有助于迭代近似 X,而不是单次框架。我们可以通过相同的公式从 z(0) 转到 z(t),也可以恢复回来,听起来很熟悉,这大致就是扩散。那么行列式呢,迭代变换导致雅可比矩阵迹的无穷项之和,这对于满秩雅可比矩阵来说是可怕的,但可以通过类似的矩阵公式使用哈钦森方法进行迹估计来简单地计算。

到目前为止,我们讨论的所有内容都对样本和轨迹状态(z=>x)做出了离散假设,为什么不使其连续或基本上成为连续的残差流呢?

残差形式 x(k+1) = x(k) + af(x(k)) 可以写成一个微分,其中 k 趋向于无穷大,这看起来很熟悉吗?是的,这现在是一个神经 ODE,但是,我们正在尝试对概率密度在 t 时的状态进行建模,该状态保持不变。密度的状态变化通过连续性或传输方程建模。具体而言,从密度函数的一部分移动到另一部分的质量可以看作是原始质量与当前/移动后质量之间的发散。这种发散是整个轨迹上的连续函数,必须进行积分,因此必须通过数值 ODE 求解,这使得它不可扩展。

这就像状态的比较,为什么不比较路径呢?

这引出了 Flux 背后的方法,即流匹配。想法是这样的……我们从一个非常简单的分布开始,并将其移向预期的分布,但是,由于我们不知道预期的分布,我们通过迭代扰动来调节它,并估计已知的附加噪声,最终模拟底层分布,这个过程简称为条件流匹配,理论上已经证明,在理想条件下,条件目标和违宪目标完全相同,因此,通过优化 CFM,我们倾向于优化流匹配背后的主要目标。

这正是扩散过程,但是,主要区别在于边界条件或初始和最终状态的定义,扩散过程假设纯噪声为 z(t),数据为 z(0),但是,这是在 t 趋向于无穷大时的假设。但是,这在经验上是不可行的,相反,我们会在足够的时间戳内执行此操作,因此,我们保持在更浅的流形中并且速度也更慢(稍后由 LCM 处理),这就像在低分辨率地图中寻找方式/方向,而在流匹配中,纯噪声和数据空间被建模为 lerp(线性插值),形式为 x(t) = t*x(t-1) + (1-t)*x(0),因此,在 t=0 时我们是纯数据样本,而在 t=t 时我们是纯噪声,这为模型提供了更精细的状态/流形,因此,更具代表性的高分辨率地图,也称为条件流匹配(通过噪声分布进行条件调节)。

流量匹配肯定是一个独特而直观的想法,它将获得研究人员的大量关注,而由此产生的产品将为消费市场带来启发。我的解释远远没有达到这个主题的实际深度和广度,因此,需要更全面、更技术性的深入研究,但我希望这些术语/关键词能够提供构建块和主题之间的中介联系。

Flow Matching 在语音生成中的应用

在语音生成任务中,Flow Matching 可以用于建模从语音特征(如梅尔频谱图、F0等)到波形的生成过程。由于语音信号是高度复杂且具有非线性的时序数据,Flow Matching 可以有效地捕捉语音数据中的复杂分布,并生成高质量的语音样本。

步骤概述:

  1. 输入特征提取:首先,将语音数据转换为特征表示,如梅尔频谱图或其它声学特征。
  2. Flow Model 构建:建立一个基于流的生成模型,通过一系列可逆变换将简单的分布(如标准高斯分布)映射到语音数据的分布。
  3. Flow Matching 训练:通过 Flow Matching 技术,最小化模型生成的语音分布与真实语音数据分布之间的差异,逐步学习生成高质量语音信号的能力。
  4. 语音生成:训练完成后,使用模型生成语音信号,从输入特征映射到语音波形。

优点

  • 高质量生成:由于 Flow Matching 能够精确地建模复杂的分布,生成的语音往往更自然、更接近真实语音。
  • 稳定性:相比一些其他生成方法(如 GANs),Flow Matching 更加稳定,避免了模式崩溃等问题。
  • 可逆性:Flow 模型的可逆性使得对生成过程的控制更加灵活和精确。

应用场景

Flow Matching for Speech Generation 在文本到语音(TTS)系统、语音转换(Voice Conversion)、语音增强(Speech Enhancement)等领域有着广泛的应用前景。

通过 Flow Matching,语音生成模型可以更有效地处理复杂的语音信号,提供更高质量的输出。这种方法正逐步成为语音生成技术发展的重要方向之一。

https://blog.csdn.net/weixin_44966641/article/details/139842872

条件流匹配(Conditional Flow Matching, CFM)

条件流匹配是一种生成模型方法,旨在将条件信息(如标签、特征等)和生成的数据分布匹配起来。它通过条件信息来指导生成过程,使得生成模型能够生成与给定条件一致的数据。

最优传输条件流匹配模型(OT-CFM)

OT-CFM 结合了最优传输和条件流匹配的优势,通过最优传输理论提供的距离度量(如 Wasserstein 距离),以指导生成模型在复杂条件下匹配目标分布。具体来说,OT-CFM 的工作方式如下:

  1. 建模目标:OT-CFM 的目标是学习一个生成模型,使得在给定条件下,生成的数据分布与目标分布之间的最优传输距离最小化。这样可以保证生成的数据不仅真实,而且满足条件要求。
  2. 流匹配:模型通过条件流匹配技术,确保生成过程受条件信息的控制,逐步调整生成过程,使其更贴近目标分布。
  3. 优化过程:通过最优传输的距离度量(如 Wasserstein 距离)来优化生成模型,使得模型生成的数据分布与目标数据分布之间的传输成本最小化。

Qwen2.5 -技术报告

Qwen2.5

🤗 Hugging Face   |   🤖 ModelScope   |    📑 Paper (报告还未发布)    |    📑 Blog    📖 Documentation   |🖥️ Demo   | 博客 | GitHub

Qwen是阿里巴巴集团Qwen团队研发的大语言模型和大型多模态模型系列。目前,大语言模型已升级至Qwen2.5版本。无论是语言模型还是多模态模型,均在大规模多语言和多模态数据上进行预训练,并通过高质量数据进行后期微调以贴近人类偏好。Qwen具备自然语言理解、文本生成、视觉理解、音频理解、工具使用、角色扮演、作为AI Agent进行互动等多种能力。

最新版本Qwen2.5有以下特点:

  • 易于使用的仅解码器稠密语言模型,提供 0.5B 、1.5B 、3B 、7B 、14B 、32B 和 72B 共7种参数规模的模型,并且有基模型和指令微调模型两种变体(其中“ B ”表示“十亿”, 72B 即为 720 亿)
  • 利用我们最新的数据集进行预训练,包含多达 18T tokens (其中“ T ”表示“万亿”, 18T 即为 18 万亿)
  • 在遵循指令、生成长文本(超过 8K tokens )、理解结构化数据(例如,表格)以及生成结构化输出特别是 JSON 方面有了显著改进
  • 更加适应多样化的系统提示,增强了角色扮演的实现和聊天机器人的背景设置。
  • 支持最多达 128K tokens 的上下文长度,并能生成多达 8K tokens 的文本。
  • 支持超过 29 种语言,包括中文、英文、法文、西班牙文、葡萄牙文、德文、意大利文、俄文、日文、韩文、越南文、泰文、阿拉伯文等。

简介

  1. 全面开源:考虑到用户对10B至30B范围模型的需求和移动端对3B模型的兴趣,此次除了继续开源Qwen2系列中的0.5B/1.5B/7B/72B四款模型外,Qwen2.5系列还增加了两个高性价比的中等规模模型—— Qwen2.5-14B 和 Qwen2.5-32B,以及一款适合移动端的 Qwen2.5-3B。所有模型在同类开源产品中均具有很强的竞争力,例如Qwen2.5-32B的整体表现超越了Qwen2-72B,Qwen2.5-14B则领先于Qwen2-57B-A14B。
  2. 更大规模、更高质量的预数据训练集:我们的预训练数据集规模从 7T tokens 扩展到了 18T tokens。
  3. 知识储备升级:Qwen2.5的知识涵盖更广。在MMLU基准中,Qwen2.5-7B 和 72B的得分相较于Qwen2分别从70.3提升到 74.2,和从84.2提升到 86.1。此外,Qwen2.5还在 GPQA、MMLU-Pro、MMLU-redux 和 ARC-c 等多个基准测试中有了明显提升。
  4. 代码能力增强:得益于Qwen2.5-Coder的突破,Qwen2.5在代码生成能力上也大幅提升。Qwen2.5-72B-Instruct在LiveCodeBench(2305-2409)、MultiPL-E和MBPP中的分别得分 55.575.1 和 88.2,优于Qwen2-72B-Instruct的32.2、69.2和80.2。
  5. 数学能力提升:引入了Qwen2-math的技术后,Qwen2.5的数学推理表现也有了快速提升。在MATH基准测试中,Qwen2.5-7B/72B-Instruct得分从Qwen2-7B/72B-Instruct的52.9/69.0上升到了 75.5/83.1
  6. 更符合人类偏好:Qwen2.5生成的内容更加贴近人类的偏好。具体来看,Qwen2.5-72B-Instruct的Arena-Hard得分从 48.1 大幅提升至 81.2,MT-Bench得分也从 9.12 提升到了 9.35,与之前的Qwen2-72B相比提升显著。
  7. 其他核心能力提升:Qwen2.5在 指令跟随、生成 长文本(从1K升级到 8K tokens)、理解 结构化数据(如表格),以及生成 结构化输出(尤其是JSON)上都有非常明显的进步。此外,Qwen2.5能够更好响应多样化的 系统提示,用户可以给模型设置 特定角色 或 自定义条件

模型基础信息

本次发布的 Qwen2.5 语言模型系列包括七个开源模型,规模从 0.5B 到 72B 不等。大多数模型支持 128K(131,072)个 token 的上下文长度,并能生成 8K token 的文本,支持长篇内容创作。除部分特殊版本外,模型主要采用 Apache 2.0 开源许可协议,而 Qwen2.5-3B 和 Qwen2.5-72B 分别使用 Qwen Research 许可协议 和 Qwen 许可协议。

模型性能

Qwen2.5

为了展示 Qwen2.5 的能力,我们用我们最大的开源模型 Qwen2.5-72B —— 一个拥有 720 亿参数的稠密 decoder-only 语言模型——与领先的开源模型如 Llama-3.1-70B 和 Mistral-Large-V2进行了基准测试。我们在多个基准测试中展示了经过指令调优的版本的综合结果,评估了模型的能力和人类偏好。

除了指令微调的模型之外,我们还发现,我们的旗舰开源模型 Qwen2.5-72B 的基础语言模型性能达到了顶级水准,即便是在与 Llama-3-405B 这样更大的模型对比时也是如此。

Qwen2.5 的一个重要更新是重新引入了我们的 140 亿参数和 320 亿参数模型,即 Qwen2.5-14B 和 Qwen2.5-32B。这些模型在多样化的任务中超越了同等规模或更大规模的基线模型,例如 Phi-3.5-MoE-Instruct 和 Gemma2-27B-IT。 它们在模型大小和能力之间达到了最佳平衡,提供了匹配甚至超过一些较大模型的性能。此外,我们的基于 API 的模型 Qwen2.5-Turbo 相比这两个开源模型提供了极具竞争力的性能,同时提供了成本效益高且快速的服务。

近来也出现了明显的转向小型语言模型(SLMs)的趋势。尽管历史上小型语言模型(SLMs)的表现一直落后于大型语言模型(LLMs),但二者之间的性能差距正在迅速缩小。值得注意的是,即使是只有大约 30 亿参数的模型现在也能取得高度竞争力的结果。附带的图表显示了一个重要的趋势:在 MMLU 中得分超过 65 的新型模型正变得越来越小,这凸显了语言模型的知识密度增长速度加快。特别值得一提的是,我们的 Qwen2.5-3B 成为这一趋势的一个典型例子,它仅凭约 30 亿参数就实现了令人印象深刻的性能,展示了其相对于前辈模型的高效性和能力。

除了在基准评估中取得的显著增强外,我们还改进了我们的后训练方法。我们的四个主要更新包括支持最长可达 8K 标记的长文本生成,大幅提升了对结构化数据的理解能力,生成结构化输出(尤其是 JSON 格式)更加可靠,并且在多样化的系统提示下的表现得到了加强,这有助于有效进行角色扮演。

TTS调研 | 语音合成系列基础知识及论文总结

原创 AI Pulse

Text-to-Speech(通常缩写为TTS)是指一种将文本转为音频的技术。

1.历史

第一台“会说话的机器”可能是在 18 世纪后期制造的(据说是一位匈牙利科学家发明的)。计算机辅助创作起源于20世纪中期,各种技术已经使用了大约50年。如果对旧技术进行分类.首先,

1)Articulatory Synthesis:这是一种模拟人的嘴唇、舌头和发声器官的技术。

2)共振峰合成:人声可以看作是在语音在器官中过滤某些声音而产生的声音。这就是所谓的源滤波器模型,它是一种在基本声音(例如单个音高)上添加各种滤波器以使其听起来像人声的方法(称为加法合成)。

3) Concatenative Synthesis:现在使用数据的模型。举个简单的例子,你可以录制 0 到 9 的声音,并通过链接这些声音来拨打电话号码。然而,声音并不是很自然流畅。

4)统计参数语音合成(SPSS):通过创建声学模型、估计模型参数并使用它来生成音频的模型。它可以大致分为三个部分。

首先,“文本分析” ,将输入文本转换为语言特征,“声学模型” ,将语言特征转换为声学特征,最后是声学特征。这是声码器。该领域使用最广泛的声学模型是隐马尔可夫模型(HMM)。使用 HMM,能够创建比以前更好的声学特征。但是,大部分生成的音频比较机械,例如机器人声音等。

5)神经 TTS:随着我们在 2010 年代进入 深度学习时代,已经开发了基于几种新神经网络的模型。这些逐渐取代了HMM,并被用于“声学模型”部分,逐渐提高了语音生成的质量。从某种意义上说,它可以看作是SPSS的一次进化,但随着模型性能的逐渐提高,它朝着逐渐简化上述三个组成部分的方向发展。比如下图中,可以看出它是在从上(0)到下(4)的方向发展的。

现在推出的大致分为三种模型:

声学模型:以字符(文本)或音素(音素;发音单位)为输入并创建任何声学特征的模型。如今,大多数声学特征都是指梅尔频谱图。

声码器:一种将梅尔频谱图(和类似的频谱图)作为输入并生成真实音频的模型。

完全端到端的 TTS 模型:接收字符或音素作为输入并立即生成音频的模型。

2.文本分析

文本分析是将字符文本转换为语言特征。要考虑以下问题:

  1. 文本规范化:将缩写或数字更改为发音。例如把1989改成‘一九八九’
  2. 分词:这在中文等基于字符的语言中是必须的部分。例如,它根据上下文判断是把“包”看成单个词还是把’书包’和’包子’分开看.
  3. 词性标注:把动词、名词、介词等分析出来。
  4. Prosody prediction:表达对句子的哪些部分重读、每个部分的长度如何变化、语气如何变化等的微妙感觉的词。如果没有这个,它会产生一种真正感觉像“机器人说话”的声音。尤其是英语(stress-based)等语言在这方面差异很大,只是程度不同而已,但每种语言都有自己的韵律。如果我们可以通过查看文本来预测这些韵律,那肯定会有所帮助。例如,文本末尾的“?”。如果有,自然会产生上升的音调。
  5. Grapheme-to-phoneme (G2P):即使拼写相同,也有很多部分发音不同。例如,“resume”这个词有时会读作“rizju:m”,有时读作“rezjumei”,因此必须查看整个文本的上下文。所以,如果优先考虑字素转音素的部分,也就是将‘语音’转换成‘spiy ch’等音标的部分。

在过去的 SPSS 时代,添加和开发了这些不同的部分以提高生成音频的质量。在 neural TTS 中,这些部分已经简化了很多,但仍然有一些部分是肯定需要的。例如1文本规范化text normalization 或者5G2P基本上都是先处理后输入。如果有的论文说可以接收字符和音素作为输入,那么很多情况下都会写“实际上,当输入音素时结果更好”。尽管如此,它还是比以前简单了很多,所以在大多数神经 TTS 中,文本分析部分并没有单独处理,它被认为是一个简单的预处理。

3.声学模型

声学模型是指 通过接收字符或音素作为输入或通过接收在文本分析部分创建的语言特征来生成声学特征的部分。前面提到,在SPSS时代,HMM(Hidden Markov Model)在Acoustic Model中的比重很大,后来神经网络技术逐渐取而代之。例如,有论文表明用 DNN 替换 HMM 效果更好。不过RNN系列可能更适合语音等时间序列。因此,在有些论文使用LSTM等模型来提高性能。然而,尽管使用了神经网络模型,这些模型仍然接收语言特征作为输入和输出,如 MCC(梅尔倒谱系数)、BAP(带非周期性)、LSP(线谱对)、LinS(线性谱图)和 F0 .(基频)等 。因此,这些模型可以被认为是改进的 SPSS 模型。

DeepVoice是吴恩达在百度研究院时宣布的,其实更接近SPSS模型。它由几个部分组成,例如一个G2P模块,一个寻找音素边界的模块,一个预测音素长度的模块,一个寻找F0的模块,每个模块中使用了各种神经网络模型。之后发布的DeepVoice 2,也可以看作是第一版的性能提升和多扬声器版本,但整体结构类似。 

3.1.基于Seq2seq的声学模型

在2014-5年的机器翻译领域,使用attention的seq2seq模型成为一种趋势。然而,由于字母和声音之间有很多相似之处,所以可以应用于语音。基于这个想法,Google 开发了 Tacotron[Wang17](因为作者喜欢 tacos 而得名)。通过将 CBHG 模块添加到作为 seq2seq 基础的 RNN 中,终于开始出现可以接收字符作为输入并立即提取声学特征的适当神经 TTS,从而摆脱了以前的 SPSS。这个seq2seq模型从那以后很长一段时间都是TTS模型的基础。

在百度,DeepVoice 3抛弃了之前的旧模型,加入了使用注意力的 seq2seq 。然而,DeepVoice 持续基于 CNN 的传统仍然存在。DeepVoice 在版本 3 末尾停止使用这个名称,之后的 ClariNet和 ParaNet也沿用了该名称。特别是,ParaNet 引入了几种技术来提高 seq2seq 模型的速度。 

 谷歌的 Tacotron 在保持称为 seq2seq 的基本形式的同时,也向各个方向发展。第一个版本有点过时,但从 Tacotron 2开始,mel-spectrogram 被用作默认的中间表型。在后续论文中,学习了定义某种语音风格的风格标记,并将其添加到 Tacotron 中,以创建一个控制风格的 TTS 系统。同时发表的另一篇谷歌论文 [Skerry-Ryan18] 也提出了一种模型,可以通过添加一个部分来学习韵律嵌入到 Tacotron 中来改变生成音频的韵律。在 DCTTS [Tachibana18] 中,将 Tacotron 的 RNN 部分替换为 Deep CNN 表明在速度方面有很大的增益。从那时起,该模型已改进为快速模型 Fast DCTTS,尺寸有效减小。

在 DurIAN中,Tacotron 2 的注意力部分更改为对齐模型,从而减少了错误。Non-Attentive Tacotron 也做了类似的事情,但在这里,Tacotron 2 的注意力部分被更改为持续时间预测器,以创建更稳健的模型。在FCL-TACO2中,提出了一种半自回归(SAR)方法,每个音素用AR方法制作,整体用NAR方法制作,以提高速度,同时保持质量。此外,蒸馏用于减小模型的大小。建议使用基于 Tacotron 2 的模型,但速度要快 17-18 倍。 

3.2.基于变压器的声学模型

随着2017年Transformers的出现,注意力模型演变成NLP领域的Transformers,使用Transformers的模型也开始出现在TTS领域。TransformerTTS可以看作是一个起点,这个模型原样沿用了Tacotron 2的大部分,只是将RNN部分改成了Transformer。这允许并行处理并允许考虑更长的依赖性。

FastSpeech系列可以被引用为使用 Transformer 模型的 TTS 的代表。在这种情况下,可以通过使用前馈 Transformer 以非常高的速度创建梅尔频谱图。作为参考,mel-spectrogram是一种考虑人的听觉特性,对FFT的结果进行变换的方法,虽然是比较旧的方法,但仍然被使用。优点之一是可以用少量维度(通常为 80)表示。 

在 TTS 中,将输入文本与梅尔频谱图的帧相匹配非常重要。需要准确计算出一个字符或音素变化了多少帧,其实attention方法过于灵活,对NLP可能有好处,但在speech上反而不利(单词重复或跳过)。因此,FastSpeech 排除了注意力方法,并利用了一个准确预测长度的模块(长度调节器)。后来,FastSpeech 2进一步简化了网络结构,并额外使用了音高、长度和能量等更多样化的信息作为输入。FastPitch提出了一个模型,通过向 FastSpeech 添加详细的音高信息进一步改进了结果。LightSpeech提出了一种结构,通过使用 NAS(Neural Architecture Search)优化原本速度很快的 FastSpeech 的结构,将速度提高了 6.5 倍。

MultiSpeech 还介绍了各种技术来解决 Transformer 的缺点。在此基础上,对 FastSpeech 进行训练以创建一个更加改进的 FastSpeech 模型。TransformerTTS 作者随后还提出了进一步改进的 Transformer TTS 模型,在 RobuTrans模型中使用基于长度的硬注意力。AlignTTS 还介绍了一种使用单独的网络而不是注意力来计算对齐方式的方法。来自 Kakao 的 JDI-T引入了一种更简单的基于 transformer 的架构,还使用了改进的注意力机制。NCSOFT 提出了一种在文本编码器和音频编码器中分层使用转换器的方法,方法是将它们堆叠在多个层中。限制注意力范围和使用多层次音高嵌入也有助于提高性能。

3.3.基于流的声学模型

2014年左右开始应用于图像领域的新一代方法Flow,也被应用到声学模型中。Flowtron可以看作是 Tacotron 的改进模型,它是一个通过应用 IAF(逆自回归流)生成梅尔谱图的模型。在 Flow-TTS中,使用非自回归流制作了一个更快的模型。在后续模型 EfficientTTS中,在模型进一步泛化的同时,对对齐部分进行了进一步改进。

来自 Kakao 的 Glow-TTS 也使用流来创建梅尔频谱图。Glow-TTS 使用经典的动态规划来寻找文本和梅尔帧之间的匹配,但 TTS 表明这种方法也可以产生高效准确的匹配。后来,这种方法Monotonic Alignment Search被广泛使用。 

3.4.基于VAE的声学模型

另一个诞生于 2013 年的生成模型框架 Variational autoencoder (VAE) 也被用在了 TTS 中。顾名思义,谷歌宣布的 GMVAE-Tacotron使用 VAE 对语音中的各种潜在属性进行建模和控制。同时问世的VAE-TTS也可以通过在Tacotron 2模型中添加用VAE建模的样式部件来做类似的事情。BVAE-TTS介绍了一种使用双向 VAE 快速生成具有少量参数的 mel 的模型。Parallel Tacotron是 Tacotron 系列的扩展,还引入了 VAE 以加快训练和创建速度。 

3.5.基于GAN的声学模型

在 2014 年提出的 Generative Adversarial Nets (GAN) 中,Tacotron 2 被用作生成器,GAN 被用作生成更好的 mels 的方法。在论文中,使用 Adversarial training 方法让 Tacotron Generator 一起学习语音风格。Multi-SpectroGAN还以对抗方式学习了几种样式的潜在表示,这里使用 FastSpeech2 作为生成器。GANSpeech还使用带有生成器的 GAN 方法训练 FastSpeech1/2,自适应调整特征匹配损失的规模有助于提高性能。

3.6.基于扩散的声学模型

最近备受关注的使用扩散模型的TTS也相继被提出。Diff-TTS 通过对梅尔生成部分使用扩散模型进一步提高了结果的质量。Grad-TTS 也通过将解码器更改为扩散模型来做类似的事情,但在这里,Glow-TTS 用于除解码器之外的其余结构。在 PriorGrad 中,使用数据统计创建先验分布,从而实现更高效的建模。也有TTS系统使用每个音素的统计信息应用声学模型,例如腾讯的 DiffGAN-TTS也使用扩散解码器,它使用对抗训练方法。这大大减少了推理过程中的步骤数并降低了生成速度。 

3.7.其他声学模型

其实上面介绍的这些技术不一定要单独使用,而是可以相互结合使用的。FastSpeech 的作者自己分析发现,VAE 即使在小尺寸下也能很好地捕捉韵律等长信息,但质量略差,而 Flow 保留细节很好,而模型需要很大为了提高质量, PortaSpeech提出了一种模型,包含Transformer+VAE+Flow的每一个元素。

VoiceLoop提出了一种模型,该模型使用类似于人类工作记忆模型的模型来存储和处理语音信息,称为语音循环。它是考虑多扬声器的早期模型,之后,它被用作Facebook其他研究的骨干网络。

DeviceTTS是一个使用深度前馈顺序记忆网络(DFSMN)作为基本单元的模型。该网络是一种带有记忆块的前馈网络,是一种小型但高效的网络,可以在不使用递归方案的情况下保持长期依赖关系。由此,提出了一种可以在一般移动设备中充分使用的 TTS 模型。 

4.声码器

声码器是使用声学模型生成的声学特征并将其转换为波形的部件。即使在 SPSS 时代,当然也需要声码器,此时使用的声码器包括 STRAIGHT 和 WORLD。

4.1.自回归声码器

Neural Vocoder 从 WaveNet引入扩张卷积层来创建长音频样本很重要,并且可以使用自回归方法生成高级音频,该方法使用先前创建的样本生成下一个音频样本(一个接一个)。实际上,WaveNet本身可以作为一个Acoustic Model+Vocoder,将语言特征作为输入,生成音频。然而,从那时起,通过更复杂的声学模型创建梅尔频谱图,并基于 WaveNet 生成音频就变得很普遍。

在 Tacotron 中,创建了一个线性频谱图,并使用 Griffin-Lim 算法 将其转换为波形。由于该算法是40年前使用的,尽管网络的整体结构非常好,但得到的音频并不是很令人满意。在 DeepVoice中,从一开始就使用了 WaveNet 声码器,特别是在论文 DeepVoice2中,除了他们自己的模型外,还通过将 WaveNet 声码器添加到另一家公司的模型 Tacotron 来提高性能(这么说来,在单个speaker上比DeepVoice2好)给出了更好的性能。自版本2以来,Tacotron 使用 WaveNet 作为默认声码器。

SampleRNN是另一种自回归模型,在 RNN 方法中一个一个地创建样本。这些自回归模型生成音频的速度非常慢,因为它们通过上一个样本一个一个地构建下一个样本。因此,许多后来的研究建议采用更快生产率的模型。

FFTNet着眼于WaveNet的dilated convolution的形状与FFT的形状相似,提出了一种可以加快生成速度的技术。在 WaveRNN中,使用了各种技术(GPU 内核编码、剪枝、缩放等)来加速 WaveNet 。WaveRNN 从此演变成通用神经声码器和各种形式。在Towards achieving robust universal neural vocoding(Interspeech 2019)中,使用 74 位说话人和 17 种语言的数据对 WaveRNN 进行了训练,以创建 RNN_MS(多说话人)模型,证明它是一种即使在说话人和环境中也能产生良好质量的声码器。数据。Speaker Conditional WaveRNN: Towards universal neural vocoder for unseen speaker and recording conditions.(Interspeech 2020)提出了Speaker Conditional)_WaveRNN 模型,即通过额外使用 speaker embedding 来学习的模型。该模型还表明它适用于不在数据中的说话人和环境。

苹果的TTS也使用了WaveRNN作为声码器,并且在server端和mobile端做了各种优化编码和参数设置,使其可以在移动设备上使用。

通过将音频信号分成几个子带来处理音频信号的方法,即较短的下采样版本,已应用于多个模型,因为它具有可以快速并行计算的优点,并且可以对每个子带执行不同的处理。

现在,很多后来推出的声码器都使用非自回归方法来改善自回归方法生成速度慢的问题。换句话说,一种无需查看先前样本(通常表示为平行)即可生成后续样本的方法。已经提出了各种各样的非自回归方法,但最近一篇表明自回归方法依旧抗打的论文是 Chunked Autoregressive GAN (CARGAN),它表明许多非自回归声码器存在音高错误,这个问题可以通过使用自回归方法来解决。当然,速度是个问题,但是通过提示可以分成chunked单元计算,绍一种可以显着降低速度和内存的方法。

4.2.基于流的声码器

归一化基于流的技术可以分为两大类。首先是自回归变换,在有代表性的IAF(inverse autoregressive flow)的情况下,生成速度非常快,而不是需要很长的训练时间。因此,它可以用来快速生成音频。然而,训练速度慢是一个问题,在Parallel WaveNet中,首先创建一个自回归WaveNet模型,然后训练一个类似的非自回归IAF模型。这称为教师-学生模型,或蒸馏。之后,ClariNet使用类似的方法提出了一种更简单、更稳定的训练方法。在成功训练 IAF 模型后,现在可以快速生成音频。但训练方法复杂,计算量大。

另一种流技术称为二分变换,一种使用称为仿射耦合层的层来加速训练和生成的方法。大约在同一时间,提出了两个使用这种方法的声码器,WaveGlow和 FloWaveNet。这两篇论文来自几乎相似的想法,只有细微的结构差异,包括混合通道的方法。Bipartite transform的优点是简单,但也有缺点,要创建一个等价于IAF的模型,需要堆叠好几层,所以参数量比较大。

从那时起,WaveFlow提供了几种音频生成方法的综合视图。不仅解释了 WaveGlow 和 FloWaveNet 等流方法,还解释了WaveNet 作为广义模型的生成方法,我们提出了一个计算速度比这些更快的模型。此外,SqueezeWave提出了一个模型,该模型通过消除 WaveGlow 模型的低效率并使用深度可分离卷积,速度提高了几个数量级(性能略有下降)。WG-WaveNet还提出通过在 WaveGlow 中使用权重共享显着减小模型大小并添加一个小的 WaveNet 滤波器来提高音频质量来创建模型,从而使 44.1kHz 音频在 CPU 上比实时音频更快音频…

4.3.基于 GAN 的声码器

广泛应用于图像领域的生成对抗网络(GANs)经过很长一段时间(4-5年)后成功应用于音频生成领域。WaveGAN可以作为第一个主要研究成果被引用。在图像领域发展起来的结构在音频领域被沿用,所以虽然创造了一定质量的音频,但似乎仍然有所欠缺。

从GAN-TTS开始,为了让模型更适合音频,vits作者思考如何做一个能够很好捕捉波形特征的判别器。在 GAN-TTS 中,使用多个随机窗口(Random window discriminators)来考虑更多样化的特征,而在 MelGAN中,使用了一种在多个尺度(Multi-scale discriminator)中查看音频的方法。来自Kakao的HiFi-GAN提出了一种考虑更多音频特征的方法,即一个周期(Multi-period discriminator)。在 VocGAN的情况下,还使用了具有多种分辨率的鉴别器。在A spectral energy distance for parallel speech synthesis. NeurIPS 2020.中,生成的分布与实际分布之间的差异以广义能量距离 (GED) 的形式定义,并在最小化它的方向上学习。复杂的鉴别器以各种方式极大地提高了生成音频的性能。GAN Vocoder: Multi-resolution discriminator is all you need(Interspeech 2021)进一步分析了这一点,并提到了多分辨率鉴别器的重要性。在 Fre-GAN中,生成器和鉴别器都使用多分辨率方法连接。使用离散波形变换 (DWT) 也有帮助。 

在generator的情况下,很多模型使用了MelGAN提出的dilated + transposed convolution组合。如果稍有不同,Parallel WaveGAN  也接收高斯噪声作为输入,而 VocGAN 生成各种尺度的波形。在 HiFi-GAN 中,使用了具有多个感受野的生成器。

前面提到的 Parallel WaveGAN是 Naver/Line 提出的一种模型,它可以通过提出非自回归 WaveNet 生成器来以非常高的速度生成音频。之后,提出了一种进一步改进的 Parallel WaveGAN,通过应用感知掩蔽滤波器来减少听觉敏感错误。此外,[Wang21] 提出了一种通过将 Pointwise Improved Parallel WaveGAN vocoder with perceptually weighted spectrogram loss.Relativistic LSGAN(一种改进的最小二乘 GAN)应用于音频来创建具有较少局部伪影的 Parallel WaveGAN(和 MelGAN)的方法。在 LVCNet中,使用根据条件变化的卷积层的生成器,称为位置可变卷积,被放入 Parallel WaveGAN 并训练以创建更快(4x)的生成模型,质量差异很小。 

此后,MelGAN 也得到了多种形式的改进。在Multi-Band MelGAN 中,增加了原有MelGAN的感受野,增加了多分辨率STFT loss(Parallel WaveGAN建议),计算了多波段划分(DurIAN建议),使得速度更快,更稳定的模型。还提出了 Universal MelGAN 的多扬声器版本,它也使用多分辨率鉴别器来生成具有更多细节的音频。这个想法在后续的研究 UnivNet中得到延续,并进一步改进,比如一起使用多周期判别器。在这些研究中,音频质量也通过使用更宽的频带 (80->100) mel 得到改善。

首尔国立大学/NVIDIA 推出了一种名为 BigVGAN的新型声码器。作为考虑各种录音环境和未见语言等的通用Vocoder,作为技术改进,使用snake函数为HiFi-GAN生成器提供周期性的归纳偏置,并加入低通滤波器以减少边由此造成的影响。另外,模型的大小也大大增加了(~112M),训练也成功了。

4.4.基于扩散的声码器

扩散模型可以称为最新一代模型,较早地应用于声码器。ICLR21同时介绍了思路相似的DiffWave和WaveGrad。Diffusion Model用于音频生成部分是一样的,但DiffWave类似于WaveNet,WaveGrad基于GAN-TTS。处理迭代的方式也有所不同。之前声学模型部分介绍的PriorGrad 也以创建声码器为例进行了介绍。在这里,验是使用梅尔谱图的能量计算的。 

扩散法的优点是可以学习复杂的数据分布并产生高质量的结果,但最大的缺点是生成时间相对较长。另外,由于这种方法本身是以去除噪声的方式进行的,因此如果进行时间过长,存在原始音频中存在的许多噪声(清音等)也会消失的缺点。FastDiff通过将 LVCNet的思想应用到扩散模型中,提出了时间感知的位置-变化卷积。通过这种方式,可以更稳健地应用扩散,并且可以通过使用噪声调度预测器进一步减少生成时间。 

来自腾讯的 BDDM也提出了一种大大减少创建时间的方法。换句话说,扩散过程的正向和反向过程使用不同的网络(正向:调度网络,反向:分数网络),并为此提出了一个新的理论目标。在这里,我们展示了至少可以通过三个步骤生成音频。在这个速度下,扩散法也可以用于实际目的。虽然以前的大多数研究使用 DDPM 型建模,但扩散模型也可以用随机微分方程 (SDE) 的形式表示。ItoWave展示了使用 SDE 类型建模生成音频的示例。

4.5.基于源滤波器的声码器

在这篇文章的开头,在处理 TTS 的历史时,我们简单地了解了 Formant Synthesis。人声是一种建模方法,认为基本声源(正弦音等)经过口部结构过滤,转化为我们听到的声音。这种方法最重要的部分是如何制作过滤器。在 DL 时代,如果这个过滤器用神经网络建模,性能会不会更好。在神经源滤波器方法 [Wang19a] 中,使用 f0(音高)信息创建基本正弦声音,并训练使用扩张卷积的滤波器以产生优质声音。不是自回归的方法,所以速度很快。之后,在Neural harmonic-plus-noise waveform model with trainable maximum voice frequency for text-to-speech synthesis.中,将其扩展重构为谐波+噪声模型以提高性能。DDSP 提出了一种使用神经网络和多个 DSP 组件创建各种声音的方法,其中谐波使用加法合成方法,噪声使用线性时变滤波器。 

另一种方法是将与语音音高相关的部分(共振峰)和其他部分(称为残差、激励等)进行划分和处理的方法。这也是一种历史悠久的方法。共振峰主要使用了LP(线性预测),激励使用了各种模型。GlotNet在神经网络时代提出,将(声门)激励建模为 WaveNet。之后,GELP 用 GAN 训练方法将其扩展为并行格式。

Naver/Yonsei University 的 ExcitNet也可以看作是具有类似思想的模型,然后,在扩展模型 LP-WaveNet中,source 和 filter 一起训练,并使用更复杂的模型。在 Neural text-to-speech with a modeling-by-generation excitation vocoder(Interspeech 2020)中,引入了逐代建模 (MbG) 概念,从声学模型生成的信息可用于声码器以提高性能。在神经同态声码器中,谐波使用线性时变 (LTV) 脉冲序列,噪声使用 LTV 噪声。Unified source-filter GAN: Unified source-filter network based on factorization of quasi-periodic Parallel WaveGAN(Interspeech 2021)提出了一种模型,它使用 Parallel WaveGAN 作为声码器,并集成了上述几种源滤波器模型。Parallel WaveGAN本身也被Naver不断扩充,首先在High-fidelity Parallel WaveGAN with multi-band harmonic-plus-noise model(Interspeech 2021)中,Generator被扩充为Harmonic + Noise模型,同时也加入了subband版本。

LPCNet可以被认为是继这种源过滤器方法之后使用最广泛的模型。作为在 WaveRNN 中加入线性预测的模型,  LPCNet 此后也进行了多方面的改进。在 Bunched LPCNet 中,通过利用原始 WaveRNN 中引入的技术,LPCNet 变得更加高效。Gaussian LPCNet还通过允许同时预测多个样本来提高效率。Lightweight LPCNet-based neural vocoder with tensor decomposition(Interspeech 2020)通过使用张量分解进一步减小 WaveRNN 内部组件的大小来提高另一个方向的效率。iLPCNet该模型通过利用连续形式的混合密度网络显示出比现有 LPCNet 更高的性能。Fast and lightweight on-device tts with Tacotron2 and LPCNet(Interspeech 2020)提出了一种模型,在LPCNet中的语音中找到可以切断的部分(例如,停顿或清音),将它们划分,并行处理,并通过交叉淡入淡出来加快生成速度. LPCNet 也扩展到了子带版本,首先在 FeatherWave中引入子带 LPCNet。在An efficient subband linear prediction for lpcnet-based neural synthesis(Interspeech 2020)中,提出了考虑子带之间相关性的子带 LPCNet 的改进版本.

声码器的发展正朝着从高质量、慢速的AR(Autoregressive)方法向快速的NAR(Non-autoregressive)方法转变的方向发展。由于几种先进的生成技术,NAR 也逐渐达到 AR 的水平。例如在TTS-BY-TTS [Hwang21a]中,使用AR方法创建了大量数据并用于NAR模型的训练,效果不错。但是,使用所有数据可能会很糟糕。因此,TTS-BY-TTS2提出了一种仅使用此数据进行训练的方法,方法是使用 RankSVM 获得与原始音频更相似的合成音频。 

DelightfulTTS,微软使用的 TTS 系统,有一些自己的结构修改,例如使用 conformers,并且特别以生成 48 kHz 的最终音频为特征(大多数 TTS 系统通常生成 16 kHz 音频)。为此,梅尔频谱图以 16kHz 的频率生成,但最终音频是使用内部制作的 HiFiNet 以 48kHz 的频率生成的。

5.完全端到端的TTS

通过一起学习声学模型和声码器,介绍在输入文本或音素时立即创建波形音频的模型。实际上,最好一次完成所有操作,无需划分训练步骤,更少的步骤减少错误。无需使用 Mel Spectrum 等声学功能。其实Mel是好的,但是被人任意设定了(次优),相位信息也丢失了。然而,这些模型之所以不容易从一开始就开发出来,是因为很难一次全部完成。

例如,作为输入的文本在 5 秒内大约为 20,对于音素大约为 100。但波形是 80,000 个样本(采样率为 16 kHz)。因此,一旦成为问题,不好完全与其匹配(文本->音频样本),不如使用中等分辨率的表达方式(如Mel)分两步进行比较简单。但是,随着技术的逐渐发展,可以找到一些用这种 Fully End-to-End 方法训练的模型。作为参考,在许多处理声学模型的论文中,他们经常使用术语端到端模型,这意味着文本分析部分已被一起吸收到他们的模型中,或者他们可以通过将声码器附加到他们的模型来生成音频. 它通常用于表示能够。  

也许这个领域的第一个是 Char2Wav ,这是蒙特利尔大学名人Yoshua Bengio教授团队的论文,通过将其团队制作的SampleRNN vocoder添加到Acoustic Model using seq2seq中一次性训练而成。ClariNet的主要内容其实就是让WaveNet->IAF方法的Vocoder更加高效。

FastSpeech 2也是关于一个好的 Acoustic Model,这篇论文也介绍了一个 Fully End-to-End 模型,叫做 FastSpeech 2s。FastSpeech 2模型附加了一个WaveNet声码器,为了克服训练的困难,采取了使用预先制作的mel编码器的方法。名为EATS的模型使用他们团队(谷歌)创建的GAN-TTS作为声码器,创建一个新的Acoustic Model,并一起训练。但是,一次训练很困难,因此创建并使用了中等分辨率的表示。Wave-Tacotron,是一种通过将声码器连接到 Tacotron 来立即训练的模型。这里使用了流式声码器,作者使用 Kingma,因此可以在不显着降低性能的情况下创建更快的模型。 

之前Acoustic Model部分介绍的EfficientTTS也介绍了一种模型(EFTS-Wav),通过将decoder换成MelGAN,以端到端的方式进行训练。该模型还表明,它可以显着加快音频生成速度,同时仍然表现良好。Kakao 团队开发了一种名为 Glow-TTS的声学模型和一种名为 HiFi-GAN的声码器。然后可以将两者放在一起以创建端到端模型,这就是 VITS ,它使用 VAE 连接两个部分,并使用对抗性方法进行整个训练,提出了具有良好速度和质量的模型。

延世大学/Naver 还在 2021 年推出了 LiteTTS,这是一种高效的完全端到端 TTS。使用了前馈变换器和 HiFi-GAN 结构的轻量级版本。特别是,域传输编码器用于学习与韵律嵌入相关的文本信息。腾讯和浙江大学提出了一种名为 FastDiff的声码器,还引入了 FastDiff-TTS,这是一种结合 FastSpeech 2的完全端到端模型。Kakao 还引入了 JETS,它可以一起训练 FastSpeech2 和 HiFi-GAN。微软在将现有的 DelightfulTTS 升级到版本 2 的同时,也引入了 Fully End-to-End 方法。这里,VQ音频编码器被用作中间表达方法。 

截止到现在,主流的语音合成框架以以上方法为主流进行研究发展,未来会再次统计并概述最新论文以及方法。

SoundStream-音频编解码器

在实际应用场景中,SoundStream 可修改为低时延的设计,支持流式的编解码推理,在智能手机 CPU 上可达到实时的效果。在主观评测中,对于 24kHz 采样率下的音频,3 kbps 低比特率下的 SoundStream 比 12 kbps 的 Opus 和 9.6 kbps 的 EVS(增强语音服务,Enhance Voice Services)效果都更好。另外,SoundStream 的 Encoder 端或者 Decoder 端允许对压缩编码和语音增强进行联合建模,单一模型的实现,不会额外增加时延。

工作概述

  1. 模型由全卷积 Encoder-Decoder 和残差向量量化(RVQ, Residual Vector Quantizer)模块端到端联合训练得到;
  2. 模型结合了语音合成和语音增强领域的前沿工作,包括对抗训练和重建损失目标等,能够让模型从量化后的编码结果恢复出高质量的音频;
  3. 训练时在量化层使用了结构化 dropout,使得单一模型能够在 3kbps 到 18kbps 不同的比特率下有效使用,相比于固定比特率的模型,音频质量的损失几乎可以忽略不计;
  4. 模型支持将音频压缩编码与音频降噪进行联合建模,达到与级联模型相近的效果。

SoundStream 模型结构

SoundStream 编解码器是全卷积的结构。输入是原始的音频波形,Encoder 将其映射为较低采样率的 embedding 序列,RVQ 残差向量量化器对 embedding 序列进行量化;Decoder 同样是全卷积结构,输入是量化后的 embedding,预测目标是恢复出原始波形。

SoundStream 模型是基于波形重建和对抗训练两个损失函数进行端到端训练的,增加了多个判别器用于区分是解码恢复的音频还是原始音频。需要说明的是,Encoder 和 Decoder 都只使用了因果卷积,不依赖于音频后续采样点的信息,所以模型时延只与编码器的降采样系数有关。具体计算过程为:假设音频的原始采样率是 24 kHz,降采样 320 倍到 75 Hz,那么模型的时延为 1 / 75 ≈ 13.3 ms,因为需要等原始音频输入 320 个新的采样点(320 / 24000 ≈ 13.3 ms)编码器才能输出一个新的 embedding。

编码器结构

编码器的输入是 24 kHz 原始波形,先进入一层一维卷积,kernel_size 为 7,输出 channel 大小为 C;再经过B个 EncoderBlock 模块,每个模块包含三个 ResidualUnit 残差单元和一层用于降采样的一维卷积。

ResidualUnit

包含两层一维卷积:第一层是膨胀卷积, kernel 大小为 7,输出 channel 为 N,膨胀率为 dilation(用于扩大深层网络的感受野);第二层是输出 channel 为 N,kernel size 为 1 的一维卷积(相当于全连接层)。

EncoderBlock

包含的三个膨胀率分别为 1,3,9 的残差单元,膨胀率越大说明卷积层的感受野越大;三层膨胀卷积之后是一层跳步卷积(strided convolution),stride=S 表示对输入序列进行 S 倍的降采样。

按照上图给出的网络结构示例,共四层 EncoderBlock,降采样倍数分别为 2, 4, 5, 8,相当于整个编码器的整体降采样倍数为 320,对应于输入的 24 kHz 音频,输出帧率为 24000/320 = 75 Hz。此外,每个 EncoderBlock 在输出的 channel 维度上是输入 channel 的 2 倍,四层 EncoderBlock 之后输出的 channel 维度从C扩充至16C。 四层 EncoderBlock 之后是一层 kernel_size 为 3 的一维卷积,输出 channel 维度为 K,即对应于最终 embedding 的维度。

其他细节

为了保证模型的实时性和低时延,模型中用到的所有一维卷积全部采用因果卷积,卷积计算只会用到当前及之前的信息,padding 的操作也只应用于过去的序列。另外,所有的卷积层只使用 ELU 激活函数,不加入任何形式的 normalization 层。

解码器

解码器采用的是和编码器完全对偶的结构。编码器得到的 embedding 经过一维卷积后进入 Bdec个 DecoderBlock 模块。每个 DecoderBlock 先进入一层一维反卷积进行上采样,再经过三层残差单元将输出 channel 减半,三层残差单元的膨胀卷积率仍然是 1, 3, 9 的顺序。   Bdec  层 DecoderBlock 之后是一层输出 channel 为 1 的一维卷积,相当于将当前时刻的输出映射到原始的时域波形上。

残差向量量化器 (RVQ)

SoundStream 整体的编解码器结构比较直观,但论文的关键技术点之一是引入了残差向量量化(RVQ)模块,目的是将 Encoder 输出的 embedding 通过量化层压缩到目标的比特率。

先回顾下 VQ(Vector Quantization):VQ 的目标是学习 N 个向量构成的 codebook,用于对 Encoder 输出的 embedding 进行编码。设 Encoder 输出的 embedding 序列长度为 S,每个 embedding 的维度为 D,使用 VQ 进行编码后,每个 embedding 被重新映射为一个 one-shot 向量,向量中 1 的位置用于表征对应 codebook N 个向量中的哪个,因此量化后对应的序列为 S × N,log2N 作为 one-hot 向量可以用  比特来存储。

普通 VQ 的局限性

计算下 VQ 所需的 codebook 大小:如果目标比特率是 6 kbps,对于 24 kHz 的音频,按照前文图中的 320 倍降采样,每秒对应于 75 个 embedding,每个 embedding 对应的比特数为 6000 / 75 = 80 bit,那么对应的 codebook 大小是 280,这个量级肯定是行不通的,因此普通版本的 VQ 因为 codebook 过大而不适用。

残差 VQ / 多阶段 VQ

为了解决普通 VQ 方法中 codebook 规模过大的问题,SoundStream 采用多阶段 VQ 的方法。RVQ 量化器一共包含Nq层 VQ,基本流程如 Algorithm 1 所示(Qi 表示第 i 层量化层):原始的 Encoder 的输出的 embedding 经过第一层 VQ,可以计算出相应的量化残差,然后第二层 VQ 只针对上一层 VQ 的残差进行量化,以此类推。

值得注意的是,论文将原本的一层 VQ 转换为多层残差 VQ 时,每个 VQ 层的 codebook 大小保持一致,相当于比特率的降低是按照倍数平均分配到每个 VQ 层的。按照前文 24 kHz 音频压缩到 6 kbps 的例子:当使用的 VQ 层共 8  时,每个 VQ 对应的 codebook 大小可以变为 1024,此时就是一个相对可行的 codebook 大小了。

codebook EMA 训练

每个量化器在训练 codebook 的时候,都使用 EMA (Exponential Moving Average,指数移动平均)的更新方式。训练 VQ 的 codebook 使用 EMA 方法由 Aäron van den Oord首次提出。论文 Neural Discrete Representation Learninghttps://arxiv.org/abs/1711.00937)提出使用 EMA 指数移动平均的方式训练码本 codebook。

 EMA 指数移动平均:每次迭代相当于对之前所有 batch 累计值和当前 batch 新获取的数据值进行加权平均,权重又称为 decay factor,通常选择数值为 0.99 ,使得参数的迭代更新不至于太激进。

假设可以一次性获取训练集对应于 Encoder 的所有输出,设 codebook 上一次迭代后其中某个向量为ei ,那么本次迭代只需求出 Encoder 输出中和  ei  距离最近的向量,取平均值即可作为 ei  本次迭代后的数值。这实际上和 k-means 中聚类中心的迭代方式一样,但这种思想没有办法应用于 mini-batch 级的数据,因为每个 batch 只包含全部训练集的很小一部分,基于 mini-batch 的统计和平均是有偏的,因此需要采用一种随着 mini-batch 的变化在线更新 codebook 的方法。

codebook 初始化及更新

SoundStream 在初始化 codebook 的各个向量时,对第一个 batch 数据 Encoder 输出的 embedding 进行 k-means 聚类,使用聚类中心作为各向量的初始值,使得 codebook 在开始训练时和输入的数据分布保持相近。

如果 codebook 中某个向量在多个 batch(可以对具体的 batch 数进行预设)都没有可用的 embedding 来更新参数,该向量会使用当前 batch 内随机一个 embedding 进行覆盖。这个思想是参考了 JukeBox(https://arxiv.org/pdf/2005.00341.pdf)论文中的做法,是为了让 codebook 中的向量在训练时被及时的使用,因为 codebook 中的向量只用被用到了才能从损失函数得到反馈进行反向传播的参数更新,从而规避 codebook 的无效学习。

灵活的比特率

按照前文的描述,RVQ 的层数和每个 RVQ 的 codebook 大小确定时,音频压缩后的比特率也是固定的,这就要求对不同比特率的应用场景分别训练不同配置的模型。但是 SoundStream 利用了 RVQ 的残差连接的优势,使得所有的 RVQ 层不一定需要全部使用,训练时可以对 RVQ 层进行结构上的 Dropout,从而给出 SoundStream 的另一大优势:很灵活地适配不同的比特率。具体操作方法为:设 RVQ 的层数为 Nq,对于每个训练样本,随机从 1 到  Nq 中选择一个数nq ,对应于不同的比特率,训练阶段只需要经过前 nq个 RVQ 层;推理阶段也可以根据不同比特率的需要,使用相应的前 nq  个 RVQ 模块进行预测。

判别器

SoundStream 为了提高编解码之后音频的合成质量,将语音合成中常用的对抗训练思想引入到模型中,额外增加了两种判别器,用来判别音频是编解码恢复出来的还是真实的音频。

第一种是基于波形的判别器。采用多精度 multi-resolution 的思想,与 MelGAN 和 HiFi-GAN 中的多精度判别器类似,在原始波形、2 倍降采样和 4 倍降采样后的波形上分别进行真假判别。

第二种是基于 STFT 的判别器:

训练目标

SoundStream 整体使用 GAN(生成对抗网络)作为训练目标,采用 hinge loss 形式的对抗 loss。对应到 GAN 模型中,整个编解码器作为 Generator 生成器,使用前文所述的两种 Discriminator 判别器:一个 STFT 判别器和三个参数不同的 multi-resolution 判别器。判别器用来区分是解码出的音频还是真实的原始音频,本文采用 hinge loss 形式的损失函数进行真假二分类:

生成器的损失函数是为了让生成器的输出被分类为 1 类别,以达到以假乱真的目标,损失函数形式为:

训练目标中还增加了 GAN 中常用的 feature matching 损失函数和多尺度频谱重建的损失函数。feature matching 就是让生成器恢复出的音频和真实的音频,在判别器的中间层上达到相近的分布,用l表示在中间层上进行求和,feature matching 的损失函数为:

多尺度频谱重建的损失函数形式为:

联合压缩与增强

音频压缩(音频编码)和音频的降噪增强通常是两个不同的模块,在传统的音频处理流程中,音频增强模块通常位于音频编码前或者音频解码后,两个模块的时延是累加的。SoundStream 能够同时进行音频的编解码和降噪增强,并且不会增加系统的时延。

SoundStream 除了可以在不同的比特率下工作外,另外的灵活之处在于推理时可以选择降噪和不降噪两种模式。在模型中增加一个条件变量 denoise,denoise 为 false 时任何音频数据都可以拿来训练,denoise 为 true 时必须同时提供音频的原始版和降噪版来训练,因此只有在条件变量 denoise 置为 true 的时候模型才具有降噪的功能。

为了避免模型在 denoise = true 的时候对本来就干净无噪声的音频带来损伤,训练数据中还必须包含一些干净音频,在训练时 denoise = true 或 false 均可,让模型在有噪声/无噪声的条件下都具有效果的保证。

从 SoundStream 的编解码器图例中可以看到一个 FiLM 的模块,表示特征级别的线性调制(Feature-wise Linear Modulation),在编码器中使用时位于 embedding 之前(编码前进行降噪),在解码器中使用时输入是 embedding(编码后进行降噪),论文验证了在图中位置的效果是最好的。

SoundStream 评测

评测准备

评测数据集

评测覆盖多种类型的音频,包括干净和带噪的语音和音乐,都是 24kHz 采样率。干净的语音来自 LibriTTS,带噪的语音是将 LibriTTS 和 freesound 里的噪声叠加,叠加时噪声的增益系数在 -30dB 和 0 dB 之间;音乐数据来源是 MagnaTagATune;论文还采集了真实场景的音频数据集,覆盖了近场、远场(带混响)和背景噪声的音频。相当于共四个测试集,每个测试集是 50 个待测样本。

评测指标

模型最终评测的指标采用前文所述的 MUSHRA 分数,评测人母语均为英语,戴耳机进行评测。但是在模型训练和调参时,留出一个验证集,在上面计算客观指标进行模型评价,可以用 PESQ 和 POLQA 的,本文选择的是开源的 ViSQOL 评测指标。

评测基线

Opus 是传统的音频编解码方法,支持 4kHz ~ 24 kHz 的采样率和 6 kbps ~ 510 kbps 的比特率,在 Youtube 流媒体上都在使用。另外 EVS (增强语音服务) 也是一种新编解码方法,支持 4kHz ~ 20 kHz 的采样率和 5.9 kbps ~ 128 kbps 的比特率。Google 还提出了基于自回归模型的 Lyra 编解码器,可以在 3 kbps 的低比特率下使用。本文将以上三种方法作为基线。

实验结果

不同比特率下的结果

其中 scalable 的 SoundStream 代表一个支持多比特率的模型,不带 scalable 的模型表示给当前比特率专门训练的模型,可以看出模型是否 scalable 差别不大,尤其是高比特率下几乎无差别。相同比特率下,SoundStream 碾压其他三个基线模型。

不同类型音频的结果

SoundStream @ 3kbps 相当于 EVS @ 9.6kbps 和 Opus@12kbps,SoundStream@6kbps 相当于 Opus @ 16kbps 和 EVS @ 13.2kbps,SoundStream @ 12kbps 超过了 Opus @ 20kbps 和 EVS @ 16.4kbps。普遍性地,编解码后恢复的音频,MUSHRA 分数上:干净语音 > 真实场景音频 > 带噪语音 > 音乐。

消融实验

神经网络编码器的重要性

如果将编码器部分修改为普通的 fbank 特征(类似于一代 Lyra),再训练 RVQ 和解码器模块,此时的客观指标 ViSQOL 从 3.96 降低至 3.33;但是如果增加了神经网络结构的编码器,3 kbps 比特率下的 ViSQOL 也有 3.76,说明编码器采用神经网络结构是非常有必要的。

模型参数量大小的影响

从实验结果可以看出,建议使用相对轻量级的编码器和参数量更多的解码器。

VQ 参数配置的影响

假设共 Nq个量化器,每个量化器的 codebook 大小为 N,那么每帧 embedding 编码后需要 NqlogN比特来存储,比特率和   NqlogN 正相关。表格中给出了相同比特率下的不同参数配置,可以看出量化器层数不必太多,每层的 codebook 大小更大时,模型的效果会更好;但同时也能看出,80 层深层的 1-bit 量化器,也能够达到较好的效果,验证了 RVQ 深层网络的有效性。

模型的时延计算

前文说明过,模型的时延主要取决于编码器的降采样倍数,降采样倍数越大,时延越大。表格中给出了详细的对比结果,能够看出,降采样倍数越大,时延越大,但同时模型需要的量化层数明显降低,编解码器的实时率会随之提高(因为每个 embedding 对应的真实时间更长),因此在实际场景中需要在时延和实时性之间进行 trade-off。

联合的音频降噪和压缩

该评测将联合降噪压缩与分别的降噪和压缩进行对比。降噪和压缩分开时,压缩采用 SoundStream 模型,降噪采用 SEANet 模型,关于降噪和压缩模型的使用顺序,分别使用先降噪(编码前)后压缩、先压缩后降噪(解码后)两种策略。评测数据集使用的是 24kHz 的 VCTK,没有被用于 SoundStream 和 SEANet 的训练。分别在0,5,10,15 dB 四个配置下评测:

联合的压缩和降噪略差于其他两种实验配置,其他两种实验表明顺序带来的影响相差不大。SoundStream 的优势在于一个模型两种功能,简约而且省算力,并且和分开的两个模型在最终结果上相差不大。

参考文献/链接

  • Lyra v1: Kleijn, W. Bastiaan, et al. “Generative Speech Coding with Predictive Variance Regularization.” arXiv preprint arXiv:2102.09660 (2021).
  • AudioLM: Borsos, Zalán, et al. “Audiolm: a language modeling approach to audio generation.” arXiv preprint arXiv:2209.03143 (2022).
  • MusicLM: Agostinelli, Andrea, et al. “MusicLM: Generating Music From Text.” arXiv preprint arXiv:2301.11325 (2023).
  • EMA 训练 codebook 1: Van Den Oord, Aaron, and Oriol Vinyals. “Neural discrete representation learning.” Advances in neural information processing systems 30 (2017).
  • EMA 训练 codebook 2: Razavi, Ali, Aaron Van den Oord, and Oriol Vinyals. “Generating diverse high-fidelity images with vq-vae-2.” Advances in neural information processing systems 32 (2019).
  • Jukebox: Dhariwal, Prafulla, et al. “Jukebox: A generative model for music.” arXiv preprint arXiv:2005.00341 (2020).
  • FiLM: Perez, Ethan, et al. “Film: Visual reasoning with a general conditioning layer.” Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 32. No. 1. 2018.
  • ViSQOL 指标: Chinen, Michael, et al. “ViSQOL v3: An open source production ready objective speech and audio metric.” 2020 twelfth international conference on quality of multimedia experience (QoMEX). IEEE, 2020.
  • 官方博客: https://opensource.googleblog.com/2022/09/lyra-v2-a-better-faster-and-more-versatile-speech-codec.html
  • 示例音频: https://google-research.github.io/seanet/soundstream/examples
  • 官方开源: https://github.com/google/lyra
  • 非官方实现(PyTorch)Lucidrains: https://github.com/lucidrains/audiolm-pytorch/blob/main/audiolm_pytorch/soundstream.py
  • 非官方实现(Pytorch)wesbz: https://github.com/wesbz/SoundStream

非因果卷积/因果卷积

因果卷积:

因果卷积可以用上图直观表示。即对于上一层t时刻的值,只依赖于下一层t时刻及其之前的值。和传统的卷积神经网络的不同之处在于,因果卷积不能看到未来的数据,它是单向的结构,不是双向的。也就是说只有有了前面的因才有后面的果,是一种严格的时间约束模型,因此被成为因果卷积。

上面的图片可以详细的解释因果卷积,但是问题就来,如果我要考虑很久之前的变量x,那么卷积层数就必须增加(自行体会)。。。卷积层数的增加就带来:梯度消失,训练复杂,拟合效果不好的问题,为了决绝这个问题,出现了扩展卷积(dilated)

(1) 流式推理中的卷积要求

  • 无未来信息依赖:卷积核只能访问当前及之前的输入,不允许访问未来输入。
  • 因果卷积(Causal Convolution):通过调整卷积核的 Padding,使卷积操作仅依赖历史时间步的数据。

(2) Padding 设计

  • 普通卷积的 Padding:在非流式模型中,通常使用 SAME Padding(如 TensorFlow 或 PyTorch 的对称填充),填充方式使得输入和输出长度一致。这会导致卷积核访问未来时间步数据,无法实现流式推理。
  • 因果卷积的 Padding
    • 对卷积核进行不对称填充(如只在输入前侧填充),使得卷积操作仅依赖于当前及之前的时间步。
    • 具体填充量 = 卷积核大小 – 1,例如 3×1 卷积核的填充量是 2。
import torch
import torch.nn as nn
from torch.autograd import Variable

__CUDA__ = torch.cuda.is_available()

class CausalConv1d(nn.Module):
    """
    A causal 1D convolution.
    """
    def __init__(self, kernel_size, in_channels, out_channels, dilation):
        super(CausalConv1d, self).__init__(self)
        
        # attributes:
        self.kernel_size = kernel_size
        self.in_channels = in_channels
        self.dilation = dilation
        
        # modules:
        self.conv1d = torch.nn.Conv1d(in_channels, out_channels,
                                      kernel_size, stride=1,
                                      padding=padding = (kernel_size-1) * dilation,
                                      dilation=dilation)

    def forward(self, seq):
        """
        Note that Conv1d expects (batch, in_channels, in_length).
        We assume that seq ~ (len(seq), batch, in_channels), so we'll reshape it first.
        """
        seq_ = seq.permute(1,2,0)
        conv1d_out = self.conv1d(seq_).permute(2,0,1)
        # remove k-1 values from the end:
        return conv1d_out[0:-(self.kernel_size-1)]

扩展因果卷积:【空洞因果卷积 Dilated causal Conv】

对于因果卷积,存在的一个问题是需要很多层或者很大的filter来增加卷积的感受野。扩大卷积(dilated convolution)是通过跳过部分输入来使filter可以应用于大于filter本身长度的区域。等同于通过增加零来从原始filter中生成更大的filter。

dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者语音文本需要较长的sequence信息依赖的问题中,都能很好的应用dilated conv,比如图像分割、语音合成WaveNet、机器翻译ByteNet中.

Normalization 层的选择与调整

Normalization 是流式推理中另一个关键挑战。普通的批归一化(Batch Normalization, BN)需要计算全局统计量(如均值和方差),这在流式推理中是不可能实现的。

(1) Batch Normalization 的问题

  • 需要整个批次的数据来计算统计量,无法在单步流式推理中实现。
  • 通常在训练阶段使用 batch statistics,在推理阶段使用 running statistics

(2) 解决方法

Layer Normalization (LN)

  • 不依赖于批次,而是对每个样本的特征维度进行归一化,非常适合流式推理。

Instance Normalization (IN)

  • 类似于 Layer Normalization,但操作在每个样本的空间维度上进行归一化。

Group Normalization (GN)

  • 介于 Batch 和 Layer Normalization 之间,将特征划分为组,并在组内进行归一化。

Online Normalization(自回归统计)

  • 通过滑动窗口或指数移动平均(EMA)计算局部统计量,仅依赖过去的信息。
  • 这种方法特别适合流式推理,但实现较为复杂。

实践中的流式推理设置

结合以上两点,具体实现流式模型时需要注意以下步骤:

  1. 卷积层
    • 替换普通卷积为因果卷积。
    • 如果使用扩张卷积(Dilated Convolution),需要保证所有层的 Padding 符合因果逻辑。
  2. 归一化层
    • 替换 BatchNormLayerNorm
    • 在需要时,引入自回归统计机制。
  3. 框架支持
    • 确保模型在流式输入中可以逐步更新输入窗口(如时间序列切片)。

语音和噪声相关数据集

转载地址:https://www.cnblogs.com/LXP-Never/p/15474948.html

博客作者:凌逆战

语音数据集

TIMIT

官方提供的下载地址:https://catalog.ldc.upenn.edu/LDC93S1

免费下载地址:https://goo.gl/l0sPwz(420M)

  TIMIT 共包含 6300 个句子,10 个句子由来自美国 8 个主要方言区的 630 位说话人。

VCTK

下载地址:传送门(10.94Gb)

  CSTR VCTK 语料库包括 110 位具有各种口音的英语使用者的语音数据。每个发言者读出大约 400 个句子,所有语音数据都是使用相同的录音设置录制的:全向麦克风 (DPA 4035)和一个小振膜电容麦克风,具有非常宽的带宽(Sennheiser MKH 800),96kHz 采样频率,24 位,在爱丁堡大学的半消声室中。所有录音都转换为 16 位,下采样到 48 kHz,并手动设置终点。

AISHELL-ASR0009-OS1 开源中文语音数据库

下载地址:传送门(14.51Gb)

  时长178小时,录音文本涉及智能家居、无人驾驶、工业生产等11个领域。录制过程在安静室内环境中, 同时使用3种不同设备: 高保真麦克风(44.1kHz,16-bit);Android系统手机(16kHz,16-bit);iOS系统手机(16kHz,16-bit)。高保真麦克风录制的音频降采样为16kHz。400名来自中国不同口音区域的发言人参与录制。

AISHELL-2 中文语音数据库

  时长为1000小时,其中718小时来自AISHELL-ASR0009,282小时来自AISHELL-ASR0010。录音文本涉及唤醒词、语音控制词、智能家居、无人驾驶、工业生产等12个领域。录制过程在安静室内环境中, 同时使用3种不同设备: 高保真麦克风(44.1kHz,16bit);Android系统手机(16kHz,16bit);iOS系统手机(16kHz,16bit)。AISHELL-2采用iOS系统手机录制的语音数据。1991名来自中国不同口音区域的发言人参与录制。

AISHELL-3 高保真中文语音数据库

  时长为85小时88035句,可做为多说话人合成系统。录制过程在安静室内环境中, 使用高保真麦克风(44.1kHz,16bit)。218名来自中国不同口音区域的发言人参与录制。

AISHELL-WakeUp-1 中英文唤醒词语音数据库

AISHELL-DMASH 中文普通话麦克风阵列家居场景语音数据库

AISHELL-4 多通道中文会议语音数据库

Mozilla Common Voice

下载地址:https://commonvoice.mozilla.org/zh-CN

时长:1965小时(目前为止)

最早2017年发布,持续更新,该基金会表示,通过 Common Voice 网站和移动应用,他们正在积极开展 70 种语言的数据收集工作。

Mozilla 宣称其拥有可供使用的最大的人类语音数据集,当前数据集有包括 29 种不同的语言,其中包括汉语,从 4万多名贡献者那里收集了近 2454 小时(其中1965小时已验证)的录音语音数据。并且做出了开放的承诺:向初创公司、研究人员以及对语音技术感兴趣的任何人公开我们收集到的高质量语音数据。

不能保证每个语音都是在消声室内录制,所以语音可能包含噪声

Tatoeba

下载地址:传送门

  项目始于2006年tatoeba是一个用于语言学习的句子、翻译和口语音频的大型数据库。收集面向外语学习者的例句的网站,用户无须注册便可以搜索任何单词的例句。如果例句含有对应的真人发音,也可以点击收听。注册用户可以添加、翻译、接管、改进、讨论句子。还可以在留言板上和其他注册用户讨论。在留言板上,所有的语言都是平等的,注册用户可以使用自己喜欢的语言与其他用户交流。

日语数据集

这个网站收集了很多和日语相关的数据集:语音资源联盟

JSUT

下载地址:传送门

该语料库由日语文本和阅读语音组成。音频数据以48 kHz采样并记录在消声室中。录制了一位说日语的女性的声音。该语料库包含10 小时的语音,由以下数据组成。

  • basic5000 … 涵盖所有常用汉字的读音和读音
  • utparaphrase512 … 替换了句子的一部分
  • onomatopoe300 … 日语拟声词
  • countersuffix26 … 助数詞
  • loanword128 … 衍生自外来词的动词和名词(例如,Google)
  • voiceactress100 …配音演员统计语料库(专业女配音演员免费语料库)
  • travel1000 … 旅游领域的短语
  • precedent130 … 判例文
  • repeat500 …重复演讲(100句* 5次)

JVS (Japanese versatile speech) corpus

下载地址:传送门

该语料库由日语文本(成绩单)和多说话者语音数据组成。

  • 100位专业演讲者,每个演讲者都说:
  • “parallel100” … 100 种在说话者中常见的阅读风格话语
  • “nonpara30” … 30 种在说话者之间完全不同的阅读风格话语
  • “whisper10” … 10 个耳语
  • “falsetto10” … 10 次假声

高质量(录音室录音)、高采样率(24 kHz)和大尺寸(30小时)的音频文件,包括有用的标签(例如,性别、F0 范围、说话者相似度、持续时间和音素对齐(自动生成))

japanese scripted speech corpus – daily use sentence

下载地址:传送门

这个开源数据集包含 18 小时的转录日文脚本语音,专注于日常使用的句子,其中包含 37 位发言者贡献的 17,372 条话语。

气导骨导数据集

https://github.com/wangmou21/abcs

https://github.com/elevoctech/ESMB-corpus

噪声数据集

noise-92

下载地址:传送门(250M)

音频参数:19980Hz;单通道,16位深

以mat格式存储,可以通过下面的脚本转换到wav格式,所有噪声的持续时间为 235 秒,19.98 KHz 的采样率、具有 16 位的模数转换器 (A/D)、抗混叠滤波器和无预加重级获得。包含15种噪声类型:

  • White noise:白噪声
  • pink noise:粉红噪声
  • volvo:车内噪声
  • babble:餐厅内嘈杂噪声
  • Military vehicle noise:军用车辆噪音
  • Tank noise:坦克内部噪
  • HF channel noise:高频信道噪声
  • Machine gun noise:机枪噪声
  • Factory floor noise:工厂车间噪音
  • F-16 cockpit noise:F16座舱噪声
  • Destroyer engine room noise:驱逐舰机舱噪声
  • Buccaneer: 驾驶舱噪声1

NOIZEUS数据集

下载地址NOIZEUS:用于评估语音增强算法的嘈杂语音语料库(噪声和纯净语音对)

包含30个IEEE 句子(由三名男性和三名女性发言者产生),被不同 SNR 下的八种不同的真实世界噪声破坏。噪音包括郊区火车噪音、杂音、汽车、展览厅、餐厅、街道、机场和火车站噪音。

DEMAND

下载地址:传送门(7.4Gb)

音频参数:48 kHz 和 16 kHz 采样率在一个目录中以 16 个单通道 WAV 文件的形式提供

16 通道环境噪声记录数据库

  麦克风阵列是几个麦克风的(通常规则的)排列,允许使用许多有趣的信号处理技术。例如,来自彼此相距很近的麦克风的音频信号的相关性可以用于确定声源相对于阵列的空间位置,或基于声音到达阵列的方向隔离或增强信号。

  通常,考虑声学背景噪声的麦克风阵列实验使用受控环境或模拟环境。这种人工设置在噪声源方面通常是稀疏的。其他已经存在的真实世界噪声数据库(例如AURORA-2语料库CHiME背景噪声数据NOISEX-92数据库)往往只提供非常有限的环境多样性,最多只能提供2个通道。

  这里介绍的DEMAND(多元环境多通道声学噪声数据库)提供了一组录音,允许在各种设置下使用真实环境的噪声测试算法。这个版本提供了15个录音。所有录音都使用16通道阵列,麦克风之间的最小距离为5厘米,最大距离为21.8厘米

PNL 100 Nonspeech Sounds

下载地址:传送门(~10M)

音频格式:20kHz采样率,单声道,16位深

这些非语音、环境声音可以用作评估语音分离系统等的非语音噪声

Crowd 人群噪音:N1-N17
Machine 机器噪音:N18-N29
Alarms 警报和警报器:N30-N43
Traffic 交通和汽车噪音: N44-N46 
Animal 动物声音:N47-N55
water 水声:N56-N69
Wind 风:N70-N78
Bell 铃:N79-N82
Cough 咳嗽:N83-N85
clap hands 拍手:N86
Snoring 打鼾:N87
Click 点击:N88
lol 笑:N88-N90
Yawn 打哈欠:N91-N92
cry 哭:N93
Shower 淋浴:N94
Brush your teeth 刷牙:N95
Footsteps 脚步声:N96-N97
Door Movement 门移动:N98
Telephone dialing 电话拨号:N99-N100

rnnoise_ontributions

RNNoise提供的捐赠数据集,大部分是一些办公室噪声,下载地址:传送门(6.41G)。

COUGHVID 众包数据集

下载地址:传送门 | 主页 (2.3G)

音频格式:

COUGHVID 用于研究大规模咳嗽分析算法的语料库,咳嗽音频信号分类已成功用于诊断各种呼吸系统疾病,并且人们对利用机器学习 (ML) 提供广泛的 COVID-19 筛查产生了浓厚的兴趣。COUGHVID 数据集提供了超过 30,000 个众包咳嗽记录,代表了广泛的受试者年龄、性别、地理位置和 COVID-19 状态。此外,经验丰富的肺科医生标记了 2,000 多条记录以诊断咳嗽中存在的医学异常,从而贡献了现有最大的专家标记咳嗽数据集之一,可用于大量咳嗽音频分类任务。因此,COUGHVID 数据集为训练 ML 模型以解决世界上最紧迫的健康危机提供了大量的咳嗽记录。

ESC-50:环境声音分类数据集

下载地址:https://github.com/karolpiczak/ESC-50(~600MB)

国内镜像:https://www.heywhale.com/mw/dataset/5ea9337c366f4d002d731d83

音频参数:44.1kHz;单通道,16位深

  ESC-50数据集是从Freesound.org中剪辑得到的2000份环境音频的标记集合,适用于环境声音分类。该数据集由5秒长的录音组成,组织成5大类,每个大类有10小类(每个小·类有40个示例),

  1. 动物:狗、公鸡、猪、奶牛、青蛙、猫、母鸡、昆虫(飞行)、羊、乌鸦
  2. 自然声音和水声:雨、海浪、噼啪作响的火、蟋蟀、鸟鸣、水滴、风、倒水、冲水马桶、雷雨
  3. 人类的非语音声音:婴儿啼哭、打喷嚏、鼓掌、呼吸、咳嗽、脚步声、笑、刷牙、打鼾、喝酒,啜饮
  4. 室内/家庭声音:敲门声、鼠标点击、键盘打字、门,木头吱吱作响、开罐头、洗衣机、吸尘器、时钟闹钟、时钟滴答声、玻璃破碎
  5. 外部/城市噪声:直升机、电锯、警笛、汽车喇叭、引擎、火车、教堂的钟声、飞机、烟花、手锯

 ESC环境噪音分类数据集

下载地址:传送门(26.8GB)

音频参数:44.1kHz,单通道,5 秒长剪辑

ESC 数据集是一组以统一格式提供的短期环境记录。所有剪辑都从通过项目项目获得的公共Freesound.org中提取

数据集由三部分组成:

  • ESC-50:一组有 2000 个环境记录(50 个类,每类 40 个剪辑),
  • ESC-10:一组有 400 个环境记录(每类 10 个类,40 个剪辑)(这是 ESC-50 的子集 – 创建初始化,作为概念验证/简单录制的标准化选择),
  • ESC-US:一个未标记的数据集,包含 25 万个环境记录(5 秒长的剪辑),适合无监督的预培训。

DESED dataset

主页:Domestic Environment Sound Event Detection Dataset

下载地址:DESED_syntheticDESED_public_eval

音频参数:

DESED 数据集是一个旨在识别家庭环境中的声音事件类别的数据集。 该数据集旨在用于声音事件检测(SED,识别具有时间边界的事件),但它也可用于音频标记(AT,指示音频文件中存在事件)。

该数据集由 10 个事件类组成,可在 10 秒的音频文件中进行识别。

闹钟/铃声/铃声,搅拌机,猫,狗,餐具,电动剃须刀/牙刷,油炸,自来水,演讲,吸尘器

DISCO 

下载地址:https://zenodo.org/records/4019030 (2.2G)

Freesound (https://freesound.org/) 的后过滤文件。这些文件属于以下类别之一:婴儿、搅拌机、洗碗机、剃须刀、风扇、油炸、打印机、吸尘器、洗衣机或(流动/冲洗)水。

后过滤包括验证文件确实属于这些类别之一,并过滤掉其中级别太低的部分。

婴儿啼哭数据集

https://github.com/giulbia/baby_cry_detection(310M)

https://github.com/gveres/donateacry-corpus(48.2M)

科大讯飞婴儿啼哭声识别挑战赛(810M)

风噪数据集

IKS 风噪数据集:人工产生气流的室内设置和具有真实风噪声的室外场景。

Wind Noise Dataset:包括人工产生和手机记录的样本。

YouTube–ASMR noise

风机噪声合集 (同一wav数据相似度很高)

割草机声音合集

割草机噪声:soundjay

吸尘器噪声合集

飞机客舱白噪音喷气声音合集

雨声:睡觉的雨声 – 夜间迷雾森林中的大暴雨和雷声

酒吧babble:https://www.youtube.com/watch?v=ZSrVznkaMEM

FSD50K

下载地址:传送门

音频格式:

  FSD50K 是一个人类标记声音事件的开放数据集,包含 51,197 个 Freesound 剪辑,总计 108.3 小时的多标签音频,这些剪辑不均等地分布在来自 AudioSet Ontology的 200 个类中。该数据集包含 200 个声音类(144 个叶节点和 56 个中间节点),由AudioSet Ontology的子集分层组织。音频内容主要由物理声源和产生机制产生的声音事件组成,包括人声、物声、动物声、自然声、乐器声等。可以在中检查词汇表 vocabulary.csv (请参阅下面的文件部分)。

MS-SNSD

下载地址:传送门

音频格式:16kHz,单声道,16位深

冷气机、机场公告、Babble、复印机、咀嚼、邻居、关门、打字、吸尘器

该数据集的来源:

Clean speech

Noise

QUT-NOISE

下载地址:传送门(7.70Gb)

音频格式:采样率48kHz;双声道;16位深

噪声类型:街道、咖啡厅、汽车、家庭、混响、

freesound-datasets

下载地址:传送门

STARSS22:Sony-TAu Realistic Spatial Soundscapes 2022

下载地址:传送门

该数据集包含各种房间和环境中声音场景的多通道录音,以及属于一组目标类别的重要事件的时间和空间注释。

注释了 13 个目标声音事件类。这些类松散地遵循Audioset 本体

Female speech, woman speaking 女性讲话,女性讲话
Male speech, man speaking 男性讲话,男性讲话
Clapping 鼓掌
Telephone 电话
Laughter 笑声
Domestic sounds 家庭声音
Walk, footsteps 行走、脚步声
Door, open or close 门打开或关闭
Music 音乐
Musical instrument 乐器
Water tap, faucet 水龙头、 水龙头
Bell 门铃
Knock 敲门

这个数据集不好刷选,标签注释不友好。

VOICe Dataset

下载地址:传送门(3.23GB)

音频格式:44.1kHz;单声道;32位(浮点)位深

用于开发和评估通用声音事件检测域适应方法的新数据集!

婴儿哭声
玻璃破碎
枪声

VOICe 由三种不同声音事件的 1449 种不同混合组成:

  • 1242 个混合了三种不同类别的声学场景(“车辆”、“户外”和“室内”)的背景噪声,在 2 个 SNR 值(-3,-9 dB)下混合,即 207 个混合 x 3 个声学场景 x 2 个信噪比 = 1242
  • 207 种没有任何背景噪音的混合物。

In-Vehicle Noise Dataset

下载地址:传送门(~2.47GB)

音频参数:44.1 kHz,16 位,2通道

  这个开源数据集包含来自多个来源的 5.08 小时车内噪声,其中包含 7 条噪声。噪声源可能包括

轮胎噪声
发动机噪声
收音机
人声

Vehicle Interior Sound Dataset

下载地址:传送门VISC Dataset SON(1.2GB)

音频参数:44.1kHz;双声道;16位深

  使用的数据集是从 YouTube 的不同车辆类型的驾驶视点 (PoV) 收集的。这些只是车内声音。没有司机,也没有人声。5980个声音被记录了8个类。这些车辆在露天的柏油路上行驶。我们不喜欢在雨天在未铺砌的道路上收集车内声音

这些数据的文件格式是 wav。使用声音的长度在 3-5 秒的范围内,频率为 48 kHz。选择的车辆类型是公共汽车、小巴、皮卡、跑车、吉普车、卡车、跨界车和轿车(汽车)。收集的车辆内部声音 (VIS) 数据集的属性总结在表中。

Bus(公交车):850个样本
Minibus(面包车):850个样本
Pickup(小卡车):850个样本
Sports Car(跑车):850个样本
Jeep(吉普车):850个样本
Truck(卡车):850个样本
Crossover(转线路):850个样本
Car (C级 – 4K):850个样本
total:5980

MAVD交通数据集

下载地址:传送门(~1.3G)

音频参数:44.1kHz,单声道,32位浮点 

  MAVD:城市环境中声音事件检测的数据集,该版本主要关注马路边收集交通噪声,因此得名MAVD-traffic,除了音频记录,它还包括同步视频文件。声音事件注释遵循一个交通声音本体,该本体是一组两种分类的组合:车辆类型(如汽车、公共汽车)和车辆组件(如发动机、刹车),以及一组与之相关的动作(如空转、加速)。

Dataset-AOB:城市声音事件分类

下载地址:https://zenodo.org/record/4319802#.YY4s8PlBxjU(~2G)

音频参数:采样率:22KHz – 44KHz,< 4 秒

数据集 Dataset-AOB 是使用卷积神经网络为硕士论文收集和手动编辑的城市声音事件分类的音频数据集:

警报器
儿童玩耍
狗吠
引擎
脚步声
玻璃破碎
枪声
地铁列车
下雨和尖叫声

他的数据来源TUT Rare sound events,NIGENS general sound events database、FSDnoisy18k ….,如果你已经使用了上面的数据,注意规避数据重复性。

CHiME-Home

任务描述:DCASE 2016 Domestic audio tagging

下载地址:传送门(3.9GB)

音频格式:音频数据以两个采样率(48kHz 和 16kHz)的 4 秒块提供,其中 48kHz 数据为立体声,16kHz 数据为单声道。16kHz 录音是通过对 48kHz 录音的右手通道进行下采样获得的。

  声学环境中的主要声源是两个成人和两个儿童、电视和电子产品、厨房用具、人类活动产生的脚步声和敲击声,以及来自屋外的声音[Christensen2010]。音频数据以两个采样率(48kHz 和 16kHz)的 4 秒块提供,其中 48kHz 数据为立体声,16kHz 数据为单声道。16kHz 录音是通过对 48kHz 录音的右手通道进行下采样获得的。每个音频文件对应一个块。

所有可用的音频数据都可用于系统开发,但将使用以 16kHz 采样的单声道音频数据进行评估,目的是接近商用硬件的典型录音能力。

UrbanSound

下载地址:传送门(17.9 GB)

音频格式:44.1kHz;双声道;16位深

该数据集包含 1302 条带标签的录音。每个录音都标有 10 个类别的声音事件的开始和结束时间。每个录音可能包含多个声音事件,但对于每个文件,仅标记来自单个类的事件。这些类来自城市声音分类

空调设备 air_conditioner
汽车喇叭 car_horn
小孩玩耍 children_playing
狗吠 dog_bark
钻孔 drilling
发动机 enginge_idling
枪射击 gun_shot
手提 jackhammer
汽笛,警报器 siren
街头音乐 street_music

UrbanSound8K

下载地址:传送门(6.60GB)

音频格式:44.1kHz;双声道;16位深

该数据集包含来自 10 个类别的城市声音的 8732 个标记声音摘录 (<=4s)。这些类来自城市声音分类

空调设备 air_conditioner
汽车喇叭 car_horn
小孩玩耍 children_playing
狗吠 dog_bark
钻孔 drilling
发动机 enginge_idling
枪射击 gun_shot
手提 jackhammer
汽笛,警报器 siren
街头音乐 street_music

SONYC Urban Sound Tagging

下载地址:传送门 (13.3 GB)

音频格式:

  SONYC Urban Sound Tagging (SONYC-UST) 是一个数据集,用于开发和评估用于现实城市噪声监测的机器监听系统。城市声音多标签数据集,标签分类如下:

引擎
  1:小型引擎
  2:中型引擎
  3:大型引擎
  X:引擎大小不确定
机械冲击
  1:凿岩机
  2:手提钻
  3:锄头
  4:打桩机
  X:其他未知冲击机械
非机械影响
  1:非机械影响
电动锯
  1:电锯
  2:中小型旋转锯
  3:大型旋转锯
  X:其他未知电动锯
警报信号
  1:汽车喇叭
  2:汽车警报
  3:警报器
  4:反向蜂鸣器
  X:其他未知警报信号
音乐
  1:固定音乐
  2:移动音乐
  3:冰淇淋车
  X:来自不确定来源的音乐
人声
  1:人或小组谈话
  2:人或小组喊叫
  3:大人群
  4:放大语音
  X:其他未知人声
狗
  1:狗吠叫

Isolated urban sound database

下载地址:传送门(2.3G)

音频格式:44.1kHz;background: 双声道;event: 单声道;16位深

数据集包含两个文件夹:

  • 事件:包括 231 个被视为突出的简短声音样本,持续时间为 1 到 20 秒,分为 21 个声音类别(铃声(bell)、鸟鸣(bird)、扫帚(broom)、汽车喇叭(carHorn)、过往汽车(cityCar、roadCar)、建筑工地(constructionSite)、咳嗽(coughing)、吠狗(dog)、警笛(siren)、脚步声(citystep, stepCity, stepPark)、停车发动机空挡噪声(stopCar)、金属噪音(doorbell)、飞机(plane)、关汽车的门(doorCar)、关家里的门(doorHouse)、暴风雨(storm)、街道噪声(streetNoise)、手提箱(suitcase)、火车(train)、电轨(tram)、卡车(truck)、人声(voice)……)
  • 背景:鸟鸣(bird)、建筑工地(construction Site)、人群噪音(crowd)、下雨(rain)、在公园、校园\里玩耍的孩子(park\schoolyard)、持续的交通噪音(traffic)、通风机(ventilation)、风吹树(wind_tree)

Acoustic Event Dataset

下载地址:传送门(1.2GB)

acoustic guitar:原声吉他
airplane:飞机
applause:掌声
bird:鸟
car:车
cat:猫
child:小孩
church bell:教堂钟声
crowd:人群
dog_barking:狗吠
engine:发送机
fireworks:烟火
footstep:脚步
glass_breaking:玻璃破碎
hammer:敲击
helicopter:直升机
knock:敲,击;碰撞
laughter:笑
mouse click:鼠标点击
ocean surf:海浪
rustle:沙沙声
scream:尖叫
speech:演说,发言,谈话
squeak:吱吱叫,嘎吱作响
tone:声调,音调
violin:小提琴
water tap:水龙头
whistle:口哨声

BBC音效

下载地址:https://sound-effects.bbcrewind.co.uk/

可能需要爬虫才能把数据下载下来

飞机、动物、掌声、气氛、钟声、鸟类、时钟、喜剧、人群、日常生活、破坏、电子产品、活动、火、脚步声、工业、机器、医疗、军事、自然、运动、玩具、交通、

NAR 数据集

下载地址:传送门(35MB)

在 多个真实的家庭环境中录制

厨房:吃东西、窒息、餐具、装满杯子、打开水龙头、打开/关闭抽屉、移动椅子、打开微波炉、关闭微波炉、微波炉、冰箱、烤面包机
办公室:关门、开门、钥匙、敲门、撕纸、拉链、(另一个)拉链
非语言:拍手、拍手、拍舌
语音:1,2,3,4,5,6,7,8,9,10, Hello, Left, Right, Turn, Move, Stop, Nao, Yes, No, What

asr-noises

下载地址:传送门(4.7GB)

这个数据集下载不来了,不知道咋回事

音乐数据集

MUSDB18

下载地址:https://zenodo.org/records/1117372 (4.7 GB)

主页地址:https://sigsep.github.io/datasets/musdb.html#musdb18-compressed-stems

音频参数:44.1kHz,双声道

musdb18是一个包含 150 个不同流派的完整长度音乐曲目(持续时间约 10 小时)及其独立的鼓、贝司、人声和其他主干的数据集。

其目的是作为源分离算法设计和评估的参考数据库。这种信号处理方法的目标是从一组混合物中估计一个或多个源,例如卡拉OK应用程序。它已被用作SiSEC 2018专业制作的音乐录音任务的官方数据集,这是一项评估源分离算法的评估活动。

MUSDB18-HQ

下载地址:https://zenodo.org/records/3338373 (22.7 GB)

主页地址:https://sigsep.github.io/datasets/musdb.html#musdb18-compressed-stems

音频参数:44.1kHz,双声道

MUSDB18-HQ 是 MUSDB18 数据集的未压缩版本(.wav文件)。在每个曲目文件夹中,用户可以找到mixture、鼓、贝斯、其他、人声

DCASE

dataset、mobile dataset、openset 的区别:

使用四个同时捕获音频的设备进行录音。

主要录音设备包括Soundman OKM II Klassik/studio A3、驻极体双耳麦克风和使用 48kHz 采样率和 24 位分辨率的Zoom F8录音机。麦克风经过专门设计,看起来像耳机,戴在耳朵里。因此,录制的音频与到达佩戴设备的人的人类听觉系统的声音非常相似。该设备进一步称为设备 A。

其他设备是常见的客户设备:设备 B 是三星 Galaxy S7,设备 C 是 iPhone SE,设备 D 是 GoPro Hero5 Session。所有同时录制的内容都是时间同步的。

TAU Urban Acoustic Scenes 2019 开发数据集:仅包含使用设备 A 录制的材料,包含 40 小时的音频,在课程之间保持平衡。数据来自12个城市中的10个。TAU Urban Acoustic Scenes 2019 评估数据集包含来自所有 12 个城市的数据。

TAU Urban Acoustic Scenes 2019 移动开发数据集:包含使用设备 A、B 和 C 录制的材料。它由使用设备 A 录制的 TAU Urban Acoustic Scenes 2019 数据和使用设备 B 和 C 录制的一些并行音频组成。来自设备的数据A 被重新采样并平均到单个通道中,以与设备 B 和 C 记录的数据的属性保持一致。数据集总共包含 46 小时的音频(40h + 3h + 3h)。TAU Urban Acoustic Scenes 2019 移动评估数据集还包含来自设备 D 的数据。

TAU Urban Acoustic Scenes 2019 开放集开发数据集:仅包含使用设备 A 记录的材料,由 TAU Urban Acoustic Scenes 2019 和开放分类问题的其他音频示例组成。“开放”数据由TUT Acoustic Scenes 2017 数据集的“海滩”和“办公室”类以及 2019 年记录的其他材料组成。数据集总共包含 46 小时的音频(40 小时 + 6 小时)。TAU Urban Acoustic Scenes 2019 开放集评估数据集包含来自 10 个已知类别和其他未知类别的数据。

TUT Sound events 2016

下载地址:

音频参数:44.1kHz,双声道,24位深

包含来自两个声学场景的 22 段录音:

家庭(室内),10 个录音,共 36:16
住宅区(室外),12个录音,共42:00

TUT Acoustic scenes 2016

下载地址:

音频参数:44.1kHz,双声道,24位深

由来自 15 个声学场景的 30 秒音频片段组成,每个声学场景有 78 个片段,总共 39 分钟的音频。

Bus 公共汽车-在城市乘坐公共汽车(车辆)
Cafe / Restaurant 咖啡厅/餐厅 - 小咖啡厅/餐厅(室内)
Car 汽车 - 在城市中驾驶或作为乘客旅行(车辆)
City center 市中心(室外)
Forest path 林间小径(室外)
Grocery store 杂货店 - 中型杂货店(室内)
Home  家(室内)
Lakeside beach 湖滨海滩(室外)
Library  图书馆(室内)
Metro station 地铁站(室内)
Office 办公室 - 多人,典型工作日(室内)
Residential area 住宅区(室外)
Train 火车里面(旅行,车辆)
Tram 有轨电车(旅行,车辆)
Urban park 城市公园(室外)

smart cars 2017 test4

任务描述:DCASE 2017 Large-scale weakly supervised sound event detection for smart cars

Development: Training (Psswd Training file: DCASE_2017_training_set)

Development: Testing (Psswd Testing file: DCASE_2017_testing_set)

Evaluation dataset (863 MB) password “DCASE_2017_evaluation_set”

音频参数:44.1kHz,单声道,16位深

鸣笛:
- 火车喇叭 (441)
- 气喇叭、卡车喇叭 (407)
- 汽车防盗器 (273)
- 倒车提示音 (337)
- 救护车(警笛) (624)
- 警车(警笛) (2,399)
- 消防车、消防车(警笛) (2,399)
- 民防警报器 (1,506)
- 尖叫 (744)

车辆声音:
- 自行车 (2,020)
- 滑板 (1,617)
- 汽车 (25,744)
- 路过的汽车 (3,724)
- 公共汽车 (3,745)
- 卡车 (7,090)
- 摩托车 (3,291)
- 火车 (2,301)

TUT Rare sound events 2017

下载地址:开发数据集 (17.5 GB) | 评估数据集 (7.4 GB)

音频参数:44.1kHz,单声道,16位深

包含用于创建稀有声音事件(婴儿哭声、枪声、玻璃破碎等)与背景音频的混合的源文件,以及一组易于生成的mixtures 和用于生成它们的配方。

数据集的“source”部分由两个子集组成:

  • 来自 15 个不同声学场景的背景录音
- Bus 公共汽车-在城市乘坐公共汽车(车辆vehicle)
- Cafe / Restaurant 咖啡厅/餐厅 - 小咖啡厅/餐厅(室内indoor)
- Car 汽车 - 在城市中驾驶或作为乘客旅行(车辆vehicle)
- City center 市中心(室外outdoor)
- Forest path 林间小径(室外outdoor)
- Grocery store 杂货店 - 中型杂货店(室内indoor)
- Home 家(室内)
- Lakeside beach 湖滨海滩(室外outdoor)
- Library 图书馆(室内indoor)
- Metro station 地铁站(室内indoor)
- Office 办公室 - 多人,典型工作日(室内indoor)
- Residential area住宅区(室外outdoor)
- Train 火车(旅行,车辆)
- Tram 有轨电车(旅行,车辆)
- Urban park 城市公园(室外outdoor)
  • 来自三类目标罕见声音事件的录音,并附有它们的时间发生的注释,
  • 一组提供交叉验证设置的元文件:背景和目标事件记录列表分为训练和测试子集(分别称为“devtrain”和“devtest”,表示它们作为开发数据集提供,而不是评估数据集单独发布)。

mixture set 由两个子集(训练和测试)组成,每个子集包含约 1500 个混合(每个子集中每个目标类约 500 个,其中一半的混合不包含任何目标类事件)。

TUT Acoustic Scenes 2017

下载地址:

  • 开发数据集 (10GB) 每个声学场景有312个片段,总计52分钟的音频。
  • 验证数据集 (3.6 GB) 每个声音场景有108段,总共18分钟的音频。

音频参数:44.1kHz,双声道,24位深

TUT Acoustic Scenes 2017,开发数据集由来自 15 个声学场景的 10 秒音频片段组成:

- Bus 公共汽车-在城市乘坐公共汽车(车辆vehicle)
- Cafe / Restaurant 咖啡厅/餐厅 - 小咖啡厅/餐厅(室内indoor)
- Car 汽车 - 在城市中驾驶或作为乘客旅行(车辆vehicle)
- City center 市中心(室外outdoor)
- Forest path 林间小径(室外outdoor)
- Grocery store 杂货店 - 中型杂货店(室内indoor)
- Home 家(室内)
- Lakeside beach 湖滨海滩(室外outdoor)
- Library 图书馆(室内indoor)
- Metro station 地铁站(室内indoor)
- Office 办公室 - 多人,典型工作日(室内indoor)
- Residential area住宅区(室外outdoor)
- Train 火车(旅行,车辆)
- Tram 有轨电车(旅行,车辆)
- Urban park 城市公园(室外outdoor)

TUT Sound events 2017

描述 DACSE 2017 test3

下载地址:

音频参数:44.1kHz,双声道,24位深

这些录音是在不同的街道上拍摄的。对于每个录制位置,都会捕获 3-5 分钟长的录音。用于录音的设备包括双耳Soundman OKM II Klassik/studio A3驻极体入耳式麦克风和使用 44.1 kHz 采样率和 24 位分辨率的Roland Edirol R-09波形记录器。

街道包含了(刹车吱吱作响、车、孩子们、大型车辆、说话的人、行走的人)

没有纯净噪声,只有噪声起止点。

TUT Urban Acoustic Scenes 2018

挑战赛地址:DCASE 声学场景分类

下载地址:

音频参数:48kHz,双声道,24位深

仅为开发数据集提供参考标签。评估数据集或排行榜数据集的参考标签将不会发布。数据集由来自 10 个声学场景的 10 秒音频片段组成:

复制代码
机场 - airport
室内购物中心-shopping_mall
地铁站 - metro_station
步行街 - street_pedestrian
公共广场 - public_square
街道交通 - street_traffic
乘坐有轨电车 - tram
公交车上- bus
乘地铁旅行 - metro
城市公园- park

TAU Urban Acoustic Scenes 2019

挑战赛地址:DCASE 声学场景分类

下载地址:

音频参数:48kHz,双声道,24位深

仅为开发数据集提供参考标签。评估数据集或排行榜数据集的参考标签将不会发布。包含来自 10 个声学场景的 10 秒音频片段,每个声学场景有 1440 个片段(240 分钟的音频)。该数据集总共包含 40 小时的音频。

复制代码
- 机场 -airport
- 室内购物中心 - shopping_mall
- 地铁站 - metro_station
- 步行街 - street_pedestrian
- 公共广场 - public_square
- 街道交通 - street_traffic
- 乘坐有轨电车 - tram
- 公交车上- bus
- 乘地铁旅行 - metro
- 城市公园- park

DCASE 2019 Task4

挑战赛地址:家庭环境中的声音事件检测

下载地址:

音频参数:

该任务的数据集由在家庭环境中录制或合成以模拟家庭环境的 10 秒音频片段组成。该任务侧重于代表Audioset子集的 10 类声音事件(并非所有类都存在于 Audioset 中,一些声音事件类包括来自 Audioset 的几个类):

演讲 Speech
狗 Dog
猫 Cat
闹铃/响铃/响铃 Alarm_bell_ringing
菜肴 Dishes
油炸 Frying
搅拌机 Blender
自来水 Running_water
吸尘器 Vacuum_cleaner
电动剃须刀/牙刷 Electric_shaver_toothbrush

TAU Urban Acoustic Scenes 2020 Mobile

下载地址:

音频参数:48kHz,双声道,24位深

仅为开发数据集提供参考标签。评估数据集的参考标签将不会发布。TUT城市声学场景2020移动开发数据集由10个声学场景中的10秒音频片段组成

机场 - airport
室内购物中心-shopping_mall
地铁站 - metro_station
步行街 - street_pedestrian
公共广场 - public_square
街道交通 - street_traffic
乘坐有轨电车 - tram
公交车上 - bus
乘地铁旅行 - metro
城市公园- park

TAU Urban Acoustic Scenes 2020 3Class

下载地址:

音频参数:48kHz,双声道,24位深

TAU Urban Acoustic Scenes 2020 3Class 数据集由来自 10 个声学场景的 10 秒音频片段组成,分为以下三大类 :

- 室内场景——*室内*:
    机场(airport):airport
    室内商场(shopping_mall):indoor shopping mall
    地铁站(metro_station):metro station
- 户外场景-*户外*:
    步行街(street_pedestrian):pedestrian street
    公共广场(public_square):public square
    中等交通街道(street_traffic,):street with medium level of traffic
    城市公园(park):urban park
- 交通相关场景-*交通*:
    乘坐公共汽车(bus):travelling by a bus
    乘坐电车(tram):travelling by a tram
    乘坐地铁(metro):travelling by an underground metro

TAU Urban Audio-Visual Scenes 2021

挑战赛地址:DCASE 2022 Task1

下载地址:

音频参数:1秒;44.1kHz;24位深,

机场 - airport
室内购物中心-shopping_mall
地铁站 - metro_station
步行街 - street_pedestrian
公共广场 - public_square
街道交通 - street_traffic
乘坐有轨电车 -tram
公交上 -bus
乘地铁旅行 -metro
城市公园-park

TAU Urban Acoustic Scenes 2021 Mobile

挑战赛地址:DCASE城市声学场景分类

下载地址:Evaluation dataset (8.8 GB)

音频参数:44.1kHz;单声道;24位深

机场 - airport
室内购物中心-shopping_mall
地铁站 - metro_station
步行街 - street_pedestrian
公共广场 - public_square
街道交通 - street_traffic
乘坐有轨电车 -tram
公交车上 -bus
乘地铁旅行 -metro
城市公园-park

TAU Urban Acoustic Scenes 2022 Mobile

下载地址:

音频参数:44.1kHz;单声道;24位深

  使用四个同时捕获音频的设备进行录音。主要录音设备包括 Soundman OKM II Klassik/studio A3、驻极体双耳麦克风和使用 48kHz 采样率和 24 位分辨率的 Zoom F8 录音机,称为设备 A。其他设备是常用的客户设备:设备B 是三星 Galaxy S7,设备 C 是 iPhone SE,设备 D 是 GoPro Hero5 Session。

  使用设备 A 录制的音频、真实设备录制的脉冲响应和额外的动态范围压缩来模拟 11 台移动设备 S1-S11,以模拟真实的录音。来自设备 A 的录音通过与选定脉冲响应的卷积进行处理,然后使用一组选定的参数进行处理以进行动态范围压缩(特定于设备)。脉冲响应是专有数据,不会公布。

  数据集包含来自 10 个城市和 9 个设备的数据:3 个真实设备(A、B、C)和 6 个模拟设备(S1-S6)。来自设备 B、C 和 S1-S6 的数据由从同时记录中随机选择的片段组成,因此它们都与来自设备 A 的数据重叠,但不一定彼此重叠。开发集中的音频总量为 64 小时。

机场 - airport
室内购物中心 - shopping_mall
地铁站 - metro_station
步行街 - street_pedestrian
公共广场 - public_square
街道交通 - street_traffic
乘坐有轨电车 - tram
公交车上- bus
地铁 - metro
城市公园- park

综合数据集 

综合数据集是 既有语音又有噪声的数据集

MUSAN

地址:传送门(11G)

音乐、语音和噪音的语料库

FSDnoisy18k

下载地址:传送门 (9.5 GB)

FSDnoisy18k 是一个音频数据集,旨在促进对声音事件分类中标签噪声的调查。它包含 20 个声音类别的 42.5 小时音频,包括少量手动标记的数据和大量真实世界的嘈杂数据。

DS_10283_2791

用于训练语音增强算法和 TTS 模型的嘈杂语音数据库

干净和嘈杂的并行语音数据库。该数据库旨在训练和测试以 48kHz 运行的语音增强方法。更详细的描述可以在与数据库相关的论文中找到。对于 28 个说话人数据集,详细信息可参见:C. Valentini-Botinhao、X. Wang、S. Takaki 和 J. Yamagishi,“使用深度循环神经网络的噪声鲁棒文本到语音合成系统的语音增强” “,在过程中。Interspeech 2016。对于 56 位说话者数据集:C. Valentini-Botinhao、X. Wang、S. Takaki 和 J. Yamagishi,“研究基于 RNN 的语音增强方法以实现抗噪文本到语音”,In Proc. SSW 2016. 用于创建嘈杂语音的一些噪音来自需求数据库,可在此处获得:http://parole.loria.fr/DEMAND/。语音数据库来自 CSTR VCTK 语料库,可在此处获取:https://doi.org/10.7488/ds/1994。用于创建此数据集的语音和 babble 噪声文件可在此处获得:http://homepages.inf.ed.ac.uk/cvbotinh/se/noises/。

CSTR NAM TIMIT Plus

下载地址:传送门(1.342G)

综合数据集就是啥也有

DNS-Challenge:https://github.com/microsoft/DNS-Challenge/tree/master/datasets

Noisy speech database for training speech enhancement algorithms and TTS models

OpenSLR:https://openslr.org/

参考

【知乎】语音数据集整理

【github】open-speech-corpora

Freeze-Omni 端到端语音双工模型

GPT-4o提供的全双工语音对话带来了一股研究热潮,目前诸多工作开始研究如何利用LLM来实现端到端的语音到语音(Speech-to-Speech)对话能力,但是目前大部分开源方案存在以下两个问题:

  • LLM灾难性遗忘:由于现有方案在语音模态与LLM进行对齐时,会或多或少对LLM进行微调,但由于要采集到与LLM本身训练的文本数据同等量级的语音数据是非常困难的,所以这一微调过程往往会导致LLM出现遗忘现象,造成LLM的聪明度下降
  • 语音问答(Spoken Question Answering)任务的评估:多数工作对于语音问答的准确性并没有进行定量评估,从已有的一些评估结果也可以看出同一模型语音问答和文本问答相比准确性会有明显的差距

针对上述这些问题,近日腾讯&西工大&南大的研究人员提出了一种低延迟的端到端语音双工对话模型Freeze-Omni(VITA大模型系列第二个工作),其可以在完全冻结LLM的情况下,为LLM接入语音输入和输出,使其能够支持端到端的语音对话能力,且通过一系列优化使得其具备低延迟的双工对话能力,其主要特性如下:

  • 在整个训练过程中,LLM的参数被完全冻结,确保大型语言模型的知识能力被完全保留
  • 训练过程中所依赖的数据规模较小,消耗的计算资源也较少。Freeze-Omni仅需要文本-语音配对数据(如ASR和TTS训练数据,比较容易获得)以及仅少量的文本模态的问答数据语音问答准确性显著超越Moshi与GLM-4-Voice等目前SOTA的模型
  • Freeze-Omni 可以支持任何具有文本模态的(多模态)大语言模型,能够保留基底大语言模型的能力,如提示服从和角色扮演等。此外,如果有必要改变大语言模型的领域或者回应方式,只需要用相应的文本数据对大语言模型进行微调即可,不需要采集大量语音的问答和对话数据.

三阶段训练策略实现语音输入输出能力

Freeze-Omni的整体结构如图1所示,其包含有语音编码器(Speech Encoder)和语音解码器(Speech Decoder)以及基底LLM三部分。在运行过程中,流式的语音输入通过语音编码器形成分块(Chunk)特征,然后通过Adapter连接到LLM,LLM生成的Hidden State和文本Token的在分块分割后分别以块的形式送入非自回归前缀语音解码器(NAR Prefix Speech Decoder)和非自回归语音解码器(NAR Speech Decoder)以进行Prefill操作,最后自回归语音解码器(AR Speech Decoder)将会完成Generate操作以生成语音Token,并由Codec Decoder将其流式解码为语音信号输出。

Freeze-Omni各个模块的三阶段训练策略如下:

流式语音编码器的三阶段训练:如图2所示,第一阶段(a)会先使用ASR数据训练一个具有ASR能力的语音编码。第二阶段(b)会以ASR任务为优化目标,将语音编码器与LLM做模态对齐,这个过程中LLM是处于冻结状态的。第三阶段(c)会使用由TTS系统合成的语音输入-文本回答的多轮QA数据进行训练,这里会使用第二阶段训练好的语音编码器,但是其参数保持冻结以保留其语音鲁棒性,而可训练的参数只有每个问题前的Prompt Embedding,用于指导LLM从ASR任务迁移到QA任务中。

流式语音解码器的三阶段训练

如图3所示,第一阶段(a)会先训练一个单码本的语音编解码模型,使用单码本的目的主要是为了降低计算复杂度和时延。

第二阶段(b)将会训练NAR语音编码器和AR语音编码器,这里会使用文本-语音的TTS数据,其文本会通过基底LLM的Tokenizer转化为Token,再经过基底LLM的Embedding层转化为文本特征,这个过程中Embedding的参数是冻结的,训练目标的语音Token是由第一阶段的语音编码器提供。

第三阶段(c)将会冻结第二阶段训练得到的所有网络,但同时加入了一个NAR Prefix语音编码器,其用于接受LLM输出的Hidden State,并将输出的kv-cache作为第二阶段模型的初始kv-cache,该过程使用的数据是文本输入-语音输出的QA数据,主要目的是为了使得语音编码器迁移到LLM的输出领域中。

双工对话的状态标签训练:如图4所示,为了实现双工交互,Freeze-Omni在语音编码器训练的第三阶段中,会为每个Chunk的最后一个语音帧对应的LLM输出Hidden State加入一个额外的分类层进行多任务训练,其目的主要是为了输出状态标签。当使用VAD激活语音流输入后,状态标签0表示LLM将会继续接受语音Chunk的输入,状态标签1表示LLM将会停止接收语音,且会打断用户并进入LLM的Generate阶段输出回复,状态标签2表示LLM也会停止接收语音,但不会打断用户,相当于对这次语音激活做了拒识。

模型性能测评

训练配置:Freeze-Omni在训练过程中,使用了开源Qwen2-7B-Instruct作为基底模型,语音编码器在训练过程中使用了11万小时中文英文混合的ASR数据,语音解码器训练过程使用了3000小时由TTS系统合成的文本-语音数据,所提到的QA数据是由6万条从moss-003-sft-data中抽取的多轮对话经过TTS系统合成得到的。

语音输入理解能力评估:Freeze-Omni提供了其在常见的英文测试集上的ASR性能测试结果,从中可以看出,其ASR准确性处于较为领先的水平。

语音输出质量评估:Freeze-Omni提供了其在1000条LLM输出的Hidden State与Text Token上语音解码器生成的语音在使用ASR模型测试得到的词错误率(CER),从结果中可以看出NAR Prefix语音解码器的引入会有效降低词错误率,提高生成语音的质量。

语音问答准确性评估:Freeze-Omni提供了其在LlaMA-Questions, Web Questions, 和Trivia QA三个集合上的语音问答准确率评估,从结果中可以看出Freeze-Omni的准确率具有绝对的领先水平,超越Moshi与GLM-4-Voice等目前SOTA的模型,并且其语音模态下的准确率相比其基底模型Qwen2-7B-Instruct的文本问答准确率而言,差距明显相比Moshi与其文本基底模型Helium的要小,足以证明Freeze-Omni的训练方式可以使得LLM在接入语音模态之后,聪明度和知识能力受到的影响最低。

系统延迟评估:Freeze-Omni还提供了端到端时延分析(即用户说完后到LLM输出音频的时间差),作者将其分为了可统计时延和不可统计时延两部分,其中可统计时延的总时长平均数仅为745ms,而作者也提到如果经过测量考虑到网络延迟和不可统计时延部分,则系统的平均响应时延在1.2s左右,在行业内仍为领先水平。

通义语音增强去噪技术ClearerVoice-Studio

代码仓库

随着语音技术的普及,语音质量已成为人们关注的焦点。环境噪声、混响、设备拾音等问题,常常使语音质量和可懂度大打折扣。无论是录制清晰语音却因周围环境嘈杂充满噪声,还是在地铁、餐厅等喧闹场景中与人通话时不得不提高嗓音,这些场景都体现了语音处理技术的迫切需求。特别是在复杂的多人对话环境中,如何有效分离目标说话人的语音信号,避免其他干扰,一直是语音处理领域的难点和热点。

通义实验室开源 ClearerVoice-Studio,一个集成语音增强、语音分离和音视频说话人提取等功能的语音处理框架。通过融合复数域深度学习算法,我们大幅提升了语音降噪和分离的性能,能够最大限度地消除背景噪声并保留语音清晰度,同时保持语音失真最小化。

 ClearerVoice-Studio 能为您做什么?

  • 高效去除背景噪声,将嘈杂语音处理成高质量、清晰的语音信号;
  • 从复杂音频混合中轻松分离目标语音,满足多种语音处理需求;
  • 使用音视频结合的模型精确提取目标说话人的语音信号
  • 使用模型训练和调优工具进行模型效果进行评分

核心模型与算法亮点

  • FRCRN 模型:在 2022 年 IEEE/INTER Speech DNS Challenge 中取得整体第二的优异成绩,展现出卓越的语音增强能力。

MossFormer 系列模型:在语音分离任务中表现卓越,首次超越 SepFormer,获得业内广泛认可。目前,MossFormer 框架已扩展至语音增强和目标说话人提取任务。基于 MossFormer2 的 48kHz 语音增强模型在有效抑制噪声的同时,大幅降低了语音失真。

致力于将这些先进模型和算法通过 ClearerVoice-Studio 平台开放给更多用户,希望为开发者、研究者和企业提供强大的语音处理工具,助力创新应用落地。

效果体验

点击以下链接即可轻松上手🔗:https://huggingface.co/spaces/alibabasglab/ClearVoice
如何操作:

  1. 准备一段包含噪声的语音文件;
  2. 上传至指定页面;
  3. 一键处理后,您可以在线试听,也可以下载处理结果到本地。即刻获得清晰的音质、和卓越的降噪效果。

相关文献参考:

【1】Zhao, Shengkui and Ma, Bin and Watcharasupat, Karn N. and Gan, Woon-Seng, “FRCRN: Boosting Feature Representation Using Frequency Recurrence for Monaural Speech Enhancement”, ICASSP 2022 – 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP).

【2】Zhao, Shengkui and Ma, Bin, “MossFormer: Pushing the Performance Limit of Monaural Speech Separation using Gated Single-head Transformer with Convolution-augmented Joint Self-Attentions”, ICASSP 2023 – 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP).

【3】Zhao, Shengkui and Ma, Bin et al, “MossFormer2: Combining Transformer and RNN-Free Recurrent Network for Enhanced Time-Domain Monaural Speech Separation”, ICASSP 2024 – 2024 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP).

KE-Omni-语音会话大模型

贝壳团队最新的语音大模型工作:面对语音交互对话数据稀缺的行业现状,尝试通过多阶段生成的方式来Scale训练数据;构建了超60000+小时、包含40000+说话人的高质量交互对话数据集Ke-SpeechChat;通过这些方式,表现基本能达到SOTA;

个人理解

  • 1、具体做法是先生成文本token,基于文本token在自回归生成语音token,最后基于语音token合成音频,没办法做到打断和全双工对话。另外,只使用hubert的音频token来合成语音可能效果不好,缺乏声学信息,合成的音频可能不会有太多的情感波动以及音色可能不稳定,看作者demo和论文, HiFi-GAN 声码器针对代理发音人(agent speakers)预先训练,针对中英文男/女 各选了一个音色进行HiFiGAN的训练,如果只在单一音色上训练的HiFiGAN可能音色比较稳定。个人理解应该是每一个音色训练一个HiFiGAN模型,听demo确实语音没有情感波动另外这种方法跟LLama-omni做法基本一致。
  • 2、论文中给出了如何在没有开源的大规模语音交互数据集情况下进行语音对话数据集的制作。比较有借鉴意义。首先对文本数据使用LLM进行重写指令、筛选重写后的指令以及口语化后处理。然后使用TTS技术合成多说话人,多样化的语音。另外在附录中给出了 文本重写指令的prompt以及不同的大小的Qwen2 LLM重写的结果分析。【具体提示词见附录】

论文:通过使用超过 60,000 小时的合成语音对话数据扩展监督微调来推进语音语言模型Advancing Speech Language Models by Scaling Supervised Fine-Tuning with Over 60,000 Hours of Synthetic Speech Dialogue Data

KE-Omni是一个基于 Ke-SpeechChat 构建的无缝大型语音语言模型,这是一个大规模的高质量合成语音交互数据集,由 700 万中英文对话组成,有 42,002 名说话人,总计超过 60,000 小时,这为该领域的研究和开发进步做出了重大贡献。

KE-Omni 模型架构

KE-Omni 由三个主要组件组成:语音编码器、大型语言模型(LLM)和语音解码器针对用户的语音指令,KE-Omni 被设计为无缝生成高质量的文本和语音响应。

语音编码器

采用了 Whisper-large-v3的编码器作为语音编码器。Whisper 是一种广泛使用的多语言语音识别模型,以其在多种语言上的强大性能而著称,非常适合我们的应用场景。一个轻量级的语音适配器被用于语音-文本模态对齐,将语音编码器与 LLM 连接起来。

语音编码器将每秒的音频处理为 50 帧特征。随后,语音适配器进一步压缩语音特征序列的长度,使其与 LLM 的模态对齐。我们在语音适配器中采用了 5 倍的压缩比,这意味着每秒的语音最终被转换为 10 帧特征。这种方法提高了处理速度并降低了 LLM 的延迟,同时保证了质量不受影响。

在整个训练过程中,语音编码器的参数保持冻结状态,仅语音适配器的参数会更新。这种方法保留了编码器强大的语音表示能力,同时使适配器能够学习必要的转换,以实现与 LLM 的高效语音-文本模态对齐。

语言模型

采用了最先进的开源模型 LLaMA作为大型语言模型(LLM)。该模型在多语言推理能力方面表现出色,涵盖中文和英文等多种语言。在 KE-Omni 中,LLM 将提示文本嵌入和语音编码器生成的语音表示拼接后作为输入。这种集成方式使得 LLM 能够利用来自文本和语音模态的上下文信息。然后,LLM 根据用户的语音指令自回归地生成文本响应。为了在性能和效率之间取得平衡,我们选择了 LLaMA-3.1-8B-Instruct 作为我们的 LLM 变体。

语音解码器

语音解码器负责将 LLM 的文本响应映射为对应的语音信号,是实现语音交互的重要组件。解码器包括以下三个关键部分:

  1. 时长预测器来自 Unit-based HiFi-GAN Vocoder with Duration Prediction
  2. 语音单元生成器
  3. 基于单元的声码器(vocoder)

语音特征表示

类似于 (Zhang et al., 2023) 和 (Fang et al., 2024) 的方法,我们采用预训练的 HuBERT 模型(Hsu 等人,2021)来提取连续的语音表示,并使用 K-means 模型将这些连续表示转化为离散的聚类索引。

生成语音响应的步骤

  1. 时长预测
    在生成语音响应之前,时长预测器首先预测每个文本标记(token)的时长。
    • 根据预测的时长信息,文本token序列会被上采样以匹配目标音频帧序列的长度。
    • 时长预测器在 KE-Omni 的训练过程中保持冻结状态。
  2. 语音单元生成
    基于 Transformer 的语音单元生成器以自回归方式生成离散语音单元序列。为了提高预测速度,我们采用基于块的自回归方法,分块预测语音单元。
    • 给定块大小 C 和目标语音单元序列长度 T,第 i 个文本token和第 j 个语音单元的嵌入向量进行拼接【concatenated】作为输入,其中 j=i−C,且 i∈[C,T]。
    • 在第一个块中,语音单元使用零嵌入初始化。
    • 为了确保语音单元生成的质量,我们在扩展的文本token序列和语音单元序列之间引入了 N 步延迟。
  3. 波形合成
    最终,通过基于单元的声码器(vocoder)将语音单元合成波形。我们选择了 HiFi-GAN 作为声码器。Unit-based HiFi-GAN Vocoder with Duration Prediction HiFi-GAN 声码器针对代理发音人(agent speakers)预先训练,并在 KE-Omni 的训练过程中保持冻结状态。

Ke-SpeechChat 数据集构建

目前尚未见到开源的大规模语音交互数据集,这极大地阻碍了语音对话研究的发展。这种稀缺性主要归因于以下两个因素:一是构建语音数据的高成本,二是涉及的隐私风险。

为了有效构建大规模且高质量的语音交互数据集,我们通过利用先进的 LLM 和 TTS 工具包,探索高效的合成数据方法。为避免隐私风险,我们构建了一个虚拟语音库用于语音生成,其中的声音在现实世界中并不存在。此外,我们在数据中嵌入了水印,以表明这些数据是由 AI 生成的,从而防止其被滥用。

在对话数据的构建过程中,我们首先专注于创建能准确反映口语特征的文本对话数据,然后从这些文本对话中合成语音。随后,我们对合成语音进行质量保证和筛选。

文本预处理:

选择的文本对话问答数据集:

https://huggingface.co/datasets/BelleGroup/train_1M_CN
https://huggingface.co/datasets/BelleGroup/train_2M_CN
https://huggingface.co/datasets/BelleGroup/train_3.5M_CN
https://huggingface.co/datasets/fnlp/SpeechInstruct
https://huggingface.co/datasets/fnlp/AnyInstruct

文本数据集存在的问题:

任务不适合语音交互
许多数据集中的指令涉及的任务不适用于语音交互,例如生成图像、撰写长篇文章或创建结构化文本。这些任务难以自然地融入语音对话。

形式过于正式,与口语化不符
数据集中指令的表达通常过于正式和详尽,与日常口语表达存在显著差距。例如,一个数据集中的指令可能是:“如何安装和设置一款软件或设备(例如打印机)”,而在日常对话中,用户通常会简单地问:“怎么用打印机?”

内容过长且包含不可发音的符号
数据集中指令和响应往往过于冗长,并包含不可发音的特殊字符,例如 Markdown 符号、下划线和换行符。这些特性使得文本数据无法很好地适应语音交互的细腻和动态需求。

为了解决上述问题,我们实施了以下三个关键步骤:重写指令筛选重写后的指令以及口语化后处理。这三个阶段均借助大型语言模型(LLMs)完成具体的提示词(prompts)详见附录 A.1。

重写指令

重写指令的主要目标是将指令任务转化为更适合口头交互的形式。我们的方法是为大型语言模型(LLM)设计特定的提示,要求其将原始指令数据转换为人类可能会以口语形式提出的问题。

我们发现,当将完整的原始指令提供给 LLM 时,其输出通常只对任务的原始格式进行轻微改写,导致结果仍然不适合对话场景。为了解决这个问题,我们针对特定类型的任务(例如分类、摘要和其他指令性任务)实施了特定策略。我们移除了这些任务中的指令性句子,仅保留关键信息片段。随后,我们告知 LLM 这些片段是不完整的,要求其以此为灵感,创造性地生成新的问题。

这种方法有效降低了 LLM 过于依赖原始指令的倾向,并鼓励生成更加自然的对话式问题。因此,我们能够将正式且结构化的指令文本有效地转化为更适合语音场景的查询。

筛选重写后的指令

在指令重写阶段之后,我们会对重写后的指令进行筛选,以确保其适用于口语交互。筛选过程涉及以下三个关键考量:

  1. 适合口头交流:评估重写后的指令是否适合口头交流,排除需要生成长篇或结构化内容(如文章、歌词或电子邮件)的任务。
  2. 清晰度与完整性:评估每条指令的清晰度和完整性,确保其包含足够的背景信息。对于过于模糊或缺乏必要背景的指令(例如“这篇文章的主要内容是什么?”),会被筛除。
  3. 安全性:使用我们内部的系统和 Qwen2-72B-Instruct 模型对指令进行安全性评估。

通过这一筛选过程,数据集主要由清晰、上下文完整且安全的指令组成,从而提升其在对话交互场景中的适用性。

语音风格后处理

在最后阶段,我们使用大型语言模型(LLM)进一步修改筛选后的指令,以提升其对话质量,并以类似自然口语风格生成相应的回答。具体步骤如下:

  1. 对话语气:要求 LLM 采用自然的对话语气,避免生成无法发音的内容,并将数字和公式符号转换为其口头表达形式。
  2. 简洁回答:将回答限制在 100 字以内,确保单次回复不包含过多信息。

通过遵循这些指导原则,数据集被进一步优化,更加适合用于训练支持自然且高效语音交互的模型。

使用的模型版本
本节使用 Qwen2.5-72B-Instruct,而 重写指令筛选重写指令 节使用的是 Qwen2.5-14B-Instruct。值得注意的是,与较小版本(如 Qwen2.5-32B-Instruct 或 Qwen2.5-14B-Instruct)相比,Qwen2.5-72B-Instruct 生成的指令相似,但回答质量显著提升。示例可在附录中查看。

合成音频对话数据

使用 CosyVoice模型,它支持自定义语音特征,将文本对话转换为语音对话。为确保说话人多样性,我们构建了一个包含大量虚拟说话人的语音库这些说话人均来自开源语音数据。为保持合成语音对话的质量,我们对合成音频进行转录并计算字符错误率(CER),根据 CER 进行数据筛选,从而确保数据集的高质量。

语音库

数据来源 WenetSpeech4TTS 数据集源自 WenetSpeech(Zhang et al., 2022),该数据集包含从互联网收集的长音频录音,时长从几分钟到数小时不等。WenetSpeech4TTS 通过语音活动检测(VAD)对这些长录音进行分段,将其分割为较短的音频片段,同时计算每段的 DNSMOS 分数(Reddy et al., 2022)。这些短片段根据说话人的余弦相似性进行合并,以确保每个短片段均由同一说话人发出。然而,WenetSpeech4TTS 未检测同一长录音中不同短片段之间的相似性,而这对我们的工作至关重要,因为我们需要识别由同一人发出的多个片段,以生成稳定的语音特征嵌入。

实际说话人

我们首先从 WenetSpeech4TTS 的优质短片段中(DNSMOS ≥ 4.0)提取音频,并根据其来源的长录音进行分类。我们筛选出包含至少 10 个优质短片段的长录音,记为 Ai​={ai1​,ai2​,…,ain​},其中 i 是长录音的索引,n≥10表示短片段的数量。
接着,我们使用 WavLM(Chen et al., 2022)为这些短片段提取 X-向量,并计算 Ai​ 中每对优质短片段之间的说话人相似性。如果某长录音中至少有 floor⌊2n​⌋ 对短片段的相似性得分超过 0.97,则这些短片段被认为由同一人发出。通过这种方法,我们识别出了 5000 多名说话人,且性别均衡。

虚拟说话人

对于每个识别出的语音特征,我们计算平均发音速度(即每个字符的平均发音时间,取整至最近的 10 毫秒)。然后,根据发音速度将这些特征进行分类。我们随机选择一个语音特征,并与同性别、发音速度相同的另一语音特征配对,通过加权平均生成合成语音特征,以保护隐私并生成不存在的、虚拟的合成语音。这一过程可以用来生成无限数量的虚拟语音。
通过这些步骤,我们的语音库包含高质量、多样化、性别均衡的虚拟语音,适用于语音合成的多种应用,同时不会对应任何真实个人。

语音合成

CosyVoice 进行语音合成。对于每段对话,我们随机选择一位用户语音和一位代理语音进行合成。为了防止数据滥用,所有合成语音均使用 AudioSeal(San Roman et al., 2024)进行水印保护。

质量保证

为确保合成对话的质量,我们对中文部分使用 Belle-whisper-large-v3-turbo-zh 进行转录,对英文部分使用 Whisper-large-v3-turbo 进行转录。
分别计算中文的字符错误率(CER)和英文的单词错误率(WER)。若某条对话的中文 CER 超过 5% 或英文 WER 超过 10%,则该对话被剔除,以确保数据的高质量。

Ke-SpeechChat 数据集细节

所有元数据存储在单个 JSON 文件中,每条对话都包含以下信息:对话 ID、说话人、性别、文本内容和音频路径。示例详见附录 C。

详细统计信息如表 1 所示,其中中文和英文对话的数据分别列出。

  • 中文对话:数量超过 510 万条,总时长达 40,884 小时。
  • 英文对话:数量超过 170 万条,总时长达 19,484 小时。

数据集中的说话人性别均衡,包含 40,000 名用户和 2 名代理【输出语音】(用户和代理的分布均适用于中文和英文)。大量的对话和说话人确保了数据集的多样性。

训练数据被随机划分为五个不同大小的子集:XSSMLXL

  • 每个较大的子集都包含所有较小子集的数据。
  • 所有子集均完整覆盖 42,002 名说话人。

质量评估
为评估 Ke-SpeechChat 的质量,我们使用以下客观指标:

  1. DNSMOS(P.835 OVRL)和 UTMOS 评分:分别衡量音频质量和语音自然度。
  2. ASR 和 TTS 任务:进一步评估数据集性能。

附录

A:PROMPTS提示

指令重写:

指令过滤:

语音风格后处理 [根据指令获得响应]:

B:Qwen不同版本的能力 比较

本附录介绍了使用不同版本的Qwen2.5模型对口语风格后处理的影响,如下表所示

C: Dialogue Format