openspeechapi 0.2.7__tar.gz → 0.2.8__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.7 → openspeechapi-0.2.8}/PKG-INFO +1 -1
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/__init__.py +1 -1
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/iflytek.py +19 -2
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/pyproject.toml +1 -1
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.dockerignore +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.env.example +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.github/workflows/ci.yml +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.gitignore +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/en.aiff +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/en_16k.wav +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/en_16k_pad6.wav +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/en_long.aiff +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/en_long_16k.wav +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/en_mid.aiff +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/en_mid_16k.wav +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/zh.aiff +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/audio/zh_16k.wav +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/openspeech-8600.log +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/openspeech-serve.log +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/webui-server.log +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/webui-server.pid +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/wlk12101.log +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/wlk12101.pid +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/wlk12102.log +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/.tmp/wlk12102.pid +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/AGENTS.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/CLAUDE.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/Dockerfile +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/README.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/aibox-script/aibox-1.0.0-SNAPSHOT-stdout.log +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/aibox-script/aibox.2026-04-02.log +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/aibox-script/com.user.restart-jar.plist +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/aibox-script/restart-jar.sh +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/aibox-script.tar.gz +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docker-compose.yml +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/architecture/local-engine-manager.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/architecture/logging-spec.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/architecture/stt-engineering-optimization-guide.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/architecture/stt-streaming-spec.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/architecture/webui-phase-a.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/engines/fish-speech-docker.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/engines/fish-speech-native.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/engines/stt-native-models.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/plans/2026-04-01-phase1-implementation.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/plans/2026-04-11-macos-native-tts-stt.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-01-openspeech-api-design.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-03-hot-lazy-loading.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-03-phase2-protocol-layer.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-03-phase3-production.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-11-macos-native-tts-stt-design.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-12-cloud-providers-webui-design.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-15-streaming-tts-stt-fixes-display-names.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-16-provider-management-engines-rename.md +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/examples/client_stt.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/examples/client_tts.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/examples/stt_simple.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/examples/tts_simple.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/__main__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/cli.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/client/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/client/client.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/config.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/core/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/core/base.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/core/enums.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/core/models.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/core/registry.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/core/settings.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/demo.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/context.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/dispatcher.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/executors/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/executors/base.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/executors/in_process.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/executors/remote.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/executors/subprocess_exec.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/fanout.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/filters.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/lifecycle.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/dispatch/watcher.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/engine_catalog.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/engine_registry.yaml +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/exceptions.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/factory.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/aim_resolver.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/backends/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/backends/docker_backend.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/backends/native_backend.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/base.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/faster_whisper.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/fish_speech.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/sherpa_onnx.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/whisper.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/whisperlivekit.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/manager.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/models.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/progress.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/registry.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/task_store.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/tasks.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/logging_config.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/observe/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/observe/base.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/observe/debug.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/observe/latency.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/observe/metrics.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/observe/tracing.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/observe/usage.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/_template.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/alibaba.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/assemblyai.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/azure_speech.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/baidu.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/deepgram.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/elevenlabs.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/faster_whisper.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/google_cloud.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/macos_speech.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/openai.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/sherpa_onnx.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/tencent.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/volcengine.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/whisper.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/whisperlivekit.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/stt/windows_speech.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/alibaba.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/azure_speech.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/baidu.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/coqui.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/cosyvoice.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/deepgram.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/elevenlabs.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/fish_speech.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/google_cloud.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/iflytek.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/macos_say.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/minimax.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/openai.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/piper.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/tencent.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/volcengine.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/providers/tts/windows_sapi.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/app.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/auth.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/middleware.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/routes/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/routes/management.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/routes/stt.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/routes/tts.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/routes/webui.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/webui/app.js +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/webui/index.html +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/webui/styles.css +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/ws/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/ws/stt_stream.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/server/ws/tts_stream.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/telemetry/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/telemetry/perf.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/utils/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/utils/audio_converter.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/utils/audio_playback.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/vendor_registry.yaml +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/output/output.wav +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/output.wav +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/providers.example.yaml +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/cloud/install.sh +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/faster-whisper/native/install.sh +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/fish-speech/native/install.sh +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/macos-stt/install.sh +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/macos-stt/macos_stt.swift +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/macos-stt/request_auth.swift +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/sherpa-onnx/native/install.sh +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/sherpa-onnx/native/run_streaming_server.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/whisper/native/install.sh +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/scripts/engines/whisperlivekit/native/install.sh +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/conftest.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/e2e/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/e2e/conftest.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/e2e/test_fanout_e2e.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/e2e/test_faster_whisper_e2e.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/e2e/test_openai_e2e.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/e2e/test_webui_e2e.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/fixtures/hello.wav +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/integration/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/integration/test_fanout_integration.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/integration/test_in_process_integration.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/integration/test_server_client.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_aim_resolver.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_audio_converter.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_audio_playback.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_base.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_cli.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_cli_engine.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_client.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_config.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_context.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_debug_observer.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_dispatcher.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_docker_backend_progress.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_engine_registry.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_enums.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_executor_base.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_fanout.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_filters.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_hot_reload.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_in_process.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_latency_observer.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_lifecycle.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_local_engine_task_store.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_local_engines_manager.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_logging.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_metrics_observer.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_models.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_native_backend.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_observer_base.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_plugin_mechanism.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_cloud_providers.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_elevenlabs_stt.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_macos_say.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_macos_speech.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_openai_base_url.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_openai_stt.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_openai_tts.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_sherpa_onnx_stt.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_stt_stubs.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_tts_stubs.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_whisperlivekit_stt.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_registry.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_remote.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_server/__init__.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_server/test_auth.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_server/test_config_api.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_server/test_routes.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_server/test_websocket.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_subprocess.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_usage_observer.py +0 -0
- {openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_watcher.py +0 -0
|
@@ -347,8 +347,16 @@ class IflytekSTT(STTProvider):
|
|
|
347
347
|
|
|
348
348
|
result_texts: list[str] = []
|
|
349
349
|
|
|
350
|
+
# ``ws = await websockets.connect(...)`` returns the connection
|
|
351
|
+
# object directly. Re-using it as ``async with ws:`` worked on
|
|
352
|
+
# older websockets releases that exposed ``__aenter__`` /
|
|
353
|
+
# ``__aexit__`` on ``WebSocketClientProtocol``, but recent
|
|
354
|
+
# versions removed that re-entry alias and the only supported
|
|
355
|
+
# context-manager pattern is ``async with websockets.connect(...)``.
|
|
356
|
+
# Use try/finally with an explicit close so this stays correct
|
|
357
|
+
# across both old and new websockets.
|
|
350
358
|
ws = await self._connect_with_retry()
|
|
351
|
-
|
|
359
|
+
try:
|
|
352
360
|
# Send audio in chunks with interleaved receive
|
|
353
361
|
total = len(audio_bytes)
|
|
354
362
|
offset = 0
|
|
@@ -429,6 +437,10 @@ class IflytekSTT(STTProvider):
|
|
|
429
437
|
|
|
430
438
|
if data.get("status") == 2:
|
|
431
439
|
break
|
|
440
|
+
finally:
|
|
441
|
+
# Idempotent on websockets ≥ 11; safe to call even if the
|
|
442
|
+
# server already closed the socket.
|
|
443
|
+
await ws.close()
|
|
432
444
|
|
|
433
445
|
result = Transcription(text="".join(result_texts))
|
|
434
446
|
logger.info("{}: completed in {:.0f}ms, result={} chars", self.name, (time.perf_counter() - _t0) * 1000, len(result.text))
|
|
@@ -479,8 +491,10 @@ class IflytekSTT(STTProvider):
|
|
|
479
491
|
_sender_stop = asyncio.Event()
|
|
480
492
|
|
|
481
493
|
logger.debug("{}: connecting to iFlytek WebSocket...", self.name)
|
|
494
|
+
# See ``transcribe`` for why this is try/finally + ``await
|
|
495
|
+
# ws.close()`` rather than ``async with ws``.
|
|
482
496
|
ws = await self._connect_with_retry()
|
|
483
|
-
|
|
497
|
+
try:
|
|
484
498
|
_t_connected = time.perf_counter()
|
|
485
499
|
logger.info("{}: WS connected in {:.0f}ms", self.name,
|
|
486
500
|
(_t_connected - _t0) * 1000)
|
|
@@ -664,3 +678,6 @@ class IflytekSTT(STTProvider):
|
|
|
664
678
|
await task
|
|
665
679
|
except websockets.exceptions.ConnectionClosed:
|
|
666
680
|
pass
|
|
681
|
+
finally:
|
|
682
|
+
# Idempotent on websockets ≥ 11.
|
|
683
|
+
await ws.close()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.7 → openspeechapi-0.2.8}/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.7 → openspeechapi-0.2.8}/docs/superpowers/specs/2026-04-03-hot-lazy-loading.md
RENAMED
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/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
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/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.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/backends/__init__.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/backends/docker_backend.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/backends/native_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/faster_whisper.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/fish_speech.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/openspeechapi/local_engines/engines/sherpa_onnx.py
RENAMED
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/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.7 → openspeechapi-0.2.8}/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.7 → openspeechapi-0.2.8}/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.7 → openspeechapi-0.2.8}/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.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_cloud_providers.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_elevenlabs_stt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_openai_base_url.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/tests/unit/test_providers/test_sherpa_onnx_stt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.7 → openspeechapi-0.2.8}/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
|