用于流式语音转文字的开源模型:stt-1b-en_fr

Kyutai STT 模型简介

一、模型概述

Kyutai STT 是一种用于流式语音转文字(STT,也称为自动语音识别,ASR)的模型。与传统的离线语音转文字不同,该模型能够在接收到几秒钟的音频后,立即开始输出转录文本。

开发团队:Kyutai
模型类型:流式语音转文字转录
支持的语言:kyutai/stt-1b-en_fr 支持英语和法语,kyutai/stt-2.6b-en 支持英语。
许可协议:模型权重采用 CC-BY 4.0 许可。
代码仓库:GitHub。

二、模型详情

该模型采用了基于 Mimi(参见 Moshi 论文)对音频进行分词的 Transformer 架构,输出文本分词。帧率为 12.5Hz,每个音频帧由 32 个音频分词表示。

团队发布了两个模型:

  1. kyutai/stt-1b-en_fr:包含约 10 亿参数的英语和法语模型,具有 0.5 秒延迟和语义语音活动检测(VAD)。

  2. kyutai/stt-2.6b-en:仅支持英语的模型,包含约 26 亿参数,延迟为 2.5 秒。

Kyutai STT 是一种仅解码器的流式语音转文字模型,利用 Moshi 的多流架构,基于语音流建模文本流。文本流相对于音频流有所偏移,以使模型能够根据输入音频预测文本分词。

三、应用说明

(一)直接使用

该模型可用于流式语音转文字。它对嘈杂环境具有较强的鲁棒性,测试表明它可以处理长达 2 小时的音频而无需额外修改。该模型生成的转录文本包含大写字母和标点符号。通过从帧的偏移量中减去模型的文本流偏移量(0.5 或 2.5 秒),可以恢复预测文本分词的时间戳。

(二)使用 transformers 库

  1. 从源代码安装 transformers:

pip install git+https://github.com/huggingface/transformers

  1. 推理代码示例:
import torch
from datasets import load_dataset, Audio
from transformers import KyutaiSpeechToTextProcessor, KyutaiSpeechToTextForConditionalGeneration

# 1. 加载模型和处理器
torch_device = "cuda" if torch.cuda.is_available() else "cpu"
model_id = "kyutai/stt-2.6b-en_fr"
processor = KyutaiSpeechToTextProcessor.from_pretrained(model_id)
model = KyutaiSpeechToTextForConditionalGeneration.from_pretrained(model_id, device_map=torch_device)

# 2. 加载音频样本
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=24000))

# 3. 准备模型输入
inputs = processor(ds[0]["audio"]["array"])
inputs.to(torch_device)

# 4. 推理模型
output_tokens = model.generate(**inputs)

# 5. 解码生成的分词
print(processor.batch_decode(output_tokens, skip_special_tokens=True))
  1. 批量推理代码示例:
import torch
from datasets import load_dataset, Audio
from transformers import KyutaiSpeechToTextProcessor, KyutaiSpeechToTextForConditionalGeneration

# 1. 加载模型和处理器
torch_device = "cuda" if torch.cuda.is_available() else "cpu"
model_id = "kyutai/stt-2.6b-en_fr"
processor = KyutaiSpeechToTextProcessor.from_pretrained(model_id)
model = KyutaiSpeechToTextForConditionalGeneration.from_pretrained(model_id, device_map=torch_device)

# 2. 加载音频样本
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=24000))

# 3. 准备模型输入
audio_arrays = [ds[i]["audio"]["array"] for i in range(4)]
inputs = processor(audio_arrays, return_tensors="pt", padding=True)
inputs = inputs.to(torch_device)

# 4. 推理模型
output_tokens = model.generate(**inputs)

# 5. 解码生成的分词
decoded_outputs = processor.batch_decode(output_tokens, skip_special_tokens=True)
for output in decoded_outputs:
    print(output)

四、训练细节

(一)训练数据

  1. 预训练阶段:

    • 对于 kyutai/stt-2.6b-en 和 kyutai/stt-1b-en_fr,使用了 250 万小时公开可用的音频内容集合。对于该数据集,通过运行 whisper-timestamped 获得合成转录文本。
  2. 细化训练阶段:

    • 对 kyutai/stt-2.6b-en:

      • 在包含真实转录文本的公开数据集上进行细化训练,该数据集包含 24000 小时的音频。

      • 长形式细化训练阶段:最后,在前一阶段的数据和长形式音频的组合上进行细化训练。长形式音频来自两个来源:(a)拼接 LibriSpeech 示例(1000 小时),(b)合成对话(22000 小时)。

    • 对 kyutai/stt-1b-en_fr:

      • 在 Fisher 数据集(2000 小时英语音频)和专有数据(英语 1000 小时,法语 600 小时)上进行细化训练。

(二)计算基础设施

预训练和细化训练分别使用了 48 和 16 个 Nvidia H100 GPU。

五、核心技术汇总表格

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Open-source-AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值