@remotion/install-whisper-cpp
Version:
Helpers for installing and using Whisper.cpp
932 lines (931 loc) • 30.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const captions_1 = require("@remotion/captions");
const bun_test_1 = require("bun:test");
const convert_to_captions_1 = require("../convert-to-captions");
const to_captions_1 = require("../to-captions");
const example_payload_1 = require("./example-payload");
(0, bun_test_1.test)('Convert to captions - 200ms together', async () => {
const { captions } = (0, to_captions_1.toCaptions)({
whisperCppOutput: example_payload_1.examplePayload,
});
const { pages } = (0, captions_1.createTikTokStyleCaptions)({
captions,
combineTokensWithinMilliseconds: 200,
});
(0, bun_test_1.expect)(pages).toEqual([
{
text: 'William',
startMs: 40,
tokens: [{ text: 'William', fromMs: 40, toMs: 420 }],
durationMs: 380,
},
{
text: 'just',
startMs: 420,
tokens: [{ text: 'just', fromMs: 420, toMs: 650 }],
durationMs: 230,
},
{
text: 'hit 100,000',
startMs: 650,
tokens: [
{ text: 'hit', fromMs: 650, toMs: 810 },
{ text: ' 100', fromMs: 810, toMs: 1330 },
{ text: ',', fromMs: 1330, toMs: 1440 },
{ text: '000', fromMs: 1440, toMs: 1950 },
],
durationMs: 1300,
},
{
text: 'YouTube',
startMs: 1950,
tokens: [{ text: 'YouTube', fromMs: 1950, toMs: 2370 }],
durationMs: 420,
},
{
text: 'subscribers',
startMs: 2370,
tokens: [{ text: 'subscribers', fromMs: 2370, toMs: 3060 }],
durationMs: 690,
},
{
text: 'And we',
startMs: 3060,
tokens: [
{ text: 'And', fromMs: 3060, toMs: 3190 },
{ text: ' we', fromMs: 3190, toMs: 3280 },
],
durationMs: 220,
},
{
text: 'are going',
startMs: 3280,
tokens: [
{ text: 'are', fromMs: 3280, toMs: 3410 },
{ text: ' going', fromMs: 3410, toMs: 3630 },
],
durationMs: 350,
},
{
text: 'to celebrate',
startMs: 3630,
tokens: [
{ text: 'to', fromMs: 3630, toMs: 3710 },
{ text: ' celebrate', fromMs: 3710, toMs: 4130 },
],
durationMs: 500,
},
{
text: 'that',
startMs: 4130,
tokens: [{ text: 'that', fromMs: 4130, toMs: 4340 }],
durationMs: 210,
},
{
text: 'We thought',
startMs: 4340,
tokens: [
{ text: 'We', fromMs: 4340, toMs: 4500 },
{ text: ' thought', fromMs: 4500, toMs: 5140 },
],
durationMs: 800,
},
{
text: 'about',
startMs: 5140,
tokens: [{ text: 'about', fromMs: 5140, toMs: 5480 }],
durationMs: 340,
},
{
text: 'to bake',
startMs: 5480,
tokens: [
{ text: 'to', fromMs: 5480, toMs: 5660 },
{ text: ' bake', fromMs: 5660, toMs: 5980 },
],
durationMs: 500,
},
{
text: 'a cake',
startMs: 5980,
tokens: [
{ text: 'a', fromMs: 5980, toMs: 6080 },
{ text: ' cake', fromMs: 6080, toMs: 6400 },
],
durationMs: 420,
},
{
text: 'We found',
startMs: 6400,
tokens: [
{ text: 'We', fromMs: 6400, toMs: 6540 },
{ text: ' found', fromMs: 6540, toMs: 6900 },
],
durationMs: 500,
},
{
text: 'this',
startMs: 6900,
tokens: [{ text: 'this', fromMs: 6900, toMs: 7200 }],
durationMs: 300,
},
{
text: 'and it',
startMs: 7200,
tokens: [
{ text: 'and', fromMs: 7200, toMs: 7390 },
{ text: ' it', fromMs: 7390, toMs: 7510 },
],
durationMs: 310,
},
{
text: 'reminded',
startMs: 7510,
tokens: [{ text: 'reminded', fromMs: 7510, toMs: 8030 }],
durationMs: 520,
},
{
text: 'us of',
startMs: 8030,
tokens: [
{ text: 'us', fromMs: 8030, toMs: 8170 },
{ text: ' of', fromMs: 8170, toMs: 8260 },
],
durationMs: 230,
},
{
text: 'William',
startMs: 8260,
tokens: [{ text: 'William', fromMs: 8260, toMs: 8740 }],
durationMs: 480,
},
{
text: 'We hope',
startMs: 8740,
tokens: [
{ text: 'We', fromMs: 8740, toMs: 8850 },
{ text: ' hope', fromMs: 8850, toMs: 9080 },
],
durationMs: 340,
},
{
text: 'he will',
startMs: 9080,
tokens: [
{ text: 'he', fromMs: 9080, toMs: 9190 },
{ text: ' will', fromMs: 9190, toMs: 9420 },
],
durationMs: 340,
},
{
text: 'like',
startMs: 9420,
tokens: [{ text: 'like', fromMs: 9420, toMs: 9650 }],
durationMs: 230,
},
{
text: 'the cake',
startMs: 9650,
tokens: [
{ text: 'the', fromMs: 9650, toMs: 9820 },
{ text: ' cake', fromMs: 9820, toMs: 10100 },
],
durationMs: 450,
},
{
text: "Let's start",
startMs: 10100,
tokens: [
{ text: 'Let', fromMs: 10100, toMs: 10220 },
{ text: "'s", fromMs: 10220, toMs: 10300 },
{ text: ' start', fromMs: 10300, toMs: 10570 },
],
durationMs: 470,
},
{
text: 'with the',
startMs: 10570,
tokens: [
{ text: 'with', fromMs: 10570, toMs: 10700 },
{ text: ' the', fromMs: 10700, toMs: 10780 },
],
durationMs: 210,
},
{
text: 'dough',
startMs: 10780,
tokens: [{ text: 'dough', fromMs: 10780, toMs: 11000 }],
durationMs: 220,
},
{
text: 'By putting',
startMs: 11000,
tokens: [
{ text: 'By', fromMs: 11000, toMs: 11120 },
{ text: ' putting', fromMs: 11120, toMs: 11550 },
],
durationMs: 550,
},
{
text: 'some',
startMs: 11550,
tokens: [{ text: 'some', fromMs: 11550, toMs: 11790 }],
durationMs: 240,
},
{
text: 'butter',
startMs: 11790,
tokens: [{ text: 'butter', fromMs: 11790, toMs: 12180 }],
durationMs: 390,
},
{
text: 'Some',
startMs: 12180,
tokens: [{ text: 'Some', fromMs: 12180, toMs: 12750 }],
durationMs: 570,
},
{
text: 'sugar',
startMs: 12750,
tokens: [{ text: 'sugar', fromMs: 12750, toMs: 13380 }],
durationMs: 630,
},
{
text: 'Eggs',
startMs: 13380,
tokens: [{ text: 'Eggs', fromMs: 13380, toMs: 14580 }],
durationMs: 1200,
},
{
text: 'No frameworks,',
startMs: 14580,
tokens: [
{ text: 'No', fromMs: 14580, toMs: 14720 },
{ text: ' frameworks', fromMs: 14720, toMs: 15440 },
{ text: ',', fromMs: 15440, toMs: 15550 },
],
durationMs: 970,
},
{
text: 'just',
startMs: 15550,
tokens: [{ text: 'just', fromMs: 15550, toMs: 15790 }],
durationMs: 240,
},
{
text: 'vanilla',
startMs: 15790,
tokens: [{ text: 'vanilla', fromMs: 15790, toMs: 16220 }],
durationMs: 430,
},
{
text: 'Pinch',
startMs: 16220,
tokens: [
{ text: 'P', fromMs: 16220, toMs: 16300 },
{ text: 'inch', fromMs: 16300, toMs: 16640 },
],
durationMs: 420,
},
{
text: 'of salt',
startMs: 16640,
tokens: [
{ text: 'of', fromMs: 16640, toMs: 16810 },
{ text: ' salt', fromMs: 16810, toMs: 17180 },
],
durationMs: 540,
},
{
text: 'Some',
startMs: 17180,
tokens: [{ text: 'Some', fromMs: 17180, toMs: 17480 }],
durationMs: 300,
},
{
text: 'Nutella',
startMs: 17480,
tokens: [
{ text: 'Nut', fromMs: 17480, toMs: 17700 },
{ text: 'ella', fromMs: 17700, toMs: 18020 },
],
durationMs: 540,
},
{
text: 'Some',
startMs: 18020,
tokens: [{ text: 'Some', fromMs: 18020, toMs: 18280 }],
durationMs: 260,
},
{
text: 'chocolate',
startMs: 18280,
tokens: [{ text: 'chocolate', fromMs: 18280, toMs: 18880 }],
durationMs: 600,
},
{
text: 'Baking',
startMs: 18880,
tokens: [
{ text: 'B', fromMs: 18880, toMs: 18980 },
{ text: 'aking', fromMs: 18980, toMs: 19420 },
],
durationMs: 540,
},
{
text: 'powder',
startMs: 19420,
tokens: [{ text: 'powder', fromMs: 19420, toMs: 19980 }],
durationMs: 560,
},
{
text: 'And',
startMs: 19980,
tokens: [{ text: 'And', fromMs: 19980, toMs: 20500 }],
durationMs: 520,
},
{
text: 'flour',
startMs: 20500,
tokens: [{ text: 'flour', fromMs: 20500, toMs: 21380 }],
durationMs: 880,
},
{
text: 'Just',
startMs: 21380,
tokens: [{ text: 'Just', fromMs: 21380, toMs: 21690 }],
durationMs: 310,
},
{
text: 'massage',
startMs: 21690,
tokens: [{ text: 'massage', fromMs: 21690, toMs: 22120 }],
durationMs: 430,
},
{
text: 'in the',
startMs: 22120,
tokens: [
{ text: 'in', fromMs: 22120, toMs: 22250 },
{ text: ' the', fromMs: 22250, toMs: 22450 },
],
durationMs: 330,
},
{
text: 'butter',
startMs: 22450,
tokens: [{ text: 'butter', fromMs: 22450, toMs: 22880 }],
durationMs: 430,
},
{
text: 'to give',
startMs: 22880,
tokens: [
{ text: 'to', fromMs: 22880, toMs: 23000 },
{ text: ' give', fromMs: 23000, toMs: 23250 },
],
durationMs: 370,
},
{
text: 'it the',
startMs: 23250,
tokens: [
{ text: 'it', fromMs: 23250, toMs: 23380 },
{ text: ' the', fromMs: 23380, toMs: 23590 },
],
durationMs: 340,
},
{
text: 'full',
startMs: 23590,
tokens: [{ text: 'full', fromMs: 23590, toMs: 23890 }],
durationMs: 300,
},
{
text: 'treatment',
startMs: 23890,
tokens: [{ text: 'treatment', fromMs: 23890, toMs: 24380 }],
durationMs: 490,
},
{
text: 'Fill',
startMs: 24380,
tokens: [{ text: 'Fill', fromMs: 24380, toMs: 24740 }],
durationMs: 360,
},
{
text: 'it in',
startMs: 24740,
tokens: [
{ text: 'it', fromMs: 24740, toMs: 24920 },
{ text: ' in', fromMs: 24920, toMs: 25120 },
],
durationMs: 380,
},
{
text: 'Bake',
startMs: 25120,
tokens: [{ text: 'Bake', fromMs: 25120, toMs: 25570 }],
durationMs: 450,
},
{
text: 'it for',
startMs: 25570,
tokens: [
{ text: 'it', fromMs: 25570, toMs: 25770 },
{ text: ' for', fromMs: 25770, toMs: 26060 },
],
durationMs: 490,
},
{
text: 'half',
startMs: 26060,
tokens: [{ text: 'half', fromMs: 26060, toMs: 26480 }],
durationMs: 420,
},
{
text: 'an',
startMs: 26480,
tokens: [{ text: 'an', fromMs: 26480, toMs: 26690 }],
durationMs: 210,
},
{
text: 'hour',
startMs: 26690,
tokens: [{ text: 'hour', fromMs: 26690, toMs: 27110 }],
durationMs: 420,
},
{
text: 'at 170',
startMs: 27110,
tokens: [
{ text: 'at', fromMs: 27110, toMs: 27300 },
{ text: ' 170', fromMs: 27300, toMs: 28170 },
],
durationMs: 1060,
},
{
text: 'degrees',
startMs: 28170,
tokens: [{ text: 'degrees', fromMs: 28170, toMs: 28800 }],
durationMs: 680,
},
{
text: "It's time",
startMs: 28850,
tokens: [
{ text: 'It', fromMs: 28850, toMs: 28900 },
{ text: "'s", fromMs: 28900, toMs: 29000 },
{ text: ' time', fromMs: 29000, toMs: 29210 },
],
durationMs: 360,
},
{
text: 'for the',
startMs: 29210,
tokens: [
{ text: 'for', fromMs: 29210, toMs: 29400 },
{ text: ' the', fromMs: 29400, toMs: 29530 },
],
durationMs: 320,
},
{
text: 'icing',
startMs: 29530,
tokens: [{ text: 'icing', fromMs: 29530, toMs: 29800 }],
durationMs: 270,
},
{
text: 'on the',
startMs: 29800,
tokens: [
{ text: 'on', fromMs: 29800, toMs: 29900 },
{ text: ' the', fromMs: 29900, toMs: 30060 },
],
durationMs: 260,
},
{
text: 'cake',
startMs: 30060,
tokens: [{ text: 'cake', fromMs: 30060, toMs: 30320 }],
durationMs: 260,
},
{
text: 'Time',
startMs: 30320,
tokens: [{ text: 'Time', fromMs: 30320, toMs: 30940 }],
durationMs: 620,
},
{
text: 'for',
startMs: 30940,
tokens: [{ text: 'for', fromMs: 30940, toMs: 31410 }],
durationMs: 470,
},
{
text: 'the',
startMs: 31410,
tokens: [{ text: 'the', fromMs: 31410, toMs: 31880 }],
durationMs: 470,
},
{
text: 'most',
startMs: 31880,
tokens: [{ text: 'most', fromMs: 31880, toMs: 32500 }],
durationMs: 620,
},
{
text: 'critical',
startMs: 32500,
tokens: [{ text: 'critical', fromMs: 32500, toMs: 33750 }],
durationMs: 1250,
},
{
text: 'part',
startMs: 33750,
tokens: [{ text: 'part', fromMs: 33750, toMs: 34400 }],
durationMs: 650,
},
{
text: 'This',
startMs: 34400,
tokens: [{ text: 'This', fromMs: 34400, toMs: 35840 }],
durationMs: 1440,
},
{
text: 'is',
startMs: 35840,
tokens: [{ text: 'is', fromMs: 35840, toMs: 36580 }],
durationMs: 740,
},
{
text: 'how',
startMs: 36580,
tokens: [{ text: 'how', fromMs: 36580, toMs: 37670 }],
durationMs: 1090,
},
{
text: 'it',
startMs: 37670,
tokens: [{ text: 'it', fromMs: 37670, toMs: 38420 }],
durationMs: 750,
},
{
text: 'turned',
startMs: 38420,
tokens: [{ text: 'turned', fromMs: 38420, toMs: 40580 }],
durationMs: 2160,
},
{
text: 'out',
startMs: 40580,
tokens: [{ text: 'out', fromMs: 40580, toMs: 41700 }],
durationMs: 1120,
},
{
text: 'Stupid',
startMs: 41700,
tokens: [{ text: 'Stupid', fromMs: 41700, toMs: 42750 }],
durationMs: 1050,
},
{
text: 'idea,',
startMs: 42750,
tokens: [
{ text: 'idea', fromMs: 42750, toMs: 43440 },
{ text: ',', fromMs: 43440, toMs: 43590 },
],
durationMs: 840,
},
{
text: 'pretty',
startMs: 43590,
tokens: [{ text: 'pretty', fromMs: 43590, toMs: 44070 }],
durationMs: 480,
},
{
text: 'bad',
startMs: 44070,
tokens: [{ text: 'bad', fromMs: 44070, toMs: 44310 }],
durationMs: 240,
},
{
text: 'execution',
startMs: 44310,
tokens: [{ text: 'execution', fromMs: 44310, toMs: 45040 }],
durationMs: 730,
},
{
text: 'I hope',
startMs: 45040,
tokens: [
{ text: 'I', fromMs: 45040, toMs: 45140 },
{ text: ' hope', fromMs: 45140, toMs: 45530 },
],
durationMs: 490,
},
{
text: 'he likes',
startMs: 45530,
tokens: [
{ text: 'he', fromMs: 45530, toMs: 45730 },
{ text: ' likes', fromMs: 45730, toMs: 46220 },
],
durationMs: 690,
},
{
text: 'it anyway',
startMs: 46220,
tokens: [
{ text: 'it', fromMs: 46220, toMs: 46420 },
{ text: ' anyway', fromMs: 46420, toMs: 47040 },
],
durationMs: 820,
},
{
text: 'Hey',
startMs: 47040,
tokens: [{ text: 'Hey', fromMs: 47040, toMs: 48030 }],
durationMs: 990,
},
{
text: 'William',
startMs: 48030,
tokens: [{ text: 'William', fromMs: 48030, toMs: 50340 }],
durationMs: 2310,
},
{
text: 'Congrats',
startMs: 50340,
tokens: [
{ text: 'Cong', fromMs: 50340, toMs: 51970 },
{ text: 'rats', fromMs: 51970, toMs: 53580 },
],
durationMs: 3240,
},
{
text: 'We',
startMs: 53580,
tokens: [{ text: 'We', fromMs: 53580, toMs: 53790 }],
durationMs: 210,
},
{
text: 'wanted',
startMs: 53790,
tokens: [{ text: 'wanted', fromMs: 53790, toMs: 54440 }],
durationMs: 650,
},
{
text: 'to congratulate',
startMs: 54440,
tokens: [
{ text: 'to', fromMs: 54440, toMs: 54640 },
{ text: ' congratulate', fromMs: 54640, toMs: 55930 },
],
durationMs: 1490,
},
{
text: 'you',
startMs: 55930,
tokens: [{ text: 'you', fromMs: 55930, toMs: 56280 }],
durationMs: 350,
},
{
text: 'on',
startMs: 56280,
tokens: [{ text: 'on', fromMs: 56280, toMs: 56520 }],
durationMs: 240,
},
{
text: 'the',
startMs: 56520,
tokens: [{ text: 'the', fromMs: 56520, toMs: 56880 }],
durationMs: 360,
},
{
text: '100,000',
startMs: 56880,
tokens: [
{ text: '100', fromMs: 56880, toMs: 57980 },
{ text: ',', fromMs: 57980, toMs: 58010 },
{ text: '000', fromMs: 58010, toMs: 58180 },
],
durationMs: 1810,
},
{
text: 'You hear',
startMs: 58690,
tokens: [
{ text: 'You', fromMs: 58690, toMs: 58870 },
{ text: ' hear', fromMs: 58870, toMs: 59150 },
],
durationMs: 460,
},
{
text: 'Joseph',
startMs: 59150,
tokens: [{ text: 'Joseph', fromMs: 59150, toMs: 59570 }],
durationMs: 420,
},
{
text: 'crying?',
startMs: 59570,
tokens: [
{ text: 'crying', fromMs: 59570, toMs: 59990 },
{ text: '?', fromMs: 59990, toMs: 60220 },
],
durationMs: 650,
},
{
text: 'Thank',
startMs: 60220,
tokens: [{ text: 'Thank', fromMs: 60220, toMs: 60820 }],
durationMs: 600,
},
{
text: 'you',
startMs: 60820,
tokens: [{ text: 'you', fromMs: 60820, toMs: 61180 }],
durationMs: 360,
},
{
text: 'so',
startMs: 61180,
tokens: [{ text: 'so', fromMs: 61180, toMs: 61420 }],
durationMs: 240,
},
{
text: 'much',
startMs: 61420,
tokens: [{ text: 'much', fromMs: 61420, toMs: 61920 }],
durationMs: 500,
},
{
text: '(electronic',
startMs: 61920,
tokens: [
{ text: '(', fromMs: 61920, toMs: 62080 },
{ text: 'elect', fromMs: 62080, toMs: 62880 },
{ text: 'ronic', fromMs: 62880, toMs: 63680 },
],
durationMs: 1760,
},
{
text: 'beeping)',
startMs: 63680,
tokens: [
{ text: 'be', fromMs: 63680, toMs: 63890 },
{ text: 'eping', fromMs: 63890, toMs: 64800 },
{ text: ')', fromMs: 64800, toMs: 65000 },
],
durationMs: 1320,
},
]);
});
(0, bun_test_1.test)('Convert to captions - 0ms together', () => {
const { captions: transcript } = (0, convert_to_captions_1.convertToCaptions)({
transcription: example_payload_1.examplePayload.transcription,
combineTokensWithinMilliseconds: 0,
});
(0, bun_test_1.expect)(transcript).toEqual([
{ text: 'William', startInSeconds: 0.24 },
{ text: 'just', startInSeconds: 0.48 },
{ text: 'hit', startInSeconds: 0.7 },
{ text: '100,000', startInSeconds: 1.3 },
{ text: 'YouTube', startInSeconds: 2.22 },
{ text: 'subscribers', startInSeconds: 2.94 },
{ text: 'And', startInSeconds: 3.24 },
{ text: 'we', startInSeconds: 3.32 },
{ text: 'are', startInSeconds: 3.42 },
{ text: 'going', startInSeconds: 3.58 },
{ text: 'to', startInSeconds: 3.76 },
{ text: 'celebrate', startInSeconds: 4.1 },
{ text: 'that', startInSeconds: 4.34 },
{ text: 'We', startInSeconds: 4.5 },
{ text: 'thought', startInSeconds: 4.7 },
{ text: 'about', startInSeconds: 5.1 },
{ text: 'to', startInSeconds: 5.42 },
{ text: 'bake', startInSeconds: 5.92 },
{ text: 'a', startInSeconds: 6.14 },
{ text: 'cake', startInSeconds: 6.4 },
{ text: 'We', startInSeconds: 6.56 },
{ text: 'found', startInSeconds: 6.8 },
{ text: 'this', startInSeconds: 7.12 },
{ text: 'and', startInSeconds: 7.36 },
{ text: 'it', startInSeconds: 7.5 },
{ text: 'reminded', startInSeconds: 7.78 },
{ text: 'us', startInSeconds: 8.04 },
{ text: 'of', startInSeconds: 8.24 },
{ text: 'William', startInSeconds: 8.52 },
{ text: 'We', startInSeconds: 8.94 },
{ text: 'hope', startInSeconds: 9.22 },
{ text: 'he', startInSeconds: 9.42 },
{ text: 'will', startInSeconds: 9.56 },
{ text: 'like', startInSeconds: 9.68 },
{ text: 'the', startInSeconds: 9.86 },
{ text: 'cake', startInSeconds: 10.08 },
{ text: "Let's", startInSeconds: 10.28 },
{ text: 'start', startInSeconds: 10.46 },
{ text: 'with', startInSeconds: 10.58 },
{ text: 'the', startInSeconds: 10.68 },
{ text: 'dough', startInSeconds: 10.96 },
{ text: 'By', startInSeconds: 11.2 },
{ text: 'putting', startInSeconds: 11.44 },
{ text: 'some', startInSeconds: 11.64 },
{ text: 'butter', startInSeconds: 12.06 },
{ text: 'Some', startInSeconds: 12.86 },
{ text: 'sugar', startInSeconds: 13.3 },
{ text: 'Eggs', startInSeconds: 14.36 },
{ text: 'No', startInSeconds: 14.78 },
{ text: 'frameworks,', startInSeconds: 15.28 },
{ text: 'just', startInSeconds: 15.68 },
{ text: 'vanilla', startInSeconds: 16.1 },
{ text: 'Pinch', startInSeconds: 16.38 },
{ text: 'of', startInSeconds: 16.58 },
{ text: 'salt', startInSeconds: 17.08 },
{ text: 'Some', startInSeconds: 17.44 },
{ text: 'Nutella', startInSeconds: 17.78 },
{ text: 'Some', startInSeconds: 18.3 },
{ text: 'chocolate', startInSeconds: 18.68 },
{ text: 'Baking', startInSeconds: 19.12 },
{ text: 'powder', startInSeconds: 19.76 },
{ text: 'And', startInSeconds: 20.68 },
{ text: 'flour', startInSeconds: 21.14 },
{ text: 'Just', startInSeconds: 21.66 },
{ text: 'massage', startInSeconds: 22.06 },
{ text: 'in', startInSeconds: 22.38 },
{ text: 'the', startInSeconds: 22.5 },
{ text: 'butter', startInSeconds: 22.84 },
{ text: 'to', startInSeconds: 23.08 },
{ text: 'give', startInSeconds: 23.18 },
{ text: 'it', startInSeconds: 23.32 },
{ text: 'the', startInSeconds: 23.42 },
{ text: 'full', startInSeconds: 23.76 },
{ text: 'treatment', startInSeconds: 24.28 },
{ text: 'Fill', startInSeconds: 24.54 },
{ text: 'it', startInSeconds: 24.7 },
{ text: 'in', startInSeconds: 25.32 },
{ text: 'Bake', startInSeconds: 26.1 },
{ text: 'it', startInSeconds: 26.3 },
{ text: 'for', startInSeconds: 26.48 },
{ text: 'half', startInSeconds: 26.64 },
{ text: 'an', startInSeconds: 26.86 },
{ text: 'hour', startInSeconds: 27.06 },
{ text: 'at', startInSeconds: 27.4 },
{ text: '170', startInSeconds: 28.14 },
{ text: 'degrees', startInSeconds: 28.6 },
{ text: "It's", startInSeconds: 28.84 },
{ text: 'time', startInSeconds: 29.04 },
{ text: 'for', startInSeconds: 29.28 },
{ text: 'the', startInSeconds: 29.42 },
{ text: 'icing', startInSeconds: 29.7 },
{ text: 'on', startInSeconds: 29.88 },
{ text: 'the', startInSeconds: 30.0 },
{ text: 'cake', startInSeconds: 30.56 },
{ text: 'Time', startInSeconds: 33.14 },
{ text: 'for', startInSeconds: 33.34 },
{ text: 'the', startInSeconds: 33.46 },
{ text: 'most', startInSeconds: 33.62 },
{ text: 'critical', startInSeconds: 34.0 },
{ text: 'part', startInSeconds: 34.76 },
{ text: 'This', startInSeconds: 40.74 },
{ text: 'is', startInSeconds: 40.86 },
{ text: 'how', startInSeconds: 41.0 },
{ text: 'it', startInSeconds: 41.1 },
{ text: 'turned', startInSeconds: 41.32 },
{ text: 'out', startInSeconds: 42.02 },
{ text: 'Stupid', startInSeconds: 42.78 },
{ text: 'idea,', startInSeconds: 43.36 },
{ text: 'pretty', startInSeconds: 43.7 },
{ text: 'bad', startInSeconds: 44.02 },
{ text: 'execution', startInSeconds: 44.72 },
{ text: 'I', startInSeconds: 45.88 },
{ text: 'hope', startInSeconds: 46.06 },
{ text: 'he', startInSeconds: 46.2 },
{ text: 'likes', startInSeconds: 46.38 },
{ text: 'it', startInSeconds: 46.58 },
{ text: 'anyway', startInSeconds: 47.56 },
{ text: 'Hey', startInSeconds: 49.52 },
{ text: 'William', startInSeconds: 50.06 },
{ text: 'Congrats', startInSeconds: 52.32 },
{ text: 'We', startInSeconds: 54.56 },
{ text: 'wanted', startInSeconds: 54.86 },
{ text: 'to', startInSeconds: 55.0 },
{ text: 'congratulate', startInSeconds: 55.58 },
{ text: 'you', startInSeconds: 56.22 },
{ text: 'on', startInSeconds: 56.54 },
{ text: 'the', startInSeconds: 56.68 },
{ text: '100,000', startInSeconds: 57.14 },
{ text: 'You', startInSeconds: 58.86 },
{ text: 'hear', startInSeconds: 59.06 },
{ text: 'Joseph', startInSeconds: 59.4 },
{ text: 'crying?', startInSeconds: 59.74 },
{ text: 'Thank', startInSeconds: 61.04 },
{ text: 'you', startInSeconds: 61.18 },
{ text: 'so', startInSeconds: 61.44 },
{ text: 'much', startInSeconds: 61.76 },
{ text: '(electronic', startInSeconds: 62.88 },
{ text: 'beeping)', startInSeconds: 63.02 },
]);
});