An automated tool for transcribing and summarizing voice recordings from Zendesk tickets using OpenAI's Whisper and GPT models.
- Downloads voice recordings from Zendesk tickets
- Transcribes audio using OpenAI Whisper API
- Generates intelligent summaries with GPT-5
- Posts summaries back to tickets as private comments
- Handles multiple recordings per ticket
- Skip existing transcripts to save time
- Command-line and interactive modes
- Can be packaged as a standalone executable
- Python 3.8+
- Zendesk account with API access
- OpenAI API key
- Clone the repository:
git clone https://github.com/yourusername/zendesk-voice-summary.git
cd zendesk-voice-summary- Create a virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Set environment variables:
export ZENDESK_DOMAIN="yourcompany.zendesk.com"
export ZENDESK_EMAIL="your-email@company.com"
export ZENDESK_PASSWORD="your-zendesk-password"
export OPENAI_API_KEY="sk-your-openai-api-key"Run without arguments to enter interactive mode:
python voice_summary.pyProcess single ticket:
python voice_summary.py 12345Process multiple tickets:
python voice_summary.py 12345 12346 12347Process from URL:
python voice_summary.py https://yourcompany.zendesk.com/agent/tickets/12345--no-zendesk- Process recordings without posting to Zendesk--skip-existing- Skip recordings that already have transcripts
# Process without posting to Zendesk
python voice_summary.py --no-zendesk 12345
# Skip existing transcripts
python voice_summary.py --skip-existing 12345 12346Install the wrapper script to use voice_summary from anywhere:
./scripts/install_voice_summary.shThen use:
voice_summary 12345
voice_summary # Interactive modeBuild a standalone executable with PyInstaller:
./scripts/build_standalone.shThis creates a self-contained executable in dist/voice_summary that can be distributed without Python dependencies.
The tool operates in three phases:
- Download & Transcribe: Downloads MP3 files from Zendesk and transcribes them using Whisper
- Summarize: Creates intelligent summaries with sections for Description, Troubleshooting, and Next Steps
- Post to Zendesk: Adds the summary as a private comment on the ticket
Processed files are saved with this naming convention:
- Audio:
ticket{id}_call{call_id}.mp3 - Transcripts:
ticket{id}_call{call_id}.txt - Combined summaries:
ticket{id}_combined_summary.txt
When using the wrapper script, files are organized in ~/zendesk-transcripts/.
Set these environment variables:
| Variable | Description | Required |
|---|---|---|
ZENDESK_DOMAIN |
Your Zendesk subdomain (e.g., company.zendesk.com) |
Yes |
ZENDESK_EMAIL |
Your Zendesk account email | Yes |
ZENDESK_PASSWORD |
Your Zendesk password | Yes |
OPENAI_API_KEY |
Your OpenAI API key | Yes |
- Python 3.8+
requests- For Zendesk API callsopenai- For Whisper transcription and GPT summarization
Optional:
pytz- For timezone support (Python < 3.9)pyinstaller- For building standalone executables
MIT License - see LICENSE file for details
Contributions are welcome! Please feel free to submit a Pull Request.
Built with: