Code Monkey home page Code Monkey logo

elpis's Introduction

Elpis (Accelerated Transcription)

Build Status Coverage Status

Elpis is a tool which allows language workers with minimal computational experience to build their own speech recognition models to automatically transcribe audio. Elpis provides a way to use multiple speech recognition systems for orthographic or phonemic transcription. The current systems included are Kaldi and Huggingface Transformers wav2vec2.

How can I use Elpis?

Documentation is here.

I'm An Academic, How Do I Cite This In My Research?

This software is the product of academic research funded by the Australian Research Council Centre of Excellence for the Dynamics of Language. If you use the software in an academic setting, please cite it appropriately as follows:

Foley, B., Arnold, J., Coto-Solano, R., Durantin, G., Ellison, T. M., van Esch, D., Heath, S., Kratochvíl, F., Maxwell-Smith, Z., Nash, D., Olsson, O., Richards, M., San, N., Stoakes, H., Thieberger, N. & Wiles, J. (2018). Building Speech Recognition Systems for Language Documentation: The CoEDL Endangered Language Pipeline and Inference System (Elpis). In S. S. Agrawal (Ed.), The 6th Intl. Workshop on Spoken Language Technologies for Under-Resourced Languages (SLTU) (pp. 200–204). Available on https://www.isca-archive.org/sltu_2018/foley18_sltu.pdf.

elpis's People

Contributors

aviraljain99 avatar benfoley avatar benjamingalliot avatar etopeojo avatar fauxneticien avatar harrykeightley avatar jdcaperon avatar jinxianghooi avatar mattchrlw avatar nicbytes avatar nicklambourne avatar oadams avatar rakhi-alina avatar robertusvt avatar srishti013 avatar zepam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elpis's Issues

Break-up training into smaller stages

The current stages for training include:
untrained
training
trained

However, training can be broken down into the headers found in kaldi-helpers/.../run.sh

Dataset API isn't saving Tier name

Changing tier name to something and save setting should update the state. JSON object {tier: something} is being sent OK, check where it is failing in the server

Formalise routing errors

Errors that happen internally to elpis are currently displayed by the flask debugger. Instead, they should be caught and processed in the response JSON object

New Transcription output tiers

Option to export with

  • Phone
  • Word segmented
  • Immediate-time adjacent words grouped into a single utterance
  • segmentation by voice activity
  • no segmentation (single annotation entire file)

Better handling of API errors

When a current step fails, the menu highlighting is lost. Investigate ways to retain step highlighting that is independent of api status/return data.

add model list endpoint to model.py

@bp.route("/list", methods=['GET', 'POST'])
def list_existing():
kaldi: KaldiInterface = app.config['INTERFACE']
return jsonify({
"status": "ok",
"data": kaldi.list_models()
})

Route requests from the server

React routes specify the location of main pages on the front end, however, these routes don't exist on the server. For example, if you start at the index (/), then you can access the naming page (/naming), however, if you try and access /naming directly, then you'// get a 404.

Load objects from the file system

The base class currently has a complete load method. The other classes that need their load methods reviewed/coded/re-coded are: KaldiInterface, Dataset, Model, Transcription

Be considerate of markers when cleaning data

eg the u̱t-Maʻin data has hyphen noun marker and glottal stop,
the human transcription is provided as da-u de̱'e̱
which the cleaning produces four tokens da u de̱ e̱

(The Gossip King.eaf,T=tx@IbrahimYohanna,B=20535,E=21807)

Remove sort -u from model.py , but we still need only unique values

Currently using bash, with sort -u. This is problematic because the order is significant, so that for example, aa can take precedence over a in the example below:

aa a:
a a

Current script is:

cmd = f"grep -v '^#' < {self.pron_dict.l2s_path} | cut -d' ' -f2 | grep -v '^$' | sort -u"

Should be able to do it with python!

Remove elpis/api/ and elpis/kaldi/ directories

These directories are empty except for python caches. From my understanding, they are artifacts from the old directory structure and all the files they once contained are now located under elpis/wrappers/.

error in new_model

should new_dataset and new_model be similar code structure?

    def new_model(self, mname):
        m = Model(parent_path=self.models_path, name=mname, logger=self.logger)
        models = self.config['models']
        models[mname] = m.hash
        self.config['models'] = models
        return m

Include training results in model config

Create an end-point that reveals the results of training.
Find the results in the Kaldi File Structure -> kaldi/exp/tri1/decode/<wer_x> where x is the highest number wer_ file in that directory

Remove absolute paths

There are many references in the code that use absolute file paths, this is not good practice and must be fixed

Clean up the paths in infer scripts

Can we fix the paths in the scripts rather than doing path replacement eg in
elpis/wrappers/objects/transcription.py _cook_generate_infer_files

Where else does this occur?

Testing

Add unit tests for each object (again)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.