@uptime.app/contracts 2.0.40 → 2.0.42-rc.0

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 (175) hide show
  1. package/dist/cjs/app-hack/app-hack-metadata.d.ts +1 -0
  2. package/dist/cjs/app-hack/app-hack-metadata.d.ts.map +1 -1
  3. package/dist/cjs/b2b-organisation/b2b-org-idp-mapping.d.ts +1 -0
  4. package/dist/cjs/b2b-organisation/b2b-org-idp-mapping.d.ts.map +1 -1
  5. package/dist/cjs/enriched-b2b-organisation/enriched-b2b-organisation-events.d.ts +18 -0
  6. package/dist/cjs/enriched-b2b-organisation/enriched-b2b-organisation-events.d.ts.map +1 -0
  7. package/dist/cjs/enriched-b2b-organisation/enriched-b2b-organisation-events.js +3 -0
  8. package/dist/cjs/enriched-b2b-organisation/enriched-b2b-organisation-events.js.map +1 -0
  9. package/dist/cjs/enriched-b2b-organisation/enriched-b2b-organisation.d.ts +17 -0
  10. package/dist/cjs/enriched-b2b-organisation/enriched-b2b-organisation.d.ts.map +1 -0
  11. package/dist/cjs/enriched-b2b-organisation/enriched-b2b-organisation.js +3 -0
  12. package/dist/cjs/enriched-b2b-organisation/enriched-b2b-organisation.js.map +1 -0
  13. package/dist/cjs/index.d.ts +2 -0
  14. package/dist/cjs/index.d.ts.map +1 -1
  15. package/dist/cjs/index.js +2 -0
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/esm/app-hack/app-hack-metadata.d.ts +1 -0
  18. package/dist/esm/app-hack/app-hack-metadata.d.ts.map +1 -1
  19. package/dist/esm/b2b-organisation/b2b-org-idp-mapping.d.ts +1 -0
  20. package/dist/esm/b2b-organisation/b2b-org-idp-mapping.d.ts.map +1 -1
  21. package/dist/esm/enriched-b2b-organisation/enriched-b2b-organisation-events.d.ts +18 -0
  22. package/dist/esm/enriched-b2b-organisation/enriched-b2b-organisation-events.d.ts.map +1 -0
  23. package/dist/esm/enriched-b2b-organisation/enriched-b2b-organisation-events.js +2 -0
  24. package/dist/esm/enriched-b2b-organisation/enriched-b2b-organisation-events.js.map +1 -0
  25. package/dist/esm/enriched-b2b-organisation/enriched-b2b-organisation.d.ts +17 -0
  26. package/dist/esm/enriched-b2b-organisation/enriched-b2b-organisation.d.ts.map +1 -0
  27. package/dist/esm/enriched-b2b-organisation/enriched-b2b-organisation.js +2 -0
  28. package/dist/esm/enriched-b2b-organisation/enriched-b2b-organisation.js.map +1 -0
  29. package/dist/esm/index.d.ts +2 -0
  30. package/dist/esm/index.d.ts.map +1 -1
  31. package/dist/esm/index.js +2 -0
  32. package/dist/esm/index.js.map +1 -1
  33. package/package.json +2 -2
  34. package/src/access-control/collection-access-control.ts +28 -28
  35. package/src/access-control/hack-access-control.ts +32 -32
  36. package/src/access-control/profile-access-control.ts +27 -27
  37. package/src/app-hack/app-full-hack.ts +9 -9
  38. package/src/app-hack/app-hack-metadata.ts +61 -60
  39. package/src/app-hack/app-restricted-hack.ts +22 -22
  40. package/src/b2b-content-access/b2b-content-access.ts +57 -57
  41. package/src/b2b-organisation/b2b-carousel.ts +33 -33
  42. package/src/b2b-organisation/b2b-org-idp-mapping.ts +28 -26
  43. package/src/b2b-organisation/b2b-organisation-events.ts +21 -21
  44. package/src/b2b-organisation/b2b-organisation-invitation.ts +45 -45
  45. package/src/b2b-organisation/b2b-organisation-member-events.ts +21 -21
  46. package/src/b2b-organisation/b2b-organisation-member.ts +11 -11
  47. package/src/b2b-organisation/b2b-organisation.ts +33 -33
  48. package/src/brand/brand-events.ts +21 -21
  49. package/src/brand/brand.ts +27 -27
  50. package/src/catalogue/catalogue.ts +147 -147
  51. package/src/cms-hack/cms-searchable-hack.ts +44 -44
  52. package/src/collection/collection-events.ts +21 -21
  53. package/src/collection/collection.ts +57 -57
  54. package/src/collection/enriched-collection-events.ts +18 -18
  55. package/src/collection/enriched-collection.ts +64 -64
  56. package/src/creator/creator-events.ts +32 -32
  57. package/src/creator/creator.ts +7 -7
  58. package/src/distribution/collection-distribution.ts +17 -17
  59. package/src/distribution/distribution-events.ts +61 -61
  60. package/src/distribution/hack-distribution.ts +18 -18
  61. package/src/draft-hack/draft-hack-events.ts +21 -21
  62. package/src/draft-hack/draft-hack.ts +190 -190
  63. package/src/draft-hack-generation/draft-hack-generation-commands.ts +10 -10
  64. package/src/draft-hack-generation/draft-hack-generation-events.ts +52 -52
  65. package/src/draft-hack-generation/draft-hack-generation.ts +39 -39
  66. package/src/enriched-b2b-organisation/enriched-b2b-organisation-events.ts +21 -0
  67. package/src/enriched-b2b-organisation/enriched-b2b-organisation.ts +18 -0
  68. package/src/enriched-hack/enriched-hack-events.ts +21 -21
  69. package/src/enriched-hack/enriched-hack.ts +109 -109
  70. package/src/enrichment-asset/hack-enrichment-video-events.ts +55 -55
  71. package/src/enrichment-asset/hack-enrichment-video.ts +40 -40
  72. package/src/entitlement/user-entitlements-commands.ts +54 -54
  73. package/src/entitlement/user-entitlements-events.ts +29 -29
  74. package/src/entitlement/user-entitlements.ts +18 -18
  75. package/src/flashcard/flashcard-events.ts +85 -85
  76. package/src/flashcard/flashcard.ts +138 -138
  77. package/src/hack/extracted-subject.ts +31 -31
  78. package/src/hack/hack-events.ts +21 -21
  79. package/src/hack/hack-published.ts +21 -21
  80. package/src/hack/hack-with-voice-events.ts +20 -20
  81. package/src/hack/hack-with-voice.ts +33 -33
  82. package/src/hack/hack.ts +117 -117
  83. package/src/hack/publish-hack-command.ts +20 -20
  84. package/src/hack-mapping/access-helper.ts +6 -6
  85. package/src/hack-mapping/app-full-hack.test.ts +12 -12
  86. package/src/hack-mapping/app-full-hack.ts +14 -14
  87. package/src/hack-mapping/app-hack-metadata.test.ts +22 -22
  88. package/src/hack-mapping/app-hack-metadata.ts +81 -81
  89. package/src/hack-mapping/app-restricted-hack.test.ts +11 -11
  90. package/src/hack-mapping/app-restricted-hack.ts +21 -21
  91. package/src/hack-mapping/remove-undefined-fields.ts +9 -9
  92. package/src/hack-mapping/test-data/enriched-hack.json +2574 -2574
  93. package/src/hack-mapping/test-data/expected-app-full-hack.json +2507 -2507
  94. package/src/hack-mapping/test-data/expected-app-hack-metadata.json +90 -90
  95. package/src/hack-mapping/test-data/expected-app-restricted-hack.json +797 -797
  96. package/src/hack-metadata/hack-metadata-events.ts +21 -21
  97. package/src/hack-metadata/hack-metadata.ts +17 -17
  98. package/src/hack-of-the-day/hack-of-the-day-events.ts +21 -21
  99. package/src/hack-of-the-day/hack-of-the-day.ts +13 -13
  100. package/src/hack-statistics/hack-statistics-events.ts +21 -21
  101. package/src/hack-statistics/hack-statistics.ts +9 -9
  102. package/src/hackbot/hack-generation-commands.ts +44 -44
  103. package/src/hackbot/hack-generation-trigger-events.ts +21 -21
  104. package/src/hackbot/hack-generation-trigger.ts +56 -56
  105. package/src/history/history-events.ts +21 -21
  106. package/src/history/history.ts +46 -46
  107. package/src/identity-provider/domain-identity-provider-events.ts +20 -20
  108. package/src/identity-provider/domain-identity-provider.ts +10 -10
  109. package/src/identity-provider/identity-provider-events.ts +20 -20
  110. package/src/identity-provider/identity-provider.ts +27 -27
  111. package/src/index.ts +180 -177
  112. package/src/interest/interest-events.ts +21 -21
  113. package/src/interest/interest.ts +15 -15
  114. package/src/knowledge-source/knowledge-source-events.ts +21 -21
  115. package/src/knowledge-source/knowledge-source.ts +43 -43
  116. package/src/knowledge-source-parsing/knowledge-source-metadata.ts +52 -52
  117. package/src/knowledge-source-parsing/knowledge-source-parsing-commands.ts +41 -41
  118. package/src/knowledge-source-parsing/knowledge-source-parsing-events.ts +30 -30
  119. package/src/knowledge-source-parsing/podcast-metadata.ts +44 -44
  120. package/src/knowledge-source-parsing/podcast-parsing-events.ts +28 -28
  121. package/src/knowledge-source-parsing/user-hack-generation-options.ts +7 -7
  122. package/src/localisation/live-locales.ts +45 -45
  123. package/src/localisation/locale-language.ts +4 -4
  124. package/src/localisation/supported-languages.ts +11 -11
  125. package/src/localisation/supported-locales.ts +67 -67
  126. package/src/message-bus/Context.ts +7 -7
  127. package/src/moderation/hack-moderation-result-events.ts +18 -18
  128. package/src/moderation/hack-moderation-result.ts +27 -27
  129. package/src/partner/partner-events.ts +21 -21
  130. package/src/partner/partner.ts +7 -7
  131. package/src/pending-hack/pending-hack-events.ts +20 -20
  132. package/src/pending-hack/pending-hack-with-voice-events.ts +20 -20
  133. package/src/pending-hack/pending-hack-with-voice.ts +25 -25
  134. package/src/pending-hack/pending-hack.ts +78 -78
  135. package/src/preferences/preferences-events.ts +15 -15
  136. package/src/preferences/preferences.ts +35 -35
  137. package/src/profile/profile-events.ts +41 -41
  138. package/src/profile/profile.ts +29 -29
  139. package/src/profile/translated-profile.ts +13 -13
  140. package/src/referral/referral-events.ts +41 -41
  141. package/src/referral/referral.ts +76 -76
  142. package/src/saved/saved-collection-events.ts +19 -19
  143. package/src/saved/saved-collection.ts +8 -8
  144. package/src/segment/segment-commands.ts +75 -75
  145. package/src/segment/segment-events.ts +42 -42
  146. package/src/segment/segment-with-voice.ts +8 -8
  147. package/src/segment/segment.ts +82 -82
  148. package/src/skin/skin-events.ts +21 -21
  149. package/src/skin/skin.ts +6 -6
  150. package/src/spark/spark-board-read-model.ts +17 -17
  151. package/src/spark/spark-board.ts +12 -12
  152. package/src/spark/spark-events.ts +42 -42
  153. package/src/spark/spark.ts +80 -80
  154. package/src/text-to-speech/create-speech-commands.ts +22 -22
  155. package/src/text-to-speech/speech-created-events.ts +10 -10
  156. package/src/text-to-speech/supported-voices.ts +183 -183
  157. package/src/text-to-speech/text-segment.ts +29 -29
  158. package/src/theme/theme-events.ts +21 -21
  159. package/src/theme/theme.ts +68 -68
  160. package/src/translation/translation-events.ts +73 -73
  161. package/src/translation/translation.ts +25 -25
  162. package/src/trending/trending-events.ts +21 -21
  163. package/src/trending/trending-hacks.ts +8 -8
  164. package/src/user/get-user.ts +60 -60
  165. package/src/user/user-events.ts +30 -30
  166. package/src/user-context/user-context-events.ts +21 -21
  167. package/src/user-context/user-context.ts +15 -15
  168. package/src/user-notification-context/user-notification-context-events.ts +21 -21
  169. package/src/user-notification-context/user-notification-context.ts +9 -9
  170. package/src/user-statistics/user-statistics-events.ts +97 -97
  171. package/src/user-statistics/user-statistics.ts +82 -82
  172. package/src/video-cropping/video-cropping-events.ts +43 -43
  173. package/src/video-cropping/video-metadata.ts +12 -12
  174. package/tsconfig.cjs.json +7 -7
  175. package/tsconfig.npm.json +22 -22
