@remotion/studio 4.0.522 → 4.0.524

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.
Files changed (259) hide show
  1. package/dist/api/install-package.js +4 -2
  2. package/dist/components/ActionTooltip.d.ts +9 -0
  3. package/dist/components/ActionTooltip.js +143 -0
  4. package/dist/components/AssetAudioVolume.d.ts +5 -0
  5. package/dist/components/AssetAudioVolume.js +33 -0
  6. package/dist/components/Canvas.js +8 -8
  7. package/dist/components/CaptionInspector.js +74 -20
  8. package/dist/components/CheckboardToggle.js +9 -10
  9. package/dist/components/Checkbox.d.ts +1 -0
  10. package/dist/components/Checkbox.js +2 -2
  11. package/dist/components/CompositionContextButton.js +4 -1
  12. package/dist/components/CompositionSelectorItem.js +2 -2
  13. package/dist/components/ConfigureLicenseModal.js +1 -1
  14. package/dist/components/CurrentAsset.js +40 -6
  15. package/dist/components/EditorContexts.js +3 -1
  16. package/dist/components/ElementInstallConfirmation.js +254 -137
  17. package/dist/components/FixComputedValueModal.js +38 -8
  18. package/dist/components/FullscreenToggle.js +8 -10
  19. package/dist/components/GlobalKeybindings.js +107 -49
  20. package/dist/components/InspectorPanel/MultiSequenceField.d.ts +12 -0
  21. package/dist/components/InspectorPanel/MultiSequenceField.js +131 -0
  22. package/dist/components/InspectorPanel/MultiSequenceInspector.d.ts +8 -0
  23. package/dist/components/InspectorPanel/MultiSequenceInspector.js +102 -0
  24. package/dist/components/InspectorPanel/MultiSequenceNumberField.d.ts +9 -0
  25. package/dist/components/InspectorPanel/MultiSequenceNumberField.js +88 -0
  26. package/dist/components/InspectorPanel.js +4 -0
  27. package/dist/components/InspectorSequenceSection.js +69 -6
  28. package/dist/components/InstallPackage.js +4 -5
  29. package/dist/components/KeyboardShortcutsSettings.js +212 -33
  30. package/dist/components/LazySyntaxHighlightedSource.d.ts +4 -0
  31. package/dist/components/LazySyntaxHighlightedSource.js +43 -0
  32. package/dist/components/LoopToggle.js +8 -2
  33. package/dist/components/MenuToolbar.js +11 -7
  34. package/dist/components/ModalContainer.d.ts +1 -0
  35. package/dist/components/ModalContainer.js +2 -2
  36. package/dist/components/Modals.js +3 -1
  37. package/dist/components/ModelManager.d.ts +16 -0
  38. package/dist/components/ModelManager.js +200 -0
  39. package/dist/components/ModelsSettings.d.ts +2 -0
  40. package/dist/components/ModelsSettings.js +133 -0
  41. package/dist/components/MuteToggle.d.ts +1 -0
  42. package/dist/components/MuteToggle.js +16 -6
  43. package/dist/components/NewComposition/DismissableModal.d.ts +1 -0
  44. package/dist/components/NewComposition/DismissableModal.js +2 -2
  45. package/dist/components/NewComposition/InputDragger.d.ts +2 -2
  46. package/dist/components/NewComposition/InputDragger.js +6 -6
  47. package/dist/components/NewComposition/NewComposition.d.ts +1 -0
  48. package/dist/components/NewComposition/NewComposition.js +5 -4
  49. package/dist/components/NewComposition/NewFolder.js +9 -8
  50. package/dist/components/NewComposition/RenameComposition.js +3 -2
  51. package/dist/components/NewComposition/RenameFolder.js +15 -10
  52. package/dist/components/NewComposition/SlugPreview.d.ts +7 -0
  53. package/dist/components/NewComposition/SlugPreview.js +18 -0
  54. package/dist/components/OptionalPackageModal.d.ts +11 -0
  55. package/dist/components/OptionalPackageModal.js +155 -0
  56. package/dist/components/OutlineToggle.js +16 -10
  57. package/dist/components/PlayPause.js +11 -9
  58. package/dist/components/PlaybackKeyboardShortcutsManager.d.ts +2 -0
  59. package/dist/components/PlaybackKeyboardShortcutsManager.js +39 -7
  60. package/dist/components/PlaybackRateSelector.js +2 -2
  61. package/dist/components/PreviewToolbar.js +1 -1
  62. package/dist/components/PreviewToolbarOverflowButton.js +19 -4
  63. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +5 -2
  64. package/dist/components/RadioButton.d.ts +1 -0
  65. package/dist/components/RadioButton.js +2 -2
  66. package/dist/components/RenderButton.js +5 -1
  67. package/dist/components/RenderModal/NumberSetting.d.ts +6 -1
  68. package/dist/components/RenderModal/NumberSetting.js +2 -2
  69. package/dist/components/RenderModal/RenderModalBasic.js +1 -1
  70. package/dist/components/RenderModal/RenderModalOutputName.d.ts +3 -1
  71. package/dist/components/RenderModal/RenderModalOutputName.js +4 -4
  72. package/dist/components/RenderModal/SeparateAudioOption.js +1 -1
  73. package/dist/components/RenderModal/WebRenderModalBasic.js +1 -1
  74. package/dist/components/RenderQueue/CaptionQueueItem.d.ts +6 -0
  75. package/dist/components/RenderQueue/CaptionQueueItem.js +130 -0
  76. package/dist/components/RenderQueue/CaptionQueueProcessor.d.ts +1 -0
  77. package/dist/components/RenderQueue/CaptionQueueProcessor.js +110 -0
  78. package/dist/components/RenderQueue/CaptionQueueProcessorLoader.d.ts +2 -0
  79. package/dist/components/RenderQueue/CaptionQueueProcessorLoader.js +54 -0
  80. package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +2 -1
  81. package/dist/components/RenderQueue/RenderQueueDownloadItem.js +2 -1
  82. package/dist/components/RenderQueue/RenderQueueItem.js +3 -3
  83. package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +2 -1
  84. package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +2 -1
  85. package/dist/components/RenderQueue/RenderQueueRemoveItem.js +2 -1
  86. package/dist/components/RenderQueue/RenderQueueRepeat.js +2 -1
  87. package/dist/components/RenderQueue/VideoMattingQueueItem.d.ts +6 -0
  88. package/dist/components/RenderQueue/VideoMattingQueueItem.js +130 -0
  89. package/dist/components/RenderQueue/VideoMattingQueueProcessor.d.ts +1 -0
  90. package/dist/components/RenderQueue/VideoMattingQueueProcessor.js +105 -0
  91. package/dist/components/RenderQueue/VideoMattingQueueProcessorLoader.d.ts +2 -0
  92. package/dist/components/RenderQueue/VideoMattingQueueProcessorLoader.js +54 -0
  93. package/dist/components/RenderQueue/caption-job-types.d.ts +47 -0
  94. package/dist/components/RenderQueue/caption-job-types.js +7 -0
  95. package/dist/components/RenderQueue/context.d.ts +16 -0
  96. package/dist/components/RenderQueue/context.js +224 -11
  97. package/dist/components/RenderQueue/index.js +34 -10
  98. package/dist/components/RenderQueue/item-style.d.ts +1 -0
  99. package/dist/components/RenderQueue/item-style.js +2 -1
  100. package/dist/components/RenderQueue/load-model-for-job.d.ts +11 -0
  101. package/dist/components/RenderQueue/load-model-for-job.js +14 -0
  102. package/dist/components/RenderQueue/video-matting-job-types.d.ts +38 -0
  103. package/dist/components/RenderQueue/video-matting-job-types.js +5 -0
  104. package/dist/components/RendersTab.js +4 -4
  105. package/dist/components/RulersAndGuidesToggle.js +7 -1
  106. package/dist/components/SegmentedControl.d.ts +2 -2
  107. package/dist/components/SegmentedControl.js +38 -13
  108. package/dist/components/SelectedOutlinePolygon.js +8 -2
  109. package/dist/components/SettingsButton.d.ts +4 -0
  110. package/dist/components/SettingsButton.js +51 -0
  111. package/dist/components/SettingsModal.d.ts +1 -1
  112. package/dist/components/SettingsModal.js +3 -1
  113. package/dist/components/ShowOutlinesProvider.js +12 -0
  114. package/dist/components/SidebarCollapserControls.js +17 -21
  115. package/dist/components/SizeSelector.js +12 -4
  116. package/dist/components/SkillsSettings.js +2 -3
  117. package/dist/components/SnappingToggle.js +9 -8
  118. package/dist/components/StudioSettings.js +32 -18
  119. package/dist/components/SyntaxHighlightedSource.d.ts +5 -0
  120. package/dist/components/SyntaxHighlightedSource.js +78 -0
  121. package/dist/components/Tabs/vertical.d.ts +1 -0
  122. package/dist/components/Tabs/vertical.js +2 -2
  123. package/dist/components/TimeValue.js +2 -3
  124. package/dist/components/Timeline/SequencePropsObserver.js +4 -0
  125. package/dist/components/Timeline/Timeline.js +49 -81
  126. package/dist/components/Timeline/TimelineClipboardKeybindings.js +2 -4
  127. package/dist/components/Timeline/TimelineDeleteKeybindings.js +3 -18
  128. package/dist/components/Timeline/TimelineDragHandler.js +2 -2
  129. package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +1 -0
  130. package/dist/components/Timeline/TimelineLayerChildren.js +12 -9
  131. package/dist/components/Timeline/TimelineRowChrome.js +11 -3
  132. package/dist/components/Timeline/TimelineSchemaField.js +8 -4
  133. package/dist/components/Timeline/TimelineSelection.d.ts +2 -0
  134. package/dist/components/Timeline/TimelineSelection.js +55 -2
  135. package/dist/components/Timeline/TimelineSequence.js +75 -17
  136. package/dist/components/Timeline/TimelineSequenceItem.d.ts +0 -1
  137. package/dist/components/Timeline/TimelineSequenceItem.js +208 -111
  138. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +23 -3
  139. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +73 -25
  140. package/dist/components/Timeline/TimelineTimeIndicators.js +1 -0
  141. package/dist/components/Timeline/TimelineZoomControls.js +2 -1
  142. package/dist/components/Timeline/timeline-field-display-utils.js +8 -5
  143. package/dist/components/Timeline/use-asset-timeline-context-menu.d.ts +2 -0
  144. package/dist/components/Timeline/use-asset-timeline-context-menu.js +52 -0
  145. package/dist/components/TimelineCombobox.d.ts +1 -0
  146. package/dist/components/TimelineCombobox.js +8 -4
  147. package/dist/components/TimelineInOutToggle.js +14 -18
  148. package/dist/components/Transcription/LazyModels.d.ts +1 -0
  149. package/dist/components/Transcription/LazyModels.js +5 -0
  150. package/dist/components/Transcription/Models.d.ts +6 -0
  151. package/dist/components/Transcription/Models.js +18 -0
  152. package/dist/components/Transcription/TranscriptionModal.d.ts +3 -0
  153. package/dist/components/Transcription/TranscriptionModal.js +428 -0
  154. package/dist/components/Transcription/TranscriptionModalWithOptionalWhisper.d.ts +5 -0
  155. package/dist/components/Transcription/TranscriptionModalWithOptionalWhisper.js +48 -0
  156. package/dist/components/Transcription/caption-output-name.d.ts +2 -0
  157. package/dist/components/Transcription/caption-output-name.js +10 -0
  158. package/dist/components/Transcription/resample-media-to-16-khz.d.ts +6 -0
  159. package/dist/components/Transcription/resample-media-to-16-khz.js +82 -0
  160. package/dist/components/Transcription/whisper-languages.d.ts +2 -0
  161. package/dist/components/Transcription/whisper-languages.js +104 -0
  162. package/dist/components/Transcription/whisper-webgpu-capability.d.ts +2 -0
  163. package/dist/components/Transcription/whisper-webgpu-capability.js +7 -0
  164. package/dist/components/UndoRedoButtons.js +13 -38
  165. package/dist/components/UpdatesSettings.js +8 -12
  166. package/dist/components/VideoMatting/LazyModels.d.ts +1 -0
  167. package/dist/components/VideoMatting/LazyModels.js +5 -0
  168. package/dist/components/VideoMatting/Models.d.ts +6 -0
  169. package/dist/components/VideoMatting/Models.js +18 -0
  170. package/dist/components/VideoMatting/VideoMattingModal.d.ts +3 -0
  171. package/dist/components/VideoMatting/VideoMattingModal.js +207 -0
  172. package/dist/components/VideoMatting/VideoMattingModalWithOptionalPackage.d.ts +5 -0
  173. package/dist/components/VideoMatting/VideoMattingModalWithOptionalPackage.js +46 -0
  174. package/dist/components/VideoMatting/video-matting-capability.d.ts +2 -0
  175. package/dist/components/VideoMatting/video-matting-capability.js +7 -0
  176. package/dist/components/WebMcp.js +439 -22
  177. package/dist/components/handle-drop.js +3 -2
  178. package/dist/components/import-assets.d.ts +3 -2
  179. package/dist/components/import-assets.js +5 -9
  180. package/dist/components/keyboard-shortcuts.d.ts +17 -1
  181. package/dist/components/keyboard-shortcuts.js +191 -89
  182. package/dist/components/public-output-name.d.ts +5 -0
  183. package/dist/components/public-output-name.js +60 -0
  184. package/dist/components/use-model-cache-status.d.ts +7 -0
  185. package/dist/components/use-model-cache-status.js +35 -0
  186. package/dist/error-overlay/remotion-overlay/CodeFrame.js +29 -18
  187. package/dist/esm/CaptionQueueProcessor-k0yrm3dj.mjs +211 -0
  188. package/dist/esm/LazyModels-hc33szyn.mjs +11 -0
  189. package/dist/esm/LazyModels-sg40rjw6.mjs +11 -0
  190. package/dist/esm/SyntaxHighlightedSource-3xks91rz.mjs +1236 -0
  191. package/dist/esm/TranscriptionModal-3ctnxpt6.mjs +1011 -0
  192. package/dist/esm/VideoMattingModal-b0r7e60n.mjs +374 -0
  193. package/dist/esm/VideoMattingQueueProcessor-t1hgm2rm.mjs +109 -0
  194. package/dist/esm/index-1b9skrrd.mjs +142 -0
  195. package/dist/esm/index-2j3d1g81.mjs +261 -0
  196. package/dist/esm/index-5zrb1ft4.mjs +39 -0
  197. package/dist/esm/index-7tt71e8n.mjs +36 -0
  198. package/dist/esm/index-9qtvmwtx.mjs +1366 -0
  199. package/dist/esm/index-9x6e1dq0.mjs +428 -0
  200. package/dist/esm/index-c37kme2v.mjs +46209 -0
  201. package/dist/esm/index-cw0pnpg5.mjs +50 -0
  202. package/dist/esm/index-e3zwf3e7.mjs +36 -0
  203. package/dist/esm/index-er3mh6em.mjs +54688 -0
  204. package/dist/esm/{chunk-je0h1bgt.js → index-k426ye99.mjs} +4 -1
  205. package/dist/esm/index-q2epbw93.mjs +423 -0
  206. package/dist/esm/index-q5xv20xx.mjs +41 -0
  207. package/dist/esm/{chunk-6jf1natv.js → index-rcv7qkt5.mjs} +18 -1
  208. package/dist/esm/index-v4tr1bft.mjs +20 -0
  209. package/dist/esm/index-wbmp5srk.mjs +35 -0
  210. package/dist/esm/index-yfrysr5f.mjs +1154 -0
  211. package/dist/esm/index.mjs +45 -933
  212. package/dist/esm/internals.mjs +13 -114393
  213. package/dist/esm/previewEntry.mjs +387 -115050
  214. package/dist/esm/renderEntry.mjs +5 -5
  215. package/dist/esm/{chunk-m0jqdbkr.js → resolve-composition-component-location-bt2d6qxq.mjs} +1 -1
  216. package/dist/helpers/colors.d.ts +1 -0
  217. package/dist/helpers/colors.js +4 -3
  218. package/dist/helpers/drag-aware-double-click.d.ts +2 -1
  219. package/dist/helpers/drag-aware-double-click.js +12 -1
  220. package/dist/helpers/get-asset-metadata.d.ts +1 -0
  221. package/dist/helpers/get-asset-metadata.js +4 -0
  222. package/dist/helpers/hoverable.js +8 -0
  223. package/dist/helpers/inject-css.js +2 -0
  224. package/dist/helpers/optional-package-dependencies.d.ts +3 -0
  225. package/dist/helpers/optional-package-dependencies.js +24 -0
  226. package/dist/helpers/pointer-session.d.ts +6 -0
  227. package/dist/helpers/pointer-session.js +36 -14
  228. package/dist/helpers/prism-vsc-dark-plus.d.ts +1 -0
  229. package/dist/helpers/prism-vsc-dark-plus.js +305 -0
  230. package/dist/helpers/sequence-node-path-mutations.js +11 -0
  231. package/dist/helpers/slugify-name.d.ts +1 -0
  232. package/dist/helpers/slugify-name.js +14 -0
  233. package/dist/helpers/studio-runtime-config.d.ts +1 -0
  234. package/dist/helpers/studio-runtime-config.js +6 -1
  235. package/dist/helpers/use-create-composition.d.ts +1 -0
  236. package/dist/helpers/use-create-composition.js +12 -7
  237. package/dist/helpers/use-keybinding.d.ts +9 -3
  238. package/dist/helpers/use-keybinding.js +8 -9
  239. package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -0
  240. package/dist/helpers/use-keyboard-shortcut-label.js +15 -0
  241. package/dist/helpers/use-menu-structure.js +59 -14
  242. package/dist/helpers/use-rename-composition.d.ts +1 -0
  243. package/dist/helpers/use-rename-composition.js +11 -5
  244. package/dist/icons/input-props.d.ts +1 -1
  245. package/dist/icons/input-props.js +2 -2
  246. package/dist/icons/models.d.ts +4 -0
  247. package/dist/icons/models.js +7 -0
  248. package/dist/icons/separation.d.ts +4 -0
  249. package/dist/icons/separation.js +7 -0
  250. package/dist/icons/skills.js +1 -1
  251. package/dist/icons/transcription.d.ts +4 -0
  252. package/dist/icons/transcription.js +7 -0
  253. package/dist/icons/upload.js +1 -1
  254. package/dist/renderEntry.js +2 -2
  255. package/dist/state/modals.d.ts +14 -2
  256. package/package.json +35 -21
  257. package/dist/components/UpdateCheck.d.ts +0 -1
  258. package/dist/components/UpdateCheck.js +0 -79
  259. package/dist/esm/chunk-3netyjd9.js +0 -99793
