@readium/speech 0.1.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 (118) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +144 -0
  3. package/build/WebSpeech/TmpNavigator.d.ts +39 -0
  4. package/build/WebSpeech/WebSpeechVoiceManager.d.ts +232 -0
  5. package/build/WebSpeech/index.d.ts +4 -0
  6. package/build/WebSpeech/webSpeechEngine.d.ts +67 -0
  7. package/build/WebSpeech/webSpeechEngineProvider.d.ts +11 -0
  8. package/build/ar-BYWkyZgW.cjs +1 -0
  9. package/build/ar-CJhBAgKq.js +13 -0
  10. package/build/bg-D7xe9YTl.cjs +1 -0
  11. package/build/bg-JvP4LoOT.js +13 -0
  12. package/build/bho-CpuLBMN3.js +13 -0
  13. package/build/bho-UB6aO8oz.cjs +1 -0
  14. package/build/bn-84u93pMd.js +13 -0
  15. package/build/bn-boRZ2pl5.cjs +1 -0
  16. package/build/ca-DdScTbex.js +13 -0
  17. package/build/ca-DkC8kSJ8.cjs +1 -0
  18. package/build/cmn-BsNLjyA4.cjs +1 -0
  19. package/build/cmn-Dd1zrvTE.js +13 -0
  20. package/build/cs-CDMne0uc.js +13 -0
  21. package/build/cs-p05r08p7.cjs +1 -0
  22. package/build/da-crefCup9.cjs +1 -0
  23. package/build/da-oFf4cHgj.js +13 -0
  24. package/build/de-Bjgc3bVq.js +13 -0
  25. package/build/de-xoW-RuhZ.cjs +1 -0
  26. package/build/el-C025sTug.cjs +1 -0
  27. package/build/el-FkKIcghI.js +13 -0
  28. package/build/en-DCQHxNny.js +13 -0
  29. package/build/en-Gmh32VcD.cjs +1 -0
  30. package/build/engine.d.ts +25 -0
  31. package/build/es-CDjjngpC.js +13 -0
  32. package/build/es-tgHiWsyf.cjs +1 -0
  33. package/build/eu-DxWirHU-.js +13 -0
  34. package/build/eu-uq15ZgwW.cjs +1 -0
  35. package/build/fa-CHOnwiFr.cjs +1 -0
  36. package/build/fa-CTVUniYi.js +13 -0
  37. package/build/fi-Bxlno6Zi.cjs +1 -0
  38. package/build/fi-Do6QFzRv.js +13 -0
  39. package/build/fr-B5-P9o29.js +13 -0
  40. package/build/fr-yAth5-FC.cjs +1 -0
  41. package/build/generated/language-metadata.d.ts +7 -0
  42. package/build/gl-BEgzCAO0.cjs +1 -0
  43. package/build/gl-DqSXeC_F.js +13 -0
  44. package/build/he-B-CTHJPL.cjs +1 -0
  45. package/build/he-CpyNwgaH.js +13 -0
  46. package/build/hi-C0yUjV1-.cjs +1 -0
  47. package/build/hi-CeOBacbl.js +13 -0
  48. package/build/hr-CSpU18l6.js +13 -0
  49. package/build/hr-CZvFOcdo.cjs +1 -0
  50. package/build/hu-_2PInItj.cjs +1 -0
  51. package/build/hu-oONHmpR6.js +13 -0
  52. package/build/id-BROcb7-t.cjs +1 -0
  53. package/build/id-BpZuB5Iw.js +13 -0
  54. package/build/index.cjs +27 -0
  55. package/build/index.d.ts +7 -0
  56. package/build/index.js +2801 -0
  57. package/build/it-Bmc8Ycff.cjs +1 -0
  58. package/build/it-CM4X84UA.js +13 -0
  59. package/build/ja-B8t6WOeg.cjs +1 -0
  60. package/build/ja-e-iw3c4_.js +13 -0
  61. package/build/kk-BdLCAb2s.js +13 -0
  62. package/build/kk-DskO1CW8.cjs +1 -0
  63. package/build/kn-BYRvouO5.js +13 -0
  64. package/build/kn-Cy3NH6na.cjs +1 -0
  65. package/build/ko-CZdQzppZ.cjs +1 -0
  66. package/build/ko-EIouMDK1.js +13 -0
  67. package/build/mr-9hGqBYlV.cjs +1 -0
  68. package/build/mr-DN-hwEV1.js +13 -0
  69. package/build/ms-B5E3oaWE.js +13 -0
  70. package/build/ms-DzpBxNFZ.cjs +1 -0
  71. package/build/navigator.d.ts +30 -0
  72. package/build/nb-BQfw9EEH.cjs +1 -0
  73. package/build/nb-DOw05HBh.js +13 -0
  74. package/build/nl-CEydw4A9.js +13 -0
  75. package/build/nl-CyM0R4Gr.cjs +1 -0
  76. package/build/pl-Da8XOMa1.cjs +1 -0
  77. package/build/pl-Ivj_eAP7.js +13 -0
  78. package/build/provider.d.ts +9 -0
  79. package/build/pt-BPEGqRmW.js +13 -0
  80. package/build/pt-tubyvYaM.cjs +1 -0
  81. package/build/ro-BQ617SOx.js +13 -0
  82. package/build/ro-C-rXDfuM.cjs +1 -0
  83. package/build/ru-DJocRaDd.cjs +1 -0
  84. package/build/ru-Dieeph4H.js +13 -0
  85. package/build/sk-BvpojIXp.cjs +1 -0
  86. package/build/sk-pEiOt4GQ.js +13 -0
  87. package/build/sl-D0X3JKvQ.cjs +1 -0
  88. package/build/sl-Z6jWAR8J.js +13 -0
  89. package/build/sv-4lEgrHda.cjs +1 -0
  90. package/build/sv-BT09piiZ.js +13 -0
  91. package/build/ta-B0YMGW5q.js +13 -0
  92. package/build/ta-CyeVPdIs.cjs +1 -0
  93. package/build/te-DqWIZZxL.cjs +1 -0
  94. package/build/te-ax-HNsAY.js +13 -0
  95. package/build/th-BcoSVZAp.cjs +1 -0
  96. package/build/th-C7Dbxwoz.js +13 -0
  97. package/build/tr-BuafNhfw.cjs +1 -0
  98. package/build/tr-mipEichO.js +13 -0
  99. package/build/uk-CHdx7DHz.js +13 -0
  100. package/build/uk-DkXNxnD9.cjs +1 -0
  101. package/build/utils/features.d.ts +23 -0
  102. package/build/utils/language.d.ts +6 -0
  103. package/build/utils/patches.d.ts +11 -0
  104. package/build/utterance.d.ts +6 -0
  105. package/build/vi-Ct2avSE6.cjs +1 -0
  106. package/build/vi-DrlcEwAD.js +13 -0
  107. package/build/voices/filters.d.ts +5 -0
  108. package/build/voices/languages.d.ts +44 -0
  109. package/build/voices/localized.d.ts +20 -0
  110. package/build/voices/packages.d.ts +2 -0
  111. package/build/voices/sorting.d.ts +7 -0
  112. package/build/voices/types.d.ts +87 -0
  113. package/build/voices/voiceDuplicates.d.ts +19 -0
  114. package/build/wuu-C6uQvT6g.js +13 -0
  115. package/build/wuu-DnwGQ6c-.cjs +1 -0
  116. package/build/yue-CFroa59o.js +13 -0
  117. package/build/yue-j9Y48sR-.cjs +1 -0
  118. package/package.json +59 -0
