mulmocast 2.0.7 → 2.0.8

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.
@@ -2,7 +2,7 @@ import dotenv from "dotenv";
2
2
  import { GraphAI, TaskManager, GraphAILogger } from "graphai";
3
3
  import * as agents from "@graphai/vanilla";
4
4
  import { fileWriteAgent } from "@graphai/vanilla_node_agents";
5
- import { ttsNijivoiceAgent, ttsOpenaiAgent, ttsGoogleAgent, ttsGeminiAgent, ttsElevenlabsAgent, addBGMAgent, combineAudioFilesAgent, mediaMockAgent, } from "../agents/index.js";
5
+ import { ttsNijivoiceAgent, ttsOpenaiAgent, ttsGoogleAgent, ttsGeminiAgent, ttsElevenlabsAgent, ttsKotodamaAgent, addBGMAgent, combineAudioFilesAgent, mediaMockAgent, } from "../agents/index.js";
6
6
  import { text2SpeechProviderSchema } from "../types/index.js";
7
7
  import { fileCacheAgentFilter, nijovoiceTextAgentFilter } from "../utils/filters.js";
8
8
  import { getAudioArtifactFilePath, getAudioFilePath, getOutputStudioFilePath, resolveDirPath, defaultBGMPath, mkdir, writingMessage } from "../utils/file.js";
@@ -108,6 +108,7 @@ const graph_tts = {
108
108
  voice: ":preprocessor.voiceId",
109
109
  speed: ":preprocessor.speechOptions.speed",
110
110
  instructions: ":preprocessor.speechOptions.instruction",
111
+ decoration: ":preprocessor.speechOptions.decoration",
111
112
  model: ":preprocessor.model",
112
113
  },
113
114
  },
