python-voiceio 1.16.0__tar.gz → 1.16.1__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.
- {python_voiceio-1.16.0/python_voiceio.egg-info → python_voiceio-1.16.1}/PKG-INFO +1 -1
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/pyproject.toml +1 -1
- {python_voiceio-1.16.0 → python_voiceio-1.16.1/python_voiceio.egg-info}/PKG-INFO +1 -1
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_service.py +19 -0
- python_voiceio-1.16.1/voiceio/__init__.py +1 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/app.py +4 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/servicecmd.py +8 -2
- python_voiceio-1.16.0/voiceio/__init__.py +0 -1
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/LICENSE +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/README.md +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/python_voiceio.egg-info/SOURCES.txt +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/python_voiceio.egg-info/dependency_links.txt +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/python_voiceio.egg-info/entry_points.txt +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/python_voiceio.egg-info/requires.txt +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/python_voiceio.egg-info/top_level.txt +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/setup.cfg +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_announce.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_app_wiring.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_audio_quality.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_audio_source.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_backend_probes.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_cancel.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_cli.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_clipboard_read.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_clipboard_typer.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_commands.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_concurrency_lockdown.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_config.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_context_terms.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_corrections.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_dead_mic.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_decoders.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_engine.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_evdev_uaccess.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_fallback.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_fcitx_bridge.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_feedback_stream.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_focus.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_gpu_fallback.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_health.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_hints.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_history.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_hotkey_modes.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_ibus_engine_limits.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_ibus_engine_listener.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_ibus_pending.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_ibus_pids.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_ibus_ping.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_ibus_session.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_ibus_textlimit.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_ibus_typer.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_idle_audio.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_clean.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_import.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_language.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_metrics.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_pipeline.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_quiet.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_resume.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_review.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_learn_targets.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_llm.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_llm_api.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_mic_gain.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_modifier_guard.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_numbers.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_paste_last.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_pipeline.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_platform.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_postcorrect.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_postprocess.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_prebuffer.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_presence.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_prompt.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_quiet_audio.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_recorder_integration.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_report.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_retention.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_robustness.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_security_hardening.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_server.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_setup.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_sherpa.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_spool.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_streaming.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_suggest.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_tokens.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_transcriber.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_tray.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_tts.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_typer_manager.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_vad.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_vocabulary.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_wordfreq.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/tests/test_worker_decode.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/__main__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/announce.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/audio_source.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/backends.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/configcmd.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/corrections.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/doctor.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/history.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/learn.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/models.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/uninstall.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/cli/vocab.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/clipboard_read.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/commands.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/config.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/consent.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/context_terms.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/bias.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/base.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/catalog.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/faster_whisper/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/faster_whisper/worker.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/fetch.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/lanes.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/sherpa.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/whispercpp.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/engine.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/pipeline.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/corrections.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/data/60-voiceio-uaccess.rules +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/data/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/demo.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/display.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/feedback.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/focus.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/health.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/hints.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/history.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/hotkeys/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/hotkeys/base.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/hotkeys/chain.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/hotkeys/evdev.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/hotkeys/pynput_backend.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/hotkeys/socket_backend.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/ibus/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/ibus/engine.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/ibus/install.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/ibus/pending.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/ibus/session.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/ibus/textlimit.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/idle_audio.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/augment.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/clean.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/evaluate.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/importer.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/metrics.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/quiet.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/review.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/store.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/teacher.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/learn/train.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/llm.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/llm_api.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/mic_gain.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/models/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/models/silero_vad.onnx +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/numbers.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/pidlock.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/platform.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/postcorrect.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/postprocess.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/power.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/presence.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/privacy.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/prompt.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/quiet_audio.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/recorder.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/report.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/retention.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/server/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/server/__main__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/server/app.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/server/config.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/server/runtime.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/service.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/configfile.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/extras.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/hotkey.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/noninteractive.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/speech.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/steps.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/system.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/setup/ui.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/sounds/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/sounds/alert.wav +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/sounds/commit.wav +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/sounds/start.wav +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/sounds/stop.wav +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/spool.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/streaming.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/suggest.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tokens.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tray/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tray/_icons.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tray/_indicator.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tray/_pystray.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tts/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tts/base.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tts/chain.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tts/edge_engine.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tts/espeak.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tts/piper_engine.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tts/player.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/tts/supertonic_engine.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/__init__.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/base.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/chain.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/clipboard.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/collecting.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/fcitx_bridge.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/ibus.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/manager.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/modifier_guard.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/paste.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/pynput_type.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/wtype.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/xdotool.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/typers/ydotool.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/ui.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/vad.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/vocab_stats.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/vocabulary.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/watchdog.py +0 -0
- {python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/wordfreq.py +0 -0
|
@@ -96,6 +96,25 @@ def test_daemon_publishes_state_and_restart_waits_for_idle(monkeypatch):
|
|
|
96
96
|
assert not wait_until_idle(timeout=60, poll=0.05, finalizing_timeout=0.2)
|
|
97
97
|
|
|
98
98
|
|
|
99
|
+
def test_restart_after_a_long_recording_still_waits_for_its_finalize(monkeypatch):
|
|
100
|
+
"""The finalize budget counts from when finalizing starts: a recording
|
|
101
|
+
longer than it must not make the restart skip the finalize (11-02)."""
|
|
102
|
+
import threading
|
|
103
|
+
|
|
104
|
+
from voiceio import config, pidlock
|
|
105
|
+
from voiceio.app import VoiceIO, _State
|
|
106
|
+
from voiceio.cli.servicecmd import wait_until_idle
|
|
107
|
+
|
|
108
|
+
vio = VoiceIO.__new__(VoiceIO)
|
|
109
|
+
vio._publishes_state = True
|
|
110
|
+
vio._state = _State.RECORDING
|
|
111
|
+
monkeypatch.setattr(pidlock, "daemon_alive", lambda path: True)
|
|
112
|
+
threading.Timer(0.4, lambda: setattr(vio, "_state", _State.FINALIZING)).start()
|
|
113
|
+
threading.Timer(0.7, lambda: setattr(vio, "_state", _State.IDLE)).start()
|
|
114
|
+
assert wait_until_idle(timeout=5, poll=0.05, finalizing_timeout=0.5)
|
|
115
|
+
assert config.STATE_PATH.read_text() == "idle"
|
|
116
|
+
|
|
117
|
+
|
|
99
118
|
def test_daemon_alive_probes_the_pid_lock(tmp_path):
|
|
100
119
|
import fcntl
|
|
101
120
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.16.1"
|
|
@@ -1076,6 +1076,10 @@ class VoiceIO:
|
|
|
1076
1076
|
self._tts_engine.shutdown()
|
|
1077
1077
|
self._idle_audio.shutdown()
|
|
1078
1078
|
self.recorder.close_stream()
|
|
1079
|
+
# Lets a cue still playing finish: PortAudio torn down at exit
|
|
1080
|
+
# under a write corrupts the heap (ABRT on stop after a dictation).
|
|
1081
|
+
from voiceio import feedback
|
|
1082
|
+
feedback.close_cue_stream()
|
|
1079
1083
|
self._quiet.close()
|
|
1080
1084
|
self.decoder.close()
|
|
1081
1085
|
tray.stop()
|
|
@@ -96,6 +96,7 @@ def wait_until_idle(timeout: float = 300.0, poll: float = 0.25,
|
|
|
96
96
|
from voiceio.config import PID_PATH, STATE_PATH
|
|
97
97
|
from voiceio.pidlock import daemon_alive
|
|
98
98
|
start, told = time.monotonic(), False
|
|
99
|
+
seen, since = None, start
|
|
99
100
|
try:
|
|
100
101
|
while True:
|
|
101
102
|
if not daemon_alive(PID_PATH):
|
|
@@ -106,8 +107,13 @@ def wait_until_idle(timeout: float = 300.0, poll: float = 0.25,
|
|
|
106
107
|
return True # pre-1.1 daemon: nothing to wait for
|
|
107
108
|
if state in ("idle", "error"):
|
|
108
109
|
return True
|
|
109
|
-
|
|
110
|
-
if
|
|
110
|
+
now = time.monotonic()
|
|
111
|
+
if state != seen:
|
|
112
|
+
seen, since = state, now
|
|
113
|
+
# A finalize's budget starts when it does: after a long recording
|
|
114
|
+
# the total wait already exceeds it.
|
|
115
|
+
if (now - since > finalizing_timeout if state == "finalizing"
|
|
116
|
+
else now - start > timeout):
|
|
111
117
|
print(f"Still {state}; going ahead. (--now skips the wait.)", file=sys.stderr)
|
|
112
118
|
return False
|
|
113
119
|
if not told:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.16.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_voiceio-1.16.0 → python_voiceio-1.16.1}/python_voiceio.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/faster_whisper/__init__.py
RENAMED
|
File without changes
|
{python_voiceio-1.16.0 → python_voiceio-1.16.1}/voiceio/core/decoders/faster_whisper/worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|