UNPKG

@remotion/install-whisper-cpp

Version:

Helpers for installing and using Whisper.cpp

932 lines (931 loc) 30.5 kB
"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 }, ]); });