listen — An audio file as timed words and voice measures — openbash

Any audio or video file on a mount, or a link: every word timed to the millisecond with its speaker and confidence, pauses, and the voice measured over time (loudness, pitch, brightness, harshness, jitter, shimmer, learned quality scores). Time series, never a summary.

listen

listen is a command on the openbash shell, reachable over HTTP, SSH and MCP with one key. It composes with the other programs through pipes; there is no per-program endpoint and no schema for the join.

listen /attachments/wb1/take-2.mp3 | head -4

start_ms	end_ms	speaker	confidence	duration_ms	f0_median_hz	level_peak_dbfs	sibilance_peak	text
31	192		0.588	161	107.6	-11.6	0.002	A
212	493		0.9	281	136.2	-7.7	0.5163	model
533	855		0.748	322	154.1	-8.9	0.0878	checker

help

listen: an audio file as measured time series.

USAGE
  listen FILE|URL [--speakers N] [--language CODE] [--hop MS] [--print TABLE]
  listen wait JOB_ID [--print TABLE]
  listen compare JOB_A JOB_B [--print words|voice|file|changed|json]

LISTEN
  FILE is an audio or video file on a mount (/attachments/<workbook>/…,
  /googledrive/…, /dropbox/…, /tmp/…) up to 200 MB, or a public http(s) link.
  Nothing is summarised or reworded: the answer is numbers to check.

  words     every word: start_ms, end_ms, speaker, the recogniser's
            confidence (0 to 1), duration, median pitch, peak level and peak
            sibilance over the word. Words it could not place in time
            (numerals, symbols) keep their text with null times, and a note
            says how many.
  turns     who speaks from when to when.
  gaps      every pause of 150 ms or more, and how loud the room is in it.
  frames    the voice every --hop ms (50 unless said): level (dBFS),
            momentary loudness (LUFS, every 100 ms), pitch (Hz, empty when
            unvoiced), voiced, spectral centroid (brightness), sibilance
            (share of energy 4 to 10 kHz: harshness), alpha ratio (1 to 5 kHz
            against 50 Hz to 1 kHz, in dB) and spectral flatness (noisiness).
  segments  each turn measured as a voice: median pitch, pitch range in
            semitones (monotone is small), jitter and shimmer (roughness),
            harmonics-to-noise ratio (breathiness or hoarseness is low),
            words per minute, loudness, and learned scores: naturalness MOS
            (1 to 5) and signal, background and overall MOS (1 to 5).
  mos       the learned scores per 10 s window, as a series.
  file      sample rate, channels, codec, duration, integrated loudness,
            sample peak, clipped fraction, noise floor, speech level, MOS.

  --print picks the table printed, tab-separated with a header; words is
  the default and json the whole answer. The whole answer is always written
  to /tmp/listen/<job>.json, to cut with jq, csv or awk.

  --speakers N when the number of speakers is known; --language CODE (en,
  hi, …) when the language is; both are found from the audio otherwise.

  Listening takes a while: about a minute for the first file, then a
  fraction of the audio's length. A command waits up to 80 seconds, then
  prints `listen wait JOB_ID`; run that until the answer comes. Nothing is
  listened to or billed twice.

COMPARE
  Two finished jobs of the same words (two takes, two voices, two settings),
  lined up word by word. Every delta is B minus A: each matched word's
  duration, pitch, peak level, sibilance and confidence; the voice measures
  (pitch, range, jitter, shimmer, HNR, pace, loudness) and the file's
  (loudness, peak, clipping, noise floor, MOS). Words that differ between
  the two are listed apart (--print changed). Free.

COSTS
  1.5 cents a minute of audio, to the second, and at least five minutes a
  file (7.5 cents): starting the listener costs about that much however short
  the file. The same file with the same settings again is a cached answer,
  free; so is compare.