


























A meeting agent script to record, transcribe, and summarise meetings using FFmpeg, PulseAudio and the Mistral AI API.
A script to record, transcribe, and generate structured meeting notes using FFmpeg, PulseAudio and the Mistral AI API.
The Meeting Agent automates the process of capturing, transcribing, and generating structured meeting notes. It records audio from both microphone and speaker outputs, transcribes the audio using Mistral's speech-to-text API, and generates structured meeting notes in Markdown format.
voxtral-mini-latest model to transcribe audiomistral-medium-latest modelhttr - HTTP requests for Mistral APIjsonlite - JSON configuration handlingrmarkdown - Markdown processingprocessx - Process management for audio recordingargparse - Command line argument parsingcli - Terminal UI styling and formatting (for TUI mode)Clone this repository or download the script files.
Rscript -e "install.packages(c('httr', 'jsonlite', 'rmarkdown', 'processx', 'argparse', 'cli'), repos = 'https://cloud.r-project.org')"
"
### 3. Install System Dependencies
**Ubuntu/Debian:**
```bash
sudo apt-get install pulseaudio ffmpeg
Fedora/RHEL:
sudo dnf install pulseaudio ffmpeg
Arch Linux:
sudo pacman -S pulseaudio ffmpeg
Launch the interactive TUI for guided setup and workflow selection:
Rscript meeting_agent.R
The TUI provides:
Rscript meeting_agent.R --api-key YOUR_API_KEY --record
Rscript meeting_agent.R --record
Rscript meeting_agent.R --file /path/to/audio.mp4
Rscript meeting_agent.R --template-path /path/to/meeting_blueprint.md --output-dir /path/to/output --record
| Option | Description |
|---|---|
--api-key |
Mistral API key (required on first run) |
--tui |
Launch interactive Terminal User Interface |
--no-tui |
Force command-line mode (disables TUI even if stdin is a terminal) |
--record |
Record audio from microphone and speakers |
--file |
Use specified audio/video file instead of recording |
--template-path |
Path to markdown template file |
--output-dir |
Base path for output directories |
--context |
Path to context bias text file for improved transcription accuracy |
In TUI mode, use the Settings menu to configure:
Configuration is saved to config.json and loaded automatically on subsequent runs.
The context bias feature improves transcription accuracy by providing the Mistral transcription API with domain-specific terminology that is likely to appear in your meetings.
Create a plain text file containing words and phrases that are specific to your domain. Each entry should be on its own line or separated by commas. Multi-word entries should use underscores to join words (e.g., project_manager instead of project manager).
Example context bias file (bias.txt):
meeting,minutes,action_item,project_manager,scrum,sprint,retrospective,standup,dikaletus
In TUI Mode:
In Command Line Mode:
Rscript meeting_agent.R --context /path/to/bias.txt --record
When a context bias file is configured, its contents are sent to the Mistral /audio/transcriptions API endpoint as the context_bias parameter. This helps the transcription model recognize and accurately transcribe domain-specific terms, proper nouns, technical jargon, and other terminology that might be uncommon in general speech but important for your use case. The model uses this information to bias its vocabulary selection during transcription.
action_item).The Mistral transcription API supports speaker diarization and configurable timestamp granularities to enhance your transcriptions.
Speaker diarization identifies different speakers in the audio and attributes speech segments to each speaker in the output.
diarize = TRUE)Controls the granularity of timestamps in the transcription output.
segment - provides timestamps for each speech segmentsegment - timestamps for each detected speech segment (most granular)word - timestamps for each wordnone - no timestamps (plain text output)When timestamp granularity is set to anything other than
none(i.e.,segmentorword), the transcription API returns output in JSON format instead of plain text. This JSON includes the timestamps and speaker information (if diarization is enabled). Your application handles this by writing the JSON directly to the transcription file. If you need plain text output, set timestamp granularities tonone.
In TUI Mode:
In Command Line Mode:
# Enable diarization (default)
Rscript meeting_agent.R --record
# Disable diarization
Rscript meeting_agent.R --no-diarize --record
# Set timestamp granularities
Rscript meeting_agent.R --timestamp-granularities word --record
# Disable timestamps (plain text output)
Rscript meeting_agent.R --timestamp-granularities none --record
Each workflow run creates a new timestamped directory (format: YYYY-MM-DD_HH-MM-SS) under the configured output directory or current working directory. Output files are also named with the date and timestamp for easy identification:
recording.wav: Audio recording (if recorded live)transcription.txt: Raw transcriptionmeeting_notes.md: Structured meeting notes in Markdown formatOn first run, the script creates a config.json file to store your API key and settings. This file is automatically loaded on subsequent runs.
The meeting notes template should be a Markdown file with section headers. The AI will fill in content following the template structure. A default template meeting_blueprint.md is expected in the current directory.
This project is open-source and available for use under the GPLv3 License.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。