@@ -222,6 +223,7 @@ const audioAgents = {
222
223
  ttsNijivoiceAgent,
223
224
  ttsGoogleAgent,
224
225
  ttsGeminiAgent,
226
+ ttsKotodamaAgent,
225
227
  ttsElevenlabsAgent,
226
228
  mediaMockAgent,
227
229
  addBGMAgent,
@@ -12,6 +12,7 @@ import ttsNijivoiceAgent from "./tts_nijivoice_agent.js";
12
12
  import ttsOpenaiAgent from "./tts_openai_agent.js";
13
13
  import ttsGoogleAgent from "./tts_google_agent.js";
14
14
  import ttsGeminiAgent from "./tts_gemini_agent.js";
15
+ import ttsKotodamaAgent from "./tts_kotodama_agent.js";
15
16
  import validateSchemaAgent from "./validate_schema_agent.js";
16
17
  import soundEffectReplicateAgent from "./sound_effect_replicate_agent.js";
17
18
  import lipSyncReplicateAgent from "./lipsync_replicate_agent.js";
@@ -20,4 +21,4 @@ import { browserlessAgent } from "@graphai/browserless_agent";
20
21
  import { textInputAgent } from "@graphai/input_agents";
21
22
  import { openAIAgent } from "@graphai/openai_agent";
22
23
  import { fileWriteAgent } from "@graphai/vanilla_node_agents";
23
- export { openAIAgent, fileWriteAgent, browserlessAgent, textInputAgent, addBGMAgent, combineAudioFilesAgent, imageGenAIAgent, imageOpenaiAgent, imageReplicateAgent, tavilySearchAgent, movieGenAIAgent, movieReplicateAgent, mediaMockAgent, ttsElevenlabsAgent, ttsNijivoiceAgent, ttsOpenaiAgent, ttsGoogleAgent, ttsGeminiAgent, validateSchemaAgent, soundEffectReplicateAgent, lipSyncReplicateAgent, puppeteerCrawlerAgent, };
24
+ export { openAIAgent, fileWriteAgent, browserlessAgent, textInputAgent, addBGMAgent, combineAudioFilesAgent, imageGenAIAgent, imageOpenaiAgent, imageReplicateAgent, tavilySearchAgent, movieGenAIAgent, movieReplicateAgent, mediaMockAgent, ttsElevenlabsAgent, ttsNijivoiceAgent, ttsOpenaiAgent, ttsGoogleAgent, ttsGeminiAgent, ttsKotodamaAgent, validateSchemaAgent, soundEffectReplicateAgent, lipSyncReplicateAgent, puppeteerCrawlerAgent, };
@@ -12,6 +12,7 @@ import ttsNijivoiceAgent from "./tts_nijivoice_agent.js";
12
12
  import ttsOpenaiAgent from "./tts_openai_agent.js";
13
13
  import ttsGoogleAgent from "./tts_google_agent.js";
14
14
  import ttsGeminiAgent from "./tts_gemini_agent.js";
15
+ import ttsKotodamaAgent from "./tts_kotodama_agent.js";
15
16
  import validateSchemaAgent from "./validate_schema_agent.js";
16
17
  import soundEffectReplicateAgent from "./sound_effect_replicate_agent.js";
17
18
  import lipSyncReplicateAgent from "./lipsync_replicate_agent.js";
@@ -21,4 +22,4 @@ import { textInputAgent } from "@graphai/input_agents";
21
22
  import { openAIAgent } from "@graphai/openai_agent";
22
23
  // import * as vanilla from "@graphai/vanilla";
23
24
  import { fileWriteAgent } from "@graphai/vanilla_node_agents";
24
- export { openAIAgent, fileWriteAgent, browserlessAgent, textInputAgent, addBGMAgent, combineAudioFilesAgent, imageGenAIAgent, imageOpenaiAgent, imageReplicateAgent, tavilySearchAgent, movieGenAIAgent, movieReplicateAgent, mediaMockAgent, ttsElevenlabsAgent, ttsNijivoiceAgent, ttsOpenaiAgent, ttsGoogleAgent, ttsGeminiAgent, validateSchemaAgent, soundEffectReplicateAgent, lipSyncReplicateAgent, puppeteerCrawlerAgent, };
25
+ export { openAIAgent, fileWriteAgent, browserlessAgent, textInputAgent, addBGMAgent, combineAudioFilesAgent, imageGenAIAgent, imageOpenaiAgent, imageReplicateAgent, tavilySearchAgent, movieGenAIAgent, movieReplicateAgent, mediaMockAgent, ttsElevenlabsAgent, ttsNijivoiceAgent, ttsOpenaiAgent, ttsGoogleAgent, ttsGeminiAgent, ttsKotodamaAgent, validateSchemaAgent, soundEffectReplicateAgent, lipSyncReplicateAgent, puppeteerCrawlerAgent, };
@@ -116,6 +116,9 @@ export type NijivoiceTTSAgentParams = TTSAgentParams & {
116
116
  speed: number;
117
117
  speed_global: number;
118
118
  };
119
+ export type KotodamaTTSAgentParams = TTSAgentParams & {
120
+ decoration: string;
121
+ };
119
122
  export type GoogleTTSAgentParams = TTSAgentParams & {
120
123
  speed: number;
121
124
  };
@@ -19,6 +19,7 @@ export declare const multiLingualTextsSchema: z.ZodRecord<z.ZodString, z.ZodObje
19
19
  export declare const speechOptionsSchema: z.ZodObject<{
20
20
  speed: z.ZodOptional<z.ZodNumber>;
21
21
  instruction: z.ZodOptional<z.ZodString>;
22
+ decoration: z.ZodOptional<z.ZodString>;
22
23
  }, z.core.$strict>;
23
24
  export declare const defaultSpeaker = "Presenter";
24
25
  export declare const text2SpeechProviderSchema: z.ZodDefault<z.ZodEnum<{
@@ -31,6 +32,7 @@ export declare const speakerDataSchema: z.ZodObject<{
31
32
  speechOptions: z.ZodOptional<z.ZodObject<{
32
33
  speed: z.ZodOptional<z.ZodNumber>;
33
34
  instruction: z.ZodOptional<z.ZodString>;
35
+ decoration: z.ZodOptional<z.ZodString>;
34
36
  }, z.core.$strict>>;
35
37
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
36
38
  [x: string]: string;
@@ -44,6 +46,7 @@ export declare const speakerSchema: z.ZodObject<{
44
46
  speechOptions: z.ZodOptional<z.ZodObject<{
45
47
  speed: z.ZodOptional<z.ZodNumber>;
46
48
  instruction: z.ZodOptional<z.ZodString>;
49
+ decoration: z.ZodOptional<z.ZodString>;
47
50
  }, z.core.$strict>>;
48
51
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
49
52
  [x: string]: string;
@@ -56,6 +59,7 @@ export declare const speakerSchema: z.ZodObject<{
56
59
  speechOptions: z.ZodOptional<z.ZodObject<{
57
60
  speed: z.ZodOptional<z.ZodNumber>;
58
61
  instruction: z.ZodOptional<z.ZodString>;
62
+ decoration: z.ZodOptional<z.ZodString>;
59
63
  }, z.core.$strict>>;
60
64
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
61
65
  [x: string]: string;
@@ -70,6 +74,7 @@ export declare const speakerDictionarySchema: z.ZodRecord<z.ZodString, z.ZodObje
70
74
  speechOptions: z.ZodOptional<z.ZodObject<{
71
75
  speed: z.ZodOptional<z.ZodNumber>;
72
76
  instruction: z.ZodOptional<z.ZodString>;
77
+ decoration: z.ZodOptional<z.ZodString>;
73
78
  }, z.core.$strict>>;
74
79
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
75
80
  [x: string]: string;
@@ -82,6 +87,7 @@ export declare const speakerDictionarySchema: z.ZodRecord<z.ZodString, z.ZodObje
82
87
  speechOptions: z.ZodOptional<z.ZodObject<{
83
88
  speed: z.ZodOptional<z.ZodNumber>;
84
89
  instruction: z.ZodOptional<z.ZodString>;
90
+ decoration: z.ZodOptional<z.ZodString>;
85
91
  }, z.core.$strict>>;
86
92
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
87
93
  [x: string]: string;
@@ -97,6 +103,7 @@ export declare const mulmoSpeechParamsSchema: z.ZodDefault<z.ZodObject<{
97
103
  speechOptions: z.ZodOptional<z.ZodObject<{
98
104
  speed: z.ZodOptional<z.ZodNumber>;
99
105
  instruction: z.ZodOptional<z.ZodString>;
106
+ decoration: z.ZodOptional<z.ZodString>;
100
107
  }, z.core.$strict>>;
101
108
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
102
109
  [x: string]: string;
@@ -109,6 +116,7 @@ export declare const mulmoSpeechParamsSchema: z.ZodDefault<z.ZodObject<{
109
116
  speechOptions: z.ZodOptional<z.ZodObject<{
110
117
  speed: z.ZodOptional<z.ZodNumber>;
111
118
  instruction: z.ZodOptional<z.ZodString>;
119
+ decoration: z.ZodOptional<z.ZodString>;
112
120
  }, z.core.$strict>>;
113
121
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
114
122
  [x: string]: string;
@@ -629,6 +637,7 @@ export declare const mulmoBeatSchema: z.ZodObject<{
629
637
  speechOptions: z.ZodOptional<z.ZodObject<{
630
638
  speed: z.ZodOptional<z.ZodNumber>;
631
639
  instruction: z.ZodOptional<z.ZodString>;
640
+ decoration: z.ZodOptional<z.ZodString>;
632
641
  }, z.core.$strict>>;
633
642
  textSlideParams: z.ZodOptional<z.ZodObject<{
634
643
  cssStyles: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
@@ -716,6 +725,7 @@ export declare const mulmoPresentationStyleSchema: z.ZodObject<{
716
725
  speechOptions: z.ZodOptional<z.ZodObject<{
717
726
  speed: z.ZodOptional<z.ZodNumber>;
718
727
  instruction: z.ZodOptional<z.ZodString>;
728
+ decoration: z.ZodOptional<z.ZodString>;
719
729
  }, z.core.$strict>>;
720
730
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
721
731
  [x: string]: string;
@@ -728,6 +738,7 @@ export declare const mulmoPresentationStyleSchema: z.ZodObject<{
728
738
  speechOptions: z.ZodOptional<z.ZodObject<{
729
739
  speed: z.ZodOptional<z.ZodNumber>;
730
740
  instruction: z.ZodOptional<z.ZodString>;
741
+ decoration: z.ZodOptional<z.ZodString>;
731
742
  }, z.core.$strict>>;
732
743
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
733
744
  [x: string]: string;
@@ -852,6 +863,7 @@ export declare const mulmoScriptSchema: z.ZodObject<{
852
863
  speechOptions: z.ZodOptional<z.ZodObject<{
853
864
  speed: z.ZodOptional<z.ZodNumber>;
854
865
  instruction: z.ZodOptional<z.ZodString>;
866
+ decoration: z.ZodOptional<z.ZodString>;
855
867
  }, z.core.$strict>>;
856
868
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
857
869
  [x: string]: string;
@@ -864,6 +876,7 @@ export declare const mulmoScriptSchema: z.ZodObject<{
864
876
  speechOptions: z.ZodOptional<z.ZodObject<{
865
877
  speed: z.ZodOptional<z.ZodNumber>;
866
878
  instruction: z.ZodOptional<z.ZodString>;
879
+ decoration: z.ZodOptional<z.ZodString>;
867
880
  }, z.core.$strict>>;
868
881
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
869
882
  [x: string]: string;
@@ -1133,6 +1146,7 @@ export declare const mulmoScriptSchema: z.ZodObject<{
1133
1146
  speechOptions: z.ZodOptional<z.ZodObject<{
1134
1147
  speed: z.ZodOptional<z.ZodNumber>;
1135
1148
  instruction: z.ZodOptional<z.ZodString>;
1149
+ decoration: z.ZodOptional<z.ZodString>;
1136
1150
  }, z.core.$strict>>;
1137
1151
  textSlideParams: z.ZodOptional<z.ZodObject<{
1138
1152
  cssStyles: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
@@ -1264,6 +1278,7 @@ export declare const mulmoStudioSchema: z.ZodObject<{
1264
1278
  speechOptions: z.ZodOptional<z.ZodObject<{
1265
1279
  speed: z.ZodOptional<z.ZodNumber>;
1266
1280
  instruction: z.ZodOptional<z.ZodString>;
1281
+ decoration: z.ZodOptional<z.ZodString>;
1267
1282
  }, z.core.$strict>>;
1268
1283
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1269
1284
  [x: string]: string;
@@ -1276,6 +1291,7 @@ export declare const mulmoStudioSchema: z.ZodObject<{
1276
1291
  speechOptions: z.ZodOptional<z.ZodObject<{
1277
1292
  speed: z.ZodOptional<z.ZodNumber>;
1278
1293
  instruction: z.ZodOptional<z.ZodString>;
1294
+ decoration: z.ZodOptional<z.ZodString>;
1279
1295
  }, z.core.$strict>>;
1280
1296
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1281
1297
  [x: string]: string;
@@ -1545,6 +1561,7 @@ export declare const mulmoStudioSchema: z.ZodObject<{
1545
1561
  speechOptions: z.ZodOptional<z.ZodObject<{
1546
1562
  speed: z.ZodOptional<z.ZodNumber>;
1547
1563
  instruction: z.ZodOptional<z.ZodString>;
1564
+ decoration: z.ZodOptional<z.ZodString>;
1548
1565
  }, z.core.$strict>>;
1549
1566
  textSlideParams: z.ZodOptional<z.ZodObject<{
1550
1567
  cssStyles: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
@@ -1612,6 +1629,7 @@ export declare const mulmoPromptTemplateSchema: z.ZodObject<{
1612
1629
  speechOptions: z.ZodOptional<z.ZodObject<{
1613
1630
  speed: z.ZodOptional<z.ZodNumber>;
1614
1631
  instruction: z.ZodOptional<z.ZodString>;
1632
+ decoration: z.ZodOptional<z.ZodString>;
1615
1633
  }, z.core.$strict>>;
1616
1634
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1617
1635
  [x: string]: string;
@@ -1624,6 +1642,7 @@ export declare const mulmoPromptTemplateSchema: z.ZodObject<{
1624
1642
  speechOptions: z.ZodOptional<z.ZodObject<{
1625
1643
  speed: z.ZodOptional<z.ZodNumber>;
1626
1644
  instruction: z.ZodOptional<z.ZodString>;
1645
+ decoration: z.ZodOptional<z.ZodString>;
1627
1646
  }, z.core.$strict>>;
1628
1647
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1629
1648
  [x: string]: string;
@@ -1742,6 +1761,7 @@ export declare const mulmoPromptTemplateFileSchema: z.ZodObject<{
1742
1761
  speechOptions: z.ZodOptional<z.ZodObject<{
1743
1762
  speed: z.ZodOptional<z.ZodNumber>;
1744
1763
  instruction: z.ZodOptional<z.ZodString>;
1764
+ decoration: z.ZodOptional<z.ZodString>;
1745
1765
  }, z.core.$strict>>;
1746
1766
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1747
1767
  [x: string]: string;
@@ -1754,6 +1774,7 @@ export declare const mulmoPromptTemplateFileSchema: z.ZodObject<{
1754
1774
  speechOptions: z.ZodOptional<z.ZodObject<{
1755
1775
  speed: z.ZodOptional<z.ZodNumber>;
1756
1776
  instruction: z.ZodOptional<z.ZodString>;
1777
+ decoration: z.ZodOptional<z.ZodString>;
1757
1778
  }, z.core.$strict>>;
1758
1779
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1759
1780
  [x: string]: string;
@@ -18,8 +18,9 @@ export const localizedTextSchema = z
18
18
  export const multiLingualTextsSchema = z.record(langSchema, localizedTextSchema);
19
19
  export const speechOptionsSchema = z
20
20
  .object({
21
- speed: z.number().optional(), // default: 1.0
22
- instruction: z.string().optional(),
21
+ speed: z.number().optional(), // default: 1.0 for google and niji voice
22
+ instruction: z.string().optional(), // for tts openai
23
+ decoration: z.string().optional(), // for kotodama. default: neutral
23
24
  })
24
25
  .strict();
25
26
  const speakerIdSchema = z.string();
@@ -17,6 +17,7 @@ export declare const createStudioData: (_mulmoScript: MulmoScript, fileName: str
17
17
  speechOptions?: {
18
18
  speed?: number | undefined;
19
19
  instruction?: string | undefined;
20
+ decoration?: string | undefined;
20
21
  } | undefined;
21
22
  provider?: string | undefined;
22
23
  model?: string | undefined;
@@ -27,6 +28,7 @@ export declare const createStudioData: (_mulmoScript: MulmoScript, fileName: str
27
28
  speechOptions?: {
28
29
  speed?: number | undefined;
29
30
  instruction?: string | undefined;
31
+ decoration?: string | undefined;
30
32
  } | undefined;
31
33
  provider?: string | undefined;
32
34
  model?: string | undefined;
@@ -242,6 +244,7 @@ export declare const createStudioData: (_mulmoScript: MulmoScript, fileName: str
242
244
  speechOptions?: {
243
245
  speed?: number | undefined;
244
246
  instruction?: string | undefined;
247
+ decoration?: string | undefined;
245
248
  } | undefined;
246
249
  textSlideParams?: {
247
250
  cssStyles: string | string[];
@@ -332,6 +335,7 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
332
335
  speechOptions?: {
333
336
  speed?: number | undefined;
334
337
  instruction?: string | undefined;
338
+ decoration?: string | undefined;
335
339
  } | undefined;
336
340
  provider?: string | undefined;
337
341
  model?: string | undefined;
@@ -342,6 +346,7 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
342
346
  speechOptions?: {
343
347
  speed?: number | undefined;
344
348
  instruction?: string | undefined;
349
+ decoration?: string | undefined;
345
350
  } | undefined;
346
351
  provider?: string | undefined;
347
352
  model?: string | undefined;
@@ -557,6 +562,7 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
557
562
  speechOptions?: {
558
563
  speed?: number | undefined;
559
564
  instruction?: string | undefined;
565
+ decoration?: string | undefined;
560
566
  } | undefined;
561
567
  textSlideParams?: {
562
568
  cssStyles: string | string[];
@@ -654,6 +660,7 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
654
660
  speechOptions?: {
655
661
  speed?: number | undefined;
656
662
  instruction?: string | undefined;
663
+ decoration?: string | undefined;
657
664
  } | undefined;
658
665
  provider?: string | undefined;
659
666
  model?: string | undefined;
@@ -664,6 +671,7 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
664
671
  speechOptions?: {
665
672
  speed?: number | undefined;
666
673
  instruction?: string | undefined;
674
+ decoration?: string | undefined;
667
675
  } | undefined;
668
676
  provider?: string | undefined;
669
677
  model?: string | undefined;
@@ -29,6 +29,13 @@ export declare const provider2TTSAgent: {
29
29
  models: string[];
30
30
  keyName: string;
31
31
  };
32
+ kotodama: {
33
+ agentName: string;
34
+ hasLimitedConcurrency: boolean;
35
+ defaultVoice: string;
36
+ defaultDecoration: string;
37
+ keyName: string;
38
+ };
32
39
  mock: {
33
40
  agentName: string;
34
41
  hasLimitedConcurrency: boolean;
@@ -32,6 +32,13 @@ export const provider2TTSAgent = {
32
32
  models: ["eleven_multilingual_v2", "eleven_turbo_v2_5", "eleven_turbo_v2", "eleven_flash_v2_5", "eleven_flash_v2"],
33
33
  keyName: "ELEVENLABS_API_KEY",
34
34
  },
35
+ kotodama: {
36
+ agentName: "ttsKotodamaAgent",
37
+ hasLimitedConcurrency: true,
38
+ defaultVoice: "Atla",
39
+ defaultDecoration: "neutral",
40
+ keyName: "KOTODAMA_API_KEY",
41
+ },
35
42
  mock: {
36
43
  agentName: "mediaMockAgent",
37
44
  hasLimitedConcurrency: true,
@@ -82,6 +82,9 @@ export const settings2GraphAIConfig = (settings, env) => {
82
82
  ttsElevenlabsAgent: {
83
83
  apiKey: getKey("TTS", "ELEVENLABS_API_KEY"),
84
84
  },
85
+ ttsKotodamaAgent: {
86
+ apiKey: getKey("TTS", "KOTODAMA_API_KEY"),
87
+ },
85
88
  soundEffectReplicateAgent: {
86
89
  apiKey: getKey("SOUND_EFFECT", "REPLICATE_API_TOKEN"),
87
90
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmocast",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.node.js",
@@ -0,0 +1,57 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "title": "Media Test",
7
+ "speechParams": {
8
+ "speakers": {
9
+ "Presenter": {
10
+ "provider": "kotodama",
11
+ "voiceId": "Poporo"
12
+ },
13
+ "Shion": {
14
+ "provider": "kotodama",
15
+ "speechOptions": {
16
+ "decoration": "laughing"
17
+ },
18
+ "voiceId": "Shion"
19
+ }
20
+ }
21
+ },
22
+ "beats": [
23
+ {
24
+ "speaker": "Presenter",
25
+ "text": "こんにちは",
26
+ "image": {
27
+ "type": "textSlide",
28
+ "slide": {
29
+ "title": "Hello, kotodama"
30
+ }
31
+ }
32
+ },
33
+ {
34
+ "speaker": "Shion",
35
+ "text": "こんにちは",
36
+ "image": {
37
+ "type": "textSlide",
38
+ "slide": {
39
+ "title": "Hello, kotodama"
40
+ }
41
+ }
42
+ },
43
+ {
44
+ "speaker": "Presenter",
45
+ "text": "ハッピーだね",
46
+ "speechOptions": {
47
+ "decoration": "happy"
48
+ },
49
+ "image": {
50
+ "type": "textSlide",
51
+ "slide": {
52
+ "title": "Hello, kotodama"
53
+ }
54
+ }
55
+ }
56
+ ]
57
+ }