Distil-Whisper

模型小了,幻觉还减轻了。OpenAI的Whisper被蒸馏后,语音识别数倍加速

前段时间,「霉霉大秀中文」的视频在各个社交媒体走红,随后又出现了「郭德纲大秀英语」等类似视频。这些视频很多都出自一个名叫「HeyGen」的 AI 应用之手。

不过,从 HeyGen 现在的火爆程度来看,想用它制作类似视频可能要排很久。好在,这并不是唯一的制作方法。懂技术的小伙伴也可以寻找其他替代方案,比如语音转文字模型 Whisper、文字翻译 GPT、声音克隆 + 生成音频 so-vits-svc、生成符合音频的嘴型视频 GeneFace++dengdeng。

其中,这个语音转文字的 Whisper 模型非常好用。Whisper 是 OpenAI 研发并开源的一个自动语音识别(ASR,Automatic Speech Recognition)模型,他们通过从网络上收集了 68 万小时的多语言(98 种语言)和多任务(multitask)监督数据对 Whisper 进行了训练。OpenAI 认为使用这样一个庞大而多样的数据集,可以提高模型对口音、背景噪音和技术术语的识别能力。除了可以用于语音识别,Whisper 还能实现多种语言的转录,以及将这些语言翻译成英语。目前,Whisper 已经有了很多变体,也成为很多 AI 应用构建时的必要组件。

最近,来自 HuggingFace 的团队提出了一种新变体 —— Distil-Whisper。这个变体是 Whisper 模型的蒸馏版,特点是模型小、速度快,而且准确度还很高,非常适合在要求低延迟或资源有限的环境中运行。不过,与能够处理多种语言的原始 Whisper 模型不同,Distil-Whisper 只能处理英文。

论文地址:https://arxiv.org/pdf/2311.00430.pdf

具体来说,Distil-Whisper 有两个版本,参数量分别为 756M(distil-large-v2)和 394M(distil-medium.en)。

与 OpenAI 的 Whisper-large-v2 相比,756M 版本的 distil-large-v2 参数量减少了一半还多,但实现了 6 倍的加速,而且在准确程度上非常接近 Whisper-large-v2,在短音频的 Word Error Rate(WER)这个指标上相差在 1% 以内,甚至在长音频上优于 Whisper-large-v2。这是因为通过仔细的数据选择和过滤,Whisper 的稳健性得以保持,幻觉得以减少。

网页版Whisper与Distil-Whisper速度的直观对比。图源:https://twitter.com/xenovacom/status/1720460890560975103

所以,虽然刚刚发布两三天,Distil-Whisper 的 star 量已经破千。

  • 项目地址:https://github.com/huggingface/distil-whisper#1-usage

  • 模型地址:https://huggingface.co/models?other=arxiv:2311.00430

此外,有项测试结果表明,在处理 150 分钟的音频时,Distil-Whisper 的速度可以达到 Faster-Whisper 的 2.5 倍。

测试链接:https://github.com/Vaibhavs10/insanely-fast-whisper#insanely-fast-whisper

那么,这么好的结果是怎么实现的呢?作者在论文中表示,他们利用伪标签技术构建了一个大规模开源数据集,然后利用这个数据集将 Whisper 模型蒸馏成了 Distil-Whisper。利用简单的 WER 启发式,他们只选择质量最高的伪标签进行训练。

下图 1 展示了 Distil-Whisper 的架构。研究者通过从教师模型中复制整个编码器来初始化学生模型,并在训练过程中冻结它。他们通过复制第一个和最后一个解码器层,从 OpenAI 的 Whisper-medium.en 和 Whisper-large-v2 模型中蒸馏出 2 层解码器检查点,分别取名为 distil-medium.en 和 distil-large-v2。         whaosoft aiot http://143ai.com 

蒸馏得到的模型的维度细节如表 3 所示。

在数据方面,模型在 9 个不同的开源数据集(见表 2)上训练了 22,000 小时。伪标签由 Whisper 生成。重要的是,他们使用了 WER 过滤器,只有 WER 得分超过 10% 的标签才会被保留。作者表示,这是保持性能的关键!  

下表 5 展示了 Distil-Whisper 的主要性能结果。

作者表示,冻结编码器的操作使得 Distil-Whisper 在对抗噪声时非常稳健。如下图所示,Distil-Whisper 遵循与 Whisper 相似的鲁棒性曲线,在噪声条件下优于 Wav2vec2 等其他模型。

此外,在处理比较长的音频文件时,与 Whisper 相比,Distil-Whisper 还有效减少了幻觉,作者认为这主要归功于 WER 过滤。

通过共享相同的编码器,Distil-Whisper 可以与 Whisper 配对进行推测解码(Speculative Decoding)。这样,在参数仅增加 8% 的情况下,速度提高了 2 倍,同时输出结果与 Whisper 完全相同。

### Distil库或模型的使用方法和文档 #### 使用DistilBERT模型的方法 DistilBERT是一个通过知识蒸馏从大型预训练语言模型BERT提炼而来的更小型、更快捷的变种[^1]。为了利用DistilBERT进行自然语言处理任务,开发者通常会遵循如下方式加载并应用该模型: ```python from transformers import pipeline nlp_model = pipeline('sentiment-analysis', model='distilbert-base-uncased-finetuned-sst-2-english') result = nlp_model("I love using Hugging Face's Transformers library!") print(result) ``` 这段代码展示了如何创建一个情感分析管道,并指定使用`distilbert-base-uncased-finetuned-sst-2-english`作为基础模型来进行英文文本的情感分类。 对于语音识别领域中的Distil-Whisper模型,则可以通过下面的方式完成初始化与测试: ```python from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor model_id = "distil-whisper/distil-large-v3" model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id) processor = AutoProcessor.from_pretrained(model_id) # 假设有一个音频文件路径audio_path # inputs = processor(audio_path, sampling_rate=16000, return_tensors="pt") print("Distil-Whisper 安装成功!") ``` 此部分代码说明了怎样导入必要的模块以及实例化特定版本(`distil-large-v3`)的Distil-Whisper模型及其对应的处理器对象[^4]。 #### 文档资源链接 官方提供了详尽的技术文档供用户查阅有关于这些模型的具体参数设置和其他高级功能的信息。建议访问Hugging Face官方网站上的Transformers项目页面获取最新最全的帮助资料[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值