@@ -0,0 +1,211 @@
1
+ import {
2
+ loadModelForJob
3
+ } from "./index-v4tr1bft.mjs";
4
+ import {
5
+ RenderQueueContext
6
+ } from "./index-9x6e1dq0.mjs";
7
+ import {
8
+ writeStaticFile
9
+ } from "./index-cw0pnpg5.mjs";
10
+ import"./index-rcv7qkt5.mjs";
11
+
12
+ // src/components/RenderQueue/CaptionQueueProcessor.tsx
13
+ import {
14
+ canUseWhisperWebGpu,
15
+ clearStaleModels,
16
+ disposeWhisperModel,
17
+ isWhisperModelCached,
18
+ loadWhisperModel,
19
+ toCaptions,
20
+ transcribe
21
+ } from "@remotion/whisper-webgpu";
22
+ import { useCallback, useContext, useEffect } from "react";
23
+
24
+ // src/components/Transcription/resample-media-to-16-khz.ts
25
+ import { WHISPER_WEBGPU_SAMPLE_RATE } from "@remotion/whisper-webgpu";
26
+ import {
27
+ ALL_FORMATS,
28
+ Conversion,
29
+ Input,
30
+ NullTarget,
31
+ Output,
32
+ UrlSource,
33
+ WavOutputFormat
34
+ } from "mediabunny";
35
+ var resampleMediaTo16Khz = async ({
36
+ src,
37
+ audioStreamIndex,
38
+ requestInit,
39
+ onProgress
40
+ }) => {
41
+ const input = new Input({
42
+ formats: ALL_FORMATS,
43
+ source: new UrlSource(src, requestInit === null ? {} : { requestInit })
44
+ });
45
+ const waveformChunks = [];
46
+ try {
47
+ onProgress(0);
48
+ const audioTracks = await input.getAudioTracks();
49
+ const primaryVideoTrack = audioStreamIndex === null ? await input.getPrimaryVideoTrack() : null;
50
+ const audioTrack = audioStreamIndex !== null ? audioTracks[audioStreamIndex] ?? null : primaryVideoTrack ? await primaryVideoTrack.getPrimaryPairableAudioTrack() : audioTracks[0] ?? null;
51
+ if (audioTrack === null) {
52
+ throw new Error("The selected media does not have an audio track.");
53
+ }
54
+ if (await audioTrack.isLive()) {
55
+ throw new Error("Live media cannot be transcribed.");
56
+ }
57
+ const output = new Output({
58
+ format: new WavOutputFormat,
59
+ target: new NullTarget
60
+ });
61
+ const conversion = await Conversion.init({
62
+ input,
63
+ output,
64
+ tracks: "all",
65
+ video: { discard: true },
66
+ audio: (track) => {
67
+ if (track.id !== audioTrack.id) {
68
+ return { discard: true };
69
+ }
70
+ return {
71
+ codec: "pcm-f32",
72
+ forceTranscode: true,
73
+ numberOfChannels: 1,
74
+ process: (sample) => {
75
+ const floats = new Float32Array(sample.allocationSize({ format: "f32", planeIndex: 0 }) / Float32Array.BYTES_PER_ELEMENT);
76
+ sample.copyTo(floats, { format: "f32", planeIndex: 0 });
77
+ waveformChunks.push({
78
+ startFrame: Math.round(sample.timestamp * WHISPER_WEBGPU_SAMPLE_RATE),
79
+ waveform: floats
80
+ });
81
+ return sample;
82
+ },
83
+ sampleFormat: "f32",
84
+ sampleRate: WHISPER_WEBGPU_SAMPLE_RATE
85
+ };
86
+ }
87
+ });
88
+ if (!conversion.isValid) {
89
+ throw new Error("The audio track cannot be decoded in this browser. Try converting the media to WAV first.");
90
+ }
91
+ conversion.onProgress = (progress) => onProgress(progress);
92
+ await conversion.execute();
93
+ onProgress(1);
94
+ } finally {
95
+ input.dispose();
96
+ }
97
+ const waveformLength = waveformChunks.reduce((maximum, chunk) => Math.max(maximum, chunk.startFrame + chunk.waveform.length), 0);
98
+ const waveform = new Float32Array(waveformLength);
99
+ for (const chunk of waveformChunks) {
100
+ const destinationStart = Math.max(0, chunk.startFrame);
101
+ const sourceStart = Math.max(0, -chunk.startFrame);
102
+ const availableLength = Math.min(chunk.waveform.length - sourceStart, waveform.length - destinationStart);
103
+ if (availableLength > 0) {
104
+ waveform.set(chunk.waveform.subarray(sourceStart, sourceStart + availableLength), destinationStart);
105
+ }
106
+ }
107
+ return waveform;
108
+ };
109
+
110
+ // src/components/RenderQueue/CaptionQueueProcessor.tsx
111
+ var CaptionQueueProcessor = () => {
112
+ const {
113
+ updateCaptionJobProgress,
114
+ markCaptionJobDone,
115
+ markCaptionJobFailed,
116
+ setProcessCaptionJobCallback
117
+ } = useContext(RenderQueueContext);
118
+ const processJob = useCallback(async (job) => {
119
+ let captionCount = null;
120
+ let processingError = null;
121
+ try {
122
+ updateCaptionJobProgress(job.id, {
123
+ message: "Checking WebGPU support...",
124
+ value: 0
125
+ });
126
+ const support = await canUseWhisperWebGpu();
127
+ if (!support.supported) {
128
+ throw new Error(support.detailedReason);
129
+ }
130
+ updateCaptionJobProgress(job.id, {
131
+ message: `Checking ${job.model}...`,
132
+ value: 0.02
133
+ });
134
+ await clearStaleModels();
135
+ await loadModelForJob({
136
+ model: job.model,
137
+ progressStart: 0.03,
138
+ progressSpan: 0.27,
139
+ isModelCached: (model) => isWhisperModelCached({ model }),
140
+ loadModel: (model, onProgress) => loadWhisperModel({
141
+ model,
142
+ onProgress: (progress) => onProgress(progress.progress)
143
+ }),
144
+ updateProgress: (progress) => updateCaptionJobProgress(job.id, progress)
145
+ });
146
+ updateCaptionJobProgress(job.id, {
147
+ message: `Preparing ${job.displayName}...`,
148
+ value: 0.3
149
+ });
150
+ const channelWaveform = await resampleMediaTo16Khz({
151
+ src: job.src,
152
+ audioStreamIndex: job.audioStreamIndex,
153
+ requestInit: job.requestInit,
154
+ onProgress: (progress) => {
155
+ updateCaptionJobProgress(job.id, {
156
+ message: `Preparing ${job.displayName}...`,
157
+ value: 0.3 + progress * 0.2
158
+ });
159
+ }
160
+ });
161
+ updateCaptionJobProgress(job.id, {
162
+ message: `Transcribing ${job.displayName}...`,
163
+ value: 0.5
164
+ });
165
+ const transcription = await transcribe({
166
+ channelWaveform,
167
+ model: job.model,
168
+ task: job.task,
169
+ chunkLengthInSeconds: job.chunkLengthInSeconds,
170
+ strideLengthInSeconds: job.strideLengthInSeconds,
171
+ forceFullSequences: job.forceFullSequences,
172
+ doSample: job.doSample,
173
+ temperature: job.temperature,
174
+ topK: job.topK,
175
+ repetitionPenalty: job.repetitionPenalty,
176
+ noRepeatNgramSize: job.noRepeatNgramSize,
177
+ ...job.language === null ? {} : { language: job.language }
178
+ });
179
+ const { captions } = toCaptions({
180
+ whisperWebGpuOutput: transcription
181
+ });
182
+ updateCaptionJobProgress(job.id, {
183
+ message: `Saving ${job.outName}...`,
184
+ value: 0.95
185
+ });
186
+ await writeStaticFile({
187
+ contents: JSON.stringify(captions, null, 2),
188
+ filePath: job.outName
189
+ });
190
+ captionCount = captions.length;
191
+ } catch (error) {
192
+ processingError = error instanceof Error ? error : new Error(String(error));
193
+ }
194
+ try {
195
+ await disposeWhisperModel({ model: job.model });
196
+ } catch {}
197
+ if (processingError) {
198
+ markCaptionJobFailed(job.id, processingError);
199
+ } else {
200
+ markCaptionJobDone(job.id, captionCount ?? 0);
201
+ }
202
+ }, [markCaptionJobDone, markCaptionJobFailed, updateCaptionJobProgress]);
203
+ useEffect(() => {
204
+ setProcessCaptionJobCallback(processJob);
205
+ return () => setProcessCaptionJobCallback(null);
206
+ }, [processJob, setProcessCaptionJobCallback]);
207
+ return null;
208
+ };
209
+ export {
210
+ CaptionQueueProcessor
211
+ };
@@ -0,0 +1,11 @@
1
+ import {
2
+ Models
3
+ } from "./index-e3zwf3e7.mjs";
4
+ import"./index-2j3d1g81.mjs";
5
+ import"./index-yfrysr5f.mjs";
6
+ import"./index-5zrb1ft4.mjs";
7
+ import"./index-k426ye99.mjs";
8
+ import"./index-rcv7qkt5.mjs";
9
+ export {
10
+ Models as default
11
+ };
@@ -0,0 +1,11 @@
1
+ import {
2
+ Models
3
+ } from "./index-wbmp5srk.mjs";
4
+ import"./index-2j3d1g81.mjs";
5
+ import"./index-yfrysr5f.mjs";
6
+ import"./index-5zrb1ft4.mjs";
7
+ import"./index-k426ye99.mjs";
8
+ import"./index-rcv7qkt5.mjs";
9
+ export {
10
+ Models as default
11
+ };