Files
transcriptor-ai/scripts/build-dist.sh
T
sttlab-tech 3525e6b8fb initial commit: live meeting transcription pipeline
Go orchestrator: spawns audiotee for capture (system audio + mic, two
tracks), segments with an energy-threshold VAD, transcribes each segment
via qwen-asr (subprocess per segment, vendored as a pinned git submodule
in third_party/qwen-asr), and serves the live transcript over SSE while
also writing it durably to a text file. Includes a glossary/prompt-leakage
guard (internal/asr/leak.go) that discards a segment if the model echoes
the biasing prompt instead of transcribing.

cmd/transcriptor-ai is the main orchestrator; cmd/transcript-tail is a
minimal terminal SSE client. See CLAUDE.md for the full architecture and
the reasoning behind each choice (Go over Python/Swift/Rust, SSE over
WebSocket, why the VAD is a hand-rolled heuristic, etc).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-09 13:18:57 +02:00

32 lines
877 B
Bash
Executable File

#!/bin/bash
# Builds transcriptor-ai and its qwen_asr dependency into dist/, ready to be
# embedded by transcriptor-ui's Xcode build phase. Models are NOT part of
# this — those are fetched at runtime by the app (see CLAUDE.md), only
# binaries are built/staged here.
#
# Usage: scripts/build-dist.sh
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$REPO_ROOT"
DIST_DIR="$REPO_ROOT/dist"
QWEN_ASR_DIR="$REPO_ROOT/third_party/qwen-asr"
echo "Ensuring qwen-asr submodule is present (pinned commit)..."
git submodule update --init --recursive third_party/qwen-asr
echo "Building qwen_asr..."
make -C "$QWEN_ASR_DIR" blas
echo "Building transcriptor-ai..."
mkdir -p "$DIST_DIR"
go build -o "$DIST_DIR/transcriptor-ai" ./cmd/transcriptor-ai
cp "$QWEN_ASR_DIR/qwen_asr" "$DIST_DIR/qwen_asr"
echo ""
echo "dist/ ready:"
ls -la "$DIST_DIR"