distil-whisper

GitHub
4.1k 351 简单 1 次阅读 今天MIT音频
AI 解读 由 AI 自动生成,仅供参考

distil-whisper 是专为英语语音识别打造的高效模型,它是知名开源模型 Whisper 的“蒸馏”版本。针对原始 Whisper 模型体积大、推理速度慢导致在实时应用或资源受限设备上部署困难的问题,distil-whisper 通过知识蒸馏技术,在保持极高精度的同时实现了显著的性能飞跃。

该工具的核心亮点在于其卓越的效率:相比原版大型模型,它的体积缩小了约 50%,推理速度提升了 6 倍,而在各类测试集上的词错误率(WER)差距仅为 1% 以内。这意味着用户可以在几乎不牺牲识别准确度的前提下,大幅降低计算成本和等待时间。目前提供的多个版本中,distil-large-v3 综合性能最佳,适用于大多数场景;而参数量极小的 distil-small.en 则特别适合内存有限的移动端或嵌入式设备。

需要注意的是,distil-whisper 目前仅支持英语识别,若需多语言支持,建议参考 OpenAI 发布的 Whisper Turbo 方案。这款工具非常适合需要构建快速、轻量级语音转文字应用的开发者,以及希望在本地设备运行高精度识别模型的研究人员。借助 Hugging Face Transformers 库,用户可以轻松集成并快速上手,让高效的语音识别触手可及。

使用场景

某初创团队正在开发一款实时英语会议记录 SaaS 服务,需要在云端低成本处理大量用户上传的短时段会议录音。

没有 distil-whisper 时

  • 响应延迟高:使用原版 Whisper large-v3 模型处理音频时,推理速度较慢,用户上传录音后往往需要等待数秒甚至更久才能看到转录结果,严重影响实时体验。
  • 服务器成本高昂:由于模型参数量高达 15.5 亿,推理时需要占用大量 GPU 显存和计算资源,导致云服务商账单激增,初创团队难以承受。
  • 并发能力受限:单张显卡同时能处理的请求数量有限,在会议高峰期容易出现排队拥堵,迫使团队不得不增加机器数量来维持服务稳定性。
  • 部署门槛较高:大模型对内存要求苛刻,限制了其在边缘设备或低配服务器上的部署可能性,无法灵活扩展应用场景。

使用 distil-whisper 后

  • 推理速度飞跃:切换至 distil-large-v3 后,推理速度提升了 6 倍以上,会议录音几乎实现“秒级”转写,用户无感等待,交互流畅度大幅提升。
  • 运营成本骤降:模型体积缩小了 49%,显著降低了单次推理的显存占用和计算开销,使得同等预算下可支持的并发用户数成倍增长。
  • 精度几乎无损:在保持英文识别准确率与原版相差不到 1% 的前提下,成功实现了性能与效率的最佳平衡,确保了会议记录的可靠性。
  • 部署更加灵活:更小的模型尺寸让团队可以考虑将服务部署在更低成本的实例上,甚至为未来拓展到端侧设备留下了技术空间。

distil-whisper 通过极致的效率优化,帮助团队在几乎不牺牲识别精度的情况下,大幅降低了延迟与成本,让高质量语音转写服务得以规模化落地。

运行环境要求

操作系统
  • 未说明
GPU
  • 非必需(支持 CPU),但推荐使用 NVIDIA GPU 以启用 float16 加速
  • 显存需求取决于模型大小(distil-small.en 约 166M 参数,distil-large-v3 约 756M 参数)
内存

未说明(建议使用 low_cpu_mem_usage=True 优化加载)

依赖
notes该工具仅支持英语语音识别。加载模型时建议指定 torch_dtype=torch.float16(若使用 GPU)并开启 use_safetensors=True 和 low_cpu_mem_usage=True 以优化性能。长音频转录支持顺序长表单(sequential long-form)和分块长表单(chunked long-form)两种模式。
python未说明
transformers>=4.35
torch
accelerate
datasets[audio]
safetensors
distil-whisper hero image

