openspeechapi 0.1.0__py3-none-any.whl
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.
- openspeech/__init__.py +75 -0
- openspeech/__main__.py +5 -0
- openspeech/cli.py +413 -0
- openspeech/client/__init__.py +4 -0
- openspeech/client/client.py +145 -0
- openspeech/config.py +212 -0
- openspeech/core/__init__.py +0 -0
- openspeech/core/base.py +75 -0
- openspeech/core/enums.py +39 -0
- openspeech/core/models.py +61 -0
- openspeech/core/registry.py +37 -0
- openspeech/core/settings.py +8 -0
- openspeech/demo.py +675 -0
- openspeech/dispatch/__init__.py +0 -0
- openspeech/dispatch/context.py +34 -0
- openspeech/dispatch/dispatcher.py +661 -0
- openspeech/dispatch/executors/__init__.py +0 -0
- openspeech/dispatch/executors/base.py +34 -0
- openspeech/dispatch/executors/in_process.py +66 -0
- openspeech/dispatch/executors/remote.py +64 -0
- openspeech/dispatch/executors/subprocess_exec.py +446 -0
- openspeech/dispatch/fanout.py +95 -0
- openspeech/dispatch/filters.py +73 -0
- openspeech/dispatch/lifecycle.py +178 -0
- openspeech/dispatch/watcher.py +82 -0
- openspeech/engine_catalog.py +236 -0
- openspeech/engine_registry.yaml +347 -0
- openspeech/exceptions.py +51 -0
- openspeech/factory.py +325 -0
- openspeech/local_engines/__init__.py +12 -0
- openspeech/local_engines/aim_resolver.py +91 -0
- openspeech/local_engines/backends/__init__.py +1 -0
- openspeech/local_engines/backends/docker_backend.py +490 -0
- openspeech/local_engines/backends/native_backend.py +902 -0
- openspeech/local_engines/base.py +30 -0
- openspeech/local_engines/engines/__init__.py +1 -0
- openspeech/local_engines/engines/faster_whisper.py +36 -0
- openspeech/local_engines/engines/fish_speech.py +33 -0
- openspeech/local_engines/engines/sherpa_onnx.py +56 -0
- openspeech/local_engines/engines/whisper.py +41 -0
- openspeech/local_engines/engines/whisperlivekit.py +60 -0
- openspeech/local_engines/manager.py +208 -0
- openspeech/local_engines/models.py +50 -0
- openspeech/local_engines/progress.py +69 -0
- openspeech/local_engines/registry.py +19 -0
- openspeech/local_engines/task_store.py +52 -0
- openspeech/local_engines/tasks.py +71 -0
- openspeech/logging_config.py +607 -0
- openspeech/observe/__init__.py +0 -0
- openspeech/observe/base.py +79 -0
- openspeech/observe/debug.py +44 -0
- openspeech/observe/latency.py +19 -0
- openspeech/observe/metrics.py +47 -0
- openspeech/observe/tracing.py +44 -0
- openspeech/observe/usage.py +27 -0
- openspeech/providers/__init__.py +0 -0
- openspeech/providers/_template.py +101 -0
- openspeech/providers/stt/__init__.py +0 -0
- openspeech/providers/stt/alibaba.py +86 -0
- openspeech/providers/stt/assemblyai.py +135 -0
- openspeech/providers/stt/azure_speech.py +99 -0
- openspeech/providers/stt/baidu.py +135 -0
- openspeech/providers/stt/deepgram.py +311 -0
- openspeech/providers/stt/elevenlabs.py +385 -0
- openspeech/providers/stt/faster_whisper.py +211 -0
- openspeech/providers/stt/google_cloud.py +106 -0
- openspeech/providers/stt/iflytek.py +427 -0
- openspeech/providers/stt/macos_speech.py +226 -0
- openspeech/providers/stt/openai.py +84 -0
- openspeech/providers/stt/sherpa_onnx.py +353 -0
- openspeech/providers/stt/tencent.py +212 -0
- openspeech/providers/stt/volcengine.py +107 -0
- openspeech/providers/stt/whisper.py +153 -0
- openspeech/providers/stt/whisperlivekit.py +530 -0
- openspeech/providers/stt/windows_speech.py +249 -0
- openspeech/providers/tts/__init__.py +0 -0
- openspeech/providers/tts/alibaba.py +95 -0
- openspeech/providers/tts/azure_speech.py +123 -0
- openspeech/providers/tts/baidu.py +143 -0
- openspeech/providers/tts/coqui.py +64 -0
- openspeech/providers/tts/cosyvoice.py +90 -0
- openspeech/providers/tts/deepgram.py +174 -0
- openspeech/providers/tts/elevenlabs.py +311 -0
- openspeech/providers/tts/fish_speech.py +158 -0
- openspeech/providers/tts/google_cloud.py +107 -0
- openspeech/providers/tts/iflytek.py +209 -0
- openspeech/providers/tts/macos_say.py +251 -0
- openspeech/providers/tts/minimax.py +122 -0
- openspeech/providers/tts/openai.py +104 -0
- openspeech/providers/tts/piper.py +104 -0
- openspeech/providers/tts/tencent.py +189 -0
- openspeech/providers/tts/volcengine.py +117 -0
- openspeech/providers/tts/windows_sapi.py +234 -0
- openspeech/server/__init__.py +1 -0
- openspeech/server/app.py +72 -0
- openspeech/server/auth.py +42 -0
- openspeech/server/middleware.py +75 -0
- openspeech/server/routes/__init__.py +1 -0
- openspeech/server/routes/management.py +848 -0
- openspeech/server/routes/stt.py +121 -0
- openspeech/server/routes/tts.py +159 -0
- openspeech/server/routes/webui.py +29 -0
- openspeech/server/webui/app.js +2649 -0
- openspeech/server/webui/index.html +216 -0
- openspeech/server/webui/styles.css +617 -0
- openspeech/server/ws/__init__.py +1 -0
- openspeech/server/ws/stt_stream.py +263 -0
- openspeech/server/ws/tts_stream.py +207 -0
- openspeech/telemetry/__init__.py +21 -0
- openspeech/telemetry/perf.py +307 -0
- openspeech/utils/__init__.py +5 -0
- openspeech/utils/audio_converter.py +406 -0
- openspeech/utils/audio_playback.py +156 -0
- openspeech/vendor_registry.yaml +74 -0
- openspeechapi-0.1.0.dist-info/METADATA +101 -0
- openspeechapi-0.1.0.dist-info/RECORD +118 -0
- openspeechapi-0.1.0.dist-info/WHEEL +4 -0
- openspeechapi-0.1.0.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""HTTP middleware for request_id injection and route-level perf logging."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import time
|
|
5
|
+
import uuid
|
|
6
|
+
|
|
7
|
+
from starlette.middleware.base import BaseHTTPMiddleware
|
|
8
|
+
from starlette.requests import Request
|
|
9
|
+
from starlette.responses import Response
|
|
10
|
+
from starlette.types import ASGIApp
|
|
11
|
+
|
|
12
|
+
from openspeech.logging_config import bind_context
|
|
13
|
+
from openspeech.telemetry.perf import Event, milestone
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
REQUEST_ID_HEADER = "X-Request-Id"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class RequestContextMiddleware(BaseHTTPMiddleware):
|
|
20
|
+
"""Generate/propagate ``X-Request-Id`` and emit HTTP perf events.
|
|
21
|
+
|
|
22
|
+
Order of precedence for the id:
|
|
23
|
+
1. Inbound ``X-Request-Id`` header (so callers can correlate across
|
|
24
|
+
services).
|
|
25
|
+
2. A new 12-hex-char id if the header is absent.
|
|
26
|
+
|
|
27
|
+
Every request emits two structured records:
|
|
28
|
+
- ``http.request_start`` (perf level: verbose)
|
|
29
|
+
- ``http.request_end`` (perf level: basic, carries ``elapsed_ms``
|
|
30
|
+
and ``status_code``)
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
def __init__(self, app: ASGIApp) -> None:
|
|
34
|
+
super().__init__(app)
|
|
35
|
+
|
|
36
|
+
async def dispatch(self, request: Request, call_next) -> Response:
|
|
37
|
+
inbound = request.headers.get(REQUEST_ID_HEADER)
|
|
38
|
+
request_id = inbound or uuid.uuid4().hex[:12]
|
|
39
|
+
# Expose request_id on the ASGI scope so handlers can read it.
|
|
40
|
+
request.state.request_id = request_id
|
|
41
|
+
|
|
42
|
+
start_ns = time.perf_counter_ns()
|
|
43
|
+
with bind_context(request_id=request_id):
|
|
44
|
+
milestone(
|
|
45
|
+
Event.HTTP_REQUEST_START,
|
|
46
|
+
level="verbose",
|
|
47
|
+
method=request.method,
|
|
48
|
+
path=request.url.path,
|
|
49
|
+
)
|
|
50
|
+
try:
|
|
51
|
+
response = await call_next(request)
|
|
52
|
+
except Exception as exc:
|
|
53
|
+
elapsed_ms = (time.perf_counter_ns() - start_ns) / 1_000_000
|
|
54
|
+
milestone(
|
|
55
|
+
Event.HTTP_REQUEST_END,
|
|
56
|
+
level="basic",
|
|
57
|
+
method=request.method,
|
|
58
|
+
path=request.url.path,
|
|
59
|
+
status_code=500,
|
|
60
|
+
elapsed_ms=elapsed_ms,
|
|
61
|
+
error_type=type(exc).__name__,
|
|
62
|
+
error_message=str(exc),
|
|
63
|
+
)
|
|
64
|
+
raise
|
|
65
|
+
elapsed_ms = (time.perf_counter_ns() - start_ns) / 1_000_000
|
|
66
|
+
response.headers[REQUEST_ID_HEADER] = request_id
|
|
67
|
+
milestone(
|
|
68
|
+
Event.HTTP_REQUEST_END,
|
|
69
|
+
level="basic",
|
|
70
|
+
method=request.method,
|
|
71
|
+
path=request.url.path,
|
|
72
|
+
status_code=response.status_code,
|
|
73
|
+
elapsed_ms=elapsed_ms,
|
|
74
|
+
)
|
|
75
|
+
return response
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Server route modules."""
|