echogarden 0.12.2 → 1.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 (334) hide show
  1. package/README.md +15 -14
  2. package/data/schemas/options.json +398 -111
  3. package/dist/alignment/DTWMfccSequenceAlignment.d.ts +1 -1
  4. package/dist/alignment/DTWMfccSequenceAlignment.js +8 -8
  5. package/dist/alignment/DTWSequenceAlignment.d.ts +1 -1
  6. package/dist/alignment/DTWSequenceAlignment.js +1 -1
  7. package/dist/alignment/DTWSequenceAlignmentWindowed.d.ts +1 -1
  8. package/dist/alignment/DTWSequenceAlignmentWindowed.js +2 -2
  9. package/dist/alignment/LevenshteinSequenceAlignment.d.ts +1 -1
  10. package/dist/alignment/LevenshteinSequenceAlignment.js +1 -1
  11. package/dist/alignment/SpeechAlignment.d.ts +9 -10
  12. package/dist/alignment/SpeechAlignment.js +136 -105
  13. package/dist/alignment/SpeechAlignment.js.map +1 -1
  14. package/dist/api/API.d.ts +13 -12
  15. package/dist/api/API.js +14 -13
  16. package/dist/api/API.js.map +1 -1
  17. package/dist/api/APIOptions.d.ts +5 -4
  18. package/dist/api/Alignment.d.ts +15 -9
  19. package/dist/api/Alignment.js +88 -74
  20. package/dist/api/Alignment.js.map +1 -1
  21. package/dist/api/Common.js +1 -1
  22. package/dist/api/Denoising.d.ts +6 -6
  23. package/dist/api/Denoising.js +23 -23
  24. package/dist/api/Denoising.js.map +1 -1
  25. package/dist/api/LanguageDetection.d.ts +19 -12
  26. package/dist/api/LanguageDetection.js +88 -38
  27. package/dist/api/LanguageDetection.js.map +1 -1
  28. package/dist/api/Recognition.d.ts +16 -6
  29. package/dist/api/Recognition.js +129 -55
  30. package/dist/api/Recognition.js.map +1 -1
  31. package/dist/api/SourceSeparation.d.ts +17 -0
  32. package/dist/api/SourceSeparation.js +61 -0
  33. package/dist/api/SourceSeparation.js.map +1 -0
  34. package/dist/api/Synthesis.d.ts +18 -18
  35. package/dist/api/Synthesis.js +191 -164
  36. package/dist/api/Synthesis.js.map +1 -1
  37. package/dist/api/Translation.d.ts +19 -8
  38. package/dist/api/Translation.js +132 -35
  39. package/dist/api/Translation.js.map +1 -1
  40. package/dist/api/Vad.d.ts +10 -5
  41. package/dist/api/Vad.js +76 -38
  42. package/dist/api/Vad.js.map +1 -1
  43. package/dist/audio/AudioBufferConversion.d.ts +1 -1
  44. package/dist/audio/AudioBufferConversion.js +4 -4
  45. package/dist/audio/AudioPlayer.d.ts +1 -1
  46. package/dist/audio/AudioPlayer.js +26 -26
  47. package/dist/audio/AudioPlayer.js.map +1 -1
  48. package/dist/audio/AudioRecorder.d.ts +1 -1
  49. package/dist/audio/AudioRecorder.js +5 -5
  50. package/dist/audio/AudioUtilities.d.ts +13 -9
  51. package/dist/audio/AudioUtilities.js +86 -24
  52. package/dist/audio/AudioUtilities.js.map +1 -1
  53. package/dist/cli/CLI.d.ts +3 -3
  54. package/dist/cli/CLI.js +271 -162
  55. package/dist/cli/CLI.js.map +1 -1
  56. package/dist/cli/CLIConfigFile.js +8 -8
  57. package/dist/cli/CLILauncher.js +6 -6
  58. package/dist/cli/CLIOptionsSchema.js +2 -2
  59. package/dist/cli/CLIParser.js +5 -5
  60. package/dist/cli/CLIStarter.js +4 -4
  61. package/dist/codecs/FFMpegTranscoder.d.ts +2 -2
  62. package/dist/codecs/FFMpegTranscoder.js +37 -37
  63. package/dist/codecs/FFMpegTranscoder.js.map +1 -1
  64. package/dist/codecs/TIMITCodec.js +5 -5
  65. package/dist/codecs/WaveCodec.d.ts +1 -1
  66. package/dist/codecs/WaveCodec.js +22 -22
  67. package/dist/denoising/RNNoise.d.ts +1 -1
  68. package/dist/denoising/RNNoise.js +9 -9
  69. package/dist/dsp/BiquadFilter.d.ts +3 -2
  70. package/dist/dsp/BiquadFilter.js +18 -11
  71. package/dist/dsp/BiquadFilter.js.map +1 -1
  72. package/dist/dsp/DecayingPeakEstimator.d.ts +16 -0
  73. package/dist/dsp/DecayingPeakEstimator.js +23 -0
  74. package/dist/dsp/DecayingPeakEstimator.js.map +1 -0
  75. package/dist/dsp/FFT.d.ts +8 -4
  76. package/dist/dsp/FFT.js +76 -30
  77. package/dist/dsp/FFT.js.map +1 -1
  78. package/dist/dsp/KWeightingFilter.d.ts +9 -0
  79. package/dist/dsp/KWeightingFilter.js +40 -0
  80. package/dist/dsp/KWeightingFilter.js.map +1 -0
  81. package/dist/dsp/LoudnessEstimator.d.ts +21 -0
  82. package/dist/dsp/LoudnessEstimator.js +47 -0
  83. package/dist/dsp/LoudnessEstimator.js.map +1 -0
  84. package/dist/dsp/MFCC.d.ts +2 -2
  85. package/dist/dsp/MFCC.js +15 -15
  86. package/dist/dsp/MelSpectogram.d.ts +1 -1
  87. package/dist/dsp/MelSpectogram.js +6 -6
  88. package/dist/dsp/Rubberband.d.ts +11 -11
  89. package/dist/dsp/Rubberband.js +27 -27
  90. package/dist/dsp/Sonic.d.ts +1 -1
  91. package/dist/dsp/Sonic.js +3 -3
  92. package/dist/dsp/SpeexResampler.d.ts +1 -1
  93. package/dist/dsp/SpeexResampler.js +2 -2
  94. package/dist/math/VectorMath.d.ts +12 -8
  95. package/dist/math/VectorMath.js +35 -32
  96. package/dist/math/VectorMath.js.map +1 -1
  97. package/dist/nlp/ChineseSegmentation.js +2 -2
  98. package/dist/nlp/CompromiseNLP.js +3 -3
  99. package/dist/nlp/EspeakPhonemizer.js +30 -30
  100. package/dist/nlp/IPA.js +20 -20
  101. package/dist/nlp/JapaneseSegmentation.js +6 -6
  102. package/dist/nlp/Lexicon.d.ts +1 -1
  103. package/dist/nlp/Lexicon.js +7 -7
  104. package/dist/nlp/Segmentation.d.ts +3 -0
  105. package/dist/nlp/Segmentation.js +21 -14
  106. package/dist/nlp/Segmentation.js.map +1 -1
  107. package/dist/nlp/TextNormalizer.js +16 -16
  108. package/dist/recognition/AmazonTranscribeSTT.d.ts +2 -2
  109. package/dist/recognition/AmazonTranscribeSTT.js +13 -14
  110. package/dist/recognition/AmazonTranscribeSTT.js.map +1 -1
  111. package/dist/recognition/AzureCognitiveServicesSTT.js +5 -6
  112. package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -1
  113. package/dist/recognition/GoogleCloudSTT.d.ts +3 -3
  114. package/dist/recognition/GoogleCloudSTT.js +18 -18
  115. package/dist/recognition/OpenAICloudSTT.d.ts +19 -0
  116. package/dist/recognition/OpenAICloudSTT.js +81 -0
  117. package/dist/recognition/OpenAICloudSTT.js.map +1 -0
  118. package/dist/recognition/SileroSTT.d.ts +2 -2
  119. package/dist/recognition/SileroSTT.js +25 -25
  120. package/dist/recognition/VoskSTT.d.ts +2 -2
  121. package/dist/recognition/VoskSTT.js +8 -8
  122. package/dist/recognition/WhisperCppSTT.d.ts +88 -0
  123. package/dist/recognition/WhisperCppSTT.js +332 -0
  124. package/dist/recognition/WhisperCppSTT.js.map +1 -0
  125. package/dist/recognition/WhisperSTT.d.ts +49 -25
  126. package/dist/recognition/WhisperSTT.js +626 -481
  127. package/dist/recognition/WhisperSTT.js.map +1 -1
  128. package/dist/server/Client.d.ts +1 -1
  129. package/dist/server/Client.js +22 -22
  130. package/dist/server/Server.js +9 -9
  131. package/dist/server/Server.js.map +1 -1
  132. package/dist/server/Worker.d.ts +22 -22
  133. package/dist/server/Worker.js +36 -36
  134. package/dist/server/Worker.js.map +1 -1
  135. package/dist/server/WorkerStarter.js +2 -2
  136. package/dist/source-separation/MDXNetSourceSeparation.d.ts +11 -0
  137. package/dist/source-separation/MDXNetSourceSeparation.js +161 -0
  138. package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -0
  139. package/dist/speech-language-detection/SileroLanguageDetection.d.ts +1 -1
  140. package/dist/speech-language-detection/SileroLanguageDetection.js +7 -7
  141. package/dist/subtitles/Subtitles.d.ts +10 -0
  142. package/dist/subtitles/Subtitles.js +2 -2
  143. package/dist/subtitles/Subtitles.js.map +1 -1
  144. package/dist/synthesis/AwsPollyTTS.d.ts +1 -1
  145. package/dist/synthesis/AwsPollyTTS.js +12 -12
  146. package/dist/synthesis/AzureCognitiveServicesTTS.js +7 -7
  147. package/dist/synthesis/CoquiServerTTS.js +10 -10
  148. package/dist/synthesis/CoquiServerTTS.js.map +1 -1
  149. package/dist/synthesis/ElevenlabsTTS.d.ts +23 -0
  150. package/dist/synthesis/ElevenlabsTTS.js +103 -0
  151. package/dist/synthesis/ElevenlabsTTS.js.map +1 -0
  152. package/dist/synthesis/EspeakTTS.d.ts +6 -5
  153. package/dist/synthesis/EspeakTTS.js +81 -69
  154. package/dist/synthesis/EspeakTTS.js.map +1 -1
  155. package/dist/synthesis/FliteTTS.d.ts +3 -3
  156. package/dist/synthesis/FliteTTS.js +154 -154
  157. package/dist/synthesis/FliteTTS.js.map +1 -1
  158. package/dist/synthesis/GoogleCloudTTS.d.ts +3 -3
  159. package/dist/synthesis/GoogleCloudTTS.js +17 -17
  160. package/dist/synthesis/GoogleCloudTTS.js.map +1 -1
  161. package/dist/synthesis/GoogleTranslateTTS.d.ts +1 -1
  162. package/dist/synthesis/GoogleTranslateTTS.js +103 -103
  163. package/dist/synthesis/MicrosoftEdgeTTS.d.ts +2 -2
  164. package/dist/synthesis/MicrosoftEdgeTTS.js +74 -74
  165. package/dist/synthesis/OpenAICloudTTS.d.ts +13 -0
  166. package/dist/synthesis/OpenAICloudTTS.js +169 -0
  167. package/dist/synthesis/OpenAICloudTTS.js.map +1 -0
  168. package/dist/synthesis/SamTTS.js +3 -3
  169. package/dist/synthesis/SapiTTS.d.ts +3 -3
  170. package/dist/synthesis/SapiTTS.js +26 -26
  171. package/dist/synthesis/StreamlabsPollyTTS.d.ts +2 -2
  172. package/dist/synthesis/StreamlabsPollyTTS.js +27 -27
  173. package/dist/synthesis/SvoxPicoTTS.d.ts +2 -2
  174. package/dist/synthesis/SvoxPicoTTS.js +65 -65
  175. package/dist/synthesis/SvoxPicoTTS.js.map +1 -1
  176. package/dist/synthesis/VitsTTS.d.ts +3 -3
  177. package/dist/synthesis/VitsTTS.js +378 -378
  178. package/dist/synthesis/VitsTTS.js.map +1 -1
  179. package/dist/tests/Test.js +2 -2
  180. package/dist/utilities/Compression.d.ts +5 -0
  181. package/dist/utilities/Compression.js +29 -13
  182. package/dist/utilities/Compression.js.map +1 -1
  183. package/dist/utilities/FileDownloader.d.ts +1 -1
  184. package/dist/utilities/FileDownloader.js +16 -16
  185. package/dist/utilities/FileSystem.js +7 -7
  186. package/dist/utilities/Locale.d.ts +7 -7
  187. package/dist/utilities/Locale.js +15 -15
  188. package/dist/utilities/Logger.js +3 -3
  189. package/dist/utilities/ObjectUtilities.js +19 -19
  190. package/dist/utilities/OpenPromise.js +2 -2
  191. package/dist/utilities/OpenPromise.js.map +1 -1
  192. package/dist/utilities/PackageManager.js +31 -0
  193. package/dist/utilities/PackageManager.js.map +1 -1
  194. package/dist/utilities/PathUtilities.js +8 -8
  195. package/dist/utilities/RandomGenerator.js +2 -2
  196. package/dist/utilities/SmoothEstimator.d.ts +8 -0
  197. package/dist/utilities/SmoothEstimator.js +25 -0
  198. package/dist/utilities/SmoothEstimator.js.map +1 -0
  199. package/dist/utilities/TarballMaker.js +8 -8
  200. package/dist/utilities/Timeline.d.ts +3 -2
  201. package/dist/utilities/Timeline.js +11 -11
  202. package/dist/utilities/Timeline.js.map +1 -1
  203. package/dist/utilities/Timer.js +4 -4
  204. package/dist/utilities/Utilities.d.ts +4 -0
  205. package/dist/utilities/Utilities.js +38 -15
  206. package/dist/utilities/Utilities.js.map +1 -1
  207. package/dist/utilities/WasmMemoryManager.js +7 -7
  208. package/dist/utilities/WebReader.js +23 -23
  209. package/dist/utilities/WikipediaReader.js +2 -2
  210. package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts +28 -0
  211. package/dist/voice-activity-detection/AdaptiveGateVAD.js +138 -0
  212. package/dist/voice-activity-detection/AdaptiveGateVAD.js.map +1 -0
  213. package/dist/voice-activity-detection/SileroVAD.d.ts +1 -1
  214. package/dist/voice-activity-detection/SileroVAD.js +5 -5
  215. package/dist/voice-activity-detection/SileroVAD.js.map +1 -1
  216. package/dist/voice-activity-detection/WebRtcVAD.d.ts +1 -1
  217. package/dist/voice-activity-detection/WebRtcVAD.js +4 -4
  218. package/docs/API.md +29 -11
  219. package/docs/CLI.md +31 -7
  220. package/docs/Contributing.md +38 -0
  221. package/docs/Development.md +93 -19
  222. package/docs/Engines.md +28 -16
  223. package/docs/Licenses.md +4 -1
  224. package/docs/Options.md +158 -78
  225. package/docs/Releases.md +262 -0
  226. package/docs/Server.md +7 -7
  227. package/docs/Tasklist.md +95 -76
  228. package/docs/Technical.md +4 -4
  229. package/package.json +13 -14
  230. package/src/alignment/DTWMfccSequenceAlignment.ts +9 -9
  231. package/src/alignment/DTWSequenceAlignment.ts +2 -2
  232. package/src/alignment/DTWSequenceAlignmentWindowed.ts +3 -3
  233. package/src/alignment/LevenshteinSequenceAlignment.ts +2 -2
  234. package/src/alignment/SpeechAlignment.ts +204 -119
  235. package/src/api/API.ts +14 -13
  236. package/src/api/APIOptions.ts +12 -11
  237. package/src/api/Alignment.ts +147 -90
  238. package/src/api/Common.ts +1 -1
  239. package/src/api/Denoising.ts +28 -28
  240. package/src/api/LanguageDetection.ts +135 -48
  241. package/src/api/Recognition.ts +198 -59
  242. package/src/api/SourceSeparation.ts +99 -0
  243. package/src/api/Synthesis.ts +217 -181
  244. package/src/api/Translation.ts +193 -40
  245. package/src/api/Vad.ts +110 -41
  246. package/src/audio/AudioBufferConversion.ts +4 -4
  247. package/src/audio/AudioPlayer.ts +27 -27
  248. package/src/audio/AudioRecorder.ts +5 -5
  249. package/src/audio/AudioUtilities.ts +107 -24
  250. package/src/cli/CLI.ts +313 -164
  251. package/src/cli/CLIConfigFile.ts +8 -8
  252. package/src/cli/CLILauncher.ts +6 -6
  253. package/src/cli/CLIOptionsSchema.ts +2 -2
  254. package/src/cli/CLIParser.ts +5 -5
  255. package/src/cli/CLIStarter.ts +4 -4
  256. package/src/codecs/FFMpegTranscoder.ts +38 -38
  257. package/src/codecs/TIMITCodec.ts +5 -5
  258. package/src/codecs/WaveCodec.ts +22 -22
  259. package/src/denoising/RNNoise.ts +9 -9
  260. package/src/dsp/BiquadFilter.ts +19 -11
  261. package/src/dsp/DecayingPeakEstimator.ts +35 -0
  262. package/src/dsp/FFT.ts +103 -35
  263. package/src/dsp/KWeightingFilter.ts +43 -0
  264. package/src/dsp/LoudnessEstimator.ts +74 -0
  265. package/src/dsp/MFCC.ts +15 -15
  266. package/src/dsp/MelSpectogram.ts +7 -7
  267. package/src/dsp/Rubberband.ts +38 -38
  268. package/src/dsp/Sonic.ts +4 -4
  269. package/src/dsp/SpeexResampler.ts +2 -2
  270. package/src/math/VectorMath.ts +42 -33
  271. package/src/nlp/ChineseSegmentation.ts +3 -3
  272. package/src/nlp/CompromiseNLP.ts +3 -3
  273. package/src/nlp/EspeakPhonemizer.ts +30 -30
  274. package/src/nlp/IPA.ts +20 -20
  275. package/src/nlp/JapaneseSegmentation.ts +6 -6
  276. package/src/nlp/Lexicon.ts +8 -8
  277. package/src/nlp/Segmentation.ts +23 -14
  278. package/src/nlp/TextNormalizer.ts +16 -16
  279. package/src/recognition/AmazonTranscribeSTT.ts +16 -17
  280. package/src/recognition/AzureCognitiveServicesSTT.ts +8 -6
  281. package/src/recognition/GoogleCloudSTT.ts +21 -21
  282. package/src/recognition/OpenAICloudSTT.ts +142 -0
  283. package/src/recognition/SileroSTT.ts +26 -26
  284. package/src/recognition/VoskSTT.ts +10 -10
  285. package/src/recognition/WhisperCppSTT.ts +555 -0
  286. package/src/recognition/WhisperSTT.ts +760 -507
  287. package/src/server/Client.ts +23 -23
  288. package/src/server/Server.ts +9 -9
  289. package/src/server/Worker.ts +53 -53
  290. package/src/server/WorkerStarter.ts +2 -2
  291. package/src/source-separation/MDXNetSourceSeparation.ts +228 -0
  292. package/src/speech-language-detection/SileroLanguageDetection.ts +8 -8
  293. package/src/subtitles/Subtitles.ts +3 -3
  294. package/src/synthesis/AwsPollyTTS.ts +14 -14
  295. package/src/synthesis/AzureCognitiveServicesTTS.ts +10 -10
  296. package/src/synthesis/CoquiServerTTS.ts +10 -10
  297. package/src/synthesis/ElevenlabsTTS.ts +137 -0
  298. package/src/synthesis/EspeakTTS.ts +90 -71
  299. package/src/synthesis/FliteTTS.ts +157 -157
  300. package/src/synthesis/GoogleCloudTTS.ts +19 -19
  301. package/src/synthesis/GoogleTranslateTTS.ts +104 -104
  302. package/src/synthesis/MicrosoftEdgeTTS.ts +80 -80
  303. package/src/synthesis/OpenAICloudTTS.ts +196 -0
  304. package/src/synthesis/SamTTS.ts +3 -3
  305. package/src/synthesis/SapiTTS.ts +29 -29
  306. package/src/synthesis/StreamlabsPollyTTS.ts +29 -29
  307. package/src/synthesis/SvoxPicoTTS.ts +67 -67
  308. package/src/synthesis/VitsTTS.ts +380 -380
  309. package/src/tests/Test.ts +4 -4
  310. package/src/utilities/Compression.ts +34 -13
  311. package/src/utilities/FileDownloader.ts +19 -19
  312. package/src/utilities/FileSystem.ts +7 -7
  313. package/src/utilities/Locale.ts +22 -22
  314. package/src/utilities/Logger.ts +4 -4
  315. package/src/utilities/ObjectUtilities.ts +19 -19
  316. package/src/utilities/OpenPromise.ts +2 -2
  317. package/src/utilities/PackageManager.ts +40 -0
  318. package/src/utilities/PathUtilities.ts +8 -8
  319. package/src/utilities/RandomGenerator.ts +3 -3
  320. package/src/utilities/SmoothEstimator.ts +35 -0
  321. package/src/utilities/TarballMaker.ts +9 -9
  322. package/src/utilities/Timeline.ts +15 -13
  323. package/src/utilities/Timer.ts +4 -4
  324. package/src/utilities/Utilities.ts +49 -15
  325. package/src/utilities/WasmMemoryManager.ts +7 -7
  326. package/src/utilities/WebReader.ts +23 -23
  327. package/src/utilities/WikipediaReader.ts +2 -2
  328. package/src/voice-activity-detection/AdaptiveGateVAD.ts +202 -0
  329. package/src/voice-activity-detection/SileroVAD.ts +5 -5
  330. package/src/voice-activity-detection/WebRtcVAD.ts +5 -5
  331. package/dist/synthesis/ElevenLabsTTS.d.ts +0 -8
  332. package/dist/synthesis/ElevenLabsTTS.js +0 -82
  333. package/dist/synthesis/ElevenLabsTTS.js.map +0 -1
  334. package/src/synthesis/ElevenLabsTTS.ts +0 -104
