alt.freeweights.speech / wav2vec2-ljspeech-gruut
From: bookbot <huggingface.co/bookbot>Newsgroups: alt.freeweights.speechSubject:

wav2vec2-ljspeech-gruut

Date: 2026-11-15Commit: 7be1e6fSigned: 2DC28CC7B26A283B ✓

Automatic speech recognition model with 94M parameters. Safetensors weights, 755 MB in all. Published by bookbot under Apache-2.0.

94M params755MBwav2vec2-ljspeech-gruutsafetensorspermissive
FactsParams94MSize755 MBFormatssafetensorsTaskautomatic speech recognitionLicenseApache-2.0From sourcepermissive
$ fw get bookbot/wav2vec2-ljspeech-gruut
# manifest sha256 0a6f9e1e312a… · 755 MB · 21 files
$ fw verify ./wav2vec2-ljspeech-gruut bookbot/wav2vec2-ljspeech-gruut
From sourceHosted (signed)bookbot/wav2vec2-ljspeech-gruutLast check: 2026-11-15 02:35 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Overview

Size
755 MB
Weights
378 MB (safetensors)
Parameters
94M
Formats
safetensors
Task
automatic speech recognition
License
Apache-2.0 (permissive)
Files
21, each with a sha256
Publisher
bookbot
Added
2026-11-15
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 02:35 UTCpassed

Model card

From the publisher at commit 7be1e6f. Shown as plain text with links; images open at the publisher.

Wav2Vec2 LJSpeech Gruut#

Wav2Vec2 LJSpeech Gruut is an automatic speech recognition model based on the wav2vec 2.0 architecture. This model is a fine-tuned version of Wav2Vec2-Base on the LJSpech Phonemes dataset.

Instead of being trained to predict sequences of words, this model was trained to predict sequence of phonemes, e.g. ["h", "ɛ", "l", "ˈoʊ", "w", "ˈɚ", "l", "d"]. Therefore, the model's vocabulary contains the different IPA phonemes found in gruut.

This model was trained using HuggingFace's PyTorch framework. All training was done on a Google Cloud Engine VM with a Tesla A100 GPU. All necessary scripts used for training could be found in the Files and versions tab, as well as the Training metrics logged via Tensorboard.

Model#

Model#paramsArch.Training/Validation data (text)
wav2vec2-ljspeech-gruut94Mwav2vec 2.0LJSpech Phonemes Dataset

Evaluation Results#

The model achieves the following results on evaluation:

DatasetPER (w/o stress)CER (w/o stress)
LJSpech Phonemes Test Data0.99%0.58%

Usage#

from transformers import AutoProcessor, AutoModelForCTC, Wav2Vec2Processor
import librosa
import torch
from itertools import groupby
from datasets import load_dataset

def decode_phonemes(
    ids: torch.Tensor, processor: Wav2Vec2Processor, ignore_stress: bool = False
) -> str:
    """CTC-like decoding. First removes consecutive duplicates, then removes special tokens."""
    # removes consecutive duplicates
    ids = [id_ for id_, _ in groupby(ids)]

    special_token_ids = processor.tokenizer.all_special_ids + [
        processor.tokenizer.word_delimiter_token_id
    ]
    # converts id to token, skipping special tokens
    phonemes = [processor.decode(id_) for id_ in ids if id_ not in special_token_ids]

    # joins phonemes
    prediction = " ".join(phonemes)

    # whether to ignore IPA stress marks
    if ignore_stress == True:
        prediction = prediction.replace("ˈ", "").replace("ˌ", "")

    return prediction

checkpoint = "bookbot/wav2vec2-ljspeech-gruut"

model = AutoModelForCTC.from_pretrained(checkpoint)
processor = AutoProcessor.from_pretrained(checkpoint)
sr = processor.feature_extractor.sampling_rate

# load dummy dataset and read soundfiles
ds = load_dataset("patrickvonplaten/librispeech_asr_dummy", "clean", split="validation")
audio_array = ds[0]["audio"]["array"]

# or, read a single audio file
# audio_array, _ = librosa.load("myaudio.wav", sr=sr)

inputs = processor(audio_array, return_tensors="pt", padding=True)

with torch.no_grad():
    logits = model(inputs["input_values"]).logits

