echogarden 2.10.2 → 3.0.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 (496) hide show
  1. package/LICENSE.MIT.md +7 -0
  2. package/README.md +9 -1
  3. package/data/lexicons/heteronyms.en.json +44 -10
  4. package/data/lexicons/words.en.json +726 -22
  5. package/data/schemas/options.json +91 -153
  6. package/dist/alignment/DTWMfccSequenceAlignment.js.map +1 -1
  7. package/dist/alignment/SemanticTextAlignment.d.ts +4 -2
  8. package/dist/alignment/SemanticTextAlignment.d.ts.map +1 -1
  9. package/dist/alignment/SemanticTextAlignment.js +7 -7
  10. package/dist/alignment/SemanticTextAlignment.js.map +1 -1
  11. package/dist/alignment/SpeechAlignment.d.ts +9 -10
  12. package/dist/alignment/SpeechAlignment.d.ts.map +1 -1
  13. package/dist/alignment/SpeechAlignment.js +23 -96
  14. package/dist/alignment/SpeechAlignment.js.map +1 -1
  15. package/dist/api/APIOptions.d.ts +1 -1
  16. package/dist/api/APIOptions.d.ts.map +1 -1
  17. package/dist/api/Alignment.d.ts +8 -6
  18. package/dist/api/Alignment.d.ts.map +1 -1
  19. package/dist/api/Alignment.js +31 -40
  20. package/dist/api/Alignment.js.map +1 -1
  21. package/dist/api/Common.d.ts +7 -0
  22. package/dist/api/Common.d.ts.map +1 -1
  23. package/dist/api/Common.js.map +1 -1
  24. package/dist/api/Denoising.d.ts +5 -2
  25. package/dist/api/Denoising.d.ts.map +1 -1
  26. package/dist/api/Denoising.js +15 -15
  27. package/dist/api/Denoising.js.map +1 -1
  28. package/dist/api/GlobalOptions.d.ts +2 -8
  29. package/dist/api/GlobalOptions.d.ts.map +1 -1
  30. package/dist/api/GlobalOptions.js +2 -13
  31. package/dist/api/GlobalOptions.js.map +1 -1
  32. package/dist/api/Recognition.d.ts +11 -12
  33. package/dist/api/Recognition.d.ts.map +1 -1
  34. package/dist/api/Recognition.js +32 -82
  35. package/dist/api/Recognition.js.map +1 -1
  36. package/dist/api/SourceSeparation.d.ts +7 -2
  37. package/dist/api/SourceSeparation.d.ts.map +1 -1
  38. package/dist/api/SourceSeparation.js +12 -10
  39. package/dist/api/SourceSeparation.js.map +1 -1
  40. package/dist/api/SpeechLanguageDetection.d.ts +11 -7
  41. package/dist/api/SpeechLanguageDetection.d.ts.map +1 -1
  42. package/dist/api/SpeechLanguageDetection.js +37 -30
  43. package/dist/api/SpeechLanguageDetection.js.map +1 -1
  44. package/dist/api/SpeechSearch.d.ts +4 -1
  45. package/dist/api/SpeechSearch.d.ts.map +1 -1
  46. package/dist/api/SpeechSearch.js.map +1 -1
  47. package/dist/api/SpeechTranslation.d.ts +10 -6
  48. package/dist/api/SpeechTranslation.d.ts.map +1 -1
  49. package/dist/api/SpeechTranslation.js +28 -26
  50. package/dist/api/SpeechTranslation.js.map +1 -1
  51. package/dist/api/Synthesis.d.ts +13 -8
  52. package/dist/api/Synthesis.d.ts.map +1 -1
  53. package/dist/api/Synthesis.js +67 -89
  54. package/dist/api/Synthesis.js.map +1 -1
  55. package/dist/api/TextLanguageDetection.d.ts +4 -2
  56. package/dist/api/TextLanguageDetection.d.ts.map +1 -1
  57. package/dist/api/TextLanguageDetection.js +4 -7
  58. package/dist/api/TextLanguageDetection.js.map +1 -1
  59. package/dist/api/TextTranslation.d.ts +4 -2
  60. package/dist/api/TextTranslation.d.ts.map +1 -1
  61. package/dist/api/TextTranslation.js +13 -24
  62. package/dist/api/TextTranslation.js.map +1 -1
  63. package/dist/api/TimelineTranslationAlignment.d.ts +6 -3
  64. package/dist/api/TimelineTranslationAlignment.d.ts.map +1 -1
  65. package/dist/api/TimelineTranslationAlignment.js +20 -11
  66. package/dist/api/TimelineTranslationAlignment.js.map +1 -1
  67. package/dist/api/TranscriptAndTranslationAlignment.d.ts +6 -4
  68. package/dist/api/TranscriptAndTranslationAlignment.d.ts.map +1 -1
  69. package/dist/api/TranscriptAndTranslationAlignment.js +11 -12
  70. package/dist/api/TranscriptAndTranslationAlignment.js.map +1 -1
  71. package/dist/api/TranslationAlignment.d.ts +6 -4
  72. package/dist/api/TranslationAlignment.d.ts.map +1 -1
  73. package/dist/api/TranslationAlignment.js +20 -21
  74. package/dist/api/TranslationAlignment.js.map +1 -1
  75. package/dist/api/VoiceActivityDetection.d.ts +9 -8
  76. package/dist/api/VoiceActivityDetection.d.ts.map +1 -1
  77. package/dist/api/VoiceActivityDetection.js +20 -43
  78. package/dist/api/VoiceActivityDetection.js.map +1 -1
  79. package/dist/audio/AudioBufferConversion.js.map +1 -1
  80. package/dist/audio/AudioPlayer.d.ts +1 -3
  81. package/dist/audio/AudioPlayer.d.ts.map +1 -1
  82. package/dist/audio/AudioPlayer.js +3 -188
  83. package/dist/audio/AudioPlayer.js.map +1 -1
  84. package/dist/audio/AudioUtilities.d.ts +2 -1
  85. package/dist/audio/AudioUtilities.d.ts.map +1 -1
  86. package/dist/audio/AudioUtilities.js +2 -2
  87. package/dist/audio/AudioUtilities.js.map +1 -1
  88. package/dist/build-tools/MakeTarballsForInstalledPackages.js +3 -3
  89. package/dist/build-tools/MakeTarballsForInstalledPackages.js.map +1 -1
  90. package/dist/cli/CLI.d.ts.map +1 -1
  91. package/dist/cli/CLI.js +139 -92
  92. package/dist/cli/CLI.js.map +1 -1
  93. package/dist/codecs/FFMpegTranscoder.d.ts +4 -3
  94. package/dist/codecs/FFMpegTranscoder.d.ts.map +1 -1
  95. package/dist/codecs/FFMpegTranscoder.js +16 -14
  96. package/dist/codecs/FFMpegTranscoder.js.map +1 -1
  97. package/dist/codecs/TIMITCodec.d.ts.map +1 -1
  98. package/dist/data-structures/DynamicTypedArray.d.ts.map +1 -1
  99. package/dist/data-structures/DynamicTypedArray.js.map +1 -1
  100. package/dist/data-structures/Queue.d.ts.map +1 -1
  101. package/dist/data-structures/WindowedList.d.ts.map +1 -1
  102. package/dist/data-structures/WindowedList.js.map +1 -1
  103. package/dist/denoising/NSNet2.d.ts +3 -2
  104. package/dist/denoising/NSNet2.d.ts.map +1 -1
  105. package/dist/denoising/NSNet2.js +4 -4
  106. package/dist/denoising/NSNet2.js.map +1 -1
  107. package/dist/denoising/RNNoise.d.ts +2 -1
  108. package/dist/denoising/RNNoise.d.ts.map +1 -1
  109. package/dist/denoising/RNNoise.js +10 -6
  110. package/dist/denoising/RNNoise.js.map +1 -1
  111. package/dist/dsp/BiquadFilter.d.ts.map +1 -1
  112. package/dist/dsp/DecayingPeakEstimator.d.ts.map +1 -1
  113. package/dist/dsp/DecayingPeakEstimator.js.map +1 -1
  114. package/dist/dsp/FFT.d.ts.map +1 -1
  115. package/dist/dsp/FFT.js +2 -1
  116. package/dist/dsp/FFT.js.map +1 -1
  117. package/dist/dsp/KWeightingFilter.d.ts.map +1 -1
  118. package/dist/dsp/KWeightingFilter.js.map +1 -1
  119. package/dist/dsp/LoudnessEstimator.d.ts.map +1 -1
  120. package/dist/dsp/LoudnessEstimator.js.map +1 -1
  121. package/dist/dsp/MFCC.d.ts +3 -2
  122. package/dist/dsp/MFCC.d.ts.map +1 -1
  123. package/dist/dsp/MFCC.js +4 -4
  124. package/dist/dsp/MFCC.js.map +1 -1
  125. package/dist/dsp/MelSpectrogram.d.ts +10 -8
  126. package/dist/dsp/MelSpectrogram.d.ts.map +1 -1
  127. package/dist/dsp/MelSpectrogram.js +31 -34
  128. package/dist/dsp/MelSpectrogram.js.map +1 -1
  129. package/dist/dsp/Rubberband.d.ts.map +1 -1
  130. package/dist/dsp/Rubberband.js +8 -3
  131. package/dist/dsp/Rubberband.js.map +1 -1
  132. package/dist/dsp/Sonic.d.ts.map +1 -1
  133. package/dist/dsp/Sonic.js +1 -1
  134. package/dist/dsp/Sonic.js.map +1 -1
  135. package/dist/dsp/SpeexResampler.d.ts.map +1 -1
  136. package/dist/dsp/SpeexResampler.js +1 -1
  137. package/dist/dsp/SpeexResampler.js.map +1 -1
  138. package/dist/encodings/Ascii.d.ts +1 -1
  139. package/dist/encodings/Ascii.d.ts.map +1 -1
  140. package/dist/encodings/Base64.js.map +1 -1
  141. package/dist/encodings/Utf16.d.ts.map +1 -1
  142. package/dist/encodings/Utf8.d.ts.map +1 -1
  143. package/dist/math/VectorMath.d.ts +1 -0
  144. package/dist/math/VectorMath.d.ts.map +1 -1
  145. package/dist/math/VectorMath.js +9 -5
  146. package/dist/math/VectorMath.js.map +1 -1
  147. package/dist/nlp/ChineseSegmentation.d.ts +1 -1
  148. package/dist/nlp/ChineseSegmentation.d.ts.map +1 -1
  149. package/dist/nlp/EspeakPhonemizer.d.ts +1 -1
  150. package/dist/nlp/EspeakPhonemizer.d.ts.map +1 -1
  151. package/dist/nlp/EspeakPhonemizer.js +2 -2
  152. package/dist/nlp/EspeakPhonemizer.js.map +1 -1
  153. package/dist/nlp/IPA.d.ts +2 -2
  154. package/dist/nlp/Segmentation.d.ts +1 -1
  155. package/dist/nlp/Segmentation.d.ts.map +1 -1
  156. package/dist/nlp/Segmentation.js +8 -4
  157. package/dist/nlp/Segmentation.js.map +1 -1
  158. package/dist/recognition/AmazonTranscribeSTT.d.ts +2 -1
  159. package/dist/recognition/AmazonTranscribeSTT.d.ts.map +1 -1
  160. package/dist/recognition/AmazonTranscribeSTT.js +3 -3
  161. package/dist/recognition/AmazonTranscribeSTT.js.map +1 -1
  162. package/dist/recognition/AzureCognitiveServicesSTT.d.ts +2 -1
  163. package/dist/recognition/AzureCognitiveServicesSTT.d.ts.map +1 -1
  164. package/dist/recognition/AzureCognitiveServicesSTT.js +4 -4
  165. package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -1
  166. package/dist/recognition/DeepgramSTT.d.ts +2 -1
  167. package/dist/recognition/DeepgramSTT.d.ts.map +1 -1
  168. package/dist/recognition/DeepgramSTT.js +12 -13
  169. package/dist/recognition/DeepgramSTT.js.map +1 -1
  170. package/dist/recognition/GoogleCloudSTT.d.ts +2 -1
  171. package/dist/recognition/GoogleCloudSTT.d.ts.map +1 -1
  172. package/dist/recognition/GoogleCloudSTT.js +11 -10
  173. package/dist/recognition/GoogleCloudSTT.js.map +1 -1
  174. package/dist/recognition/OpenAICloudSTT.d.ts +2 -1
  175. package/dist/recognition/OpenAICloudSTT.d.ts.map +1 -1
  176. package/dist/recognition/OpenAICloudSTT.js +6 -6
  177. package/dist/recognition/OpenAICloudSTT.js.map +1 -1
  178. package/dist/recognition/WhisperCommon.d.ts +9 -0
  179. package/dist/recognition/WhisperCommon.d.ts.map +1 -0
  180. package/dist/recognition/WhisperCommon.js +52 -0
  181. package/dist/recognition/WhisperCommon.js.map +1 -0
  182. package/dist/recognition/{WhisperCppSTT.d.ts → WhisperCppCliSTT.d.ts} +14 -16
  183. package/dist/recognition/WhisperCppCliSTT.d.ts.map +1 -0
  184. package/dist/recognition/{WhisperCppSTT.js → WhisperCppCliSTT.js} +55 -84
  185. package/dist/recognition/WhisperCppCliSTT.js.map +1 -0
  186. package/dist/recognition/WhisperSTT.d.ts +72 -85
  187. package/dist/recognition/WhisperSTT.d.ts.map +1 -1
  188. package/dist/recognition/WhisperSTT.js +384 -519
  189. package/dist/recognition/WhisperSTT.js.map +1 -1
  190. package/dist/server/Client.d.ts +2 -2
  191. package/dist/server/Client.d.ts.map +1 -1
  192. package/dist/server/Client.js.map +1 -1
  193. package/dist/server/Worker.d.ts +6 -7
  194. package/dist/server/Worker.d.ts.map +1 -1
  195. package/dist/server/Worker.js +42 -44
  196. package/dist/server/Worker.js.map +1 -1
  197. package/dist/source-separation/MDXNetSourceSeparation.d.ts +3 -2
  198. package/dist/source-separation/MDXNetSourceSeparation.d.ts.map +1 -1
  199. package/dist/source-separation/MDXNetSourceSeparation.js +10 -8
  200. package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -1
  201. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts +3 -2
  202. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts.map +1 -1
  203. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js +5 -5
  204. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js.map +1 -1
  205. package/dist/speech-language-detection/SileroLanguageDetection.d.ts +5 -3
  206. package/dist/speech-language-detection/SileroLanguageDetection.d.ts.map +1 -1
  207. package/dist/speech-language-detection/SileroLanguageDetection.js +8 -8
  208. package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -1
  209. package/dist/speech-search/DTWSpeechSearch.d.ts +2 -1
  210. package/dist/speech-search/DTWSpeechSearch.d.ts.map +1 -1
  211. package/dist/speech-search/DTWSpeechSearch.js +4 -4
  212. package/dist/speech-search/DTWSpeechSearch.js.map +1 -1
  213. package/dist/subtitles/Subtitles.d.ts +13 -1
  214. package/dist/subtitles/Subtitles.d.ts.map +1 -1
  215. package/dist/subtitles/Subtitles.js +22 -22
  216. package/dist/subtitles/Subtitles.js.map +1 -1
  217. package/dist/synthesis/AwsPollyTTS.d.ts +3 -2
  218. package/dist/synthesis/AwsPollyTTS.d.ts.map +1 -1
  219. package/dist/synthesis/AwsPollyTTS.js +5 -5
  220. package/dist/synthesis/AwsPollyTTS.js.map +1 -1
  221. package/dist/synthesis/AzureCognitiveServicesTTS.d.ts +2 -1
  222. package/dist/synthesis/AzureCognitiveServicesTTS.d.ts.map +1 -1
  223. package/dist/synthesis/AzureCognitiveServicesTTS.js +3 -3
  224. package/dist/synthesis/AzureCognitiveServicesTTS.js.map +1 -1
  225. package/dist/synthesis/CoquiServerTTS.d.ts +2 -1
  226. package/dist/synthesis/CoquiServerTTS.d.ts.map +1 -1
  227. package/dist/synthesis/CoquiServerTTS.js +7 -8
  228. package/dist/synthesis/CoquiServerTTS.js.map +1 -1
  229. package/dist/synthesis/DeepgramTTS.d.ts +2 -2
  230. package/dist/synthesis/DeepgramTTS.d.ts.map +1 -1
  231. package/dist/synthesis/DeepgramTTS.js +13 -13
  232. package/dist/synthesis/DeepgramTTS.js.map +1 -1
  233. package/dist/synthesis/ElevenLabsTTS.d.ts +3 -3
  234. package/dist/synthesis/ElevenLabsTTS.d.ts.map +1 -1
  235. package/dist/synthesis/ElevenLabsTTS.js +22 -21
  236. package/dist/synthesis/ElevenLabsTTS.js.map +1 -1
  237. package/dist/synthesis/EspeakTTS.d.ts +11 -9
  238. package/dist/synthesis/EspeakTTS.d.ts.map +1 -1
  239. package/dist/synthesis/EspeakTTS.js +118 -68
  240. package/dist/synthesis/EspeakTTS.js.map +1 -1
  241. package/dist/synthesis/FliteTTS.d.ts +2 -2
  242. package/dist/synthesis/FliteTTS.d.ts.map +1 -1
  243. package/dist/synthesis/FliteTTS.js +2 -2
  244. package/dist/synthesis/FliteTTS.js.map +1 -1
  245. package/dist/synthesis/GnuSpeechTTS.d.ts +2 -2
  246. package/dist/synthesis/GnuSpeechTTS.d.ts.map +1 -1
  247. package/dist/synthesis/GnuSpeechTTS.js +1 -1
  248. package/dist/synthesis/GnuSpeechTTS.js.map +1 -1
  249. package/dist/synthesis/GoogleCloudTTS.d.ts +3 -2
  250. package/dist/synthesis/GoogleCloudTTS.d.ts.map +1 -1
  251. package/dist/synthesis/GoogleCloudTTS.js +15 -14
  252. package/dist/synthesis/GoogleCloudTTS.js.map +1 -1
  253. package/dist/synthesis/GoogleTranslateTTS.d.ts +3 -2
  254. package/dist/synthesis/GoogleTranslateTTS.d.ts.map +1 -1
  255. package/dist/synthesis/GoogleTranslateTTS.js +11 -11
  256. package/dist/synthesis/GoogleTranslateTTS.js.map +1 -1
  257. package/dist/synthesis/KokoroTTS.d.ts +4 -4
  258. package/dist/synthesis/KokoroTTS.d.ts.map +1 -1
  259. package/dist/synthesis/KokoroTTS.js +11 -10
  260. package/dist/synthesis/KokoroTTS.js.map +1 -1
  261. package/dist/synthesis/MicrosoftEdgeTTS.d.ts +4 -3
  262. package/dist/synthesis/MicrosoftEdgeTTS.d.ts.map +1 -1
  263. package/dist/synthesis/MicrosoftEdgeTTS.js +41 -20
  264. package/dist/synthesis/MicrosoftEdgeTTS.js.map +1 -1
  265. package/dist/synthesis/OpenAICloudTTS.d.ts +2 -2
  266. package/dist/synthesis/OpenAICloudTTS.d.ts.map +1 -1
  267. package/dist/synthesis/OpenAICloudTTS.js +6 -5
  268. package/dist/synthesis/OpenAICloudTTS.js.map +1 -1
  269. package/dist/synthesis/SamTTS.d.ts +2 -1
  270. package/dist/synthesis/SamTTS.d.ts.map +1 -1
  271. package/dist/synthesis/SamTTS.js +2 -2
  272. package/dist/synthesis/SamTTS.js.map +1 -1
  273. package/dist/synthesis/SapiTTS.d.ts +2 -2
  274. package/dist/synthesis/SapiTTS.d.ts.map +1 -1
  275. package/dist/synthesis/SapiTTS.js +2 -2
  276. package/dist/synthesis/SapiTTS.js.map +1 -1
  277. package/dist/synthesis/SvoxPicoTTS.d.ts +2 -2
  278. package/dist/synthesis/SvoxPicoTTS.d.ts.map +1 -1
  279. package/dist/synthesis/SvoxPicoTTS.js +3 -3
  280. package/dist/synthesis/SvoxPicoTTS.js.map +1 -1
  281. package/dist/synthesis/VitsTTS.d.ts +3 -3
  282. package/dist/synthesis/VitsTTS.d.ts.map +1 -1
  283. package/dist/synthesis/VitsTTS.js +14 -11
  284. package/dist/synthesis/VitsTTS.js.map +1 -1
  285. package/dist/text-translation/DeepLTextTranslation.d.ts +2 -2
  286. package/dist/text-translation/DeepLTextTranslation.d.ts.map +1 -1
  287. package/dist/text-translation/DeepLTextTranslation.js +10 -9
  288. package/dist/text-translation/DeepLTextTranslation.js.map +1 -1
  289. package/dist/text-translation/GoogleTranslateTextTranslation.d.ts +4 -4
  290. package/dist/text-translation/GoogleTranslateTextTranslation.d.ts.map +1 -1
  291. package/dist/text-translation/GoogleTranslateTextTranslation.js +20 -18
  292. package/dist/text-translation/GoogleTranslateTextTranslation.js.map +1 -1
  293. package/dist/text-translation/NLLBTextTranslation.d.ts +2 -2
  294. package/dist/text-translation/NLLBTextTranslation.d.ts.map +1 -1
  295. package/dist/text-translation/NLLBTextTranslation.js +4 -6
  296. package/dist/text-translation/NLLBTextTranslation.js.map +1 -1
  297. package/dist/typings/TypedArray.d.ts.map +1 -1
  298. package/dist/utilities/Compression.d.ts +4 -3
  299. package/dist/utilities/Compression.d.ts.map +1 -1
  300. package/dist/utilities/Compression.js +9 -9
  301. package/dist/utilities/Compression.js.map +1 -1
  302. package/dist/utilities/FileDownloader.d.ts +6 -3
  303. package/dist/utilities/FileDownloader.d.ts.map +1 -1
  304. package/dist/utilities/FileDownloader.js +25 -21
  305. package/dist/utilities/FileDownloader.js.map +1 -1
  306. package/dist/utilities/FileReader.d.ts.map +1 -1
  307. package/dist/utilities/FileReader.js.map +1 -1
  308. package/dist/utilities/FileSystem.js +1 -1
  309. package/dist/utilities/FileSystem.js.map +1 -1
  310. package/dist/utilities/FileWriter.d.ts.map +1 -1
  311. package/dist/utilities/FileWriter.js.map +1 -1
  312. package/dist/utilities/Hashing.d.ts.map +1 -1
  313. package/dist/utilities/Hashing.js.map +1 -1
  314. package/dist/utilities/Locale.js.map +1 -1
  315. package/dist/utilities/Logger.d.ts +17 -9
  316. package/dist/utilities/Logger.d.ts.map +1 -1
  317. package/dist/utilities/Logger.js +50 -35
  318. package/dist/utilities/Logger.js.map +1 -1
  319. package/dist/utilities/NpmUtilities.d.ts.map +1 -1
  320. package/dist/utilities/NpmUtilities.js +4 -5
  321. package/dist/utilities/NpmUtilities.js.map +1 -1
  322. package/dist/utilities/ObjectUtilities.js.map +1 -1
  323. package/dist/utilities/OpenPromise.d.ts.map +1 -1
  324. package/dist/utilities/OpenPromise.js.map +1 -1
  325. package/dist/utilities/PackageManager.d.ts +4 -1
  326. package/dist/utilities/PackageManager.d.ts.map +1 -1
  327. package/dist/utilities/PackageManager.js +37 -22
  328. package/dist/utilities/PackageManager.js.map +1 -1
  329. package/dist/utilities/PathUtilities.d.ts +2 -0
  330. package/dist/utilities/PathUtilities.d.ts.map +1 -1
  331. package/dist/utilities/PathUtilities.js +5 -2
  332. package/dist/utilities/PathUtilities.js.map +1 -1
  333. package/dist/utilities/RandomGenerator.d.ts.map +1 -1
  334. package/dist/utilities/SignalChannel.d.ts.map +1 -1
  335. package/dist/utilities/SmoothEstimator.d.ts.map +1 -1
  336. package/dist/utilities/SmoothEstimator.js.map +1 -1
  337. package/dist/utilities/StringBuilder.d.ts.map +1 -1
  338. package/dist/utilities/TarballMaker.d.ts +4 -3
  339. package/dist/utilities/TarballMaker.d.ts.map +1 -1
  340. package/dist/utilities/TarballMaker.js +6 -6
  341. package/dist/utilities/TarballMaker.js.map +1 -1
  342. package/dist/utilities/Timeline.js.map +1 -1
  343. package/dist/utilities/Timer.d.ts.map +1 -1
  344. package/dist/utilities/Utilities.d.ts +9 -7
  345. package/dist/utilities/Utilities.d.ts.map +1 -1
  346. package/dist/utilities/Utilities.js +49 -33
  347. package/dist/utilities/Utilities.js.map +1 -1
  348. package/dist/utilities/VirtualFileReadStream.d.ts.map +1 -1
  349. package/dist/utilities/WebReader.d.ts +2 -1
  350. package/dist/utilities/WebReader.d.ts.map +1 -1
  351. package/dist/utilities/WebReader.js +7 -6
  352. package/dist/utilities/WebReader.js.map +1 -1
  353. package/dist/utilities/WikipediaReader.d.ts +2 -1
  354. package/dist/utilities/WikipediaReader.d.ts.map +1 -1
  355. package/dist/utilities/WikipediaReader.js +1 -5
  356. package/dist/utilities/WikipediaReader.js.map +1 -1
  357. package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts +2 -1
  358. package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts.map +1 -1
  359. package/dist/voice-activity-detection/AdaptiveGateVAD.js +1 -1
  360. package/dist/voice-activity-detection/AdaptiveGateVAD.js.map +1 -1
  361. package/dist/voice-activity-detection/SileroVAD.d.ts.map +1 -1
  362. package/dist/voice-activity-detection/SileroVAD.js.map +1 -1
  363. package/dist/voice-activity-detection/WebRtcVAD.d.ts.map +1 -1
  364. package/dist/voice-activity-detection/WebRtcVAD.js +1 -1
  365. package/dist/voice-activity-detection/WebRtcVAD.js.map +1 -1
  366. package/docs/API.md +62 -17
  367. package/docs/CUDA.md +4 -3
  368. package/docs/Engines.md +8 -7
  369. package/docs/Licenses.md +0 -3
  370. package/docs/Options.md +27 -31
  371. package/docs/Server.md +1 -0
  372. package/docs/Tasklist.md +2 -1
  373. package/docs/Technical.md +2 -2
  374. package/package.json +45 -35
  375. package/src/alignment/SemanticTextAlignment.ts +14 -7
  376. package/src/alignment/SpeechAlignment.ts +47 -150
  377. package/src/api/APIOptions.ts +1 -1
  378. package/src/api/Alignment.ts +95 -61
  379. package/src/api/Common.ts +11 -0
  380. package/src/api/Denoising.ts +22 -17
  381. package/src/api/GlobalOptions.ts +4 -20
  382. package/src/api/Recognition.ts +106 -123
  383. package/src/api/SourceSeparation.ts +39 -21
  384. package/src/api/SpeechLanguageDetection.ts +77 -37
  385. package/src/api/SpeechSearch.ts +6 -1
  386. package/src/api/SpeechTranslation.ts +75 -38
  387. package/src/api/Synthesis.ts +220 -116
  388. package/src/api/TextLanguageDetection.ts +10 -12
  389. package/src/api/TextTranslation.ts +43 -26
  390. package/src/api/TimelineTranslationAlignment.ts +41 -13
  391. package/src/api/TranscriptAndTranslationAlignment.ts +28 -15
  392. package/src/api/TranslationAlignment.ts +53 -24
  393. package/src/api/VoiceActivityDetection.ts +33 -68
  394. package/src/audio/AudioPlayer.ts +4 -232
  395. package/src/audio/AudioUtilities.ts +9 -2
  396. package/src/build-tools/MakeTarballsForInstalledPackages.ts +4 -3
  397. package/src/cli/CLI.ts +209 -101
  398. package/src/codecs/FFMpegTranscoder.ts +18 -16
  399. package/src/denoising/NSNet2.ts +5 -4
  400. package/src/denoising/RNNoise.ts +14 -6
  401. package/src/dsp/FFT.ts +2 -1
  402. package/src/dsp/MFCC.ts +7 -5
  403. package/src/dsp/MelSpectrogram.ts +56 -36
  404. package/src/dsp/Rubberband.ts +10 -3
  405. package/src/dsp/Sonic.ts +2 -1
  406. package/src/dsp/SpeexResampler.ts +2 -1
  407. package/src/encodings/Ascii.ts +1 -1
  408. package/src/encodings/Base64.ts +1 -1
  409. package/src/math/VectorMath.ts +10 -6
  410. package/src/nlp/EspeakPhonemizer.ts +2 -2
  411. package/src/nlp/Segmentation.ts +9 -4
  412. package/src/recognition/AmazonTranscribeSTT.ts +4 -3
  413. package/src/recognition/AzureCognitiveServicesSTT.ts +5 -4
  414. package/src/recognition/DeepgramSTT.ts +16 -16
  415. package/src/recognition/GoogleCloudSTT.ts +14 -12
  416. package/src/recognition/OpenAICloudSTT.ts +12 -6
  417. package/src/recognition/WhisperCommon.ts +130 -0
  418. package/src/recognition/{WhisperCppSTT.ts → WhisperCppCliSTT.ts} +73 -133
  419. package/src/recognition/WhisperSTT.ts +569 -718
  420. package/src/server/Client.ts +4 -4
  421. package/src/server/Worker.ts +59 -59
  422. package/src/source-separation/MDXNetSourceSeparation.ts +15 -10
  423. package/src/speech-embeddings/WavToVec2BertFeatureEmbeddings.ts +7 -5
  424. package/src/speech-language-detection/SileroLanguageDetection.ts +18 -9
  425. package/src/speech-search/DTWSpeechSearch.ts +6 -5
  426. package/src/subtitles/Subtitles.ts +22 -22
  427. package/src/synthesis/AwsPollyTTS.ts +12 -5
  428. package/src/synthesis/AzureCognitiveServicesTTS.ts +11 -3
  429. package/src/synthesis/CoquiServerTTS.ts +8 -7
  430. package/src/synthesis/DeepgramTTS.ts +21 -15
  431. package/src/synthesis/ElevenLabsTTS.ts +33 -23
  432. package/src/synthesis/EspeakTTS.ts +145 -69
  433. package/src/synthesis/FliteTTS.ts +3 -3
  434. package/src/synthesis/GnuSpeechTTS.ts +2 -2
  435. package/src/synthesis/GoogleCloudTTS.ts +23 -14
  436. package/src/synthesis/GoogleTranslateTTS.ts +19 -11
  437. package/src/synthesis/KokoroTTS.ts +37 -14
  438. package/src/synthesis/MicrosoftEdgeTTS.ts +71 -23
  439. package/src/synthesis/OpenAICloudTTS.ts +7 -6
  440. package/src/synthesis/SamTTS.ts +3 -2
  441. package/src/synthesis/SapiTTS.ts +3 -3
  442. package/src/synthesis/SvoxPicoTTS.ts +4 -5
  443. package/src/synthesis/VitsTTS.ts +43 -15
  444. package/src/text-translation/DeepLTextTranslation.ts +12 -10
  445. package/src/text-translation/GoogleTranslateTextTranslation.ts +35 -21
  446. package/src/text-translation/NLLBTextTranslation.ts +5 -9
  447. package/src/typings/Fillers.d.ts +0 -60
  448. package/src/typings/TypedArray.ts +12 -1
  449. package/src/utilities/Compression.ts +10 -9
  450. package/src/utilities/FileDownloader.ts +38 -23
  451. package/src/utilities/FileSystem.ts +1 -1
  452. package/src/utilities/Logger.ts +59 -42
  453. package/src/utilities/NpmUtilities.ts +4 -6
  454. package/src/utilities/OpenPromise.ts +1 -2
  455. package/src/utilities/PackageManager.ts +53 -26
  456. package/src/utilities/PathUtilities.ts +6 -2
  457. package/src/utilities/TarballMaker.ts +7 -7
  458. package/src/utilities/Utilities.ts +58 -41
  459. package/src/utilities/WebReader.ts +11 -6
  460. package/src/utilities/WikipediaReader.ts +2 -8
  461. package/src/voice-activity-detection/AdaptiveGateVAD.ts +13 -8
  462. package/src/voice-activity-detection/WebRtcVAD.ts +1 -2
  463. package/tsconfig.json +53 -54
  464. package/dist/audio/AudioRecorder.d.ts +0 -4
  465. package/dist/audio/AudioRecorder.d.ts.map +0 -1
  466. package/dist/audio/AudioRecorder.js +0 -68
  467. package/dist/audio/AudioRecorder.js.map +0 -1
  468. package/dist/audio/SoxPath.d.ts +0 -2
  469. package/dist/audio/SoxPath.d.ts.map +0 -1
  470. package/dist/audio/SoxPath.js +0 -24
  471. package/dist/audio/SoxPath.js.map +0 -1
  472. package/dist/recognition/SileroSTT.d.ts +0 -30
  473. package/dist/recognition/SileroSTT.d.ts.map +0 -1
  474. package/dist/recognition/SileroSTT.js +0 -152
  475. package/dist/recognition/SileroSTT.js.map +0 -1
  476. package/dist/recognition/VoskSTT.d.ts +0 -11
  477. package/dist/recognition/VoskSTT.d.ts.map +0 -1
  478. package/dist/recognition/VoskSTT.js +0 -72
  479. package/dist/recognition/VoskSTT.js.map +0 -1
  480. package/dist/recognition/WhisperCppSTT.d.ts.map +0 -1
  481. package/dist/recognition/WhisperCppSTT.js.map +0 -1
  482. package/dist/synthesis/StreamlabsPollyTTS.d.ts +0 -12
  483. package/dist/synthesis/StreamlabsPollyTTS.d.ts.map +0 -1
  484. package/dist/synthesis/StreamlabsPollyTTS.js +0 -88
  485. package/dist/synthesis/StreamlabsPollyTTS.js.map +0 -1
  486. package/dist/utilities/BinaryUtilities.d.ts +0 -14
  487. package/dist/utilities/BinaryUtilities.d.ts.map +0 -1
  488. package/dist/utilities/BinaryUtilities.js +0 -113
  489. package/dist/utilities/BinaryUtilities.js.map +0 -1
  490. package/src/audio/AudioRecorder.ts +0 -91
  491. package/src/audio/SoxPath.ts +0 -31
  492. package/src/recognition/SileroSTT.ts +0 -222
  493. package/src/recognition/VoskSTT.ts +0 -112
  494. package/src/synthesis/StreamlabsPollyTTS.ts +0 -114
  495. package/src/utilities/BinaryUtilities.ts +0 -138
  496. /package/{LICENSE.md → LICENSE.GPLv3.md} +0 -0
