{"id":51536691,"url":"https://github.com/jeiel85/pulpit-ink-desktop","last_synced_at":"2026-07-09T09:01:26.212Z","repository":{"id":359013191,"uuid":"1243700300","full_name":"jeiel85/pulpit-ink-desktop","owner":"jeiel85","description":"Local-first Windows desktop app for transcribing sermons, lectures, and meetings with faster-whisper.","archived":false,"fork":false,"pushed_at":"2026-05-23T13:47:46.000Z","size":6238,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T15:25:25.008Z","etag":null,"topics":["desktop-app","faster-whisper","ffmpeg","local-first","offline","pyside6","python","sermon","speech-to-text","sqlite","stt","transcription","whisper","windows"],"latest_commit_sha":null,"homepage":"https://jeiel85.github.io/pulpit-ink-desktop/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeiel85.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/roadmap-tasks.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-19T15:24:44.000Z","updated_at":"2026-05-23T13:47:49.000Z","dependencies_parsed_at":"2026-05-20T05:01:12.791Z","dependency_job_id":null,"html_url":"https://github.com/jeiel85/pulpit-ink-desktop","commit_stats":null,"previous_names":["jeiel85/sermon-script","jeiel85/pulpitink","jeiel85/pulpit-ink","jeiel85/pulpit-ink-desktop"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/jeiel85/pulpit-ink-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fpulpit-ink-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fpulpit-ink-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fpulpit-ink-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fpulpit-ink-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeiel85","download_url":"https://codeload.github.com/jeiel85/pulpit-ink-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fpulpit-ink-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35293217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop-app","faster-whisper","ffmpeg","local-first","offline","pyside6","python","sermon","speech-to-text","sqlite","stt","transcription","whisper","windows"],"created_at":"2026-07-09T09:01:25.051Z","updated_at":"2026-07-09T09:01:26.204Z","avatar_url":"https://github.com/jeiel85.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PulpitInk\n\n설교, 강의, 회의 녹음 파일을 로컬 PC에서 전처리하고 텍스트로 변환한 뒤 검수, 편집, 출력까지 지원하는 Windows 데스크톱 STT 도구입니다.\n\n[![Test](https://github.com/jeiel85/pulpit-ink-desktop/actions/workflows/test.yml/badge.svg)](https://github.com/jeiel85/pulpit-ink-desktop/actions/workflows/test.yml)\n[![Build Windows Portable](https://github.com/jeiel85/pulpit-ink-desktop/actions/workflows/build-windows.yml/badge.svg)](https://github.com/jeiel85/pulpit-ink-desktop/actions/workflows/build-windows.yml)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](LICENSE)\n[![Python 3.11+](https://img.shields.io/badge/Python-3.11%2B-3776AB.svg)](pyproject.toml)\n\n- 공식 랜딩 페이지: \u003chttps://jeiel85.github.io/pulpit-ink-desktop/\u003e\n- 릴리즈 다운로드: \u003chttps://github.com/jeiel85/pulpit-ink-desktop/releases\u003e\n- 사용자 가이드: [docs/user-guide.md](docs/user-guide.md)\n\n## 개요\n\nPulpitInk는 긴 한국어 설교 녹음처럼 검수가 필요한 STT 작업을 로컬 우선 방식으로 처리합니다. 오디오와 변환 텍스트는 기본적으로 외부 서버로 전송하지 않으며, 원본 오디오와 STT 원문(`raw_text`)을 보존합니다. 사용자가 고친 내용은 별도의 `edited_text`로 저장됩니다.\n\n현재 입력 범위는 로컬 파일과 사용자가 권리를 확인한 YouTube URL입니다. YouTube 입력은 저작권 고지 동의 후 `yt-dlp`로 로컬 임시 오디오를 만든 뒤 기존 STT 파이프라인에 전달합니다. 일반 온라인 다운로드, 클라우드 동기화, 실시간 녹음은 v1.0 범위에 포함되지 않습니다.\n\n## 주요 기능\n\n| 영역 | 내용 |\n| --- | --- |\n| 입력 | `mp3`, `wav`, `m4a`, `aac`, `flac`, `ogg`, `mp4` 등 로컬 파일, YouTube URL(고지 동의 후) |\n| STT | faster-whisper 기반 변환, `tiny`부터 `large-v3`까지 모델 선택 |\n| 전처리 | FFmpeg 16kHz mono WAV 변환, `none`, `stt_basic`, `sermon`, `noisy` 프리셋 |\n| GUI | PySide6 데스크톱 앱, 파일 추가, 진행 로그, 최근 작업, 편집기 탭 |\n| CLI | 변환, 환경 점검, 작업 조회/export, 설정, 모델 캐시 확인 |\n| 편집 | 세그먼트별 타임스탬프/텍스트 편집, 검색, 치환, 확인 필요 표시 |\n| 후처리 | 성경 구절 정규화, 사용자 사전, 원문 대조, 한국어 Jamo fuzzy 교정 후보 |\n| 화자 | 무음구간 갭 기반 Heuristic 화자 태그와 편집기 내 화자 열 수정 |\n| 출력 | TXT, JSON, Markdown, SRT, VTT, CSV |\n| 저장 | SQLite 기반 작업, 세그먼트, export, 원문 대조, 교정 후보 기록 |\n| 배포 | PyInstaller Windows Portable ZIP, 태그 기반 GitHub Release 자동화 |\n\n## 설치\n\n### 요구 사항\n\n- Windows 10/11 권장\n- Python 3.11 이상\n- FFmpeg (`ffmpeg`, `ffprobe`가 PATH에서 실행 가능해야 함)\n\n### 소스 설치\n\n```powershell\ngit clone https://github.com/jeiel85/pulpit-ink-desktop.git\ncd pulpit-ink-desktop\npython -m venv .venv\n.\\.venv\\Scripts\\Activate.ps1\npip install -e \".[gui,reference,dev]\"\n```\n\nExtra 설명:\n\n- `gui`: PySide6 GUI 실행에 필요\n- `reference`: 원문 대조 품질 향상용 rapidfuzz 설치\n- `dev`: pytest, ruff 등 개발/검증 도구 설치\n\n### Portable ZIP\n\n릴리즈 페이지에서 `PulpitInk_Portable_\u003cversion\u003e.zip`을 받을 수 있습니다. FFmpeg와 STT 모델은 기본 번들에 포함되지 않으므로 사용 환경에서 별도로 준비해야 합니다.\n\n## 사용\n\n### 환경 점검\n\n```powershell\npulpit-ink doctor\n```\n\n### GUI 실행\n\n```powershell\npython -m pulpit_ink.app.main\n```\n\n파일을 추가하고 언어, 모델, 전처리 프리셋, 출력 폴더를 선택한 뒤 변환을 시작합니다. 변환은 worker thread에서 실행되어 UI가 멈추지 않습니다.\n\n### CLI 변환\n\n```powershell\npulpit-ink transcribe sermon.mp3 --language ko --model small --preset sermon `\n  --format txt,json,md,srt,vtt,csv --output .\\exports\n```\n\n원문 대조와 사용자 사전:\n\n```powershell\npulpit-ink transcribe sermon.mp3 --reference sermon.md --user-dict my-dict.json\n```\n\n교정 후보 확인/적용/무시:\n\n```powershell\npulpit-ink corrections list \u003cjob-id\u003e\npulpit-ink corrections apply \u003csuggestion-id\u003e\npulpit-ink corrections ignore \u003csuggestion-id\u003e\n```\n\n## 데이터 저장 위치\n\nWindows 기본 위치:\n\n- DB / 설정 / 모델 캐시: `%LOCALAPPDATA%\\PulpitInk\\PulpitInk\\`\n- 전처리 캐시: 작업 디렉터리 또는 `--cache-root` 아래 `cache/jobs/\u003cjob_id\u003e/`\n- DB 경로 확인: `pulpit-ink db-path`\n\n데이터 원칙:\n\n- 원본 오디오 파일은 수정하지 않습니다.\n- `raw_text`는 덮어쓰지 않습니다.\n- 사용자 편집은 `edited_text`에 저장합니다.\n- 모델 파일, 큰 바이너리, 개인정보성 오디오 파일은 저장소에 커밋하지 않습니다.\n\n## 개발\n\n자주 쓰는 검증 명령:\n\n```powershell\npython -m ruff check .\npython -m pytest\npython -m pulpit_ink.cli.main doctor\n```\n\nWindows Portable ZIP 로컬 빌드:\n\n```powershell\n.\\scripts\\build_windows.ps1\n```\n\n릴리즈는 `v*` 태그 push로 트리거됩니다. GitHub Actions가 Portable ZIP과 `SHA256SUMS.txt`를 만들고 GitHub Release에 첨부합니다.\n\n## 프로젝트 구조\n\n```text\nsrc/pulpit_ink/\n  app/              GUI 진입점\n  cli/              Typer CLI\n  core/             오디오, STT, export, 후처리, 원문 대조 로직\n  services/         설정, 모델, 변환 orchestration\n  storage/          SQLite DB와 repository 계층\n  ui/               PySide6 화면과 worker\ntests/              단위/회귀 테스트\ndocs/               제품 문서, 사용자 가이드, GitHub Pages 랜딩\nscripts/            Windows 빌드/패키징 스크립트\n```\n\n## v1.0 범위 제외\n\n- 클라우드 동기화 / 외부 API 송신\n- 일반 온라인 다운로드 / DRM 또는 접근 제한 우회\n- 실시간 마이크 녹음\n- 자동 요약\n- 자동 업데이트 설치\n\n## 문서\n\n- [사용자 가이드](docs/user-guide.md)\n- [제품 명세](docs/product-spec.md)\n- [알려진 제한사항](docs/known-limitations.md)\n- [릴리즈 체크리스트](docs/release/release-checklist.md)\n- [로드맵 작업 목록](docs/roadmap-tasks.md)\n- [시스템 아키텍처](docs/architecture/system-architecture.md)\n- [의사결정 기록](docs/decision-log.md)\n\n## 라이선스와 보안\n\n- 라이선스: Apache-2.0 ([LICENSE](LICENSE))\n- 외부 의존성 고지: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)\n- 보안 신고: [SECURITY.md](SECURITY.md)\n- 기여 가이드: [CONTRIBUTING.md](CONTRIBUTING.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeiel85%2Fpulpit-ink-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeiel85%2Fpulpit-ink-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeiel85%2Fpulpit-ink-desktop/lists"}