predicted_ids = torch.argmax(logits, dim=-1)
prediction = decode_phonemes(predicted_ids[0], processor, ignore_stress=True)
# => should give 'b ɪ k ʌ z j u ɚ z s l i p ɪ ŋ ɪ n s t ɛ d ə v k ɔ ŋ k ɚ ɪ ŋ ð ə l ʌ v l i ɹ z p ɹ ɪ n s ə s h æ z b ɪ k ʌ m ə v f ɪ t ə l w ɪ θ n b oʊ p ɹ ə ʃ æ ɡ i s ɪ t s ð ɛ ɹ ə k u ɪ ŋ d ʌ v'

Training procedure#

Training hyperparameters#

The following hyperparameters were used during training:

  • learning_rate: 0.0001
  • train_batch_size: 16
  • eval_batch_size: 8
  • seed: 42
  • gradient_accumulation_steps: 2
  • total_train_batch_size: 32
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • lr_scheduler_warmup_steps: 1000
  • num_epochs: 30.0
  • mixed_precision_training: Native AMP
Training results#
Training LossEpochStepValidation LossWerCer
No log1.03482.28181.01.0
2.66922.06960.20450.05270.0299
0.22253.010440.11620.03190.0189
0.22254.013920.09270.02350.0147
0.08685.017400.07970.02180.0143
0.05986.020880.07150.01970.0128
0.05987.024360.06520.01600.0103
0.04478.027840.05710.01520.0095
0.03689.031320.06080.01630.0112
0.036810.034800.05860.01370.0083
0.030311.038280.06410.01410.0085
0.027312.041760.06560.01310.0079
0.023213.045240.06900.01330.0082
0.023214.048720.05980.01280.0079
0.018915.052200.06710.01210.0074
0.01716.055680.06540.01140.0069
0.01717.059160.07510.01180.0073
0.014618.062640.06530.01120.0068
0.012719.066120.06820.01120.0069
0.012720.069600.06780.01140.0068
0.011421.073080.06560.01110.0066
0.010122.076560.06690.01090.0066
0.009223.080040.06770.01080.0065
0.009224.083520.06530.01040.0063
0.008825.087000.06730.01020.0063
0.007426.090480.06690.01050.0064
0.007427.093960.07070.01010.0061
0.006628.097440.06730.01000.0060
0.005829.0100920.06890.01000.0059
0.005830.0104400.06830.00990.0058

Disclaimer#

Do consider the biases which came from pre-training datasets that may be carried over into the results of this model.

Authors#

Wav2Vec2 LJSpeech Gruut was trained and evaluated by Wilson Wongso. All computation and development are done on Google Cloud.

Framework versions#

  • Transformers 4.26.0.dev0
  • Pytorch 1.10.0
  • Datasets 2.7.1
  • Tokenizers 0.13.2
  • Gruut 2.3.4

Files

21 files · 755 MBWeights 378 MB (safetensors). Sizes and sha256 from the signed manifest.
Show all 21 files with their sha256
FileSizesha256
.gitattributes1.48 KBdb7c0371f46f0840b8f25794c1e3321c9b5820a8cb6ba9694a46fc64b8fae5a6
.gitignore13 B750c10cd267eec2ff1b7afb10688e624b33cf558eef41ed63e00ef640e7fe38a
README.md7.30 KBb830885a0f82c53d51b67843d43b31979132cfc327edf387bf5be6799db2b3d4
added_tokens.json30 Be6fbfcadb18a959fef9b7736b9f23fa2f5761674824f0db1263aaaf2e15e0959
all_results.json442 Bfa9b0599865673e34bfa783046ce19deb1a0559d8870ac88bfce33a596ce871b
config.json2.35 KB85da220acc447b0821d7535bc2a0df4bbcaf035f85d06573ce564b833988eb29
model.safetensors378 MB9bc8cd20e1348fc384ba4b9cd60a5c761dbb3f0b7071d1bdc33331ed1b358f29
preprocessor_config.json215 B8cdfd65ff4115423185a1512bdae100e2e0cd744f5b322417429944aaafd0827
pytorch_model.bin378 MBabd7c24c34c4bacd0317f956bf05a9ada9745784c0c150b056ed2e5076267b0e
run.sh988 Ba1b8199cb948a348a5f995266cd331eb6574f07b54f07f2067a4b072ce68f286
run_speech_recognition_ctc.py31.9 KBbef281bb5fcc5709c7c08fa226bfeb2b6864d25dbadc2048b91ae1ae6cd6658c
runs/Jan09_00-52-51_bookbot-pt-2/1673227740.802469/events.out.tfevents.1673227740.bookbot-pt-2.11380.15.56 KB0d6eb6224d5dc5109db745de4f59ce6f013fd587ab841d7911ce5cb21568f335
runs/Jan09_00-52-51_bookbot-pt-2/events.out.tfevents.1673227740.bookbot-pt-2.11380.019.9 KB4080d5f1c709ab44d41d29b7de57a92f385c708c3abbfc8d808dc0f95a54fbb7
runs/Jan09_00-52-51_bookbot-pt-2/events.out.tfevents.1673247932.bookbot-pt-2.11380.2405 B34526f92343e7f064272517b81b1d32ffc5ab2b0ff0918f8c85980959b85b030
special_tokens_map.json406 Bb51414c824f9a5aef78bebd44a22564f5e98c67ab06a6cdb25a07a247febf03f
test_results.json266 B71d4f27a1631b859e694e9fb9e67cda441725e14773b77ff51ea28522fdb9d09
tokenizer_config.json373 B7d85593059dfba027ccc72ad174352845ce4fd97348b23d1557dcabb1081ce61
train_results.json197 Bb5e65eea498f2d44dd44e263f63f3b293ea14122941c5c307d9cff66b27c5310
trainer_state.json11.4 KB988bdb06341797e2b259da858a82723f316df2ae44941e191727a7dd9b6e55cb
training_args.bin3.44 KB568fbb8527dc12e68bd967c150cdd930d8004c36be50967c5682ca8c225280d4
vocab.json509 Bf8fb8fa1768ddf44c3ba04248be4dce226a7d9779bef329a825ba572720eb388
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
7be1e6f27c pinned now2026-11-15 02:35 UTC21 files · 755 MB

