openspeechapi 0.2.3__tar.gz → 0.2.4__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.
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/PKG-INFO +1 -1
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/__init__.py +1 -1
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/core/models.py +10 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/dispatcher.py +23 -4
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/iflytek.py +17 -3
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/pyproject.toml +1 -1
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.dockerignore +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.env.example +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.github/workflows/ci.yml +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.gitignore +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/en.aiff +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/en_16k.wav +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/en_16k_pad6.wav +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/en_long.aiff +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/en_long_16k.wav +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/en_mid.aiff +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/en_mid_16k.wav +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/zh.aiff +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/audio/zh_16k.wav +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/openspeech-8600.log +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/openspeech-serve.log +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/webui-server.log +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/webui-server.pid +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/wlk12101.log +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/wlk12101.pid +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/wlk12102.log +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/.tmp/wlk12102.pid +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/AGENTS.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/CLAUDE.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/Dockerfile +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/README.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/aibox-script/aibox-1.0.0-SNAPSHOT-stdout.log +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/aibox-script/aibox.2026-04-02.log +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/aibox-script/com.user.restart-jar.plist +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/aibox-script/restart-jar.sh +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/aibox-script.tar.gz +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docker-compose.yml +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/architecture/local-engine-manager.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/architecture/logging-spec.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/architecture/stt-engineering-optimization-guide.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/architecture/stt-streaming-spec.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/architecture/webui-phase-a.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/engines/fish-speech-docker.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/engines/fish-speech-native.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/engines/stt-native-models.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/plans/2026-04-01-phase1-implementation.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/plans/2026-04-11-macos-native-tts-stt.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-01-openspeech-api-design.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-hot-lazy-loading.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-phase2-protocol-layer.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-phase3-production.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-11-macos-native-tts-stt-design.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-12-cloud-providers-webui-design.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-15-streaming-tts-stt-fixes-display-names.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-16-provider-management-engines-rename.md +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/examples/client_stt.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/examples/client_tts.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/examples/stt_simple.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/examples/tts_simple.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/__main__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/cli.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/client/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/client/client.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/config.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/core/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/core/base.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/core/enums.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/core/registry.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/core/settings.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/demo.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/context.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/base.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/in_process.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/remote.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/subprocess_exec.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/fanout.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/filters.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/lifecycle.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/watcher.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/engine_catalog.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/engine_registry.yaml +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/exceptions.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/factory.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/aim_resolver.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/docker_backend.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/native_backend.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/base.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/faster_whisper.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/fish_speech.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/sherpa_onnx.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/whisper.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/whisperlivekit.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/manager.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/models.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/progress.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/registry.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/task_store.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/tasks.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/logging_config.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/observe/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/observe/base.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/observe/debug.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/observe/latency.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/observe/metrics.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/observe/tracing.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/observe/usage.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/_template.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/alibaba.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/assemblyai.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/azure_speech.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/baidu.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/deepgram.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/elevenlabs.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/faster_whisper.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/google_cloud.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/macos_speech.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/openai.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/sherpa_onnx.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/tencent.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/volcengine.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/whisper.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/whisperlivekit.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/stt/windows_speech.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/alibaba.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/azure_speech.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/baidu.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/coqui.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/cosyvoice.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/deepgram.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/elevenlabs.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/fish_speech.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/google_cloud.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/iflytek.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/macos_say.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/minimax.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/openai.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/piper.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/tencent.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/volcengine.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/providers/tts/windows_sapi.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/app.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/auth.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/middleware.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/routes/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/routes/management.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/routes/stt.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/routes/tts.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/routes/webui.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/webui/app.js +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/webui/index.html +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/webui/styles.css +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/ws/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/ws/stt_stream.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/server/ws/tts_stream.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/telemetry/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/telemetry/perf.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/utils/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/utils/audio_converter.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/utils/audio_playback.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/vendor_registry.yaml +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/output/output.wav +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/output.wav +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/providers.example.yaml +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/cloud/install.sh +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/faster-whisper/native/install.sh +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/fish-speech/native/install.sh +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/macos-stt/install.sh +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/macos-stt/macos_stt.swift +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/macos-stt/request_auth.swift +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/sherpa-onnx/native/install.sh +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/sherpa-onnx/native/run_streaming_server.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/whisper/native/install.sh +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/whisperlivekit/native/install.sh +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/conftest.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/e2e/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/e2e/conftest.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/e2e/test_fanout_e2e.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/e2e/test_faster_whisper_e2e.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/e2e/test_openai_e2e.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/e2e/test_webui_e2e.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/fixtures/hello.wav +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/integration/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/integration/test_fanout_integration.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/integration/test_in_process_integration.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/integration/test_server_client.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_aim_resolver.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_audio_converter.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_audio_playback.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_base.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_cli.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_cli_engine.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_client.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_config.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_context.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_debug_observer.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_dispatcher.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_docker_backend_progress.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_engine_registry.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_enums.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_executor_base.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_fanout.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_filters.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_hot_reload.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_in_process.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_latency_observer.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_lifecycle.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_local_engine_task_store.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_local_engines_manager.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_logging.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_metrics_observer.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_models.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_native_backend.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_observer_base.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_plugin_mechanism.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_cloud_providers.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_elevenlabs_stt.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_macos_say.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_macos_speech.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_openai_base_url.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_openai_stt.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_openai_tts.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_sherpa_onnx_stt.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_stt_stubs.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_tts_stubs.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_whisperlivekit_stt.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_registry.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_remote.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_server/__init__.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_server/test_auth.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_server/test_config_api.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_server/test_routes.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_server/test_websocket.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_subprocess.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_usage_observer.py +0 -0
- {openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_watcher.py +0 -0
|
@@ -50,6 +50,16 @@ class STTOptions:
|
|
|
50
50
|
beam_size: int | None = None
|
|
51
51
|
compute_type: str | None = None
|
|
52
52
|
fp16: bool | None = None
|
|
53
|
+
# Per-call override for the trailing-silence threshold (ms) before
|
|
54
|
+
# the provider treats utterance as ended. ``None`` means "use the
|
|
55
|
+
# provider's configured default" (e.g. iflytek's ``settings.vad_eos``
|
|
56
|
+
# populated from speech_providers.yaml). Wallex passes the
|
|
57
|
+
# panel-supplied ``parameter.iat.eos`` here when the panel needs a
|
|
58
|
+
# different value than the deployment default — for instance a
|
|
59
|
+
# kiosk that wants more responsive cut-off than a slow-paced
|
|
60
|
+
# voice assistant. Providers that don't support VAD finalization
|
|
61
|
+
# (Whisper, Faster-Whisper) silently ignore this field.
|
|
62
|
+
vad_eos: int | None = None
|
|
53
63
|
|
|
54
64
|
|
|
55
65
|
@dataclass
|
|
@@ -114,9 +114,17 @@ class _STTNamespace:
|
|
|
114
114
|
self,
|
|
115
115
|
provider: str,
|
|
116
116
|
stream: "AsyncIterator[bytes]",
|
|
117
|
+
opts: "STTOptions | None" = None,
|
|
117
118
|
) -> "AsyncIterator[Transcription]":
|
|
118
|
-
"""Stream audio chunks to the named provider and yield transcriptions.
|
|
119
|
-
|
|
119
|
+
"""Stream audio chunks to the named provider and yield transcriptions.
|
|
120
|
+
|
|
121
|
+
``opts`` is optional and forwarded to the provider's
|
|
122
|
+
``transcribe_stream`` if it declares the parameter (current users:
|
|
123
|
+
iFlytek STT honors ``opts.vad_eos`` for per-call silence-threshold
|
|
124
|
+
override). Providers that don't declare ``opts`` raise TypeError;
|
|
125
|
+
callers that don't need the override should leave it ``None``.
|
|
126
|
+
"""
|
|
127
|
+
async for item in self._dispatcher._transcribe_stream(provider, stream, opts):
|
|
120
128
|
yield item
|
|
121
129
|
|
|
122
130
|
async def fanout(
|
|
@@ -479,8 +487,14 @@ class ServiceDispatcher:
|
|
|
479
487
|
self,
|
|
480
488
|
provider: str,
|
|
481
489
|
stream: AsyncIterator[bytes],
|
|
490
|
+
opts: STTOptions | None = None,
|
|
482
491
|
) -> AsyncIterator[Transcription]:
|
|
483
|
-
"""Stream audio chunks to the provider and yield Transcription results.
|
|
492
|
+
"""Stream audio chunks to the provider and yield Transcription results.
|
|
493
|
+
|
|
494
|
+
``opts`` is forwarded to the provider only when non-None — keeps
|
|
495
|
+
the call site backward-compatible with providers whose
|
|
496
|
+
``transcribe_stream`` predates the ``opts`` parameter.
|
|
497
|
+
"""
|
|
484
498
|
handle = self._get_handle(provider)
|
|
485
499
|
await self._lifecycle.ensure_ready(provider)
|
|
486
500
|
ctx = InvokeContext(
|
|
@@ -488,6 +502,11 @@ class ServiceDispatcher:
|
|
|
488
502
|
method="transcribe_stream",
|
|
489
503
|
exec_mode=handle.exec_mode,
|
|
490
504
|
)
|
|
505
|
+
# Build kwargs conditionally so providers without ``opts`` in
|
|
506
|
+
# their signature don't get a surprise unexpected-keyword error.
|
|
507
|
+
invoke_kwargs: dict[str, Any] = {"stream": stream}
|
|
508
|
+
if opts is not None:
|
|
509
|
+
invoke_kwargs["opts"] = opts
|
|
491
510
|
with bind_context(
|
|
492
511
|
provider=provider, engine=provider, request_id=ctx.request_id
|
|
493
512
|
):
|
|
@@ -500,7 +519,7 @@ class ServiceDispatcher:
|
|
|
500
519
|
count = 0
|
|
501
520
|
try:
|
|
502
521
|
async for item in handle.executor.invoke_stream(
|
|
503
|
-
"transcribe_stream",
|
|
522
|
+
"transcribe_stream", **invoke_kwargs
|
|
504
523
|
):
|
|
505
524
|
count += 1
|
|
506
525
|
yield item
|
|
@@ -216,10 +216,18 @@ class IflytekSTT(STTProvider):
|
|
|
216
216
|
# confuses anyone reading the request body, so
|
|
217
217
|
# gate it on the canonical language.
|
|
218
218
|
canon = _canonical_language(self.settings.language)
|
|
219
|
+
# Per-call override (``opts.vad_eos``) trumps the
|
|
220
|
+
# provider default. Wallex routes the panel's
|
|
221
|
+
# ``parameter.iat.eos`` through here so a kiosk
|
|
222
|
+
# can ship a tighter or looser silence threshold
|
|
223
|
+
# than the deployment yaml.
|
|
224
|
+
eos = (opts.vad_eos
|
|
225
|
+
if opts is not None and opts.vad_eos is not None
|
|
226
|
+
else self.settings.vad_eos)
|
|
219
227
|
business = {
|
|
220
228
|
"language": canon,
|
|
221
229
|
"domain": "iat",
|
|
222
|
-
"vad_eos":
|
|
230
|
+
"vad_eos": eos,
|
|
223
231
|
}
|
|
224
232
|
if canon == "zh_cn":
|
|
225
233
|
business["accent"] = "mandarin"
|
|
@@ -288,7 +296,7 @@ class IflytekSTT(STTProvider):
|
|
|
288
296
|
return "".join(parts)
|
|
289
297
|
|
|
290
298
|
async def transcribe_stream(
|
|
291
|
-
self, stream: AsyncIterator[bytes]
|
|
299
|
+
self, stream: AsyncIterator[bytes], opts: STTOptions | None = None,
|
|
292
300
|
) -> AsyncIterator[Transcription]:
|
|
293
301
|
"""Stream audio chunks to iFlytek via WebSocket and yield transcriptions.
|
|
294
302
|
|
|
@@ -345,11 +353,17 @@ class IflytekSTT(STTProvider):
|
|
|
345
353
|
# See transcribe() for rationale on
|
|
346
354
|
# canonicalizing language and gating accent.
|
|
347
355
|
canon = _canonical_language(self.settings.language)
|
|
356
|
+
# Per-call ``opts.vad_eos`` (e.g. wallex
|
|
357
|
+
# forwarding the panel's ``parameter.iat.eos``)
|
|
358
|
+
# trumps the provider's configured default.
|
|
359
|
+
eos = (opts.vad_eos
|
|
360
|
+
if opts is not None and opts.vad_eos is not None
|
|
361
|
+
else self.settings.vad_eos)
|
|
348
362
|
business = {
|
|
349
363
|
"language": canon,
|
|
350
364
|
"domain": "iat",
|
|
351
365
|
"dwa": "wpgs",
|
|
352
|
-
"vad_eos":
|
|
366
|
+
"vad_eos": eos,
|
|
353
367
|
}
|
|
354
368
|
if canon == "zh_cn":
|
|
355
369
|
business["accent"] = "mandarin"
|
|
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
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/architecture/stt-engineering-optimization-guide.md
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
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-hot-lazy-loading.md
RENAMED
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-phase3-production.md
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
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/subprocess_exec.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
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/__init__.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/docker_backend.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/native_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/faster_whisper.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/fish_speech.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/sherpa_onnx.py
RENAMED
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/whisperlivekit.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
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/faster-whisper/native/install.sh
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
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/scripts/engines/whisperlivekit/native/install.sh
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
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/integration/test_in_process_integration.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
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_cloud_providers.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_elevenlabs_stt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_openai_base_url.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_sherpa_onnx_stt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.3 → openspeechapi-0.2.4}/tests/unit/test_providers/test_whisperlivekit_stt.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
|