快速开始

Distil-Whisper

[论文] [模型] [Colab] [训练代码]

Distil-Whisper 是 Whisper 的蒸馏版英语语音识别模型,其速度提升了 6 倍,模型大小缩小了 49%,并且在分布外评估集上的词错误率(WER)仅比原模型高 1%

模型 参数 / 百万 相对延迟 ↑ 短文本 WER ↓ 长文本 WER ↓
large-v3 1550 1.0 8.4 11.0
distil-large-v3 756 6.3 9.7 10.8
distil-large-v2 756 5.8 10.1 11.6
distil-medium.en 394 6.8 11.1 12.4
distil-small.en 166 5.6 12.1 12.8

对于大多数应用场景,我们推荐使用最新的 distil-large-v3 检查点,因为它是在所有 Whisper 库中兼容性最好、性能最强的蒸馏模型。唯一的例外是资源受限、内存极少的应用场景,例如设备端或移动应用,在这种情况下,distil-small.en 是一个很好的选择,因为它只有 1.66 亿参数,且在 WER 方面仅比 Whisper large-v3 高 4%。

[!注意]
Distil-Whisper 目前仅支持英语语音识别。对于多语言语音识别,我们建议使用由 OpenAI 发布的 Whisper Turbo 检查点,它采用了与 Distil-Whisper 相同的原理。有关详细信息,请参阅 Whisper Turbo 的 发布说明

1. 使用方法

Distil-Whisper 自 Hugging Face 🤗 Transformers 4.35 版本起得到支持。要运行该模型,首先需要安装最新版本的 Transformers 库。在此示例中,我们还将安装 🤗 Datasets,以便从 Hugging Face Hub 加载一个玩具音频数据集:

pip install --upgrade pip
pip install --upgrade transformers accelerate datasets[audio]

短格式转录

短格式转录是指对长度小于30秒的音频片段进行转录的过程,这正是Whisper模型的最大接收范围。这意味着整个音频片段可以一次性处理完毕,而无需将其分割成多个部分。

首先,我们通过便捷的AutoModelForSpeechSeq2SeqAutoProcessor类加载Distil-Whisper模型。

我们将模型以float16精度加载,并通过传递low_cpu_mem_usage=True来尽可能缩短加载时间。此外,我们还希望确保模型以safetensors格式加载,因此传递了use_safetensors=True

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline

device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

随后,可以将模型和处理器传递给pipeline。请注意,如果您希望对生成过程有更多控制,可以直接使用模型加处理器的API,如下所示。

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    torch_dtype=torch_dtype,
    device=device,
)

接下来,我们从LibriSpeech语料库中加载一个示例短格式音频:

from datasets import load_dataset

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
sample = dataset[0]["audio"]

最后,我们可以调用管道来转录音频:

result = pipe(sample)
print(result["text"])

若要转录本地音频文件,只需在调用管道时传入音频文件的路径即可:

result = pipe("audio.mp3")
print(result["text"])

有关如何自定义自动语音识别管道的更多信息,请参阅ASR管道的文档。我们还提供了一个端到端的Google Colab,用于对比Whisper与Distil-Whisper的性能。

如需更精细地控制生成参数,请直接使用模型加处理器的API:

可以向model.generate传递临时生成参数,包括用于束搜索的num_beams、用于段落级时间戳的return_timestamps以及用于提示的prompt_ids。更多详细信息请参阅文档字符串

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
from datasets import Audio, load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(processor.feature_extractor.sampling_rate))
sample = dataset[0]["audio"]

input_features = processor(
  sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt"
).input_features

input_features = input_features.to(device, dtype=torch_dtype)

gen_kwargs = {
  "max_new_tokens": 128,
  "num_beams": 1,
  "return_timestamps": False,
}

pred_ids = model.generate(input_features, **gen_kwargs)
pred_text = processor.batch_decode(pred_ids, skip_special_tokens=True, decode_with_timestamps=gen_kwargs["return_timestamps"])

