SpeechTokenizer

SpeechTokenizer

将语音标记化统一的开源工具

SpeechTokenizer 是一个开源的语音标记化工具,采用编码器-解码器架构和残差向量量化技术,统一了语义和声学标记。该项目能够分层分离语音信息的不同方面,为语音语言模型提供更精确的输入。它提供了在 LibriSpeech 和 Common Voice 数据集上训练的模型,支持 16kHz 单声道语音处理。项目开源了训练代码和预训练模型,可用于语音处理研究和应用开发。

SpeechTokenizer语音标记器语音语言模型RVQ语音信息处理Github开源项目

SpeechTokenizer:语音语言模型的统一语音标记器

<a href='https://0nutation.github.io/SpeechTokenizer.github.io/'><img src='https://img.shields.io/badge/项目-主页-Green'></a> <a href='https://arxiv.org/abs/2308.16692'><img src='https://img.shields.io/badge/论文-Arxiv-red'></a>

简介

这是SpeechTokenizer:语音语言模型的统一语音标记器中提出的SpeechTokenizer的代码。SpeechTokenizer是一个用于语音语言模型的统一语音标记器,它采用了带有残差向量量化(RVQ)的编码器-解码器架构。SpeechTokenizer统一了语义和声学标记,在不同的RVQ层次中分层解耦了语音信息的不同方面。具体来说,RVQ第一个量化器输出的代码索引可以被视为语义标记,而其余量化器的输出主要包含音色信息,作为第一个量化器丢失信息的补充。我们提供了以下模型:

  • 一个在Librispeech上训练的16khz单声道语音模型,以所有HuBERT层的平均表示作为语义教师。
  • 一个使用Snake激活函数的16khz单声道语音模型,在Librispeech和Common Voice上训练,以所有HuBERT层的平均表示作为语义教师。
<br> <p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/8a8f9567-4ba0-46f1-aed3-8459de3070eb.png" width="95%"> <br> 概览 </p> <p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/3a58b7d4-83fa-4e6b-8898-f8f64abc72e1.jpg" width="95%"> <br> SpeechTokenizer框架 </p> <br>

欢迎尝试我们的SLMTokBench,我们还将开源我们的USLM

快速链接

发布

  • [2024/6/9] 🔥 我们发布了SpeechTokenizer的训练代码。
  • [2024/3] 🔥 我们发布了一个在LibriSpeech和Common Voice上训练的使用Snake激活函数的SpeechTokenizer检查点。
  • [2023/9/11] 🔥 我们发布了soundstorm_speechtokenizer的代码。
  • [2023/9/10] 🔥 我们发布了USLM的代码和检查点。
  • [2023/9/1] 🔥 我们发布了SpeechTokenizer的代码和检查点。查看论文演示

样本

样本可在我们的演示页面上查看。

安装

SpeechTokenizer需要Python>=3.8,以及较新版本的PyTorch。 要安装SpeechTokenizer,你可以从此仓库运行:

pip install -U speechtokenizer # 或者你可以克隆仓库并本地安装 git clone https://github.com/ZhangXInFD/SpeechTokenizer.git cd SpeechTokenizer pip install .

模型列表

模型数据集描述
speechtokenizer_hubert_avgLibriSpeech采用所有HuBERT层的平均表示作为语义教师
speechtokenizer_snakeLibriSpeech + Common VoiceSnake激活函数,所有HuBERT层的平均表示

使用方法

加载模型

from speechtokenizer import SpeechTokenizer config_path = '/path/config.json' ckpt_path = '/path/SpeechTokenizer.pt' model = SpeechTokenizer.load_from_checkpoint(config_path, ckpt_path) model.eval()

提取离散表示

import torchaudio import torch # 加载并预处理语音波形 wav, sr = torchaudio.load('<SPEECH_FILE_PATH>') # 单声道检查 if wav.shape(0) > 1: wav = wav[:1,:] if sr != model.sample_rate: wav = torchaudio.functional.resample(wav, sr, model.sample_rate) wav = wav.unsqueeze(0) # 从SpeechTokenizer提取离散编码 with torch.no_grad(): codes = model.encode(wav) # codes: (n_q, B, T)

RVQ_1 = codes[:1, :, :] # 包含内容信息,可以被视为语义标记 RVQ_supplement = codes[1:, :, :] # 包含音色信息,补充第一个量化器丢失的信息

