Code Monkey home page Code Monkey logo

transcription's Introduction

Introduction

The Transcribe solution is a multi-component application designed to transcribe audio files. It consists of a frontend, an API, a transcription worker, and uses external Speech to Text containers which are distributed by Microsoft.

Purpose

The purpose of this solution is to provide an automated way to transcribe audio files into text in a secure and scalable way. The solution is designed to be deployed as standalone containers or in a container orchestrator such as Kubernetes.

Target Audience

This README is intended for developers, contributors and users who want to understand, build, run, host and contribute to the Transcribe solution.

Documentation

Solution Components

  • Frontend: The frontend of the Transcribe solution is a React application located in the reactapp directory.
  • API: The API is a C# service located in the API directory.
  • Transcription Worker: The Transcription Worker is a service written in PowerShell that handles the transcription process. It's located in the TranscriptionWorker directory.
  • Speech to Text Containers: The solution uses external Speech to Text containers. More information can be found here.

Authentication

The application uses OpenID Connect for authentication of end users on the Microsoft identity platform (Entra ID).

For creation and configuration of App Registrations for the Frontend and API, see the following document:
Transcribe - Authentication setup_v1.0.pdf

Authorization for specific users to access the application can be configured in Entra ID under Enterprice application (frontend app registration). Currently the there is no concept of roles in the application and a logged in user can only see files/transcriptions uploaded by the user.

Building the Solution

Requirements

  • Docker
  • .NET SDK
  • Node.js and npm

Build Steps

  1. Build the API: dotnet build API
  2. Build the Frontend: npm install && npm run build in the reactapp directory.
  3. Build the Transcription Worker: dotnet build TranscriptionWorker
  4. Build the Docker images: docker-compose build

Development and Contribution Guidelines

How to Contribute

Please read the CONTRIBUTING.md for details on how to contribute.

How to Prepare the code for local development

  1. Create the file my_secrets.txt with content "APIKEY=mySecretAzureKey" in the project root.
  2. Make sure you have a developer certificate for the API application. This is done automatically for you when building using Visual studio. To do this manually from command line: dotnet dev-certs https -ep $APPDATA/ASP.NET/Https/API.pfx -p somepassword
  3. Make sure to register the certificate password as a secret. This is done automatically for you when building using Visual studio. To do this manually from command line: user-secrets set "Kestrel:Certificates:Development:Password" "somepassword" --project API
  4. Make sure to have ADFS authentication properly configured (see separate guide)
  5. Make sure you have a developer certificate for the reactapp application, follow vite guidelines.
  6. Review the settings in docker-compose.yml and docker-compose.override.yml and adjust if required.

How to Run the Solution Locally

  1. Build and start the services: docker compose -f docker-compose.yml -f .\docker-compose.override.yml up --build
  2. Access the frontend at http://localhost:4173
  3. Access the Backend at https://localhost:44331/swagger/index.html

Deploying the Solution

Requirements

  • An environment which can run Docker containers. This can be a local machine, a VM, or a container orchestrator such as Kubernetes.

For more details, please refer to the Infrastructure Design and Kubernetes Design documents.

Deployment Steps

Infrastructure

Each alternative deployment method has its own README file. Please refer to the README file for the deployment method you want to use.

Application Deployment

  1. Build the Docker images: docker-compose build
  2. Push the Docker images to a container registry.
  3. Update the image tags in the orchestrator deployment configuration.*
  4. Deploy the application.

* Follow the instructions in the README file for the deployment method you are using.

Updating the Solution

When new versions of the Speech to Text containers are released, update the image tag in the Kubernetes deployment configuration and redeploy the application.

transcription's People

Contributors

perhod86 avatar anargam avatar

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.