/ Модель

Характеристики

Контекст
512 токенов
Параметры
35,8 млн
Лицензия
MIT
Архитектура
moonshine · dense
Базовая модель
moonshine-base
Библиотека
transformers.js
Опубликована
14 дек 2024

moonshine-base-ONNX

Распознавание речиАудио → текст5 профессий

onnx-community/moonshine-base-ONNX — ONNX-версия модели Moonshine base, разработанной UsefulSensors и подготовленной сообществом onnx-community для запуска через Transformers.js и ONNX Runtime.

20 710скачиваний за 30 дней38лайковвеса обновлены18 янв 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Модель предназначена для автоматического распознавания речи и преобразования аудиозаписей в текст, включая использование непосредственно в JavaScript-приложениях и локальный инференс через ONNX Runtime.

Архитектура описана как encoder-decoder с отдельными ONNX-сессиями для энкодера и декодера; доступны квантованные файлы encoder_model_quantized.onnx и decoder_model_merged_quantized.onnx. В README не указаны точный размер модели, поддерживаемые языки, набор модальностей помимо аудио и максимальная длина контекста. Для ограничения генерации приведён ориентир до шести токенов на секунду аудио. Сильной стороной является совместимость с Transformers.js и ONNX Runtime, включая использование в браузерных или локальных сценариях; ограничения и показатели качества в README не описаны.

Модель распространяется по лицензии MIT.

Для каких профессий подходит5

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Usage

Transformers.js

If you haven't already, you can install the Transformers.js JavaScript library from NPM using:

npm i @huggingface/transformers

Example: Automatic speech recognition w/ Moonshine base.

import { pipeline } from "@huggingface/transformers";

const transcriber = await pipeline("automatic-speech-recognition", "onnx-community/moonshine-base-ONNX");
const output = await transcriber("https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/jfk.wav");
console.log(output);
// { text: 'And so my fellow Americans ask not what your country can do for you as what you can do for your country.' }

ONNXRuntime

import numpy as np
import onnxruntime as ort
from transformers import AutoConfig, AutoTokenizer
import librosa

# Load config and tokenizer
model_id = 'onnx-community/moonshine-base-ONNX'
config = AutoConfig.from_pretrained(model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)

# Load encoder and decoder sessions
encoder_session = ort.InferenceSession('./onnx/encoder_model_quantized.onnx')
decoder_session = ort.InferenceSession('./onnx/decoder_model_merged_quantized.onnx')

# Set config values
eos_token_id = config.eos_token_id
num_key_value_heads = config.decoder_num_key_value_heads
dim_kv = config.hidden_size // config.decoder_num_attention_heads

# Load audio
audio_file = 'jfk.wav'
audio = librosa.load(audio_file, sr=16_000)[0][None]

# Run encoder
encoder_outputs = encoder_session.run(None, dict(input_values=audio))[0]

# Prepare decoder inputs
batch_size = encoder_outputs.shape[0]
input_ids = np.array([[config.decoder_start_token_id]] * batch_size)
past_key_values = {
    f'past_key_values.{layer}.{module}.{kv}': np.zeros([batch_size, num_key_value_heads, 0, dim_kv], dtype=np.float32)
    for layer in range(config.decoder_num_hidden_layers)
    for module in ('decoder', 'encoder')
    for kv in ('key', 'value')
}

# max 6 tokens per second of audio
max_len = min((audio.shape[-1] // 16_000) * 6, config.max_position_embeddings)

generated_tokens = input_ids
for i in range(max_len):
  use_cache_branch = i > 0
  logits, *present_key_values = decoder_session.run(None, dict(
      input_ids=generated_tokens[:, -1:],
      encoder_hidden_states=encoder_outputs,
      use_cache_branch=[use_cache_branch],
      **past_key_values,
  ))
  next_tokens = logits[:, -1].argmax(-1, keepdims=True)
  for j, key in enumerate(past_key_values):
    if not use_cache_branch or 'decoder' in key:
      past_key_values[key] = present_key_values[j]
  generated_tokens = np.concatenate([generated_tokens, next_tokens], axis=-1)
  if (next_tokens == eos_token_id).all():
    break

result = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)
print(result)

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers.js

Нельзя запустить

Модель выложена для браузера (ONNX / transformers.js), для GPU-рантайма нет весов.

Класс архитектуры
MoonshineForConditionalGeneration
Ревизия весов
b1e9b6a

0 моделей