音频量化编码-Encodec-英文-libritts-16k-nq32ds320-pytorch

我要开发同款
匿名用户2024年07月31日
35阅读
所属分类ai、encodec、pytorch、Alibaba、Speech Quantization、FunCodec、ViSQOL、audio
开源地址https://modelscope.cn/models/iic/audio_codec-encodec-en-libritts-16k-nq32ds320-pytorch
授权协议Apache License 2.0

作品详情

Highlights

适用于英文的语音量化编码(Speech Codec)模型

  • 以原始时域信号上作为输入的Encodec模型
  • 训练时采用结构化 dropout,推理时可根据需要选用不同比特率

项目介绍

FunCodec 是达摩院语音团队开源的音频量化工具包。 本项目提供了在 LibriTTS 英文数据集上预训练的语音量化模型,可以被应用于低比特率语音通讯、语音离散化表示、zero-shot语音合成等相关的学术研究。 在同等比特率的情况下,该模型获得了优于现有Encodec和SoundStream的量化语音质量,ViSQOL 得分更高。

FunCodec模型结构

FunCodec的模型包括域转换模块(Domain Transformation)、编码器(Encoder), 残差量化器(Residual Vector Quantization,RVQ)、解码器(Decoder)和域反转模块(Domain Inversion)。 具体而言:

  • 域转换模块:根据需要将音频信号转化为所需的表示形式,包括时域、短时频域、幅度相位域、幅度角度域等
  • 编码器:将不同表示形式的信号进行编码,得到较为紧凑的隐层表示
  • 残差量化器:对紧凑的隐层表示进行逐层量化,得到多组等长的离散编码,用以表示音频信号
  • 解码器:将多组离散编码解码成不同表示形式的音频信号
  • 域反转模块:将不同的表示恢复成人耳能够感知的音频信号

更多细节详见:

如何使用模型

在本地机器中推理

如果您有本地推理或定制模型的需求,请前往下载 FunCodec 音频量化工具包。

FunCodec 框架安装

  • 安装 FunCodec
# 安装 Pytorch GPU (version >= 1.12.0):
conda install pytorch==1.12.0
# 对于其他版本,请参考 https://pytorch.org/get-started/locally

# 下载项目代码:
git clone https://github.com/alibaba-damo-academy/FunCodec.git

# 安装 FunCodec:
cd FunCodec
pip install --editable ./

使用 FunCodec 提取音频量化编码

接下以 LibriTTS 数据集为例,介绍如何使用 FunCodec 提取量化编码:

# 进入工作目录
cd egs/LibriTTS/codec
model_name="audio_codec-encodec-en-libritts-16k-nq32ds640-pytorch"
# 下载模型
bash encoding_decoding.sh --stage 0 --model_name ${model_name}
# 提取量化编码,输入为 input_wav.scp,结果保存在 outputs/codecs 下
bash encoding_decoding.sh --stage 1 --batch_size 16 --num_workers 4 --gpu_devices "0,1" \
  --model_dir exp/${model_name} --bit_width 8000 --file_sampling_rate 16000 \
  --wav_scp input_wav.scp --out_dir outputs/codecs
# input_wav.scp 的格式如下:
# uttid1 path/to/file1.wav
# uttid2 path/to/file2.wav
# ...

使用 FunCodec 从量化编码恢复音频

# 恢复出的音频保存在 outputs/recon_wavs 下
bash encoding_decoding.sh --stage 2 --batch_size 16 --num_workers 4 --gpu_devices "0,1" \
  --model_dir exp/${model_name} --bit_width 8000 --file_sampling_rate 16000 \
  --wav_scp codecs.txt --out_dir outputs/recon_wavs 
# codecs.txt 为上一步骤中提取出的量化编码,格式类似:
# uttid1 [[[1, 2, 3, ...],[2, 3, 4, ...], ...]]
# uttid2 [[[9, 7, 5, ...],[3, 1, 2, ...], ...]]

Benchmark

训练配置

  • Feature info: raw waveform input
  • Train info: Adam, lr 3e-4, batchsize 32, 2 gpu(Tesla V100), accgrad 1, 300000 steps, speechmaxlength 51200
  • Loss info: L1, L2, discriminative loss
  • Model info: SEANet, Conv, LSTM
  • Train config: config.yaml
  • Model size: 15.14 M parameters

实验结果 (ViSQOL)

  • Test set: LibriTTS-test, ViSQOL scores
testset 50 tk/s 100 tk/s 200 tk/s 400 tk/s
LibriTTS 3.43 3.86 4.12 4.29

使用方式以及适用范围

运行范围

  • 现阶段只能在 Linux-x86_64 运行,暂未适配 Mac 和 Windows 。

使用方式

  • 直接推理:可以提取音频信号的离散化表示
  • 微调:请使用 FunCodec 中的 run.sh 进行相关实验

使用范围与目标场景

  • 适用于相关学术研究,在英文数据集上进行语音量化、离散化编码等任务。

模型局限性以及可能的偏差

  • 特征提取流程和工具差异,会对 ViSQOL 的数值带来一定的差异( < 0.1 )

相关论文以及引用信息

@misc{du2023funcodec,
      title={FunCodec: A Fundamental, Reproducible and Integrable Open-source Toolkit for Neural Speech Codec},
      author={Zhihao Du, Shiliang Zhang, Kai Hu, Siqi Zheng},
      year={2023},
      eprint={2309.07405},
      archivePrefix={arXiv},
      primaryClass={cs.Sound}
}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论