YAML Metadata
Warning:
empty or missing yaml metadata in repo card
(https://huggingface.co/docs/hub/model-cards#model-card-metadata)
braille256-v5: Multimodal Universal Braille Model
The first language model trained on multimodal data encoded as 8-dot Braille.
Key Innovation
This model demonstrates that any data type (text, images, audio, binary) can be encoded into 8-dot Braille Unicode (U+2800-U+28FF) and processed by a single unified model.
def byte_to_braille(byte: int) -> str:
"""Direct 1:1 mapping: 256 bytes → 256 Braille patterns"""
return chr(0x2800 + byte)
Model Details
| Property | Value |
|---|---|
| Parameters | 11.5M |
| Architecture | Transformer (4 layers, 4 heads) |
| Hidden Size | 256 |
| Vocabulary | 32,000 (SentencePiece Unigram) |
| Context Length | 512 tokens |
| Training Steps | 5,000 |
| Final Loss | 2.87 |
Training Data
- Text: 218 files from Project Gutenberg (7 languages) encoded as 8-dot Braille
- Audio: Synthetic WAV files encoded as Braille
- Total: 2M tokens from multimodal corpus
Compression
| Tokenizer | Vocab | Chars/Token |
|---|---|---|
| braille256-v4 (8k) | 8,192 | 2.24 |
| braille256-v5 (32k) | 32,000 | 2.45 |
| GPT-4 (reference) | 100,000 | 4.31 |
Universal Encoding
The 8-dot Braille encoding enables:
- Text → UTF-8 bytes → Braille
- Images → Raw bytes → Braille
- Audio → WAV bytes → Braille
- Any file → Bytes → Braille
Modality Headers
⣿⠁ = TEXT
⣿⠃ = IMAGE
⣿⠇ = AUDIO
⣿⠏ = BINARY
Usage
import torch
import sentencepiece as spm
# Load tokenizer
sp = spm.SentencePieceProcessor()
sp.load("tokenizer.model")
# Load model
from train_multimodal_v5 import Braille256MultimodalModel, MultimodalConfig
import json
with open("config.json") as f:
config = MultimodalConfig.from_dict(json.load(f))
model = Braille256MultimodalModel(config)
model.load_state_dict(torch.load("pytorch_model.bin", map_location="cpu"))
model.eval()
# Encode any data as Braille
def bytes_to_braille(data: bytes) -> str:
return ''.join(chr(0x2800 + b) for b in data)
# Generate from Braille prompt
braille_text = "⠞⠓⠑⠀⠟⠥⠊⠉⠅" # "the quick" in Braille
tokens = sp.encode(braille_text)
input_ids = torch.tensor([tokens])
output = model.generate(input_ids, max_length=50)
generated = sp.decode(output[0].tolist())
print(generated)
Model Family
| Version | Type | Patterns | Focus |
|---|---|---|---|
| v3 | 6-dot | 64 | Literary Braille |
| v4 | 8-dot | 256 | Computer Braille |
| v5 | 8-dot | 256 | Multimodal |
Why 8-dot Braille?
- 256 patterns = exactly 1 byte
- Universal encoding: Any data → Braille
- Tactile AI: Blind users can "feel" any data
- Cross-modal learning: Single representation for all modalities
Citation
@misc{braille256v5,
title={braille256-v5: Multimodal Universal Braille Model},
author={Barrett, Ryan},
year={2024},
publisher={HuggingFace},
url={https://huggingface.co/ryanscottbarrett/braille256-v5}
}
License
MIT
- Downloads last month
- 16
Inference Providers
NEW
This model isn't deployed by any Inference Provider.
🙋
Ask for provider support