Skip to content

πŸŽ™οΈ Automated meeting transcription and summarization pipeline with Slack integration

License

Notifications You must be signed in to change notification settings

hatimhtm/EchoScribe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

EchoScribe

Tests Python License: MIT

πŸŽ™οΈ Automated meeting transcription and summarization tool

EchoScribe records meetings, transcribes audio using Google Cloud Speech-to-Text, summarizes content with OpenAI, and posts structured summaries to Slack.

EchoScribe Demo

✨ Features

  • Audio Recording - Capture meeting audio with configurable quality
  • Transcription - Convert speech to text using Google Cloud Speech-to-Text
  • AI Summarization - Extract summaries, action items, and key points using GPT
  • Slack Integration - Post formatted meeting notes to any channel
  • CLI Interface - Easy-to-use command-line tool
  • Docker Support - Run anywhere with containerization

πŸš€ Quick Start

Installation

# Clone the repository
git clone https://github.com/hatimhtm/EchoScribe.git
cd EchoScribe

# Install with pip
pip install -e .

# Or with Docker
docker build -t echoscribe .

Configuration

Set these environment variables (or use a .env file):

# Required
export SLACK_API_TOKEN="xoxb-your-slack-bot-token"
export OPENAI_API_KEY="sk-your-openai-api-key"
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials.json"

# Optional
export SLACK_CHANNEL="#meeting_recordings"
export OPENAI_MODEL="gpt-3.5-turbo"
export LOG_LEVEL="INFO"

Usage

# Check configuration
echoscribe check-config

# Transcribe an audio file
echoscribe transcribe recording.wav -o transcript.txt

# Summarize a transcription
echoscribe summarize transcript.txt --slack

# Full pipeline: transcribe + summarize + post to Slack
echoscribe process recording.wav --channel "#team-meetings"

πŸ“ Project Structure

echoscribe/
β”œβ”€β”€ __init__.py           # Package exports
β”œβ”€β”€ config.py             # Configuration management
β”œβ”€β”€ cli.py                # Typer CLI commands
β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ transcription.py  # Google Cloud Speech-to-Text
β”‚   β”œβ”€β”€ summarization.py  # OpenAI summarization
β”‚   β”œβ”€β”€ slack.py          # Slack integration
β”‚   └── recorder.py       # Audio recording
└── utils/
    └── __init__.py

tests/
β”œβ”€β”€ test_config.py        # Configuration tests
└── test_summarization.py # Summarization tests

πŸ”§ Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=echoscribe

# Format code
black echoscribe tests
ruff check echoscribe tests

🐳 Docker

# Build image
docker build -t echoscribe .

# Run with environment variables
docker run --rm \
  -e SLACK_API_TOKEN="xoxb-..." \
  -e OPENAI_API_KEY="sk-..." \
  -e GOOGLE_APPLICATION_CREDENTIALS="/creds/key.json" \
  -v /path/to/creds:/creds:ro \
  -v /path/to/audio:/audio:ro \
  echoscribe process /audio/meeting.wav

πŸ“‹ API Reference

SummarizationService

from echoscribe.services.summarization import SummarizationService

service = SummarizationService(api_key="sk-...")
summary = service.summarize("Meeting transcription text...")

print(summary.summary)        # Brief summary
print(summary.action_items)   # List of action items
print(summary.key_points)     # Key discussion points

TranscriptionService

from echoscribe.services.transcription import TranscriptionService

service = TranscriptionService(language_code="en-US")
result = service.transcribe("meeting.wav")

print(result.text)        # Transcribed text
print(result.confidence)  # Confidence score

SlackService

from echoscribe.services.slack import SlackService

slack = SlackService(token="xoxb-...")
slack.post_message("Hello, team!", channel="#general")
slack.upload_file("report.pdf", title="Meeting Report")

πŸ“„ License

MIT


πŸ‘€ Author

Hatim El Hassak β€” Full-Stack Engineer

Portfolio LinkedIn Email

About

πŸŽ™οΈ Automated meeting transcription and summarization pipeline with Slack integration

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published