Web launcher and Python API

The transcriptx console script only starts the Streamlit web application (same as python -m transcriptx.web). There are no transcriptx <subcommand> analysis commands.

Current launcher help:

usage: transcriptx [-h] [--host HOST] [--port PORT]

TranscriptX — launch the web interface

options:
  -h, --help   show this help message and exit
  --host HOST  Host to bind to (default: 127.0.0.1)
  --port PORT  Port to listen on (default: 8501)

For scripting and automation, use the Python API directly:

Analysis

from pathlib import Path

from transcriptx.app.models.requests import AnalysisRequest
from transcriptx.app.workflows.analysis import run_analysis
from transcriptx.io.managed_import_workflow import run_managed_import_workflow

imported = run_managed_import_workflow(
    Path("path/to/raw_transcript.json"),
    overwrite=False,
)

result = run_analysis(AnalysisRequest(
    transcript_path=imported.json_path,
    mode="quick",            # pipeline mode: "quick" or "full"
    analysis_preset="balanced",  # optional UI preset: quick | balanced | thorough | custom
    modules=["stats"],       # None = recommended modules
    include_unidentified_speakers=False,
))
print("success:", result.success)
print("errors:", result.errors)

Host library admit helper

python -m transcriptx.admit_originals admits raw files already under transcripts/originals/ (or another host dest) through admit_and_register. inbox-watch --admit invokes this helper. It is not a transcriptx <subcommand>.

python -m transcriptx.admit_originals \
  --dir /path/to/transcripts/originals \
  --transcripts-root /path/to/transcripts

Optional --auto-name / --auto-link (and --no-auto-*) run speaker auto-identify after each successful admit. --auto-name with no link flag defaults auto-link on. Identify failure does not fail admit. Operator guide: auto-identify.md.

Auto-identify speakers (host helper)

python -m transcriptx.identify_speakers fuses local voice match with in-transcript names and can write speaker-map names and/or auto_identified profile links. It is not a transcriptx <subcommand> and is distinct from the Python API identify_speakers below (that API is the Speaker Identification workspace rename path).

python -m transcriptx.identify_speakers --path FILE.json --auto-name --auto-link
python -m transcriptx.identify_speakers --all-unnamed --dry-run

Flags override {config_dir}/identify.json for that run. --dry-run prints decisions and writes nothing. Host USB path: inbox-watch --auto-name.

Speaker Identification

from transcriptx.app.models.requests import SpeakerIdentificationRequest
from transcriptx.app.workflows.speaker import identify_speakers
from pathlib import Path

result = identify_speakers(SpeakerIdentificationRequest(
    transcript_paths=[Path("transcript.json")],
    skip_rename=True,
))

Batch Analysis

from pathlib import Path

from transcriptx.app.models.requests import BatchAnalysisRequest
from transcriptx.app.workflows.batch import run_batch_analysis

result = run_batch_analysis(BatchAnalysisRequest(
    transcript_paths=[Path("a.json"), Path("b.json")],
    analysis_mode="quick",
    selected_modules=["stats"],
))
print(result.success, result.message, result.errors)

Starting the Web Interface Programmatically

transcriptx                     # default: http://127.0.0.1:8501
transcriptx --host 0.0.0.0     # bind all interfaces (Docker)
transcriptx --port 8502         # custom port
python -m transcriptx.web      # equivalent