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.
Files changed (60) hide show
  1. paraspeakrs-0.2.0/.gitignore +21 -0
  2. paraspeakrs-0.2.0/CHANGELOG.md +59 -0
  3. paraspeakrs-0.2.0/LICENSE +21 -0
  4. paraspeakrs-0.2.0/PKG-INFO +828 -0
  5. paraspeakrs-0.2.0/README.md +787 -0
  6. paraspeakrs-0.2.0/packages/speakrs-diar/LICENSE +21 -0
  7. paraspeakrs-0.2.0/packages/speakrs-diar/README.md +19 -0
  8. paraspeakrs-0.2.0/packages/speakrs-diar/pyproject.toml +36 -0
  9. paraspeakrs-0.2.0/pyproject.toml +80 -0
  10. paraspeakrs-0.2.0/src/paraspeakrs/__init__.py +13 -0
  11. paraspeakrs-0.2.0/src/paraspeakrs/api.py +69 -0
  12. paraspeakrs-0.2.0/src/paraspeakrs/asr.py +149 -0
  13. paraspeakrs-0.2.0/src/paraspeakrs/audio.py +184 -0
  14. paraspeakrs-0.2.0/src/paraspeakrs/cache.py +318 -0
  15. paraspeakrs-0.2.0/src/paraspeakrs/chunking.py +58 -0
  16. paraspeakrs-0.2.0/src/paraspeakrs/cli.py +271 -0
  17. paraspeakrs-0.2.0/src/paraspeakrs/config.py +198 -0
  18. paraspeakrs-0.2.0/src/paraspeakrs/diarization.py +188 -0
  19. paraspeakrs-0.2.0/src/paraspeakrs/embeddings.py +32 -0
  20. paraspeakrs-0.2.0/src/paraspeakrs/factory.py +70 -0
  21. paraspeakrs-0.2.0/src/paraspeakrs/labeling.py +393 -0
  22. paraspeakrs-0.2.0/src/paraspeakrs/mcp_server.py +119 -0
  23. paraspeakrs-0.2.0/src/paraspeakrs/mcp_store.py +139 -0
  24. paraspeakrs-0.2.0/src/paraspeakrs/merge.py +115 -0
  25. paraspeakrs-0.2.0/src/paraspeakrs/model_fetch.py +137 -0
  26. paraspeakrs-0.2.0/src/paraspeakrs/models.py +90 -0
  27. paraspeakrs-0.2.0/src/paraspeakrs/pipeline.py +257 -0
  28. paraspeakrs-0.2.0/src/paraspeakrs/snippets.py +40 -0
  29. paraspeakrs-0.2.0/src/paraspeakrs/storage.py +75 -0
  30. paraspeakrs-0.2.0/src/paraspeakrs/transcript_txt.py +139 -0
  31. paraspeakrs-0.2.0/src/paraspeakrs/tui/__init__.py +47 -0
  32. paraspeakrs-0.2.0/src/paraspeakrs/tui/app.py +56 -0
  33. paraspeakrs-0.2.0/src/paraspeakrs/tui/browse.py +150 -0
  34. paraspeakrs-0.2.0/src/paraspeakrs/tui/home.py +268 -0
  35. paraspeakrs-0.2.0/src/paraspeakrs/tui/jobs.py +117 -0
  36. paraspeakrs-0.2.0/src/paraspeakrs/tui/modals.py +118 -0
  37. paraspeakrs-0.2.0/src/paraspeakrs/tui/player.py +43 -0
  38. paraspeakrs-0.2.0/src/paraspeakrs/tui/screens.py +28 -0
  39. paraspeakrs-0.2.0/src/paraspeakrs/tui/speakers.py +290 -0
  40. paraspeakrs-0.2.0/src/paraspeakrs/tui/state.py +140 -0
  41. paraspeakrs-0.2.0/src/paraspeakrs/tui/voices.py +170 -0
  42. paraspeakrs-0.2.0/src/paraspeakrs/worker.py +66 -0
  43. paraspeakrs-0.2.0/tests/test_asr_words.py +45 -0
  44. paraspeakrs-0.2.0/tests/test_cache.py +257 -0
  45. paraspeakrs-0.2.0/tests/test_chunk_overlap.py +146 -0
  46. paraspeakrs-0.2.0/tests/test_chunking.py +23 -0
  47. paraspeakrs-0.2.0/tests/test_config.py +106 -0
  48. paraspeakrs-0.2.0/tests/test_install_paths.py +85 -0
  49. paraspeakrs-0.2.0/tests/test_labeling.py +580 -0
  50. paraspeakrs-0.2.0/tests/test_mcp_store.py +40 -0
  51. paraspeakrs-0.2.0/tests/test_merge.py +116 -0
  52. paraspeakrs-0.2.0/tests/test_model_fetch.py +130 -0
  53. paraspeakrs-0.2.0/tests/test_pipeline_timing.py +126 -0
  54. paraspeakrs-0.2.0/tests/test_snippets.py +47 -0
  55. paraspeakrs-0.2.0/tests/test_speakrs_diarizer.py +162 -0
  56. paraspeakrs-0.2.0/tests/test_storage.py +20 -0
  57. paraspeakrs-0.2.0/tests/test_transcript_txt.py +136 -0
  58. paraspeakrs-0.2.0/tests/test_tui_app.py +206 -0
  59. paraspeakrs-0.2.0/tests/test_tui_browser.py +44 -0
  60. 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.