print(pred_text)

顺序长文本模式

最新的 distil-large-v3 检查点专门设计用于兼容 OpenAI 的顺序长文本转录算法。该算法采用滑动窗口对较长的音频文件(超过 30 秒)进行缓冲推理,与 分块长文本算法 相比,能够生成更准确的转录结果。

顺序长文本算法应在以下任一场景中使用:

  1. 转录准确性是最重要的因素,而延迟相对不那么重要。
  2. 您正在批量转录较长的音频文件,在这种情况下,顺序模式的延迟与分块模式相当,但字错误率(WER)可低至 0.5%。

如果您只转录单个较长的音频文件,并且延迟是最关键的因素,则应使用下文所述的分块算法。有关不同算法的详细说明,请参阅 Distil-Whisper 论文 的第 5 节。

首先,我们像之前一样加载模型和处理器:

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

随后,可以将模型和处理器传递给 pipeline。请注意,如果您希望对生成过程有更多控制,可以直接使用 model.generate(...) API,如下所示。

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    torch_dtype=torch_dtype,
    device=device,
)

接下来,我们加载一个长文本音频样本。这里我们使用 LibriSpeech 语料库中的拼接示例:

from datasets import load_dataset

dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]

最后,我们可以调用管道来转录音频:

result = pipe(sample)
print(result["text"])

要转录音频文件,只需在调用管道时传入音频文件的路径即可:

result = pipe("audio.mp3")
print(result["text"])
如需更精细地控制生成参数,请直接使用模型和处理器 API:
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
from datasets import Audio, load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(processor.feature_extractor.sampling_rate))
sample = dataset[0]["audio"]

inputs = processor(
    sample["array"],
    sampling_rate=sample["sampling_rate"],
    return_tensors="pt",
    truncation=False,
    padding="longest",
    return_attention_mask=True,
)
inputs = inputs.to(device, dtype=torch_dtype)

gen_kwargs = {
    "max_new_tokens": 448,
    "num_beams": 1,
    "condition_on_prev_tokens": False,
    "compression_ratio_threshold": 1.35,  # zlib 压缩比阈值(以 token 空间为单位)
    "temperature": (0.0, 0.2, 0.4, 0.6, 0.8, 1.0),
    "logprob_threshold": -1.0,
    "no_speech_threshold": 0.6,
    "return_timestamps": True,
}

pred_ids = model.generate(**inputs, **gen_kwargs)
pred_text = processor.batch_decode(pred_ids, skip_special_tokens=True, decode_with_timestamps=False)

print(pred_text)

分块长文本模式

distil-large-v3 仍然兼容 Transformers 的分块长文本算法。当需要转录单个大型音频文件且要求尽可能快的推理速度时,应使用此算法。在这种情况下,分块算法的速度可比 OpenAI 的顺序长文本实现快高达 9 倍(参见 Distil-Whisper 论文 中的表 7)。

我们可以像之前一样加载模型和处理器:

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

要启用分块功能,需将 chunk_length_s 参数传递给 pipeline。对于 distil-large-v3,最佳的分块长度为 25 秒。若要激活批处理,则需传入 batch_size 参数:

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    chunk_length_s=25,
    batch_size=16,
    torch_dtype=torch_dtype,
    device=device,
)

max_new_tokens 参数控制每个分块生成的最大标记数。在典型的语音场景中,每秒通常不会超过 3 个词。因此,对于 30 秒的输入,最多约有 90 个词(约 128 个标记)。我们将每个分块的最大生成标记数设置为 128,以截断可能在片段末尾出现的幻觉内容。这些标记会在分块边界处通过长文本分块转录算法被移除,因此直接在生成过程中进行截断更为高效,可以避免解码器中多余的生成步骤。

现在,让我们加载一个长文本音频样本。这里我们使用 LibriSpeech 语料库中的拼接示例:

from datasets import load_dataset

dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]

最后,我们可以调用管道来转录音频:

result = pipe(sample)
print(result["text"])