@@ -0,0 +1,13 @@
1
+ const t = "ta", a = "ta-IN", e = "வணக்கம், என் பெயர் {name} மற்றும் நான் ஒரு தமிழ் குரல்", l = [{ label: "Pallavi", name: "Microsoft Pallavi Online (Natural) - Tamil (India)", language: "ta-IN", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Valluvar", name: "Microsoft Valluvar Online (Natural) - Tamil (India)", language: "ta-IN", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Saranya", name: "Microsoft Saranya Online (Natural) - Tamil (Sri Lanka)", language: "ta-LK", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Kumar", name: "Microsoft Kumar Online (Natural) - Tamil (Sri Lanka)", language: "ta-LK", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Kani", name: "Microsoft Kani Online (Natural) - Tamil (Malaysia)", language: "ta-MY", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Surya", name: "Microsoft Surya Online (Natural) - Tamil (Malaysia)", language: "ta-MY", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Venba", name: "Microsoft Venba Online (Natural) - Tamil (Singapore)", language: "ta-SG", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Anbu", name: "Microsoft Anbu Online (Natural) - Tamil (Singapore)", language: "ta-SG", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Vani", name: "Vani", localizedName: "apple", language: "ta-IN", gender: "female", quality: ["low", "normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { label: "Valluvar", name: "Microsoft Valluvar - Tamil (India)", language: "ta-IN", gender: "male", quality: ["normal"], rate: 1, pitch: 1, os: ["Windows"], preloaded: !0 }, { label: "பெண் குரல்", name: "Android Speech Recognition and Synthesis from Google ta-in-x-tac-network", altNames: ["Android Speech Recognition and Synthesis from Google ta-in-x-tac-local", "Android Speech Recognition and Synthesis from Google ta-IN-language"], nativeID: ["ta-in-x-tac-network", "ta-in-x-tac-local"], language: "ta-IN", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "ஆண் குரல்", name: "Android Speech Recognition and Synthesis from Google ta-in-x-tad-network", altNames: ["Android Speech Recognition and Synthesis from Google ta-in-x-tad-local"], nativeID: ["ta-in-x-tad-network", "ta-in-x-tad-local"], language: "ta-IN", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }], r = {
2
+ language: "ta",
3
+ defaultRegion: a,
4
+ testUtterance: e,
5
+ voices: l
6
+ };
7
+ export {
8
+ r as default,
9
+ a as defaultRegion,
10
+ t as language,
11
+ e as testUtterance,
12
+ l as voices
13
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a="ta",e="ta-IN",l="வணக்கம், என் பெயர் {name} மற்றும் நான் ஒரு தமிழ் குரல்",t=[{label:"Pallavi",name:"Microsoft Pallavi Online (Natural) - Tamil (India)",language:"ta-IN",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Valluvar",name:"Microsoft Valluvar Online (Natural) - Tamil (India)",language:"ta-IN",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Saranya",name:"Microsoft Saranya Online (Natural) - Tamil (Sri Lanka)",language:"ta-LK",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Kumar",name:"Microsoft Kumar Online (Natural) - Tamil (Sri Lanka)",language:"ta-LK",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Kani",name:"Microsoft Kani Online (Natural) - Tamil (Malaysia)",language:"ta-MY",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Surya",name:"Microsoft Surya Online (Natural) - Tamil (Malaysia)",language:"ta-MY",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Venba",name:"Microsoft Venba Online (Natural) - Tamil (Singapore)",language:"ta-SG",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Anbu",name:"Microsoft Anbu Online (Natural) - Tamil (Singapore)",language:"ta-SG",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Vani",name:"Vani",localizedName:"apple",language:"ta-IN",gender:"female",quality:["low","normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0},{label:"Valluvar",name:"Microsoft Valluvar - Tamil (India)",language:"ta-IN",gender:"male",quality:["normal"],rate:1,pitch:1,os:["Windows"],preloaded:!0},{label:"பெண் குரல்",name:"Android Speech Recognition and Synthesis from Google ta-in-x-tac-network",altNames:["Android Speech Recognition and Synthesis from Google ta-in-x-tac-local","Android Speech Recognition and Synthesis from Google ta-IN-language"],nativeID:["ta-in-x-tac-network","ta-in-x-tac-local"],language:"ta-IN",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"ஆண் குரல்",name:"Android Speech Recognition and Synthesis from Google ta-in-x-tad-network",altNames:["Android Speech Recognition and Synthesis from Google ta-in-x-tad-local"],nativeID:["ta-in-x-tad-network","ta-in-x-tad-local"],language:"ta-IN",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0}],r={language:a,defaultRegion:e,testUtterance:l,voices:t};exports.default=r;exports.defaultRegion=e;exports.language=a;exports.testUtterance=l;exports.voices=t;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="te",t="te-IN",a="హలో, నా పేరు {name} మరియు నేను తెలుగు వాణిని.",n=[{label:"Shruti",name:"Microsoft Shruti Online (Natural) - Telugu (India)",language:"te-IN",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Mohan",name:"Microsoft Mohan Online (Natural) - Telugu (India)",language:"te-IN",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Geeta",name:"Geeta",localizedName:"apple",language:"te-IN",gender:"female",quality:["low","normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0},{label:"స్త్రీ స్వరం",name:"Android Speech Recognition and Synthesis from Google te-in-x-tef-network",altNames:["Android Speech Recognition and Synthesis from Google te-in-x-tef-local","Android Speech Recognition and Synthesis from Google te-IN-language"],nativeID:["te-in-x-tef-network","te-in-x-tef-local"],language:"te-IN",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"పురుష స్వరం",name:"Android Speech Recognition and Synthesis from Google te-in-x-tem-network",altNames:["Android Speech Recognition and Synthesis from Google te-in-x-tem-local"],nativeID:["te-in-x-tem-network","te-in-x-tem-local"],language:"te-IN",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0}],o={language:e,defaultRegion:t,testUtterance:a,voices:n};exports.default=o;exports.defaultRegion=t;exports.language=e;exports.testUtterance=a;exports.voices=n;
@@ -0,0 +1,13 @@
1
+ const n = "te", e = "te-IN", t = "హలో, నా పేరు {name} మరియు నేను తెలుగు వాణిని.", a = [{ label: "Shruti", name: "Microsoft Shruti Online (Natural) - Telugu (India)", language: "te-IN", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Mohan", name: "Microsoft Mohan Online (Natural) - Telugu (India)", language: "te-IN", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Geeta", name: "Geeta", localizedName: "apple", language: "te-IN", gender: "female", quality: ["low", "normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { label: "స్త్రీ స్వరం", name: "Android Speech Recognition and Synthesis from Google te-in-x-tef-network", altNames: ["Android Speech Recognition and Synthesis from Google te-in-x-tef-local", "Android Speech Recognition and Synthesis from Google te-IN-language"], nativeID: ["te-in-x-tef-network", "te-in-x-tef-local"], language: "te-IN", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "పురుష స్వరం", name: "Android Speech Recognition and Synthesis from Google te-in-x-tem-network", altNames: ["Android Speech Recognition and Synthesis from Google te-in-x-tem-local"], nativeID: ["te-in-x-tem-network", "te-in-x-tem-local"], language: "te-IN", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }], o = {
2
+ language: "te",
3
+ defaultRegion: e,
4
+ testUtterance: t,
5
+ voices: a
6
+ };
7
+ export {
8
+ o as default,
9
+ e as defaultRegion,
10
+ n as language,
11
+ t as testUtterance,
12
+ a as voices
13
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="th",a="th-TH",t="สวัสดีค่ะ ฉันชื่อ {name} และฉันเป็นคนมีเสียงภาษาไทย",l=[{label:"Premwadee",name:"Microsoft Premwadee Online (Natural) - Thai (Thailand)",language:"th-TH",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Niwat",name:"Microsoft Niwat Online (Natural) - Thai (Thailand)",language:"th-TH",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Narisa",name:"Narisa",localizedName:"apple",language:"th-TH",gender:"female",quality:["low","normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"]},{label:"Kanya",name:"Kanya",localizedName:"apple",language:"th-TH",gender:"female",quality:["low","normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0},{label:"Pattara",name:"Microsoft Pattara - Thai (Thailand)",language:"th-TH",gender:"male",quality:["normal"],rate:1,pitch:1,os:["Windows"],preloaded:!0},{label:"เสียงผู้หญิง",name:"Google ไทย (Natural)",altNames:["Android Speech Recognition and Synthesis from Google th-th-x-mol-network","Chrome OS ไทย","Android Speech Recognition and Synthesis from Google th-th-x-mol-local","Android Speech Recognition and Synthesis from Google th-TH-language"],nativeID:["th-th-x-mol-network","th-th-x-mol-local"],language:"th-TH",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0}],o={language:e,defaultRegion:a,testUtterance:t,voices:l};exports.default=o;exports.defaultRegion=a;exports.language=e;exports.testUtterance=t;exports.voices=l;
@@ -0,0 +1,13 @@
1
+ const l = "th", e = "th-TH", a = "สวัสดีค่ะ ฉันชื่อ {name} และฉันเป็นคนมีเสียงภาษาไทย", t = [{ label: "Premwadee", name: "Microsoft Premwadee Online (Natural) - Thai (Thailand)", language: "th-TH", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Niwat", name: "Microsoft Niwat Online (Natural) - Thai (Thailand)", language: "th-TH", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Narisa", name: "Narisa", localizedName: "apple", language: "th-TH", gender: "female", quality: ["low", "normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"] }, { label: "Kanya", name: "Kanya", localizedName: "apple", language: "th-TH", gender: "female", quality: ["low", "normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { label: "Pattara", name: "Microsoft Pattara - Thai (Thailand)", language: "th-TH", gender: "male", quality: ["normal"], rate: 1, pitch: 1, os: ["Windows"], preloaded: !0 }, { label: "เสียงผู้หญิง", name: "Google ไทย (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google th-th-x-mol-network", "Chrome OS ไทย", "Android Speech Recognition and Synthesis from Google th-th-x-mol-local", "Android Speech Recognition and Synthesis from Google th-TH-language"], nativeID: ["th-th-x-mol-network", "th-th-x-mol-local"], language: "th-TH", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }], o = {
2
+ language: "th",
3
+ defaultRegion: e,
4
+ testUtterance: a,
5
+ voices: t
6
+ };
7
+ export {
8
+ o as default,
9
+ e as defaultRegion,
10
+ l as language,
11
+ a as testUtterance,
12
+ t as voices
13
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="tr",r="tr-TR",a="Merhaba, adım {name} ve Türk sesiyim.",t=[{label:"Emel",name:"Microsoft Emel Online (Natural) - Turkish (Turkey)",language:"tr-TR",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Ahmet",name:"Microsoft Ahmet Online (Natural) - Turkish (Türkiye)",language:"tr-TR",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Yelda",name:"Yelda",localizedName:"apple",altNames:["Yelda (Geliştirilmiş)","Yelda (Türkçe (Türkiye))"],language:"tr-TR",gender:"female",quality:["low","normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0},{label:"Cem",name:"Cem",localizedName:"apple",language:"tr-TR",gender:"male",quality:["low","normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"]},{label:"Tolga",name:"Microsoft Tolga - Turkish (Turkey)",language:"tr-TR",gender:"male",quality:["normal"],rate:1,pitch:1,os:["Windows"],preloaded:!0},{label:"Kadın sesi 1",name:"Google Türkçe 3 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google tr-tr-x-cfs-network","Chrome OS Türkçe 3","Android Speech Recognition and Synthesis from Google tr-tr-x-cfs-local","Android Speech Recognition and Synthesis from Google tr-TR-language"],nativeID:["tr-tr-x-cfs-network","tr-tr-x-cfs-local"],language:"tr-TR",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"Kadın sesi 2",name:"Google Türkçe 4 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google tr-tr-x-efu-network","Chrome OS Türkçe 4","Android Speech Recognition and Synthesis from Google tr-tr-x-efu-local"],nativeID:["tr-tr-x-efu-network","tr-tr-x-efu-local"],language:"tr-TR",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"Kadın sesi 3",name:"Google Türkçe 1 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google tr-tr-x-mfm-network","Chrome OS Türkçe 1","Android Speech Recognition and Synthesis from Google tr-tr-x-mfm-local"],nativeID:["tr-tr-x-mfm-network","tr-tr-x-mfm-local"],language:"tr-TR",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"Erkek sesi 1",name:"Google Türkçe 2 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google tr-tr-x-ama-network","Chrome OS Türkçe 2","Android Speech Recognition and Synthesis from Google tr-tr-x-ama-local"],nativeID:["tr-tr-x-ama-network","tr-tr-x-ama-local"],language:"tr-TR",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"Erkek sesi 2",name:"Google Türkçe 5 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google tr-tr-x-tmc-network","Chrome OS Türkçe 5","Android Speech Recognition and Synthesis from Google tr-tr-x-tmc-local"],nativeID:["tr-tr-x-tmc-network","tr-tr-x-tmc-local"],language:"tr-TR",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0}],o={language:e,defaultRegion:r,testUtterance:a,voices:t};exports.default=o;exports.defaultRegion=r;exports.language=e;exports.testUtterance=a;exports.voices=t;
@@ -0,0 +1,13 @@
1
+ const t = "tr", e = "tr-TR", r = "Merhaba, adım {name} ve Türk sesiyim.", a = [{ label: "Emel", name: "Microsoft Emel Online (Natural) - Turkish (Turkey)", language: "tr-TR", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Ahmet", name: "Microsoft Ahmet Online (Natural) - Turkish (Türkiye)", language: "tr-TR", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Yelda", name: "Yelda", localizedName: "apple", altNames: ["Yelda (Geliştirilmiş)", "Yelda (Türkçe (Türkiye))"], language: "tr-TR", gender: "female", quality: ["low", "normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { label: "Cem", name: "Cem", localizedName: "apple", language: "tr-TR", gender: "male", quality: ["low", "normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"] }, { label: "Tolga", name: "Microsoft Tolga - Turkish (Turkey)", language: "tr-TR", gender: "male", quality: ["normal"], rate: 1, pitch: 1, os: ["Windows"], preloaded: !0 }, { label: "Kadın sesi 1", name: "Google Türkçe 3 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google tr-tr-x-cfs-network", "Chrome OS Türkçe 3", "Android Speech Recognition and Synthesis from Google tr-tr-x-cfs-local", "Android Speech Recognition and Synthesis from Google tr-TR-language"], nativeID: ["tr-tr-x-cfs-network", "tr-tr-x-cfs-local"], language: "tr-TR", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "Kadın sesi 2", name: "Google Türkçe 4 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google tr-tr-x-efu-network", "Chrome OS Türkçe 4", "Android Speech Recognition and Synthesis from Google tr-tr-x-efu-local"], nativeID: ["tr-tr-x-efu-network", "tr-tr-x-efu-local"], language: "tr-TR", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "Kadın sesi 3", name: "Google Türkçe 1 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google tr-tr-x-mfm-network", "Chrome OS Türkçe 1", "Android Speech Recognition and Synthesis from Google tr-tr-x-mfm-local"], nativeID: ["tr-tr-x-mfm-network", "tr-tr-x-mfm-local"], language: "tr-TR", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "Erkek sesi 1", name: "Google Türkçe 2 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google tr-tr-x-ama-network", "Chrome OS Türkçe 2", "Android Speech Recognition and Synthesis from Google tr-tr-x-ama-local"], nativeID: ["tr-tr-x-ama-network", "tr-tr-x-ama-local"], language: "tr-TR", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "Erkek sesi 2", name: "Google Türkçe 5 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google tr-tr-x-tmc-network", "Chrome OS Türkçe 5", "Android Speech Recognition and Synthesis from Google tr-tr-x-tmc-local"], nativeID: ["tr-tr-x-tmc-network", "tr-tr-x-tmc-local"], language: "tr-TR", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }], o = {
2
+ language: "tr",
3
+ defaultRegion: e,
4
+ testUtterance: r,
5
+ voices: a
6
+ };
7
+ export {
8
+ o as default,
9
+ e as defaultRegion,
10
+ t as language,
11
+ r as testUtterance,
12
+ a as voices
13
+ };
@@ -0,0 +1,13 @@
1
+ const o = "uk", e = "uk-UA", a = "Здравствуйте, меня зовут {name} и я украинский голос.", n = [{ label: "Polina", name: "Microsoft Polina Online (Natural) - Ukrainian (Ukraine)", language: "uk-UA", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Ostap", name: "Microsoft Ostap Online (Natural) - Ukrainian (Ukraine)", language: "uk-UA", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Lesya", name: "Lesya", localizedName: "apple", language: "uk-UA", gender: "female", quality: ["low", "normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { label: "Жіночий голос", name: "Google українська (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google uk-ua-x-hfd-network", "Chrome OS українська", "Android Speech Recognition and Synthesis from Google uk-ua-x-hfd-local", "Android Speech Recognition and Synthesis from Google uk-UA-language"], nativeID: ["uk-ua-x-hfd-network", "uk-ua-x-hfd-local"], language: "uk-UA", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }], l = {
2
+ language: "uk",
3
+ defaultRegion: e,
4
+ testUtterance: a,
5
+ voices: n
6
+ };
7
+ export {
8
+ l as default,
9
+ e as defaultRegion,
10
+ o as language,
11
+ a as testUtterance,
12
+ n as voices
13
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="uk",a="uk-UA",n="Здравствуйте, меня зовут {name} и я украинский голос.",o=[{label:"Polina",name:"Microsoft Polina Online (Natural) - Ukrainian (Ukraine)",language:"uk-UA",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Ostap",name:"Microsoft Ostap Online (Natural) - Ukrainian (Ukraine)",language:"uk-UA",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Lesya",name:"Lesya",localizedName:"apple",language:"uk-UA",gender:"female",quality:["low","normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0},{label:"Жіночий голос",name:"Google українська (Natural)",altNames:["Android Speech Recognition and Synthesis from Google uk-ua-x-hfd-network","Chrome OS українська","Android Speech Recognition and Synthesis from Google uk-ua-x-hfd-local","Android Speech Recognition and Synthesis from Google uk-UA-language"],nativeID:["uk-ua-x-hfd-network","uk-ua-x-hfd-local"],language:"uk-UA",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0}],l={language:e,defaultRegion:a,testUtterance:n,voices:o};exports.default=l;exports.defaultRegion=a;exports.language=e;exports.testUtterance=n;exports.voices=o;
@@ -0,0 +1,23 @@
1
+ export interface WebSpeechFeatures {
2
+ speechSynthesis: SpeechSynthesis | undefined;
3
+ speechSynthesisUtterance: typeof SpeechSynthesisUtterance | undefined;
4
+ speechSynthesisVoice: typeof SpeechSynthesisVoice | undefined;
5
+ speechSynthesisEvent: typeof SpeechSynthesisEvent | undefined;
6
+ speechSynthesisErrorEvent: typeof SpeechSynthesisErrorEvent | undefined;
7
+ onvoiceschanged: boolean;
8
+ speechSynthesisSpeaking: boolean;
9
+ speechSynthesisPaused: boolean;
10
+ onboundary: boolean;
11
+ onend: boolean;
12
+ onerror: boolean;
13
+ onmark: boolean;
14
+ onpause: boolean;
15
+ onresume: boolean;
16
+ onstart: boolean;
17
+ [key: string]: any;
18
+ }
19
+ /**
20
+ * Detects all possible occurrences of the main Web Speech API components
21
+ * in the global scope using prefix detection.
22
+ */
23
+ export declare const detectFeatures: () => WebSpeechFeatures;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Extracts language and region from a BCP 47 language tag.
3
+ * @param lang - The BCP 47 language tag (e.g., "en-US", "fr-CA")
4
+ * @returns A tuple containing [language, region] where region is optional
5
+ */
6
+ export declare const extractLangRegionFromBCP47: (lang: string) => [string, string | undefined];
@@ -0,0 +1,11 @@
1
+ export interface WebSpeechPlatformPatches {
2
+ isAndroid: boolean;
3
+ isFirefox: boolean;
4
+ isSafari: boolean;
5
+ isKaiOS: boolean;
6
+ }
7
+ /**
8
+ * Detects platform features
9
+ * @returns {WebSpeechPlatformPatches} Object containing platform features
10
+ */
11
+ export declare const detectPlatformFeatures: () => WebSpeechPlatformPatches;
@@ -0,0 +1,6 @@
1
+ export interface ReadiumSpeechUtterance {
2
+ id?: string;
3
+ text: string;
4
+ ssml?: boolean;
5
+ language?: string;
6
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="vi",i="vi-VN",n="Xin chào, tôi tên là {name} và tôi là giọng nói tiếng Việt.",o=[{label:"HoaiMy",name:"Microsoft HoaiMy Online (Natural) - Vietnamese (Vietnam)",language:"vi-VN",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"NamMinh",name:"Microsoft NamMinh Online (Natural) - Vietnamese (Vietnam)",language:"vi-VN",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Linh",name:"Linh",localizedName:"apple",language:"vi-VN",gender:"female",quality:["low","normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0},{label:"An",name:"Microsoft An - Vietnamese (Vietnam)",language:"vi-VN",gender:"male",quality:["normal"],rate:1,pitch:1,os:["Windows"],preloaded:!0},{label:"Giọng nữ 1",name:"Google Tiếng Việt 1 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google vi-vn-x-vic-network","Chrome OS Tiếng Việt 1","Android Speech Recognition and Synthesis from Google vi-vn-x-vic-local","Android Speech Recognition and Synthesis from Google vi-VN-language"],nativeID:["vi-vn-x-vic-network","vi-vn-x-vic-local"],language:"vi-VN",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"Giọng nữ 2",name:"Google Tiếng Việt 2 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google vi-vn-x-vid-network","Chrome OS Tiếng Việt 2","Android Speech Recognition and Synthesis from Google vi-vn-x-vid-local"],nativeID:["vi-vn-x-vid-network","vi-vn-x-vid-local"],language:"vi-VN",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"Giọng nữ 3",name:"Google Tiếng Việt 4 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google vi-vn-x-vif-network","Chrome OS Tiếng Việt 4","Android Speech Recognition and Synthesis from Google vi-vn-x-vif-local"],nativeID:["vi-vn-x-vif-network","vi-vn-x-vif-local"],language:"vi-VN",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"Giọng nam 1",name:"Google Tiếng Việt 3 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google vi-vn-x-vie-network","Chrome OS Tiếng Việt 3","Android Speech Recognition and Synthesis from Google vi-vn-x-vie-local"],nativeID:["vi-vn-x-vie-network","vi-vn-x-vie-local"],language:"vi-VN",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"Giọng nam 2",name:"Google Tiếng Việt 5 (Natural)",altNames:["Android Speech Recognition and Synthesis from Google vi-vn-x-gft-network","Chrome OS Tiếng Việt 5","Android Speech Recognition and Synthesis from Google vi-vn-x-gft-local"],nativeID:["vi-vn-x-gft-network","vi-vn-x-gft-local"],language:"vi-VN",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0}],a={language:e,defaultRegion:i,testUtterance:n,voices:o};exports.default=a;exports.defaultRegion=i;exports.language=e;exports.testUtterance=n;exports.voices=o;
@@ -0,0 +1,13 @@
1
+ const o = "vi", e = "vi-VN", i = "Xin chào, tôi tên là {name} và tôi là giọng nói tiếng Việt.", n = [{ label: "HoaiMy", name: "Microsoft HoaiMy Online (Natural) - Vietnamese (Vietnam)", language: "vi-VN", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "NamMinh", name: "Microsoft NamMinh Online (Natural) - Vietnamese (Vietnam)", language: "vi-VN", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Linh", name: "Linh", localizedName: "apple", language: "vi-VN", gender: "female", quality: ["low", "normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { label: "An", name: "Microsoft An - Vietnamese (Vietnam)", language: "vi-VN", gender: "male", quality: ["normal"], rate: 1, pitch: 1, os: ["Windows"], preloaded: !0 }, { label: "Giọng nữ 1", name: "Google Tiếng Việt 1 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google vi-vn-x-vic-network", "Chrome OS Tiếng Việt 1", "Android Speech Recognition and Synthesis from Google vi-vn-x-vic-local", "Android Speech Recognition and Synthesis from Google vi-VN-language"], nativeID: ["vi-vn-x-vic-network", "vi-vn-x-vic-local"], language: "vi-VN", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "Giọng nữ 2", name: "Google Tiếng Việt 2 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google vi-vn-x-vid-network", "Chrome OS Tiếng Việt 2", "Android Speech Recognition and Synthesis from Google vi-vn-x-vid-local"], nativeID: ["vi-vn-x-vid-network", "vi-vn-x-vid-local"], language: "vi-VN", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "Giọng nữ 3", name: "Google Tiếng Việt 4 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google vi-vn-x-vif-network", "Chrome OS Tiếng Việt 4", "Android Speech Recognition and Synthesis from Google vi-vn-x-vif-local"], nativeID: ["vi-vn-x-vif-network", "vi-vn-x-vif-local"], language: "vi-VN", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "Giọng nam 1", name: "Google Tiếng Việt 3 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google vi-vn-x-vie-network", "Chrome OS Tiếng Việt 3", "Android Speech Recognition and Synthesis from Google vi-vn-x-vie-local"], nativeID: ["vi-vn-x-vie-network", "vi-vn-x-vie-local"], language: "vi-VN", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "Giọng nam 2", name: "Google Tiếng Việt 5 (Natural)", altNames: ["Android Speech Recognition and Synthesis from Google vi-vn-x-gft-network", "Chrome OS Tiếng Việt 5", "Android Speech Recognition and Synthesis from Google vi-vn-x-gft-local"], nativeID: ["vi-vn-x-gft-network", "vi-vn-x-gft-local"], language: "vi-VN", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }], a = {
2
+ language: "vi",
3
+ defaultRegion: e,
4
+ testUtterance: i,
5
+ voices: n
6
+ };
7
+ export {
8
+ a as default,
9
+ e as defaultRegion,
10
+ o as language,
11
+ i as testUtterance,
12
+ n as voices
13
+ };
@@ -0,0 +1,5 @@
1
+ import { ReadiumSpeechVoice, TQuality } from './types';
2
+ export declare const isNoveltyVoice: (voiceName: string, voiceId?: string) => boolean;
3
+ export declare const isVeryLowQualityVoice: (voiceName: string, quality?: TQuality) => boolean;
4
+ export declare const filterOutNoveltyVoices: (voices: ReadiumSpeechVoice[]) => ReadiumSpeechVoice[];
5
+ export declare const filterOutVeryLowQualityVoices: (voices: ReadiumSpeechVoice[]) => ReadiumSpeechVoice[];
@@ -0,0 +1,44 @@
1
+ import { ReadiumSpeechVoice } from './types';
2
+ export interface LanguageWithRegions {
3
+ baseLang: string;
4
+ regions: string[];
5
+ }
6
+ export declare const chineseVariantMap: {
7
+ [key: string]: string;
8
+ };
9
+ /**
10
+ * Normalizes language code with special handling for Chinese variants
11
+ * @param lang - Input language code
12
+ * @returns Normalized language code
13
+ */
14
+ export declare const normalizeLanguageCode: (lang: string) => string;
15
+ /**
16
+ * Get all voices for a specific language
17
+ * @param {string} lang - Language code (e.g., "en", "fr", "zh-CN")
18
+ * @returns {Promise<ReadiumSpeechVoice[]>} Promise resolving to array of voices for the specified language
19
+ */
20
+ export declare const getVoices: (lang: string) => Promise<ReadiumSpeechVoice[]>;
21
+ /**
22
+ * Get all available language codes
23
+ * @returns {string[]} Array of available language codes
24
+ */
25
+ export declare const getAvailableLanguages: () => string[];
26
+ /**
27
+ * Get the test utterance for a language
28
+ * @param {string} lang - Language code (e.g., "en", "fr", "zh-CN")
29
+ * @returns {string} The test utterance or empty string if not found
30
+ */
31
+ export declare const getTestUtterance: (lang: string) => string;
32
+ /**
33
+ * Get the default region for a language
34
+ * @param {string} lang - Language code (e.g., "en", "fr", "zh-CN")
35
+ * @returns {string} The default region code or empty string if not found
36
+ */
37
+ export declare const getDefaultRegion: (lang: string) => string;
38
+ /**
39
+ * Process languages with region inference
40
+ * @param languages - Array of language codes (e.g., ["fr", "en-CA"])
41
+ * @returns Array of LanguageWithRegions objects with language and region information
42
+ */
43
+ export declare const processLanguages: (languages: string[]) => LanguageWithRegions[];
44
+ export * from './types';
@@ -0,0 +1,20 @@
1
+ import { TQuality, TLocalizedName } from './types';
2
+ interface LocalizedQuality {
3
+ normal: string;
4
+ high: string;
5
+ }
6
+ interface PlatformQualities {
7
+ [platform: string]: {
8
+ [lang: string]: LocalizedQuality;
9
+ };
10
+ }
11
+ declare const platformQualities: PlatformQualities;
12
+ export declare const getInferredQualityFromPlatform: (voiceURI: string, language: string, platform?: TLocalizedName | TLocalizedName[]) => TQuality | undefined;
13
+ /**
14
+ * Finds a locale where both high and normal quality indicators are present in the voice names
15
+ * @param voiceNames Array of voice names to check against quality indicators
16
+ * @param platform The platform to check quality indicators for (e.g., "apple")
17
+ * @returns The first matching locale code or undefined if none found or platform not found
18
+ */
19
+ export declare const findLocaleWithQualityIndicators: (voiceNames: string[], platform: keyof typeof platformQualities) => string | undefined;
20
+ export {};
@@ -0,0 +1,2 @@
1
+ import { TQuality } from './types';
2
+ export declare const getInferredQualityFromPackageName: (voiceName: string) => TQuality | undefined;
@@ -0,0 +1,7 @@
1
+ import { ReadiumSpeechVoice } from './types';
2
+ /**
3
+ * Create a map of language codes to their respective voice order maps
4
+ * @param voices Array of voices to analyze
5
+ * @returns Map where key is language code and value is a map of voice names to their original JSON indices
6
+ */
7
+ export declare function createJsonOrderMap(voices: ReadiumSpeechVoice[]): Promise<Map<string, Map<string, number>>>;
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Voice gender as defined in the schema
3
+ */
4
+ export type TGender = "neutral" | "female" | "male";
5
+ /**
6
+ * Voice quality levels as defined in the schema
7
+ */
8
+ export type TQuality = null | "veryLow" | "low" | "normal" | "high" | "veryHigh";
9
+ /**
10
+ * Localization type for voice names
11
+ */
12
+ export type TLocalizedName = "android" | "apple";
13
+ /**
14
+ * Source of the voice data
15
+ */
16
+ export type TSource = "json" | "browser";
17
+ /**
18
+ * Supported operating systems for voices
19
+ */
20
+ export type TOperatingSystem = "Android" | "ChromeOS" | "iOS" | "iPadOS" | "macOS" | "Windows";
21
+ /**
22
+ * Supported browsers for voices
23
+ */
24
+ export type TBrowser = "ChromeDesktop" | "Edge" | "Firefox" | "Safari";
25
+ /**
26
+ * Represents a voice from the JSON data file
27
+ */
28
+ export interface ReadiumSpeechJSONVoice {
29
+ label?: string;
30
+ name: string;
31
+ localizedName?: "android" | "apple";
32
+ note?: string;
33
+ altNames?: string[];
34
+ nativeID?: string[];
35
+ language?: string;
36
+ altLanguage?: string;
37
+ otherLanguages?: string[];
38
+ multiLingual?: boolean;
39
+ gender?: TGender;
40
+ children?: boolean;
41
+ quality?: TQuality[];
42
+ rate?: number;
43
+ pitch?: number;
44
+ pitchControl?: boolean;
45
+ os?: TOperatingSystem[];
46
+ browser?: TBrowser[];
47
+ preloaded?: boolean;
48
+ }
49
+ export interface VoiceFilterData {
50
+ voices: Array<{
51
+ name: string;
52
+ altNames?: string[];
53
+ [key: string]: any;
54
+ }>;
55
+ }
56
+ export interface ReadiumSpeechVoice {
57
+ source: TSource;
58
+ label: string;
59
+ name: string;
60
+ originalName: string;
61
+ voiceURI?: string;
62
+ language: string;
63
+ localizedName?: TLocalizedName;
64
+ altNames?: string[];
65
+ altLanguage?: string;
66
+ otherLanguages?: string[];
67
+ multiLingual?: boolean;
68
+ gender?: TGender;
69
+ children?: boolean;
70
+ quality?: TQuality;
71
+ pitchControl?: boolean;
72
+ pitch?: number;
73
+ rate?: number;
74
+ browser?: TBrowser[];
75
+ os?: TOperatingSystem[];
76
+ preloaded?: boolean;
77
+ nativeID?: string | string[];
78
+ note?: string;
79
+ provider?: string;
80
+ [key: string]: any;
81
+ }
82
+ export interface VoiceData {
83
+ language: string;
84
+ defaultRegion: string;
85
+ testUtterance: string;
86
+ voices: ReadiumSpeechVoice[];
87
+ }
@@ -0,0 +1,19 @@
1
+ import { ReadiumSpeechVoice } from './types';
2
+ /**
3
+ * Selects the preferred voice between two voices that represent the same voice
4
+ * but have different names, based on name and altNames preference order.
5
+ *
6
+ * @param voice1 - First voice
7
+ * @param voice2 - Second voice
8
+ * @returns The preferred voice based on name/altNames order
9
+ */
10
+ export declare function selectPreferredVoiceByName(voice1: ReadiumSpeechVoice, voice2: ReadiumSpeechVoice): ReadiumSpeechVoice;
11
+ /**
12
+ * Determines if two voices should be considered the same voice with different names
13
+ * based on altNames matching.
14
+ *
15
+ * @param voice1 - First voice
16
+ * @param voice2 - Second voice
17
+ * @returns True if voices should be merged based on name/altNames
18
+ */
19
+ export declare function shouldMergeVoicesByName(voice1: ReadiumSpeechVoice, voice2: ReadiumSpeechVoice): boolean;
@@ -0,0 +1,13 @@
1
+ const t = "wuu", a = "wuu-CN", e = "你好,我的名字是 {name},我是吴语配音。", n = [{ label: "Nannan", name: "Nannan", localizedName: "apple", language: "wuu-CN", altLanguage: "zh-CN", gender: "female", quality: ["normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }], u = {
2
+ language: "wuu",
3
+ defaultRegion: a,
4
+ testUtterance: e,
5
+ voices: n
6
+ };
7
+ export {
8
+ u as default,
9
+ a as defaultRegion,
10
+ t as language,
11
+ e as testUtterance,
12
+ n as voices
13
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="wuu",a="wuu-CN",t="你好,我的名字是 {name},我是吴语配音。",n=[{label:"Nannan",name:"Nannan",localizedName:"apple",language:"wuu-CN",altLanguage:"zh-CN",gender:"female",quality:["normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0}],u={language:e,defaultRegion:a,testUtterance:t,voices:n};exports.default=u;exports.defaultRegion=a;exports.language=e;exports.testUtterance=t;exports.voices=n;
@@ -0,0 +1,13 @@
1
+ const o = "yue", e = "yue-HK", a = "你好,我叫 {name},係越中文聲。", n = [{ label: "HiuGaai", name: "Microsoft HiuGaai Online (Natural) - Chinese (Cantonese Traditional)", language: "yue-HK", altLanguage: "zh-HK", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "HiuMaan", name: "Microsoft HiuMaan Online (Natural) - Chinese (Hong Kong SAR)", language: "yue-HK", altLanguage: "zh-HK", gender: "female", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "WanLung", name: "Microsoft WanLung Online (Natural) - Chinese (Hong Kong SAR)", language: "yue-HK", altLanguage: "zh-HK", gender: "male", quality: ["veryHigh"], rate: 1, pitchControl: !1, browser: ["Edge"], preloaded: !0 }, { label: "Google 女聲", name: "Google 粤語(香港)", note: "This voice is pre-loaded in Chrome on desktop. Utterances that are longer than 14 seconds long can trigger a bug with this voice, check the notes in the project's README for more information.", language: "yue-HK", altLanguage: "zh-HK", gender: "female", quality: ["high"], rate: 1, pitch: 1, browser: ["ChromeDesktop"], preloaded: !0 }, { label: "Sinji", name: "Sinji", localizedName: "apple", language: "yue-HK", altLanguage: "zh-HK", gender: "female", quality: ["low", "normal", "high"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { label: "Aasing", name: "Aasing", localizedName: "apple", language: "yue-HK", altLanguage: "zh-HK", gender: "male", quality: ["normal"], rate: 1, pitch: 1, os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { label: "Tracy", name: "Microsoft Tracy - Chinese (Traditional, Hong Kong S.A.R.)", language: "cmn-HK", altLanguage: "zh-HK", gender: "female", quality: ["normal"], rate: 1, pitch: 1, os: ["Windows"], preloaded: !0 }, { label: "Danny", name: "Microsoft Danny - Chinese (Traditional, Hong Kong S.A.R.)", language: "cmn-HK", altLanguage: "zh-HK", gender: "male", quality: ["normal"], rate: 1, pitch: 1, os: ["Windows"], preloaded: !0 }, { label: "女聲1", name: "Android Speech Recognition and Synthesis from Google yue-hk-x-jar-network", altNames: ["Chrome OS 粵語 1", "Android Speech Recognition and Synthesis from Google yue-HK-x-jar-local", "Android Speech Recognition and Synthesis from Google yue-HK-language"], nativeID: ["yue-hk-x-jar-network", "yue-hk-x-jar-local"], language: "yue-HK", altLanguage: "zh-HK", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "女聲2", name: "Android Speech Recognition and Synthesis from Google yue-hk-x-yuc-network", altNames: ["Chrome OS 粵語 2", "Android Speech Recognition and Synthesis from Google yue-HK-x-yuc-local"], nativeID: ["yue-hk-x-yuc-network", "yue-hk-x-yuc-local"], language: "yue-HK", altLanguage: "zh-HK", gender: "female", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "男聲1", name: "Android Speech Recognition and Synthesis from Google yue-hk-x-yud-network", altNames: ["Chrome OS 粵語 3", "Android Speech Recognition and Synthesis from Google yue-HK-x-yud-local"], nativeID: ["yue-hk-x-yud-network", "yue-hk-x-yud-local"], language: "yue-HK", altLanguage: "zh-HK", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "男聲2", name: "Android Speech Recognition and Synthesis from Google yue-hk-x-yue-network", altNames: ["Chrome OS 粵語 5", "Android Speech Recognition and Synthesis from Google yue-HK-x-yue-local"], nativeID: ["yue-hk-x-yue-network", "yue-hk-x-yue-local"], language: "yue-HK", altLanguage: "zh-HK", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }, { label: "男聲3", name: "Android Speech Recognition and Synthesis from Google yue-hk-x-yuf-network", altNames: ["Chrome OS 粵語 5", "Android Speech Recognition and Synthesis from Google yue-HK-x-yuf-local"], nativeID: ["yue-hk-x-yuf-network", "yue-hk-x-yuf-local"], language: "yue-HK", altLanguage: "zh-HK", gender: "male", quality: ["high"], rate: 1, pitch: 1, os: ["Android", "ChromeOS"], preloaded: !0 }], l = {
2
+ language: "yue",
3
+ defaultRegion: e,
4
+ testUtterance: a,
5
+ voices: n
6
+ };
7
+ export {
8
+ l as default,
9
+ e as defaultRegion,
10
+ o as language,
11
+ a as testUtterance,
12
+ n as voices
13
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="yue",a="yue-HK",n="你好,我叫 {name},係越中文聲。",o=[{label:"HiuGaai",name:"Microsoft HiuGaai Online (Natural) - Chinese (Cantonese Traditional)",language:"yue-HK",altLanguage:"zh-HK",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"HiuMaan",name:"Microsoft HiuMaan Online (Natural) - Chinese (Hong Kong SAR)",language:"yue-HK",altLanguage:"zh-HK",gender:"female",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"WanLung",name:"Microsoft WanLung Online (Natural) - Chinese (Hong Kong SAR)",language:"yue-HK",altLanguage:"zh-HK",gender:"male",quality:["veryHigh"],rate:1,pitchControl:!1,browser:["Edge"],preloaded:!0},{label:"Google 女聲",name:"Google 粤語(香港)",note:"This voice is pre-loaded in Chrome on desktop. Utterances that are longer than 14 seconds long can trigger a bug with this voice, check the notes in the project's README for more information.",language:"yue-HK",altLanguage:"zh-HK",gender:"female",quality:["high"],rate:1,pitch:1,browser:["ChromeDesktop"],preloaded:!0},{label:"Sinji",name:"Sinji",localizedName:"apple",language:"yue-HK",altLanguage:"zh-HK",gender:"female",quality:["low","normal","high"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0},{label:"Aasing",name:"Aasing",localizedName:"apple",language:"yue-HK",altLanguage:"zh-HK",gender:"male",quality:["normal"],rate:1,pitch:1,os:["macOS","iOS","iPadOS"],preloaded:!0},{label:"Tracy",name:"Microsoft Tracy - Chinese (Traditional, Hong Kong S.A.R.)",language:"cmn-HK",altLanguage:"zh-HK",gender:"female",quality:["normal"],rate:1,pitch:1,os:["Windows"],preloaded:!0},{label:"Danny",name:"Microsoft Danny - Chinese (Traditional, Hong Kong S.A.R.)",language:"cmn-HK",altLanguage:"zh-HK",gender:"male",quality:["normal"],rate:1,pitch:1,os:["Windows"],preloaded:!0},{label:"女聲1",name:"Android Speech Recognition and Synthesis from Google yue-hk-x-jar-network",altNames:["Chrome OS 粵語 1","Android Speech Recognition and Synthesis from Google yue-HK-x-jar-local","Android Speech Recognition and Synthesis from Google yue-HK-language"],nativeID:["yue-hk-x-jar-network","yue-hk-x-jar-local"],language:"yue-HK",altLanguage:"zh-HK",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"女聲2",name:"Android Speech Recognition and Synthesis from Google yue-hk-x-yuc-network",altNames:["Chrome OS 粵語 2","Android Speech Recognition and Synthesis from Google yue-HK-x-yuc-local"],nativeID:["yue-hk-x-yuc-network","yue-hk-x-yuc-local"],language:"yue-HK",altLanguage:"zh-HK",gender:"female",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"男聲1",name:"Android Speech Recognition and Synthesis from Google yue-hk-x-yud-network",altNames:["Chrome OS 粵語 3","Android Speech Recognition and Synthesis from Google yue-HK-x-yud-local"],nativeID:["yue-hk-x-yud-network","yue-hk-x-yud-local"],language:"yue-HK",altLanguage:"zh-HK",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"男聲2",name:"Android Speech Recognition and Synthesis from Google yue-hk-x-yue-network",altNames:["Chrome OS 粵語 5","Android Speech Recognition and Synthesis from Google yue-HK-x-yue-local"],nativeID:["yue-hk-x-yue-network","yue-hk-x-yue-local"],language:"yue-HK",altLanguage:"zh-HK",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0},{label:"男聲3",name:"Android Speech Recognition and Synthesis from Google yue-hk-x-yuf-network",altNames:["Chrome OS 粵語 5","Android Speech Recognition and Synthesis from Google yue-HK-x-yuf-local"],nativeID:["yue-hk-x-yuf-network","yue-hk-x-yuf-local"],language:"yue-HK",altLanguage:"zh-HK",gender:"male",quality:["high"],rate:1,pitch:1,os:["Android","ChromeOS"],preloaded:!0}],l={language:e,defaultRegion:a,testUtterance:n,voices:o};exports.default=l;exports.defaultRegion=a;exports.language=e;exports.testUtterance=n;exports.voices=o;
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@readium/speech",
3
+ "version": "0.1.0",
4
+ "description": "A TypeScript library for implementing read aloud features with Web technologies, following best practices for digital publishing.",
5
+ "author": "Readium Foundation",
6
+ "keywords": [
7
+ "readium",
8
+ "speech",
9
+ "tts",
10
+ "text-to-speech",
11
+ "read-aloud",
12
+ "accessibility"
13
+ ],
14
+ "homepage": "https://readium.org/speech/",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/readium/speech.git"
18
+ },
19
+ "bugs": {
20
+ "url": "https://github.com/readium/speech/issues"
21
+ },
22
+ "license": "BSD-3-Clause",
23
+ "type": "module",
24
+ "main": "./build/index.cjs",
25
+ "module": "./build/index.js",
26
+ "types": "./build/index.d.ts",
27
+ "sideEffects": false,
28
+ "files": [
29
+ "build"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "types": "./build/index.d.ts",
34
+ "import": "./build/index.js",
35
+ "require": "./build/index.cjs"
36
+ }
37
+ },
38
+ "scripts": {
39
+ "test": "npm run build && NODE_NO_WARNINGS=1 ava test/**/*.test.ts",
40
+ "generate-metadata": "node scripts/generate-metadata.js",
41
+ "clean": "rimraf ./build",
42
+ "build": "vite build",
43
+ "start": "http-server ./",
44
+ "watch": "tsc -w"
45
+ },
46
+ "devDependencies": {
47
+ "@ava/typescript": "^6.0.0",
48
+ "ava": "^6.4.0",
49
+ "http-server": "^14.1.1",
50
+ "rimraf": "^6.0.1",
51
+ "ts-node": "^10.9.2",
52
+ "typescript": "^5.8.3",
53
+ "vite": "^7.1.9",
54
+ "vite-plugin-dts": "^4.5.4"
55
+ },
56
+ "dependencies": {
57
+ "string-strip-html": "^13.4.23"
58
+ }
59
+ }