sonote
Beyond Transcription, Toward Meeting Intelligence.
Real-time Korean STT engine built for AI agents and professional meetings.
Documentation · Getting Started · Research · Issues
Demo
Installation
pip install sonote
기타 설치 방법
# pipx (격리 설치)
pipx install sonote
# 소스에서 설치
git clone https://github.com/tellang/sonote && cd sonote
uv sync
[!NOTE] ffmpeg 필수:
choco install ffmpeg(Windows) /brew install ffmpeg(macOS) 화자 분리:pip install sonote[diarize]+HF_TOKEN환경변수
Quick Start
# 회의 실시간 전사 (Viewer: http://localhost:8000)
sonote meeting
# YouTube 라이브 올인원 (스캔 → 병렬 다운 → 변환 → 병합)
sonote auto <VIDEO_URL>
# 로컬 오디오 변환
sonote transcribe audio.wav
Commands
| Command | Description |
|---|---|
sonote meeting |
마이크 → 화자 분리 → SSE 자막 + 파일 저장 |
sonote auto <URL> |
YouTube 올인원 (BGM 자동 분류, 병렬 다운로드, 변환, 병합) |
sonote live <URL> |
YouTube 연속 실시간 변환 |
sonote transcribe <FILE> |
로컬 오디오/영상 변환 |
sonote detect <URL> |
BGM↔음성 경계 탐색 |
sonote download <URL> |
YouTube 오디오 다운로드 |
주요 옵션
# 긴 파일 청크 분할
sonote transcribe long.wav --chunk-minutes 10
# SRT 자막 출력
sonote transcribe audio.wav --fmt srt
# 기존 스크립트에 이어붙이기
sonote auto "URL" --resume transcript.txt
# 마이크 장치 선택
sonote meeting --list-devices
sonote meeting --device 1
# 화자 분리 비활성화
sonote meeting --no-diarize
Key Features
- Zero-Latency Tracking — 마이크 입력과 YouTube 라이브를 최소 지연으로 실시간 추적
- Intelligent Diarization — 미등록 화자 임베딩 추적, 5개+ 세그먼트 누적 시 자동 등록 후보 마킹
- Professional Viewer — 단일 HTML 웹 인터페이스, 다크/라이트 모드, 실시간 검색
- AI-Driven Refinement — LLM 연동 회의 요약 및 스크립트 교정 (Codex STT + Gemini 요약)
- Real-time API — SSE + WebSocket 양방향 통신, 자동 재연결, 세션별 검색 API
Performance
| Model | RTF (Speed) | CER (Accuracy) | VRAM |
|---|---|---|---|
| large-v3-turbo (default) | < 0.05 | ~16.4% | ~3.5 GB |
| large-v3 | ~0.12 | ~11.2% | ~6.0 GB |
| small | < 0.02 | ~22.8% | ~1.5 GB |
[!TIP] NVIDIA RTX 4070+ 환경에서 CUDA float16 최적화. RTF 0.05 미만으로 실시간 이상 속도.
API & WebSocket
Search API
# 키워드 검색
curl "http://127.0.0.1:8000/api/sessions/{session_id}/search?query=회의"
# 화자 + 시간 범위 필터
curl "...?query=결정&speaker=김팀장&time_start=300&time_end=1200"
# 정규식 검색
curl "...?query=일정|마감®ex=true"
WebSocket
WS /ws/transcribe — 전사/교정/세션 이벤트 양방향 통신. SSE 폴백, 30초 하트비트, 자동 재연결.
Speaker Auto-Registration
| Endpoint | Method | Description |
|---|---|---|
/api/speakers/unknown |
GET | 미등록 화자 목록 |
/api/speakers/auto-register |
POST | 미등록 화자 프로필 등록 |
/api/speakers/unknown/{id} |
DELETE | 미등록 화자 무시 |
Build & Benchmark
# Windows EXE 패키징
uv run python scripts/build.py --onefile
# 모델 벤치마크
uv run python scripts/benchmark_models.py --models small large-v3-turbo
Project Structure
src/
├── cli.py # CLI 진입점
├── server.py # FastAPI SSE + WebSocket
├── transcribe.py # Faster-Whisper 추론 코어
├── diarize.py # 화자 분리 (pyannote-audio)
├── download.py # YouTube 오디오 다운로드
├── continuous.py # 연속 실시간 변환
├── polish.py # LLM 후처리 (실시간 교정 + 종료 후 일괄)
└── whisper_worker.py # CUDA 격리 STT 워커
static/
└── viewer.html # 자막 뷰어 (단일 HTML)
Documentation
Full command references, architecture, and troubleshooting: User Guide
Copyright (c) 2025 Tellang Licensed under the MIT License.
Metadata
Release files for sonote 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sonote-2.1.0.tar.gz | 599.4 kB | Without provenance | Details for sonote-2.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sonote-2.1.0-py3-none-any.whl | Python 3 | none | any | Details for sonote-2.1.0-py3-none-any.whl |
Total release size: 1.1 MB
Release files / sonote-2.1.0.tar.gz
| Download URL | sonote-2.1.0.tar.gz |
|---|---|
| Size | 599.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
753466556b2f1090b6481e8963bd1af7783b21d0c5c48e658767f915527730ab
|
|
BLAKE2b-256 checksum How to use checksums |
876e37d56e0e28242286fe3859e98a8c77ce896cde56c5dc164013663df57753
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / sonote-2.1.0-py3-none-any.whl
| Download URL | sonote-2.1.0-py3-none-any.whl |
|---|---|
| Size | 550.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
070fe6a1b169fc36a99d73195cd935e2b837817c086d87996b2df38b71cc1097
|
|
BLAKE2b-256 checksum How to use checksums |
7a9712b865ae6c672938f7411b48b226d1a4799d0ed27fdb3159ae4f69ec93fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for sonote 2.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.