有关如何自定义自动语音识别管道的更多信息,请参阅 ASR 管道的 文档

推测解码

Distil-Whisper 可以作为 Whisper 的辅助模型,用于 推测解码。推测解码在数学上能够确保与 Whisper 完全相同的输出,同时速度提升至两倍。这使其成为现有 Whisper 管道的理想替代品,因为可以保证输出完全一致。

进行推测解码时,我们需要同时加载教师模型:openai/whisper-large-v3,以及辅助模型(即学生模型):distil-whisper/distil-large-v3

首先,我们加载教师模型及其处理器。加载方式与前面示例中加载 Distil-Whisper 模型的方式大致相同:

from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
import torch

device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "openai/whisper-large-v3"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

接下来,我们加载辅助模型。由于 Distil-Whisper 与教师模型共享完全相同的编码器,因此我们只需加载一个两层的解码器,将其视为“仅解码器”模型:

from transformers import AutoModelForCausalLM
assistant_model_id = "distil-whisper/distil-large-v2"

assistant_model = AutoModelForCausalLM.from_pretrained(
    assistant_model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
assistant_model.to(device)

辅助模型与教师模型共用同一处理器,因此无需单独加载学生处理器。

现在,我们可以将辅助模型传递给管道,以用于推测解码。我们将它作为 generate_kwarg 参数,键名为 "assistant_model",从而启用推测解码功能:

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    generate_kwargs={"assistant_model": assistant_model},
    torch_dtype=torch_dtype,
    device=device,
)

与之前一样,我们可以将任意样本传递给管道进行转录:

from datasets import load_dataset

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
sample = dataset[0]["audio"]

result = pipe(sample)
print(result["text"])

注意: 推测解码的平均速度应比仅使用 Whisper large-v2 快两倍,而显存占用仅增加约 8%,同时在数学上确保结果完全一致。这使得它成为现有语音识别管道中替换 Whisper large-v2 的理想选择。

有关推测解码的更多详细信息,请参阅以下资源:

其他速度与内存优化

我们可以在下文中介绍一些额外的速度和内存优化方法,适用于 Distil-Whisper。

Flash Attention

如果您的 GPU 支持,我们建议使用 Flash Attention 2。为此,您需要先安装 Flash Attention

pip install flash-attn --no-build-isolation

然后,您可以将 use_flash_attention_2=True 传递给 from_pretrained 方法,以启用 Flash Attention 2:

- model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True, use_flash_attention_2=True)

Torch Scale-Product-Attention (SDPA)

如果您的 GPU 不支持 Flash Attention,我们建议使用 BetterTransformers。为此,您需要先安装 optimum:

pip install --upgrade optimum

然后,在使用模型之前将其转换为 "BetterTransformer" 模型:

model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = model.to_bettertransformer()

导出到其他库

Distil-Whisper 在以下库中支持原始的“顺序式”长文本转录算法。点击表格中的链接即可查看各库的相关代码片段:

distil-small.en distil-medium.en distil-large-v2
OpenAI Whisper 链接 链接 链接
Whisper cpp 链接 链接 链接
Transformers js 链接 链接 链接
Candle (Rust) 链接 链接 链接

随着“分块式”长文本转录算法集成到各个库中,相关更新将在此处发布。

有关 🤗 Transformers 的代码示例,请参阅“短文本转录”和“长文本转录”两节。

2. 为什么使用 Distil-Whisper? ⁉️

Distil-Whisper 被设计为英语语音识别领域中 Whisper 的直接替代品。以下是切换到 Distil-Whisper 的 5 个理由:

  1. 更快的推理速度: 推理速度是 Whisper 的 6 倍,同时在分布外音频上的 WER 误差率仅比 Whisper 高 1%:

  1. 抗噪能力强: 在低信噪比条件下表现出色的 WER 性能:

  1. 减少幻觉现象: 经量化分析,Distil-Whisper 的重复 5-gram 单词数量(5-Dup.)比 Whisper 少 1.3 倍,插入错误率(IER)也降低了 2.1%:

  1. 专为推测解码设计: Distil-Whisper 可用作 Whisper 的辅助模型,使推理速度提升至原来的 2 倍,同时在数学上保证输出结果与 Whisper 相同。
  2. 宽松的许可证: Distil-Whisper 采用 MIT 许可证,因此可用于商业用途。

