Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 23 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
# Audemy

Audemy is an educational platform dedicated to empowering blind and visually impaired learners by providing accessible and interactive resources.
Audemy is a 501(c)(3) nonprofit organization reimagining education through the lens of accessibility, inclusion, and intelligent design. We build open-source tools, creative media, and assistive technologies that empower blind and visiually impaired learners.

Supported by a global team of 30 volunteers, Audemy has already impacted over 1,000 blind students across 7 schools worldwide, promoting independence, creativity, and a love for learning.
Our mission is to ensure that every child, regardless of ability or background, has access to joyful, high-quality education.

As part of its mission, Audemy continues to innovate in educational assistive technology, proving that tech has the power to create equal opportunities for everyone.
OUR REACH:
🎧 10,000+ blind and low-vision students served

🌍 15+ countries, including the U.S., India, Brazil, Nigeria, and the Philippines

🧑‍🤝‍🧑 60+ volunteers powering research, design, and deployment

💵 $200,000 raised from Intel, Taco Bell Foundation, NCWIT, and local scholarships


Audemy’s educational games are:

🎙️ Audio-based: Designed for screen-free learning

🧠 AI-enhanced: Personalized with generative voice AI

🎶 Emotionally responsive: Games that laugh, cheer, and encourage

🧩 Curriculum-aligned: Covers foundational math, science, and language

Visit audemy.org to learn more, or reach out at crystal [at] audemy [dot] org
Binary file added public/assets/images/impact/NPR-app.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/images/impact/acm-chi-2025.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/images/impact/acm-icmi-2024.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/images/impact/devpost.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/images/impact/meet-crystal-yang.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/images/impact/points-of-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/images/impact/voyage-houston.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/images/impact/yahoo-news.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
112 changes: 112 additions & 0 deletions src/Utilities/openvinoSpeechRec
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
"""
Copyright (c) 2018-2024 Intel Corporation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""

from ..representation import (
CharacterRecognitionAnnotation,
CharacterRecognitionPrediction,
)
from .metric import PerImageEvaluationMetric
from .distance import editdistance_eval


class SpeechRecognitionWER(PerImageEvaluationMetric):
__provider__ = 'wer'
annotation_types = (CharacterRecognitionAnnotation,)
prediction_types = (CharacterRecognitionPrediction,)

def configure(self):
self.words = 0
self.score = 0

def update(self, annotation, prediction):
cur_score = editdistance_eval(annotation.label.split(), prediction.label.split())
cur_words = len(annotation.label.split())
self.score += cur_score
self.words += cur_words
return cur_score / cur_words if cur_words != 0 else 0

def evaluate(self, annotations, predictions):
return self.score / self.words if self.words != 0 else 0

def reset(self):
self.words, self.score = 0, 0

@classmethod
def get_common_meta(cls):
meta = super().get_common_meta()
meta['target'] = 'higher-worse'
return meta


class SpeechRecognitionCER(PerImageEvaluationMetric):
__provider__ = 'cer'
annotation_types = (CharacterRecognitionAnnotation,)
prediction_types = (CharacterRecognitionPrediction,)

def configure(self):
self.length = 0
self.score = 0

def update(self, annotation, prediction):
cur_score = editdistance_eval(annotation.label, prediction.label)
cur_length = len(annotation.label)
self.score += cur_score
self.length += cur_length
return cur_score / cur_length if cur_length != 0 else 0

def evaluate(self, annotations, predictions):
return self.score / self.length if self.length != 0 else 0

def reset(self):
self.length, self.score = 0, 0

@classmethod
def get_common_meta(cls):
meta = super().get_common_meta()
meta['target'] = 'higher-worse'
return meta


class SpeechRecognitionSER(PerImageEvaluationMetric):
__provider__ = 'ser'

annotation_types = (CharacterRecognitionAnnotation,)
prediction_types = (CharacterRecognitionPrediction,)

def configure(self):
self.length = 0
self.score = 0

def update(self, annotation, prediction):
# remove extra whitespaces
gt_label = ' '.join(annotation.label.split())
pred_label = ' '.join(prediction.label.split())
ser = int(gt_label != pred_label)
self.score += ser
self.length += 1
return ser

def evaluate(self, annotations, predictions):
return self.score / self.length if self.length != 0 else 0

def reset(self):
self.length, self.score = 0, 0

@classmethod
def get_common_meta(cls):
meta = super().get_common_meta()
meta['target'] = 'higher-worse'
return meta
Loading