Skip to content

spm999/Audio-Transcriber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Audio Recorder and Transcription App

This is a full-stack application that allows users to record audio, upload it, and retrieve transcriptions for the recordings. It is built using React for the frontend and Node.js/Express for the backend, with MongoDB for storage.

Features

  • Record audio directly from the browser.
  • Upload audio files to the server.
  • Fetch a list of recorded audio files.
  • Retrieve and display transcriptions of recorded audio.
  • Delete audio recordings.

Installation

Prerequisites

  • Node.js (v12 or later)
  • MongoDB

Backend Setup

  1. Clone the repository:
  git clone https://github.com/spm999/Audio-Transcriber.git
  cd server

  1. Install backend dependencies:
  npm install

  1. Create a .env file in the backend directory with the following content:

    CLOUDINARY_CLOUD_NAME=
    CLOUDINARY_API_KEY=
    CLOUDINARY_API_SECRET=
    DEEPGRAM_API_KEY=
    MONGODB_URI=
    

    For the above, get cloudinary api and deepgram api by visiting their sites.

  2. Start the backend server:

    npm start
    

Frontend Setup

  1. Open a new terminal window and navigate to the frontend directory:
   cd app
  1. Install frontend dependencies:

    npm install
    
  2. Start the frontend development server:

    npm run dev

Usage

  1. Recording Audio:
    • Enter a title for the recording.
    • Click the "Start Recording" button to start recording audio.
    • Click the "Stop Recording" button to stop recording.
    • Click the "Upload" button to upload the recorded audio.
  2. Viewing Recordings:
    • The recordings will be listed in the "Recordings List" section.
    • Click on the "Get Transcription" button to retrieve the transcription.
    • Click on the "Delete" button to remove the recording.

API Endpoints

Recording Endpoints

  • GET /api/recordings
    • Fetch all recordings.
  • POST /api/recordings/upload
    • Upload a new recording. Requires title and audio in the form-data.
  • DELETE /api/recordings/:recordingId
    • Delete a recording by ID.

Transcription Endpoints

  • POST /api/transcription/:recordingId Transcribe an audio

Project Structure

project/
│
├── backend/                   # Backend server code
│   │
│   ├── config/                # Configuration files
│   │   ├── cloudinary.js      # Configuration for Cloudinary
│   │   └── config.js          # General project configuration
│   │
│   ├── models/                # Database models
│   │   └── Recording.js       # Model definition for recordings
│   │
│   ├── routes/                # Express routes
│   │   ├── recording.js       # Routes for handling recordings
│   │   ├── transcription.js   # Routes for transcription handling
│   │
│   ├── utils/                 # Utility functions
│   │   └── db.js              # Database utility functions
│   │
│   ├── server.js              # Entry point for backend server
│   ├── package.json           # Node.js dependencies and scripts
│   └── package-lock.json      # Lock file for Node.js dependencies
│
└── frontend/                  # Frontend application code
 |  │
 |  ├── public/                # Public assets (index.html, images, etc.)
 |  ├── src/                   # Source code directory
 |   │   │
 |   │   ├── components/        # React components
 |   │   │   ├── Record.jsx     # Component for recording audio
 |   │   │   ├── RecordingsList.jsx  # Component for listing recordings
 |   │   │   └── ...            # Other components
 |   │   │
 |   │   ├── App.jsx            # Main component or app entry point
 |   │   ├── index.css          # Global styles
 |   │   └── main.jsx           # Main entry file for ReactDOM
│
├── .gitignore
├── README.md
└── LICENSE

Contributing

Contributions are welcome!

License

This project is licensed under the MIT License. See the LICENSE file for details.

Acknowledgements