3. 方法 ✍️

为了蒸馏 Whisper,我们将整个编码器模块复制并冻结,只保留两个解码器层,并从 Whisper 的第一个和最后一个解码器层初始化它们。其余的解码器层则被舍弃:

Distil-Whisper 是基于知识蒸馏的目标进行训练的。具体来说,它通过最小化蒸馏模型与 Whisper 模型之间的 KL 散度,以及伪标签音频数据上的交叉熵损失来进行训练。

我们使用总计 22,000 小时的伪标签音频数据对 Distil-Whisper 进行训练,这些数据涵盖了 10 个领域,涉及超过 18,000 名说话者:

如此多样化的音频数据集对于确保 Distil-Whisper 在不同数据集和领域中的鲁棒性至关重要。

此外,我们还使用 WER 过滤器来剔除 Whisper 错误转录或产生幻觉的伪标签,这大大提升了下游蒸馏模型的 WER 性能。

有关蒸馏设置和评估结果的详细信息,请参阅 Distil-Whisper 论文

4. 训练代码

用于复现 Distil-Whisper 的训练代码可在 training 目录中找到。该代码经过调整,足以支持多语言语音识别的 Whisper 蒸馏工作,方便社区中的任何人根据自己的需求蒸馏任意语言的 Whisper。

5. 致谢

6. 引用

如果您使用本模型,请考虑引用 Distil-Whisper 论文:

@misc{gandhi2023distilwhisper,
      title={Distil-Whisper: Robust Knowledge Distillation via Large-Scale Pseudo Labelling}, 
      author={Sanchit Gandhi and Patrick von Platen and Alexander M. Rush},
      year={2023},
      eprint={2311.00430},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}

同时请引用 Whisper 论文:

@misc{radford2022robust,
      title={Robust Speech Recognition via Large-Scale Weak Supervision}, 
      author={Alec Radford and Jong Wook Kim and Tao Xu and Greg Brockman and Christine McLeavey and Ilya Sutskever},
      year={2022},
      eprint={2212.04356},
      archivePrefix={arXiv},
      primaryClass={eess.AS}
}

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|4天前
图像数据工具视频

GPT-SoVITS

GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。

56.4k|★★★☆☆|1周前
音频

TTS

🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。

45k|★★★☆☆|1周前
音频开发框架图像

LocalAI

LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获

44.8k|★★★☆☆|1周前
图像音频语言模型

bark

Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。

39.1k|★★★☆☆|1周前
音频

ChatTTS

ChatTTS 是一款专为日常对话场景打造的生成式语音模型,特别适用于大语言模型助手等交互式应用。它主要解决了传统文本转语音(TTS)技术在对话中缺乏自然感、情感表达单一以及难以处理停顿、笑声等细微语气的问题,让机器生成的语音听起来更像真人在聊天。 这款工具非常适合开发者、研究人员以及希望为应用增添自然语音交互功能的设计师使用。普通用户也可以通过社区开发的衍生产品体验其能力。ChatTTS 的核心亮点在于其对对话任务的深度优化:它不仅支持中英文双语,还能精准控制韵律细节,自动生成自然的 laughter(笑声)、pauses(停顿)和 interjections(插入语),从而实现多说话人的互动对话效果。在韵律表现上,ChatTTS 超越了大多数开源 TTS 模型。目前开源版本基于 4 万小时数据预训练而成,虽主要用于学术研究与教育目的,但已展现出强大的潜力,并支持流式音频生成与零样本推理,为后续的多情绪控制等进阶功能奠定了基础。

39k|★★★☆☆|5天前
语言模型Agent开发框架