ONNX 模型库
返回模型

说明文档

模型卡片:Moonshine

[博客] [论文] [安装] [播客]

这是运行由 Useful Sensors 训练和发布的自动语音识别(ASR)模型(Moonshine 模型)的模型卡片。

遵循模型报告的模型卡片(Mitchell 等人),我们提供关于自动语音识别模型的一些信息。关于这些模型如何被训练和评估的更多信息可以在论文中找到。请注意,很多文字是从 OpenAI 开发的 Whisper 模型的模型卡片中逐字复制的,因为两个模型服务于相同的目的,并具有相同的风险。

模型详情

Moonshine 模型是为语音识别任务训练的,能够将英语语音音频转录为英语文本。Useful Sensors 开发这些模型是为了支持其基于低成本硬件开发实时语音转录产品的业务方向。有 2 个不同大小和能力的模型,如下表所示。

大小 参数量 仅英语模型 多语言模型
tiny 27 M
base 61 M

发布日期

2024 年 10 月

模型类型

序列到序列 ASR(自动语音识别)和语音翻译模型

论文和示例

论文 / 博客

模型使用

评估用途

这些模型的主要目标用户是希望在内存容量和计算资源严重受限的平台上部署英语语音识别系统的 AI 开发者。我们认识到,一旦模型发布,就不可能仅限制"预期"用途的访问,也不可能围绕什么是或什么不是安全使用制定合理的指导方针。

这些模型主要在英语 ASR 任务上进行训练和评估。它们可能表现出额外的能力,特别是在某些任务上进行微调后,如语音活动检测、说话人分类或说话人日志分离,但在这些领域尚未经过稳健的评估。我们强烈建议用户在部署之前在特定上下文和领域对模型进行稳健的评估。

特别地,我们警告不要使用 Moonshine 模型来转录未经个人同意而录制的录音,或声称使用这些模型进行任何类型的主观分类。我们建议不要在高风险领域(如决策场景)中使用,因为准确性的缺陷可能导致结果的明显缺陷。这些模型旨在转录英语语音,使用模型进行分类不仅没有经过评估,而且也不合适,特别是用于推断人类属性。

训练数据

这些模型是在从互联网收集的 200,000 小时的音频和相应的转录文本上训练的,以及在 HuggingFace 上公开可用的数据集。使用的开放数据集在随附论文中列出。

性能和局限性

我们的评估表明,在标准数据集上,这些模型比类似大小的现有 ASR 系统表现出更高的准确性。

然而,像任何机器学习模型一样,预测可能包含音频输入中实际上未说出的文本(即幻觉)。我们假设这种情况发生是因为,鉴于其对语言的一般知识,模型将尝试预测音频中的下一个单词与尝试转录音频本身结合起来。

此外,模型的序列到序列架构使其容易生成重复文本,这可以通过束搜索和温度调度在一定程度上缓解,但不能完美解决。这种行为和幻觉在短音频片段或单词部分在片段开头或结尾被切断的片段中可能更严重。

更广泛的影响

我们预计 Moonshine 模型的转录能力可用于改进无障碍工具,特别是实时转录。基于 Moonshine 模型构建的有益应用的实际价值表明,这些模型的不同性能可能具有真正的经济影响。

发布 Moonshine 也存在潜在的双重用途担忧。虽然我们希望该技术主要用于有益目的,但使 ASR 技术更易于获取可能使更多的行为者能够构建强大的监控技术或扩大现有的监控工作,因为速度和准确性允许对大量音频通信进行负担得起的自动转录和翻译。此外,这些模型可能具有开箱即识别特定个人的能力,这反过来又带来了与双重使用和不同性能相关的安全问题。在实践中,我们预计转录成本不是扩大监控项目的限制因素。

设置

  • 安装 uv 用于 Python 环境管理

  • 创建并激活虚拟环境

      uv venv env_moonshine
      source env_moonshine/bin/activate
    
  • 从此 GitHub 仓库安装 useful-moonshine

    uv pip install useful-moonshine@git+https://github.com/usefulsensors/moonshine.git
    

    moonshine 推理代码是用 Keras 编写的,可以在 Keras 支持的后端上运行。上述命令将使用 PyTorch 后端安装。要运行提供的推理代码,您必须通过设置环境变量来指示 Keras 使用 PyTorch 后端。

    export KERAS_BACKEND=torch
    

    要使用 TensorFlow 后端运行,请运行以下命令安装 Moonshine。

    uv pip install useful-moonshine[tensorflow]@git+https://github.com/usefulsensors/moonshine.git
    export KERAS_BACKEND=tensorflow
    

    要使用 jax 后端运行,请运行以下命令:

    uv pip install useful-moonshine[jax]@git+https://github.com/usefulsensors/moonshine.git
    export KERAS_BACKEND=jax
    # 使用 useful-moonshine[jax-cuda] 在 GPU 上运行 jax
    
  • 测试转录音频文件

    python
    >>> import moonshine
    >>> moonshine.transcribe(moonshine.ASSETS_DIR / 'beckett.wav', 'moonshine/tiny')
    ['Ever tried ever failed, no matter try again, fail again, fail better.']
    
    • 第一个参数是音频文件的文件名,第二个参数是 moonshine 模型的名称。moonshine/tinymoonshine/base 是当前可用的模型。

