openspeechapi 0.2.1__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.1 → openspeechapi-0.2.4}/PKG-INFO +1 -1
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/__init__.py +1 -1
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/core/models.py +10 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/dispatcher.py +23 -4
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/iflytek.py +115 -17
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/pyproject.toml +1 -1
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.dockerignore +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.env.example +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.github/workflows/ci.yml +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.gitignore +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/en.aiff +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/en_16k.wav +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/en_16k_pad6.wav +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/en_long.aiff +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/en_long_16k.wav +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/en_mid.aiff +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/en_mid_16k.wav +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/zh.aiff +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/audio/zh_16k.wav +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/openspeech-8600.log +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/openspeech-serve.log +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/webui-server.log +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/webui-server.pid +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/wlk12101.log +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/wlk12101.pid +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/wlk12102.log +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/.tmp/wlk12102.pid +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/AGENTS.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/CLAUDE.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/Dockerfile +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/README.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/aibox-script/aibox-1.0.0-SNAPSHOT-stdout.log +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/aibox-script/aibox.2026-04-02.log +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/aibox-script/com.user.restart-jar.plist +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/aibox-script/restart-jar.sh +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/aibox-script.tar.gz +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docker-compose.yml +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/architecture/local-engine-manager.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/architecture/logging-spec.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/architecture/stt-engineering-optimization-guide.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/architecture/stt-streaming-spec.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/architecture/webui-phase-a.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/engines/fish-speech-docker.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/engines/fish-speech-native.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/engines/stt-native-models.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/plans/2026-04-01-phase1-implementation.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/plans/2026-04-11-macos-native-tts-stt.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-01-openspeech-api-design.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-hot-lazy-loading.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-phase2-protocol-layer.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-phase3-production.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-11-macos-native-tts-stt-design.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-12-cloud-providers-webui-design.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-15-streaming-tts-stt-fixes-display-names.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-16-provider-management-engines-rename.md +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/examples/client_stt.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/examples/client_tts.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/examples/stt_simple.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/examples/tts_simple.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/__main__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/cli.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/client/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/client/client.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/config.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/core/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/core/base.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/core/enums.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/core/registry.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/core/settings.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/demo.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/context.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/base.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/in_process.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/remote.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/executors/subprocess_exec.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/fanout.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/filters.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/lifecycle.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/dispatch/watcher.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/engine_catalog.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/engine_registry.yaml +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/exceptions.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/factory.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/aim_resolver.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/docker_backend.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/native_backend.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/base.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/faster_whisper.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/fish_speech.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/sherpa_onnx.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/whisper.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/whisperlivekit.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/manager.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/models.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/progress.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/registry.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/task_store.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/tasks.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/logging_config.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/observe/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/observe/base.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/observe/debug.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/observe/latency.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/observe/metrics.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/observe/tracing.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/observe/usage.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/_template.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/alibaba.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/assemblyai.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/azure_speech.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/baidu.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/deepgram.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/elevenlabs.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/faster_whisper.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/google_cloud.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/macos_speech.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/openai.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/sherpa_onnx.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/tencent.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/volcengine.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/whisper.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/whisperlivekit.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/stt/windows_speech.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/alibaba.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/azure_speech.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/baidu.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/coqui.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/cosyvoice.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/deepgram.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/elevenlabs.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/fish_speech.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/google_cloud.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/iflytek.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/macos_say.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/minimax.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/openai.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/piper.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/tencent.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/volcengine.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/providers/tts/windows_sapi.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/app.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/auth.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/middleware.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/routes/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/routes/management.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/routes/stt.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/routes/tts.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/routes/webui.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/webui/app.js +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/webui/index.html +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/webui/styles.css +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/ws/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/ws/stt_stream.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/server/ws/tts_stream.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/telemetry/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/telemetry/perf.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/utils/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/utils/audio_converter.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/utils/audio_playback.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/vendor_registry.yaml +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/output/output.wav +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/output.wav +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/providers.example.yaml +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/cloud/install.sh +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/faster-whisper/native/install.sh +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/fish-speech/native/install.sh +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/macos-stt/install.sh +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/macos-stt/macos_stt.swift +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/macos-stt/request_auth.swift +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/sherpa-onnx/native/install.sh +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/sherpa-onnx/native/run_streaming_server.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/whisper/native/install.sh +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/scripts/engines/whisperlivekit/native/install.sh +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/conftest.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/e2e/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/e2e/conftest.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/e2e/test_fanout_e2e.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/e2e/test_faster_whisper_e2e.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/e2e/test_openai_e2e.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/e2e/test_webui_e2e.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/fixtures/hello.wav +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/integration/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/integration/test_fanout_integration.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/integration/test_in_process_integration.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/integration/test_server_client.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_aim_resolver.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_audio_converter.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_audio_playback.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_base.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_cli.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_cli_engine.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_client.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_config.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_context.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_debug_observer.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_dispatcher.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_docker_backend_progress.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_engine_registry.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_enums.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_executor_base.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_fanout.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_filters.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_hot_reload.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_in_process.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_latency_observer.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_lifecycle.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_local_engine_task_store.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_local_engines_manager.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_logging.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_metrics_observer.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_models.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_native_backend.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_observer_base.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_plugin_mechanism.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_cloud_providers.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_elevenlabs_stt.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_macos_say.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_macos_speech.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_openai_base_url.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_openai_stt.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_openai_tts.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_sherpa_onnx_stt.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_stt_stubs.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_tts_stubs.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_providers/test_whisperlivekit_stt.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_registry.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_remote.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_server/__init__.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_server/test_auth.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_server/test_config_api.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_server/test_routes.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_server/test_websocket.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_subprocess.py +0 -0
- {openspeechapi-0.2.1 → openspeechapi-0.2.4}/tests/unit/test_usage_observer.py +0 -0
- {openspeechapi-0.2.1 → 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
|
|
@@ -29,7 +29,58 @@ class IflytekSTTSettings(BaseSettings):
|
|
|
29
29
|
app_id: str = ""
|
|
30
30
|
api_key: str = ""
|
|
31
31
|
api_secret: str = ""
|
|
32
|
+
# iFlytek-canonical language code. Acceptable values per iFlytek
|
|
33
|
+
# IAT docs: ``zh_cn``, ``en_us``, ``ja_jp``, ``ko_kr``, ``ru-ru``.
|
|
34
|
+
# Common ISO short codes (``en``, ``zh``, ``ja``, ``ko``, ``ru``)
|
|
35
|
+
# are accepted here and mapped on the request hop — see
|
|
36
|
+
# ``_canonical_language``. iFlytek silently falls back to ``zh_cn``
|
|
37
|
+
# when given an unrecognised value, so the alias mapping prevents
|
|
38
|
+
# English audio from being transcribed by the Chinese model
|
|
39
|
+
# (caught 04-28 by an "english only" deployment that had set
|
|
40
|
+
# ``language: en`` and got hanzi back).
|
|
32
41
|
language: str = "zh_cn"
|
|
42
|
+
# ``vad_eos`` — milliseconds of trailing silence iFlytek treats as
|
|
43
|
+
# end-of-sentence before emitting the final result (``status == 2``).
|
|
44
|
+
# iFlytek's documented default is 2000; lower values give faster
|
|
45
|
+
# finalization at the cost of cutting off slow speakers mid-thought.
|
|
46
|
+
# The 04-28 17:00 audit found vad_eos=2000 contributed ~89% of the
|
|
47
|
+
# user-perceived latency budget — the speech itself only used ~3 s
|
|
48
|
+
# but iFlytek waited an additional 2 s of silence before declaring
|
|
49
|
+
# final. Common production values: 800-1000 (responsive),
|
|
50
|
+
# 1500 (conservative), 2000 (default, slow). Below ~500 risks
|
|
51
|
+
# premature finalization on natural pauses. Per-deployment override
|
|
52
|
+
# via ``speech_providers.yaml`` so different sites can pick their
|
|
53
|
+
# own latency-vs-tolerance trade-off.
|
|
54
|
+
vad_eos: int = 2000
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# iFlytek expects the full locale tag; common ISO short codes need to
|
|
58
|
+
# be translated. Keys are casefolded for tolerant matching. Values are
|
|
59
|
+
# the iFlytek-canonical strings the WS request will carry.
|
|
60
|
+
_LANGUAGE_ALIASES: dict[str, str] = {
|
|
61
|
+
# Canonical pass-through (allow case variation)
|
|
62
|
+
"zh_cn": "zh_cn", "en_us": "en_us", "ja_jp": "ja_jp",
|
|
63
|
+
"ko_kr": "ko_kr", "ru-ru": "ru-ru", "ru_ru": "ru-ru",
|
|
64
|
+
# ISO 639-1 short codes — most config sources use these
|
|
65
|
+
"zh": "zh_cn", "zh-cn": "zh_cn", "zh-hans": "zh_cn",
|
|
66
|
+
"en": "en_us", "en-us": "en_us", "en-gb": "en_us",
|
|
67
|
+
"ja": "ja_jp", "ja-jp": "ja_jp",
|
|
68
|
+
"ko": "ko_kr", "ko-kr": "ko_kr",
|
|
69
|
+
"ru": "ru-ru",
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _canonical_language(raw: str | None) -> str:
|
|
74
|
+
"""Translate a configured language string to iFlytek's canonical form.
|
|
75
|
+
|
|
76
|
+
Returns the iFlytek-canonical code (e.g. ``en_us``). Unknown inputs
|
|
77
|
+
pass through unchanged so iFlytek surfaces a real protocol error
|
|
78
|
+
instead of silently falling back to Chinese.
|
|
79
|
+
"""
|
|
80
|
+
if not raw:
|
|
81
|
+
return "zh_cn"
|
|
82
|
+
return _LANGUAGE_ALIASES.get(raw.casefold().strip(), raw)
|
|
83
|
+
|
|
33
84
|
|
|
34
85
|
class IflytekSTT(STTProvider):
|
|
35
86
|
name = "iflytek-stt"
|
|
@@ -37,7 +88,9 @@ class IflytekSTT(STTProvider):
|
|
|
37
88
|
execution_mode = ExecMode.IN_PROCESS
|
|
38
89
|
settings_cls = IflytekSTTSettings
|
|
39
90
|
capabilities = {Capability.BATCH, Capability.STREAMING, Capability.MULTILINGUAL}
|
|
40
|
-
field_options = {
|
|
91
|
+
field_options = {
|
|
92
|
+
"language": ["zh_cn", "en_us", "ja_jp", "ko_kr", "ru-ru"],
|
|
93
|
+
}
|
|
41
94
|
|
|
42
95
|
_WS_HOST = "iat-api.xfyun.cn"
|
|
43
96
|
_WS_PATH = "/v2/iat"
|
|
@@ -55,7 +108,25 @@ class IflytekSTT(STTProvider):
|
|
|
55
108
|
if self._client is None:
|
|
56
109
|
self._client = httpx.AsyncClient(timeout=60.0)
|
|
57
110
|
self._owns_client = True
|
|
58
|
-
|
|
111
|
+
# Surface the effective language (after alias mapping) and
|
|
112
|
+
# vad_eos at startup so deployments can verify the iFlytek model
|
|
113
|
+
# and silence-finalization threshold that will actually run.
|
|
114
|
+
# The 04-28 audit caught a deployment shipping ``language: en``
|
|
115
|
+
# (invalid) which silently routed every request to the Chinese
|
|
116
|
+
# model; an analogous oversight on vad_eos would silently
|
|
117
|
+
# double the user-perceived latency. Logging both makes
|
|
118
|
+
# mis-config obvious from the first request.
|
|
119
|
+
effective = _canonical_language(self.settings.language)
|
|
120
|
+
if effective != self.settings.language:
|
|
121
|
+
logger.info(
|
|
122
|
+
"{} provider started, language={!r} (canonicalized from {!r}), vad_eos={}ms",
|
|
123
|
+
self.name, effective, self.settings.language, self.settings.vad_eos,
|
|
124
|
+
)
|
|
125
|
+
else:
|
|
126
|
+
logger.info(
|
|
127
|
+
"{} provider started, language={!r}, vad_eos={}ms",
|
|
128
|
+
self.name, effective, self.settings.vad_eos,
|
|
129
|
+
)
|
|
59
130
|
|
|
60
131
|
async def stop(self) -> None:
|
|
61
132
|
if self._client and self._owns_client:
|
|
@@ -138,15 +209,31 @@ class IflytekSTT(STTProvider):
|
|
|
138
209
|
frame_data = base64.b64encode(chunk).decode("utf-8")
|
|
139
210
|
|
|
140
211
|
if status == 0:
|
|
141
|
-
# First frame includes common and business params
|
|
212
|
+
# First frame includes common and business params.
|
|
213
|
+
# ``accent="mandarin"`` is only meaningful for the
|
|
214
|
+
# Chinese model; sending it on en_us / ja_jp / etc.
|
|
215
|
+
# is a wire-level no-op on iFlytek's side but
|
|
216
|
+
# confuses anyone reading the request body, so
|
|
217
|
+
# gate it on the canonical language.
|
|
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)
|
|
227
|
+
business = {
|
|
228
|
+
"language": canon,
|
|
229
|
+
"domain": "iat",
|
|
230
|
+
"vad_eos": eos,
|
|
231
|
+
}
|
|
232
|
+
if canon == "zh_cn":
|
|
233
|
+
business["accent"] = "mandarin"
|
|
142
234
|
msg = {
|
|
143
235
|
"common": {"app_id": self.settings.app_id},
|
|
144
|
-
"business":
|
|
145
|
-
"language": self.settings.language,
|
|
146
|
-
"domain": "iat",
|
|
147
|
-
"accent": "mandarin",
|
|
148
|
-
"vad_eos": 2000,
|
|
149
|
-
},
|
|
236
|
+
"business": business,
|
|
150
237
|
"data": {
|
|
151
238
|
"status": 0,
|
|
152
239
|
"format": "audio/L16;rate=16000",
|
|
@@ -209,7 +296,7 @@ class IflytekSTT(STTProvider):
|
|
|
209
296
|
return "".join(parts)
|
|
210
297
|
|
|
211
298
|
async def transcribe_stream(
|
|
212
|
-
self, stream: AsyncIterator[bytes]
|
|
299
|
+
self, stream: AsyncIterator[bytes], opts: STTOptions | None = None,
|
|
213
300
|
) -> AsyncIterator[Transcription]:
|
|
214
301
|
"""Stream audio chunks to iFlytek via WebSocket and yield transcriptions.
|
|
215
302
|
|
|
@@ -263,15 +350,26 @@ class IflytekSTT(STTProvider):
|
|
|
263
350
|
break
|
|
264
351
|
frame_data = base64.b64encode(chunk).decode("utf-8")
|
|
265
352
|
if is_first:
|
|
353
|
+
# See transcribe() for rationale on
|
|
354
|
+
# canonicalizing language and gating accent.
|
|
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)
|
|
362
|
+
business = {
|
|
363
|
+
"language": canon,
|
|
364
|
+
"domain": "iat",
|
|
365
|
+
"dwa": "wpgs",
|
|
366
|
+
"vad_eos": eos,
|
|
367
|
+
}
|
|
368
|
+
if canon == "zh_cn":
|
|
369
|
+
business["accent"] = "mandarin"
|
|
266
370
|
msg = {
|
|
267
371
|
"common": {"app_id": self.settings.app_id},
|
|
268
|
-
"business":
|
|
269
|
-
"language": self.settings.language,
|
|
270
|
-
"domain": "iat",
|
|
271
|
-
"accent": "mandarin",
|
|
272
|
-
"dwa": "wpgs",
|
|
273
|
-
"vad_eos": 2000,
|
|
274
|
-
},
|
|
372
|
+
"business": business,
|
|
275
373
|
"data": {
|
|
276
374
|
"status": 0,
|
|
277
375
|
"format": "audio/L16;rate=16000",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.1 → 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.1 → openspeechapi-0.2.4}/docs/superpowers/specs/2026-04-03-hot-lazy-loading.md
RENAMED
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.1 → 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.1 → 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.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/__init__.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/docker_backend.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/backends/native_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/faster_whisper.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/fish_speech.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.1 → openspeechapi-0.2.4}/openspeechapi/local_engines/engines/sherpa_onnx.py
RENAMED
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.1 → 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
|