@@ -1,80 +1,80 @@
1
- import { CardType, SegmentType } from '../segment/segment';
2
- import { Profile } from '../profile/profile';
3
- import { SupportedLocale } from '../localisation/supported-locales';
4
- import { ThemeTemplate } from '../theme/theme';
5
- import { Hack } from '../hack/hack';
6
-
7
- export interface Spark {
8
- id: string;
9
- v: number;
10
- createdAt: string;
11
- updatedAt: string;
12
- userId: string;
13
- hackId: string;
14
- segmentId: string;
15
- card: SparkedCard;
16
- boardId: string;
17
- theme: {
18
- fontFamily: string;
19
- light: ThemeTemplate;
20
- dark: ThemeTemplate;
21
- player?: {
22
- light: {
23
- backgroundColor: string;
24
- },
25
- dark: {
26
- backgroundColor: string;
27
- }
28
- }
29
- };
30
- note?: string;
31
- hack: SparkHack;
32
- baseLocaleHackId: string;
33
- locale: SupportedLocale;
34
- language: string;
35
- }
36
-
37
- export interface SparkedCard {
38
- id: string;
39
- markdown: string;
40
- segmentType: SegmentType;
41
- isTitle?: boolean;
42
- cardType?: CardType;
43
- }
44
-
45
- // matches Profile of EnrichedHack interface
46
- export type SparkHack = Pick<Hack,
47
- 'id'
48
- | 'title'
49
- | 'owner'
50
- | 'themeId'
51
- | 'isHidden'
52
- | 'editorialTags'
53
- | 'coverUrl'
54
- | 'topics'
55
- | 'type'
56
- | 'affiliate'
57
- | 'contributors'
58
- | 'createdAt'
59
- | 'updatedAt'
60
- | 'v'
61
- | 'sourceData'
62
- | 'subjects' >
63
- & {
64
- profile: Profile
65
- | {
66
- deleted: boolean;
67
- uptimeOwned: boolean;
68
- avatarUrl: string;
69
- };
70
- segments: Pick<Hack['segments'],
71
- 'inANutshell'
72
- | 'favouriteQuote'
73
- | 'introduction'
74
- | 'insights'
75
- | 'conclusion'
76
- | 'overview'
77
- | 'hereAreTheInsights'
78
- | 'putInAction'>;
79
- acl: string[]
80
- };
1
+ import { CardType, SegmentType } from '../segment/segment';
2
+ import { Profile } from '../profile/profile';
3
+ import { SupportedLocale } from '../localisation/supported-locales';
4
+ import { ThemeTemplate } from '../theme/theme';
5
+ import { Hack } from '../hack/hack';
6
+
7
+ export interface Spark {
8
+ id: string;
9
+ v: number;
10
+ createdAt: string;
11
+ updatedAt: string;
12
+ userId: string;
13
+ hackId: string;
14
+ segmentId: string;
15
+ card: SparkedCard;
16
+ boardId: string;
17
+ theme: {
18
+ fontFamily: string;
19
+ light: ThemeTemplate;
20
+ dark: ThemeTemplate;
21
+ player?: {
22
+ light: {
23
+ backgroundColor: string;
24
+ },
25
+ dark: {
26
+ backgroundColor: string;
27
+ }
28
+ }
29
+ };
30
+ note?: string;
31
+ hack: SparkHack;
32
+ baseLocaleHackId: string;
33
+ locale: SupportedLocale;
34
+ language: string;
35
+ }
36
+
37
+ export interface SparkedCard {
38
+ id: string;
39
+ markdown: string;
40
+ segmentType: SegmentType;
41
+ isTitle?: boolean;
42
+ cardType?: CardType;
43
+ }
44
+
45
+ // matches Profile of EnrichedHack interface
46
+ export type SparkHack = Pick<Hack,
47
+ 'id'
48
+ | 'title'
49
+ | 'owner'
50
+ | 'themeId'
51
+ | 'isHidden'
52
+ | 'editorialTags'
53
+ | 'coverUrl'
54
+ | 'topics'
55
+ | 'type'
56
+ | 'affiliate'
57
+ | 'contributors'
58
+ | 'createdAt'
59
+ | 'updatedAt'
60
+ | 'v'
61
+ | 'sourceData'
62
+ | 'subjects' >
63
+ & {
64
+ profile: Profile
65
+ | {
66
+ deleted: boolean;
67
+ uptimeOwned: boolean;
68
+ avatarUrl: string;
69
+ };
70
+ segments: Pick<Hack['segments'],
71
+ 'inANutshell'
72
+ | 'favouriteQuote'
73
+ | 'introduction'
74
+ | 'insights'
75
+ | 'conclusion'
76
+ | 'overview'
77
+ | 'hereAreTheInsights'
78
+ | 'putInAction'>;
79
+ acl: string[]
80
+ };
@@ -1,22 +1,22 @@
1
- import { TextSegment, Voice } from './text-segment';
2
-
3
- export interface CreateSpeechFromTextCommand {
4
- id: string;
5
- type: 'CreateSpeechFromText';
6
- payload: {
7
- locale: string;
8
- textSegments: TextSegment[];
9
- /** voices to generate. If omitted then all voices for the given locale will be generated */
10
- voiceIds?: string[]
11
- };
12
- }
13
-
14
- export interface CreateSpeechWithVoiceCommand {
15
- id: string;
16
- type: 'CreateSpeechWithVoice';
17
- payload: {
18
- locale: string;
19
- textSegments: TextSegment[];
20
- voice: Voice;
21
- };
22
- }
1
+ import { TextSegment, Voice } from './text-segment';
2
+
3
+ export interface CreateSpeechFromTextCommand {
4
+ id: string;
5
+ type: 'CreateSpeechFromText';
6
+ payload: {
7
+ locale: string;
8
+ textSegments: TextSegment[];
9
+ /** voices to generate. If omitted then all voices for the given locale will be generated */
10
+ voiceIds?: string[]
11
+ };
12
+ }
13
+
14
+ export interface CreateSpeechWithVoiceCommand {
15
+ id: string;
16
+ type: 'CreateSpeechWithVoice';
17
+ payload: {
18
+ locale: string;
19
+ textSegments: TextSegment[];
20
+ voice: Voice;
21
+ };
22
+ }
@@ -1,10 +1,10 @@
1
- import { TextSegmentWithSpeech } from './text-segment';
2
-
3
- export interface SpeechFromTextCreatedEvent {
4
- id: string;
5
- type: 'SpeechFromTextCreated';
6
- payload: {
7
- locale: string;
8
- textSegments: TextSegmentWithSpeech[];
9
- };
10
- }
1
+ import { TextSegmentWithSpeech } from './text-segment';
2
+
3
+ export interface SpeechFromTextCreatedEvent {
4
+ id: string;
5
+ type: 'SpeechFromTextCreated';
6
+ payload: {
7
+ locale: string;
8
+ textSegments: TextSegmentWithSpeech[];
9
+ };
10
+ }
@@ -1,183 +1,183 @@
1
- import { SupportedLocale } from '../localisation/supported-locales';
2
- import { SupportedSpeechProvider, Voice } from './text-segment';
3
-
4
- const britishFable: Voice = { id: 'en-US-FableMultilingualNeural', name: 'Jean', countryCode: 'GB', language: 'en-GB', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
5
- const americanNova: Voice = { id: 'en-US-NovaMultilingualNeural', name: 'Diana', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
6
- const americanOnyx: Voice = { id: 'en-US-OnyxMultilingualNeural', name: 'Harold', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
7
- const americanAlloy: Voice = { id: 'en-US-AlloyMultilingualNeural', name: 'Danny', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
8
- const americanEcho: Voice = { id: 'en-US-EchoMultilingualNeural', name: 'Zach', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
9
- const americanShimmer: Voice = { id: 'en-US-ShimmerMultilingualNeural', name: 'Lydia', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
10
-
11
- const brazilianBrenda: Voice = { id: 'pt-BR-BrendaNeural', name: 'Brenda', countryCode: 'BR', language: 'pt-BR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
12
- const brazilianGiovanna: Voice = { id: 'pt-BR-GiovannaNeural', name: 'Giovanna', countryCode: 'BR', language: 'pt-BR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
13
- const brazilianAntonio: Voice = { id: 'pt-BR-AntonioNeural', name: 'Antonio', countryCode: 'BR', language: 'pt-BR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
14
- const brazilianHumberto: Voice = { id: 'pt-BR-HumbertoNeural', name: 'Humberto', countryCode: 'BR', language: 'pt-BR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
15
-
16
- const mexicanBeatriz: Voice = { id: 'es-MX-BeatrizNeural', name: 'Beatriz', countryCode: 'MX', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
17
- const mexicanCecilio: Voice = { id: 'es-MX-CecilioNeural', name: 'Cecilio', countryCode: 'MX', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
18
- const spanishAbril: Voice = { id: 'es-ES-AbrilNeural', name: 'Abril', countryCode: 'ES', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
19
- const spanishAlvaro: Voice = { id: 'es-ES-AlvaroNeural', name: 'Alvaro', countryCode: 'ES', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
20
- const latamPaloma: Voice = { id: 'es-US-PalomaNeural', name: 'Paloma', countryCode: 'LATAM', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
21
- const latamAlonso: Voice = { id: 'es-US-AlonsoNeural', name: 'Alonso', countryCode: 'LATAM', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
22
-
23
- const frenchHenri: Voice = { id: 'fr-FR-HenriNeural', name: 'Henri', countryCode: 'FR', language: 'fr-FR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
24
- const frenchJerome: Voice = { id: 'fr-FR-JeromeNeural', name: 'Jerome', countryCode: 'FR', language: 'fr-FR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
25
- const frenchJacqueline: Voice = { id: 'fr-FR-JacquelineNeural', name: 'Jacqueline', countryCode: 'FR', language: 'fr-FR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
26
- const belgianCharline: Voice = { id: 'fr-BE-CharlineNeural', name: 'Charline', countryCode: 'BE', language: 'fr-FR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
27
-
28
- const italianElsa: Voice = { id: 'it-IT-ElsaNeural', name: 'Elsa', countryCode: 'IT', language: 'it-IT', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
29
- const italianFabiola: Voice = { id: 'it-IT-FabiolaNeural', name: 'Fabiola', countryCode: 'IT', language: 'it-IT', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
30
- const italianCalimero: Voice = { id: 'it-IT-CalimeroNeural', name: 'Calimero', countryCode: 'IT', language: 'it-IT', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
31
- const italianCataldo: Voice = { id: 'it-IT-CataldoNeural', name: 'Cataldo', countryCode: 'IT', language: 'it-IT', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
32
-
33
- const dutchColette: Voice = { id: 'nl-NL-ColetteNeural', name: 'Colette', countryCode: 'NL', language: 'nl-NL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
34
- const dutchMaarten: Voice = { id: 'nl-NL-MaartenNeural', name: 'Maarten', countryCode: 'NL', language: 'nl-NL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
35
- const dutchFenna: Voice = { id: 'nl-NL-FennaNeural', name: 'Fenna', countryCode: 'NL', language: 'nl-NL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
36
-
37
- const germanKatja: Voice = { id: 'de-DE-KatjaNeural', name: 'Katja', countryCode: 'DE', language: 'de-DE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
38
- const germanConrad: Voice = { id: 'de-DE-ConradNeural', name: 'Conrad', countryCode: 'DE', language: 'de-DE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
39
- const germanChristoph: Voice = { id: 'de-DE-ChristophNeural', name: 'Christoph', countryCode: 'DE', language: 'de-DE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
40
- const germanElke: Voice = { id: 'de-DE-ElkeNeural', name: 'Elke', countryCode: 'DE', language: 'de-DE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
41
-
42
- const polishZofia: Voice = { id: 'pl-PL-ZofiaNeural', name: 'Zofia', countryCode: 'PL', language: 'pl-PL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
43
- const polishMarek: Voice = { id: 'pl-PL-MarekNeural', name: 'Marek', countryCode: 'PL', language: 'pl-PL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
44
-
45
- const swedishSofie: Voice = { id: 'sv-SE-SofieNeural', name: 'Sofie', countryCode: 'SV', language: 'sv-SE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
46
- const swedishMattias: Voice = { id: 'sv-SE-MattiasNeural', name: 'Mattias', countryCode: 'SV', language: 'sv-SE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
47
-
48
- const turkishAhmet: Voice = { id: 'tr-TR-AhmetNeural', name: 'Ahmet', countryCode: 'TR', language: 'tr-TR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
49
- const turkishEmel: Voice = { id: 'tr-TR-EmelNeural', name: 'Emel', countryCode: 'TR', language: 'tr-TR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
50
-
51
- const canadianFrenchSylvie: Voice = { id: 'fr-CA-SylvieNeural', name: 'Sylvie', countryCode: 'CA', language: 'fr-CA', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
52
- const canadianFrenchThierry: Voice = { id: 'fr-CA-ThierryNeural', name: 'Thierry', countryCode: 'CA', language: 'fr-CA', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
53
- const canadianFrenchAntoine: Voice = { id: 'fr-CA-AntoineNeural', name: 'Antoine', countryCode: 'CA', language: 'fr-CA', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
54
- const canadianFrenchJean: Voice = { id: 'fr-CA-JeanNeural', name: 'Jean', countryCode: 'CA', language: 'fr-CA', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
55
-
56
- const chineseSimplifiedXiaochen: Voice = { id: 'zh-CN-XiaochenNeural', name: 'Xiaochen', countryCode: 'CN', language: 'zh-CN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
57
- const chineseSimplifiedXiaoyan: Voice = { id: 'zh-CN-XiaoyanNeural', name: 'Xiaoyan', countryCode: 'CN', language: 'zh-CN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
58
- const chineseSimplifiedYunye: Voice = { id: 'zh-CN-YunyeNeural', name: 'Yunye', countryCode: 'CN', language: 'zh-CN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
59
- const chineseSimplifiedYunyang: Voice = { id: 'zh-CN-YunyangNeural', name: 'Yunyang', countryCode: 'CN', language: 'zh-CN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
60
-
61
- const chineseTraditionalXiaochen: Voice = { id: 'zh-CN-XiaochenNeural', name: 'Xiaochen', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
62
- const chineseTraditionalXiaoyan: Voice = { id: 'zh-CN-XiaoyanNeural', name: 'Xiaoyan', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
63
- const chineseTraditionalYunye: Voice = { id: 'zh-CN-YunyeNeural', name: 'Yunye', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
64
- const chineseTraditionalYunyang: Voice = { id: 'zh-CN-YunyangNeural', name: 'Yunyang', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
65
- const chineseTraditionalYunSong: Voice = { id: 'yue-CN-YunSongNeural', name: 'YunSong', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
66
- const chineseTraditionalHiuGaai: Voice = { id: 'zh-HK-HiuGaaiNeural', name: 'HiuGaai', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
67
-
68
- const norwegianPernille: Voice = { id: 'nb-NO-PernilleNeural', name: 'Pernille', countryCode: 'NO', language: 'nb-NO', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
69
- const norwegianFinn: Voice = { id: 'nb-NO-FinnNeural', name: 'Finn', countryCode: 'NO', language: 'nb-NO', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
70
-
71
- const malaysianYasmin: Voice = { id: 'ms-MY-YasminNeural', name: 'Yasmin', countryCode: 'MY', language: 'ms-MY', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
72
- const malaysianOsman: Voice = { id: 'ms-MY-OsmanNeural', name: 'Osman', countryCode: 'MY', language: 'ms-MY', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
73
-
74
- const russianSvetlana: Voice = { id: 'ru-RU-SvetlanaNeural', name: 'Svetlana', countryCode: 'RU', language: 'ru-RU', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
75
- const russianDariya: Voice = { id: 'ru-RU-DariyaNeural', name: 'Dariya', countryCode: 'RU', language: 'ru-RU', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
76
- const russianDmitry: Voice = { id: 'ru-RU-DmitryNeural', name: 'Dmitry', countryCode: 'RU', language: 'ru-RU', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
77
-
78
- const indianSwara: Voice = { id: 'hi-IN-SwaraNeural', name: 'Swara', countryCode: 'IN', language: 'hi-IN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
79
- const indianMadhur: Voice = { id: 'hi-IN-MadhurNeural', name: 'Madhur', countryCode: 'IN', language: 'hi-IN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
80
-
81
- const thaiAchara: Voice = { id: 'th-TH-AcharaNeural', name: 'Achara', countryCode: 'TH', language: 'th-TH', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
82
- const thaiNiwat: Voice = { id: 'th-TH-NiwatNeural', name: 'Niwat', countryCode: 'TH', language: 'th-TH', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
83
- const thaiPremwadee: Voice = { id: 'th-TH-PremwadeeNeural', name: 'Premwadee', countryCode: 'TH', language: 'th-TH', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
84
-
85
- const koreanHyunsu: Voice = { id: 'ko-KR-HyunsuNeural', name: 'Hyunsu', countryCode: 'KR', language: 'ko-KR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
86
- const koreanGookMin: Voice = { id: 'ko-KR-GookMinNeural', name: 'GookMin', countryCode: 'KR', language: 'ko-KR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
87
- const koreanJimin: Voice = { id: 'ko-KR-JiMinNeural', name: 'Jimin', countryCode: 'KR', language: 'ko-KR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
88
- const koreanYuJin: Voice = { id: 'ko-KR-YuJinNeural', name: 'YuJin', countryCode: 'KR', language: 'ko-KR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
89
-
90
- const arabicAmina: Voice = { id: 'ar-DZ-AminaNeural', name: 'Amina', countryCode: 'DZ', language: 'ar', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
91
- const arabicShakir: Voice = { id: 'ar-EG-ShakirNeural', name: 'Shakir', countryCode: 'EG', language: 'ar', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
92
- const arabicBassel: Voice = { id: 'ar-IQ-BasselNeural', name: 'Bassel', countryCode: 'IQ', language: 'ar', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
93
- const arabicMouna: Voice = { id: 'ar-MA-MounaNeural', name: 'Mouna', countryCode: 'MA', language: 'ar', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
94
-
95
- const indonesianGadis: Voice = { id: 'id-ID-GadisNeural', name: 'Gadis', countryCode: 'ID', language: 'id-ID', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
96
- const indonesianArdi: Voice = { id: 'id-ID-ArdiNeural', name: 'Ardi', countryCode: 'ID', language: 'id-ID', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
97
- const indonesianJajang: Voice = { id: 'su-ID-JajangNeural', name: 'Jajang', countryCode: 'SU', language: 'id-ID', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
98
- const indonesianSiti: Voice = { id: 'jv-ID-SitiNeural', name: 'Siti', countryCode: 'JV', language: 'id-ID', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
99
-
100
- const japaneseNanami: Voice = { id: 'ja-JP-NanamiNeural', name: 'Nanami', countryCode: 'JP', language: 'ja-JP', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
101
- const japaneseDaichi: Voice = { id: 'ja-JP-DaichiNeural', name: 'Daichi', countryCode: 'JP', language: 'ja-JP', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
102
- const japaneseMayu: Voice = { id: 'ja-JP-MayuNeural', name: 'Mayu', countryCode: 'JP', language: 'ja-JP', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
103
- const japaneseNaoki: Voice = { id: 'ja-JP-NaokiNeural', name: 'Naoki', countryCode: 'JP', language: 'ja-JP', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
104
-
105
- const vietnameseNamMinh: Voice = { id: 'vi-VN-NamMinhNeural', name: 'NamMinh', countryCode: 'VN', language: 'vi-VN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
106
- const vietnameseHoaiMy: Voice = { id: 'vi-VN-HoaiMyNeural', name: 'HoaiMy', countryCode: 'VN', language: 'vi-VN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
107
-
108
- const hebrewHila: Voice = { id: 'he-IL-HilaNeural', name: 'Hila', countryCode: 'IL', language: 'he-IL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
109
- const hebrewAvri: Voice = { id: 'he-IL-AvriNeural', name: 'Avri', countryCode: 'IL', language: 'he-IL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
110
-
111
- const voicesForLocales = new Map<string, Voice[]>([
112
- [SupportedLocale.enUS, [britishFable, americanAlloy, americanEcho, americanNova, americanOnyx, americanShimmer]],
113
- [SupportedLocale.ptBR, [brazilianBrenda, brazilianGiovanna, brazilianAntonio, brazilianHumberto]],
114
- [SupportedLocale.es, [mexicanBeatriz, mexicanCecilio, spanishAbril, spanishAlvaro, latamPaloma, latamAlonso]],
115
- [SupportedLocale.frFR, [frenchHenri, frenchJerome, frenchJacqueline, belgianCharline]],
116
- [SupportedLocale.itIT, [italianElsa, italianFabiola, italianCalimero, italianCataldo]],
117
- [SupportedLocale.nlNL, [dutchColette, dutchMaarten, dutchFenna]],
118
- [SupportedLocale.deDE, [germanKatja, germanConrad, germanChristoph, germanElke]],
119
- [SupportedLocale.plPL, [polishZofia, polishMarek]],
120
- [SupportedLocale.svSE, [swedishSofie, swedishMattias]],
121
- [SupportedLocale.trTR, [turkishAhmet, turkishEmel]],
122
- [SupportedLocale.frCA, [canadianFrenchSylvie, canadianFrenchThierry, canadianFrenchAntoine, canadianFrenchJean]],
123
- [SupportedLocale.zhCN, [chineseSimplifiedXiaochen, chineseSimplifiedXiaoyan, chineseSimplifiedYunye, chineseSimplifiedYunyang]],
124
- [SupportedLocale.zhTW, [chineseTraditionalXiaochen, chineseTraditionalXiaoyan, chineseTraditionalYunye, chineseTraditionalYunyang, chineseTraditionalYunSong, chineseTraditionalHiuGaai]],
125
- [SupportedLocale.nbNO, [norwegianPernille, norwegianFinn]],
126
- [SupportedLocale.msMY, [malaysianYasmin, malaysianOsman]],
127
- [SupportedLocale.ruRU, [russianDariya, russianDmitry, russianSvetlana]],
128
- [SupportedLocale.hiIN, [indianSwara, indianMadhur]],
129
- [SupportedLocale.thTH, [thaiAchara, thaiNiwat, thaiPremwadee]],
130
- [SupportedLocale.koKR, [koreanHyunsu, koreanGookMin, koreanJimin, koreanYuJin]],
131
- [SupportedLocale.ar, [arabicAmina, arabicShakir, arabicBassel, arabicMouna]],
132
- [SupportedLocale.idID, [indonesianGadis, indonesianArdi, indonesianJajang, indonesianSiti]],
133
- [SupportedLocale.jaJP, [japaneseNanami, japaneseDaichi, japaneseMayu, japaneseNaoki]],
134
- [SupportedLocale.viVN, [vietnameseNamMinh, vietnameseHoaiMy]],
135
- [SupportedLocale.heIL, [hebrewHila, hebrewAvri]],
136
- ]);
137
-
138
- const defaultVoiceForLocales = new Map<string, Voice>([
139
- [SupportedLocale.enUS, americanNova],
140
- [SupportedLocale.ptBR, brazilianHumberto],
141
- [SupportedLocale.es, latamPaloma],
142
- [SupportedLocale.frFR, frenchJacqueline],
143
- [SupportedLocale.itIT, italianElsa],
144
- [SupportedLocale.nlNL, dutchColette],
145
- [SupportedLocale.deDE, germanKatja],
146
- [SupportedLocale.plPL, polishZofia],
147
- [SupportedLocale.svSE, swedishSofie],
148
- [SupportedLocale.trTR, turkishAhmet],
149
- [SupportedLocale.frCA, canadianFrenchSylvie],
150
- [SupportedLocale.zhCN, chineseSimplifiedXiaochen],
151
- [SupportedLocale.zhTW, chineseTraditionalXiaochen],
152
- [SupportedLocale.nbNO, norwegianPernille],
153
- [SupportedLocale.msMY, malaysianYasmin],
154
- [SupportedLocale.ruRU, russianSvetlana],
155
- [SupportedLocale.hiIN, indianMadhur],
156
- [SupportedLocale.thTH, thaiPremwadee],
157
- [SupportedLocale.koKR, koreanHyunsu],
158
- [SupportedLocale.ar, arabicAmina],
159
- [SupportedLocale.idID, indonesianGadis],
160
- [SupportedLocale.jaJP, japaneseNanami],
161
- [SupportedLocale.viVN, vietnameseNamMinh],
162
- [SupportedLocale.heIL, hebrewHila]
163
- ]);
164
-
165
- export function getSupportedVoices(locale: string): Voice[] {
166
- const voices = voicesForLocales.get(locale);
167
- if (!voices) {
168
- throw new Error(`Cannot list supported voices. Unsupported locale: ${JSON.stringify(locale)}`);
169
- }
170
- return voices;
171
- }
172
-
173
- export function getSupportedVoiceIds(locale: string): string[] {
174
- return getSupportedVoices(locale).map(voice => voice.id);
175
- }
176
-
177
- export function getDefaultVoice(locale: string): Voice {
178
- const voice = defaultVoiceForLocales.get(locale);
179
- if (!voice) {
180
- throw new Error(`Cannot find default voice. Unsupported locale: ${JSON.stringify(locale)}`);
181
- }
182
- return voice;
183
- }
1
+ import { SupportedLocale } from '../localisation/supported-locales';
2
+ import { SupportedSpeechProvider, Voice } from './text-segment';
3
+
4
+ const britishFable: Voice = { id: 'en-US-FableMultilingualNeural', name: 'Jean', countryCode: 'GB', language: 'en-GB', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
5
+ const americanNova: Voice = { id: 'en-US-NovaMultilingualNeural', name: 'Diana', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
6
+ const americanOnyx: Voice = { id: 'en-US-OnyxMultilingualNeural', name: 'Harold', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
7
+ const americanAlloy: Voice = { id: 'en-US-AlloyMultilingualNeural', name: 'Danny', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
8
+ const americanEcho: Voice = { id: 'en-US-EchoMultilingualNeural', name: 'Zach', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
9
+ const americanShimmer: Voice = { id: 'en-US-ShimmerMultilingualNeural', name: 'Lydia', countryCode: 'US', language: 'en-US', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
10
+
11
+ const brazilianBrenda: Voice = { id: 'pt-BR-BrendaNeural', name: 'Brenda', countryCode: 'BR', language: 'pt-BR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
12
+ const brazilianGiovanna: Voice = { id: 'pt-BR-GiovannaNeural', name: 'Giovanna', countryCode: 'BR', language: 'pt-BR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
13
+ const brazilianAntonio: Voice = { id: 'pt-BR-AntonioNeural', name: 'Antonio', countryCode: 'BR', language: 'pt-BR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
14
+ const brazilianHumberto: Voice = { id: 'pt-BR-HumbertoNeural', name: 'Humberto', countryCode: 'BR', language: 'pt-BR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
15
+
16
+ const mexicanBeatriz: Voice = { id: 'es-MX-BeatrizNeural', name: 'Beatriz', countryCode: 'MX', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
17
+ const mexicanCecilio: Voice = { id: 'es-MX-CecilioNeural', name: 'Cecilio', countryCode: 'MX', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
18
+ const spanishAbril: Voice = { id: 'es-ES-AbrilNeural', name: 'Abril', countryCode: 'ES', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
19
+ const spanishAlvaro: Voice = { id: 'es-ES-AlvaroNeural', name: 'Alvaro', countryCode: 'ES', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
20
+ const latamPaloma: Voice = { id: 'es-US-PalomaNeural', name: 'Paloma', countryCode: 'LATAM', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
21
+ const latamAlonso: Voice = { id: 'es-US-AlonsoNeural', name: 'Alonso', countryCode: 'LATAM', language: 'es', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
22
+
23
+ const frenchHenri: Voice = { id: 'fr-FR-HenriNeural', name: 'Henri', countryCode: 'FR', language: 'fr-FR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
24
+ const frenchJerome: Voice = { id: 'fr-FR-JeromeNeural', name: 'Jerome', countryCode: 'FR', language: 'fr-FR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
25
+ const frenchJacqueline: Voice = { id: 'fr-FR-JacquelineNeural', name: 'Jacqueline', countryCode: 'FR', language: 'fr-FR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
26
+ const belgianCharline: Voice = { id: 'fr-BE-CharlineNeural', name: 'Charline', countryCode: 'BE', language: 'fr-FR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
27
+
28
+ const italianElsa: Voice = { id: 'it-IT-ElsaNeural', name: 'Elsa', countryCode: 'IT', language: 'it-IT', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
29
+ const italianFabiola: Voice = { id: 'it-IT-FabiolaNeural', name: 'Fabiola', countryCode: 'IT', language: 'it-IT', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
30
+ const italianCalimero: Voice = { id: 'it-IT-CalimeroNeural', name: 'Calimero', countryCode: 'IT', language: 'it-IT', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
31
+ const italianCataldo: Voice = { id: 'it-IT-CataldoNeural', name: 'Cataldo', countryCode: 'IT', language: 'it-IT', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
32
+
33
+ const dutchColette: Voice = { id: 'nl-NL-ColetteNeural', name: 'Colette', countryCode: 'NL', language: 'nl-NL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
34
+ const dutchMaarten: Voice = { id: 'nl-NL-MaartenNeural', name: 'Maarten', countryCode: 'NL', language: 'nl-NL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
35
+ const dutchFenna: Voice = { id: 'nl-NL-FennaNeural', name: 'Fenna', countryCode: 'NL', language: 'nl-NL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
36
+
37
+ const germanKatja: Voice = { id: 'de-DE-KatjaNeural', name: 'Katja', countryCode: 'DE', language: 'de-DE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
38
+ const germanConrad: Voice = { id: 'de-DE-ConradNeural', name: 'Conrad', countryCode: 'DE', language: 'de-DE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
39
+ const germanChristoph: Voice = { id: 'de-DE-ChristophNeural', name: 'Christoph', countryCode: 'DE', language: 'de-DE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
40
+ const germanElke: Voice = { id: 'de-DE-ElkeNeural', name: 'Elke', countryCode: 'DE', language: 'de-DE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
41
+
42
+ const polishZofia: Voice = { id: 'pl-PL-ZofiaNeural', name: 'Zofia', countryCode: 'PL', language: 'pl-PL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
43
+ const polishMarek: Voice = { id: 'pl-PL-MarekNeural', name: 'Marek', countryCode: 'PL', language: 'pl-PL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
44
+
45
+ const swedishSofie: Voice = { id: 'sv-SE-SofieNeural', name: 'Sofie', countryCode: 'SV', language: 'sv-SE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
46
+ const swedishMattias: Voice = { id: 'sv-SE-MattiasNeural', name: 'Mattias', countryCode: 'SV', language: 'sv-SE', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
47
+
48
+ const turkishAhmet: Voice = { id: 'tr-TR-AhmetNeural', name: 'Ahmet', countryCode: 'TR', language: 'tr-TR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
49
+ const turkishEmel: Voice = { id: 'tr-TR-EmelNeural', name: 'Emel', countryCode: 'TR', language: 'tr-TR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
50
+
51
+ const canadianFrenchSylvie: Voice = { id: 'fr-CA-SylvieNeural', name: 'Sylvie', countryCode: 'CA', language: 'fr-CA', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
52
+ const canadianFrenchThierry: Voice = { id: 'fr-CA-ThierryNeural', name: 'Thierry', countryCode: 'CA', language: 'fr-CA', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
53
+ const canadianFrenchAntoine: Voice = { id: 'fr-CA-AntoineNeural', name: 'Antoine', countryCode: 'CA', language: 'fr-CA', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
54
+ const canadianFrenchJean: Voice = { id: 'fr-CA-JeanNeural', name: 'Jean', countryCode: 'CA', language: 'fr-CA', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
55
+
56
+ const chineseSimplifiedXiaochen: Voice = { id: 'zh-CN-XiaochenNeural', name: 'Xiaochen', countryCode: 'CN', language: 'zh-CN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
57
+ const chineseSimplifiedXiaoyan: Voice = { id: 'zh-CN-XiaoyanNeural', name: 'Xiaoyan', countryCode: 'CN', language: 'zh-CN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
58
+ const chineseSimplifiedYunye: Voice = { id: 'zh-CN-YunyeNeural', name: 'Yunye', countryCode: 'CN', language: 'zh-CN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
59
+ const chineseSimplifiedYunyang: Voice = { id: 'zh-CN-YunyangNeural', name: 'Yunyang', countryCode: 'CN', language: 'zh-CN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
60
+
61
+ const chineseTraditionalXiaochen: Voice = { id: 'zh-CN-XiaochenNeural', name: 'Xiaochen', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
62
+ const chineseTraditionalXiaoyan: Voice = { id: 'zh-CN-XiaoyanNeural', name: 'Xiaoyan', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
63
+ const chineseTraditionalYunye: Voice = { id: 'zh-CN-YunyeNeural', name: 'Yunye', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
64
+ const chineseTraditionalYunyang: Voice = { id: 'zh-CN-YunyangNeural', name: 'Yunyang', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
65
+ const chineseTraditionalYunSong: Voice = { id: 'yue-CN-YunSongNeural', name: 'YunSong', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
66
+ const chineseTraditionalHiuGaai: Voice = { id: 'zh-HK-HiuGaaiNeural', name: 'HiuGaai', countryCode: 'CN', language: 'zh-TW', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
67
+
68
+ const norwegianPernille: Voice = { id: 'nb-NO-PernilleNeural', name: 'Pernille', countryCode: 'NO', language: 'nb-NO', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
69
+ const norwegianFinn: Voice = { id: 'nb-NO-FinnNeural', name: 'Finn', countryCode: 'NO', language: 'nb-NO', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
70
+
71
+ const malaysianYasmin: Voice = { id: 'ms-MY-YasminNeural', name: 'Yasmin', countryCode: 'MY', language: 'ms-MY', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
72
+ const malaysianOsman: Voice = { id: 'ms-MY-OsmanNeural', name: 'Osman', countryCode: 'MY', language: 'ms-MY', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
73
+
74
+ const russianSvetlana: Voice = { id: 'ru-RU-SvetlanaNeural', name: 'Svetlana', countryCode: 'RU', language: 'ru-RU', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
75
+ const russianDariya: Voice = { id: 'ru-RU-DariyaNeural', name: 'Dariya', countryCode: 'RU', language: 'ru-RU', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
76
+ const russianDmitry: Voice = { id: 'ru-RU-DmitryNeural', name: 'Dmitry', countryCode: 'RU', language: 'ru-RU', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
77
+
78
+ const indianSwara: Voice = { id: 'hi-IN-SwaraNeural', name: 'Swara', countryCode: 'IN', language: 'hi-IN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
79
+ const indianMadhur: Voice = { id: 'hi-IN-MadhurNeural', name: 'Madhur', countryCode: 'IN', language: 'hi-IN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
80
+
81
+ const thaiAchara: Voice = { id: 'th-TH-AcharaNeural', name: 'Achara', countryCode: 'TH', language: 'th-TH', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
82
+ const thaiNiwat: Voice = { id: 'th-TH-NiwatNeural', name: 'Niwat', countryCode: 'TH', language: 'th-TH', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
83
+ const thaiPremwadee: Voice = { id: 'th-TH-PremwadeeNeural', name: 'Premwadee', countryCode: 'TH', language: 'th-TH', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
84
+
85
+ const koreanHyunsu: Voice = { id: 'ko-KR-HyunsuNeural', name: 'Hyunsu', countryCode: 'KR', language: 'ko-KR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
86
+ const koreanGookMin: Voice = { id: 'ko-KR-GookMinNeural', name: 'GookMin', countryCode: 'KR', language: 'ko-KR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
87
+ const koreanJimin: Voice = { id: 'ko-KR-JiMinNeural', name: 'Jimin', countryCode: 'KR', language: 'ko-KR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
88
+ const koreanYuJin: Voice = { id: 'ko-KR-YuJinNeural', name: 'YuJin', countryCode: 'KR', language: 'ko-KR', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
89
+
90
+ const arabicAmina: Voice = { id: 'ar-DZ-AminaNeural', name: 'Amina', countryCode: 'DZ', language: 'ar', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
91
+ const arabicShakir: Voice = { id: 'ar-EG-ShakirNeural', name: 'Shakir', countryCode: 'EG', language: 'ar', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
92
+ const arabicBassel: Voice = { id: 'ar-IQ-BasselNeural', name: 'Bassel', countryCode: 'IQ', language: 'ar', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
93
+ const arabicMouna: Voice = { id: 'ar-MA-MounaNeural', name: 'Mouna', countryCode: 'MA', language: 'ar', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
94
+
95
+ const indonesianGadis: Voice = { id: 'id-ID-GadisNeural', name: 'Gadis', countryCode: 'ID', language: 'id-ID', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
96
+ const indonesianArdi: Voice = { id: 'id-ID-ArdiNeural', name: 'Ardi', countryCode: 'ID', language: 'id-ID', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
97
+ const indonesianJajang: Voice = { id: 'su-ID-JajangNeural', name: 'Jajang', countryCode: 'SU', language: 'id-ID', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
98
+ const indonesianSiti: Voice = { id: 'jv-ID-SitiNeural', name: 'Siti', countryCode: 'JV', language: 'id-ID', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
99
+
100
+ const japaneseNanami: Voice = { id: 'ja-JP-NanamiNeural', name: 'Nanami', countryCode: 'JP', language: 'ja-JP', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
101
+ const japaneseDaichi: Voice = { id: 'ja-JP-DaichiNeural', name: 'Daichi', countryCode: 'JP', language: 'ja-JP', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
102
+ const japaneseMayu: Voice = { id: 'ja-JP-MayuNeural', name: 'Mayu', countryCode: 'JP', language: 'ja-JP', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
103
+ const japaneseNaoki: Voice = { id: 'ja-JP-NaokiNeural', name: 'Naoki', countryCode: 'JP', language: 'ja-JP', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
104
+
105
+ const vietnameseNamMinh: Voice = { id: 'vi-VN-NamMinhNeural', name: 'NamMinh', countryCode: 'VN', language: 'vi-VN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
106
+ const vietnameseHoaiMy: Voice = { id: 'vi-VN-HoaiMyNeural', name: 'HoaiMy', countryCode: 'VN', language: 'vi-VN', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
107
+
108
+ const hebrewHila: Voice = { id: 'he-IL-HilaNeural', name: 'Hila', countryCode: 'IL', language: 'he-IL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
109
+ const hebrewAvri: Voice = { id: 'he-IL-AvriNeural', name: 'Avri', countryCode: 'IL', language: 'he-IL', speechProvider: SupportedSpeechProvider.MicrosoftAzure };
110
+
111
+ const voicesForLocales = new Map<string, Voice[]>([
112
+ [SupportedLocale.enUS, [britishFable, americanAlloy, americanEcho, americanNova, americanOnyx, americanShimmer]],
113
+ [SupportedLocale.ptBR, [brazilianBrenda, brazilianGiovanna, brazilianAntonio, brazilianHumberto]],
114
+ [SupportedLocale.es, [mexicanBeatriz, mexicanCecilio, spanishAbril, spanishAlvaro, latamPaloma, latamAlonso]],
115
+ [SupportedLocale.frFR, [frenchHenri, frenchJerome, frenchJacqueline, belgianCharline]],
116
+ [SupportedLocale.itIT, [italianElsa, italianFabiola, italianCalimero, italianCataldo]],
117
+ [SupportedLocale.nlNL, [dutchColette, dutchMaarten, dutchFenna]],
118
+ [SupportedLocale.deDE, [germanKatja, germanConrad, germanChristoph, germanElke]],
119
+ [SupportedLocale.plPL, [polishZofia, polishMarek]],
120
+ [SupportedLocale.svSE, [swedishSofie, swedishMattias]],
121
+ [SupportedLocale.trTR, [turkishAhmet, turkishEmel]],
122
+ [SupportedLocale.frCA, [canadianFrenchSylvie, canadianFrenchThierry, canadianFrenchAntoine, canadianFrenchJean]],
123
+ [SupportedLocale.zhCN, [chineseSimplifiedXiaochen, chineseSimplifiedXiaoyan, chineseSimplifiedYunye, chineseSimplifiedYunyang]],
124
+ [SupportedLocale.zhTW, [chineseTraditionalXiaochen, chineseTraditionalXiaoyan, chineseTraditionalYunye, chineseTraditionalYunyang, chineseTraditionalYunSong, chineseTraditionalHiuGaai]],
125
+ [SupportedLocale.nbNO, [norwegianPernille, norwegianFinn]],
126
+ [SupportedLocale.msMY, [malaysianYasmin, malaysianOsman]],
127
+ [SupportedLocale.ruRU, [russianDariya, russianDmitry, russianSvetlana]],
128
+ [SupportedLocale.hiIN, [indianSwara, indianMadhur]],
129
+ [SupportedLocale.thTH, [thaiAchara, thaiNiwat, thaiPremwadee]],
130
+ [SupportedLocale.koKR, [koreanHyunsu, koreanGookMin, koreanJimin, koreanYuJin]],
131
+ [SupportedLocale.ar, [arabicAmina, arabicShakir, arabicBassel, arabicMouna]],
132
+ [SupportedLocale.idID, [indonesianGadis, indonesianArdi, indonesianJajang, indonesianSiti]],
133
+ [SupportedLocale.jaJP, [japaneseNanami, japaneseDaichi, japaneseMayu, japaneseNaoki]],
134
+ [SupportedLocale.viVN, [vietnameseNamMinh, vietnameseHoaiMy]],
135
+ [SupportedLocale.heIL, [hebrewHila, hebrewAvri]],
136
+ ]);
137
+
138
+ const defaultVoiceForLocales = new Map<string, Voice>([
139
+ [SupportedLocale.enUS, americanNova],
140
+ [SupportedLocale.ptBR, brazilianHumberto],
141
+ [SupportedLocale.es, latamPaloma],
142
+ [SupportedLocale.frFR, frenchJacqueline],
143
+ [SupportedLocale.itIT, italianElsa],
144
+ [SupportedLocale.nlNL, dutchColette],
145
+ [SupportedLocale.deDE, germanKatja],
146
+ [SupportedLocale.plPL, polishZofia],
147
+ [SupportedLocale.svSE, swedishSofie],
148
+ [SupportedLocale.trTR, turkishAhmet],
149
+ [SupportedLocale.frCA, canadianFrenchSylvie],
150
+ [SupportedLocale.zhCN, chineseSimplifiedXiaochen],
151
+ [SupportedLocale.zhTW, chineseTraditionalXiaochen],
152
+ [SupportedLocale.nbNO, norwegianPernille],
153
+ [SupportedLocale.msMY, malaysianYasmin],
154
+ [SupportedLocale.ruRU, russianSvetlana],
155
+ [SupportedLocale.hiIN, indianMadhur],
156
+ [SupportedLocale.thTH, thaiPremwadee],
157
+ [SupportedLocale.koKR, koreanHyunsu],
158
+ [SupportedLocale.ar, arabicAmina],
159
+ [SupportedLocale.idID, indonesianGadis],
160
+ [SupportedLocale.jaJP, japaneseNanami],
161
+ [SupportedLocale.viVN, vietnameseNamMinh],
162
+ [SupportedLocale.heIL, hebrewHila]
163
+ ]);
164
+
165
+ export function getSupportedVoices(locale: string): Voice[] {
166
+ const voices = voicesForLocales.get(locale);
167
+ if (!voices) {
168
+ throw new Error(`Cannot list supported voices. Unsupported locale: ${JSON.stringify(locale)}`);
169
+ }
170
+ return voices;
171
+ }
172
+
173
+ export function getSupportedVoiceIds(locale: string): string[] {
174
+ return getSupportedVoices(locale).map(voice => voice.id);
175
+ }
176
+
177
+ export function getDefaultVoice(locale: string): Voice {
178
+ const voice = defaultVoiceForLocales.get(locale);
179
+ if (!voice) {
180
+ throw new Error(`Cannot find default voice. Unsupported locale: ${JSON.stringify(locale)}`);
181
+ }
182
+ return voice;
183
+ }