Skip to content

cli: add --stdin-mode for continuous file processing#3637

Open
tsubome wants to merge 3 commits intoggml-org:masterfrom
tsubome:feature/stdin-mode
Open

cli: add --stdin-mode for continuous file processing#3637
tsubome wants to merge 3 commits intoggml-org:masterfrom
tsubome:feature/stdin-mode

Conversation

@tsubome
Copy link
Copy Markdown

@tsubome tsubome commented Jan 31, 2026

Summary

Add --stdin-mode option to whisper-cli that allows loading the model once and processing multiple audio files by reading paths from stdin.

Motivation

Usage

whisper-cli --stdin-mode --model model.bin --language ja

Then send file paths via stdin (one per line). Results are output as JSON:

{"status":"ready"}
{"file":"path/to/audio.wav","status":"success","text":"transcription result"}
{"file":"path/to/audio.wav","status":"error","error":"error message"}
{"status":"exit"}

Type exit or quit to terminate, or send EOF.

Changes

  • Add stdin_mode parameter to whisper_params
  • Add --stdin-mode command line option
  • Add escape_json_string() helper for JSON output
  • Add stdin processing loop with JSON output format

tsubome and others added 2 commits February 1, 2026 00:59
Add --stdin-mode option that allows whisper-cli to load the model once
and process multiple audio files by reading paths from stdin.

This is useful for:
- Batch processing without model reload overhead
- Workaround for whisper-server handle leak issues (ggml-org#3358)
- Integration with external programs via stdin/stdout

Output format (JSON, one per line):
  {"status":"ready"}
  {"file":"path","status":"success","text":"..."}
  {"file":"path","status":"error","error":"..."}
  {"status":"exit"}

Usage:
  whisper-cli --stdin-mode --model model.bin --language ja
  # sends file paths via stdin, receives JSON results via stdout
When whisper-cli is invoked via subprocess with piped stdout,
the C runtime defaults to full buffering, causing segments to
appear in batches. Adding setvbuf(stdout, NULL, _IONBF, 0)
ensures each segment is flushed immediately.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@tsubome tsubome force-pushed the feature/stdin-mode branch from 22dff45 to c518eca Compare February 7, 2026 17:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant