## How to Build a Meeting Transcription Python Script

A guide by

[Andrés Díaz](https://www.linkedin.com/in/andiazo/)

## Introduction

Transform your meetings into actionable insights with a Python-powered transcription tool. By the end of this guide, you'll have a robust application that can transcribe audio from various file formats, generate concise summaries, and suggest next steps—all powered by AI.

## Getting Started

To begin, fork this template by clicking "Use Template" below:

[Use the template](/content/@HL3rd/Simple-Meeting-Transcriber-Script/index.html)

### OpenAI API Key

- Log in to the [OpenAI developer platform](https://platform.openai.com/).
- Navigate to API keys and create a new secret key.
- Copy the secret key and add it to Replit's Secrets tab as OPENAI_API_KEY.

## Using the Tool

### Uploading Files

- In the Files sidebar, you'll see an uploads folder

- Click on the three dots next to uploads and select "Add file"
- Choose your meeting recording (supported formats: mp4, avi, mov, wav)
- The file will appear in the uploads folder

## Running the Tool

Click the Run button at the top of your Repl

The console will show the progress:

```
1> Converting audio
2> Transcribing audio
3> Generating output
4> Output file generated: output/your_file_name.md
```

## Accessing Transcriptions

- Your transcriptions will be saved in the output folder
- Each transcription includes:
  - Full transcript of the audio
  - A summary of the content
  - Suggested next steps based on the content
- To download:
  - Click on the file in the output folder
  - Click the "Download" button at the top of the file viewer

## Breaking down the code

Let's explore the key components of our meeting transcription tool.

### Setting up the environment

```python
import os
import openai
from utils import (
    chunk_audio,
    chunk_text,
    convert_to_audio,
    generate_next_steps,
    generate_output_file,
    generate_summary,
    transcribe_audio,
)
# Set up OpenAI API key
openai.api_key = os.environ['OPENAI_API_KEY']
```

This section imports necessary modules and sets up the OpenAI API key from the secret we added earlier.

### Processing Files

```python
def process_file(file_path):
    """Process the uploaded file and generate the document."""
    print("> Converting audio")
    audio_path = convert_to_audio(file_path)
    audio_chunks = chunk_audio(audio_path)

print("> Transcribing audio")
    transcript = transcribe_audio(audio_chunks)
    transcript_chunks = chunk_text(transcript)

summary = generate_summary(transcript_chunks)
    next_steps = generate_next_steps(transcript_chunks)

print("> Generating output")
    output_path = generate_output_file(file_path, transcript, summary, next_steps)
    print(f"Output file generated: {output_path}")

# Clean up temporary audio chunks
    for chunk in audio_chunks:
        os.remove(chunk)
```

The `process_file` function handles the entire workflow:

- Converts the input file to audio
- Chunks the audio for processing
- Transcribes the audio
- Generates a summary and next steps
- Creates an output file with all the information

### Main Execution

```python
def main():
    upload_folder = 'uploads'
    output_folder = 'output'
    os.makedirs(upload_folder, exist_ok=True)
    os.makedirs(output_folder, exist_ok=True)

print("Please place your audio or video file in the 'uploads' folder.")
    input("Press Enter when you've uploaded the file...")

files = os.listdir(upload_folder)
    if not files:
        print("No files found in the 'uploads' folder. Thank you for using our service. Goodbye!")
        return

for filename in files:
        file_path = os.path.join(upload_folder, filename)
        process_file(file_path)
```

The main function:

- Creates necessary folders
- Waits for user input
- Processes all files in the uploads folder

## What's Next

- **Enhanced Features**
  - Add support for real-time transcription
  - Implement speaker diarization to identify different speakers
  - Create a web interface for easier file uploads
- **Optimization**
  - Optimize audio chunking for better performance
  - Implement parallel processing for faster transcription
  - Add error handling and retry mechanisms
- **Integration Ideas**
  - Connect with calendar apps to automatically process meeting recordings
  - Integrate with project management tools to create tasks from next steps
  - Build a Slack bot for easy access to transcription services

If you’d like to bring this project and similar templates into your team, [set some time here](/content/teams#inlineForm?utm_source=blog&utm_campaign=guides&utm_content=clay-api-email-to-linkedin/index.html) with the Replit team for a quick demo of Replit Teams.

Happy coding!
