ποΈ 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.
- 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
# 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 .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"# 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"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
# 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# 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.wavfrom 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 pointsfrom 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 scorefrom echoscribe.services.slack import SlackService
slack = SlackService(token="xoxb-...")
slack.post_message("Hello, team!", channel="#general")
slack.upload_file("report.pdf", title="Meeting Report")Hatim El Hassak β Full-Stack Engineer
