@hypit/hypit 0.1.3 → 0.1.5
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/README.md +5 -3
- package/dist/public/caption.d.ts +206 -183
- package/dist/public/composition.d.ts +25 -3
- package/dist/public/endpoint-kit.d.ts +24 -2
- package/dist/public/generation.d.ts +5 -1
- package/dist/public/hyperframes.d.ts +19 -1
- package/dist/public/narrative.d.ts +17 -3
- package/dist/public/performance.d.ts +1590 -0
- package/dist/public/program-space.d.ts +179 -32
- package/dist/public/runtime-kit.d.ts +21 -8
- package/dist/public/sound.d.ts +822 -0
- package/dist/public/speech.d.ts +41 -0
- package/dist/public/studio-adapter.d.ts +107 -16
- package/dist/public/temporal-markup.d.ts +9 -44
- package/dist/public/temporal.d.ts +37 -28
- package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
- package/examples/README.md +18 -10
- package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
- package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
- package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
- package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
- package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
- package/examples/provider-package/README.md +78 -0
- package/examples/provider-package/hypit.runtime.json +12 -0
- package/examples/provider-package/packages/provider-images/package.json +11 -0
- package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
- package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
- package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
- package/examples/semantic-composition/README.md +6 -0
- package/examples/semantic-composition/chat.svml +6 -5
- package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
- package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
- package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
- package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
- package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
- package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
- package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
- package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
- package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
- package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
- package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
- package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
- package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
- package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
- package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
- package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
- package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
- package/package.json +35 -15
- package/packages/audio-track/README.md +20 -13
- package/packages/audio-track/package.json +1 -1
- package/packages/audio-track/src/component.ts +4 -4
- package/packages/audio-track/src/fragment.ts +6 -5
- package/packages/audio-track/src/index.ts +1 -1
- package/packages/audio-track/src/manifest.ts +17 -16
- package/packages/audio-track/src/program.ts +21 -25
- package/packages/audio-track/src/surface.ts +19 -18
- package/packages/audio-track-studio/README.md +23 -0
- package/packages/audio-track-studio/src/index.ts +33 -19
- package/packages/author-kit/README.md +1 -1
- package/packages/background-removal/README.md +4 -7
- package/packages/browser-capture/package.json +1 -1
- package/packages/build-result/README.md +69 -0
- package/packages/build-result/package.json +2 -1
- package/packages/build-result/src/decode.ts +12 -8
- package/packages/build-result/src/execution-log.ts +17 -0
- package/packages/build-result/src/file-reference.ts +42 -0
- package/packages/build-result/src/index.ts +4 -0
- package/packages/build-result/src/replace-file-windows.ts +58 -0
- package/packages/build-result/src/replace-file.ts +11 -0
- package/packages/build-result/src/store.ts +58 -14
- package/packages/build-result/src/types.ts +41 -8
- package/packages/build-result/src/writer.ts +12 -1
- package/packages/build-result-fs/README.md +23 -1
- package/packages/build-result-s3/README.md +5 -0
- package/packages/build-result-s3/src/repository.ts +23 -5
- package/packages/caption/README.md +61 -73
- package/packages/caption/package.json +3 -2
- package/packages/caption/src/activation.ts +2 -2
- package/packages/caption/src/component.ts +20 -5
- package/packages/caption/src/display.ts +3 -18
- package/packages/caption/src/fragment.ts +3 -7
- package/packages/caption/src/index.ts +6 -5
- package/packages/caption/src/manifest.ts +29 -46
- package/packages/caption/src/style.ts +24 -135
- package/packages/caption/src/surface.ts +12 -92
- package/packages/caption/src/temporalize.ts +18 -53
- package/packages/caption/src/types.ts +8 -35
- package/packages/caption/src/visibility.ts +23 -0
- package/packages/caption-fine/README.md +31 -11
- package/packages/caption-fine/package.json +4 -2
- package/packages/caption-fine/src/component.ts +3 -3
- package/packages/caption-fine/src/fragment.ts +7 -19
- package/packages/caption-fine/src/index.ts +2 -0
- package/packages/caption-fine/src/manifest.ts +27 -18
- package/packages/caption-fine/src/recipe.ts +7 -0
- package/packages/caption-fine/src/render.ts +62 -49
- package/packages/caption-fine/src/schedule.ts +39 -35
- package/packages/caption-fine/src/style.ts +10 -9
- package/packages/caption-fine/src/surface.ts +62 -35
- package/packages/caption-fine/src/types.ts +2 -0
- package/packages/caption-fine-studio/README.md +24 -2
- package/packages/caption-fine-studio/package.json +10 -3
- package/packages/caption-fine-studio/src/activation.ts +3 -3
- package/packages/caption-fine-studio/src/index.ts +61 -40
- package/packages/cli/README.md +81 -3
- package/packages/cli/package.json +1 -0
- package/packages/cli/src/arguments.ts +39 -15
- package/packages/cli/src/build-planning.ts +9 -3
- package/packages/cli/src/command.ts +7 -1
- package/packages/cli/src/commands/environment.ts +66 -27
- package/packages/cli/src/commands/execution.ts +81 -26
- package/packages/cli/src/commands/results.ts +7 -11
- package/packages/cli/src/index.ts +2 -2
- package/packages/cli/src/machine-view.ts +15 -5
- package/packages/cli/src/main.ts +38 -42
- package/packages/cli/src/observation.ts +7 -1
- package/packages/cli/src/output.ts +92 -34
- package/packages/cli/src/result-export.ts +22 -13
- package/packages/cli/src/run-file.ts +19 -8
- package/packages/cli/src/view.ts +64 -18
- package/packages/comment-sticker/README.md +3 -3
- package/packages/comment-sticker/package.json +1 -1
- package/packages/comment-sticker/src/component.ts +4 -4
- package/packages/comment-sticker/src/fragment.ts +5 -4
- package/packages/comment-sticker/src/manifest.ts +7 -6
- package/packages/comment-sticker/src/program.ts +9 -9
- package/packages/comment-sticker/src/surface.ts +6 -7
- package/packages/comment-sticker-studio/src/index.ts +2 -1
- package/packages/compiler-node/src/compiler.ts +1 -0
- package/packages/composition/README.md +21 -0
- package/packages/composition/src/audio-presentation.ts +44 -0
- package/packages/composition/src/index.ts +3 -0
- package/packages/composition/src/schema.ts +8 -3
- package/packages/composition/src/track.ts +15 -1
- package/packages/credential-store-env/README.md +1 -1
- package/packages/deck-track/README.md +3 -3
- package/packages/deck-track/package.json +1 -1
- package/packages/deck-track/src/component.ts +5 -5
- package/packages/deck-track/src/fragment.ts +6 -5
- package/packages/deck-track/src/lower.ts +12 -12
- package/packages/deck-track/src/manifest.ts +8 -7
- package/packages/deck-track/src/program.ts +13 -16
- package/packages/deck-track/src/surface.ts +9 -10
- package/packages/driver-node/src/driver.ts +41 -3
- package/packages/elevenlabs-speech/README.md +27 -0
- package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
- package/packages/elevenlabs-speech/src/activation.ts +26 -0
- package/packages/elevenlabs-speech/src/fragment.ts +11 -0
- package/packages/elevenlabs-speech/src/index.ts +111 -0
- package/packages/elevenlabs-speech/src/surface.ts +167 -0
- package/packages/endpoint-kit/README.md +24 -0
- package/packages/endpoint-kit/src/index.ts +7 -1
- package/packages/estimate/README.md +56 -3
- package/packages/estimate/src/program.ts +7 -8
- package/packages/film/README.md +12 -7
- package/packages/film/package.json +1 -1
- package/packages/film/src/component.ts +4 -4
- package/packages/film/src/fragment.ts +6 -5
- package/packages/film/src/manifest.ts +11 -10
- package/packages/film/src/program.ts +5 -5
- package/packages/film/src/recipe.ts +2 -1
- package/packages/film/src/surface.ts +6 -6
- package/packages/film-studio/package.json +1 -1
- package/packages/film-studio/src/index.ts +2 -2
- package/packages/fishaudio-speech/README.md +33 -0
- package/packages/fishaudio-speech/package.json +21 -0
- package/packages/fishaudio-speech/src/activation.ts +32 -0
- package/packages/fishaudio-speech/src/fragment.ts +11 -0
- package/packages/fishaudio-speech/src/index.ts +156 -0
- package/packages/fishaudio-speech/src/surface.ts +192 -0
- package/packages/fonts-open/README.md +5 -0
- package/packages/fonts-open/package.json +5 -1
- package/packages/fonts-open/src/studio.ts +21 -0
- package/packages/generation/README.md +11 -1
- package/packages/generation/src/mapping.ts +28 -30
- package/packages/gpt-image/README.md +1 -2
- package/packages/grok-imagine/README.md +1 -2
- package/packages/hyperframes/README.md +7 -3
- package/packages/hyperframes/src/browser-program.ts +11 -2
- package/packages/hyperframes/src/document.ts +15 -2
- package/packages/interview-emoji-reveal/README.md +4 -4
- package/packages/interview-emoji-reveal/package.json +1 -1
- package/packages/interview-emoji-reveal/src/component.ts +4 -4
- package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
- package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
- package/packages/interview-emoji-reveal/src/program.ts +14 -14
- package/packages/interview-emoji-reveal/src/surface.ts +8 -9
- package/packages/media-execution/README.md +7 -3
- package/packages/media-execution/src/audio-presentation.ts +23 -0
- package/packages/media-execution/src/execute.ts +2 -0
- package/packages/media-pipeline/README.md +7 -3
- package/packages/media-pipeline/src/audio-plan.ts +4 -1
- package/packages/media-pipeline/src/component.ts +16 -2
- package/packages/media-pipeline/src/manifest.ts +3 -1
- package/packages/media-pipeline/src/types.ts +2 -1
- package/packages/media-track/README.md +14 -47
- package/packages/media-track/package.json +1 -1
- package/packages/media-track/preview/preview.svml +5 -5
- package/packages/media-track/src/author.ts +12 -6
- package/packages/media-track/src/component.ts +10 -16
- package/packages/media-track/src/fragment.ts +8 -7
- package/packages/media-track/src/index.ts +3 -1
- package/packages/media-track/src/lower.ts +7 -7
- package/packages/media-track/src/manifest.ts +16 -38
- package/packages/media-track/src/program.ts +62 -67
- package/packages/media-track/src/sampling.ts +6 -6
- package/packages/media-track/src/sequence.ts +8 -8
- package/packages/media-track/src/surface.ts +25 -43
- package/packages/media-track-studio/README.md +9 -0
- package/packages/media-track-studio/src/index.ts +23 -13
- package/packages/mimo-speech/README.md +1 -1
- package/packages/minimax-h3/README.md +1 -1
- package/packages/nano-banana/README.md +1 -1
- package/packages/narrative/README.md +23 -1
- package/packages/narrative/src/identity.ts +11 -0
- package/packages/narrative/src/index.ts +3 -0
- package/packages/narrative/src/schema.ts +28 -27
- package/packages/narrative/src/selection.ts +52 -0
- package/packages/narrative/src/types.ts +2 -0
- package/packages/package-loader-node/README.md +30 -0
- package/packages/package-loader-node/package.json +5 -2
- package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
- package/packages/package-loader-node/src/index.ts +1 -0
- package/packages/package-loader-node/src/loader.ts +12 -15
- package/packages/package-loader-node/src/location.ts +27 -1
- package/packages/package-loader-node/src/module-scope.ts +183 -0
- package/packages/package-loader-node/src/types.ts +4 -0
- package/packages/performance/README.md +83 -0
- package/packages/performance/package.json +30 -0
- package/packages/performance/src/activation.ts +11 -0
- package/packages/performance/src/component.ts +46 -0
- package/packages/performance/src/index.ts +6 -0
- package/packages/performance/src/manifest.ts +53 -0
- package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
- package/packages/performance/src/program.ts +51 -0
- package/packages/performance/src/style.ts +35 -0
- package/packages/performance/src/surface.ts +99 -0
- package/packages/performance-studio/README.md +25 -0
- package/packages/performance-studio/package.json +21 -0
- package/packages/performance-studio/src/activation.ts +6 -0
- package/packages/performance-studio/src/index.ts +84 -0
- package/packages/program-space/README.md +9 -18
- package/packages/program-space/src/activation.ts +1 -5
- package/packages/program-space/src/index.ts +2 -11
- package/packages/program-space/src/surface.ts +1 -20
- package/packages/project-context-node/README.md +20 -0
- package/packages/project-context-node/package.json +10 -0
- package/packages/project-context-node/src/index.ts +3 -0
- package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
- package/packages/provider-hyperframes-local/README.md +43 -15
- package/packages/provider-hyperframes-local/src/activation.ts +4 -3
- package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
- package/packages/provider-hyperframes-local/src/capture.ts +96 -26
- package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
- package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
- package/packages/provider-hyperframes-local/src/options.ts +2 -0
- package/packages/provider-hyperframes-local/src/program.ts +6 -3
- package/packages/provider-hyperframes-local/src/progress.ts +53 -0
- package/packages/provider-hyperframes-local/src/provider.ts +18 -5
- package/packages/provider-hyperframes-local/src/render.ts +48 -7
- package/packages/provider-hypihub/README.md +48 -17
- package/packages/provider-hypihub/package.json +2 -0
- package/packages/provider-hypihub/src/mapping.ts +31 -7
- package/packages/provider-hypihub/src/oauth.ts +6 -0
- package/packages/provider-hypihub/src/provider.ts +25 -13
- package/packages/provider-hypihub/src/routes.ts +1 -2
- package/packages/provider-hypihub/src/upload.ts +2 -0
- package/packages/provider-media-local/README.md +3 -4
- package/packages/provider-whisperx-local/README.md +57 -0
- package/packages/provider-whisperx-local/src/program.ts +1 -0
- package/packages/provider-whisperx-local/src/provider.ts +3 -0
- package/packages/ranking/README.md +8 -6
- package/packages/ranking/package.json +1 -1
- package/packages/ranking/src/component.ts +6 -6
- package/packages/ranking/src/fragment.ts +11 -7
- package/packages/ranking/src/manifest.ts +21 -14
- package/packages/ranking/src/render.ts +33 -35
- package/packages/ranking/src/schedule.ts +16 -19
- package/packages/ranking/src/surface.ts +12 -13
- package/packages/ranking-studio/README.md +29 -0
- package/packages/ranking-studio/package.json +8 -3
- package/packages/ranking-studio/src/index.ts +71 -12
- package/packages/render-hyperframes/README.md +7 -7
- package/packages/render-hyperframes/package.json +1 -1
- package/packages/render-hyperframes/src/component.ts +11 -1
- package/packages/render-hyperframes/src/fragment.ts +7 -4
- package/packages/render-hyperframes/src/manifest.ts +4 -4
- package/packages/render-hyperframes/src/surface.ts +6 -6
- package/packages/runtime/README.md +8 -1
- package/packages/runtime/src/catalog.ts +2 -0
- package/packages/runtime/src/execution.ts +15 -4
- package/packages/runtime/src/index.ts +2 -1
- package/packages/runtime/src/log.ts +51 -0
- package/packages/runtime/src/types.ts +5 -8
- package/packages/runtime-host-node/README.md +30 -0
- package/packages/runtime-host-node/package.json +1 -0
- package/packages/runtime-host-node/src/index.ts +25 -9
- package/packages/runtime-host-node/src/packages.ts +47 -50
- package/packages/runtime-kit/README.md +5 -0
- package/packages/runtime-kit/src/index.ts +3 -1
- package/packages/runtime-local/README.md +111 -4
- package/packages/runtime-local/src/config.ts +202 -56
- package/packages/runtime-local/src/control.ts +9 -1
- package/packages/runtime-local/src/executor.ts +66 -0
- package/packages/runtime-local/src/host.ts +37 -17
- package/packages/runtime-local/src/log.ts +48 -0
- package/packages/runtime-local/src/programs.ts +41 -25
- package/packages/runtime-local/src/result-writer.ts +2 -0
- package/packages/runtime-local/src/runtime.ts +10 -6
- package/packages/runtime-local/src/supervisor.ts +142 -0
- package/packages/runtime-local/src/types.ts +9 -2
- package/packages/runtime-local/src/worker-process.ts +7 -24
- package/packages/runtime-local/src/worker.ts +55 -83
- package/packages/screen-overlay/README.md +3 -3
- package/packages/screen-overlay/package.json +1 -1
- package/packages/screen-overlay/src/component.ts +3 -3
- package/packages/screen-overlay/src/fragment.ts +5 -4
- package/packages/screen-overlay/src/manifest.ts +7 -6
- package/packages/screen-overlay/src/program.ts +9 -9
- package/packages/screen-overlay/src/surface.ts +6 -7
- package/packages/script/README.md +37 -2
- package/packages/script/src/edit.ts +123 -73
- package/packages/script/src/lexical.ts +40 -6
- package/packages/script/src/manifest.ts +2 -2
- package/packages/script/src/narrative.ts +1 -0
- package/packages/script/src/parser.ts +36 -8
- package/packages/script/src/surface.ts +4 -3
- package/packages/script/src/types.ts +5 -1
- package/packages/script-studio/package.json +9 -3
- package/packages/script-studio/src/index.ts +2 -0
- package/packages/script-studio/src/projection.ts +105 -0
- package/packages/seedance/README.md +30 -1
- package/packages/seedance/src/index.ts +18 -7
- package/packages/seedance/src/surface.ts +17 -4
- package/packages/seedance-kits/README.md +10 -2
- package/packages/seedance-kits/kits/speaker-v1.svs +5 -5
- package/packages/seedream/README.md +1 -1
- package/packages/sound/README.md +81 -0
- package/packages/sound/package.json +25 -0
- package/packages/sound/src/activation.ts +11 -0
- package/packages/sound/src/component.ts +28 -0
- package/packages/sound/src/index.ts +5 -0
- package/packages/sound/src/manifest.ts +47 -0
- package/packages/sound/src/program.ts +84 -0
- package/packages/sound/src/style.ts +34 -0
- package/packages/sound/src/surface.ts +90 -0
- package/packages/sound-studio/README.md +22 -0
- package/packages/sound-studio/package.json +20 -0
- package/packages/sound-studio/src/activation.ts +6 -0
- package/packages/sound-studio/src/index.ts +74 -0
- package/packages/speech/README.md +2 -2
- package/packages/speech-alignment/src/align.ts +45 -21
- package/packages/speech-alignment/src/local.ts +8 -0
- package/packages/speech-alignment/src/locate.ts +1 -1
- package/packages/store-sqlite/README.md +7 -0
- package/packages/store-sqlite/src/store.ts +84 -83
- package/packages/studio/INSPECTOR.md +117 -0
- package/packages/studio/README.md +149 -14
- package/packages/studio/package.json +8 -7
- package/packages/studio/src/build-library.ts +99 -84
- package/packages/studio/src/companion-assembly.ts +1 -0
- package/packages/studio/src/domain.ts +1 -1
- package/packages/studio/src/fallback-companions.ts +3 -3
- package/packages/studio/src/feedback-server.ts +51 -0
- package/packages/studio/src/feedback-store.ts +66 -0
- package/packages/studio/src/feedback.ts +60 -0
- package/packages/studio/src/library-media.ts +19 -0
- package/packages/studio/src/parameter-values.ts +83 -1
- package/packages/studio/src/parameters.ts +132 -43
- package/packages/studio/src/preview/render.ts +5 -1
- package/packages/studio/src/preview/runtime-shim.ts +49 -3
- package/packages/studio/src/programme.ts +14 -30
- package/packages/studio/src/server.ts +66 -34
- package/packages/studio/src/shared.ts +24 -8
- package/packages/studio/src/snapshot.ts +21 -132
- package/packages/studio/src/studio-preflight.ts +3 -3
- package/packages/studio/src/studio-registry.ts +72 -6
- package/packages/studio/src/style.css +342 -190
- package/packages/studio/src/temporal-edit.ts +131 -0
- package/packages/studio/src/ui/artifact-name.ts +80 -0
- package/packages/studio/src/ui/artifact-preview.ts +99 -0
- package/packages/studio/src/ui/comments.ts +233 -0
- package/packages/studio/src/ui/icons.ts +10 -1
- package/packages/studio/src/ui/library.ts +373 -192
- package/packages/studio/src/ui/main.ts +291 -110
- package/packages/studio/src/ui/material-preview.ts +1 -1
- package/packages/studio/src/ui/overlay.ts +31 -26
- package/packages/studio/src/ui/scrub-preview.ts +108 -0
- package/packages/studio/src/ui/sidebar-panel.ts +31 -0
- package/packages/studio/src/ui/stage.ts +188 -9
- package/packages/studio/src/ui/timeline.ts +187 -281
- package/packages/studio/start.ts +19 -5
- package/packages/studio-adapter/README.md +151 -11
- package/packages/studio-adapter/src/index.ts +126 -14
- package/packages/temporal/README.md +6 -6
- package/packages/temporal/package.json +1 -1
- package/packages/temporal/src/component.ts +5 -6
- package/packages/temporal/src/index.ts +8 -6
- package/packages/temporal/src/location.ts +11 -11
- package/packages/temporal/src/projection.ts +19 -19
- package/packages/temporal/src/rational.ts +4 -4
- package/packages/temporal-markup/EDITING.md +183 -0
- package/packages/temporal-markup/README.md +31 -11
- package/packages/temporal-markup/package.json +1 -1
- package/packages/temporal-markup/src/index.ts +20 -25
- package/packages/temporal-markup/src/space.ts +10 -41
- package/packages/timeline/README.md +31 -0
- package/packages/{semantic-track → timeline}/package.json +1 -1
- package/packages/timeline/src/activation.ts +8 -0
- package/packages/timeline/src/component.ts +24 -0
- package/packages/timeline/src/identity.ts +60 -0
- package/packages/timeline/src/index.ts +6 -0
- package/packages/{semantic-track → timeline}/src/location.ts +20 -20
- package/packages/timeline/src/manifest.ts +39 -0
- package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
- package/packages/timeline/src/types.ts +24 -0
- package/packages/timeline-author/README.md +68 -0
- package/packages/{speech-track → timeline-author}/package.json +6 -4
- package/packages/timeline-author/src/activation.ts +22 -0
- package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
- package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
- package/packages/timeline-author/src/index.ts +7 -0
- package/packages/timeline-author/src/manifest.ts +78 -0
- package/packages/timeline-author/src/program.ts +107 -0
- package/packages/timeline-author/src/surface.ts +46 -0
- package/packages/timeline-author/src/types.ts +6 -0
- package/packages/typography-track/README.md +4 -4
- package/packages/typography-track/package.json +1 -1
- package/packages/typography-track/src/component.ts +4 -4
- package/packages/typography-track/src/fragment.ts +4 -3
- package/packages/typography-track/src/manifest.ts +11 -9
- package/packages/typography-track/src/program.ts +15 -15
- package/packages/typography-track/src/surface.ts +17 -18
- package/packages/typography-track-studio/package.json +8 -3
- package/packages/typography-track-studio/src/index.ts +5 -1
- package/packages/video-cli/README.md +16 -4
- package/packages/video-cli/package.json +2 -1
- package/packages/video-cli/src/creation.ts +25 -9
- package/packages/video-cli/src/index.ts +1 -1
- package/packages/video-cli/src/studio-distribution.ts +2 -1
- package/packages/volcengine-matting/README.md +3 -3
- package/packages/whisperx/README.md +8 -1
- package/packages/workspace/src/index.ts +2 -0
- package/packages/workspace-fs-node/README.md +4 -1
- package/packages/workspace-fs-node/src/workspace.ts +3 -1
- package/services/whisperx/README.md +14 -0
- package/services/whisperx/pyproject.toml +2 -0
- package/services/whisperx/uv.lock +20 -20
- package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
- package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
- package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
- package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
- package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
- package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
- package/packages/provider-kie/README.md +0 -134
- package/packages/provider-kie/package.json +0 -43
- package/packages/provider-kie/src/activation.ts +0 -71
- package/packages/provider-kie/src/index.ts +0 -10
- package/packages/provider-kie/src/mapping.ts +0 -182
- package/packages/provider-kie/src/provider.ts +0 -657
- package/packages/provider-kie/src/routes.ts +0 -150
- package/packages/provider-xiaomi-mimo/README.md +0 -32
- package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
- package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
- package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
- package/packages/runtime/src/environment.ts +0 -6
- package/packages/semantic-track/README.md +0 -21
- package/packages/semantic-track/src/activation.ts +0 -8
- package/packages/semantic-track/src/component.ts +0 -24
- package/packages/semantic-track/src/identity.ts +0 -58
- package/packages/semantic-track/src/index.ts +0 -6
- package/packages/semantic-track/src/manifest.ts +0 -38
- package/packages/semantic-track/src/types.ts +0 -26
- package/packages/speech-track/README.md +0 -51
- package/packages/speech-track/src/activation.ts +0 -19
- package/packages/speech-track/src/index.ts +0 -7
- package/packages/speech-track/src/manifest.ts +0 -73
- package/packages/speech-track/src/program.ts +0 -64
- package/packages/speech-track/src/surface.ts +0 -35
- package/packages/speech-track/src/types.ts +0 -6
- package/packages/speech-track-studio/README.md +0 -3
- package/packages/speech-track-studio/package.json +0 -14
- package/packages/speech-track-studio/src/activation.ts +0 -7
- package/packages/speech-track-studio/src/index.ts +0 -40
- /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
- /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
1
2
|
import { assertProgramSpaceIdentity, programSpaceFrameCount } from "@hypit/program-space";
|
|
2
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
3
3
|
import {
|
|
4
4
|
assertSpatialFrame,
|
|
5
5
|
assertSpatialPath,
|
|
@@ -304,7 +304,7 @@ function append(
|
|
|
304
304
|
export function appendProjectedTextItem(
|
|
305
305
|
set: TypographyTrackSet,
|
|
306
306
|
header: TypographyTrackHeader,
|
|
307
|
-
|
|
307
|
+
timeline: Timeline,
|
|
308
308
|
placement: TextPlacement,
|
|
309
309
|
spec: TextItemSpec,
|
|
310
310
|
style: TextStyle,
|
|
@@ -312,7 +312,7 @@ export function appendProjectedTextItem(
|
|
|
312
312
|
window: ProjectedWindow,
|
|
313
313
|
): TypographyTrackSet {
|
|
314
314
|
assertTextPlacement(placement);
|
|
315
|
-
assertTemporalWindowFor(window, { subjectId: spec.id, space });
|
|
315
|
+
assertTemporalWindowFor(window, { subjectId: spec.id, space: timeline });
|
|
316
316
|
return append(set, header, spec, style, motion, placement.geometry, window);
|
|
317
317
|
}
|
|
318
318
|
|
|
@@ -332,18 +332,18 @@ export function sealTypographyTrackProgram(value: TypographyTrackProgram): Typog
|
|
|
332
332
|
return programContent(value);
|
|
333
333
|
}
|
|
334
334
|
|
|
335
|
-
export function assertTypographyTrackProgramIdentity(program: TypographyTrackProgram,
|
|
336
|
-
assertProgramSpaceIdentity(
|
|
335
|
+
export function assertTypographyTrackProgramIdentity(program: TypographyTrackProgram, timeline: Timeline): void {
|
|
336
|
+
assertProgramSpaceIdentity(timeline);
|
|
337
337
|
nonEmpty(program.id, "TypographyTrackProgram id");
|
|
338
338
|
if (program.items.length === 0) throw new Error("TypographyTrackProgram has no Items.");
|
|
339
|
-
const total = programSpaceFrameCount(
|
|
339
|
+
const total = programSpaceFrameCount(timeline);
|
|
340
340
|
const ids = new Set<string>();
|
|
341
341
|
for (const item of program.items) {
|
|
342
342
|
nonEmpty(item.id, "Text Item id");
|
|
343
343
|
if (ids.has(item.id)) throw new Error(`TypographyTrackProgram repeats ${item.id}.`);
|
|
344
344
|
ids.add(item.id);
|
|
345
345
|
if (item.span.startFrame < 0 || item.span.endFrameExclusive <= item.span.startFrame || item.span.endFrameExclusive > total) {
|
|
346
|
-
throw new Error(`${item.id} is outside
|
|
346
|
+
throw new Error(`${item.id} is outside Timeline.`);
|
|
347
347
|
}
|
|
348
348
|
assertGeometry(item.geometry);
|
|
349
349
|
assertDocument(item.document, `${item.id} document`);
|
|
@@ -556,10 +556,10 @@ function elements(item: TextItem): VisualElement[] {
|
|
|
556
556
|
return [root, motion, terminalTextElement(item, "motion", 2)];
|
|
557
557
|
}
|
|
558
558
|
|
|
559
|
-
export function renderTypographyTrack(
|
|
560
|
-
assertTypographyTrackProgramIdentity(program,
|
|
559
|
+
export function renderTypographyTrack(timeline: Timeline, program: TypographyTrackProgram): VisualTrack {
|
|
560
|
+
assertTypographyTrackProgramIdentity(program, timeline);
|
|
561
561
|
const track = sealVisualTrack({
|
|
562
|
-
programSpaceId:
|
|
562
|
+
programSpaceId: timeline.id,
|
|
563
563
|
visualIr: "hypit.visual-ir@1",
|
|
564
564
|
id: program.id,
|
|
565
565
|
presents: program.items.map((item) => ({
|
|
@@ -569,24 +569,24 @@ export function renderTypographyTrack(space: ProgramSpace, program: TypographyTr
|
|
|
569
569
|
elements: elements(item),
|
|
570
570
|
})),
|
|
571
571
|
});
|
|
572
|
-
assertVisualTrackIdentity(track,
|
|
572
|
+
assertVisualTrackIdentity(track, timeline);
|
|
573
573
|
return track;
|
|
574
574
|
}
|
|
575
575
|
|
|
576
576
|
export function renderTextMaskTrack(
|
|
577
|
-
|
|
577
|
+
timeline: Timeline,
|
|
578
578
|
program: TypographyTrackProgram,
|
|
579
579
|
material: CompositableSurfaceRef,
|
|
580
580
|
spec: TextMaskSpec,
|
|
581
581
|
): VisualTrack {
|
|
582
|
-
assertTypographyTrackProgramIdentity(program,
|
|
582
|
+
assertTypographyTrackProgramIdentity(program, timeline);
|
|
583
583
|
assertCompositableSurfaceRef(material);
|
|
584
584
|
assertTextMaskSpec(spec);
|
|
585
585
|
if (material.timing.kind !== "still") {
|
|
586
586
|
throw new Error("Official Text Mask requires one explicit still material Surface; timed materials use an independent package.");
|
|
587
587
|
}
|
|
588
588
|
const track = sealVisualTrack({
|
|
589
|
-
programSpaceId:
|
|
589
|
+
programSpaceId: timeline.id,
|
|
590
590
|
visualIr: "hypit.visual-ir@1",
|
|
591
591
|
id: spec.id,
|
|
592
592
|
presents: program.items.map((item) => {
|
|
@@ -617,6 +617,6 @@ export function renderTextMaskTrack(
|
|
|
617
617
|
};
|
|
618
618
|
}),
|
|
619
619
|
});
|
|
620
|
-
assertVisualTrackIdentity(track,
|
|
620
|
+
assertVisualTrackIdentity(track, timeline);
|
|
621
621
|
return track;
|
|
622
622
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { timelineTypes } from "@hypit/timeline";
|
|
2
|
+
import { resolveTemporalContext } from "@hypit/temporal-markup";
|
|
3
|
+
|
|
3
4
|
import { compositionTypes } from "@hypit/composition";
|
|
4
5
|
import type {
|
|
5
6
|
VisualColorPaint,
|
|
@@ -649,7 +650,7 @@ function createTrackFragment(id: string, items: readonly FragmentItem[]): GraphF
|
|
|
649
650
|
}
|
|
650
651
|
const append = `text:set:append:${String(index + 1).padStart(4, "0")}`;
|
|
651
652
|
const common = {
|
|
652
|
-
set: operation(current), header: input("header"),
|
|
653
|
+
set: operation(current), header: input("header"), timeline: input("timeline"), placement: operation(bind),
|
|
653
654
|
spec: item.contentName === undefined ? input(item.specName) : operation(materialized),
|
|
654
655
|
style: input(item.styleName), motion: input(item.motionName), window: input(item.windowName),
|
|
655
656
|
};
|
|
@@ -658,10 +659,10 @@ function createTrackFragment(id: string, items: readonly FragmentItem[]): GraphF
|
|
|
658
659
|
}
|
|
659
660
|
operations.push(
|
|
660
661
|
{ id: "text:finalize", producer: typographyTrackProducers.finalize, inputs: { header: input("header"), set: operation(current) }, result: { kind: "output", name: "program" } },
|
|
661
|
-
{ id: "text:render", producer: typographyTrackProducers.render, inputs: {
|
|
662
|
+
{ id: "text:render", producer: typographyTrackProducers.render, inputs: { timeline: input("timeline"), program: operation("text:finalize") }, result: { kind: "output", name: "track" } },
|
|
662
663
|
);
|
|
663
664
|
const inputEntries = [
|
|
664
|
-
{ name: "
|
|
665
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
665
666
|
{ name: "header", type: typographyTrackTypes.header },
|
|
666
667
|
...items.flatMap((item) => [
|
|
667
668
|
{ name: item.geometryName, type: item.placementKind === "point" ? spatialTypes.point : item.placementKind === "area" ? spatialTypes.frame : spatialTypes.path },
|
|
@@ -688,10 +689,9 @@ function createTrackFragment(id: string, items: readonly FragmentItem[]): GraphF
|
|
|
688
689
|
}
|
|
689
690
|
|
|
690
691
|
export const decodeTypographyTrackSurface: StructuredSurfaceHandler = ({ element, resolveReference }) => {
|
|
691
|
-
allowed(element, ["id", "
|
|
692
|
+
allowed(element, ["id", "timeline"], ["id"]);
|
|
692
693
|
const id = text(element, "id");
|
|
693
694
|
const context = resolveTemporalContext({ element, resolveReference });
|
|
694
|
-
const time = createTemporalSpace({ id: id, element, ...context });
|
|
695
695
|
const headerId = `${id}.__header`;
|
|
696
696
|
const records: SurfaceRecordDraft[] = [{
|
|
697
697
|
id: headerId, type: typographyTrackTypes.header,
|
|
@@ -699,8 +699,8 @@ export const decodeTypographyTrackSurface: StructuredSurfaceHandler = ({ element
|
|
|
699
699
|
}];
|
|
700
700
|
const defaultMotionId = `${id}.__still-motion`;
|
|
701
701
|
records.push({ id: defaultMotionId, type: typographyTrackTypes.motion, value: { kind: "inline", value: stillTextMotion(defaultMotionId) }, range: element.range });
|
|
702
|
-
const temporalComponents: SurfaceComponentDraft[] = [
|
|
703
|
-
const temporalFragments: ReturnType<typeof createTemporalWindowProjection>["fragments"][number][] = [
|
|
702
|
+
const temporalComponents: SurfaceComponentDraft[] = [];
|
|
703
|
+
const temporalFragments: ReturnType<typeof createTemporalWindowProjection>["fragments"][number][] = [];
|
|
704
704
|
const items: Array<FragmentItem & {
|
|
705
705
|
readonly geometry: SurfaceResolvedReference;
|
|
706
706
|
readonly style: SurfaceResolvedReference;
|
|
@@ -731,7 +731,7 @@ export const decodeTypographyTrackSurface: StructuredSurfaceHandler = ({ element
|
|
|
731
731
|
"id", "content", "placement", "style", "motion", ...temporalWindowAttributeNames,
|
|
732
732
|
], ["id", "placement", "style"]);
|
|
733
733
|
const itemId = text(child, "id");
|
|
734
|
-
const temporal = createTemporalWindowProjection({ id: itemId, element: child, ...context,
|
|
734
|
+
const temporal = createTemporalWindowProjection({ id: itemId, element: child, ...context, resolveReference });
|
|
735
735
|
records.push(...temporal.records); temporalComponents.push(...temporal.components); temporalFragments.push(...temporal.fragments);
|
|
736
736
|
const placementKind = form.toLowerCase() as "point" | "area" | "path";
|
|
737
737
|
const geometry = reference(child.attributes.placement, `${child.name}.placement`, placementKind === "point" ? spatialTypes.point : placementKind === "area" ? spatialTypes.frame : spatialTypes.path, resolveReference);
|
|
@@ -777,7 +777,7 @@ export const decodeTypographyTrackSurface: StructuredSurfaceHandler = ({ element
|
|
|
777
777
|
components: [...temporalComponents, {
|
|
778
778
|
id, fragment: fragment.id,
|
|
779
779
|
inputs: {
|
|
780
|
-
|
|
780
|
+
timeline: context.timeline.ref, header: { kind: "record", id: headerId },
|
|
781
781
|
...Object.fromEntries(items.flatMap((item) => [
|
|
782
782
|
[item.geometryName, item.geometry.ref], [item.specName, { kind: "record" as const, id: item.specId }],
|
|
783
783
|
[item.windowName, item.window],
|
|
@@ -794,7 +794,7 @@ export const decodeTypographyTrackSurface: StructuredSurfaceHandler = ({ element
|
|
|
794
794
|
|
|
795
795
|
function createMaskFragment(id: string): GraphFragment {
|
|
796
796
|
const inputs = [
|
|
797
|
-
{ name: "
|
|
797
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
798
798
|
{ name: "program", type: typographyTrackTypes.program },
|
|
799
799
|
{ name: "material", type: mediaTypes.compositableSurface },
|
|
800
800
|
{ name: "spec", type: typographyTrackTypes.maskSpec },
|
|
@@ -804,7 +804,7 @@ function createMaskFragment(id: string): GraphFragment {
|
|
|
804
804
|
operations: [
|
|
805
805
|
{
|
|
806
806
|
id: "text-mask:render", producer: typographyTrackProducers.renderMask,
|
|
807
|
-
inputs: {
|
|
807
|
+
inputs: { timeline: input("timeline"), program: input("program"), material: input("material"), spec: input("spec") },
|
|
808
808
|
result: { kind: "output", name: "track" },
|
|
809
809
|
},
|
|
810
810
|
],
|
|
@@ -815,11 +815,10 @@ function createMaskFragment(id: string): GraphFragment {
|
|
|
815
815
|
}
|
|
816
816
|
|
|
817
817
|
export const decodeTypographyMaskSurface: StructuredSurfaceHandler = ({ element, resolveReference }) => {
|
|
818
|
-
allowed(element, ["id", "
|
|
818
|
+
allowed(element, ["id", "timeline", "text", "material", "mode", "fit"], ["id", "text", "material"]);
|
|
819
819
|
empty(element);
|
|
820
820
|
const id = text(element, "id");
|
|
821
821
|
const context = resolveTemporalContext({ element, resolveReference });
|
|
822
|
-
const time = createTemporalSpace({ id: id, element, ...context });
|
|
823
822
|
const program = reference(element.attributes.text, `${element.name}.text`, typographyTrackTypes.program, resolveReference);
|
|
824
823
|
const material = reference(element.attributes.material, `${element.name}.material`, mediaTypes.compositableSurface, resolveReference);
|
|
825
824
|
const specId = `${id}.__spec`;
|
|
@@ -831,12 +830,12 @@ export const decodeTypographyMaskSurface: StructuredSurfaceHandler = ({ element,
|
|
|
831
830
|
const fragment = createMaskFragment(id);
|
|
832
831
|
return {
|
|
833
832
|
records: [{ id: specId, type: typographyTrackTypes.maskSpec, value: { kind: "inline", value: spec }, range: element.range }],
|
|
834
|
-
components: [
|
|
833
|
+
components: [{
|
|
835
834
|
id, fragment: fragment.id,
|
|
836
|
-
inputs: {
|
|
835
|
+
inputs: { timeline: context.timeline.ref, program: program.ref, material: material.ref, spec: { kind: "record", id: specId } },
|
|
837
836
|
outputs: { track: `${id}.track` }, range: element.range,
|
|
838
837
|
}],
|
|
839
|
-
fragments: [
|
|
838
|
+
fragments: [fragment],
|
|
840
839
|
exports: [`${id}.track`],
|
|
841
840
|
};
|
|
842
841
|
};
|
|
@@ -4,11 +4,16 @@
|
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"private": true,
|
|
6
6
|
"type": "module",
|
|
7
|
-
"exports": {
|
|
8
|
-
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./src/index.ts"
|
|
9
|
+
},
|
|
10
|
+
"hypit": {
|
|
11
|
+
"activation": "./src/activation.ts"
|
|
12
|
+
},
|
|
9
13
|
"dependencies": {
|
|
10
14
|
"@hypit/composition": "workspace:*",
|
|
11
15
|
"@hypit/studio-adapter": "workspace:*",
|
|
12
|
-
"@hypit/typography-track": "workspace:*"
|
|
16
|
+
"@hypit/typography-track": "workspace:*",
|
|
17
|
+
"@hypit/fonts-open": "workspace:*"
|
|
13
18
|
}
|
|
14
19
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { openFontStudioFields } from "@hypit/fonts-open/studio";
|
|
1
2
|
import { typographyTrackMarkupSurfaces, typographyTrackModuleRef, typographyTrackTypes } from "@hypit/typography-track";
|
|
2
3
|
import type { TypographyTrackProgram } from "@hypit/typography-track";
|
|
3
4
|
import { compositionTypes } from "@hypit/composition";
|
|
4
5
|
import type { StudioTrackCompanion, StudioTrackCompanionContext, StudioEntityDraft, StudioInspectorFieldDeclaration } from "@hypit/studio-adapter";
|
|
5
6
|
import { childEntities, requiredSurfaceValue, temporalLineageFor, temporalSemanticSource, textLayer } from "@hypit/studio-adapter";
|
|
6
7
|
|
|
8
|
+
const fontInspector = openFontStudioFields("style");
|
|
9
|
+
|
|
7
10
|
const typographyProperties = (typographyTrackMarkupSurfaces
|
|
8
11
|
.find((surface) => surface.name === "style")?.vocabulary.attributes
|
|
9
12
|
.find((attribute) => attribute.name === "recipe")?.recipe ?? []);
|
|
@@ -105,11 +108,12 @@ export const typographyTrackStudioTrackCompanions: readonly StudioTrackCompanion
|
|
|
105
108
|
{ name: "content" },
|
|
106
109
|
{
|
|
107
110
|
name: "style",
|
|
111
|
+
referenced: [fontInspector.binding],
|
|
108
112
|
recipe: { through: ["recipe"], bindings: typographyProperties.map(({ name }) => ({ name })) },
|
|
109
113
|
},
|
|
110
114
|
{ name: "motion" },
|
|
111
115
|
],
|
|
112
|
-
inspector: typographyInspector,
|
|
116
|
+
inspector: [...fontInspector.fields, ...typographyInspector],
|
|
113
117
|
requiredValues: ["program"], project: projectTypography,
|
|
114
118
|
lane: { heightPx: 48 },
|
|
115
119
|
},
|
|
@@ -37,14 +37,26 @@ Result or state. It names the Endpoint and its price page before it runs, and wr
|
|
|
37
37
|
to the chosen file. `measure` estimates a passage locally:
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
hypit transcribe reference.mp4 --to notes/reference.transcript.json
|
|
40
|
+
hypit transcribe reference.mp4 --to notes/reference.transcript.json --language en
|
|
41
41
|
hypit measure main.svml --segment hook --language en --pace normal --rounding round
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
For `transcribe`, set `--language` to the spoken language: `en`, `zh` or `es`. Chinese speech uses `zh`, including
|
|
45
|
+
Chinese speech containing English names; the requested language selects the recognition/alignment
|
|
46
|
+
model, independently of the eventual caption font or script's simplified/traditional characters.
|
|
47
|
+
|
|
44
48
|
`transcribe` uses the Profile's `whisperx-alignment` Endpoint (after
|
|
45
|
-
extracting 16 kHz mono speech audio with ffmpeg).
|
|
46
|
-
|
|
47
|
-
|
|
49
|
+
extracting 16 kHz mono speech audio with ffmpeg). Direct invocation forwards the Provider's progress
|
|
50
|
+
and diagnostic callbacks; the CLI reports phase changes while waiting, with JSON progress on the
|
|
51
|
+
separate progress stream when supplied. Immediate invocation has no durable remote task receipt and
|
|
52
|
+
does not become resumable merely because it reports progress. `measure` counts a Segment's pronunciation units at a
|
|
53
|
+
delivery policy and prints estimated seconds, the resolved rate, padding and rounding. Choose the
|
|
54
|
+
literal `duration` from that estimate and the intended performance. `measure` opens no Profile and
|
|
55
|
+
spends nothing. It accepts `--pace slow|normal|fast` or `--rate <units/s>`; JSON includes the resolved
|
|
56
|
+
`rate` even when using a named pace. [Estimate](../estimate/README.md#units-and-delivery) explains
|
|
57
|
+
Chinese/English units and choosing a whole-passage density.
|
|
58
|
+
|
|
59
|
+
For `transcribe`, `--runtime <profile>` names the Profile; otherwise the project's `hypit runtime use`
|
|
48
60
|
selection is read. Anything the Author Graph declares as an output is a Build, however quickly it
|
|
49
61
|
comes back: pictures, clips and accepted voice references (`@hypit/mimo-speech`) carry the identity of the Source
|
|
50
62
|
that produced them, so they are declared in the Source and go through `plan` and `build`. To hear a
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"@hypit/markup": "workspace:*",
|
|
21
21
|
"@hypit/model-kit": "workspace:*",
|
|
22
22
|
"@hypit/package-loader-node": "workspace:*",
|
|
23
|
+
"@hypit/project-context-node": "workspace:*",
|
|
23
24
|
"@hypit/protocol": "workspace:*",
|
|
24
25
|
"@hypit/provider-hypihub": "workspace:*",
|
|
25
26
|
"@hypit/runtime": "workspace:*",
|
|
@@ -32,6 +33,6 @@
|
|
|
32
33
|
"@hypit/whisperx": "workspace:*",
|
|
33
34
|
"@hypit/workspace-fs-node": "workspace:*",
|
|
34
35
|
"@hypit/yt-dlp": "workspace:*",
|
|
35
|
-
"sharp": "0.35.
|
|
36
|
+
"sharp": "0.35.4"
|
|
36
37
|
}
|
|
37
38
|
}
|
|
@@ -2,18 +2,20 @@ import { mkdir, mkdtemp, readFile, rm, stat, writeFile } from "node:fs/promises"
|
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { dirname, join, resolve } from "node:path";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { loadDiscoveredSourcePackages } from "@hypit/cli";
|
|
6
|
+
import { findRuntimeProfile, resolveProjectRoot } from "@hypit/project-context-node";
|
|
6
7
|
import type { CliIo } from "@hypit/cli";
|
|
7
8
|
import { MemoryResourceStore } from "@hypit/driver-node";
|
|
8
9
|
import {
|
|
9
10
|
countSpeechEstimateUnits,
|
|
10
11
|
estimateSpeechDuration,
|
|
11
12
|
resolveSpeechEstimateLanguage,
|
|
13
|
+
resolveSpeechEstimateRate,
|
|
12
14
|
speechEstimatePolicyFromAttributes,
|
|
13
15
|
} from "@hypit/estimate";
|
|
14
16
|
import type { CanonicalValue, CapabilityRef, Need, StoredValue } from "@hypit/protocol";
|
|
15
17
|
import type { ResourceStore } from "@hypit/runtime";
|
|
16
|
-
import type { RuntimeHostCapabilityProvider, RuntimeHostProviderQuery } from "@hypit/runtime-host-node";
|
|
18
|
+
import type { RuntimeHostCapabilityProvider, RuntimeHostProviderQuery, RuntimeInvocationObservation } from "@hypit/runtime-host-node";
|
|
17
19
|
import { sealSpeechEvidenceAudio } from "@hypit/speech";
|
|
18
20
|
import { speechEvidenceTypes } from "@hypit/speech-evidence";
|
|
19
21
|
import type { AlignedTranscriptEvidence } from "@hypit/speech-evidence";
|
|
@@ -31,7 +33,7 @@ export type CreationCommand = typeof creationCommands[number];
|
|
|
31
33
|
/** The slice of the Runtime host these commands use; tests hand in a fake. */
|
|
32
34
|
export type CreationHost = {
|
|
33
35
|
providers(requests: readonly RuntimeHostProviderQuery[]): Promise<readonly RuntimeHostCapabilityProvider[]>;
|
|
34
|
-
invoke(need: Need, resources: ResourceStore): Promise<{ readonly value: StoredValue }>;
|
|
36
|
+
invoke(need: Need, resources: ResourceStore, observation?: RuntimeInvocationObservation): Promise<{ readonly value: StoredValue }>;
|
|
35
37
|
};
|
|
36
38
|
|
|
37
39
|
export type CreationEnvironment = {
|
|
@@ -275,8 +277,9 @@ async function transcribe(argv: readonly string[], io: CliIo, environment: Creat
|
|
|
275
277
|
const parsed = parseArguments(argv, ["--language", "--to", "--runtime", "--workspace"]);
|
|
276
278
|
assert(parsed.positionals.length === 1, "transcribe takes exactly one audio or video file");
|
|
277
279
|
const source = resolve(environment.cwd, parsed.positionals[0]!);
|
|
278
|
-
const language = parsed.options.get("--language")
|
|
279
|
-
assert(language === "en" || language === "zh" || language === "es",
|
|
280
|
+
const language = parsed.options.get("--language");
|
|
281
|
+
assert(language === "en" || language === "zh" || language === "es",
|
|
282
|
+
"transcribe requires --language en|zh|es for the spoken language (use --language zh for Chinese)");
|
|
280
283
|
const to = await destination(parsed, environment.cwd);
|
|
281
284
|
const { profile, host } = await environment.openHost(
|
|
282
285
|
parsed.options.get("--runtime"),
|
|
@@ -295,7 +298,16 @@ async function transcribe(argv: readonly string[], io: CliIo, environment: Creat
|
|
|
295
298
|
};
|
|
296
299
|
const provider = await selectedProvider(host, need, profile);
|
|
297
300
|
if (!parsed.json) io.write(`Transcribing through ${providerLine(provider)}\n`);
|
|
298
|
-
const
|
|
301
|
+
const report = parsed.json ? io.writeProgress : io.writeProgress ?? io.write;
|
|
302
|
+
let previousPhase: string | undefined;
|
|
303
|
+
const fulfillment = await host.invoke(need, resources, {
|
|
304
|
+
reportProgress: async (progress) => {
|
|
305
|
+
if (progress.phase === previousPhase) return;
|
|
306
|
+
previousPhase = progress.phase;
|
|
307
|
+
report?.(` · ${progress.phase}\n`);
|
|
308
|
+
},
|
|
309
|
+
reportDiagnostic: async (diagnostic) => { report?.(` · ${diagnostic.message}\n`); },
|
|
310
|
+
});
|
|
299
311
|
assert(fulfillment.value.kind === "inline", "the transcript came back by reference");
|
|
300
312
|
const passages = passagesInSeconds(fulfillment.value.value as unknown as AlignedTranscriptEvidence);
|
|
301
313
|
const words = passages.reduce((total, passage) => total + passage.words.length, 0);
|
|
@@ -382,6 +394,7 @@ async function measure(argv: readonly string[], io: CliIo, environment: Creation
|
|
|
382
394
|
}
|
|
383
395
|
const pace = parsed.options.get("--pace");
|
|
384
396
|
const rate = parsed.options.get("--rate");
|
|
397
|
+
assert(pace === undefined || rate === undefined, "measure takes either --pace or --rate, not both");
|
|
385
398
|
const policy = speechEstimatePolicyFromAttributes({
|
|
386
399
|
language: parsed.options.get("--language") ?? "auto",
|
|
387
400
|
...(rate === undefined ? { pace: pace ?? "normal" } : { rate }),
|
|
@@ -391,6 +404,7 @@ async function measure(argv: readonly string[], io: CliIo, environment: Creation
|
|
|
391
404
|
const language = resolveSpeechEstimateLanguage(text, policy.language);
|
|
392
405
|
const units = countSpeechEstimateUnits(text, language);
|
|
393
406
|
const seconds = estimateSpeechDuration(sealText(text), policy);
|
|
407
|
+
const resolvedRate = resolveSpeechEstimateRate(policy, language);
|
|
394
408
|
const view = {
|
|
395
409
|
format: "hypit.video-cli-measure@1",
|
|
396
410
|
...where,
|
|
@@ -398,11 +412,13 @@ async function measure(argv: readonly string[], io: CliIo, environment: Creation
|
|
|
398
412
|
units,
|
|
399
413
|
language,
|
|
400
414
|
policy,
|
|
415
|
+
rate: resolvedRate,
|
|
401
416
|
seconds,
|
|
402
417
|
};
|
|
403
418
|
if (parsed.json) { io.write(`${JSON.stringify(view, null, 2)}\n`); return; }
|
|
404
|
-
const delivery = policy.
|
|
405
|
-
io.write(`${seconds}s\n\n ${units} pronunciation units · ${language} · ${delivery}
|
|
419
|
+
const delivery = `${resolvedRate} units/s${policy.pace === undefined ? "" : ` (${policy.pace})`}`;
|
|
420
|
+
io.write(`${Number(seconds.toFixed(3))}s\n\n ${units} pronunciation units · ${language} · ${delivery}\n`
|
|
421
|
+
+ ` padding ${policy.paddingSec ?? 0}s · rounding ${policy.rounding}\n`
|
|
406
422
|
+ ` ${"segment" in where ? `${where.segment} in ${where.source}` : `${text.length} characters`}\n`
|
|
407
423
|
+ " Choose the request duration from this estimate, the intended performance, and the selected model's supported values.\n");
|
|
408
424
|
}
|
|
@@ -416,7 +432,7 @@ export function writeCreationHelp(io: CliIo, topic?: CreationCommand): void {
|
|
|
416
432
|
"hypit transcribe",
|
|
417
433
|
"Establish word times with the whisperx-alignment Endpoint of the selected Runtime Profile.",
|
|
418
434
|
"",
|
|
419
|
-
" hypit transcribe <audio|video> --to <transcript.json>
|
|
435
|
+
" hypit transcribe <audio|video> --to <transcript.json> --language en|zh|es [--runtime <profile>] [--workspace <project>]",
|
|
420
436
|
"",
|
|
421
437
|
"Extracts 16 kHz mono speech audio with ffmpeg and writes every word with its start and end in",
|
|
422
438
|
"seconds. One immediate request; no Build, Result or state.",
|
|
@@ -28,7 +28,7 @@ export { runCaptureCli, writeCaptureHelp } from "./capture.js";
|
|
|
28
28
|
export { listPackages, listSurfaces, runVocabularyCli, visualSchema, writeVocabularyHelp } from "./vocabulary.js";
|
|
29
29
|
export type { PackageListing, SurfaceListing } from "./vocabulary.js";
|
|
30
30
|
/** The project's selected Runtime Profile, read the way `hypit` reads it, for tools that run beside the CLI. */
|
|
31
|
-
export { findRuntimeProfile } from "@hypit/
|
|
31
|
+
export { findRuntimeProfile } from "@hypit/project-context-node";
|
|
32
32
|
|
|
33
33
|
export function runVideoCli(
|
|
34
34
|
argv: readonly string[],
|
|
@@ -11,9 +11,10 @@ export const videoStudioCompanionPackages = [
|
|
|
11
11
|
"@hypit/deck-track-studio",
|
|
12
12
|
"@hypit/film-studio",
|
|
13
13
|
"@hypit/media-track-studio",
|
|
14
|
+
"@hypit/performance-studio",
|
|
14
15
|
"@hypit/ranking-studio",
|
|
15
16
|
"@hypit/screen-overlay-studio",
|
|
16
17
|
"@hypit/script-studio",
|
|
17
|
-
"@hypit/
|
|
18
|
+
"@hypit/sound-studio",
|
|
18
19
|
"@hypit/typography-track-studio",
|
|
19
20
|
] as const;
|
|
@@ -30,20 +30,20 @@ formats. The service's flat-background MP4 option is a different output treatmen
|
|
|
30
30
|
This excerpt assumes the performance and Script exist. Normalize keeps the transparent picture
|
|
31
31
|
and prepares the selected embedded audio on the program clock. WhisperX and semantic alignment
|
|
32
32
|
associate that prepared performance with the Script. Use `opening-semantic.take` in
|
|
33
|
-
[
|
|
33
|
+
[Timeline assembly](../timeline-author/README.md); its screen position and stack order are independent
|
|
34
34
|
of its role as A-roll.
|
|
35
35
|
|
|
36
36
|
For B-roll, normalize `cutout.video` with `audio="none"` when its sound is unwanted, then use
|
|
37
37
|
`cutout-media.media` in [Media Track](../media-track/README.md). No SemanticTake is needed for
|
|
38
38
|
that overlay. Existing transparency can enter Normalize directly.
|
|
39
39
|
|
|
40
|
-
For example, this alternative uses the existing program's
|
|
40
|
+
For example, this alternative uses the existing program's Timeline and an authored Selection:
|
|
41
41
|
|
|
42
42
|
```svml
|
|
43
43
|
<import as="media-track" from="@hypit/media-track@1"/>
|
|
44
44
|
<pipeline:Normalize id="overlay-media" source={cutout.video} clock={clock}
|
|
45
45
|
video="primary-moving" audio="none" span-authority="video"/>
|
|
46
|
-
<media-track:Track id="overlay"
|
|
46
|
+
<media-track:Track id="overlay" timeline={speech.timeline} canvas={canvas}>
|
|
47
47
|
<media-track:Item media={overlay-media.media} during={story.selection.example}
|
|
48
48
|
frame={overlay-frame} appearance={look.media.overlay}/>
|
|
49
49
|
</media-track:Track>
|
|
@@ -17,6 +17,13 @@ projects the Take's audio to canonical 16 kHz mono `SpeechEvidenceAudio`; Whispe
|
|
|
17
17
|
bytes. A deterministic local alignment then combines the returned evidence with the Segment and
|
|
18
18
|
emits one self-contained `SemanticTake`.
|
|
19
19
|
|
|
20
|
+
For Chinese speech, select `zh` (also `hypit transcribe --language zh` for a reference). WhisperX's
|
|
21
|
+
Chinese alignment emits character-sized words, including letters inside some Latin names. The
|
|
22
|
+
evidence adapter preserves those windows; the local alignment maps them onto Script's units, so
|
|
23
|
+
a complete Latin name can consume several evidence words while neighboring Han characters retain
|
|
24
|
+
their own times. Caption gets its displayed wording and Cue breaks from Script, independently of
|
|
25
|
+
the recognizer's punctuation or simplified/traditional spelling.
|
|
26
|
+
|
|
20
27
|
When the authored Segment has no Tokens, write the same Surface without `language`. Its start and
|
|
21
28
|
end Anchors map directly to the prepared media's first and final frame. There are no words to align,
|
|
22
29
|
so this branch requests no evidence audio and no WhisperX capability:
|
|
@@ -26,7 +33,7 @@ so this branch requests no evidence audio and no WhisperX capability:
|
|
|
26
33
|
segment={story.segment.pause} media={pause-media.media}/>
|
|
27
34
|
```
|
|
28
35
|
|
|
29
|
-
There is no whole-program WhisperX pass.
|
|
36
|
+
There is no whole-program WhisperX pass. Timeline assembly only receives already-semantic Takes and later
|
|
30
37
|
translates their local frames when assembling the final ProgramSpace and complete semantic map.
|
|
31
38
|
|
|
32
39
|
`@hypit/provider-hypihub` is the default concrete adapter; it uploads the canonical evidence audio
|
|
@@ -9,6 +9,8 @@ import type { BlobRef } from "@hypit/protocol";
|
|
|
9
9
|
/** Repeatably openable transfer bytes admitted by the selected Workspace. */
|
|
10
10
|
export type ArtifactAttachment = {
|
|
11
11
|
readonly artifact: BlobRef;
|
|
12
|
+
/** Stable external address, when the Workspace supplies a file by reference. */
|
|
13
|
+
readonly location?: string;
|
|
12
14
|
open(): Awaitable<AsyncIterable<Uint8Array>>;
|
|
13
15
|
};
|
|
14
16
|
|
|
@@ -4,7 +4,10 @@ Reference Node filesystem implementation of the host-neutral `Workspace` contrac
|
|
|
4
4
|
|
|
5
5
|
Every `open()` call creates one isolated compilation session. It canonicalizes real paths, confines
|
|
6
6
|
local SourceUnit and Source Asset reads to the configured root, rejects symlink escapes, locks each
|
|
7
|
-
edge to the first bytes observed and returns defensive Resource attachments.
|
|
7
|
+
Source edge to the first bytes observed and returns defensive Resource attachments. File attachments
|
|
8
|
+
also carry their resolved `file:` URI so Result publication can preserve the external reference.
|
|
9
|
+
The Resource's identity and metadata belong to the compilation session; its file remains a live
|
|
10
|
+
dependency rather than becoming a persistent snapshot.
|
|
8
11
|
|
|
9
12
|
A Host may supply an external Source resolver. One explicit non-relative Source locator can then
|
|
10
13
|
open a SourceUnit in a separate canonical root; that Source's relative imports and assets remain
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { pathToFileURL } from "node:url";
|
|
1
2
|
import { randomUUID } from "node:crypto";
|
|
2
3
|
import { createReadStream } from "node:fs";
|
|
3
4
|
import { readFile, realpath, stat } from "node:fs/promises";
|
|
@@ -177,6 +178,7 @@ class NodeFilesystemWorkspaceSession implements WorkspaceSession {
|
|
|
177
178
|
if (!this.#attachments.has(attachmentKey)) {
|
|
178
179
|
this.#attachments.set(attachmentKey, {
|
|
179
180
|
artifact: { ...artifact },
|
|
181
|
+
location: pathToFileURL(canonical).href,
|
|
180
182
|
open: () => createReadStream(canonical),
|
|
181
183
|
});
|
|
182
184
|
}
|
|
@@ -189,7 +191,7 @@ class NodeFilesystemWorkspaceSession implements WorkspaceSession {
|
|
|
189
191
|
const byResource = left.artifact.resource.localeCompare(right.artifact.resource);
|
|
190
192
|
return byResource === 0 ? left.artifact.mediaType.localeCompare(right.artifact.mediaType) : byResource;
|
|
191
193
|
})
|
|
192
|
-
.map((item) => ({ artifact: { ...item.artifact }
|
|
194
|
+
.map((item) => ({ ...item, artifact: { ...item.artifact } }));
|
|
193
195
|
}
|
|
194
196
|
}
|
|
195
197
|
|
|
@@ -71,6 +71,14 @@ Configuration is deployment state:
|
|
|
71
71
|
The Node Provider must configure the same model, device, compute, batch size, service version and
|
|
72
72
|
WhisperX version. A mismatch fails before transcription results are accepted.
|
|
73
73
|
|
|
74
|
+
## Package preparation
|
|
75
|
+
|
|
76
|
+
Local package preparation includes `src/**/*.py` in uv's package cache inputs. Updating service code
|
|
77
|
+
therefore rebuilds its small wheel instead of reusing one selected only by an unchanged
|
|
78
|
+
`pyproject.toml`. This leaves dependency and speech-model caches intact. See
|
|
79
|
+
[uv's local dependency caching](https://docs.astral.sh/uv/concepts/cache/#dynamic-metadata).
|
|
80
|
+
This governs package installation; an already running service continues using its loaded code.
|
|
81
|
+
|
|
74
82
|
## Queue and concurrency
|
|
75
83
|
|
|
76
84
|
The SVML Runtime Scheduler decides how many WhisperX Needs may enter this Provider lane. One service
|
|
@@ -80,3 +88,9 @@ second direct request receives `503 BUSY` instead of entering a hidden service q
|
|
|
80
88
|
|
|
81
89
|
Run multiple service processes on different devices/ports only when the Runtime registers and
|
|
82
90
|
locks them as distinct Provider instances.
|
|
91
|
+
|
|
92
|
+
The local Provider reconciles this packaged project through `uv sync` before a cold service start.
|
|
93
|
+
A passing version probe alone cannot establish that same-version checkout edits were installed;
|
|
94
|
+
the declared uv source cache keys decide whether the service wheel needs rebuilding. A healthy
|
|
95
|
+
running service remains untouched. To adopt edited service code, stop that selected helper when idle
|
|
96
|
+
and start it again through its Profile; restarting only the Build Worker does not reinstall Python.
|
|
@@ -867,6 +867,23 @@ wheels = [
|
|
|
867
867
|
{ url = "https://files.pythonhosted.org/packages/a8/af/48ac8483240de756d2438c380746e7130d1c6f75802ef22f3c6d49982787/huggingface_hub-0.36.2-py3-none-any.whl", hash = "sha256:48f0c8eac16145dfce371e9d2d7772854a4f591bcb56c9cf548accf531d54270", size = 566395, upload-time = "2026-02-06T09:24:11.133Z" },
|
|
868
868
|
]
|
|
869
869
|
|
|
870
|
+
[[package]]
|
|
871
|
+
name = "hypit-whisperx-service"
|
|
872
|
+
version = "0.1.0"
|
|
873
|
+
source = { editable = "." }
|
|
874
|
+
dependencies = [
|
|
875
|
+
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
|
876
|
+
{ name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
|
|
877
|
+
{ name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
|
878
|
+
{ name = "whisperx" },
|
|
879
|
+
]
|
|
880
|
+
|
|
881
|
+
[package.metadata]
|
|
882
|
+
requires-dist = [
|
|
883
|
+
{ name = "numpy", specifier = ">=2.1,<3" },
|
|
884
|
+
{ name = "whisperx", specifier = "==3.8.6" },
|
|
885
|
+
]
|
|
886
|
+
|
|
870
887
|
[[package]]
|
|
871
888
|
name = "idna"
|
|
872
889
|
version = "3.18"
|
|
@@ -1410,7 +1427,7 @@ wheels = [
|
|
|
1410
1427
|
|
|
1411
1428
|
[[package]]
|
|
1412
1429
|
name = "nltk"
|
|
1413
|
-
version = "3.10.
|
|
1430
|
+
version = "3.10.3"
|
|
1414
1431
|
source = { registry = "https://pypi.org/simple" }
|
|
1415
1432
|
dependencies = [
|
|
1416
1433
|
{ name = "click" },
|
|
@@ -1419,9 +1436,9 @@ dependencies = [
|
|
|
1419
1436
|
{ name = "regex" },
|
|
1420
1437
|
{ name = "tqdm" },
|
|
1421
1438
|
]
|
|
1422
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1439
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e0/e6/fe51d2bb1a3b446f59c5c8165999a9fee208bc346af90a7cbf7657bc0d75/nltk-3.10.3.tar.gz", hash = "sha256:bb9327a461c3811c2fa4900e03840401f2126adfb30c0072827c433bd2444ea4", size = 5137152, upload-time = "2026-08-12T23:46:37.258Z" }
|
|
1423
1440
|
wheels = [
|
|
1424
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1441
|
+
{ url = "https://files.pythonhosted.org/packages/b6/6d/ebd2af4640b12168fdf0cb74b6118df2f32a2f62ec7e0c06fbfd80706639/nltk-3.10.3-py3-none-any.whl", hash = "sha256:ff9598a8e20518ee0d557745890cc4435b9578489e2dcbc69c4f81fa060caf7c", size = 1798643, upload-time = "2026-08-12T23:44:13.478Z" },
|
|
1425
1442
|
]
|
|
1426
1443
|
|
|
1427
1444
|
[[package]]
|
|
@@ -2907,23 +2924,6 @@ wheels = [
|
|
|
2907
2924
|
{ url = "https://files.pythonhosted.org/packages/e2/22/dbf013a12ec759e54a34a119e9e217435b3f71b2dd5c61a7ade0a25dae87/sqlalchemy-2.0.51-py3-none-any.whl", hash = "sha256:bb024d8b621d0be75f4f44ecc7c950450026e76d66dc8f791bb5331d7fed59d5", size = 1944334, upload-time = "2026-06-15T16:09:22.418Z" },
|
|
2908
2925
|
]
|
|
2909
2926
|
|
|
2910
|
-
[[package]]
|
|
2911
|
-
name = "hypit-whisperx-service"
|
|
2912
|
-
version = "0.1.0"
|
|
2913
|
-
source = { editable = "." }
|
|
2914
|
-
dependencies = [
|
|
2915
|
-
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
|
2916
|
-
{ name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
|
|
2917
|
-
{ name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
|
2918
|
-
{ name = "whisperx" },
|
|
2919
|
-
]
|
|
2920
|
-
|
|
2921
|
-
[package.metadata]
|
|
2922
|
-
requires-dist = [
|
|
2923
|
-
{ name = "numpy", specifier = ">=2.1,<3" },
|
|
2924
|
-
{ name = "whisperx", specifier = "==3.8.6" },
|
|
2925
|
-
]
|
|
2926
|
-
|
|
2927
2927
|
[[package]]
|
|
2928
2928
|
name = "sympy"
|
|
2929
2929
|
version = "1.14.0"
|