paraspeakrs 0.2.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.
- paraspeakrs-0.2.0/.gitignore +21 -0
- paraspeakrs-0.2.0/CHANGELOG.md +59 -0
- paraspeakrs-0.2.0/LICENSE +21 -0
- paraspeakrs-0.2.0/PKG-INFO +828 -0
- paraspeakrs-0.2.0/README.md +787 -0
- paraspeakrs-0.2.0/packages/speakrs-diar/LICENSE +21 -0
- paraspeakrs-0.2.0/packages/speakrs-diar/README.md +19 -0
- paraspeakrs-0.2.0/packages/speakrs-diar/pyproject.toml +36 -0
- paraspeakrs-0.2.0/pyproject.toml +80 -0
- paraspeakrs-0.2.0/src/paraspeakrs/__init__.py +13 -0
- paraspeakrs-0.2.0/src/paraspeakrs/api.py +69 -0
- paraspeakrs-0.2.0/src/paraspeakrs/asr.py +149 -0
- paraspeakrs-0.2.0/src/paraspeakrs/audio.py +184 -0
- paraspeakrs-0.2.0/src/paraspeakrs/cache.py +318 -0
- paraspeakrs-0.2.0/src/paraspeakrs/chunking.py +58 -0
- paraspeakrs-0.2.0/src/paraspeakrs/cli.py +271 -0
- paraspeakrs-0.2.0/src/paraspeakrs/config.py +198 -0
- paraspeakrs-0.2.0/src/paraspeakrs/diarization.py +188 -0
- paraspeakrs-0.2.0/src/paraspeakrs/embeddings.py +32 -0
- paraspeakrs-0.2.0/src/paraspeakrs/factory.py +70 -0
- paraspeakrs-0.2.0/src/paraspeakrs/labeling.py +393 -0
- paraspeakrs-0.2.0/src/paraspeakrs/mcp_server.py +119 -0
- paraspeakrs-0.2.0/src/paraspeakrs/mcp_store.py +139 -0
- paraspeakrs-0.2.0/src/paraspeakrs/merge.py +115 -0
- paraspeakrs-0.2.0/src/paraspeakrs/model_fetch.py +137 -0
- paraspeakrs-0.2.0/src/paraspeakrs/models.py +90 -0
- paraspeakrs-0.2.0/src/paraspeakrs/pipeline.py +257 -0
- paraspeakrs-0.2.0/src/paraspeakrs/snippets.py +40 -0
- paraspeakrs-0.2.0/src/paraspeakrs/storage.py +75 -0
- paraspeakrs-0.2.0/src/paraspeakrs/transcript_txt.py +139 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/__init__.py +47 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/app.py +56 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/browse.py +150 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/home.py +268 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/jobs.py +117 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/modals.py +118 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/player.py +43 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/screens.py +28 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/speakers.py +290 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/state.py +140 -0
- paraspeakrs-0.2.0/src/paraspeakrs/tui/voices.py +170 -0
- paraspeakrs-0.2.0/src/paraspeakrs/worker.py +66 -0
- paraspeakrs-0.2.0/tests/test_asr_words.py +45 -0
- paraspeakrs-0.2.0/tests/test_cache.py +257 -0
- paraspeakrs-0.2.0/tests/test_chunk_overlap.py +146 -0
- paraspeakrs-0.2.0/tests/test_chunking.py +23 -0
- paraspeakrs-0.2.0/tests/test_config.py +106 -0
- paraspeakrs-0.2.0/tests/test_install_paths.py +85 -0
- paraspeakrs-0.2.0/tests/test_labeling.py +580 -0
- paraspeakrs-0.2.0/tests/test_mcp_store.py +40 -0
- paraspeakrs-0.2.0/tests/test_merge.py +116 -0
- paraspeakrs-0.2.0/tests/test_model_fetch.py +130 -0
- paraspeakrs-0.2.0/tests/test_pipeline_timing.py +126 -0
- paraspeakrs-0.2.0/tests/test_snippets.py +47 -0
- paraspeakrs-0.2.0/tests/test_speakrs_diarizer.py +162 -0
- paraspeakrs-0.2.0/tests/test_storage.py +20 -0
- paraspeakrs-0.2.0/tests/test_transcript_txt.py +136 -0
- paraspeakrs-0.2.0/tests/test_tui_app.py +206 -0
- paraspeakrs-0.2.0/tests/test_tui_browser.py +44 -0
- paraspeakrs-0.2.0/tests/test_tui_state.py +114 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.pytest_cache/
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
.venv/
|
|
5
|
+
|
|
6
|
+
models/
|
|
7
|
+
checkpoints/
|
|
8
|
+
|
|
9
|
+
var/
|
|
10
|
+
test-audio
|
|
11
|
+
result
|
|
12
|
+
out
|
|
13
|
+
out_lavasr
|
|
14
|
+
out-clearvoice
|
|
15
|
+
deefilter_out
|
|
16
|
+
deepfilter_out
|
|
17
|
+
.code-review-graph
|
|
18
|
+
.vscode/PythonImportHelper-v2-Completion.json
|
|
19
|
+
|
|
20
|
+
dist/
|
|
21
|
+
packages/speakrs-diar/dist/
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `paraspeakrs` are documented here. The format follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow
|
|
5
|
+
[Semantic Versioning](https://semver.org/).
|
|
6
|
+
|
|
7
|
+
## [0.2.0] — 2026-09-18
|
|
8
|
+
|
|
9
|
+
Installable as a tool: `uv tool install paraspeakrs`.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- **Renamed** from `parakeet-int8-pyannote-service` to `paraspeakrs`, and the import
|
|
14
|
+
package from `parakeet_int8_pyannote_service` to `paraspeakrs`. The name now covers both
|
|
15
|
+
halves of the pipeline — Parakeet for ASR, speakrs for diarization — rather than naming
|
|
16
|
+
pyannote, which the project stopped depending on when speakrs became the default backend.
|
|
17
|
+
- **One command instead of three.** `parakeet-service`, `parakeet-tui` and `parakeet-mcp`
|
|
18
|
+
are replaced by `paraspeakrs` with `run`, `serve`, `label-dir`, `tui`, `mcp` and
|
|
19
|
+
`fetch-models` subcommands. The `tui` and `mcp` imports stay lazy so the core install
|
|
20
|
+
does not need their extras.
|
|
21
|
+
- **The ASR model and diarizer binary no longer default to paths relative to the working
|
|
22
|
+
directory.** Both defaulted into the checkout (`models/…`, `packages/speakrs-diar/…`),
|
|
23
|
+
so the tool only worked when launched from the repository root. The model now defaults
|
|
24
|
+
under the workspace directory, and the binary is looked up next to the interpreter, then
|
|
25
|
+
on `PATH`, then in a checkout — so a source checkout keeps working unchanged.
|
|
26
|
+
- `label-dir` now requires its directory argument. It used to default to `test-audio`,
|
|
27
|
+
which only means something inside the repository.
|
|
28
|
+
- Environment variable names are unchanged; existing `PARAKEET_*` and `SPEAKRS_*` setups
|
|
29
|
+
keep working, as does the workspace at
|
|
30
|
+
`~/.local/share/fast-speaker-aware-meeting-transcriber`.
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- **The ASR model downloads itself on first run** (~490 MB, from the sherpa-onnx GitHub
|
|
35
|
+
release — no Hugging Face account or token). `paraspeakrs fetch-models` pre-seeds it;
|
|
36
|
+
`PARAKEET_AUTO_DOWNLOAD=0` disables the implicit fetch. Downloads stage through a
|
|
37
|
+
temporary directory and are renamed into place, so an interrupted fetch cannot leave
|
|
38
|
+
behind something that looks like a working model.
|
|
39
|
+
- `PARAKEET_MODEL_URL` points the download at a mirror or internal proxy.
|
|
40
|
+
- Failures to obtain the model now explain the three ways around it — mirror, sideload,
|
|
41
|
+
or the OpenAI-compatible backend, which needs no local model at all.
|
|
42
|
+
- `paraspeakrs-speakrs`, a companion wheel carrying the speakrs diarization binary for
|
|
43
|
+
macOS arm64, so the default backend works without Rust, cargo or Homebrew. The binary
|
|
44
|
+
is built with `--features coreml,blas-static` and its gfortran runtime is vendored into
|
|
45
|
+
the wheel, so it depends only on macOS system frameworks.
|
|
46
|
+
- `paraspeakrs --version`.
|
|
47
|
+
- Packaging metadata for publication: license, authors, classifiers, project URLs, and a
|
|
48
|
+
tag-triggered PyPI workflow using trusted publishing.
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
|
|
52
|
+
- `rich` is imported by the TUI but was never declared as a dependency; it arrived only as
|
|
53
|
+
a transitive dependency of `textual`. It is now declared in the `tui` extra.
|
|
54
|
+
- `soundfile` was a required dependency but is imported nowhere in the package. Removed.
|
|
55
|
+
- `sherpa-onnx` was declared both as a core dependency and in an `asr` extra, with
|
|
56
|
+
different version floors, while every documented command passed `--extra asr`. The extra
|
|
57
|
+
is gone; the core dependency stands.
|
|
58
|
+
- `__version__` was hard-coded and had drifted behind the packaged version. It now reads
|
|
59
|
+
the installed distribution metadata.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Albert Groothedde
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|