Use it

$ fw get bookbot/wav2vec2-ljspeech-gruut
# manifest sha256 0a6f9e1e312a… · 755 MB · 21 files
$ fw verify ./wav2vec2-ljspeech-gruut bookbot/wav2vec2-ljspeech-gruut
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/bookbot/wav2vec2-ljspeech-gruut.json --dir ./wav2vec2-ljspeech-gruut $ python3 fw.py verify ./wav2vec2-ljspeech-gruut ./bookbot__wav2vec2-ljspeech-gruut.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download bookbot/wav2vec2-ljspeech-gruut --revision 7be1e6f27c8163ce790688d62fd9ce1731177c2e --local-dir ./wav2vec2-ljspeech-gruut
transformersSpeech recognition with the transformers pipeline.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import pipeline asr = pipeline("automatic-speech-recognition", model="bookbot/wav2vec2-ljspeech-gruut", revision="7be1e6f27c8163ce790688d62fd9ce1731177c2e") print(asr("audio.wav")["text"])

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
b830885a0f82c53d51b67843d43b31979132cfc327edf387bf5be6799db2b3d4
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: bookbot <huggingface.co/bookbot>Newsgroups: alt.freeweights.speechSubject: wav2vec2-ljspeech-gruutDate: 2026-11-15Commit: 7be1e6fSigned: 2DC28CC7B26A283B ✓
Upstream
bookbot/wav2vec2-ljspeech-gruut
Pinned commit
7be1e6f27c8163ce790688d62fd9ce1731177c2e
Manifest
wav2vec2-ljspeech-gruut.json · .minisig
Manifest sha256
0a6f9e1e312a40630905d6b210e47ba5e95c9a235a8972a6ad1a135eeb20c8c1
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:35 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/bookbot/wav2vec2-ljspeech-gruut.json $ curl -O https://freeweights.allternit.com/manifests/bookbot/wav2vec2-ljspeech-gruut.json.minisig $ minisign -Vm wav2vec2-ljspeech-gruut.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

1 model in the catalog name this one as their parent.

Quantizations
1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download bookbot/wav2vec2-ljspeech-gruut
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. wav2vec2-ljspeech-gruut.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of wav2vec2-ljspeech-gruut. Each has its own license check and page.

From: MIT <huggingface.co/MIT>Subject: ast-finetuned-audioset-10-10-0.4593
From: onnx-community <huggingface.co/onnx-community>Subject: ast-finetuned-audioset-10-10-0.4593-ONNX
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Preview-0.6b
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Realistic-Air
From: facebook <huggingface.co/facebook>Subject: audiobox-aesthetics
From: mlx-community <huggingface.co/mlx-community>Subject: chatterbox-4bit