解码离散表示

# 将语义标记(RVQ_1)和补充音色标记连接在一起,然后进行解码 wav = model.decode(torch.cat([RVQ_1, RVQ_supplement], axis=0)) # 从第i个到第j个量化器的RVQ-i:j标记进行解码 wav = model.decode(codes[i: (j + 1)], st=i)

训练SpeechTokenizer

在以下部分,我们将描述如何使用我们的训练器来训练SpeechTokenizer模型。

数据预处理

要训练SpeechTokenizer,第一步是从原始音频波形中提取语义教师表示。我们在scripts/hubert_rep_extract.sh中提供了如何提取HuBERT表示的示例。我们解释以下参数:

  • --config:配置文件路径。示例在config/spt_base_cfg.json中提供。您可以修改此文件中的semantic_model_pathsemantic_model_layer参数来更改Hubert模型和目标层。
  • --audio_dir:包含所有音频文件的文件夹路径。
  • --rep_dir:存储所有语义表示文件的文件夹路径。
  • --exts:音频文件的扩展名。如果存在多个扩展名,请使用','分隔。
  • --split_seed:划分训练集和验证集的随机种子。
  • --valid_set_size:验证集的大小。当这个数字在0和1之间时,它表示用于验证集的总数据集比例。

训练

您可以使用SpeechTokenizerTrainer来训练SpeechTokenizer,如下所示:

from speechtokenizer import SpeechTokenizer, SpeechTokenizerTrainer from speechtokenizer.discriminators import MultiPeriodDiscriminator, MultiScaleDiscriminator, MultiScaleSTFTDiscriminator import json # 加载模型和训练器配置 with open('<CONFIG_FILE_PATH>') as f: cfg = json.load(f) # 初始化SpeechTokenizer generator = SpeechTokenizer(cfg) # 初始化判别器。您可以添加任何尚未在此存储库中实现的判别器,只要输出格式与`speechtokenizer.discriminators`中的判别器保持一致。 discriminators = {'mpd':MultiPeriodDiscriminator(), 'msd':MultiScaleDiscriminator(), 'mstftd':MultiScaleSTFTDiscriminator(32)} # 初始化训练器 trainer = SpeechTokenizerTrainer(generator=generator, discriminators=discriminators, cfg=cfg) # 开始训练 trainer.train() # 从检查点继续训练 trainer.continue_train()

我们在scripts/train_example.sh中提供了示例训练脚本。SpeechTokenizerTrainer的所有参数都在config/spt_base_cfg.json中定义。以下我们解释一些重要的参数:

  • train_filesvalid_files:训练文件路径和验证文件路径。这些文件应该是文本文件,列出训练/验证集中所有音频文件及其对应的语义表示文件的路径。每行应遵循以下格式:"<音频文件路径>\t<语义文件路径>"。如果您使用scripts/hubert_rep_extract.sh提取语义表示,这两个文件将自动生成。
  • distill_type:使用"d_axis"表示论文中提到的D轴蒸馏损失,使用"t_axis"表示T轴蒸馏损失。

快速开始

如果您想完全遵循我们的实验设置,只需在config/spt_base_cfg.json中设置semantic_model_path,在scripts/hubert_rep_extract.sh中设置AUDIO_DIRREP_DIREXTS以及其他可选参数,然后执行以下代码:

cd SpeechTokenizer # 提取语义表示 bash scripts/hubert_rep_extract.sh # 训练 bash scripts/train_example.sh

引用

如果您在论文中使用了此代码或结果,请引用我们的工作:

@misc{zhang2023speechtokenizer, title={SpeechTokenizer: Unified Speech Tokenizer for Speech Language Models}, author={Xin Zhang and Dong Zhang and Shimin Li and Yaqian Zhou and Xipeng Qiu}, year={2023}, eprint={2308.16692}, archivePrefix={arXiv}, primaryClass={cs.CL} }

许可证

本存储库中的代码根据LICENSE文件中的Apache 2.0许可证发布。

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成热门AI工具AI图像AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具使用教程AI营销产品酷表ChatExcelAI智能客服
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

数据安全AI助手热门AI工具AI辅助写作AI论文工具论文写作智能生成大纲
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多