模型简介
模型特点
模型能力
使用案例
🚀 Moonshine
Moonshine是由有用传感器公司(Useful Sensors)训练并发布的自动语音识别(ASR)模型。它能够将英语语音音频转录为英文文本,适用于对内存容量和计算资源要求苛刻的平台,助力开发者部署英语语音识别系统。
🚀 快速开始
Moonshine模型在Hugging Face 🤗 Transformers库中得到支持。要运行该模型,首先需安装Transformers库。在本示例中,我们还将安装 🤗 Datasets 以从Hugging Face Hub加载玩具音频数据集,并安装 🤗 Accelerate 以减少模型加载时间:
pip install --upgrade pip
pip install --upgrade transformers datasets[audio]
from transformers import MoonshineForConditionalGeneration, AutoProcessor
from datasets import load_dataset, Audio
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 = MoonshineForConditionalGeneration.from_pretrained('UsefulSensors/moonshine-base').to(device).to(torch_dtype)
processor = AutoProcessor.from_pretrained('UsefulSensors/moonshine-base')
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"],
return_tensors="pt",
sampling_rate=processor.feature_extractor.sampling_rate
)
inputs = inputs.to(device, torch_dtype)
# 为避免幻觉循环,我们根据每秒预期的令牌数限制生成文本的最大长度
token_limit_factor = 6.5 / processor.feature_extractor.sampling_rate # 每秒最多6.5个令牌
seq_lens = inputs.attention_mask.sum(dim=-1)
max_length = int((seq_lens * token_limit_factor).max().item())
generated_ids = model.generate(**inputs, max_length=max_length)
print(processor.decode(generated_ids[0], skip_special_tokens=True))
✨ 主要特性
- 支持多平台:可在内存容量和计算资源受限的平台上运行。
- 高性能:在标准数据集上的准确率优于同规模的现有ASR系统。
📦 安装指南
要运行Moonshine模型,需要安装相关依赖库。可以使用以下命令进行安装:
pip install --upgrade pip
pip install --upgrade transformers datasets[audio]
💻 使用示例
基础用法
from transformers import MoonshineForConditionalGeneration, AutoProcessor
from datasets import load_dataset, Audio
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 = MoonshineForConditionalGeneration.from_pretrained('UsefulSensors/moonshine-base').to(device).to(torch_dtype)
processor = AutoProcessor.from_pretrained('UsefulSensors/moonshine-base')
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"],
return_tensors="pt",
sampling_rate=processor.feature_extractor.sampling_rate
)
inputs = inputs.to(device, torch_dtype)
# 为避免幻觉循环,我们根据每秒预期的令牌数限制生成文本的最大长度
token_limit_factor = 6.5 / processor.feature_extractor.sampling_rate # 每秒最多6.5个令牌
seq_lens = inputs.attention_mask.sum(dim=-1)
max_length = int((seq_lens * token_limit_factor).max().item())
generated_ids = model.generate(**inputs, max_length=max_length)
print(processor.decode(generated_ids[0], skip_special_tokens=True))
📚 详细文档
模型详情
Moonshine模型专为语音识别任务而训练,能够将英语语音音频转录为英文文本。有用传感器公司开发这些模型是为了支持其基于低成本硬件开发实时语音转录产品的业务方向。目前有2种不同大小和能力的模型,总结如下表:
属性 | 详情 |
---|---|
模型类型 | 序列到序列的自动语音识别(ASR)和语音翻译模型 |
训练数据 | 模型在从互联网收集的200,000小时音频及相应的转录文本,以及HuggingFace上公开可用的数据集上进行训练。具体使用的开放数据集列在随附论文中。 |
大小 | 参数数量 | 仅英文模型 | 多语言模型 |
---|---|---|---|
tiny | 27 M | ✓ | |
base | 61 M | ✓ |
发布日期
2024年10月
论文与示例
模型使用
评估使用
这些模型的主要目标用户是希望在内存容量和计算资源严重受限的平台上部署英语语音识别系统的AI开发者。我们认识到,一旦模型发布,就不可能将其使用限制在“预期”用途范围内,也难以制定合理的安全使用指南。
模型主要在英语ASR任务上进行训练和评估。它们可能具备其他能力,特别是在针对某些任务(如语音活动检测、说话人分类或说话人分割)进行微调时,但在这些领域尚未进行全面评估。我们强烈建议用户在特定上下文和领域中对模型进行全面评估后再进行部署。
特别需要注意的是,我们警告不要使用Moonshine模型在未经个人同意的情况下转录其录音,或声称使用这些模型进行任何形式的主观分类。我们不建议在高风险领域(如决策场景)中使用该模型,因为准确性的缺陷可能导致结果出现明显偏差。这些模型旨在转录英语语音,将其用于分类不仅未经过评估,而且不合适,特别是用于推断人类属性时。
性能与局限性
我们的评估表明,该模型在标准数据集上的准确率优于同规模的现有ASR系统。
然而,像任何机器学习模型一样,预测结果可能包含音频输入中实际未说出的文本(即幻觉)。我们推测这是因为模型基于其对语言的一般知识,在尝试预测音频中的下一个单词时,会与尝试转录音频本身相结合。
此外,模型的序列到序列架构使其容易生成重复文本,虽然可以通过束搜索和温度调度在一定程度上缓解,但无法完全消除。对于短音频片段,或片段开头或结尾部分单词被截断的情况,这种行为和幻觉现象可能会更严重。
更广泛的影响
我们预计Moonshine模型的转录能力可用于改进辅助工具,特别是实时转录工具。基于Moonshine模型构建的有益应用的实际价值表明,这些模型的不同性能可能会产生实际的经济影响。
发布Moonshine模型也存在潜在的两用问题。虽然我们希望该技术主要用于有益目的,但使ASR技术更易于获取可能会使更多参与者能够构建强大的监控技术或扩大现有监控工作,因为其速度和准确性允许对大量音频通信进行经济实惠的自动转录和翻译。此外,这些模型可能具备直接识别特定个人的能力,这反过来又带来了与两用和不同性能相关的安全问题。实际上,我们预计转录成本不是扩大监控项目的限制因素。
🔧 技术细节
模型基于序列到序列的架构,能够将输入的语音序列转换为文本序列。在训练过程中,使用了大量的英语语音数据进行训练,以提高模型的准确性和泛化能力。
📄 许可证
本项目采用MIT许可证。
📖 引用
如果您从我们的工作中受益,请引用我们:
@misc{jeffries2024moonshinespeechrecognitionlive,
title={Moonshine: Speech Recognition for Live Transcription and Voice Commands},
author={Nat Jeffries and Evan King and Manjunath Kudlur and Guy Nicholson and James Wang and Pete Warden},
year={2024},
eprint={2410.15608},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2410.15608},
}
⚠️ 重要提示
不要使用Moonshine模型在未经个人同意的情况下转录其录音,或声称使用这些模型进行任何形式的主观分类。不建议在高风险领域(如决策场景)中使用该模型。
💡 使用建议
在特定上下文和领域中对模型进行全面评估后再进行部署。对于短音频片段或部分单词被截断的情况,需注意可能出现的幻觉和重复文本问题。



