MioCodec v2 发布:仅需 341 bps 即可重建 44.1kHz 高保真音频,TTS 模型无缝升级神器

在口语语言建模(Speech Language Modeling)领域,我们长期面临着一个两难选择:是要高压缩率以降低计算成本,还是要高保真度以确保音质清晰?传统的神经音频编解码器往往难以兼得,且常常需要依赖复杂的外部声码器(Vocoder)来重建波形。

MioCodec 带来了突破性的解决方案。其最新发布的 v2 版本 不仅实现了在极低比特率(341 bps)下重建 44.1 kHz 的高保真音频,更通过巧妙的架构设计,让现有的 24kHz TTS 模型能够零成本升级至 44.1kHz 音质。

  • GitHub:https://github.com/Aratako/MioCodec
  • 模型:https://huggingface.co/Aratako/MioCodec-25Hz-44.1kHz-v2
MioCodec v2 发布:仅需 341 bps 即可重建 44.1kHz 高保真音频,TTS 模型无缝升级神器

核心突破:v2 版本的三大杀手锏

MioCodec-25Hz-44.1kHz-v2 并非简单的参数调整,而是一次架构层面的进化。

1. 44.1 kHz 高保真输出

相比基础的 24 kHz 模型,v2 版本将采样率提升至 CD 级标准的 44.1 kHz。这意味着它能还原更丰富的高频细节,让人声和音乐更加自然、通透,彻底摆脱了低采样率带来的“闷罐感”。

2. 集成波形解码器:端到端的高效推理

旧版模型依赖外部声码器(如 MioVocoder)进行波形合成,增加了推理延迟和系统复杂度。

  • v2 革新:直接将基于 iSTFTHead 的波形解码器集成到模型内部。
  • 优势:无需外部依赖,推理速度更快,部署更轻量,真正实现了从离散令牌到波形的端到端生成。

3. 令牌兼容性:TTS 模型的“免费”音质升级

这是 v2 版本最令人兴奋的特性。

  • 原理:在微调过程中,模型的内容分支(Content Branch)被完全冻结
  • 结果:v2 模型生成的离散令牌(Tokens)与 24kHz 版本(MioCodec-25Hz-24kHz)完全一致
  • 应用:任何已经在 24kHz 令牌上训练好的 TTS 模型,无需重新训练,只需在推理阶段将编解码器替换为 v2 版本,即可直接输出 44.1 kHz 的高品质音频。这简直是 TTS 开发者的“免费午餐”。

技术揭秘:UpsamplerBlock + SnakeBeta

如何实现从低分辨率令牌到高分辨率波形的跨越?MioCodec v2 借鉴并改进了 Inworld TTS-1 的架构:

  • UpsamplerBlock:负责将标准的 25 Hz 令牌流上采样,恢复出高频信息。
  • SnakeBeta 激活函数:这是一种周期性激活函数,特别擅长捕捉音频信号中的高频振荡特征。
  • 协同效应:两者的结合使得解码器能够从较低分辨率的输入中,精准预测并生成清晰的高频分量,从而实现完美的 44.1 kHz 重建。

模型家族对比

模型版本采样率比特率声码器核心优势推荐场景
MioCodec-v2 (推荐)44.1 kHz341 bps内置 (iSTFT)音质最佳、无需外置声码器、兼容 24k 令牌生产环境、高音质 TTS
MioCodec-Lite24 kHz341 bps内置 (iSTFT)轻量级、推理极快移动端、实时交互
MioCodec-Old44.1 kHz341 bps外部 (MioVocoder)旧版架构,需额外部署不推荐新项目使用
Kanade 系列24 kHz171-341 bps外部 (Vocos/HiFT)原始基准模型学术研究对比

快速上手:安装与推理

安装

推荐使用 uv 进行快速安装(支持 FlashAttention 加速):

# 创建虚拟环境并安装
uv add git+https://github.com/Aratako/MioCodec

# 若需极致性能,建议安装 FlashAttention (需 NVIDIA GPU 和 ninja)
uv pip install flash-attn --no-build-isolation

推理示例:一键合成 44.1kHz 音频

from miocodec import MioCodecModel, load_audio
import soundfile as sf

# 1. 加载模型 (自动下载 44.1kHz v2 版本)
model = MioCodecModel.from_pretrained("Aratako/MioCodec-25Hz-44.1kHz-v2")
model = model.eval().cuda()

# 2. 加载音频
waveform = load_audio("input.wav", sample_rate=model.config.sample_rate).cuda()

# 3. 编码为离散令牌
features = model.encode(waveform)

# 4. 解码为高保真波形 (无需外部声码器)
resynth = model.decode(
    content_token_indices=features.content_token_indices,
    global_embedding=features.global_embedding,
)

# 5. 保存结果
sf.write("output_44k.wav", resynth.cpu().numpy(), model.config.sample_rate)

进阶玩法:语音转换 (Voice Conversion)

利用 MioCodec 将语音解耦为内容令牌全局嵌入(说话人特征),轻松实现变声:

# 源音频 (提供内容)
source = load_audio("source.wav", sample_rate=model.config.sample_rate).cuda()
# 参考音频 (提供音色)
reference = load_audio("reference.wav", sample_rate=model.config.sample_rate).cuda()

# 执行转换:源的内容 + 参考的音色
vc_wave = model.voice_conversion(source, reference)
sf.write("converted.wav", vc_wave.cpu().numpy(), samplerate=model.config.sample_rate)
© 版权声明

相关文章

暂无评论

none
暂无评论...