Skip to main content

Lightweight capture-only subset of millet (formerly meetscribe-record): record dual-channel meeting audio (mic + system) with no transcription/diarization/summarization deps. Named after the Ottoman millet system. Part of the vezir ecosystem.

Project description

millet-record

Lightweight capture-only subset of millet (formerly meetscribe-record).

Records dual-channel meeting audio — your microphone on the left channel, system/remote audio on the right — into a single stereo WAV via PipeWire or PulseAudio + ffmpeg. Ships none of millet's transcription, diarization, summarization, or PDF dependencies; install footprint is ~30 MB instead of ~3 GB.

Full release history in CHANGELOG.md. Named after the Ottoman millet system. Part of the vezir ecosystem.

When to use which

Need Install
Just record audio (e.g., for vezir thin clients, or local archival) pip install millet-record
Record + transcribe + diarize + summarize + PDF pip install millet-pipeline (depends on millet-record)

Install

pip install millet-record

System deps (apt example):

sudo apt install ffmpeg pulseaudio-utils

CLI

millet check                   # verify prerequisites
millet devices                 # list audio sources
millet record                  # record dual-channel WAV; Ctrl+C to stop
millet archive                 # compress past WAV recordings to OGG/Opus
millet request-permissions     # macOS Sequoia 15+: trigger Microphone /
                               # System Audio Recording TCC prompts
                               # (Apple removed the manual '+' button in
                               # System Settings, so apps must request)

millet record writes to ~/millet-recordings/meeting-YYYYMMDD-HHMMSS/...wav unless -o is passed. See millet record --help for options.

When millet-pipeline is also installed, additional subcommands (transcribe, run, label, sync, gui, ...) become available under the same millet command via Click entry-points.

Legacy meet command

The pre-rename meet console script keeps working for two minor versions (until millet-record 0.6.0). It prints a deprecation warning on each invocation and forwards to the millet group. Set MILLET_SUPPRESS_DEPRECATION=1 to silence the warning during transition.

Architecture

millet-record exposes a stable package millet_record containing:

  • millet_record.capture — ffmpeg-backed dual-channel capture (RecordingSession, watchdog, drain buffer)
  • millet_record.audio — stereo channel reading + ffmpeg-based audio compression
  • millet_record.utils — formatting helpers (HH:MM:SS, file sizes)
  • millet_record.languages — language constants used by capture flow
  • millet_record.climillet console-script entry point

The legacy meet_record package name is still importable via a sys.modules alias + a meta-path finder, so existing from meet_record.X import … keeps working unchanged. Removed in millet-record 0.6.0.

millet-pipeline depends on this package and re-uses these modules, plus its own heavy modules (transcribe, label, voiceprint, summarize, sync, pdf, gui).

macOS (Apple Silicon)

pip install millet-record on macOS 14.4+ Apple Silicon ships a bundled meet-record-mac Swift sidecar that captures via Core Audio Process Tap + AVAudioEngine — no PulseAudio, no BlackHole, no extra install. millet record uses it by default.

Note: the Swift binary itself is still named meet-record-mac for now — renaming would require macOS code-signing bundle-path changes that aren't worth doing as part of the package rename. Tracked as a follow-up; doesn't affect end users.

First run prompts for Microphone and System Audio Recording permissions via the standard macOS TCC dialogs; both are required for full dual- channel capture (mic on left, system on right). See mac/README.md for the sidecar's CLI surface, level analysis recipes, and environment variables.

On macOS Sequoia 15+, Apple removed the manual + button from System Settings → Privacy → Microphone, so users can no longer add permissions before running the app. The millet request-permissions subcommand explicitly calls AVCaptureDevice.requestAccess(for: .audio) to trigger the TCC dialog. millet check will tell you which permission is missing and suggest running request-permissions.

Set MEET_RECORD_MAC=0 to force the legacy ffmpeg+PulseAudio path (diagnostic kill switch only — that path will fail on a stock macOS install because there is no PulseAudio device). Intel Macs and macOS < 14.4 are unsupported.

License

GPL-3.0-or-later, same as parent millet.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

millet_record-0.4.4.tar.gz (39.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

millet_record-0.4.4-py3-none-macosx_14_0_arm64.whl (125.4 kB view details)

Uploaded Python 3macOS 14.0+ ARM64

millet_record-0.4.4-py3-none-any.whl (125.4 kB view details)

Uploaded Python 3

File details

Details for the file millet_record-0.4.4.tar.gz.

File metadata

  • Download URL: millet_record-0.4.4.tar.gz
  • Upload date:
  • Size: 39.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for millet_record-0.4.4.tar.gz
Algorithm Hash digest
SHA256 07b8c3ad6aa05475e32e361a8141a77cd96be6c441afd4a50a63cfffe0d395b0
MD5 d67c4927347be4e450a13702e2c1ae5c
BLAKE2b-256 ec0408225a5d43122cec20ef75a51c5973906828f1356dce69ad0777f984c071

See more details on using hashes here.

Provenance

The following attestation bundles were made for millet_record-0.4.4.tar.gz:

Publisher: release.yml on pretyflaco/millet-record

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file millet_record-0.4.4-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for millet_record-0.4.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d4466e4ebcfde56d31a2c070319600bfd83b0825af7e9be8712263b1b592563e
MD5 20dec90823ee1ea409cc8d76c067f5d6
BLAKE2b-256 be6c64f36e609abcac2b5aa8d1fa66643f77a603dfce7c8d3088469cfc4e4887

See more details on using hashes here.

Provenance

The following attestation bundles were made for millet_record-0.4.4-py3-none-macosx_14_0_arm64.whl:

Publisher: release.yml on pretyflaco/millet-record

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file millet_record-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: millet_record-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 125.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for millet_record-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 15f935310dd78f565051af0fc71f44387a50582accf9a8914cae70f7052d867a
MD5 d4f70c2c59ae325528dd69f252a75804
BLAKE2b-256 af72e35bb788664e80a6b2a6b6ceaa39daf9e39a67c7bca2e8274b8d005f0ad4

See more details on using hashes here.

Provenance

The following attestation bundles were made for millet_record-0.4.4-py3-none-any.whl:

Publisher: release.yml on pretyflaco/millet-record

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page