我在前几个月通过VoxCPM这个开源模型帮了朋友一个忙。
今年中秋,我用AI复刻陕腔,帮意外离世的长辈赴了约
而就在上周,VoxCPM更新了1.5 版本,
我第一时间就来体验惹,效果确实比 1.0 好很多。
简单来说,VoxCPM 就是一个语音克隆的开源模型。
这次更新在许多地方都优化了,主要体现在音质清晰度、生成效率、模型灵活性以及稳定性四个方面。
我感觉最直观的改进在于声音的听感质量。
旧版本模型的音频采样率为 16kHz,这通常对应于普通网络通话的音质水平。
VoxCPM 1.5 将音频采样率提升至 44.1kHz,相当于通过 CD 播放音乐的清晰度。
所以新模型生成的语音将包含更丰富的高频细节,人声会听起来更加饱满和真实。
减少了电子合成音常见的沉闷感或模糊感,但是输出质量还是依赖于参考音频的质量,要是太模糊也没用。
还有一个点就是算力优化
在人工智能领域,模型通常需要消耗计算资源来处理数据。
VoxCPM 1.5 在模型参数量增加到 8 亿的同时,通过优化算法逻辑,使编码率从原先的 12.5Hz 降低到了 6.25Hz。
这显著降低了计算需求,为生成更长的音频内容打下了基础。虽然模型参数量因网络深度增加略有上升,但在 RTX 4090 等设备上的实际推理速度保持不变甚至更快。
针对希望对模型进行微调的用户,VoxCPM 1.5 引入了更完善的支持方案。新版本增加了 LoRA 以及全量微调脚本,大大降低了定制化语音合成的门槛,个人用户或小型团队也能制作出符合自身需求的专用语音模型。
使用方式也很简单,
网页版在此https://huggingface.co/spaces/openbmb/VoxCPM-Demo
支持上传音频文件和现场语音录入。
再说说这几个参数有啥用。
右边这个 CFG,更高的数值能增加对提示的遵循,较低的数值则允许更多创造力。所以如果生成出来的音频很不稳定,就可以尝试调低了 CFG值。
Inference Timesteps 就是推理步数,步数越高,质量越高,但是花的时间也会更久。
Target Text 就是你要让它读的文本。
具体效果就是很稳定的,朋友们可以直接去官网上试,Case 不是本期的重点。
干货环节!
我尝试来给大家讲讲它的原理,让非专业的朋友也能听懂!
VoxCPM 采用了一种端到端扩散自回归架构
(End-to-End Diffusion Autoregressive Architecture)。
不同于主流方法将语音转换为离散的 Token(标记),该系统直接生成连续的语音表征。
整个架构建立在 MiniCPM-4 语言模型的基础之上,通过分层设计实现了语义理解与声学生成的解耦。
这是原理图:
是不是听懵(´・_・`)了,没关系,我现在来进行拆解~
双层语言模型结构
图中的核心部分由上下两个巨大的色块组成,代表了分层建模的两个阶段:
橙色部分的文本-语义语言模型(Text-Semantic Language Model):
位于底部的输入层接收两部分信息。
那这样起啥作用嘞?
这一层主要负责理解文本内容以及语音的韵律结构。
它并不直接生成声音,而是生成代表语音内容和节奏的粉红色无字方块代表着标量语义隐藏状态(Scalar Semantic Hidden)。
图中专门标注了 FSQ(Finite Scalar Quantization),可以理解它是一种量化约束机制。它用于增强模型在提取语义特征时的稳定性,确保生成的语义信息准确无误。
一是经过 BPE Tokenization 处理的需要朗读的文字(离散文本 )图片中给的输入内容是“VoxCPM is a TTS model”
二是经过 LocEnc(局部编码器)处理的历史语音或提示语音的语音隐藏状态(Speech Hidden)。
然后就是紫色部分的残差声学语言模型(Residual Acoustic Language Model):
这一层接收来自下层的语义隐藏状态,同时也结合了上一时刻的残差声学隐藏状态(Residual Acoustic Hidden),用深紫色方块表示。
这层
基于语义层提供的“骨架”,负责填充具体的声学细节,如音色、气息和声音质感。实现了从语义到声学的精细转化。
再来说说输入和输出的机制。
编码端(Encoder):
BPE Tokenization负责处理文本输入,LocEnc负责处理参考音频输入。
这使得模型能够进行零样本语音克隆,即只需要一段参考音频就能模仿其声音。
生成端(Decoder):
LocDIT是生成的最后一步,它接收声学模型的输出,最终生成连续语音潜在 Token(Continuous Speech Latent Tokens)就是内个灰色圆形,这些连续的潜在变量代表了最终的高质量语音波形。
最后还搞了一个辅助模块,Stop Predictor。
翻译成中文叫停止预测器, 它的作用是判断语音生成何时应该结束,防止模型生成多余的静音或无意义的重复片段。
在写这篇文的时候我也是一步一步学习的,如果有不对的地方还请大佬指正~
晓风乾丨 大四 Base北京 AI产品在职
想缩小科技带来的信息差 分享很酷的AI玩法。
希望得到您的点赞转发爱心三连支持,