A CLI tool for managing meeting recordings and transcriptions, with flexible processing capabilities. This tool provides a seamless pipeline for:
- Recording high-quality audio
- Transcribing recordings using Deepgram's models
- Processing transcripts using customisable Prompty templates
Before installing utterly, ensure you have the following:
- Python v3.12 or later installed on your system
- A Deepgram account and API key (free tier available at https://deepgram.com/)
- An OpenAI API key for GPT-4 access
utterly uses .prompty files (located in the prompts/
directory) to define structured interactions with language models. These files follow the Prompty specification and allow for:
- Consistent prompt templates
- Environment variable integration
- Model configuration management
- Structured output formatting
The provided .prompty files include templates for:
- 1:1 meeting summaries
- Option analysis
- Meeting notes
Users are encouraged to extend the tool's capabilities by creating their own .prompty files. This flexibility allows for customized summarization formats, specialized analysis templates, and domain-specific prompts tailored to your organization's needs.
- Clone the repository:
git clone https://github.com/philipf/utterly.git
cd utterly
- Install the package:
pip install -e .
- Set up environment variables:
Create a
.env
file with your API keys:
DEEPGRAM_API_KEY=your_deepgram_key
OPENAI_API_KEY=your_openai_key
- (Optional) Create a configuration file: Copy the example configuration and modify as needed:
cp config.example.yaml config.yaml
utterly can be used either as a complete pipeline or step-by-step using individual commands.
Record, transcribe, map speakers, and process in one go:
utterly
The pipeline will:
- Record your meeting (stop with Ctrl+C)
- Prompt for a meeting name/description
- Transcribe the recording with speaker diarisation
- Help you map speaker labels to actual names
- Process the transcript using the selected Prompty template
- List audio devices:
utterly record --list-devices
- Record a meeting:
utterly record [--device DEVICE_ID] [--filename OUTPUT.ogg]
- Transcribe a recording:
utterly transcribe AUDIO_FILE [--output transcript.json]
- Map speaker labels to names:
utterly speaker-map TRANSCRIPT_FILE
- Process transcript:
utterly process TRANSCRIPT_FILE --template TEMPLATE_NAME [--output result.md]
For optimal meeting recording quality, you can use VoiceMeeter to capture both your microphone input and the speakers' output into a single virtual device, which utterly can then record.
VoiceMeeter is a virtual audio mixer that allows you to route audio from multiple sources into a single recording stream. This is particularly useful for meeting recordings as it captures:
- Your voice through your microphone
- Other participants' voices from your speakers/headphones
This results in a complete recording of both sides of the conversation.
flowchart TD
MicIn["Headset<br/>(microphone)"]
Headphones["Headphones"]
VoiceMeeter["VoiceMeeter"]
VirtualOutput["Virtual output"]
PythonTranscriber["Python<br/>Transcriber"]
Teams["Microsoft<br/>Teams"]
VMIn["VoiceMeeter Input<br>(VB-Audio VoiceMeeter VAIO)"]
MicIn --> |"StereoInput 1<br/>(MME)"| VoiceMeeter
VoiceMeeter --> |"A1<br/>(MME)"| Headphones
VoiceMeeter --> |"B"| VirtualOutput
VirtualOutput --> |"VoiceMeeter<br/> Out B1"| PythonTranscriber
Teams --> |"Speaker"| VMIn
Teams --> |"Microphone"| MicIn
-
Download VoiceMeeter:
- Visit VB-Audio website
- Download and install VoiceMeeter
- Restart your computer after installation
-
Configure VoiceMeeter:
- Set your physical microphone as Hardware Input 1
- Set your headphones/speakers as Hardware Output A1
-
Configure Microsoft Teams:
- Open Teams settings > Devices
- Set Speaker to "VoiceMeeter Input (VB-Audio VoiceMeeter VAIO)"
- Set Microphone to your physical microphone
- Test your audio to ensure both incoming and outgoing audio work
-
Record with utterly:
- List your audio devices to find the VoiceMeeter output:
utterly record --list-devices
- Start recording using the VoiceMeeter output device:
utterly record --device <number matching VoiceMeeter Output (VB-Audio VoiceMeeter VAIO)>
- List your audio devices to find the VoiceMeeter output:
This setup allows utterly to capture a complete recording of your meeting, including both your voice and other participants' voices in a single audio stream.
The tool can be configured using a YAML configuration file. Create your config by copying the example:
cp config.example.yaml config.yaml
Then specify the config file when running commands:
utterly --config config.yaml pipeline
- High-quality audio recording
- Multiple audio device support
- Configurable channels and sample rate
- Automatic temporary filename generation
- Interactive post-recording naming
- Year-month subfolder organization
- Optional immediate transcription after recording
- Speaker diarisation
- Smart formatting
- Punctuation
- Utterance detection
- Meeting-optimized model (nova-2-meeting)
- Interactive speaker identification
- Maps automatically detected speaker labels to real names
- Temporary per-session mappings
- Integrates with transcription and processing pipeline
- Flexible processing using Prompty templates
- Multiple processing types:
- Meeting summaries and action items
- Option analysis with pros/cons
- Performance appraisals
- Custom processing templates
- Template-driven output formatting
- Configurable model parameters
To contribute to the project:
- Create a virtual environment:
python -m venv venv
source venv/bin/activate # Linux/Mac
# or
venv\Scripts\activate # Windows
- Install development dependencies:
pip install -e ".[dev]"
- Run tests:
pytest
MIT License - see LICENSE file for details.