Downloads · 30 days
0
sh1kaku/room-voice-ai
room-voice-ai is a text classification model from sh1kaku. Use it when you need a label for a piece of text. The card lists the license as mit.
[](https://doi.org/10.5281/zenodo.22761612) [](https://zenodo.org/records/22761612) [](https://github.com/sh1kaku59/room-voice-ai)
Downloads · 30 days
0
Access
Public
Updated Sep 22, 2026
Repo size
136 MB
Likes
1
Public
Click a slice to open those files.
.onnx136 MB · 97%
From the Hugging Face model README
RooM Voice AI Model Weights Hub provides pre-trained, production-ready AI model checkpoints quantized in ONNX INT8 format, running purely on multi-threaded CPU AVX2 in real-time (0 MB GPU VRAM) for the RooM Voice AI (Voice Call Meeting AI) enterprise assistant system.
| Model Checkpoint | Module | Architecture | Format | Size | CPU Latency |
|---|---|---|---|---|---|
phobert_joint_meeting_nlu.onnx | Module 4 | PhoBERT-v2 Joint Multi-Task (Intent + BIO Slots) | ONNX INT8 | 128 MB | $\le 35.0\text{ ms}$ |
openwakeword_room.onnx / ai_star_light_openwakeword.onnx | Module 2 | OpenWakeWord Depthwise Separable Conv + Conformer KWS | ONNX INT8 | 644 KB | $\le 3.5\text{ ms / frame}$ |
tokenizer/ | Module 4 | PhoBERT BPE Tokenizer (vocab.txt, bpe.codes, configs) | Tokenizer | ~2 MB | — |
The phobert_joint_meeting_nlu.onnx model is built on top of vinai/phobert-base-v2 with a Dual-Head architecture, simultaneously resolving both Vietnamese meeting dialogue semantic understanding tasks in a single forward pass:
$$\mathcal{L}{\mathrm{joint}} = 0.5 \cdot \mathcal{L}{\mathrm{intent}}(\hat{y}{\mathrm{intent}}, y{\mathrm{intent}}) + 0.5 \cdot \mathcal{L}{\mathrm{slot}}(\hat{y}{\mathrm{slot}}, y_{\mathrm{slot}})$$
Summarize_Meeting / Create_Meeting_Summary — Meeting minutes summarization.Query_Project_Knowledge — Project architecture & documentation inquiry.Assign_Action_Item — Action item assignment & task delegation.Schedule_Followup / Schedule_Followup_Meeting — Follow-up meeting scheduling.Explain_Technical_Concept — Technical terminology & concept explanation.Chitchat_Clarification — General greeting & clarification.B-PER, I-PER (Assignee / Personnel name)B-TIME, I-TIME (Timestamp / Deadline deadline)B-TASK, I-TASK (Action item description / Task name)B-TOPIC, I-TOPIC (Meeting agenda / Discussion topic)B-TOOL, I-TOOL (Technical tools / Infrastructure: Jira, gRPC, Git, Docker, etc.)O (Outside / Non-entity filler words)The openwakeword_room.onnx model is specifically engineered for real-time Vietnamese meeting wake-word detection:
"AI Star Light", "Star Light ơi", "AI Trợ lý", "Hey Star Light", "Starlight ơi".pip install onnxruntime numpy transformers pyvi huggingface_hub
import numpy as np
import onnxruntime as ort
from transformers import AutoTokenizer
from pyvi import ViTokenizer
from huggingface_hub import hf_hub_download
# 1. Download model and tokenizer from Hugging Face Hub
model_path = hf_hub_download(repo_id="sh1kaku/room-voice-ai", filename="phobert_joint_meeting_nlu.onnx")
tokenizer = AutoTokenizer.from_pretrained("sh1kaku/room-voice-ai", subfolder="tokenizer", use_fast=False)
# 2. Initialize ONNX Runtime Session on CPU AVX2
session = ort.InferenceSession(model_path, providers=["CPUExecutionProvider"])
# 3. Preprocess input text with PyVi Vietnamese word segmentation
text = "Giao cho anh Tuấn kiểm tra lỗi kết nối API gRPC trước 17h chiều nay"
segmented_text = ViTokenizer.tokenize(text)
inputs = tokenizer(segmented_text, return_tensors="np", padding="max_length", max_length=128, truncation=True)
# 4. Execute Multi-Task Inference
ort_inputs = {
"input_ids": inputs["input_ids"].astype(np.int64),
"attention_mask": inputs["attention_mask"].astype(np.int64),
}
intent_logits, slot_logits = session.run(None, ort_inputs)
# 5. Decode Intent and BIO Slot Tags
INTENTS = [
"Summarize_Meeting",
"Query_Project_Knowledge",
"Assign_Action_Item",
"Schedule_Followup",
"Explain_Technical_Concept",
"Chitchat_Clarification",
]
SLOTS = [
"O", "B-PER", "I-PER", "B-TIME", "I-TIME",
"B-TASK", "I-TASK", "B-TOPIC", "I-TOPIC", "B-TOOL", "I-TOOL"
]
predicted_intent = INTENTS[np.argmax(intent_logits[0])]
predicted_slots = [SLOTS[idx] for idx in np.argmax(slot_logits[0], axis=-1)]
print(f"Input Text : {text}")
print(f"Intent : {predicted_intent}")
import numpy as np
import onnxruntime as ort
from huggingface_hub import hf_hub_download
# 1. Download Wake-Word model
ww_path = hf_hub_download(repo_id="sh1kaku/room-voice-ai", filename="openwakeword_room.onnx")
ww_session = ort.InferenceSession(ww_path, providers=["CPUExecutionProvider"])
# 2. Simulated Log-Mel feature tensor input (16 frames, 32 channels)
dummy_features = np.zeros((1, 16, 32), dtype=np.float32)
input_name = ww_session.get_inputs()[0].name
output_prob = ww_session.run(None, {input_name: dummy_features})[0]
print(f"Wake-Word Posterior Probability: {float(output_prob[0][0]):.4f}")
| Evaluation Metric | Measured Value | Benchmark Assessment |
|---|---|---|
| NLU Intent Accuracy | $> 91.2%$ | Exceeds enterprise meeting standard |
| NLU CPU Latency | $\le 35.0\text{ ms}$ | Real-time non-blocking execution |
| Wake-Word CPU Latency | $\le 3.5\text{ ms / frame}$ | Ultra-low power CPU consumption |
| Wake-Word TPR | $\ge 96.2%$ | Robust Vietnamese acoustic detection |
| RAM Footprint | $< 120\text{ MB}$ | Lightweight edge deployment |
| GPU VRAM Usage | $0\text{ MB}$ | Preserves 100% VRAM for ASR & LLM Brain |
The underlying research and architecture behind these models are officially published on Zenodo:
@article{vu2026room,
title={RooM: Real-Time Event-Driven Streaming Architecture for Vietnamese Voice Call Meeting AI},
author={Vu, Ngoc Minh},
journal={Zenodo},
year={2026},
month={September},
doi={10.5281/zenodo.22761612},
url={https://doi.org/10.5281/zenodo.22761612}
}