Audio8-ASR-Infinite Speech Recognition Model: 12GB+ VRAM, File List

Sample outputs are available on the model card.
At a Glance
| Item | Value |
|---|---|
| Repository | Edge0/Audio8-ASR-Infinite |
| Published | 2026-09-22 |
| License | apache-2.0 |
| Formats | safetensors |
| Source type | Primary source (the publisher itself) |
Values determined by this site’s code when the information was collected. Dates are JST.
Overview
Edge0 has released Audio8-ASR-Infinite, a native streaming speech recognition model designed for maximum responsiveness. This model is an Automatic Speech Recognition (ASR) model that converts audio input into text in real time, supporting bilingual Chinese and English.
Specifications
- Architecture: Inherits Voxtral realtime audio architecture and DSM-style streaming
- Audio tower: 32 layers, hidden 1280, 128 mel bins, sliding window 750 – Text decoder: 36 layers, hidden 2048, 16 query heads / 2 KV heads – Projector: max frame len 8 → projection size 10240, gelu
- Output specification: Chinese and English text
- Streaming settings:
- Selectable audio clock: 80ms / 120ms / 160ms – Configurable transcription delay (target_delay_ms): 240ms to 560ms (varies by clock setting)
- Recommended operating conditions (optimized points):
- At 80ms clock: frame_len 4, target_delay_ms 240 / 320 / 480 / 560 – At 120ms clock: frame_len 6, target_delay_ms 240 / 480 – At 160ms clock: frame_len 8, target_delay_ms 320 / 480
- License: Apache 2.0
Performance
Evaluation results at 480 ms Delay, 80ms frame length (Greedy decode, EOS suppressed) are as follows:
→ Scroll horizontally to see all columns
| test set | metric | Audio8 ASR Infinite | Voxtral-Mini-4B-Realtime-2602 | nemotron-3.5-asr-streaming-0.6b |
|---|---|---|---|---|
| aishell1/test | CER | 1.750 | 16.795 | 12.927@560ms |
| aishell4/test | CER | 2.893 | 16.456 | 14.677@560ms |
| librispeech test.clean | WER | 3.042 | 2.210 | 3.353@560ms |
| librispeech test.other | WER | 6.808 | 5.552 | 7.140@560ms |
| average | 3.623 | 10.253 (2 sets) | 9.524 |
Audio8 ASR Infinite records significantly lower (better) CER (Character Error Rate) figures on aishell1/test and aishell4/test compared to the comparison models. On the other hand, for WER (Word Error Rate) on librispeech test.clean and test.other, it trails Voxtral-Mini-4B-Realtime-2602. In terms of the overall average, Audio8 ASR Infinite shows the best score.
Strengths and Use Cases
This model specializes in real-time speech transcription with top priority on responsiveness. It adopts a native streaming architecture, achieving extremely high response by decoding 12.5 times per second. Furthermore, by using Rolling KV Cache, it enables 24/7 continuous operation (unlimited-length transcription) while keeping memory usage and latency constant.
Main use cases and features include:
- Bilingual Support: Supports Chinese and English transcription.
- Flexible Streaming Control: Allows selection of audio clock (80/120/160 ms) and transcription delay (target_delay_ms), enabling adjustment of the balance between recognition granularity and resource cost.
- Semantic VAD: Capable of distinguishing between thinking pauses, stuttering, and actual speech endings, which is difficult with conventional acoustic VAD (Voice Activity Detection).
- Use Cases: Real-time subtitle generation, always-on voice interfaces, etc.
It is currently a preview release providing base streaming transcription functionality. The roadmap lists implementing frame-level semantic recognition features using the same frame grid and acoustic forward path in the future.
Hardware Requirements
Estimated requirements (calculated by Local Model Watch) — 4.1B parameters
| Your VRAM | Quantization | File size | Est. memory needed |
|---|---|---|---|
| 12GB (RTX 4070 / 3060 12GB, etc.) | BF16 | 7.6GB | 9.1GB |
Inference engine support (architecture name matched against each project’s own model registry in its source code, checked 2026-11-08): llama.cpp: not registered, vLLM: not registered, MLX (mlx-lm): not registered. “Not registered" means the name is absent from that registry today, not that the model cannot run.
Memory estimates add a 20% runtime overhead (KV cache, etc.) to the actual size of the distributed files. Actual usage varies with context length, batch size and inference engine. These figures are computed by this site from file sizes, not published by the model’s authors. Compare with other models in our VRAM quick reference. What the quantization names mean: glossary.
Can You Run It Locally?
The publisher distributes this model as safetensors.
License — apache-2.0 (Commercial use allowed): Permits commercial use, modification and redistribution. Redistribution requires including the license and stating changes; includes a patent grant.
Compiled by this site’s code from the published formats and the license field. License summaries are not legal advice — check the publisher’s original terms before relying on them.
Our Own Measurements
Values we measured ourselves — not figures copied from the model card. We read this model’s files on our own server (no GPU) and ran the model on a rented cloud GPU (conditions below). How we measure, and the results for every model: Our Measurements.
Transcribing English Audio We Made (Cloud GPU)
We ran Edge0/Audio8-ASR-Infinite in BF16 with the publisher’s own streaming decoder (Edge0-AI/Audio8-ASR-Infinite, commit c8ba8ee) on a rented cloud GPU. That code ran only inside a cloud container with its network cut off. The audio is not a recording from elsewhere: we read three fixed English sentences with a text-to-speech voice (en_US-ljspeech-medium, MIT(音声モデルの配布)・学習データ LJ Speech はパブリックドメイン) and let the model transcribe each clip once. Nothing was selected or edited; these are the first outputs, misrecognitions included. This model supports Chinese and English only, so we tested English only and make no claim about Japanese.
Input audio (4.7 s), the sentence we read out:
It had been raining since the morning, but it gradually cleared up in the afternoon.
The model’s transcript, verbatim (word error rate 0.0%: 0 errors in 15 words; transcribed in 6.49 s):
It had been raining since the morning, but it gradually cleared up in the afternoon.
Input audio (4.7 s), the sentence we read out:
The next meeting will be held from 2 p.m. on March 15 in meeting room B.
The model’s transcript, verbatim (word error rate 0.0%: 0 errors in 16 words; transcribed in 6.5 s):
The next meeting will be held from 2 p.m. on March 15 in Meeting Room B.
Input audio (3.61 s), the sentence we read out:
Oh, it’s already finished? That was much quicker than I expected.
The model’s transcript, verbatim (word error rate 0.0%: 0 errors in 11 words; transcribed in 5.36 s):
Oh, it's already finished. That was much quicker than I expected.
| Item | Result |
|---|---|
| Word error rate over all three clips | 0.0% (0 errors in 42 words) |
| VRAM right after loading the weights (BF16) | 7.7GB |
| Peak VRAM while transcribing | 7.8GB |
Conditions: NVIDIA L4 (VRAM 22GB) on Modal, transformers 5.13.0, PyTorch 2.13.0+cu130, weights at revision 7476824bc2, BF16, greedy decoding with a 80 ms clock and 480 ms delay, measured 2026-10-01 (JST).
The word error rate is counted by our code after lowercasing and removing punctuation; numerals are not converted, so “2 p.m." and “two p.m." count as different words. Three short clips of one synthetic voice say nothing about accuracy on real recordings, accents or noise. The decoder here replays the audio as a stream in one pass and does not measure real-time latency.
Setup, Download and Run Steps (What We Actually Ran)
We split the work into two containers on Modal, both built from the Debian (slim) image with Python 3.12. The downloading container fetches the weights from Hugging Face and the publisher’s decoding code from GitHub (a pinned commit) and never runs either; the container that runs the code has no network access. These are the packages we installed:
# 1. Environment for downloading (no GPU)
python -m pip install huggingface_hub
# 2. Environment for running (GPU, network blocked)
python -m pip install 'torch>=2.13,<2.14' 'transformers==5.13.0' 'numpy>=2.1' 'safetensors>=0.8' 'accelerate'
We then called download(job) in the first container and run(job) in the second one from the script below (asr_remote.py, written by us; full text). Files go under /models/<dir>:
"""
Modal のコンテナの中で動く、音声認識モデルの実測(2026-09-30、ユーザーの判断)。lmw/lab/gpu_modal.py の
asr_download / asr_run から呼ばれる。**標準ライブラリだけを先頭で読み**、huggingface_hub・torch・transformers は
各関数の中で読む(コンテナごとに入っているものが違う)。
【2つのコンテナに分ける】(lmw/lab/remote_code_remote.py と同じ)
- download: GPU の無いコンテナ・ネットワークあり。Hugging Face から重みと設定を、GitHub から配布元の
デコード処理(audio8_asr_infinite の Python ファイル)を **コミットを固定して** 落とすだけで、どちらも実行しない。
重みは safetensors だけ。GitHub のファイルは、決まったフォルダの .py だけを通常のファイルとして取り出す。
- run: GPU のコンテナ・**ネットワーク遮断**・Modal の機能も使えない・Volume は読み取り専用。
ここでだけ配布元のデコード処理を実行する(Hugging Face のリポジトリのコードを読み込む設定は使わない。モデルの定義もデコードの処理も、
落としておいた固定コミットのパッケージから読む。Hugging Face のリポジトリのモデル定義とファイルが一致することは確認済み)。
記事執筆用の LLM は呼ばない。文字起こしの誤りの数え方はホスト側のコード(lmw/lab/asr.py)が決める。
"""
import base64
import hashlib
import io
import json
import os
import platform
import posixpath
import tarfile
import time
import urllib.request
import wave
from dataclasses import dataclass
from datetime import datetime, timezone
MOUNT = "/models"
PYTHON_VERSION = "3.12"
DOWNLOAD_PACKAGES = ("huggingface_hub",)
# 配布元の pyproject.toml の依存(torch>=2.13,<2.14・transformers==5.13.0・numpy>=2.1・safetensors>=0.8)に合わせる
RUN_PACKAGES = ("torch>=2.13,<2.14", "transformers==5.13.0", "numpy>=2.1", "safetensors>=0.8", "accelerate")
# GitHub から取り出すのは、このフォルダの .py だけ(モデル・デコード・設定。vLLM 用のサーバーや例は取らない)
CODE_PACKAGE = "audio8_asr_infinite"
CODE_SKIP_DIRS = ("vllm_serve", "examples")
_MAX_CODE_BYTES = 2 * 1024 * 1024
_MAX_TARBALL_BYTES = 64 * 1024 * 1024
def installed_packages() -> list[str]:
from importlib import metadata
seen = {}
for dist in metadata.distributions():
name = dist.metadata["Name"]
if name and name.lower() not in seen:
seen[name.lower()] = f"{name}=={dist.version}"
return sorted(seen.values(), key=str.lower)
def _log(t0: float, message: str) -> None:
print(f"[asr {time.time() - t0:6.0f}s] {message}", flush=True)
def extract_code(tar_bytes: bytes, target: str) -> dict[str, str]:
"""
GitHub のコミットの tar.gz から、CODE_PACKAGE の .py だけを通常のファイルとして取り出す(リンク・デバイスは
無視する。パスに .. や絶対パスがあれば断る)。戻り値: {パッケージからの相対パス: sha256}。
"""
written: dict[str, str] = {}
with tarfile.open(fileobj=io.BytesIO(tar_bytes), mode="r:gz") as tar:
for member in tar.getmembers():
if not member.isfile():
continue
parts = member.name.split("/")[1:] # 先頭は <リポジトリ>-<コミット>/
if not parts or parts[0] != CODE_PACKAGE or not member.name.endswith(".py"):
continue
rel = posixpath.join(*parts)
if ".." in parts or posixpath.isabs(rel) or any(p in CODE_SKIP_DIRS for p in parts[1:-1]):
continue
if member.size > _MAX_CODE_BYTES:
raise ValueError(f"大きすぎるファイルです: {rel}")
raw = tar.extractfile(member).read()
dest = os.path.join(target, *parts)
os.makedirs(os.path.dirname(dest), exist_ok=True)
with open(dest, "wb") as f:
f.write(raw)
written[posixpath.join(*parts[1:])] = hashlib.sha256(raw).hexdigest()
return written
def download(job: dict) -> dict:
"""
job: {"repo", "revision", "files", "dir", "code": {"repo", "commit"}}。
戻り値: {"bytes", "seconds", "packages", "code_files"}。
"""
from huggingface_hub import hf_hub_download
t0 = time.time()
base = os.path.join(MOUNT, job["dir"])
model_dir = os.path.join(base, "model")
os.makedirs(model_dir, exist_ok=True)
total = 0
for name in job["files"]:
path = hf_hub_download(job["repo"], name, revision=job["revision"], local_dir=model_dir)
total += os.path.getsize(path)
code = job["code"]
url = f"https://codeload.github.com/{code['repo']}/tar.gz/{code['commit']}"
with urllib.request.urlopen(url, timeout=300) as r:
tar_bytes = r.read(_MAX_TARBALL_BYTES + 1)
if len(tar_bytes) > _MAX_TARBALL_BYTES:
raise ValueError("GitHub のアーカイブが大きすぎます")
code_files = extract_code(tar_bytes, os.path.join(base, "code"))
if not code_files:
raise ValueError("GitHub のアーカイブから配布元のコードを取り出せませんでした")
seconds = round(time.time() - t0)
_log(t0, f"ダウンロード {total / 1024 ** 3:.1f}GB・配布元のコード {len(code_files)}ファイル・{seconds}秒")
return {"bytes": int(total), "seconds": int(seconds), "packages": installed_packages(),
"code_files": code_files}
@dataclass(frozen=True)
class StreamingConfig:
"""デコード処理が読む設定(配布元の examples/torch_streaming_decode.py の StreamingDecodeConfig と同じ形)。"""
transcription_delay_ms: int = 480
token_period_ms: int = 80
sampling_rate: int = 16000
left_pad_tokens: int = 18
right_pad_text_tokens: int = 10
max_new_tokens: int = 512
@property
def num_delay_tokens(self) -> int:
return self.transcription_delay_ms // self.token_period_ms
@property
def raw_audio_samples_per_token(self) -> int:
return self.sampling_rate * self.token_period_ms // 1000
@property
def streaming_n_left_pad_tokens(self) -> int:
return self.left_pad_tokens
def merge_vad_heads(src: str, dest: str) -> str:
"""
重みが model.safetensors と semantic_vad_heads.safetensors に分かれている。transformers 5.13.0 は、フォルダに
model.safetensors があると索引(model.safetensors.index.json)を見ず、後者を読まずに「重みが足りない」と断る。
そこで2つのテンソルをそのまま(変換せず)1つの safetensors に束ねた作業用のフォルダを作る(2026-09-30)。
"""
from safetensors.torch import load_file, save_file
os.makedirs(dest, exist_ok=True)
for name in os.listdir(src):
if name not in ("model.safetensors", "semantic_vad_heads.safetensors", "model.safetensors.index.json"):
os.symlink(os.path.join(src, name), os.path.join(dest, name))
tensors = load_file(os.path.join(src, "model.safetensors"))
heads = load_file(os.path.join(src, "semantic_vad_heads.safetensors"))
if set(tensors) & set(heads):
raise ValueError("2つの重みのファイルに同じ名前のテンソルがあります")
tensors.update(heads)
save_file(tensors, os.path.join(dest, "model.safetensors"), metadata={"format": "pt"})
return dest
def _waveform(b64: str, sampling_rate: int):
"""16bit PCM・モノラルの WAV(base64)を、-1〜1 の float32 の配列にする。"""
import numpy as np
with wave.open(io.BytesIO(base64.b64decode(b64)), "rb") as r:
if (r.getframerate(), r.getnchannels(), r.getsampwidth()) != (sampling_rate, 1, 2):
raise ValueError("16kHz・モノラル・16bit の WAV ではありません")
pcm = r.readframes(r.getnframes())
return np.frombuffer(pcm, dtype=np.int16).astype(np.float32) / 32768.0
def run(job: dict) -> dict:
"""
job: {"dir", "inputs": [{"id", "language", "wav_b64"}], "decoding": {StreamingConfig の値}}。
戻り値は記録の一部(文字起こしの原文・秒数・VRAM)。誤りの数え方はホスト側。
"""
import sys
import torch
import transformers
os.environ["HF_HUB_OFFLINE"] = "1"
os.environ["TRANSFORMERS_OFFLINE"] = "1"
t0 = time.time()
base = os.path.join(MOUNT, job["dir"])
sys.path.insert(0, os.path.join(base, "code"))
from audio8_asr_infinite.modeling.modeling_audio8_asr_infinite import (
Audio8ASRInfiniteForConditionalGeneration, resolve_qwen_language_token_id,
resolve_qwen_streaming_special_token_ids)
from audio8_asr_infinite.streaming_inference import simulated_streaming_greedy_decode_batch
from transformers import AutoFeatureExtractor, AutoTokenizer
gpu = torch.cuda.get_device_name(0)
_log(t0, f"GPU: {gpu}・transformers {transformers.__version__}・torch {torch.__version__}")
record = {"gpu": gpu, "vram_total": int(torch.cuda.get_device_properties(0).total_memory),
"transformers": str(transformers.__version__), "torch": str(torch.__version__), "dtype": "bfloat16",
"packages": installed_packages(), "python": platform.python_version(),
"measured_at": datetime.now(timezone.utc).isoformat()}
path = merge_vad_heads(os.path.join(base, "model"), os.path.join("/tmp", "asr-model"))
record["merged_vad_heads"] = True
config = StreamingConfig(**job["decoding"])
tokenizer = AutoTokenizer.from_pretrained(path, local_files_only=True)
feature_extractor = AutoFeatureExtractor.from_pretrained(path, local_files_only=True)
model = Audio8ASRInfiniteForConditionalGeneration.from_pretrained(
path, local_files_only=True, use_safetensors=True, dtype=torch.bfloat16)
model.to(device="cuda")
model.eval()
model.config.use_cache = True
torch.cuda.synchronize()
record["vram_loaded"] = int(torch.cuda.memory_allocated())
record["load_sec"] = round(time.time() - t0)
_log(t0, f"読み込み: VRAM {record['vram_loaded'] / 1024 ** 3:.1f}GB・{record['load_sec']}秒")
special_ids = resolve_qwen_streaming_special_token_ids(tokenizer)
def decode(item: dict) -> tuple[str, float, float]:
waveform = _waveform(item["wav_b64"], config.sampling_rate)
started = time.time()
result = simulated_streaming_greedy_decode_batch(
model=model, tokenizer=tokenizer, feature_extractor=feature_extractor, waveforms=[waveform],
language_token_ids=[resolve_qwen_language_token_id(tokenizer, item["language"])],
special_ids=special_ids, audio_config=config, num_delay_tokens=[config.num_delay_tokens],
right_pad_text_tokens=config.right_pad_text_tokens, dtype=torch.bfloat16,
device=next(model.parameters()).device, max_new_tokens=config.max_new_tokens)
torch.cuda.synchronize()
return result[0].get("final_text", ""), time.time() - started, waveform.size / config.sampling_rate
decode(job["inputs"][0]) # 最初の1回は初期化の時間が入るので、測らずに流す
torch.cuda.reset_peak_memory_stats()
outputs = []
for item in job["inputs"]:
text, seconds, audio_seconds = decode(item)
outputs.append({"id": item["id"], "language": item["language"], "hypothesis": text,
"decode_sec": round(seconds, 2), "audio_sec": round(audio_seconds, 2)})
_log(t0, f"{item['id']}: {audio_seconds:.1f}秒の音声を {seconds:.1f}秒で文字起こし")
record["vram_peak"] = int(torch.cuda.max_memory_allocated())
record["outputs"] = outputs
return plain(record)
def plain(value):
"""JSON に通して、標準の型だけにする(ホストには torch も transformers も無い)。"""
return json.loads(json.dumps(value, default=str))
The job passed to download (as used):
{
"repo": "Edge0/Audio8-ASR-Infinite",
"revision": "7476824bc222e4ad509d286e8cae8b8d3f371129",
"files": [
"config.json",
"preprocessor_config.json",
"generation_config.json",
"tokenizer.json",
"tokenizer_config.json",
"chat_template.jinja",
"model.safetensors",
"model.safetensors.index.json",
"semantic_vad_heads.safetensors"
],
"dir": "asr-1790805644",
"code": {
"repo": "Edge0-AI/Audio8-ASR-Infinite",
"commit": "c8ba8eea829be0339e8d7757f8ca52dac06e1e32"
}
}
The job passed to run (as used; the audio is passed as base64 and shown here by its SHA-256):
{
"dir": "asr-1790805644",
"inputs": [
{
"id": "weather",
"language": "en",
"wav_sha256": "1258dcd9f83234db2601a928bd8facddc1c0c2751d7a90765375cc9197dc0651"
},
{
"id": "numbers",
"language": "en",
"wav_sha256": "ce0b8d12768dd1d9f5fdbf5fd0a0a98c35b5f5b7c522b814c5da01579812f430"
},
{
"id": "surprise",
"language": "en",
"wav_sha256": "fcd7c8d3f8cce918a56d959071a298d3a994d29c78586a2868b2a0a0c7c56e40"
}
],
"decoding": {
"transcription_delay_ms": 480,
"token_period_ms": 80,
"left_pad_tokens": 18,
"right_pad_text_tokens": 10,
"max_new_tokens": 512
}
}
The publisher's code files we extracted (SHA-256)
14f8e8ea73d8e441bceb85f0fafa7d443e37178cab135994204117b9bd5d3319 __init__.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 modeling/__init__.py 36cb2c25d456cd4692a01a801cf1608f49377ce78353b48561554e715d9f9012 modeling/configuration_audio8_asr_infinite.py fed33565b9ed307353aa7cd9565886c592b2ee3969c913cbe0bfa9dda9f7a469 modeling/modeling_audio8_asr_infinite.py 0aff961fe05f587862079ae01382eaaa57332be5e4fe0f114a8ac99578805c72 simulated_streaming_audio.py 37e7ba1ba9ff26ce1baea8c1af7aac0db017b6e372c236fb23068d66f6f9d38d streaming_inference.py
Package versions in the running container (full list)
accelerate==1.15.0 aiohappyeyeballs==2.6.1 aiohttp==3.12.7 aiosignal==1.3.2 annotated-doc==0.0.5 anyio==4.15.1 attrs==25.3.0 cbor2==5.7.0 certifi==2026.7.22 click==8.5.0 cuda-bindings==13.4.3 cuda-pathfinder==1.8.2 cuda-toolkit==13.0.3.0 filelock==4.0.7 frozenlist==1.6.0 fsspec==2026.9.0 grpclib==0.4.8 h11==0.16.0 h2==4.2.0 hf-xet==1.6.0 hpack==4.1.0 httpcore==1.0.9 httpx==0.28.1 huggingface_hub==1.33.0 hyperframe==6.1.0 idna==3.20 Jinja2==3.1.6 markdown-it-py==4.2.0 MarkupSafe==3.0.3 mdurl==0.1.2 mpmath==1.3.0 multidict==6.4.4 networkx==3.7 numpy==2.5.3 nvidia-cublas==13.1.1.3 nvidia-cuda-cupti==13.0.85 nvidia-cuda-nvrtc==13.0.88 nvidia-cuda-runtime==13.0.96 nvidia-cudnn-cu13==9.20.0.48 nvidia-cufft==12.0.0.61 nvidia-cufile==1.15.1.6 nvidia-curand==10.4.0.35 nvidia-cusolver==12.0.4.66 nvidia-cusparse==12.6.3.3 nvidia-cusparselt-cu13==0.8.1 nvidia-nccl-cu13==2.29.7 nvidia-nvjitlink==13.4.92 nvidia-nvshmem-cu13==3.4.5 nvidia-nvtx==13.0.85 packaging==26.3 pip==25.1.1 propcache==0.3.1 protobuf==6.31.1 psutil==7.2.2 Pygments==2.21.0 PyYAML==6.0.3 regex==2026.9.29 rich==15.0.0 safetensors==0.8.0 setuptools==84.0.0 shellingham==1.5.4 sympy==1.14.0 tokenizers==0.22.2 torch==2.13.0 tqdm==4.70.1 transformers==5.13.0 triton==3.7.1 typer==0.27.2 typing_extensions==4.16.0 uv==0.7.19 wheel==0.45.1 yarl==1.20.0
Package versions in the downloading container (full list)
aiohappyeyeballs==2.6.1 aiohttp==3.12.7 aiosignal==1.3.2 anyio==4.15.1 attrs==25.3.0 cbor2==5.7.0 certifi==2025.4.26 click==8.5.0 filelock==4.0.7 frozenlist==1.6.0 fsspec==2026.9.0 grpclib==0.4.8 h11==0.16.0 h2==4.2.0 hf-xet==1.6.0 hpack==4.1.0 httpcore2==2.13.1 httpx2==2.13.1 huggingface_hub==2.0.0 hyperframe==6.1.0 idna==3.20 multidict==6.4.4 packaging==26.3 pip==25.1.1 propcache==0.3.1 protobuf==6.31.1 PyYAML==6.0.3 tqdm==4.70.1 truststore==0.10.4 typing_extensions==4.16.0 uv==0.7.19 wheel==0.45.1 yarl==1.20.0
Distributed Files
Weight files published in Edge0/Audio8-ASR-Infinite, listed by this site from the Hugging Face API. Sizes are the actual file sizes.
| File | Size |
|---|---|
model.safetensors |
8.17GB |
semantic_vad_heads.safetensors |
0MB |
How to Get It
- Distribution format: safetensors
- Repository: Edge0/Audio8-ASR-Infinite
- Supported tools:
transformerslibrary (requirestrust_remote_code=True) – 24/7 inference usingvLLM(Docker Compose deployment is recommended) – Simulation streaming decoding viatorch
Note that this model does not support adapter formats or partially converted weights; only fully merged weight directories are supported.
Related Articles
What to Read Next
- Find models by VRAM (This model runs from the 12GB tier) → Other models that run on a 12GB GPU
- Formats this model is available in → Safetensors format guide and models
- Other models for the same task → Other audio models
- How to read CER, WER → Benchmark glossary
Sources
Update History
- 2026-09-24: Rebuilt the article: Added a “can you run it locally?" verdict from the distribution formats, converted builds, engine registries, license terms and measured compression
- 2026-09-25: Changed the title to show what the article covers (VRAM requirements, file list, etc.).
- 2026-10-01: Added our own measurements: transcripts of English audio we made.

