GitHub Hot Board

GitHub Hot Board · 저장소 아카이브

linuxmatters/jive-vocals

Raw microphone recordings into broadcast-ready audio in one command. No configuration, and no surprises (소개는 저장소 자체 문서에서 왔습니다.)

데이터 기준 October 25linuxmatters

최고 순위

#159

과소평가 · 활발한데 무명

100

누적 스타

12

포크 수

1

최근 30일 기록 일수

프로젝트 상태라이선스: GPL-3.0최근 push: October 21열린 이슈(PR 포함): 9

2026-10-25부터 수집. 미확인 = 아직 미수집

README에 뱃지를 붙여보세요 · linuxmatters/jive-vocals[![README에 뱃지를 붙여보세요](https://git.vaiox.xyz/api/badge/linuxmatters/jive-vocals.svg)](https://git.vaiox.xyz/ko/repo/linuxmatters/jive-vocals)
<a href="https://git.vaiox.xyz/ko/repo/linuxmatters/jive-vocals"><img src="https://git.vaiox.xyz/api/badge/linuxmatters/jive-vocals.svg" alt="README에 뱃지를 붙여보세요" height="20"></a>

프로젝트 문서

Jive Vocals 🗣️

Formerly known as Jivetalking.

Raw microphone recordings into broadcast-ready audio in one command. No configuration, and no surprises.

jive-vocals LMP-81s-mark.flac LMP-81s-martin.flac LMP-81s-popey.flac

Your files emerge at -16 LUFS / -1 dBTP, the loudness standard for spoken-word podcasts, with room rumble, background hiss, clicks, and harsh sibilance sorted automatically. Multiple files process in parallel, each with its own TUI progress row. Everything needed is embedded in the binary. This is not how audio tools usually work, and that is rather the point.

Example Output

Jive Vocals Demo

The Typical Workflow

Creator workflow from separate recordings to a finished podcast

Open the HTML source.

Each presenter records a separate FLAC file. Jive Vocals processes the files to matched -16 LUFS levels. Import them into Audacity to trim and edit, then export the finished episode.


Installation

Single binary. Zero external dependencies. FFmpeg is embedded via ffmpeg-statigo.

bin (Recommended)

Install with bin, a GitHub-aware binary manager:

bin install github.com/linuxmatters/jive-vocals

This picks the correct platform and architecture, drops the binary into ~/.local/bin/, and handles updates via bin update. No root required, no path wrangling.

Manual Download

Fetch from the releases page:

# Linux amd64
chmod +x jive-vocals-linux-amd64
mv jive-vocals-linux-amd64 ~/.local/bin/jive-vocals

# Linux arm64
chmod +x jive-vocals-linux-arm64
mv jive-vocals-linux-arm64 ~/.local/bin/jive-vocals

# macOS Intel
chmod +x jive-vocals-darwin-amd64
mv jive-vocals-darwin-amd64 ~/.local/bin/jive-vocals

# macOS Apple Silicon
chmod +x jive-vocals-darwin-arm64
mv jive-vocals-darwin-arm64 ~/.local/bin/jive-vocals

The Four-Pass Pipeline

Jive Vocals analyses each recording before it selects the settings that benefit from measurement. Measured speech RMS sets the compressor threshold, and measured sibilance controls whether the de-esser engages and how strongly it acts. Other filter settings stay fixed where one value is right for spoken word.

Jive Vocals four-pass pipeline from analysis to normalised output

Open the HTML source.

Four passes carry a raw recording to a broadcast-ready master:

  1. Analyse: measure loudness, noise floor, and speech; detect the room tone.
  2. Process: run the adapted filter chain.
  3. Measure: read the processed signal back so normalisation has accurate numbers.
  4. Normalise: set the final loudness to -16 LUFS / -1 dBTP.

The Pass 2 filter chain has each stage hand the next a cleaner signal:

Pass 2 filter chain from downmix through cleanup, dynamics, analysis, and resampling

Open the HTML source.

For the full walkthrough, see docs/Pipeline.md: what each stage does, why it sits where it does, how the adaptive tuning works, and how normalisation reaches -16 LUFS honestly, with a diagram.


Quality Ratings

When a file finishes, the completion box shows two star ratings: Recording (your source capture, the one that varies) and Processed (the output against the -16 LUFS target, almost always five stars). The pair tells the story: a two-star capture taken to a five-star master.

Jive Vocals 🗣️

╭──────────────────────────────────────────╮
│ Processing 3 files, 3 complete, 0 failed │
╰──────────────────────────────────────────╯

 🗸 LMP-83-mark-LUFS-16-processed.flac
╭──────────────────────────────────────────╮
│ Time        02:31  ·  ⚡ 19.0×           │
│ Loudness    -35.2 → -16.1 LUFS  Δ +19.1  │
│ True peak    -6.2 →  -1.7 ㏈TP  Δ  +4.5  │
│ Dynamics     15.0 →  13.3 LU    Δ  -1.7  │
│ Noise floor < -96 ㏈                     │
│ Recording   ★★★★☆  Great                 │
│ Processed   ★★★★★  Excellent             │
╰──────────────────────────────────────────╯
 🗸 LMP-83-martin-LUFS-16-processed.flac
╭──────────────────────────────────────────╮
│ Time        02:38  ·  ⚡ 18.1×           │
│ Loudness    -27.8 → -16.0 LUFS  Δ +11.8  │
│ True peak    -4.5 →  -1.8 ㏈TP  Δ  +2.7  │
│ Dynamics     14.7 →  12.0 LU    Δ  -2.7  │
│ Noise floor -91 ㏈                       │
│ Recording   ★★★★☆  Great                 │
│ Processed   ★★★★★  Excellent             │
╰──────────────────────────────────────────╯
 🗸 LMP-83-popey-LUFS-16-processed.flac
╭──────────────────────────────────────────╮
│ Time        02:43  ·  ⚡ 17.6×           │
│ Loudness    -29.8 → -16.0 LUFS  Δ +13.8  │
│ True peak    -0.1 →  -1.3 ㏈TP  Δ  -1.2  │
│ Dynamics     12.3 →   8.9 LU    Δ  -3.4  │
│ Noise floor -86 ㏈                       │
│ Recording   ★★☆☆☆  Fair                  │
│ Processed   ★★★★★  Excellent             │
╰──────────────────────────────────────────╯

See docs/Usage.md for the three axes behind the Recording score and what a low star is telling you to fix.


Usage

jive-vocals [flags] <files...>

Flags

Flag Description
-v, --version Show version and exit
-a, --analysis-only Run analysis only (Pass 1), display results, skip processing
-d, --debug Enable debug logging to jive-vocals-debug.log
--diagnostics Write extra diagnostic artefacts: before/after spectrogram PNGs plus .intervals.jsonl/.candidates.jsonl sidecars. Adds extra FFmpeg passes. Off by default

Examples

# Process multiple presenters in parallel (worker count tracks file count)
jive-vocals presenter1.flac presenter2.flac presenter3.flac

# Inspect recordings without processing
jive-vocals -a presenter1.flac presenter2.flac

# Debug a problematic recording
jive-vocals -d troublesome-recording.flac

# Process all FLAC files in directory
jive-vocals *.flac

# Emit before/after spectrograms and interval sidecars
jive-vocals --diagnostics presenter1.flac

Processing always writes a Markdown report next to each processed output. For example, recording-LUFS-16-processed.flac gets recording-LUFS-16-processed.md. The report is empirical: every measurement and the exact adapted filter parameters, with objective metric definitions and no quality verdicts. Analysis-only runs write <input>-analysis.md instead.

Diagnostics

--diagnostics writes before/after spectrogram PNGs and .intervals.jsonl / .candidates.jsonl sidecars beside the report, for sweeps and side-by-side comparison. It changes no DSP, so the processed audio is byte-identical with the flag on or off.

See docs/Usage.md for the spectrogram naming scheme and sidecar formats.

Analysis-Only Mode

Pass --analysis-only to run Pass 1 only. It writes <input>-analysis.md next to each input and shows the Recording stars plus a one-line gain verdict on screen, without producing any audio. Useful for checking a capture before you commit to a take.

See docs/Usage.md for what the report covers and how to read the gain-advice thermometer.


Development

Requires Go, Nix, and a tolerance for CGO.

# Enter development shell (FFmpeg dependencies provided)
nix develop

# Initialise submodules and download static FFmpeg libraries
just setup

# Build (never use go build directly - requires CGO + version injection)
just build

# Run tests
just test

# Install to ~/.local/bin
just install

The full source layout, architecture, and contribution standards live in AGENTS.md.

Tailor integration

The root justfile imports the managed Tailor commands with Go, CGO, and ffmpeg-statigo enabled in .tailor.yml. Use just build, just test, and just lint for quality checks. The build also writes the versioned root binary through just/project/build.sh, with the existing flags. Default tests remain hermetic. The optional testdata/justfile keeps audio integration tests and manual validation separate.

just lint checks without changing source and includes local govulncheck. Use just lint correct only to tidy modules and format source. The pinned GitHub Actions SARIF scan and specialised release builds remain unchanged. The root release recipe overrides the generic recipe and keeps unprefixed X.Y.Z tags.

Run just setup explicitly to update the ffmpeg-statigo submodule and download libraries. Quality commands never run setup. The Nix shell imports managed packages and hooks with the existing go_1_26 selection and native dependencies. .envrc watches the Nix fragments and keeps manual reloads. After review, include the new files in Git before normal flake use. Review and approve .envrc through the usual direnv process, then reload the development shell manually.

Design Documentation

현재 순위

  • 159

    과소평가 · 활발한데 무명

    100 스타 · 12 fork · 총 스타 수(오름차순)

    과소평가 →

최근 30일 추이

누적 스타 추이

순위 추이

같은 보드의 이웃 랭커 · 과소평가

비슷한 프로젝트 · 공유 토픽

← 랭킹으로