@they-juanreina/compost-cli 0.1.2 → 0.1.4
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.
- package/dist/commands/agreement.d.ts +3 -0
- package/dist/commands/agreement.d.ts.map +1 -0
- package/dist/commands/agreement.js +35 -0
- package/dist/commands/agreement.js.map +1 -0
- package/dist/commands/backup.d.ts +3 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +31 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +3 -2
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +39 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +47 -4
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts +3 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +64 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +1 -0
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/jobs.d.ts +3 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +105 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/label.d.ts +3 -0
- package/dist/commands/label.d.ts.map +1 -0
- package/dist/commands/label.js +67 -0
- package/dist/commands/label.js.map +1 -0
- package/dist/commands/models.d.ts.map +1 -1
- package/dist/commands/models.js +2 -1
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/recode.d.ts +3 -0
- package/dist/commands/recode.d.ts.map +1 -0
- package/dist/commands/recode.js +60 -0
- package/dist/commands/recode.js.map +1 -0
- package/dist/commands/reindex.d.ts.map +1 -1
- package/dist/commands/reindex.js +19 -7
- package/dist/commands/reindex.js.map +1 -1
- package/dist/commands/rerun.d.ts +3 -0
- package/dist/commands/rerun.d.ts.map +1 -0
- package/dist/commands/rerun.js +91 -0
- package/dist/commands/rerun.js.map +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +12 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/secrets.d.ts +3 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +145 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +95 -2
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/setupItem.d.ts +26 -0
- package/dist/commands/setupItem.d.ts.map +1 -0
- package/dist/commands/setupItem.js +145 -0
- package/dist/commands/setupItem.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/transcribe.d.ts.map +1 -1
- package/dist/commands/transcribe.js +32 -4
- package/dist/commands/transcribe.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +29 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +53 -6
- package/dist/commands/watch.js.map +1 -1
- package/dist/engine.d.ts +23 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +32 -0
- package/dist/engine.js.map +1 -0
- package/dist/errors.d.ts +5 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -0
- package/dist/errors.js.map +1 -1
- package/dist/exporters/pdf.d.ts.map +1 -1
- package/dist/exporters/pdf.js +2 -1
- package/dist/exporters/pdf.js.map +1 -1
- package/dist/exporters/prov.d.ts +11 -0
- package/dist/exporters/prov.d.ts.map +1 -0
- package/dist/exporters/prov.js +151 -0
- package/dist/exporters/prov.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy_client.d.ts.map +1 -1
- package/dist/legacy_client.js +2 -1
- package/dist/legacy_client.js.map +1 -1
- package/dist/lib/agreement.d.ts +77 -0
- package/dist/lib/agreement.d.ts.map +1 -0
- package/dist/lib/agreement.js +261 -0
- package/dist/lib/agreement.js.map +1 -0
- package/dist/lib/artifacts.d.ts +35 -2
- package/dist/lib/artifacts.d.ts.map +1 -1
- package/dist/lib/artifacts.js +158 -29
- package/dist/lib/artifacts.js.map +1 -1
- package/dist/lib/backup.d.ts +37 -0
- package/dist/lib/backup.d.ts.map +1 -0
- package/dist/lib/backup.js +57 -0
- package/dist/lib/backup.js.map +1 -0
- package/dist/lib/childEnv.d.ts +13 -0
- package/dist/lib/childEnv.d.ts.map +1 -0
- package/dist/lib/childEnv.js +45 -0
- package/dist/lib/childEnv.js.map +1 -0
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/doctor.d.ts +3 -0
- package/dist/lib/doctor.d.ts.map +1 -1
- package/dist/lib/doctor.js +24 -1
- package/dist/lib/doctor.js.map +1 -1
- package/dist/lib/events.d.ts +44 -1
- package/dist/lib/events.d.ts.map +1 -1
- package/dist/lib/events.js +55 -2
- package/dist/lib/events.js.map +1 -1
- package/dist/lib/importTranscript.d.ts +16 -0
- package/dist/lib/importTranscript.d.ts.map +1 -0
- package/dist/lib/importTranscript.js +94 -0
- package/dist/lib/importTranscript.js.map +1 -0
- package/dist/lib/ingest.d.ts.map +1 -1
- package/dist/lib/ingest.js +12 -6
- package/dist/lib/ingest.js.map +1 -1
- package/dist/lib/journal.d.ts +13 -4
- package/dist/lib/journal.d.ts.map +1 -1
- package/dist/lib/journal.js +53 -16
- package/dist/lib/journal.js.map +1 -1
- package/dist/lib/legacyNative.d.ts +17 -0
- package/dist/lib/legacyNative.d.ts.map +1 -0
- package/dist/lib/legacyNative.js +38 -0
- package/dist/lib/legacyNative.js.map +1 -0
- package/dist/lib/migrate.d.ts.map +1 -1
- package/dist/lib/migrate.js +9 -2
- package/dist/lib/migrate.js.map +1 -1
- package/dist/lib/nativeRuntime.d.ts +31 -0
- package/dist/lib/nativeRuntime.d.ts.map +1 -1
- package/dist/lib/nativeRuntime.js +38 -0
- package/dist/lib/nativeRuntime.js.map +1 -1
- package/dist/lib/pathSafe.d.ts +8 -0
- package/dist/lib/pathSafe.d.ts.map +1 -0
- package/dist/lib/pathSafe.js +12 -0
- package/dist/lib/pathSafe.js.map +1 -0
- package/dist/lib/provisionNative.d.ts.map +1 -1
- package/dist/lib/provisionNative.js +7 -3
- package/dist/lib/provisionNative.js.map +1 -1
- package/dist/lib/queue.d.ts +25 -0
- package/dist/lib/queue.d.ts.map +1 -1
- package/dist/lib/queue.js +70 -3
- package/dist/lib/queue.js.map +1 -1
- package/dist/lib/reads.d.ts +24 -0
- package/dist/lib/reads.d.ts.map +1 -0
- package/dist/lib/reads.js +115 -0
- package/dist/lib/reads.js.map +1 -0
- package/dist/lib/recode.d.ts +19 -0
- package/dist/lib/recode.d.ts.map +1 -0
- package/dist/lib/recode.js +43 -0
- package/dist/lib/recode.js.map +1 -0
- package/dist/lib/redact.d.ts +7 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +45 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/rerun.d.ts +51 -0
- package/dist/lib/rerun.d.ts.map +1 -0
- package/dist/lib/rerun.js +160 -0
- package/dist/lib/rerun.js.map +1 -0
- package/dist/lib/retrieve.d.ts +8 -4
- package/dist/lib/retrieve.d.ts.map +1 -1
- package/dist/lib/retrieve.js +14 -3
- package/dist/lib/retrieve.js.map +1 -1
- package/dist/lib/saturate.js +3 -3
- package/dist/lib/saturate.js.map +1 -1
- package/dist/lib/schemas.generated.d.ts.map +1 -1
- package/dist/lib/schemas.generated.js +28 -0
- package/dist/lib/schemas.generated.js.map +1 -1
- package/dist/lib/secrets.d.ts +158 -0
- package/dist/lib/secrets.d.ts.map +1 -0
- package/dist/lib/secrets.js +514 -0
- package/dist/lib/secrets.js.map +1 -0
- package/dist/lib/seed.d.ts +5 -0
- package/dist/lib/seed.d.ts.map +1 -1
- package/dist/lib/seed.js +15 -2
- package/dist/lib/seed.js.map +1 -1
- package/dist/lib/seedResolve.d.ts +5 -0
- package/dist/lib/seedResolve.d.ts.map +1 -1
- package/dist/lib/seedResolve.js +12 -3
- package/dist/lib/seedResolve.js.map +1 -1
- package/dist/lib/session.d.ts +14 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +53 -4
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/sessionId.d.ts +9 -0
- package/dist/lib/sessionId.d.ts.map +1 -0
- package/dist/lib/sessionId.js +37 -0
- package/dist/lib/sessionId.js.map +1 -0
- package/dist/lib/setup.d.ts +9 -0
- package/dist/lib/setup.d.ts.map +1 -1
- package/dist/lib/setup.js +97 -29
- package/dist/lib/setup.js.map +1 -1
- package/dist/lib/setupItem.d.ts +99 -0
- package/dist/lib/setupItem.d.ts.map +1 -0
- package/dist/lib/setupItem.js +262 -0
- package/dist/lib/setupItem.js.map +1 -0
- package/dist/lib/setupWizard.d.ts +53 -0
- package/dist/lib/setupWizard.d.ts.map +1 -0
- package/dist/lib/setupWizard.js +347 -0
- package/dist/lib/setupWizard.js.map +1 -0
- package/dist/lib/snap.d.ts.map +1 -1
- package/dist/lib/snap.js +5 -0
- package/dist/lib/snap.js.map +1 -1
- package/dist/lib/speakers.d.ts +41 -0
- package/dist/lib/speakers.d.ts.map +1 -0
- package/dist/lib/speakers.js +78 -0
- package/dist/lib/speakers.js.map +1 -0
- package/dist/lib/status.d.ts.map +1 -1
- package/dist/lib/status.js +21 -0
- package/dist/lib/status.js.map +1 -1
- package/dist/lib/stdin.d.ts +5 -0
- package/dist/lib/stdin.d.ts.map +1 -0
- package/dist/lib/stdin.js +12 -0
- package/dist/lib/stdin.js.map +1 -0
- package/dist/lib/transcribeNative.d.ts +4 -9
- package/dist/lib/transcribeNative.d.ts.map +1 -1
- package/dist/lib/transcribeNative.js +11 -26
- package/dist/lib/transcribeNative.js.map +1 -1
- package/dist/lib/userConfig.d.ts +22 -0
- package/dist/lib/userConfig.d.ts.map +1 -0
- package/dist/lib/userConfig.js +67 -0
- package/dist/lib/userConfig.js.map +1 -0
- package/dist/lib/validate.d.ts +18 -0
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +71 -1
- package/dist/lib/validate.js.map +1 -1
- package/dist/lib/version.d.ts +30 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +65 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/llm/adapter.d.ts +5 -0
- package/dist/llm/adapter.d.ts.map +1 -1
- package/dist/llm/adapter.js +27 -8
- package/dist/llm/adapter.js.map +1 -1
- package/dist/llm/http.d.ts +22 -1
- package/dist/llm/http.d.ts.map +1 -1
- package/dist/llm/http.js +52 -30
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/providers/anthropic.d.ts.map +1 -1
- package/dist/llm/providers/anthropic.js +6 -9
- package/dist/llm/providers/anthropic.js.map +1 -1
- package/dist/llm/providers/ollama.d.ts.map +1 -1
- package/dist/llm/providers/ollama.js +8 -7
- package/dist/llm/providers/ollama.js.map +1 -1
- package/dist/llm/providers/openai_compatible.d.ts.map +1 -1
- package/dist/llm/providers/openai_compatible.js +2 -7
- package/dist/llm/providers/openai_compatible.js.map +1 -1
- package/dist/logging.d.ts.map +1 -1
- package/dist/logging.js +3 -1
- package/dist/logging.js.map +1 -1
- package/dist/loops/embed_worker.d.ts +3 -0
- package/dist/loops/embed_worker.d.ts.map +1 -1
- package/dist/loops/embed_worker.js +11 -4
- package/dist/loops/embed_worker.js.map +1 -1
- package/dist/loops/ingest_watcher.d.ts.map +1 -1
- package/dist/loops/ingest_watcher.js +6 -3
- package/dist/loops/ingest_watcher.js.map +1 -1
- package/dist/loops/legacy_worker.d.ts +28 -1
- package/dist/loops/legacy_worker.d.ts.map +1 -1
- package/dist/loops/legacy_worker.js +91 -10
- package/dist/loops/legacy_worker.js.map +1 -1
- package/dist/loops/supervisor.d.ts +7 -0
- package/dist/loops/supervisor.d.ts.map +1 -1
- package/dist/loops/supervisor.js +17 -2
- package/dist/loops/supervisor.js.map +1 -1
- package/dist/loops/synthesis.d.ts.map +1 -1
- package/dist/loops/synthesis.js +15 -0
- package/dist/loops/synthesis.js.map +1 -1
- package/dist/loops/transcribe_worker.d.ts +3 -0
- package/dist/loops/transcribe_worker.d.ts.map +1 -1
- package/dist/loops/transcribe_worker.js +15 -7
- package/dist/loops/transcribe_worker.js.map +1 -1
- package/dist/output.d.ts +13 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +27 -6
- package/dist/output.js.map +1 -1
- package/dist/render/glyphs.d.ts +30 -0
- package/dist/render/glyphs.d.ts.map +1 -0
- package/dist/render/glyphs.js +38 -0
- package/dist/render/glyphs.js.map +1 -0
- package/dist/render/human.d.ts +22 -0
- package/dist/render/human.d.ts.map +1 -0
- package/dist/render/human.js +62 -0
- package/dist/render/human.js.map +1 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +32 -4
- package/dist/router.js.map +1 -1
- package/dist/transcriber_client.d.ts.map +1 -1
- package/dist/transcriber_client.js +2 -1
- package/dist/transcriber_client.js.map +1 -1
- package/package.json +12 -5
- package/templates/AGENTS.md +1 -1
- package/templates/config.toml +6 -1
- package/transcriber/app/diarization.py +36 -6
- package/transcriber/app/legacy_cli.py +90 -0
- package/transcriber/app/pipeline.py +13 -7
- package/transcriber/app/prosody.py +5 -0
- package/transcriber/app/transcribe_cli.py +15 -1
- package/transcriber/app/vad.py +82 -11
package/transcriber/app/vad.py
CHANGED
|
@@ -23,6 +23,10 @@ MIN_FIRST_CLASS_SILENCE_MS = 1500
|
|
|
23
23
|
class Segment:
|
|
24
24
|
start_ms: int
|
|
25
25
|
end_ms: int
|
|
26
|
+
# Mean RMS energy over the segment's waveform (raw amplitude, ~0..1; speech
|
|
27
|
+
# peaks well below 1.0). `None` when the backend doesn't report it — the
|
|
28
|
+
# prosody stage then leaves volume at "normal" rather than guessing.
|
|
29
|
+
energy: float | None = None
|
|
26
30
|
|
|
27
31
|
@property
|
|
28
32
|
def duration_ms(self) -> int:
|
|
@@ -30,7 +34,10 @@ class Segment:
|
|
|
30
34
|
|
|
31
35
|
|
|
32
36
|
class VADBackend(Protocol):
|
|
33
|
-
def speech_timestamps(self, audio_path: str) -> list[dict[str,
|
|
37
|
+
def speech_timestamps(self, audio_path: str) -> list[dict[str, Any]]:
|
|
38
|
+
"""Return speech segments as ``{"start_ms", "end_ms"}`` dicts, optionally
|
|
39
|
+
with a float ``"energy"`` (mean RMS over the segment)."""
|
|
40
|
+
...
|
|
34
41
|
|
|
35
42
|
|
|
36
43
|
SILERO_SAMPLE_RATE = 16000
|
|
@@ -60,7 +67,7 @@ class SileroBackend: # pragma: no cover - needs torch + weights
|
|
|
60
67
|
self._read_audio = read_audio
|
|
61
68
|
self._get_speech_timestamps = get_speech_timestamps
|
|
62
69
|
|
|
63
|
-
def speech_timestamps(self, audio_path: str) -> list[dict[str,
|
|
70
|
+
def speech_timestamps(self, audio_path: str) -> list[dict[str, Any]]:
|
|
64
71
|
wav = self._read_audio(audio_path, sampling_rate=SILERO_SAMPLE_RATE)
|
|
65
72
|
raw = self._get_speech_timestamps(
|
|
66
73
|
wav,
|
|
@@ -68,15 +75,23 @@ class SileroBackend: # pragma: no cover - needs torch + weights
|
|
|
68
75
|
sampling_rate=SILERO_SAMPLE_RATE,
|
|
69
76
|
return_seconds=False,
|
|
70
77
|
)
|
|
71
|
-
# `raw` is a list of {start, end} in samples; convert to ms
|
|
78
|
+
# `raw` is a list of {start, end} in samples; convert to ms and compute
|
|
79
|
+
# the mean RMS energy over each segment's waveform window (#9 → #13).
|
|
80
|
+
# `wav` is a mono float tensor in [-1, 1]; RMS = sqrt(mean(x^2)).
|
|
72
81
|
ms_per_sample = 1000 / SILERO_SAMPLE_RATE
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
82
|
+
out: list[dict[str, Any]] = []
|
|
83
|
+
for seg in raw:
|
|
84
|
+
start_sample, end_sample = int(seg["start"]), int(seg["end"])
|
|
85
|
+
window = wav[start_sample:end_sample]
|
|
86
|
+
rms = float(window.pow(2).mean().sqrt()) if window.numel() else 0.0
|
|
87
|
+
out.append(
|
|
88
|
+
{
|
|
89
|
+
"start_ms": int(seg["start"] * ms_per_sample),
|
|
90
|
+
"end_ms": int(seg["end"] * ms_per_sample),
|
|
91
|
+
"energy": rms,
|
|
92
|
+
}
|
|
93
|
+
)
|
|
94
|
+
return out
|
|
80
95
|
|
|
81
96
|
|
|
82
97
|
@lru_cache(maxsize=1)
|
|
@@ -130,6 +145,55 @@ def silences_to_schema(silences: list[Segment]) -> list[dict[str, Any]]:
|
|
|
130
145
|
return out
|
|
131
146
|
|
|
132
147
|
|
|
148
|
+
def utterance_energies(
|
|
149
|
+
speech: list[Segment],
|
|
150
|
+
utterances: list[dict[str, Any]],
|
|
151
|
+
) -> dict[str, float]:
|
|
152
|
+
"""Map utterance id → mean VAD RMS energy, normalized 0..1 across the session.
|
|
153
|
+
|
|
154
|
+
Pure. Feeds ``prosody.annotate_prosody(transcript, energies=...)`` so the
|
|
155
|
+
low|normal|high volume bucketing actually runs (without this signal volume
|
|
156
|
+
defaults to "normal" for every utterance).
|
|
157
|
+
|
|
158
|
+
Each utterance's raw energy is the overlap-duration-weighted mean RMS of the
|
|
159
|
+
speech segments it spans; segments with no energy reading are ignored. Raw
|
|
160
|
+
speech RMS peaks far below 1.0, so applying prosody's fixed 0.33/0.66 split
|
|
161
|
+
to raw values would bucket everything as "low" — we normalize by the loudest
|
|
162
|
+
utterance in the session so the split is meaningful and reproducible.
|
|
163
|
+
Utterances with no overlapping energy-bearing segment are omitted, so the
|
|
164
|
+
caller reports "normal" rather than guessing.
|
|
165
|
+
|
|
166
|
+
TODO(#13): normalization is per-session (global max) and prosody's
|
|
167
|
+
VOLUME_LOW/HIGH are global constants, so a soft speaker's loudest moment
|
|
168
|
+
still reads quieter than a loud speaker's baseline. Per-speaker
|
|
169
|
+
normalization (group by ``utterance["speaker_id"]`` and normalize within
|
|
170
|
+
each speaker) would make the buckets speaker-relative. Out of scope here.
|
|
171
|
+
"""
|
|
172
|
+
raw: dict[str, float] = {}
|
|
173
|
+
for utt in utterances:
|
|
174
|
+
uid = utt.get("id")
|
|
175
|
+
if uid is None:
|
|
176
|
+
continue
|
|
177
|
+
u_start, u_end = utt.get("start_ms", 0), utt.get("end_ms", 0)
|
|
178
|
+
weighted_sum = 0.0
|
|
179
|
+
total_overlap = 0
|
|
180
|
+
for seg in speech:
|
|
181
|
+
if seg.energy is None:
|
|
182
|
+
continue
|
|
183
|
+
overlap = min(u_end, seg.end_ms) - max(u_start, seg.start_ms)
|
|
184
|
+
if overlap <= 0:
|
|
185
|
+
continue
|
|
186
|
+
weighted_sum += seg.energy * overlap
|
|
187
|
+
total_overlap += overlap
|
|
188
|
+
if total_overlap > 0:
|
|
189
|
+
raw[uid] = weighted_sum / total_overlap
|
|
190
|
+
|
|
191
|
+
peak = max(raw.values(), default=0.0)
|
|
192
|
+
if peak <= 0:
|
|
193
|
+
return {}
|
|
194
|
+
return {uid: value / peak for uid, value in raw.items()}
|
|
195
|
+
|
|
196
|
+
|
|
133
197
|
class VAD:
|
|
134
198
|
def __init__(self, backend: VADBackend | None = None):
|
|
135
199
|
self._backend = backend
|
|
@@ -140,6 +204,13 @@ class VAD:
|
|
|
140
204
|
def segment(self, audio_path: str, total_duration_ms: int) -> tuple[list[Segment], list[Segment]]:
|
|
141
205
|
"""Return (speech_segments, first_class_silences)."""
|
|
142
206
|
raw = self._get_backend().speech_timestamps(audio_path)
|
|
143
|
-
speech = [
|
|
207
|
+
speech = [
|
|
208
|
+
Segment(
|
|
209
|
+
int(t["start_ms"]),
|
|
210
|
+
int(t["end_ms"]),
|
|
211
|
+
float(t["energy"]) if t.get("energy") is not None else None,
|
|
212
|
+
)
|
|
213
|
+
for t in raw
|
|
214
|
+
]
|
|
144
215
|
silences = speech_to_silences(speech, total_duration_ms)
|
|
145
216
|
return speech, silences
|