package/docs/Engines.md CHANGED
@@ -1,10 +1,11 @@
1
1
 
2
2
  # Supported engines
3
3
 
4
- ## Text to speech
4
+ ## Text-to-speech
5
5
 
6
6
  **Offline**:
7
- * [VITS](https://github.com/jaywalnut310/vits) (`vits`): a high-quality end-to-end neural speech synthesis architecture. Available models were trained by Michael Hansen as part of his [Piper speech synthesis system](https://github.com/rhasspy/piper). Currently there are 117 voices, in a range of languages, including English (US, UK), Spanish (ES, MX), Portuguese (PT, BR), Italian, French, German, Dutch (NL, BE), Swedish, Norwegian, Danish, Finnish, Polish, Greek, Romanian, Serbian, Czech, Hungarian, Slovak, Slovenian, Turkish, Arabic, Farsi, Russian, Ukrainian, Catalan, Luxemburgish, Icelandic, Swahili, Kazakh, Georgian, Nepali, Vietnamese and Chinese. You can listen to audio samples of all voices and languages in [Piper's samples page](https://rhasspy.github.io/piper-samples/).
7
+
8
+ * [VITS](https://github.com/jaywalnut310/vits) (`vits`): a high-quality end-to-end neural speech synthesis architecture. Available models were trained by Michael Hansen as part of his [Piper speech synthesis system](https://github.com/rhasspy/piper). Currently, there are 117 voices, in a range of languages, including English (US, UK), Spanish (ES, MX), Portuguese (PT, BR), Italian, French, German, Dutch (NL, BE), Swedish, Norwegian, Danish, Finnish, Polish, Greek, Romanian, Serbian, Czech, Hungarian, Slovak, Slovenian, Turkish, Arabic, Farsi, Russian, Ukrainian, Catalan, Luxembourgish, Icelandic, Swahili, Kazakh, Georgian, Nepali, Vietnamese and Chinese. You can listen to audio samples of all voices and languages in [Piper's samples page](https://rhasspy.github.io/piper-samples/).
8
9
  * [SVOX Pico](https://github.com/naggety/picotts) (`pico`): a legacy diphone-based synthesis engine. Supports English (US, UK), Spanish, Italian, French, and German.
9
10
  * [Flite](https://github.com/festvox/flite) (`flite`): a legacy diphone-based synthesis engine. Supports English (US, Scottish), and several Indic languages: Hindi, Bengali, Marathi, Telugu, Tamil, Gujarati, Kannada and Punjabi.
10
11
  * [eSpeak-NG](https://github.com/espeak-ng/espeak-ng/) (`espeak`): a lightweight "robot" sounding formant-based synthesizer. Supports 100+ languages. Extensively used internally for speech alignment, phonemization, and other internal tasks.
@@ -16,11 +17,12 @@
16
17
 
17
18
  * [Microsoft Speech Platform](https://www.microsoft.com/en-us/download/details.aspx?id=27225) (`msspeech`): Microsoft Server Speech API. Requires [installing a runtime (2.6MB)](https://www.microsoft.com/en-us/download/details.aspx?id=27225). Supports 28 dialects, which can be individually downloaded via [freely available installers](https://www.microsoft.com/en-us/download/details.aspx?id=27224), or, for convenience, bundled as [a single 358MB zip file](https://drive.google.com/u/0/uc?id=1uQdFNxLzUxpaEwVVKhMawys8cIh3F21T&export=download). Has voices for English (US, UK, AU, CA), Spanish (ES, MX), Portuguese (BR, PT), German, French (FR, CA), Italian, Norwegian, Dutch, Russian, Swedish, Danish, Catalan, Finnish, Japanese, Korean and Chinese (ZH, HK, TW). All voices are female.
18
19
 
19
- _Note_: both these engines require manually installing the [`winax` npm package](https://www.npmjs.com/package/winax) by running `npm install winax -g`.
20
+ **Note**: both these engines require manually installing the [`winax` npm package](https://www.npmjs.com/package/winax) by running `npm install winax -g`.
21
+
22
+ `winax` is a native module which requires the Node.js Windows build tools to successfully install. If you have issues installing this package, please ensure that you've checked the "install necessary tools" checkbox during the installation of Node.js.
20
23
 
21
- `winax` is a native module which requires the Node.js Windows build tools to successfully install. If you have issues installing this package, please ensure that you've checked the "install necessary tools" checkbox during the installation of node.js.
24
+ **Client for self-hosted or remote servers**:
22
25
 
23
- **Client for remote or self-hosted servers**:
24
26
  * [Coqui TTS](https://github.com/coqui-ai/TTS) server (`coqui-server`)
25
27
 
26
28
  **Cloud services**:
@@ -30,20 +32,22 @@ These are commercial services that require a subscription and an API key to use:
30
32
  * [Google Cloud](https://cloud.google.com/text-to-speech) (`google-cloud`)
31
33
  * [Azure Cognitive Services](https://azure.microsoft.com/en-us/products/cognitive-services/text-to-speech/) (`microsoft-azure`)
32
34
  * [Amazon Polly](https://aws.amazon.com/polly/) (`amazon-polly`)
35
+ * [OpenAI Cloud](https://platform.openai.com/) (`openai-cloud`)
33
36
  * [Elevenlabs](https://elevenlabs.io/) (`elevenlabs`)
34
37
 
35
38
  **Cloud services (unofficial)**:
36
39
 
37
- These cloud-based engines connect to public-facing cloud APIs that are not officially publicized by their operators. They are included for educational purposes only, and may be removed in the future:
40
+ These cloud-based engines connect to public cloud APIs that are not officially publicized by their operators. They are included for educational purposes only, and may be removed in the future:
38
41
 
39
42
  * Google Translate (`google-translate`): used by the [Google Translate web UI](https://translate.google.com/) to speak written text in any one of its supported languages. Offers a single voice for each language (usually female).
40
43
  * Microsoft Edge (`microsoft-edge`): subset of the Azure Cognitive Services cloud TTS API used by the Microsoft Edge browser as part of its support for the [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) and its [Read Aloud](https://www.microsoft.com/en-us/edge/features/read-aloud?form=MT00D8) feature. Using this engine requires a special token, which should be passed via the `microsoftEdge.trustedClientToken` option.
41
- * Streamlabs Polly (`streamlabs-polly`): a public REST API by Streamlabs, primarily intended for generating speech for TTS donations. It includes a few English (US, UK, AU, IN) voices, which are similar to some of the non-neural (Ivona-based) voices offered by Amazon Polly.
44
+ * Streamlabs Polly (`streamlabs-polly`): a public REST API by Streamlabs, primarily intended for generating speech for TTS donations. It includes a few English (US, UK, AU, IN) voices, which are similar to some of the non-neural (Ivona-based) voices offered by Amazon Polly (**Note**: as of April 2024, the public Streamlabs Polly REST API doesn't seem to be accessible anymore).
42
45
 
43
- ## Speech to text
46
+ ## Speech-to-text
44
47
 
45
48
  **Offline**:
46
- * [OpenAI Whisper](https://github.com/openai/whisper) (`whisper`): high accuracy transformer-based architecture. Supports 99 languages. There are several models of different sizes, some are multilingual, and some are English only (`.en`): `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium`, `medium.en`, `large`, `large-v1` and `large-v2`. _Note_: large models are not currently auto-downloaded as Echogarden packages, but may become available in the future.
49
+ * [OpenAI Whisper](https://github.com/openai/whisper) (`whisper`): high accuracy transformer-based speech recognition architecture. Supports 99 languages. There are several models of different sizes, some are multilingual, and some are English only (`.en`): `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium`, `medium.en`, `large`, `large-v1` and `large-v2`, `large-v3`. **Note**: large models are not currently supported by `onnxruntime-node` due to model size restrictions.
50
+ * [Whisper.cpp](https://github.com/ggerganov/whisper.cpp) (`whisper.cpp`): a port of the Whisper architecture to C++, by Georgi Gerganov. Supports all Whisper models, including several quantized ones (see full list in the options page). Has various different builds, including CUDA and OpenCL for GPU support.
47
51
  * [Vosk](https://github.com/alphacep/vosk-api) (`vosk`): models available for 25+ languages. _Note_: the Vosk package is not included in the default installation, but you can add support for it using `npm install @echogarden/vosk -g`. Then, you'll need to manually [download a model](https://alphacephei.com/vosk/models) and specify its directory path via the `vosk.modelPath` option.
48
52
  * [Silero](https://github.com/snakers4/silero-models) (`silero`): models available for English, Spanish, German and Ukrainian. For [non-commercial use only](https://github.com/snakers4/silero-models/blob/master/LICENSE).
49
53
 
@@ -54,24 +58,27 @@ These are commercial services that require a subscription and an API key to use:
54
58
  * [Google Cloud](https://cloud.google.com/speech-to-text) (`google-cloud`)
55
59
  * [Azure Cognitive Services](https://azure.microsoft.com/en-us/products/cognitive-services/speech-to-text/) (`microsoft-azure`)
56
60
  * [Amazon Transcribe](https://aws.amazon.com/transcribe/) (`amazon-transcribe`)
61
+ * [OpenAI Cloud](https://platform.openai.com/) (`openai-cloud`)
57
62
 
58
- ## Speech to transcript alignment
63
+ ## Speech-to-transcript alignment
59
64
 
60
65
  These engines' goal is to match (or "align") a given spoken recording with a given transcript as closely as possible. They will annotate each word in the transcript with approximate start and end timestamps:
61
66
 
62
- * Dynamic Time Warping (`dtw`): transcript is first synthesized using the eSpeak engine, then [DTW](https://en.wikipedia.org/wiki/Dynamic_time_warping) is applied to find the best mapping between the synthesized audio and the original audio.
63
- * Dynamic Time Warping with Recognition Assist (`dtw-ra`): recognition is applied to the audio (any recognition engine can be used), then both the ground-truth transcript and the recognized transcript are synthesized using eSpeak. Then, the best mapping is found between the two synthesized audio sequences, and the result is mapped back to the original audio using the timing information produced by the recognizer.
64
- * Whisper-based alignment (`whisper`): transcript is tokenized and decoded along with the audio using the Whisper model, then timestamps are extracted from the internal state of the model (_note_: currently, only supports audio inputs that are 30 seconds or less).
67
+ * Dynamic Time Warping (`dtw`): transcript is first synthesized using the eSpeak engine, then the [DTW](https://en.wikipedia.org/wiki/Dynamic_time_warping) alignment algorithm is applied to find the best mapping between the synthesized and original audio frames.
68
+ * Dynamic Time Warping with Recognition Assist (`dtw-ra`): recognition is applied to the audio (any recognition engine can be used), then both the ground-truth transcript and the recognized transcript are synthesized using eSpeak. Then, the best mapping is found between the two synthesized waveforms, and the result is mapped back to the original audio using the timing information produced by the recognizer.
69
+ * Whisper-based alignment (`whisper`): transcript is tokenized and decoded along with the audio using the Whisper model, then timestamps are extracted from the internal state of the model. **Note**: currently, only supports audio inputs that are 30 seconds or less. Some words or special characters may fail to tokenize due to limitations of the tokenizer used by Whisper.
65
70
 
66
- ## Speech translation
71
+ ## Speech-to-text translation
67
72
 
68
- * [Whisper](https://github.com/openai/whisper) (`whisper`): the Whisper model can transcribe speech in any one of its supported languages and output a transcript directly translated to English. Other languages are not supported as targets.
73
+ * [Whisper](https://github.com/openai/whisper) (`whisper`): the Whisper model can recognize speech in any one of its supported languages and output a transcript directly translated to English. Other languages are not supported as targets.
74
+ * [Whisper.cpp](https://github.com/ggerganov/whisper.cpp) (`whisper.cpp`): supports translation to English
75
+ * [OpenAI Cloud](https://platform.openai.com/) (`openai-cloud`): OpenAI cloud service. Only translates to English.
69
76
 
70
77
  ## Language detection
71
78
 
72
79
  **Spoken language detection**:
73
80
  * [Silero Language Classifier](https://github.com/snakers4/silero-vad/wiki/Other-Models) (`silero`): a speech language classification model by Silero.
74
- * [Whisper](https://github.com/openai/whisper) (`whisper`): uses the language token produced by the `whisper` speech recognition model to generate a set of probabilities for the 99 languages it has been trained on (_note_: currently only uses the first 30 seconds of the audio).
81
+ * [Whisper](https://github.com/openai/whisper) (`whisper`): uses the language token produced by the `whisper` speech recognition model to generate a set of probabilities for the 99 languages it has been trained on.
75
82
 
76
83
  **Text language detection**:
77
84
  * [TinyLD](https://www.npmjs.com/package/tinyld) (`tinyld`): a simple language detection library.
@@ -82,7 +89,12 @@ These engines' goal is to match (or "align") a given spoken recording with a giv
82
89
  * [WebRTC VAD](https://github.com/dpirch/libfvad) (`webrtc`): a voice activity detector. Originally from the Chromium browser source code.
83
90
  * [Silero VAD](https://github.com/snakers4/silero-vad) (`silero`): a voice activity detection model by Silero.
84
91
  * [RNNoise](https://github.com/xiph/rnnoise) (`rnnoise`): uses RNNoise's speech probabilities output for each audio frame as a VAD metric.
92
+ * Adaptive Gate (`adaptive-gate`): uses a band-limited adaptive gate to identify activity in the lower voice frequencies. Reliable, but will often pass non-vocal sounds if they are loud enough. Good for clean speech and a cappella singing, where most non-vocal segments are quiet.
85
93
 
86
94
  ## Speech denoising
87
95
 
88
96
  * [RNNoise](https://github.com/xiph/rnnoise) (`rnnoise`): a noise suppression library based on a recurrent neural network.
97
+
98
+ ## Source separation
99
+
100
+ * [MDX-NET](https://github.com/kuielab/mdx-net) (`mdx-net`): Deep learning source separation architecture by [KUIELAB (Korea University)](https://kuielab.github.io/).
package/docs/Licenses.md CHANGED
@@ -3,6 +3,7 @@
3
3
  ## Engines and libraries:
4
4
 
5
5
  * `onnxruntime-node`: [MIT License](https://github.com/microsoft/onnxruntime/blob/main/LICENSE)
6
+ * `whisper.cpp`: [MIT License](https://github.com/ggerganov/whisper.cpp/blob/master/LICENSE)
6
7
  * `espeak`: [GNU GPL v3](https://github.com/espeak-ng/espeak-ng/blob/master/COPYING)
7
8
  * `flite`: [BSD License](https://github.com/festvox/flite/blob/master/COPYING)
8
9
  * `pico`: [Apache License 2.0](https://github.com/gmn/nanotts/blob/master/LICENSE)
@@ -32,7 +33,9 @@ All are freely distributable, with varying licenses:
32
33
  * Silero speech recognition models (`silero-en-`, `silero-de-`, `silero-es-`, `silero-ua-`): [BY-NC-SA](https://github.com/snakers4/silero-models/blob/master/LICENSE)
33
34
  * VITS pre-trained models (`vits-`): licensed under various creative commons licenses: [CC0](https://creativecommons.org/share-your-work/public-domain/cc0/), [CC-BY](https://creativecommons.org/licenses/by/4.0/) and [BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/), and few are public domain (you can view the individual license for each model in the model cards on the [samples page](https://rhasspy.github.io/piper-samples/)). The [Piper system](https://github.com/rhasspy/piper) itself is published under the [MIT License](https://github.com/rhasspy/piper/blob/master/LICENSE.md)
34
35
  * Whisper pre-trained models (`whisper-`): [MIT License](https://github.com/openai/whisper/blob/main/LICENSE)
36
+ * MDX-NET source separation models (`mdxnet-`): [MIT License](https://github.com/kuielab/mdx-net/blob/main/LICENSE)
35
37
 
36
38
  Tool binary distributions:
37
- * FFMpeg: [LGPL, GPL v2 and GPL v3 Licenses](https://github.com/FFmpeg/FFmpeg)
39
+ * FFmpeg: [LGPL, GPL v2 and GPL v3 Licenses](https://github.com/FFmpeg/FFmpeg)
38
40
  * SoX: [GPL v2 License](https://github.com/chirlu/sox/blob/master/LICENSE.GPL)
41
+ * whisper.cpp: [MIT License](https://github.com/ggerganov/whisper.cpp/blob/master/LICENSE)
package/docs/Options.md CHANGED
@@ -1,20 +1,20 @@
1
- # Configuration options reference
1
+ # Options reference
2
2
 
3
- Here is a detailed reference for the options accepted by the Echogarden API and CLI.
3
+ Here's a detailed reference for all the options accepted by the Echogarden CLI and API.
4
4
 
5
- **Related resources**:
6
- * [A comprehensive list of all supported engines](Engines.md)
7
- * [A quick guide for using the command line interface](CLI.md)
8
- * [Developer's API reference](API.md)
5
+ **Related pages**:
6
+ * [List of all supported engines](Engines.md)
7
+ * [Quick guide for the command line interface](CLI.md)
8
+ * [Node.js API reference](API.md)
9
9
 
10
- ## Synthesis
10
+ ## Text-to-speech
11
11
 
12
- Applicable to CLI commands: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`, API method: `synthesize`
12
+ Applies to CLI operations: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`, API method: `synthesize`
13
13
 
14
14
  **General**:
15
- * `engine`: identifier of the synthesis engine to use, such as `espeak` or `vits`.
15
+ * `engine`: identifier of the synthesis engine to use, such as `espeak`, `vits` or `google-translate` (see [the full engine list](Engines.md)). Auto-selected if not set
16
16
  * `language`: language code ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)), like `en`, `fr`, `en-US`, `pt-BR`. Auto-detected if not set
17
- * `voice`: name of the voice to use. Can be a search string. Optional
17
+ * `voice`: name of the voice to use. Can be a search string. Auto-selected if not set
18
18
  * `voiceGender`: gender of the voice to use. Optional
19
19
  * `speed`: speech rate factor, relative to default. In the range `0.1`..`10.0`. Defaults to `1.0`
20
20
  * `pitch`: pitch factor, relative to default. In the range `0.1`..`10.0`. Defaults to `1.0`
@@ -23,9 +23,10 @@ Applicable to CLI commands: `speak`, `speak-file`, `speak-url`, `speak-wikipedia
23
23
  * `ssml`: the input is SSML. Defaults to `false`
24
24
  * `sentenceEndPause`: pause duration (seconds) at end of sentence. Defaults to `0.75`
25
25
  * `segmentEndPause`: pause duration (seconds) at end of segment. Defaults to `1.0`
26
- * `customLexiconPaths`: an array of custom lexicon file paths. Optional
27
- * `alignment`: prefix to provide custom options for alignment. Options detailed in section for alignment
28
- * `languageDetection`: prefix to provide custom options for language detection. Options detailed in section for text language detection
26
+ * `customLexiconPaths`: a list of custom lexicon file paths. Optional
27
+ * `alignment`: prefix to provide options for alignment. Options detailed in section for alignment
28
+ * `subtitles`: prefix to provide options for subtitles. Options detailed in section for subtitles
29
+ * `languageDetection`: prefix to provide options for text language detection. Options detailed in section for text language detection
29
30
 
30
31
  **Plain text processing**:
31
32
  * `plainText.paragraphBreaks`: split to paragraphs based on single (`single`), or double (`double`) line breaks. Defaults to `double`
@@ -33,22 +34,16 @@ Applicable to CLI commands: `speak`, `speak-file`, `speak-url`, `speak-wikipedia
33
34
 
34
35
  **Post-processing**:
35
36
  * `postProcessing.normalizeAudio`: should normalize output audio. Defaults to `true`
36
- * `postProcessing.targetPeakDb`: target peak (decibels) for normalization. Defaults to `-3`
37
- * `postProcessing.maxIncreaseDb`: max gain increase (decibels) when performing normalization. Defaults to `30`
37
+ * `postProcessing.targetPeak`: target peak (decibels) for normalization. Defaults to `-3`
38
+ * `postProcessing.maxGainIncrease`: max gain increase (decibels) when performing normalization. Defaults to `30`
38
39
  * `postProcessing.speed`: target speed for time stretching. Defaults to `1.0`
39
40
  * `postProcessing.pitch`: target pitch for pitch shifting. Defaults to `1.0`
40
41
  * `postProcessing.timePitchShiftingMethod`: method for time and pitch shifting. Can be `sonic` or `rubberband`. Defaults to `sonic`
41
- * `postProcessing.rubberband`: prefix for RubberBand options (TODO)
42
+ * `postProcessing.rubberband`: prefix for RubberBand options (TODO: document options)
42
43
 
43
44
  **Output audio format**:
44
- * `outputAudioFormat.codec`: Codec identifier (**Note**: API only! CLI uses file extension instead), can be `wav`, `mp3`, `opus`, `m4a`, `ogg`, `flac`. Leaving as `undefined` would return a raw audio structure (see more information at the API documentation). Optional
45
- * `outputAudioFormat.bitrate`: Custom bitrate for encoding, applies only to `mp3`, `opus`, `m4a`, `ogg`. By default, bitrates are selected between 48Kbps and 64Kbps, to provide a good speech quality while minimizing file size. Optional
46
-
47
- **Subtitles**
48
- * `subtitles.maxLineCount`: maximum number of lines per cue. Defaults to `2`
49
- * `subtitles.maxLineWidth`: maximum characters in a line. Defaults to `42`
50
- * `subtitles.minWordsInLine`: minimum number of words in a line, such that a line break can be added. Defaults to `4`
51
- * `subtitles.maxAddedDuration`: maximum extra time (in seconds) that may be added after a cue's speech end time. This also ensures that very short-duration segments aren't shown in a flash. Defaults to `3`
45
+ * `outputAudioFormat.codec`: Codec identifier (**Note**: API only. CLI uses file extensions instead), can be `wav`, `mp3`, `opus`, `m4a`, `ogg`, `flac`. Leaving as `undefined` would return a raw audio structure (see more information at the [API documentation](API.md]). Optional
46
+ * `outputAudioFormat.bitrate`: Custom bitrate for encoding, applies only to `mp3`, `opus`, `m4a`, `ogg`. By default, bitrates are selected between 48Kbps and 64Kbps, to provide a good speech quality while minimizing file size. Optional
52
47
 
53
48
  **VITS**:
54
49
  * `vits.speakerId`: speaker ID, for VITS models that support multiple speakers. Optional
@@ -69,7 +64,7 @@ Applicable to CLI commands: `speak`, `speak-file`, `speak-url`, `speak-wikipedia
69
64
  * `sapi.rate`: SAPI speech rate, in its native units. An integer number between `-10` and `10`. Setting `speed` would apply time stretching instead. The two options can be used together
70
65
 
71
66
  **Microsoft Speech Platform**:
72
- * `msspeech.rate`: same units and effects as the SAPI speech rate
67
+ * `msspeech.rate`: same units and effects as the SAPI speech rate
73
68
 
74
69
  **Coqui Server**:
75
70
  * `coquiServer.serverUrl`: server URL
@@ -91,7 +86,15 @@ Applicable to CLI commands: `speak`, `speak-file`, `speak-url`, `speak-wikipedia
91
86
  * `amazonPolly.accessKeyId`: access key ID (required)
92
87
  * `amazonPolly.secretAccessKey`: secret access key (required)
93
88
  * `amazonPolly.pollyEngine`: Amazon Polly engine kind, can be `standard` or `neural`. Defaults to `neural`
94
- * `amazonPolly.lexiconNames`: An array of lexicon names. Optional
89
+ * `amazonPolly.lexiconNames`: an array of lexicon names. Optional
90
+
91
+ **OpenAI Cloud**:
92
+ * `openAICloud.apiKey`: API key (required)
93
+ * `openAICloud.organization`: organization identifier. Optional
94
+ * `openAICloud.baseURL`: override the default base URL for the API. Optional
95
+ * `openAICloud.model`: model to use. Can be either `tts-1` or `tts-1-hd`. Defaults to `tts-1`
96
+ * `openAICloud.timeout`: request timeout. Optional
97
+ * `openAICloud.maxRetries`: maximum retries on failure. Defaults to 10
95
98
 
96
99
  **Elevenlabs**:
97
100
  * `elevenLabs.apiKey`: API key (required)
@@ -99,7 +102,7 @@ Applicable to CLI commands: `speak`, `speak-file`, `speak-url`, `speak-wikipedia
99
102
  * `elevenLabs.similarityBoost`: similarity boost. Defaults to `0.5`
100
103
 
101
104
  **Google Translate**:
102
- * `googleTranslate.tld`: top level domain to to connect to. Can change the dialect for a small number or voices. For example `us` gives American English for `en`, while `com` gives British English for `en`. Defaults to `us`
105
+ * `googleTranslate.tld`: top level domain to connect to. Can change the dialect for a small number of voices. For example `us` gives American English for `en`, while `com` gives British English for `en`. Defaults to `us`
103
106
 
104
107
  **Microsoft Edge**:
105
108
  * `microsoftEdge.trustedClientToken`: trusted client token (required). A special token required to use the service
@@ -107,46 +110,59 @@ Applicable to CLI commands: `speak`, `speak-file`, `speak-url`, `speak-wikipedia
107
110
 
108
111
  ## Voice list request
109
112
 
110
- Applicable to CLI command: `list-voices`, API method: `requestVoiceList`
113
+ Applies to CLI operation: `list-voices`, API method: `requestVoiceList`
111
114
 
112
- **General**
115
+ **General**:
113
116
  * `language`: language code to filter by (optional)
114
117
  * `voice`: name or name pattern to filter by (optional)
115
118
  * `voiceGender`: gender to filter by (optional)
116
119
 
117
- Also accepted are engine-specific options that may be required in order to retrieve the voice list, especially for cloud engines. Examples:
120
+ Also accepted are the following engine-specific options that may be required in order to retrieve the voice list:
118
121
  * `googleCloud.apiKey`
119
122
  * `microsoftAzure.subscriptionKey`, `microsoftAzure.serviceRegion`
120
123
  * `amazonPolly.region`, `amazonPolly.accessKeyId`, `amazonPolly.secretAccessKey`
121
124
  * `elevenLabs.apiKey`
125
+ * `microsoftEdge.trustedClientToken`
122
126
 
123
- ## Recognition
127
+ ## Speech-to-text
124
128
 
125
- Applicable to CLI command: `transcribe`, API method: `recognize`
129
+ Applies to CLI operation: `transcribe`, API method: `recognize`
126
130
 
127
131
  **General**:
128
- * `engine`: identifier of the recognition engine to use, such as `whisper` or `vosk`
132
+ * `engine`: identifier of the recognition engine to use, such as `whisper` or `vosk` (see [the full engine list](Engines.md))
129
133
  * `language`: language code ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)) for the audio, like `en`, `fr`, `de`. Auto-detected if not set
130
- * `alignment`: prefix to provide custom options for alignment. Options detailed in section for alignment
131
- * `languageDetection`: prefix to provide custom options for language detection. Options detailed in section for speech language detection
132
-
133
- **Subtitles**
134
- * `subtitles.mode`: subtitle generation mode. Can be `segment` (ensures each segment starts at a new cue), `sentence` (ensures each sentence starts at a new cue), `word` (one word per cue, no punctuation included), `phone` (one phone per cue), `word+phone` (include both `word` and `phone` cues, with overlapping time ranges), `line` (each text line is made a separate cue). Defaults to `sentence`
135
- * `subtitles.maxLineCount`: maximum number of lines per cue. Defaults to `2`
136
- * `subtitles.maxLineWidth`: maximum characters in a line. Defaults to `42`
137
- * `subtitles.minWordsInLine`: minimum number of remaining words to break to a new line. Defaults to `4`
138
- * `subtitles.separatePhrases`: try to separate phrases or sentences in new lines or cues, if possible. Defaults to `true`
139
- * `subtitles.maxAddedDuration`: maximum extra time (in seconds) that may be added after a cue's end time. This gives the reader additional time to read the cue, and also ensures that very short duration cues aren't shown in a flash. Defaults to `3.0`
140
-
141
- _Note_: options `maxLineCount`, `maxLineWidth`, `minWordsInLine`, `separatePhrases`, are only effective when using the `segment` and `sentence` modes, and are ignored in all other modes. `subtitles.maxAddedDuration` doesn't apply to modes `word`, `phone` and `word+phone` (they always use the exact start and end timestamps).
134
+ * `crop`: crop to active parts using voice activity detection before starting recognition. Defaults to `true`
135
+ * `isolate`: apply source separation to isolate voice before starting recognition. Defaults to `false`
136
+ * `alignment`: prefix to provide options for alignment. Options detailed in section for alignment
137
+ * `languageDetection`: prefix to provide options for language detection. Options detailed in section for speech language detection
138
+ * `subtitles`: prefix to provide options for subtitles. Options detailed in section for subtitles
139
+ * `vad`: prefix to provide options for voice activity detection when `crop` is set to `true`. Options detailed in section for voice activity detection
140
+ * `sourceSeparation`: prefix to provide options for source separation when `isolate` is set to `true`. Options detailed in section for source separation
142
141
 
143
142
  **Whisper**:
144
- * `whisper.model`: selects which Whisper model to use. Can be `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium`, `medium.en`, `large` (same as `large-v2`), `large-v1`, `large-v2`. Defaults to `tiny` or `tiny.en`
143
+ * `whisper.model`: selects which Whisper model to use. Can be `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium`, `medium.en`, `large` (same as `large-v2`), `large-v1`, `large-v2`, `large-v3` (**Note**: large models aren't yet supported by `onnxruntime-node` due to their size). Defaults to `tiny` or `tiny.en`
145
144
  * `whisper.temperature`: temperature setting for the text decoder. Impacts amount of randomization for token selection. It is recommended to leave at `0.1` (close to no randomization - almost always chooses the top ranked token) or choose a relatively low value (`0.25` or lower) for best results. Defaults to `0.1`
146
- * `whisper.prompt`: initial text to give the Whisper model. Can be a vocabulary, or example of some sort. Note that if the prompt is very similar to the transcript, the model may intentionally avoid producing the transcript tokens as it may assume that they have already been transcribed. Optional
145
+ * `whisper.prompt`: initial text to give the Whisper model. Can be a vocabulary, or example text of some sort. Note that if the prompt is very similar to the transcript, the model may intentionally avoid producing the transcript tokens as it may assume that they have already been transcribed. Optional
147
146
  * `whisper.topCandidateCount`: the number of top candidate tokens to consider. Defaults to `5`
148
147
  * `whisper.punctuationThreshold`: the minimal probability for a punctuation token, included in the top candidates, to be chosen unconditionally. A lower threshold encourages the model to output more punctuation symbols. Defaults to `0.2`
149
148
  * `whisper.autoPromptParts`: use previous part's recognized text as prompt for the next part. Disabling this may help to prevent repetition carrying over between parts, in some cases. Defaults to `true`
149
+ * `whisper.maxTokensPerPart`: maximum number of tokens to decode for each 30 second audio part. Defaults to `250`
150
+ * `whisper.suppressRepetition`: attempt to suppress decoding repeating token patterns. Defaults to `true`
151
+ * `whisper.seed`: use a custom seed for token selection, when temperature is greater than 0. Uses a constant seed by default
152
+
153
+ **Whisper.cpp**:
154
+ * `whisperCpp.model`: selects which `whisper.cpp` model to use. Can be `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium`, `medium.en`, `large` (same as `large-v2`), `large-v1`, `large-v2`, `large-v3`. These quantized models are also supported: `tiny-q5_1`, `tiny.en-q5_1`, `tiny.en-q8_0`,`base-q5_1`, `base.en-q5_1`, `small-q5_1`, `small.en-q5_1`, `medium-q5_0`, `medium.en-q5_0`, `large-v2-q5_0`, `large-v3-q5_0`. Defaults to `base` or `base.en`
155
+ * `whisperCpp.executablePath`: custom `whisper.cpp` executable path (currently required for macOS)
156
+ * `whisperCpp.build`: type of `whisper.cpp` build to use. Can be set `cpu`, `cublas-11.8.0`, `cublas-12.4.0`. By default, builds are auto-selected and downloaded for Windows x64 (`cpu`, `cublas-11.8.0`, `cublas-12.4.0`) and Linux x64 (`cpu`). Using other builds requires providing a custom `executablePath`
157
+ * `whisperCpp.threadCount`: number of threads to use, defaults to `4`
158
+ * `whisperCpp.splitCount`: number of splits of the audio data to process in parallel (called `--processors` in the CLI). A value greater than `1` can increase memory use significantly, reduce timing accuracy, and slow down execution in some cases. Defaults to `1` (highly recommended)
159
+ * `whisperCpp.enableGPU`: enable GPU processing. Defaults to `true` on CUDA-enabled builds, otherwise `false`
160
+ * `whisperCpp.topCandidateCount`: the number of top candidate tokens to consider. Defaults to `5`
161
+ * `whisperCpp.beamCount`: the number of decoding paths to use during beam search. Defaults to `5`
162
+ * `whisperCpp.repetitionThreshold`: minimal repetition / compressibility score to cause a decoded segment to be discarded. Defaults to `2.4`
163
+ * `whisperCpp.prompt`: initial text to give the Whisper model. Can be a vocabulary, or example text of some sort. Note that if the prompt is very similar to the transcript, the model may intentionally avoid producing the transcript tokens as it may assume that they have already been transcribed. Optional
164
+ * `whisperCpp.enableDTW`: enable experimental `whisper.cpp` internal DTW-based token alignment to be used to derive timestamps. Defaults to `false` (recommended for now)
165
+ * `whisperCpp.verbose`: show all CLI messages during execution. Defaults to `false`
150
166
 
151
167
  **Vosk**:
152
168
  * `vosk.modelPath`: path to the Vosk model to be used
@@ -162,83 +178,113 @@ _Note_: options `maxLineCount`, `maxLineWidth`, `minWordsInLine`, `separatePhras
162
178
  * `googleCloud.useEnhancedModel`: use enhanced model. Defaults to `true`
163
179
 
164
180
  **Azure Cognitive Services**:
165
- * `azureCognitiveServices.subscriptionKey`: subscription key (required)
166
- * `azureCognitiveServices.serviceRegion`: service region (required)
181
+ * `microsoftAzure.subscriptionKey`: subscription key (required)
182
+ * `microsoftAzure.serviceRegion`: service region (required)
167
183
 
168
184
  **Amazon Transcribe**:
169
185
  * `amazonTranscribe.region`: region (required)
170
186
  * `amazonTranscribe.accessKeyId`: access key ID (required)
171
187
  * `amazonTranscribe.secretAccessKey`: secret access key (required)
172
188
 
173
- ## Alignment
189
+ **OpenAI Cloud**:
190
+ * `openAICloud.apiKey`: API key (required)
191
+ * `openAICloud.model`: model to use. Can only be `whisper-1`
192
+ * `openAICloud.organization`: organization identifier. Optional
193
+ * `openAICloud.baseURL`: override the default base URL used by the API. Optional
194
+ * `openAICloud.temperature`: temperature. Choosing `0` uses a dynamic temperature approach. Defaults to `0.0`
195
+ * `openAICloud.prompt`: initial prompt for the model. Optional
196
+ * `openAICloud.timeout`: request timeout. Optional
197
+ * `openAICloud.maxRetries`: maximum retries on failure. Defaults to 10
198
+
174
199
 
175
- Applicable to CLI command: `align`, API method: `align`
200
+ ## Speech-to-transcript alignment
201
+
202
+ Applies to CLI operation: `align`, API method: `align`
176
203
 
177
204
  **General**:
178
- * `engine`: what alignment algorithm to use, can be `dtw`, `dtw-ra` or `whisper`. Defaults to `dtw`
205
+ * `engine`: alignment algorithm to use, can be `dtw`, `dtw-ra` or `whisper`. Defaults to `dtw`
179
206
  * `language`: language code for the audio and transcript ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)), like `en`, `fr`, `en-US`, `pt-BR`. Auto-detected from transcript if not set
207
+ * `crop`: crop to active parts using voice activity detection before starting. Defaults to `true`
208
+ * `isolate`: apply source separation to isolate voice before starting recognition. Defaults to `false`
180
209
  * `customLexiconPaths`: an array of custom lexicon file paths. Optional
210
+ * `subtitles`: prefix to provide options for subtitles. Options detailed in section for subtitles
211
+ * `vad`: prefix to provide options for voice activity detection when `crop` is set to `true`. Options detailed in section for voice activity detection
212
+ * `sourceSeparation`: prefix to provide options for source separation when `isolate` is set to `true`. Options detailed in section for source separation
181
213
 
182
214
  **Plain text processing**:
183
215
  * `plainText.paragraphBreaks`: split transcript to paragraphs based on single (`single`), or double (`double`) line breaks. Defaults to `double`
184
216
  * `plainText.whitespace`: determines how to process whitespace within transcript paragraphs. Can be `preserve` (leave as is), `removeLineBreaks` (convert line breaks to spaces) or `collapse` (convert runs of whitespace characters, including line breaks, to a single space character). Defaults to `collapse`
185
217
 
186
- **Subtitles**
187
- * `subtitles.maxLineCount`: maximum number of lines per cue. Defaults to `2`
188
- * `subtitles.maxLineWidth`: maximum characters in a line. Defaults to `42`
189
- * `subtitles.minWordsInLine`: minimum number of leftover words required to break to a new line or cue. Defaults to `4`
190
- * `subtitles.maxAddedDuration`: maximum extra time (in seconds) that may be added after a cue's speech end time. This also ensures that very short-duration segments aren't shown in a flash. Defaults to `3`
191
-
192
218
  **DTW**:
193
219
  * `dtw.granularity`: adjusts the MFCC frame width and hop size based on the profile selected. Can be set to either `auto` (auto-selected based on audio duration and task), `xx-low` (400ms width, 160ms hop), `x-low` (200ms width, 80ms hop), `low` (100ms width, 40ms hop), `medium` (50ms width, 20ms hop), `high` (25ms width, 10ms hop), `x-high` (20ms width, 5ms hop). For multi-pass processing, multiple granularities can be provided, like `dtw.granularity=['low','high']`. Defaults to `auto`.
194
220
  * `dtw.windowDuration`: maximum duration (in seconds) of the Sakoe-Chiba window when performing DTW alignment. Higher values consume quadratically larger amounts of memory. The estimated memory requirement is shown in the log before alignment starts. Recommended to be set to at least 10% - 20% of total audio duration. For multi-pass processing, multiple durations can be provided, like `dtw.windowDuration=[240,20]`. Auto-selected by default
195
221
 
196
222
  **DTW-RA only**:
197
- * `recognition`: prefix for providing custom recognition options when using `dtw-ra` method, for example: setting `recognition.whisper.model = base.en`
223
+ * `recognition`: prefix to provide recognition options when using `dtw-ra` method, for example: setting `recognition.engine = whisper` and `recognition.whisper.model = base.en`
198
224
  * `dtw.phoneAlignmentMethod`: algorithm to use when aligning phones: can either be set to `dtw` or `interpolate`. Defaults to `dtw`
199
225
 
200
- **Whisper alignment only**
201
- * `whisper`: prefix to provide Whisper options when the `whisper` alignment engine is used.
226
+ **Whisper alignment only**:
227
+ * `whisper`: prefix to provide Whisper options when the `whisper` alignment engine is used (does not apply to `dtw-ra` when `whisper` engine is used, for that use `recognition.whisper` prefix instead).
202
228
 
203
- ## Speech translation
204
229
 
205
- Applicable to CLI command: `translate-speech`, API method: `translateSpeech`
230
+ ## Speech-to-text translation
231
+
232
+ Applies to CLI operation: `translate-speech`, API method: `translateSpeech`
206
233
 
207
234
  **General**:
208
235
  * `engine`: only `whisper` supported
209
236
  * `sourceLanguage`: the source language code for the input speech. Auto-detected if not set
210
- * `targetLanguage`: the target language code for the output speech. Only `en` supported at this time
211
- * `languageDetection`: prefix to provide custom options for language detection. Options detailed in section for speech language detection
237
+ * `targetLanguage`: the target language code for the output speech. Only `en` (English) supported by the `whisper` engine. Optional
238
+ * `crop`: crop to active parts using voice activity detection before starting. Defaults to `true`
239
+ * `isolate`: apply source separation to isolate voice before starting speech translation. Defaults to `false`
240
+ * `languageDetection`: prefix to provide options for language detection. Options detailed in section for speech language detection
241
+ * `vad`: prefix to provide options for voice activity detection when `crop` is set to `true`. Options detailed in section for voice activity detection
242
+ * `sourceSeparation`: prefix to provide source separation options when `isolate` is to `true`
212
243
 
213
244
  **Whisper**:
214
245
 
215
- * `whisper`: prefix for options for the Whisper model. Same options as detailed in the recognition section above
246
+ * `whisper`: prefix to provide options for the Whisper model. Same options as detailed in the recognition section above
247
+
248
+ **Whisper.cpp**:
249
+
250
+ * `whisper.cpp`: prefix to provide options for the Whisper.cpp model. Same options as detailed in the recognition section above
251
+
252
+ **OpenAI Cloud**:
253
+
254
+ * `openAICloud`: prefix to provide options for OpenAI cloud. Same options as detailed in the recognition section above
216
255
 
217
256
  ## Language detection
218
257
 
219
258
  ### Speech language detection
220
259
 
221
- Applicable to CLI command: `detect-speech-langauge`, API method: `detectSpeechLangauge`
260
+ Applies to CLI operation: `detect-speech-langauge`, API method: `detectSpeechLangauge`
222
261
 
223
262
  **General**:
224
- * `engine`: `silero` or `whisper`. Defaults to `silero`
225
- * `whisper`: whisper options prefix, can be used like `whisper.model = base` to set options for the Whisper engine. See Whisper options on the recognition section
263
+ * `engine`: `whisper` or `silero`. Defaults to `whisper`
264
+ * `defaultLanguage`: language to fallback to when confidence for top candidate of is low. Defaults to `en`
265
+ * `fallbackThresholdProbability`: confidence threshold to cause fallback. Defaults to `0.05`
266
+ * `crop`: crop to active parts using voice activity detection before starting. Defaults to `true` (recommended, otherwise inactive sections may skew the probabilities towards various random languages)
267
+ * `vad`: prefix to provide options for voice activity detection when `crop` is set to `true`. Options detailed in section for voice activity detection
268
+
269
+ **Whisper**:
270
+ * `whisper.model`: Whisper model to use. See model list in the recognition section
271
+ * `whisper.temperature`: impacts the distribution of candidate languages when applying the softmax function to compute language probabilities over the model output. Higher temperature causes the distribution to be more uniform, while lower temperature causes it to be more strongly weighted towards the best scoring candidates. Defaults to `1.0`
226
272
 
227
273
  ### Text language detection
228
274
 
229
- Applicable to CLI command: `detect-text-langauge`, API method: `detectTextLangauge`
275
+ Applies to CLI operation: `detect-text-langauge`, API method: `detectTextLangauge`
230
276
 
231
277
  **General**:
232
278
  * `engine`: `tinyld` or `fasttext`. Defaults to `tinyld`
233
- * `defaultLanguage`: language to fall back to when confidence of is low. Defaults to `en`
279
+ * `defaultLanguage`: language to fallback to when confidence for top candidate is low. Defaults to `en`
234
280
  * `fallbackThresholdProbability`: confidence threshold to cause fallback. Defaults to `0.05`
235
281
 
236
282
  ## Voice activity detection
237
283
 
238
- Applicable to CLI command: `detect-voice-activity`, API method: `detectVoiceActivity`
284
+ Applies to CLI operation: `detect-voice-activity`, API method: `detectVoiceActivity`
239
285
 
240
286
  **General**:
241
- * `engine`: VAD engine to use. Can be `webrtc`, `silero` or `rnnoise`. Defaults to `webrtc`
287
+ * `engine`: VAD engine to use. Can be `webrtc`, `silero`, `rnnoise`, or `adaptive-gate`. Defaults to `silero`
242
288
  * `activityThreshold`: minimum predicted probability for determining a frame as having speech activity. Defaults to `0.5`
243
289
 
244
290
  **WebRTC**:
@@ -250,13 +296,47 @@ Applicable to CLI command: `detect-voice-activity`, API method: `detectVoiceActi
250
296
 
251
297
  ## Speech denoising
252
298
 
253
- Applicable to CLI command: `denoise`, API method: `denoise`
299
+ Applies to CLI operation: `denoise`, API method: `denoise`
254
300
 
255
301
  **General**:
256
302
  * `engine`: can only be `rnnoise`
257
303
 
258
- **Postprocessing**:
304
+ **Post-processing**:
259
305
  * `postProcessing.normalizeAudio`: should normalize output audio. Defaults to `false`
260
- * `postProcessing.targetPeakDb`: target peak (decibels) for normalization. Defaults to `-3`
261
- * `postProcessing.maxIncreaseDb`: max gain increase (decibels) when performing normalization. Defaults to `30`
262
- * `postProcessing.dryMixGainDb`: gain (decibels) of dry (original) signal to mix back to the denoised output. Defaults to `-20`
306
+ * `postProcessing.targetPeak`: target peak (decibels) for normalization. Defaults to `-3`
307
+ * `postProcessing.maxGainIncrease`: max gain increase (decibels) when performing normalization. Defaults to `30`
308
+ * `postProcessing.dryMixGain`: gain (decibels) of dry (original) signal to mix back to the denoised (wet) signal. Defaults to `-20`
309
+
310
+ ## Source separation
311
+
312
+ Applies to CLI operation: `isolate`, API method: `isolate`
313
+
314
+ **General**:
315
+
316
+ * `engine`: can only be `mdx-net`
317
+
318
+ **MDX-NET**:
319
+
320
+ * `mdxNet.model`: model to use. Currently available models are `UVR_MDXNET_1_9703`, `UVR_MDXNET_2_9682`, `UVR_MDXNET_3_9662`, `UVR_MDXNET_KARA`. Defaults to `UVR_MDXNET_1_9703`
321
+
322
+ # Common options
323
+
324
+ ## Subtitles
325
+
326
+ These are shared between text-to-speech, speech-to-text and alignment operations, usually prefixed with `subtitles.`.
327
+
328
+ * `mode`: subtitle generation mode. Can be `segment` (ensures each segment starts at a new cue), `sentence` (ensures each sentence starts at a new cue), `word` (one word per cue, no punctuation included), `phone` (one phone per cue), `word+phone` (include both `word` and `phone` cues, with overlapping time ranges), `line` (each text line is made a separate cue). Defaults to `sentence`
329
+ * `maxLineCount`: maximum number of lines per cue. Defaults to `2`
330
+ * `maxLineWidth`: maximum characters in a line. Defaults to `42`
331
+ * `minWordsInLine`: minimum number of remaining words to break to a new line. Defaults to `4`
332
+ * `separatePhrases`: try to separate phrases or sentences in new lines or cues, if possible. Defaults to `true`
333
+ * `maxAddedDuration`: maximum extra time (in seconds) that may be added after a cue's end time. This gives the reader additional time to read the cue, and also ensures that very short duration cues aren't shown in a flash. Defaults to `3.0`
334
+
335
+ **Note**: options `maxLineCount`, `maxLineWidth`, `minWordsInLine`, `separatePhrases`, are only effective when using the `segment` and `sentence` modes, and are ignored in all other modes. `maxAddedDuration` doesn't apply to modes `word`, `phone` and `word+phone` (they always use the exact start and end timestamps).
336
+
337
+ # General CLI options
338
+
339
+ * `--play`, `--no-play`: enable/disable audio playback. Defaults to play if there is no output file specified
340
+ * `--overwrite`, `--no-overwrite`: overwrite/keep existing files. Doesn't overwrite by default
341
+ * `--debug`, `--no-debug`: show/hide the full details of JavaScript errors, if they occur. Disabled by default
342
+ * `--config=...`: path to configuration file to use. See the [CLI guide](CLI.md) for more information about configuration files