Instructions to use inviolus/erdem-asr-tr-baseline with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use inviolus/erdem-asr-tr-baseline with Keras:
# !pip install -U keras tensorflow huggingface_hub # Keras needs TensorFlow installed to read "hf://" paths, so the tensorflow backend is selected here; # "jax" and "torch" also work for computation once TensorFlow is installed. import os os.environ["KERAS_BACKEND"] = "tensorflow" import keras model = keras.saving.load_model("hf://inviolus/erdem-asr-tr-baseline") - Notebooks
- Google Colab
- Kaggle
erdem-asr: tiny Turkish CTC speech recognizer (research baseline)
A very small (63,955 parameters) character-level Turkish speech recognizer: a 1D convolution, a bidirectional GRU and a CTC character head over a 40-bin log-mel spectrogram.
This is an experimental research baseline, not a usable transcriber. About half of the characters it outputs are wrong and almost no words come out right. It is published to show how far a from-scratch, microcontroller sized Turkish CTC model gets on public data.
Türkçe özet: Sıfırdan eğitilmiş, çok küçük (yaklaşık 64 bin parametre) bir Türkçe konuşma tanıma modeli. Araştırma amaçlı bir başlangıç modelidir; karakterlerin yaklaşık yarısı hâlâ yanlış.
Files
| File | What it is |
|---|---|
erdem_asr.keras |
Inference model: input (batch, frames, 40) log-mel features, output (batch, frames/2, 35) softmax |
metrics.json |
Training and validation loss per epoch for this run |
Model
- Input: 16 kHz mono audio → mel spectrogram (
n_fft=640,hop_length=320, 40 mels, power 2) →power_to_db(ref=max), shape(frames, 40). Pad with-80.0(silence), not0. - Architecture: Conv1D(48, kernel 5, stride 2) → bidirectional GRU(64) → Dense(64) → Dense(35, softmax).
- Output alphabet (indices
0..33):" abcçdefgğhıijklmnoöpqrsştuüvwxyz'"; index34is the CTC blank. - Decoding: greedy CTC.
Usage
import librosa
import numpy as np
import tensorflow as tf
ALPHABET = " abcçdefgğhıijklmnoöpqrsştuüvwxyz'"
BLANK = len(ALPHABET)
audio, _ = librosa.load("speech.wav", sr=16000, mono=True)
mel = librosa.feature.melspectrogram(y=audio, sr=16000, n_fft=640, hop_length=320, n_mels=40, power=2.0)
features = librosa.power_to_db(mel, ref=np.max).T.astype(np.float32)
model = tf.keras.models.load_model("erdem_asr.keras", compile=False)
ids = model.predict(features[np.newaxis])[0].argmax(-1)
text, previous = [], None
for i in ids:
if i != previous and i != BLANK:
text.append(ALPHABET[i])
previous = i
print("".join(text))
Results
Greedy decoding, 500 clips per test set (run v11, 2026-10-25):
| Test set | CER | Character accuracy | WER |
|---|---|---|---|
| Common Voice Turkish scripted (held-out) | 45.6% | 54.4% | 102.0% |
| ISSAI Turkish Speech Corpus (test) | 46.3% | 53.7% | 101.5% |
WER above 100% means the model inserts more wrong words than the reference contains; word-level output is not usable yet.
Training
Continued over several runs, each warm-started from the previous one. The last run (v11) trained 18 epochs on 100,000 clips from Common Voice Turkish and the ISSAI Turkish Speech Corpus; best validation loss 51.66.
Training data
- Mozilla Common Voice, Turkish, Scripted Speech 27.0 (CC0).
- ISSAI Turkish Speech Corpus, Institute of Smart Systems and Artificial Intelligence (ISSAI), Nazarbayev University, MIT license.
No personal recordings were used to train this model.
License
The model weights are released under the MIT License (see LICENSE).
Part of the training data, the ISSAI Turkish Speech Corpus, is MIT-licensed;
its notice is kept in LICENSE as that license requires. If you use the
ISSAI data or this model, please also cite:
@Article{info14020074,
AUTHOR = {Mussakhojayeva, Saida and Dauletbek, Kaisar and Yeshpanov, Rustem and Varol, Huseyin Atakan},
TITLE = {Multilingual Speech Recognition for Turkic Languages},
JOURNAL = {Information},
VOLUME = {14},
YEAR = {2023},
NUMBER = {2},
ARTICLE-NUMBER = {74},
URL = {https://www.mdpi.com/2078-2489/14/2/74},
ISSN = {2078-2489}
}
- Downloads last month
- 14