引用

如果您从我们的工作中受益,请引用我们:

@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}, 
}

UsefulSensors/moonshine

作者 UsefulSensors

automatic-speech-recognition keras
↓ 0 ♥ 92

创建时间: 2024-09-26 17:20:29+00:00

更新时间: 2025-11-30 03:18:38+00:00

在 Hugging Face 上查看

文件 (83)

.gitattributes
README.md
base/decoder.weights.h5
base/encoder.weights.h5
base/preprocessor.weights.h5
ctranslate2/base/config.json
ctranslate2/base/model.bin
ctranslate2/base/tokenizer.json
ctranslate2/base/vocabulary.json
ctranslate2/tiny/config.json
ctranslate2/tiny/model.bin
ctranslate2/tiny/tokenizer.json
ctranslate2/tiny/vocabulary.json
onnx/base/cached_decode.onnx ONNX
onnx/base/encode.onnx ONNX
onnx/base/preprocess.onnx ONNX
onnx/base/uncached_decode.onnx ONNX
onnx/merged/base/float/config.json
onnx/merged/base/float/decoder_model_merged.onnx ONNX
onnx/merged/base/float/encoder_model.onnx ONNX
onnx/merged/base/float/generation_config.json
onnx/merged/base/float/preprocessor_config.json
onnx/merged/base/float/special_tokens_map.json
onnx/merged/base/float/tokenizer.bin
onnx/merged/base/float/tokenizer.json
onnx/merged/base/float/tokenizer_config.json
onnx/merged/base/quantized/decoder_model_merged.onnx ONNX
onnx/merged/base/quantized/decoder_model_merged.ort
onnx/merged/base/quantized/encoder_model.onnx ONNX
onnx/merged/base/quantized/encoder_model.ort
onnx/merged/base/quantized/tokenizer.bin
onnx/merged/base/quantized_4bit/decoder_model_merged.onnx ONNX
onnx/merged/base/quantized_4bit/encoder_model.onnx ONNX
onnx/merged/tiny-ar/float/decoder_model_merged.onnx ONNX
onnx/merged/tiny-ar/float/decoder_model_merged.ort
onnx/merged/tiny-ar/float/encoder_model.onnx ONNX
onnx/merged/tiny-ar/float/encoder_model.ort
onnx/merged/tiny-ar/float/tokenizer.bin
onnx/merged/tiny-ja/float/decoder_model_merged.onnx ONNX
onnx/merged/tiny-ja/float/encoder_model.onnx ONNX
onnx/merged/tiny-ko/float/decoder_model_merged.onnx ONNX
onnx/merged/tiny-ko/float/decoder_model_merged.ort
onnx/merged/tiny-ko/float/encoder_model.onnx ONNX
onnx/merged/tiny-ko/float/encoder_model.ort
onnx/merged/tiny-ko/float/tokenizer.bin
onnx/merged/tiny-uk/float/decoder_model_merged.onnx ONNX
onnx/merged/tiny-uk/float/encoder_model.onnx ONNX
onnx/merged/tiny-vi/float/decoder_model_merged.onnx ONNX
onnx/merged/tiny-vi/float/decoder_model_merged.ort
onnx/merged/tiny-vi/float/encoder_model.onnx ONNX
onnx/merged/tiny-vi/float/encoder_model.ort
onnx/merged/tiny-vi/float/tokenizer.bin
onnx/merged/tiny-zh/float/decoder_model_merged.onnx ONNX
onnx/merged/tiny-zh/float/encoder_model.onnx ONNX
onnx/merged/tiny/float/decoder_model_merged.onnx ONNX
onnx/merged/tiny/float/encoder_model.onnx ONNX
onnx/merged/tiny/quantized/decoder_model_merged.onnx ONNX
onnx/merged/tiny/quantized/encoder_model.onnx ONNX
onnx/merged/tiny/quantized_4bit/decoder_model_merged.onnx ONNX
onnx/merged/tiny/quantized_4bit/encoder_model.onnx ONNX
onnx/tiny/cached_decode.onnx ONNX
onnx/tiny/encode.onnx ONNX
onnx/tiny/preprocess.onnx ONNX
onnx/tiny/uncached_decode.onnx ONNX
ort/base/cached_decode.ort
ort/base/encode.ort
ort/base/preprocess.ort
ort/base/uncached_decode.ort
ort/tiny/cached_decode.ort
ort/tiny/encode.ort
ort/tiny/preprocess.ort
ort/tiny/uncached_decode.ort
tflite/base/float/decoder.tfl
tflite/base/float/decoder_initial.tfl
tflite/base/float/encoder.tfl
tflite/base/float/preprocessor.tfl
tflite/tiny/float/decoder.tfl
tflite/tiny/float/decoder_initial.tfl
tflite/tiny/float/encoder.tfl
tflite/tiny/float/preprocessor.tfl
tiny/decoder.weights.h5
tiny/encoder.weights.h5
tiny/preprocessor.weights.h5