bristlenose 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bristlenose-0.1.0/.env.example +28 -0
- bristlenose-0.1.0/.gitignore +26 -0
- bristlenose-0.1.0/CONTRIBUTING.md +31 -0
- bristlenose-0.1.0/LICENSE +661 -0
- bristlenose-0.1.0/PKG-INFO +28 -0
- bristlenose-0.1.0/README.md +137 -0
- bristlenose-0.1.0/bristlenose/__init__.py +3 -0
- bristlenose-0.1.0/bristlenose/__main__.py +5 -0
- bristlenose-0.1.0/bristlenose/cli.py +210 -0
- bristlenose-0.1.0/bristlenose/config.py +87 -0
- bristlenose-0.1.0/bristlenose/llm/__init__.py +0 -0
- bristlenose-0.1.0/bristlenose/llm/client.py +166 -0
- bristlenose-0.1.0/bristlenose/llm/prompts.py +181 -0
- bristlenose-0.1.0/bristlenose/llm/structured.py +163 -0
- bristlenose-0.1.0/bristlenose/models.py +321 -0
- bristlenose-0.1.0/bristlenose/pipeline.py +495 -0
- bristlenose-0.1.0/bristlenose/stages/__init__.py +0 -0
- bristlenose-0.1.0/bristlenose/stages/extract_audio.py +87 -0
- bristlenose-0.1.0/bristlenose/stages/identify_speakers.py +216 -0
- bristlenose-0.1.0/bristlenose/stages/ingest.py +172 -0
- bristlenose-0.1.0/bristlenose/stages/merge_transcript.py +144 -0
- bristlenose-0.1.0/bristlenose/stages/parse_docx.py +192 -0
- bristlenose-0.1.0/bristlenose/stages/parse_subtitles.py +173 -0
- bristlenose-0.1.0/bristlenose/stages/pii_removal.py +318 -0
- bristlenose-0.1.0/bristlenose/stages/quote_clustering.py +118 -0
- bristlenose-0.1.0/bristlenose/stages/quote_extraction.py +178 -0
- bristlenose-0.1.0/bristlenose/stages/render_html.py +1508 -0
- bristlenose-0.1.0/bristlenose/stages/render_output.py +326 -0
- bristlenose-0.1.0/bristlenose/stages/thematic_grouping.py +143 -0
- bristlenose-0.1.0/bristlenose/stages/topic_segmentation.py +120 -0
- bristlenose-0.1.0/bristlenose/stages/transcribe.py +317 -0
- bristlenose-0.1.0/bristlenose/utils/__init__.py +0 -0
- bristlenose-0.1.0/bristlenose/utils/audio.py +106 -0
- bristlenose-0.1.0/bristlenose/utils/hardware.py +226 -0
- bristlenose-0.1.0/bristlenose/utils/text.py +115 -0
- bristlenose-0.1.0/bristlenose/utils/timecodes.py +70 -0
- bristlenose-0.1.0/pyproject.toml +60 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Bristlenose Configuration
|
|
2
|
+
# Copy this file to .env and fill in your values
|
|
3
|
+
|
|
4
|
+
# LLM Provider: "anthropic" or "openai"
|
|
5
|
+
BRISTLENOSE_LLM_PROVIDER=anthropic
|
|
6
|
+
|
|
7
|
+
# API Keys (set the one matching your provider)
|
|
8
|
+
BRISTLENOSE_ANTHROPIC_API_KEY=
|
|
9
|
+
BRISTLENOSE_OPENAI_API_KEY=
|
|
10
|
+
|
|
11
|
+
# LLM Model (default: claude-sonnet-4-20250514)
|
|
12
|
+
# BRISTLENOSE_LLM_MODEL=claude-sonnet-4-20250514
|
|
13
|
+
|
|
14
|
+
# Whisper transcription backend: auto, mlx (Apple Silicon GPU), faster-whisper (CUDA/CPU)
|
|
15
|
+
# "auto" detects your hardware and picks the best option
|
|
16
|
+
# BRISTLENOSE_WHISPER_BACKEND=auto
|
|
17
|
+
|
|
18
|
+
# Whisper model size: tiny, base, small, medium, large-v3, large-v3-turbo
|
|
19
|
+
# BRISTLENOSE_WHISPER_MODEL=large-v3-turbo
|
|
20
|
+
|
|
21
|
+
# Whisper language (default: en)
|
|
22
|
+
# BRISTLENOSE_WHISPER_LANGUAGE=en
|
|
23
|
+
|
|
24
|
+
# Whisper device: cpu, cuda, auto (faster-whisper only, ignored when using mlx)
|
|
25
|
+
# BRISTLENOSE_WHISPER_DEVICE=auto
|
|
26
|
+
|
|
27
|
+
# Whisper compute type: int8, float16, float32 (faster-whisper only)
|
|
28
|
+
# BRISTLENOSE_WHISPER_COMPUTE_TYPE=int8
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*$py.class
|
|
4
|
+
*.egg-info/
|
|
5
|
+
dist/
|
|
6
|
+
build/
|
|
7
|
+
.eggs/
|
|
8
|
+
*.egg
|
|
9
|
+
.venv/
|
|
10
|
+
venv/
|
|
11
|
+
env/
|
|
12
|
+
.env
|
|
13
|
+
*.wav
|
|
14
|
+
*.mp3
|
|
15
|
+
*.mp4
|
|
16
|
+
*.mov
|
|
17
|
+
*.avi
|
|
18
|
+
*.mkv
|
|
19
|
+
output/
|
|
20
|
+
.mypy_cache/
|
|
21
|
+
.pytest_cache/
|
|
22
|
+
.ruff_cache/
|
|
23
|
+
.coverage
|
|
24
|
+
htmlcov/
|
|
25
|
+
.DS_Store
|
|
26
|
+
trial-runs/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Contributing to Bristlenose
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in contributing!
|
|
4
|
+
|
|
5
|
+
## Contributor Licence Agreement
|
|
6
|
+
|
|
7
|
+
By submitting a pull request or patch to this project, you agree that:
|
|
8
|
+
|
|
9
|
+
1. You have the right to assign the contribution.
|
|
10
|
+
2. You grant the project maintainer (Cassio) a perpetual, worldwide,
|
|
11
|
+
irrevocable, royalty-free licence to use, modify, sublicence, and
|
|
12
|
+
relicence your contribution — including under licences other than
|
|
13
|
+
AGPL-3.0.
|
|
14
|
+
3. Your contribution is provided as-is, without warranty.
|
|
15
|
+
|
|
16
|
+
This allows the maintainer to offer commercial or dual-licence versions
|
|
17
|
+
of Bristlenose in the future without needing to contact every contributor
|
|
18
|
+
individually.
|
|
19
|
+
|
|
20
|
+
## How to contribute
|
|
21
|
+
|
|
22
|
+
1. Fork the repo and create a branch.
|
|
23
|
+
2. Make your changes.
|
|
24
|
+
3. Run `ruff check` and `pytest` before submitting.
|
|
25
|
+
4. Open a pull request with a clear description of what and why.
|
|
26
|
+
|
|
27
|
+
## Code style
|
|
28
|
+
|
|
29
|
+
- Python 3.10+
|
|
30
|
+
- Ruff for linting (config in `pyproject.toml`)
|
|
31
|
+
- Type hints everywhere
|