@@ -1,113 +0,0 @@
1
- /////////////////////////////////////////////////////////////////////////////////////
2
- // Unsigned operations
3
- /////////////////////////////////////////////////////////////////////////////////////
4
- export function readUint8(buffer, offset) {
5
- return buffer[offset];
6
- }
7
- export function writeUint8(buffer, value, offset) {
8
- if (value < 0 || value > 255) {
9
- throw new Error(`Value ${value} is outside the range of an 8-bit unsigned integer`);
10
- }
11
- buffer[offset] = value;
12
- }
13
- export function readUint16LE(buffer, offset) {
14
- return (buffer[offset]) | (buffer[offset + 1] << 8);
15
- }
16
- export function writeUint16LE(buffer, value, offset) {
17
- if (value < 0 || value > 65535) {
18
- throw new Error(`Value ${value} is outside the range of a 16-bit unsigned integer`);
19
- }
20
- buffer[offset] = value & 0xff;
21
- buffer[offset + 1] = (value >>> 8) & 0xff;
22
- }
23
- export function readUint32LE(buffer, offset) {
24
- return readInt32LE(buffer, offset) >>> 0;
25
- }
26
- export function writeUint32LE(buffer, value, offset) {
27
- if (value < 0 || value > 4294967295) {
28
- throw new Error(`Value ${value} is outside the range of a 32-bit unsigned integer`);
29
- }
30
- buffer[offset] = value & 0xff;
31
- buffer[offset + 1] = (value >>> 8) & 0xff;
32
- buffer[offset + 2] = (value >>> 16) & 0xff;
33
- buffer[offset + 3] = (value >>> 24) & 0xff;
34
- }
35
- /////////////////////////////////////////////////////////////////////////////////////
36
- // Signed operations
37
- /////////////////////////////////////////////////////////////////////////////////////
38
- export function readInt8(buffer, offset) {
39
- const unsignedValue = buffer[offset];
40
- if (unsignedValue < 128) {
41
- return unsignedValue;
42
- }
43
- else {
44
- return unsignedValue - 256;
45
- }
46
- }
47
- export function writeInt8(buffer, value, offset) {
48
- if (value < -128 || value > 127) {
49
- throw new Error(`Value ${value} is outside the range of an 8-bit signed integer`);
50
- }
51
- let unsignedValue;
52
- if (value >= 0) {
53
- unsignedValue = value;
54
- }
55
- else {
56
- unsignedValue = value + 256;
57
- }
58
- buffer[offset] = unsignedValue;
59
- }
60
- export function readInt16LE(buffer, offset) {
61
- const unsignedValue = readUint16LE(buffer, offset);
62
- if (unsignedValue < 32768) {
63
- return unsignedValue;
64
- }
65
- else {
66
- return unsignedValue - 65536;
67
- }
68
- }
69
- export function writeInt16LE(buffer, value, offset) {
70
- if (value < -32768 || value > 32767) {
71
- throw new Error(`Value ${value} is outside the range of a 16-bit signed integer`);
72
- }
73
- let unsignedValue;
74
- if (value >= 0) {
75
- unsignedValue = value;
76
- }
77
- else {
78
- unsignedValue = value + 65536;
79
- }
80
- writeUint16LE(buffer, unsignedValue, offset);
81
- }
82
- export function readInt32LE(buffer, offset) {
83
- const value = (buffer[offset]) |
84
- (buffer[offset + 1] << 8) |
85
- (buffer[offset + 2] << 16) |
86
- (buffer[offset + 3] << 24);
87
- return value;
88
- }
89
- export function writeInt32LE(buffer, value, offset) {
90
- if (value < -2147483648 || value > 2147483647) {
91
- throw new Error(`Value ${value} is outside the range of a 32-bit signed integer`);
92
- }
93
- buffer[offset] = value & 0xff;
94
- buffer[offset + 1] = (value >> 8) & 0xff;
95
- buffer[offset + 2] = (value >> 16) & 0xff;
96
- buffer[offset + 3] = (value >> 24) & 0xff;
97
- }
98
- /////////////////////////////////////////////////////////////////////////////////////
99
- // Misc operations
100
- /////////////////////////////////////////////////////////////////////////////////////
101
- export function writeAscii(buffer, asciiString, writeStartOffset) {
102
- const writeEndOffset = Math.min(writeStartOffset + asciiString.length, buffer.length);
103
- let readOffset = 0;
104
- let writeOffset = writeStartOffset;
105
- while (writeOffset < writeEndOffset) {
106
- const charCode = asciiString.charCodeAt(readOffset++);
107
- if (charCode >= 128) {
108
- throw new Error(`Character '${asciiString[readOffset]}' (code: ${charCode}) can't be encoded as ASCII`);
109
- }
110
- buffer[writeOffset++] = charCode;
111
- }
112
- }
113
- //# sourceMappingURL=BinaryUtilities.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BinaryUtilities.js","sourceRoot":"","sources":["../../src/utilities/BinaryUtilities.ts"],"names":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- import { spawn } from 'child_process'
2
-
3
- import { RawAudio, concatAudioSegments } from './AudioUtilities.js'
4
- import * as AudioBufferConversion from './AudioBufferConversion.js'
5
-
6
- import { Timer } from '../utilities/Timer.js'
7
- import { logToStderr } from '../utilities/Utilities.js'
8
- import { OpenPromise } from '../utilities/OpenPromise.js'
9
- import { tryResolvingSoxPath } from './SoxPath.js'
10
- import { SampleFormat } from './AudioBufferConversion.js'
11
-
12
- const log = logToStderr
13
-
14
- export async function recordAudioInput(channelCount = 1, sampleRate = 48000, maxTime = 10) {
15
- const audioSegments: Float32Array[][] = []
16
-
17
- await captureAudioInput(channelCount, sampleRate, maxTime, (rawAudio) => {
18
- audioSegments.push(rawAudio)
19
- })
20
-
21
- const mergedAudio = concatAudioSegments(audioSegments)
22
-
23
- const rawAudio: RawAudio = {
24
- audioChannels: mergedAudio,
25
- sampleRate
26
- }
27
-
28
- return rawAudio
29
- }
30
-
31
- export function captureAudioInput(channelCount = 1, sampleRate = 48000, maxTime = -1, onAudioSamples?: (rawAudio: Float32Array[]) => void) {
32
- return new Promise<void>(async (resolve, reject) => {
33
- const timer = new Timer()
34
-
35
- const recorderSpawnedOpenPromise = new OpenPromise<null>()
36
-
37
- const soxPath = await tryResolvingSoxPath()
38
-
39
- if (!soxPath) {
40
- throw new Error('Could not resolve a SoX executable')
41
- }
42
-
43
- let args: string[]
44
-
45
- if (process.platform == 'win32') {
46
- args = ['-b', `${16}`, '--endian', 'little',
47
- '-c', `${channelCount}`, '-r', `${sampleRate}`, '-e', 'signed',
48
- '-t', 'waveaudio', 'default', '-t', 'raw', '-']
49
- } else if (process.platform == 'darwin') {
50
- args = ['-b', `${16}`, '--endian', 'little',
51
- '-c', `${channelCount}`, '-r', `${sampleRate}`, '-e', 'signed',
52
- '-t', 'raw', '-']
53
- } else {
54
- throw new Error('')
55
- }
56
-
57
- const recorder = spawn(
58
- soxPath,
59
- args,
60
- {}
61
- )
62
-
63
- recorder.once('spawn', () => {
64
- recorderSpawnedOpenPromise.resolve(null)
65
- timer.restart()
66
- })
67
-
68
- recorder.once('close', () => {
69
- resolve()
70
- })
71
-
72
- recorder.stderr.on('data', (chunk) => {
73
- //log(chunk.toString('utf8'))
74
- })
75
-
76
- recorder.stdout.on('data', (chunk) => {
77
- //log(chunk)
78
-
79
- const audioChannels = AudioBufferConversion.decodeToChannels(chunk, channelCount, 16, SampleFormat.PCM)
80
-
81
- if (onAudioSamples) {
82
- onAudioSamples(audioChannels)
83
- }
84
-
85
- if (maxTime >= 0 && timer.elapsedTimeSeconds >= maxTime) {
86
- recorder.kill()
87
- resolve()
88
- }
89
- })
90
- })
91
- }
@@ -1,31 +0,0 @@
1
- import { loadPackage } from '../utilities/PackageManager.js'
2
- import { commandExists } from '../utilities/Utilities.js'
3
- import { getGlobalOption } from '../api/GlobalOptions.js'
4
- import { joinPath } from '../utilities/PathUtilities.js'
5
-
6
- export async function tryResolvingSoxPath() {
7
- if (getGlobalOption('soxPath')) {
8
- return getGlobalOption('soxPath')
9
- }
10
-
11
- const platform = process.platform
12
- const arch = process.arch
13
-
14
- if (platform === 'win32') {
15
- const soxPackagePath = await loadPackage('sox-14.4.1a-win32')
16
-
17
- return joinPath(soxPackagePath, 'sox.exe')
18
- }
19
-
20
- if (await commandExists('sox')) {
21
- return 'sox'
22
- }
23
-
24
- if (platform === 'linux' && arch === 'x64') {
25
- const soxPackagePath = await loadPackage('sox-14.4.2-linux-minimal')
26
-
27
- return joinPath(soxPackagePath, 'sox')
28
- }
29
-
30
- return undefined
31
- }
@@ -1,222 +0,0 @@
1
- import { indexOfMax } from '../math/VectorMath.js'
2
- import { wordCharacterRegExp } from '../nlp/Segmentation.js'
3
- import { Logger } from '../utilities/Logger.js'
4
- import { logToStderr } from '../utilities/Utilities.js'
5
- import { Timeline } from '../utilities/Timeline.js'
6
- import { RawAudio, getRawAudioDuration } from '../audio/AudioUtilities.js'
7
- import { readAndParseJsonFile } from '../utilities/FileSystem.js'
8
-
9
- import type * as Onnx from 'onnxruntime-node'
10
- import { OnnxExecutionProvider, getOnnxSessionOptions } from '../utilities/OnnxUtilities.js'
11
- import { joinPath } from '../utilities/PathUtilities.js'
12
-
13
- const log = logToStderr
14
-
15
- export async function recognize(
16
- rawAudio: RawAudio,
17
- modelDirectoryPath: string,
18
- executionProviders: OnnxExecutionProvider[]) {
19
-
20
- const silero = new SileroSTT(modelDirectoryPath, executionProviders)
21
-
22
- const result = await silero.recognize(rawAudio)
23
-
24
- return result
25
- }
26
-
27
- export class SileroSTT {
28
- session?: Onnx.InferenceSession
29
- labels?: string[]
30
-
31
- constructor(
32
- public readonly modelDirectoryPath: string,
33
- public readonly executionProviders: OnnxExecutionProvider[]
34
- ) {
35
- }
36
-
37
- async recognize(rawAudio: RawAudio) {
38
- const logger = new Logger()
39
-
40
- await this.initializeIfNeeded()
41
-
42
- logger.start('Recognize with silero model')
43
-
44
- const audioSamples = rawAudio.audioChannels[0]
45
-
46
- const Onnx = await import('onnxruntime-node')
47
-
48
- const inputTensor = new Onnx.Tensor('float32', audioSamples, [1, audioSamples.length])
49
- const inputs = { input: inputTensor }
50
-
51
- const results = await this.session!.run(inputs)
52
-
53
- const rawResultValues = results['output'].data as Float32Array
54
-
55
- const labels = this.labels!
56
-
57
- const tokenResults: Float32Array[] = []
58
-
59
- for (let i = 0; i < rawResultValues.length; i += labels.length) {
60
- tokenResults.push(rawResultValues.subarray(i, i + labels.length))
61
- }
62
-
63
- const tokens: string[] = []
64
-
65
- for (const tokenResult of tokenResults) {
66
- const bestCandidateIndex = indexOfMax(new Array(...tokenResult))
67
- tokens.push(labels[bestCandidateIndex])
68
- }
69
-
70
- //log(tokens.join('|'))
71
-
72
- const result = this.tokensToTimeline(tokens, getRawAudioDuration(rawAudio))
73
-
74
- logger.end()
75
-
76
- return result
77
- }
78
-
79
- private async initializeIfNeeded() {
80
- if (this.session) {
81
- return
82
- }
83
-
84
- const logger = new Logger()
85
-
86
- logger.start('Create ONNX inference session')
87
-
88
- const Onnx = await import('onnxruntime-node')
89
-
90
- const modelPath = joinPath(this.modelDirectoryPath, 'model.onnx')
91
- const labelsPath = joinPath(this.modelDirectoryPath, 'labels.json')
92
-
93
- this.labels = await readAndParseJsonFile(labelsPath)
94
-
95
- const onnxSessionOptions = getOnnxSessionOptions({ executionProviders: this.executionProviders })
96
-
97
- this.session = await Onnx.InferenceSession.create(modelPath, onnxSessionOptions)
98
-
99
- logger.end()
100
- }
101
-
102
- private tokensToTimeline(tokens: string[], totalDuration: number) {
103
- const tokenCount = tokens.length
104
-
105
- const decodedTokens: string[] = []
106
- let tokenGroupIndexes: number[][] = [[]]
107
-
108
- for (let i = 0; i < tokenCount; i++) {
109
- const token = tokens[i]
110
-
111
- if (token == '2') {
112
- if (decodedTokens.length > 0) {
113
- const previousDecodedToken = decodedTokens[decodedTokens.length - 1]
114
- decodedTokens.push('$')
115
- decodedTokens.push(previousDecodedToken)
116
-
117
- tokenGroupIndexes[tokenGroupIndexes.length - 1].push(i)
118
- } else {
119
- decodedTokens.push(' ')
120
- tokenGroupIndexes.push([])
121
- }
122
-
123
- continue
124
- }
125
-
126
- if (token == '_') {
127
- continue
128
- }
129
-
130
- decodedTokens.push(token)
131
-
132
- if (token == ' ') {
133
- tokenGroupIndexes.push([])
134
- } else {
135
- tokenGroupIndexes[tokenGroupIndexes.length - 1].push(i)
136
- }
137
- }
138
-
139
- let decodedString = ''
140
-
141
- for (let i = 0; i < decodedTokens.length; i++) {
142
- const currentToken = decodedTokens[i]
143
- const previousToken = decodedTokens[i - 1]
144
-
145
- if (currentToken != '$' && (previousToken != currentToken || previousToken == undefined)) {
146
- decodedString += currentToken
147
- }
148
- }
149
-
150
- decodedString = decodedString.trim()
151
-
152
- tokenGroupIndexes = tokenGroupIndexes.filter(group => group.length > 0)
153
-
154
- if (tokenGroupIndexes.length > 0) {
155
- let currentCorrection = Math.min(tokenGroupIndexes[0][0], 1.5)
156
-
157
- for (let i = 0; i < tokenGroupIndexes.length; i++) {
158
- const group = tokenGroupIndexes[i]
159
-
160
- if (group.length == 1) {
161
- group.push(group[0])
162
- }
163
-
164
- group[0] -= currentCorrection
165
-
166
- if (i == tokenGroupIndexes.length - 1) {
167
- currentCorrection = Math.min(tokenCount - i, 1.5)
168
- } else {
169
- currentCorrection = Math.min((tokenGroupIndexes[i + 1][0] - group[group.length - 1]) / 2, 1.5)
170
- }
171
-
172
- group[group.length - 1] += currentCorrection
173
- }
174
- }
175
-
176
- const words = decodedString.split(' ')
177
-
178
- const timeMultiplier = totalDuration / tokenCount
179
-
180
- const timeline: Timeline = []
181
-
182
- for (let i = 0; i < words.length; i++) {
183
- const text = words[i]
184
-
185
- if (!wordCharacterRegExp.test(text)) {
186
- continue
187
- }
188
-
189
- const group = tokenGroupIndexes[i]
190
- const startTime = group[0] * timeMultiplier
191
- const endTime = group[group.length - 1] * timeMultiplier
192
-
193
- timeline.push({
194
- type: 'word',
195
- text: text,
196
- startTime,
197
- endTime,
198
- })
199
- }
200
-
201
- timeline[timeline.length - 1].endTime = totalDuration
202
-
203
- return { transcript: decodedString, timeline }
204
- }
205
- }
206
-
207
- export const languageCodeToPackageName: { [languageCode: string]: string } = {
208
- 'en': 'silero-en-v5',
209
- 'es': 'silero-es-v1',
210
- 'de': 'silero-de-v1',
211
- 'uk': 'silero-ua-v3',
212
- }
213
-
214
- export interface SileroRecognitionOptions {
215
- modelPath?: string
216
- provider?: OnnxExecutionProvider
217
- }
218
-
219
- export const defaultSileroRecognitionOptions: SileroRecognitionOptions = {
220
- modelPath: undefined,
221
- provider: undefined,
222
- }
@@ -1,112 +0,0 @@
1
- import * as FFMpegTranscoder from '../codecs/FFMpegTranscoder.js'
2
- import * as AudioBufferConversion from '../audio/AudioBufferConversion.js'
3
- import { Logger } from '../utilities/Logger.js'
4
- import { concatUint8Arrays, logToStderr } from '../utilities/Utilities.js'
5
- import { Timeline } from '../utilities/Timeline.js'
6
- import { RawAudio } from '../audio/AudioUtilities.js'
7
-
8
- const log = logToStderr
9
-
10
- export async function recognizeFile(filename: string, modelPath: string, verbose = true) {
11
- const rawAudio = await FFMpegTranscoder.decodeToChannels(filename, 16000, 1)
12
- return recognize(rawAudio, modelPath, verbose)
13
- }
14
-
15
- export async function recognize(rawAudio: RawAudio, modelPath: string, verbose = true) {
16
- const logger = new Logger()
17
- logger.start('Initialize vosk recognizer')
18
-
19
- const audioChannels = rawAudio.audioChannels
20
- const sampleRate = rawAudio.sampleRate
21
-
22
- let Vosk = await import('@echogarden/vosk')
23
-
24
- Vosk.setLogLevel(-1)
25
-
26
- const model = await new Vosk.Model(modelPath)
27
-
28
- const recognizer = new Vosk.Recognizer({ model, sampleRate })
29
-
30
- recognizer.setMaxAlternatives(0)
31
- recognizer.setWords(true)
32
- recognizer.setPartialWords(true)
33
-
34
- logger.start('Recognize with vosk')
35
-
36
- const recognitionStartTimestamp = logger.getTimestamp()
37
-
38
- const pcmAudio = AudioBufferConversion.encodeToAudioBuffer(audioChannels, 16)
39
- const trailingSilence = new Uint8Array(sampleRate * 4)
40
- const pcmAudioWithTrailingSilence = concatUint8Arrays([pcmAudio, trailingSilence])
41
- const pcmAudioByteCount = pcmAudioWithTrailingSilence.length
42
-
43
- const maxChunkSize = sampleRate * 2.0
44
-
45
- let previousResultText = ''
46
-
47
- for (let readOffset = 0; readOffset < pcmAudioByteCount; readOffset += maxChunkSize) {
48
- const chunkSize = Math.min(maxChunkSize, pcmAudioByteCount - readOffset)
49
-
50
- const chunk = pcmAudioWithTrailingSilence.subarray(readOffset, readOffset + chunkSize)
51
-
52
- const speechEnded = await recognizer.acceptWaveformAsync(chunk)
53
-
54
- if (verbose) {
55
- const partialResultText = recognizer.partialResult().partial
56
-
57
- if (partialResultText != previousResultText) {
58
- //logger.log(partialResultText)
59
- //logger.log('')
60
-
61
- previousResultText = partialResultText
62
- }
63
- }
64
- }
65
-
66
- //const speechEnded = await recognizer.acceptWaveformAsync(pcmAudioWithTrailingSilence)
67
-
68
- const result = recognizer.finalResult()
69
-
70
- recognizer.reset()
71
- recognizer.free()
72
- model.free()
73
-
74
- const transcript: string = result.text
75
- const events: VoskRecognitionEvent[] = result.result
76
-
77
- if (events.length == 0) {
78
- return { transcript, timeline: [] }
79
- }
80
-
81
- const timeline: Timeline = []
82
-
83
- for (let i = 0; i < events.length; i++) {
84
- const event = events[i]
85
-
86
- const eventText = event.word
87
- const eventStart = event.start
88
- const eventEnd = event.end
89
- const eventConfidence = event.conf
90
-
91
- timeline.push({
92
- type: 'word',
93
- text: eventText,
94
- startTime: eventStart,
95
- endTime: eventEnd,
96
- confidence: eventConfidence
97
- })
98
- }
99
-
100
- //logger.logDuration(`Recognition with vosk`, recognitionStartTimestamp)
101
-
102
- logger.end()
103
-
104
- return { transcript, timeline }
105
- }
106
-
107
- type VoskRecognitionEvent = {
108
- word: string
109
- start: number
110
- end: number
111
- conf: number
112
- }
@@ -1,114 +0,0 @@
1
- import { request } from 'gaxios'
2
- import { SynthesisVoice } from '../api/API.js'
3
- import { trimAudioEnd } from '../audio/AudioUtilities.js'
4
- import * as FFMpegTranscoder from '../codecs/FFMpegTranscoder.js'
5
- import { Phrase, splitToFragments } from '../nlp/Segmentation.js'
6
- import { Logger } from '../utilities/Logger.js'
7
- import { concatFloat32Arrays, logToStderr } from '../utilities/Utilities.js'
8
- import { Timeline } from '../utilities/Timeline.js'
9
-
10
- const log = logToStderr
11
-
12
- const maxTextLengthPerRequest = 200
13
-
14
- export async function synthesizeLongText(text: string, voice: string, languageCode: string, sentenceEndPause = 0.75, segmentEndPause = 1.0) {
15
- if (text.length == 0) {
16
- throw new Error('Text is empty')
17
- }
18
-
19
- const logger = new Logger()
20
- logger.start('Prepare and split text')
21
-
22
- const fragments = await splitToFragments(text, maxTextLengthPerRequest, languageCode)
23
-
24
- const audioFragments: Float32Array[] = []
25
- let fragmentsSampleRate = 0
26
-
27
- const timeline: Timeline = []
28
-
29
- for (let i = 0; i < fragments.length; i++) {
30
- const fragment = fragments[i]
31
-
32
- logger.start(`Request synthesis for text fragment ${i + 1}/${fragments.length} from Streamslabs Polly`)
33
- const fragmentMp3Stream = await synthesizeFragment(fragment.text, voice)
34
-
35
- if (fragmentMp3Stream.length == 0) {
36
- continue
37
- }
38
-
39
- const rawAudio = await FFMpegTranscoder.decodeToChannels(fragmentMp3Stream, 24000, 1)
40
- fragmentsSampleRate = rawAudio.sampleRate
41
-
42
- let targetEndingSilenceTime: number
43
-
44
- if (fragment.lastSegment?.isSentenceFinalizer) {
45
- targetEndingSilenceTime = sentenceEndPause
46
- } else if (fragment.lastSegment instanceof Phrase) {
47
- targetEndingSilenceTime = segmentEndPause
48
- } else {
49
- targetEndingSilenceTime = 0
50
- }
51
-
52
- const trimmedAudio = trimAudioEnd(rawAudio.audioChannels[0], targetEndingSilenceTime * rawAudio.sampleRate)
53
-
54
- audioFragments.push(trimmedAudio)
55
-
56
- const startTime = timeline.length == 0 ? 0 : timeline[timeline.length - 1].endTime
57
- const endTime = startTime + (trimmedAudio.length / fragmentsSampleRate)
58
-
59
- timeline.push({
60
- type: 'segment',
61
- text: fragment.text,
62
- startTime,
63
- endTime
64
- })
65
- }
66
-
67
- const rawAudio = { audioChannels: [concatFloat32Arrays(audioFragments)], sampleRate: fragmentsSampleRate }
68
-
69
- logger.end()
70
-
71
- return {
72
- rawAudio,
73
- timeline
74
- }
75
- }
76
-
77
- export async function synthesizeFragment(text: string, voice: string) {
78
- const response = await request<any>({
79
- url: `https://streamlabs.com/polly/speak`,
80
-
81
- method: 'POST',
82
-
83
- data: {
84
- voice,
85
- text,
86
- },
87
-
88
- responseType: 'json'
89
- })
90
-
91
- const responseObject = response.data
92
- const audioUrl = responseObject.speak_url
93
- const audioUrlResponse = await request<ArrayBuffer>({ url: audioUrl, responseType: 'arraybuffer' })
94
-
95
- return new Uint8Array(audioUrlResponse.data)
96
- }
97
-
98
- export const voiceList: SynthesisVoice[] = [
99
- { name: 'Brian', languages: ['en-GB', 'en'], gender: 'male' },
100
- { name: 'Emma', languages: ['en-GB', 'en'], gender: 'female' },
101
- { name: 'Russell', languages: ['en-AU', 'en'], gender: 'male' },
102
- { name: 'Joey', languages: ['en-US', 'en'], gender: 'male' },
103
- { name: 'Matthew', languages: ['en-US', 'en'], gender: 'male' },
104
- { name: 'Joanna', languages: ['en-US', 'en'], gender: 'female' },
105
- { name: 'Kimberly', languages: ['en-US', 'en'], gender: 'female' },
106
- { name: 'Amy', languages: ['en-GB', 'en'], gender: 'female' },
107
- { name: 'Geraint', languages: ['en-GB-WLS', 'en-GB', 'en'], gender: 'male' },
108
- { name: 'Nicole', languages: ['en-AU', 'en'], gender: 'female' },
109
- { name: 'Justin', languages: ['en-US', 'en'], gender: 'male' },
110
- { name: 'Ivy', languages: ['en-US', 'en'], gender: 'female' },
111
- { name: 'Kendra', languages: ['en-US', 'en'], gender: 'female' },
112
- { name: 'Salli', languages: ['en-US', 'en'], gender: 'female' },
113
- { name: 'Raveena', languages: ['en-IN', 'en'], gender: 'female' },
114
- ]