echogarden 2.10.2 → 3.0.1
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.
- package/LICENSE.MIT.md +7 -0
- package/README.md +9 -1
- package/data/lexicons/heteronyms.en.json +44 -10
- package/data/lexicons/words.en.json +726 -22
- package/data/schemas/options.json +91 -153
- package/dist/alignment/DTWMfccSequenceAlignment.js.map +1 -1
- package/dist/alignment/SemanticTextAlignment.d.ts +4 -2
- package/dist/alignment/SemanticTextAlignment.d.ts.map +1 -1
- package/dist/alignment/SemanticTextAlignment.js +7 -7
- package/dist/alignment/SemanticTextAlignment.js.map +1 -1
- package/dist/alignment/SpeechAlignment.d.ts +9 -10
- package/dist/alignment/SpeechAlignment.d.ts.map +1 -1
- package/dist/alignment/SpeechAlignment.js +23 -96
- package/dist/alignment/SpeechAlignment.js.map +1 -1
- package/dist/api/APIOptions.d.ts +1 -1
- package/dist/api/APIOptions.d.ts.map +1 -1
- package/dist/api/Alignment.d.ts +8 -6
- package/dist/api/Alignment.d.ts.map +1 -1
- package/dist/api/Alignment.js +31 -40
- package/dist/api/Alignment.js.map +1 -1
- package/dist/api/Common.d.ts +7 -0
- package/dist/api/Common.d.ts.map +1 -1
- package/dist/api/Common.js.map +1 -1
- package/dist/api/Denoising.d.ts +5 -2
- package/dist/api/Denoising.d.ts.map +1 -1
- package/dist/api/Denoising.js +15 -15
- package/dist/api/Denoising.js.map +1 -1
- package/dist/api/GlobalOptions.d.ts +2 -8
- package/dist/api/GlobalOptions.d.ts.map +1 -1
- package/dist/api/GlobalOptions.js +2 -13
- package/dist/api/GlobalOptions.js.map +1 -1
- package/dist/api/Recognition.d.ts +11 -12
- package/dist/api/Recognition.d.ts.map +1 -1
- package/dist/api/Recognition.js +32 -82
- package/dist/api/Recognition.js.map +1 -1
- package/dist/api/SourceSeparation.d.ts +7 -2
- package/dist/api/SourceSeparation.d.ts.map +1 -1
- package/dist/api/SourceSeparation.js +12 -10
- package/dist/api/SourceSeparation.js.map +1 -1
- package/dist/api/SpeechLanguageDetection.d.ts +11 -7
- package/dist/api/SpeechLanguageDetection.d.ts.map +1 -1
- package/dist/api/SpeechLanguageDetection.js +37 -30
- package/dist/api/SpeechLanguageDetection.js.map +1 -1
- package/dist/api/SpeechSearch.d.ts +4 -1
- package/dist/api/SpeechSearch.d.ts.map +1 -1
- package/dist/api/SpeechSearch.js.map +1 -1
- package/dist/api/SpeechTranslation.d.ts +10 -6
- package/dist/api/SpeechTranslation.d.ts.map +1 -1
- package/dist/api/SpeechTranslation.js +28 -26
- package/dist/api/SpeechTranslation.js.map +1 -1
- package/dist/api/Synthesis.d.ts +13 -8
- package/dist/api/Synthesis.d.ts.map +1 -1
- package/dist/api/Synthesis.js +67 -89
- package/dist/api/Synthesis.js.map +1 -1
- package/dist/api/TextLanguageDetection.d.ts +4 -2
- package/dist/api/TextLanguageDetection.d.ts.map +1 -1
- package/dist/api/TextLanguageDetection.js +4 -7
- package/dist/api/TextLanguageDetection.js.map +1 -1
- package/dist/api/TextTranslation.d.ts +4 -2
- package/dist/api/TextTranslation.d.ts.map +1 -1
- package/dist/api/TextTranslation.js +13 -24
- package/dist/api/TextTranslation.js.map +1 -1
- package/dist/api/TimelineTranslationAlignment.d.ts +6 -3
- package/dist/api/TimelineTranslationAlignment.d.ts.map +1 -1
- package/dist/api/TimelineTranslationAlignment.js +20 -11
- package/dist/api/TimelineTranslationAlignment.js.map +1 -1
- package/dist/api/TranscriptAndTranslationAlignment.d.ts +6 -4
- package/dist/api/TranscriptAndTranslationAlignment.d.ts.map +1 -1
- package/dist/api/TranscriptAndTranslationAlignment.js +11 -12
- package/dist/api/TranscriptAndTranslationAlignment.js.map +1 -1
- package/dist/api/TranslationAlignment.d.ts +6 -4
- package/dist/api/TranslationAlignment.d.ts.map +1 -1
- package/dist/api/TranslationAlignment.js +20 -21
- package/dist/api/TranslationAlignment.js.map +1 -1
- package/dist/api/VoiceActivityDetection.d.ts +9 -8
- package/dist/api/VoiceActivityDetection.d.ts.map +1 -1
- package/dist/api/VoiceActivityDetection.js +20 -43
- package/dist/api/VoiceActivityDetection.js.map +1 -1
- package/dist/audio/AudioBufferConversion.js.map +1 -1
- package/dist/audio/AudioPlayer.d.ts +1 -3
- package/dist/audio/AudioPlayer.d.ts.map +1 -1
- package/dist/audio/AudioPlayer.js +3 -188
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/audio/AudioUtilities.d.ts +2 -1
- package/dist/audio/AudioUtilities.d.ts.map +1 -1
- package/dist/audio/AudioUtilities.js +2 -2
- package/dist/audio/AudioUtilities.js.map +1 -1
- package/dist/build-tools/MakeTarballsForInstalledPackages.js +3 -3
- package/dist/build-tools/MakeTarballsForInstalledPackages.js.map +1 -1
- package/dist/cli/CLI.d.ts.map +1 -1
- package/dist/cli/CLI.js +139 -92
- package/dist/cli/CLI.js.map +1 -1
- package/dist/codecs/FFMpegTranscoder.d.ts +4 -3
- package/dist/codecs/FFMpegTranscoder.d.ts.map +1 -1
- package/dist/codecs/FFMpegTranscoder.js +16 -14
- package/dist/codecs/FFMpegTranscoder.js.map +1 -1
- package/dist/codecs/TIMITCodec.d.ts.map +1 -1
- package/dist/data-structures/DynamicTypedArray.d.ts.map +1 -1
- package/dist/data-structures/DynamicTypedArray.js.map +1 -1
- package/dist/data-structures/Queue.d.ts.map +1 -1
- package/dist/data-structures/WindowedList.d.ts.map +1 -1
- package/dist/data-structures/WindowedList.js.map +1 -1
- package/dist/denoising/NSNet2.d.ts +3 -2
- package/dist/denoising/NSNet2.d.ts.map +1 -1
- package/dist/denoising/NSNet2.js +4 -4
- package/dist/denoising/NSNet2.js.map +1 -1
- package/dist/denoising/RNNoise.d.ts +2 -1
- package/dist/denoising/RNNoise.d.ts.map +1 -1
- package/dist/denoising/RNNoise.js +10 -6
- package/dist/denoising/RNNoise.js.map +1 -1
- package/dist/dsp/BiquadFilter.d.ts.map +1 -1
- package/dist/dsp/DecayingPeakEstimator.d.ts.map +1 -1
- package/dist/dsp/DecayingPeakEstimator.js.map +1 -1
- package/dist/dsp/FFT.d.ts.map +1 -1
- package/dist/dsp/FFT.js +2 -1
- package/dist/dsp/FFT.js.map +1 -1
- package/dist/dsp/KWeightingFilter.d.ts.map +1 -1
- package/dist/dsp/KWeightingFilter.js.map +1 -1
- package/dist/dsp/LoudnessEstimator.d.ts.map +1 -1
- package/dist/dsp/LoudnessEstimator.js.map +1 -1
- package/dist/dsp/MFCC.d.ts +3 -2
- package/dist/dsp/MFCC.d.ts.map +1 -1
- package/dist/dsp/MFCC.js +4 -4
- package/dist/dsp/MFCC.js.map +1 -1
- package/dist/dsp/MelSpectrogram.d.ts +10 -8
- package/dist/dsp/MelSpectrogram.d.ts.map +1 -1
- package/dist/dsp/MelSpectrogram.js +31 -34
- package/dist/dsp/MelSpectrogram.js.map +1 -1
- package/dist/dsp/Rubberband.d.ts.map +1 -1
- package/dist/dsp/Rubberband.js +8 -3
- package/dist/dsp/Rubberband.js.map +1 -1
- package/dist/dsp/Sonic.d.ts.map +1 -1
- package/dist/dsp/Sonic.js +1 -1
- package/dist/dsp/Sonic.js.map +1 -1
- package/dist/dsp/SpeexResampler.d.ts.map +1 -1
- package/dist/dsp/SpeexResampler.js +1 -1
- package/dist/dsp/SpeexResampler.js.map +1 -1
- package/dist/encodings/Ascii.d.ts +1 -1
- package/dist/encodings/Ascii.d.ts.map +1 -1
- package/dist/encodings/Base64.js.map +1 -1
- package/dist/encodings/Utf16.d.ts.map +1 -1
- package/dist/encodings/Utf8.d.ts.map +1 -1
- package/dist/math/VectorMath.d.ts +1 -0
- package/dist/math/VectorMath.d.ts.map +1 -1
- package/dist/math/VectorMath.js +9 -5
- package/dist/math/VectorMath.js.map +1 -1
- package/dist/nlp/ChineseSegmentation.d.ts +1 -1
- package/dist/nlp/ChineseSegmentation.d.ts.map +1 -1
- package/dist/nlp/EspeakPhonemizer.d.ts +1 -1
- package/dist/nlp/EspeakPhonemizer.d.ts.map +1 -1
- package/dist/nlp/EspeakPhonemizer.js +2 -2
- package/dist/nlp/EspeakPhonemizer.js.map +1 -1
- package/dist/nlp/IPA.d.ts +2 -2
- package/dist/nlp/Segmentation.d.ts +1 -1
- package/dist/nlp/Segmentation.d.ts.map +1 -1
- package/dist/nlp/Segmentation.js +8 -4
- package/dist/nlp/Segmentation.js.map +1 -1
- package/dist/recognition/AmazonTranscribeSTT.d.ts +2 -1
- package/dist/recognition/AmazonTranscribeSTT.d.ts.map +1 -1
- package/dist/recognition/AmazonTranscribeSTT.js +3 -3
- package/dist/recognition/AmazonTranscribeSTT.js.map +1 -1
- package/dist/recognition/AzureCognitiveServicesSTT.d.ts +2 -1
- package/dist/recognition/AzureCognitiveServicesSTT.d.ts.map +1 -1
- package/dist/recognition/AzureCognitiveServicesSTT.js +4 -4
- package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -1
- package/dist/recognition/DeepgramSTT.d.ts +2 -1
- package/dist/recognition/DeepgramSTT.d.ts.map +1 -1
- package/dist/recognition/DeepgramSTT.js +12 -13
- package/dist/recognition/DeepgramSTT.js.map +1 -1
- package/dist/recognition/GoogleCloudSTT.d.ts +2 -1
- package/dist/recognition/GoogleCloudSTT.d.ts.map +1 -1
- package/dist/recognition/GoogleCloudSTT.js +11 -10
- package/dist/recognition/GoogleCloudSTT.js.map +1 -1
- package/dist/recognition/OpenAICloudSTT.d.ts +2 -1
- package/dist/recognition/OpenAICloudSTT.d.ts.map +1 -1
- package/dist/recognition/OpenAICloudSTT.js +6 -6
- package/dist/recognition/OpenAICloudSTT.js.map +1 -1
- package/dist/recognition/WhisperCommon.d.ts +9 -0
- package/dist/recognition/WhisperCommon.d.ts.map +1 -0
- package/dist/recognition/WhisperCommon.js +52 -0
- package/dist/recognition/WhisperCommon.js.map +1 -0
- package/dist/recognition/{WhisperCppSTT.d.ts → WhisperCppCliSTT.d.ts} +14 -16
- package/dist/recognition/WhisperCppCliSTT.d.ts.map +1 -0
- package/dist/recognition/{WhisperCppSTT.js → WhisperCppCliSTT.js} +55 -84
- package/dist/recognition/WhisperCppCliSTT.js.map +1 -0
- package/dist/recognition/WhisperSTT.d.ts +72 -85
- package/dist/recognition/WhisperSTT.d.ts.map +1 -1
- package/dist/recognition/WhisperSTT.js +384 -519
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/server/Client.d.ts +2 -2
- package/dist/server/Client.d.ts.map +1 -1
- package/dist/server/Client.js.map +1 -1
- package/dist/server/Worker.d.ts +6 -7
- package/dist/server/Worker.d.ts.map +1 -1
- package/dist/server/Worker.js +42 -44
- package/dist/server/Worker.js.map +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.d.ts +3 -2
- package/dist/source-separation/MDXNetSourceSeparation.d.ts.map +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.js +10 -8
- package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -1
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts +3 -2
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts.map +1 -1
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js +5 -5
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js.map +1 -1
- package/dist/speech-language-detection/SileroLanguageDetection.d.ts +5 -3
- package/dist/speech-language-detection/SileroLanguageDetection.d.ts.map +1 -1
- package/dist/speech-language-detection/SileroLanguageDetection.js +8 -8
- package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -1
- package/dist/speech-search/DTWSpeechSearch.d.ts +2 -1
- package/dist/speech-search/DTWSpeechSearch.d.ts.map +1 -1
- package/dist/speech-search/DTWSpeechSearch.js +4 -4
- package/dist/speech-search/DTWSpeechSearch.js.map +1 -1
- package/dist/subtitles/Subtitles.d.ts +13 -1
- package/dist/subtitles/Subtitles.d.ts.map +1 -1
- package/dist/subtitles/Subtitles.js +22 -22
- package/dist/subtitles/Subtitles.js.map +1 -1
- package/dist/synthesis/AwsPollyTTS.d.ts +3 -2
- package/dist/synthesis/AwsPollyTTS.d.ts.map +1 -1
- package/dist/synthesis/AwsPollyTTS.js +5 -5
- package/dist/synthesis/AwsPollyTTS.js.map +1 -1
- package/dist/synthesis/AzureCognitiveServicesTTS.d.ts +2 -1
- package/dist/synthesis/AzureCognitiveServicesTTS.d.ts.map +1 -1
- package/dist/synthesis/AzureCognitiveServicesTTS.js +3 -3
- package/dist/synthesis/AzureCognitiveServicesTTS.js.map +1 -1
- package/dist/synthesis/CoquiServerTTS.d.ts +2 -1
- package/dist/synthesis/CoquiServerTTS.d.ts.map +1 -1
- package/dist/synthesis/CoquiServerTTS.js +7 -8
- package/dist/synthesis/CoquiServerTTS.js.map +1 -1
- package/dist/synthesis/DeepgramTTS.d.ts +2 -2
- package/dist/synthesis/DeepgramTTS.d.ts.map +1 -1
- package/dist/synthesis/DeepgramTTS.js +13 -13
- package/dist/synthesis/DeepgramTTS.js.map +1 -1
- package/dist/synthesis/ElevenLabsTTS.d.ts +3 -3
- package/dist/synthesis/ElevenLabsTTS.d.ts.map +1 -1
- package/dist/synthesis/ElevenLabsTTS.js +22 -21
- package/dist/synthesis/ElevenLabsTTS.js.map +1 -1
- package/dist/synthesis/EspeakTTS.d.ts +11 -9
- package/dist/synthesis/EspeakTTS.d.ts.map +1 -1
- package/dist/synthesis/EspeakTTS.js +129 -71
- package/dist/synthesis/EspeakTTS.js.map +1 -1
- package/dist/synthesis/FliteTTS.d.ts +2 -2
- package/dist/synthesis/FliteTTS.d.ts.map +1 -1
- package/dist/synthesis/FliteTTS.js +2 -2
- package/dist/synthesis/FliteTTS.js.map +1 -1
- package/dist/synthesis/GnuSpeechTTS.d.ts +2 -2
- package/dist/synthesis/GnuSpeechTTS.d.ts.map +1 -1
- package/dist/synthesis/GnuSpeechTTS.js +1 -1
- package/dist/synthesis/GnuSpeechTTS.js.map +1 -1
- package/dist/synthesis/GoogleCloudTTS.d.ts +3 -2
- package/dist/synthesis/GoogleCloudTTS.d.ts.map +1 -1
- package/dist/synthesis/GoogleCloudTTS.js +15 -14
- package/dist/synthesis/GoogleCloudTTS.js.map +1 -1
- package/dist/synthesis/GoogleTranslateTTS.d.ts +3 -2
- package/dist/synthesis/GoogleTranslateTTS.d.ts.map +1 -1
- package/dist/synthesis/GoogleTranslateTTS.js +11 -11
- package/dist/synthesis/GoogleTranslateTTS.js.map +1 -1
- package/dist/synthesis/KokoroTTS.d.ts +4 -4
- package/dist/synthesis/KokoroTTS.d.ts.map +1 -1
- package/dist/synthesis/KokoroTTS.js +11 -10
- package/dist/synthesis/KokoroTTS.js.map +1 -1
- package/dist/synthesis/MicrosoftEdgeTTS.d.ts +4 -3
- package/dist/synthesis/MicrosoftEdgeTTS.d.ts.map +1 -1
- package/dist/synthesis/MicrosoftEdgeTTS.js +41 -20
- package/dist/synthesis/MicrosoftEdgeTTS.js.map +1 -1
- package/dist/synthesis/OpenAICloudTTS.d.ts +2 -2
- package/dist/synthesis/OpenAICloudTTS.d.ts.map +1 -1
- package/dist/synthesis/OpenAICloudTTS.js +6 -5
- package/dist/synthesis/OpenAICloudTTS.js.map +1 -1
- package/dist/synthesis/SamTTS.d.ts +2 -1
- package/dist/synthesis/SamTTS.d.ts.map +1 -1
- package/dist/synthesis/SamTTS.js +2 -2
- package/dist/synthesis/SamTTS.js.map +1 -1
- package/dist/synthesis/SapiTTS.d.ts +2 -2
- package/dist/synthesis/SapiTTS.d.ts.map +1 -1
- package/dist/synthesis/SapiTTS.js +2 -2
- package/dist/synthesis/SapiTTS.js.map +1 -1
- package/dist/synthesis/SvoxPicoTTS.d.ts +2 -2
- package/dist/synthesis/SvoxPicoTTS.d.ts.map +1 -1
- package/dist/synthesis/SvoxPicoTTS.js +3 -3
- package/dist/synthesis/SvoxPicoTTS.js.map +1 -1
- package/dist/synthesis/VitsTTS.d.ts +3 -3
- package/dist/synthesis/VitsTTS.d.ts.map +1 -1
- package/dist/synthesis/VitsTTS.js +14 -11
- package/dist/synthesis/VitsTTS.js.map +1 -1
- package/dist/text-translation/DeepLTextTranslation.d.ts +2 -2
- package/dist/text-translation/DeepLTextTranslation.d.ts.map +1 -1
- package/dist/text-translation/DeepLTextTranslation.js +10 -9
- package/dist/text-translation/DeepLTextTranslation.js.map +1 -1
- package/dist/text-translation/GoogleTranslateTextTranslation.d.ts +4 -4
- package/dist/text-translation/GoogleTranslateTextTranslation.d.ts.map +1 -1
- package/dist/text-translation/GoogleTranslateTextTranslation.js +20 -18
- package/dist/text-translation/GoogleTranslateTextTranslation.js.map +1 -1
- package/dist/text-translation/NLLBTextTranslation.d.ts +2 -2
- package/dist/text-translation/NLLBTextTranslation.d.ts.map +1 -1
- package/dist/text-translation/NLLBTextTranslation.js +4 -6
- package/dist/text-translation/NLLBTextTranslation.js.map +1 -1
- package/dist/typings/TypedArray.d.ts.map +1 -1
- package/dist/utilities/Compression.d.ts +4 -3
- package/dist/utilities/Compression.d.ts.map +1 -1
- package/dist/utilities/Compression.js +9 -9
- package/dist/utilities/Compression.js.map +1 -1
- package/dist/utilities/FileDownloader.d.ts +6 -3
- package/dist/utilities/FileDownloader.d.ts.map +1 -1
- package/dist/utilities/FileDownloader.js +25 -21
- package/dist/utilities/FileDownloader.js.map +1 -1
- package/dist/utilities/FileReader.d.ts.map +1 -1
- package/dist/utilities/FileReader.js.map +1 -1
- package/dist/utilities/FileSystem.js +1 -1
- package/dist/utilities/FileSystem.js.map +1 -1
- package/dist/utilities/FileWriter.d.ts.map +1 -1
- package/dist/utilities/FileWriter.js.map +1 -1
- package/dist/utilities/Hashing.d.ts.map +1 -1
- package/dist/utilities/Hashing.js.map +1 -1
- package/dist/utilities/Locale.js.map +1 -1
- package/dist/utilities/Logger.d.ts +17 -9
- package/dist/utilities/Logger.d.ts.map +1 -1
- package/dist/utilities/Logger.js +50 -35
- package/dist/utilities/Logger.js.map +1 -1
- package/dist/utilities/NpmUtilities.d.ts.map +1 -1
- package/dist/utilities/NpmUtilities.js +4 -5
- package/dist/utilities/NpmUtilities.js.map +1 -1
- package/dist/utilities/ObjectUtilities.js.map +1 -1
- package/dist/utilities/OpenPromise.d.ts.map +1 -1
- package/dist/utilities/OpenPromise.js.map +1 -1
- package/dist/utilities/PackageManager.d.ts +4 -1
- package/dist/utilities/PackageManager.d.ts.map +1 -1
- package/dist/utilities/PackageManager.js +37 -22
- package/dist/utilities/PackageManager.js.map +1 -1
- package/dist/utilities/PathUtilities.d.ts +2 -0
- package/dist/utilities/PathUtilities.d.ts.map +1 -1
- package/dist/utilities/PathUtilities.js +5 -2
- package/dist/utilities/PathUtilities.js.map +1 -1
- package/dist/utilities/RandomGenerator.d.ts.map +1 -1
- package/dist/utilities/SignalChannel.d.ts.map +1 -1
- package/dist/utilities/SmoothEstimator.d.ts.map +1 -1
- package/dist/utilities/SmoothEstimator.js.map +1 -1
- package/dist/utilities/StringBuilder.d.ts.map +1 -1
- package/dist/utilities/TarballMaker.d.ts +4 -3
- package/dist/utilities/TarballMaker.d.ts.map +1 -1
- package/dist/utilities/TarballMaker.js +6 -6
- package/dist/utilities/TarballMaker.js.map +1 -1
- package/dist/utilities/Timeline.js.map +1 -1
- package/dist/utilities/Timer.d.ts.map +1 -1
- package/dist/utilities/Utilities.d.ts +9 -7
- package/dist/utilities/Utilities.d.ts.map +1 -1
- package/dist/utilities/Utilities.js +49 -33
- package/dist/utilities/Utilities.js.map +1 -1
- package/dist/utilities/VirtualFileReadStream.d.ts.map +1 -1
- package/dist/utilities/WebReader.d.ts +2 -1
- package/dist/utilities/WebReader.d.ts.map +1 -1
- package/dist/utilities/WebReader.js +7 -6
- package/dist/utilities/WebReader.js.map +1 -1
- package/dist/utilities/WikipediaReader.d.ts +2 -1
- package/dist/utilities/WikipediaReader.d.ts.map +1 -1
- package/dist/utilities/WikipediaReader.js +1 -5
- package/dist/utilities/WikipediaReader.js.map +1 -1
- package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts +2 -1
- package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts.map +1 -1
- package/dist/voice-activity-detection/AdaptiveGateVAD.js +1 -1
- package/dist/voice-activity-detection/AdaptiveGateVAD.js.map +1 -1
- package/dist/voice-activity-detection/SileroVAD.d.ts.map +1 -1
- package/dist/voice-activity-detection/SileroVAD.js.map +1 -1
- package/dist/voice-activity-detection/WebRtcVAD.d.ts.map +1 -1
- package/dist/voice-activity-detection/WebRtcVAD.js +1 -1
- package/dist/voice-activity-detection/WebRtcVAD.js.map +1 -1
- package/docs/API.md +62 -17
- package/docs/CUDA.md +4 -3
- package/docs/Engines.md +8 -7
- package/docs/Licenses.md +0 -3
- package/docs/Options.md +27 -31
- package/docs/Server.md +1 -0
- package/docs/Tasklist.md +2 -1
- package/docs/Technical.md +2 -2
- package/package.json +45 -35
- package/src/alignment/SemanticTextAlignment.ts +14 -7
- package/src/alignment/SpeechAlignment.ts +47 -150
- package/src/api/APIOptions.ts +1 -1
- package/src/api/Alignment.ts +95 -61
- package/src/api/Common.ts +11 -0
- package/src/api/Denoising.ts +22 -17
- package/src/api/GlobalOptions.ts +4 -20
- package/src/api/Recognition.ts +106 -123
- package/src/api/SourceSeparation.ts +39 -21
- package/src/api/SpeechLanguageDetection.ts +77 -37
- package/src/api/SpeechSearch.ts +6 -1
- package/src/api/SpeechTranslation.ts +75 -38
- package/src/api/Synthesis.ts +220 -116
- package/src/api/TextLanguageDetection.ts +10 -12
- package/src/api/TextTranslation.ts +43 -26
- package/src/api/TimelineTranslationAlignment.ts +41 -13
- package/src/api/TranscriptAndTranslationAlignment.ts +28 -15
- package/src/api/TranslationAlignment.ts +53 -24
- package/src/api/VoiceActivityDetection.ts +33 -68
- package/src/audio/AudioPlayer.ts +4 -232
- package/src/audio/AudioUtilities.ts +9 -2
- package/src/build-tools/MakeTarballsForInstalledPackages.ts +4 -3
- package/src/cli/CLI.ts +209 -101
- package/src/codecs/FFMpegTranscoder.ts +18 -16
- package/src/denoising/NSNet2.ts +5 -4
- package/src/denoising/RNNoise.ts +14 -6
- package/src/dsp/FFT.ts +2 -1
- package/src/dsp/MFCC.ts +7 -5
- package/src/dsp/MelSpectrogram.ts +56 -36
- package/src/dsp/Rubberband.ts +10 -3
- package/src/dsp/Sonic.ts +2 -1
- package/src/dsp/SpeexResampler.ts +2 -1
- package/src/encodings/Ascii.ts +1 -1
- package/src/encodings/Base64.ts +1 -1
- package/src/math/VectorMath.ts +10 -6
- package/src/nlp/EspeakPhonemizer.ts +2 -2
- package/src/nlp/Segmentation.ts +9 -4
- package/src/recognition/AmazonTranscribeSTT.ts +4 -3
- package/src/recognition/AzureCognitiveServicesSTT.ts +5 -4
- package/src/recognition/DeepgramSTT.ts +16 -16
- package/src/recognition/GoogleCloudSTT.ts +14 -12
- package/src/recognition/OpenAICloudSTT.ts +12 -6
- package/src/recognition/WhisperCommon.ts +130 -0
- package/src/recognition/{WhisperCppSTT.ts → WhisperCppCliSTT.ts} +73 -133
- package/src/recognition/WhisperSTT.ts +569 -718
- package/src/server/Client.ts +4 -4
- package/src/server/Worker.ts +59 -59
- package/src/source-separation/MDXNetSourceSeparation.ts +15 -10
- package/src/speech-embeddings/WavToVec2BertFeatureEmbeddings.ts +7 -5
- package/src/speech-language-detection/SileroLanguageDetection.ts +18 -9
- package/src/speech-search/DTWSpeechSearch.ts +6 -5
- package/src/subtitles/Subtitles.ts +22 -22
- package/src/synthesis/AwsPollyTTS.ts +12 -5
- package/src/synthesis/AzureCognitiveServicesTTS.ts +11 -3
- package/src/synthesis/CoquiServerTTS.ts +8 -7
- package/src/synthesis/DeepgramTTS.ts +21 -15
- package/src/synthesis/ElevenLabsTTS.ts +33 -23
- package/src/synthesis/EspeakTTS.ts +158 -71
- package/src/synthesis/FliteTTS.ts +3 -3
- package/src/synthesis/GnuSpeechTTS.ts +2 -2
- package/src/synthesis/GoogleCloudTTS.ts +23 -14
- package/src/synthesis/GoogleTranslateTTS.ts +19 -11
- package/src/synthesis/KokoroTTS.ts +37 -14
- package/src/synthesis/MicrosoftEdgeTTS.ts +71 -23
- package/src/synthesis/OpenAICloudTTS.ts +7 -6
- package/src/synthesis/SamTTS.ts +3 -2
- package/src/synthesis/SapiTTS.ts +3 -3
- package/src/synthesis/SvoxPicoTTS.ts +4 -5
- package/src/synthesis/VitsTTS.ts +43 -15
- package/src/text-translation/DeepLTextTranslation.ts +12 -10
- package/src/text-translation/GoogleTranslateTextTranslation.ts +35 -21
- package/src/text-translation/NLLBTextTranslation.ts +5 -9
- package/src/typings/Fillers.d.ts +0 -60
- package/src/typings/TypedArray.ts +12 -1
- package/src/utilities/Compression.ts +10 -9
- package/src/utilities/FileDownloader.ts +38 -23
- package/src/utilities/FileSystem.ts +1 -1
- package/src/utilities/Logger.ts +59 -42
- package/src/utilities/NpmUtilities.ts +4 -6
- package/src/utilities/OpenPromise.ts +1 -2
- package/src/utilities/PackageManager.ts +53 -26
- package/src/utilities/PathUtilities.ts +6 -2
- package/src/utilities/TarballMaker.ts +7 -7
- package/src/utilities/Utilities.ts +58 -41
- package/src/utilities/WebReader.ts +11 -6
- package/src/utilities/WikipediaReader.ts +2 -8
- package/src/voice-activity-detection/AdaptiveGateVAD.ts +13 -8
- package/src/voice-activity-detection/WebRtcVAD.ts +1 -2
- package/tsconfig.json +53 -54
- package/dist/audio/AudioRecorder.d.ts +0 -4
- package/dist/audio/AudioRecorder.d.ts.map +0 -1
- package/dist/audio/AudioRecorder.js +0 -68
- package/dist/audio/AudioRecorder.js.map +0 -1
- package/dist/audio/SoxPath.d.ts +0 -2
- package/dist/audio/SoxPath.d.ts.map +0 -1
- package/dist/audio/SoxPath.js +0 -24
- package/dist/audio/SoxPath.js.map +0 -1
- package/dist/recognition/SileroSTT.d.ts +0 -30
- package/dist/recognition/SileroSTT.d.ts.map +0 -1
- package/dist/recognition/SileroSTT.js +0 -152
- package/dist/recognition/SileroSTT.js.map +0 -1
- package/dist/recognition/VoskSTT.d.ts +0 -11
- package/dist/recognition/VoskSTT.d.ts.map +0 -1
- package/dist/recognition/VoskSTT.js +0 -72
- package/dist/recognition/VoskSTT.js.map +0 -1
- package/dist/recognition/WhisperCppSTT.d.ts.map +0 -1
- package/dist/recognition/WhisperCppSTT.js.map +0 -1
- package/dist/synthesis/StreamlabsPollyTTS.d.ts +0 -12
- package/dist/synthesis/StreamlabsPollyTTS.d.ts.map +0 -1
- package/dist/synthesis/StreamlabsPollyTTS.js +0 -88
- package/dist/synthesis/StreamlabsPollyTTS.js.map +0 -1
- package/dist/utilities/BinaryUtilities.d.ts +0 -14
- package/dist/utilities/BinaryUtilities.d.ts.map +0 -1
- package/dist/utilities/BinaryUtilities.js +0 -113
- package/dist/utilities/BinaryUtilities.js.map +0 -1
- package/src/audio/AudioRecorder.ts +0 -91
- package/src/audio/SoxPath.ts +0 -31
- package/src/recognition/SileroSTT.ts +0 -222
- package/src/recognition/VoskSTT.ts +0 -112
- package/src/synthesis/StreamlabsPollyTTS.ts +0 -114
- package/src/utilities/BinaryUtilities.ts +0 -138
- /package/{LICENSE.md → LICENSE.GPLv3.md} +0 -0
|
@@ -1,38 +1,40 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as API from './API.js';
|
|
1
3
|
import { attenuateIfClippingInPlace, ensureRawAudio, subtractAudio } from '../audio/AudioUtilities.js';
|
|
2
4
|
import { Logger } from '../utilities/Logger.js';
|
|
3
5
|
import { extendDeep } from '../utilities/ObjectUtilities.js';
|
|
4
6
|
import { loadPackage } from '../utilities/PackageManager.js';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
7
|
import { readdir } from '../utilities/FileSystem.js';
|
|
7
8
|
import { defaultMDXNetOptions, getProfileForMDXNetModelName } from '../source-separation/MDXNetSourceSeparation.js';
|
|
8
9
|
import { joinPath } from '../utilities/PathUtilities.js';
|
|
9
|
-
export async function isolate(input, options) {
|
|
10
|
-
|
|
10
|
+
export async function isolate(input, options, callbacks) {
|
|
11
|
+
options = extendDeep(defaultSourceSeparationOptions, options);
|
|
12
|
+
callbacks = { logLevel: API.getGlobalLogLevel(), ...callbacks };
|
|
13
|
+
const logger = new Logger(callbacks.logLevel);
|
|
11
14
|
const startTimestamp = logger.getTimestamp();
|
|
12
|
-
const inputRawAudio = await ensureRawAudio(input);
|
|
15
|
+
const inputRawAudio = await ensureRawAudio(input, undefined, undefined, callbacks);
|
|
13
16
|
let isolatedRawAudio;
|
|
14
17
|
let backgroundRawAudio;
|
|
15
|
-
options = extendDeep(defaultSourceSeparationOptions, options);
|
|
16
18
|
switch (options.engine) {
|
|
17
19
|
case 'mdx-net': {
|
|
18
20
|
const MDXNetSourceSeparation = await import('../source-separation/MDXNetSourceSeparation.js');
|
|
19
21
|
const mdxNetOptions = options.mdxNet;
|
|
20
|
-
const packageDir = await loadPackage(`mdxnet-${mdxNetOptions.model}
|
|
22
|
+
const packageDir = await loadPackage(`mdxnet-${mdxNetOptions.model}`, callbacks);
|
|
21
23
|
const modelFilename = (await readdir(packageDir)).filter(name => name.endsWith('onnx'))[0];
|
|
22
24
|
if (!modelFilename) {
|
|
23
25
|
throw new Error(`Couldn't find an ONNX model file in package directory`);
|
|
24
26
|
}
|
|
25
27
|
const modelPath = joinPath(packageDir, modelFilename);
|
|
26
28
|
await logger.startAsync(`Convert audio to 44.1 kHz stereo`);
|
|
27
|
-
let inputRawAudioAs44100Stereo = await ensureRawAudio(inputRawAudio, 44100, 2);
|
|
29
|
+
let inputRawAudioAs44100Stereo = await ensureRawAudio(inputRawAudio, 44100, 2, callbacks);
|
|
28
30
|
logger.end();
|
|
29
31
|
const modelProfile = getProfileForMDXNetModelName(mdxNetOptions.model);
|
|
30
|
-
isolatedRawAudio = await MDXNetSourceSeparation.isolate(inputRawAudioAs44100Stereo, modelPath, modelProfile, mdxNetOptions);
|
|
32
|
+
isolatedRawAudio = await MDXNetSourceSeparation.isolate(inputRawAudioAs44100Stereo, modelPath, modelProfile, mdxNetOptions, callbacks);
|
|
31
33
|
logger.end();
|
|
32
34
|
// Release memory for the converted input audio since it's not needed anymore
|
|
33
35
|
inputRawAudioAs44100Stereo = undefined;
|
|
34
36
|
await logger.startAsync(`Convert isolated audio back to original sample rate (${inputRawAudio.sampleRate} Hz) and channel count (${inputRawAudio.audioChannels.length})`);
|
|
35
|
-
isolatedRawAudio = await ensureRawAudio(isolatedRawAudio, inputRawAudio.sampleRate, inputRawAudio.audioChannels.length);
|
|
37
|
+
isolatedRawAudio = await ensureRawAudio(isolatedRawAudio, inputRawAudio.sampleRate, inputRawAudio.audioChannels.length, callbacks);
|
|
36
38
|
await logger.startAsync(`Subtract from original waveform to extract background audio`);
|
|
37
39
|
backgroundRawAudio = subtractAudio(inputRawAudio, isolatedRawAudio);
|
|
38
40
|
break;
|
|
@@ -45,7 +47,7 @@ export async function isolate(input, options) {
|
|
|
45
47
|
attenuateIfClippingInPlace(isolatedRawAudio);
|
|
46
48
|
attenuateIfClippingInPlace(backgroundRawAudio);
|
|
47
49
|
logger.end();
|
|
48
|
-
logger.logDuration(`Total source separation time`, startTimestamp, chalk.magentaBright);
|
|
50
|
+
logger.logDuration(`Total source separation time`, startTimestamp, 'info', chalk.magentaBright);
|
|
49
51
|
return {
|
|
50
52
|
inputRawAudio,
|
|
51
53
|
isolatedRawAudio,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceSeparation.js","sourceRoot":"","sources":["../../src/api/SourceSeparation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,0BAA0B,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,
|
|
1
|
+
{"version":3,"file":"SourceSeparation.js","sourceRoot":"","sources":["../../src/api/SourceSeparation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,32 @@
|
|
|
1
|
-
import { AudioSourceParam, RawAudio } from '../audio/AudioUtilities.js';
|
|
2
1
|
import * as API from './API.js';
|
|
2
|
+
import { AudioSourceParam, RawAudio } from '../audio/AudioUtilities.js';
|
|
3
3
|
import { type WhisperLanguageDetectionOptions } from '../recognition/WhisperSTT.js';
|
|
4
|
-
import { type
|
|
4
|
+
import { type WhisperCppCliOptions } from '../recognition/WhisperCppCliSTT.js';
|
|
5
5
|
import { type SileroLanguageDetectionOptions } from '../speech-language-detection/SileroLanguageDetection.js';
|
|
6
6
|
import { LanguageDetectionResults } from './LanguageDetectionCommon.js';
|
|
7
|
-
export declare function detectSpeechLanguage(input: AudioSourceParam, options: SpeechLanguageDetectionOptions): Promise<SpeechLanguageDetectionResult>;
|
|
7
|
+
export declare function detectSpeechLanguage(input: AudioSourceParam, options: SpeechLanguageDetectionOptions, callbacks?: SpeechLanguageDetectionCallbacks): Promise<SpeechLanguageDetectionResult>;
|
|
8
8
|
export interface SpeechLanguageDetectionResult {
|
|
9
9
|
detectedLanguage: string;
|
|
10
10
|
detectedLanguageName: string;
|
|
11
11
|
detectedLanguageProbabilities: LanguageDetectionResults;
|
|
12
12
|
inputRawAudio: RawAudio;
|
|
13
13
|
}
|
|
14
|
-
export declare function detectSpeechLanguageByParts(sourceRawAudio: RawAudio, getResultsForAudioPart: (audioPart: RawAudio) => Promise<LanguageDetectionResults>,
|
|
14
|
+
export declare function detectSpeechLanguageByParts(sourceRawAudio: RawAudio, getResultsForAudioPart: (audioPart: RawAudio) => Promise<LanguageDetectionResults>, maxAudioPartDuration?: number, hopDuration?: number, callbacks?: SpeechLanguageDetectionCallbacks): Promise<LanguageDetectionResults>;
|
|
15
15
|
export type SpeechLanguageDetectionEngine = 'silero' | 'whisper' | 'whisper.cpp';
|
|
16
|
-
export interface SpeechLanguageDetectionOptions {
|
|
16
|
+
export interface SpeechLanguageDetectionOptions extends API.OperationOptions {
|
|
17
17
|
engine?: SpeechLanguageDetectionEngine;
|
|
18
18
|
defaultLanguage?: string;
|
|
19
19
|
fallbackThresholdProbability?: number;
|
|
20
20
|
crop?: boolean;
|
|
21
21
|
silero?: SileroLanguageDetectionOptions;
|
|
22
22
|
whisper?: WhisperLanguageDetectionOptions;
|
|
23
|
-
whisperCpp?:
|
|
24
|
-
vad?: API.
|
|
23
|
+
whisperCpp?: WhisperCppCliOptions;
|
|
24
|
+
vad?: API.VoiceActivityDetectionOptions;
|
|
25
25
|
}
|
|
26
26
|
export declare const defaultSpeechLanguageDetectionOptions: SpeechLanguageDetectionOptions;
|
|
27
|
+
export interface SpeechLanguageDetectionCallbacks extends API.OperationCallbacks {
|
|
28
|
+
onPart?: SpeechLanguageDetectionPartCallback;
|
|
29
|
+
}
|
|
30
|
+
export type SpeechLanguageDetectionPartCallback = (partResults: LanguageDetectionResults, partStartTime: number, partEndTime: number) => Promise<void>;
|
|
27
31
|
export declare const speechLanguageDetectionEngines: API.EngineMetadata[];
|
|
28
32
|
//# sourceMappingURL=SpeechLanguageDetection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechLanguageDetection.d.ts","sourceRoot":"","sources":["../../src/api/SpeechLanguageDetection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SpeechLanguageDetection.d.ts","sourceRoot":"","sources":["../../src/api/SpeechLanguageDetection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAI/B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAsG,MAAM,4BAA4B,CAAA;AAG3K,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,8BAA8B,CAAA;AAGnF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,yDAAyD,CAAA;AAE7G,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAGvE,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,8BAA8B,EAAE,SAAS,CAAC,EAAE,gCAAgC,GAAG,OAAO,CAAC,6BAA6B,CAAC,CA+IjM;AAED,MAAM,WAAW,6BAA6B;IAC7C,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,6BAA6B,EAAE,wBAAwB,CAAA;IACvD,aAAa,EAAE,QAAQ,CAAA;CACvB;AAED,wBAAsB,2BAA2B,CAAC,cAAc,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC,wBAAwB,CAAC,EAAE,oBAAoB,SAAK,EAAE,WAAW,SAAK,EAAE,SAAS,CAAC,EAAE,gCAAgC,qCA2DxP;AAED,MAAM,MAAM,6BAA6B,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAA;AAEhF,MAAM,WAAW,8BAA+B,SAAQ,GAAG,CAAC,gBAAgB;IAC3E,MAAM,CAAC,EAAE,6BAA6B,CAAA;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4BAA4B,CAAC,EAAE,MAAM,CAAA;IAErC,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd,MAAM,CAAC,EAAE,8BAA8B,CAAA;IAEvC,OAAO,CAAC,EAAE,+BAA+B,CAAA;IAEzC,UAAU,CAAC,EAAE,oBAAoB,CAAA;IAEjC,GAAG,CAAC,EAAE,GAAG,CAAC,6BAA6B,CAAA;CACvC;AAED,eAAO,MAAM,qCAAqC,EAAE,8BAsBnD,CAAA;AAED,MAAM,WAAW,gCAAiC,SAAQ,GAAG,CAAC,kBAAkB;IAC/E,MAAM,CAAC,EAAE,mCAAmC,CAAA;CAC5C;AAED,MAAM,MAAM,mCAAmC,GAAG,CAAC,WAAW,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEtJ,eAAO,MAAM,8BAA8B,EAAE,GAAG,CAAC,cAAc,EAmB9D,CAAA"}
|
|
@@ -1,25 +1,24 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as API from './API.js';
|
|
1
3
|
import { deepClone, extendDeep } from '../utilities/ObjectUtilities.js';
|
|
2
4
|
import { ensureRawAudio, getRawAudioDuration, normalizeAudioLevelInPlace, sliceRawAudioByTime, trimAudioEnd } from '../audio/AudioUtilities.js';
|
|
3
5
|
import { Logger } from '../utilities/Logger.js';
|
|
4
|
-
import * as API from './API.js';
|
|
5
|
-
import { logToStderr } from '../utilities/Utilities.js';
|
|
6
6
|
import { formatLanguageCodeWithName, languageCodeToName } from '../utilities/Locale.js';
|
|
7
7
|
import { loadPackage } from '../utilities/PackageManager.js';
|
|
8
|
-
import chalk from 'chalk';
|
|
9
8
|
import { joinPath } from '../utilities/PathUtilities.js';
|
|
10
|
-
|
|
11
|
-
export async function detectSpeechLanguage(input, options) {
|
|
12
|
-
const logger = new Logger();
|
|
13
|
-
const startTime = logger.getTimestamp();
|
|
9
|
+
export async function detectSpeechLanguage(input, options, callbacks) {
|
|
14
10
|
options = extendDeep(defaultSpeechLanguageDetectionOptions, options);
|
|
15
|
-
|
|
11
|
+
callbacks = { logLevel: API.getGlobalLogLevel(), ...callbacks };
|
|
12
|
+
const logger = new Logger(callbacks.logLevel);
|
|
13
|
+
const startTime = logger.getTimestamp();
|
|
14
|
+
const inputRawAudio = await ensureRawAudio(input, undefined, undefined, callbacks);
|
|
16
15
|
logger.start(`Resample audio to 16kHz mono`);
|
|
17
|
-
let sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1);
|
|
16
|
+
let sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1, callbacks);
|
|
18
17
|
normalizeAudioLevelInPlace(sourceRawAudio);
|
|
19
18
|
sourceRawAudio.audioChannels[0] = trimAudioEnd(sourceRawAudio.audioChannels[0]);
|
|
20
19
|
if (options.crop) {
|
|
21
20
|
logger.start('Crop using voice activity detection');
|
|
22
|
-
({ croppedRawAudio: sourceRawAudio } = await API.detectVoiceActivity(sourceRawAudio, options.vad));
|
|
21
|
+
({ croppedRawAudio: sourceRawAudio } = await API.detectVoiceActivity(sourceRawAudio, options.vad, { ...callbacks, logLevel: 'warning' }));
|
|
23
22
|
logger.end();
|
|
24
23
|
}
|
|
25
24
|
logger.start(`Initialize ${options.engine} module`);
|
|
@@ -31,30 +30,33 @@ export async function detectSpeechLanguage(input, options) {
|
|
|
31
30
|
const SileroLanguageDetection = await import('../speech-language-detection/SileroLanguageDetection.js');
|
|
32
31
|
logger.end();
|
|
33
32
|
const sileroOptions = options.silero;
|
|
34
|
-
const modelDir = await loadPackage('silero-lang-classifier-95');
|
|
33
|
+
const modelDir = await loadPackage('silero-lang-classifier-95', callbacks);
|
|
35
34
|
const modelPath = joinPath(modelDir, 'lang_classifier_95.onnx');
|
|
36
35
|
const languageDictionaryPath = joinPath(modelDir, 'lang_dict_95.json');
|
|
37
36
|
const languageGroupDictionaryPath = joinPath(modelDir, 'lang_group_dict_95.json');
|
|
38
37
|
const onnxExecutionProviders = sileroOptions.provider ? [sileroOptions.provider] : [];
|
|
39
|
-
const languageResults = await SileroLanguageDetection.detectLanguage(sourceRawAudio, modelPath, languageDictionaryPath, languageGroupDictionaryPath, onnxExecutionProviders);
|
|
38
|
+
const languageResults = await SileroLanguageDetection.detectLanguage(sourceRawAudio, modelPath, languageDictionaryPath, languageGroupDictionaryPath, onnxExecutionProviders, callbacks);
|
|
40
39
|
detectedLanguageProbabilities = languageResults;
|
|
41
40
|
break;
|
|
42
41
|
}
|
|
43
42
|
case 'whisper': {
|
|
44
43
|
const WhisperSTT = await import('../recognition/WhisperSTT.js');
|
|
45
|
-
const
|
|
46
|
-
const
|
|
44
|
+
const WhisperCommon = await import('../recognition/WhisperCommon.js');
|
|
45
|
+
const whisperOptions = extendDeep(WhisperSTT.defaultWhisperLanguageDetectionOptions, options.whisper);
|
|
46
|
+
const { modelId, modelPath } = await WhisperCommon.loadModelPackage(whisperOptions.model, undefined, callbacks);
|
|
47
|
+
const { libPath } = await WhisperSTT.loadLibraryPackages(whisperOptions.enableGPU, callbacks);
|
|
47
48
|
logger.end();
|
|
48
|
-
detectedLanguageProbabilities = await WhisperSTT.detectLanguage(sourceRawAudio,
|
|
49
|
+
detectedLanguageProbabilities = await WhisperSTT.detectLanguage(sourceRawAudio, modelId, modelPath, libPath, whisperOptions, callbacks);
|
|
49
50
|
break;
|
|
50
51
|
}
|
|
51
52
|
case 'whisper.cpp': {
|
|
52
|
-
const
|
|
53
|
-
const
|
|
53
|
+
const WhisperCppCliSTT = await import('../recognition/WhisperCppCliSTT.js');
|
|
54
|
+
const WhisperCommon = await import('../recognition/WhisperCommon.js');
|
|
55
|
+
const whisperCppCliOptions = options.whisperCpp;
|
|
54
56
|
logger.end();
|
|
55
|
-
const {
|
|
57
|
+
const { modelId, modelPath } = await WhisperCommon.loadModelPackage(whisperCppCliOptions.model, undefined, callbacks);
|
|
56
58
|
logger.end();
|
|
57
|
-
detectedLanguageProbabilities = await
|
|
59
|
+
detectedLanguageProbabilities = await WhisperCppCliSTT.detectLanguage(sourceRawAudio, modelId, modelPath, callbacks);
|
|
58
60
|
break;
|
|
59
61
|
}
|
|
60
62
|
default: {
|
|
@@ -70,7 +72,7 @@ export async function detectSpeechLanguage(input, options) {
|
|
|
70
72
|
detectedLanguage = detectedLanguageProbabilities[0].language;
|
|
71
73
|
}
|
|
72
74
|
logger.end();
|
|
73
|
-
logger.logDuration('\nTotal language detection time', startTime, chalk.magentaBright);
|
|
75
|
+
logger.logDuration('\nTotal language detection time', startTime, 'info', chalk.magentaBright);
|
|
74
76
|
return {
|
|
75
77
|
detectedLanguage,
|
|
76
78
|
detectedLanguageName: languageCodeToName(detectedLanguage),
|
|
@@ -78,19 +80,21 @@ export async function detectSpeechLanguage(input, options) {
|
|
|
78
80
|
inputRawAudio,
|
|
79
81
|
};
|
|
80
82
|
}
|
|
81
|
-
export async function detectSpeechLanguageByParts(sourceRawAudio, getResultsForAudioPart,
|
|
82
|
-
|
|
83
|
+
export async function detectSpeechLanguageByParts(sourceRawAudio, getResultsForAudioPart, maxAudioPartDuration = 30, hopDuration = 25, callbacks) {
|
|
84
|
+
callbacks = { logLevel: API.getGlobalLogLevel(), ...callbacks };
|
|
85
|
+
const logger = new Logger(callbacks.logLevel);
|
|
83
86
|
const audioDuration = getRawAudioDuration(sourceRawAudio);
|
|
84
87
|
if (audioDuration === 0) {
|
|
85
88
|
return [];
|
|
86
89
|
}
|
|
87
90
|
const resultsForParts = [];
|
|
88
91
|
for (let audioTimeOffset = 0; audioTimeOffset < audioDuration; audioTimeOffset += hopDuration) {
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
callbacks?.abortSignal?.throwIfAborted();
|
|
93
|
+
const startTimeOffset = audioTimeOffset;
|
|
94
|
+
const endTimeOffset = Math.min(audioTimeOffset + maxAudioPartDuration, audioDuration);
|
|
95
|
+
const audioPartDuration = endTimeOffset - startTimeOffset;
|
|
96
|
+
logger.logTitledMessage(`\nDetect speech language starting at audio offset`, `${startTimeOffset.toFixed(1)}`, 'info', chalk.magentaBright);
|
|
97
|
+
const audioPart = sliceRawAudioByTime(sourceRawAudio, startTimeOffset, endTimeOffset);
|
|
94
98
|
const resultsForPart = await getResultsForAudioPart(audioPart);
|
|
95
99
|
resultsForParts.push(resultsForPart);
|
|
96
100
|
const sortedResultsForPart = deepClone(resultsForPart).sort((a, b) => b.probability - a.probability);
|
|
@@ -99,7 +103,10 @@ export async function detectSpeechLanguageByParts(sourceRawAudio, getResultsForA
|
|
|
99
103
|
topCandidatesStrings.push(`${formatLanguageCodeWithName(sortedResultsForPart[i].language)}: ${sortedResultsForPart[i].probability.toFixed(3)}`);
|
|
100
104
|
}
|
|
101
105
|
logger.logTitledMessage(`Top candidates`, topCandidatesStrings.join(', '));
|
|
102
|
-
if (
|
|
106
|
+
if (callbacks?.onPart) {
|
|
107
|
+
callbacks.onPart(sortedResultsForPart, startTimeOffset, endTimeOffset);
|
|
108
|
+
}
|
|
109
|
+
if (audioPartDuration < maxAudioPartDuration) {
|
|
103
110
|
break;
|
|
104
111
|
}
|
|
105
112
|
}
|
|
@@ -147,8 +154,8 @@ export const speechLanguageDetectionEngines = [
|
|
|
147
154
|
},
|
|
148
155
|
{
|
|
149
156
|
id: 'whisper.cpp',
|
|
150
|
-
name: 'OpenAI Whisper (C++ port)',
|
|
151
|
-
description: 'Uses the language tokens produced by
|
|
157
|
+
name: 'OpenAI Whisper (C++ port) CLI',
|
|
158
|
+
description: 'Uses the language tokens produced by whisper.cpp to classify the spoken langauge.',
|
|
152
159
|
type: 'local'
|
|
153
160
|
},
|
|
154
161
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechLanguageDetection.js","sourceRoot":"","sources":["../../src/api/SpeechLanguageDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAEvE,OAAO,EAA8B,cAAc,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC3K,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"SpeechLanguageDetection.js","sourceRoot":"","sources":["../../src/api/SpeechLanguageDetection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { AudioSourceParam } from "../audio/AudioUtilities.js";
|
|
2
|
+
import { OperationCallbacks } from "./Common.js";
|
|
2
3
|
export declare function searchSpeech(inputAudio: AudioSourceParam, text: string, options: SpeechSearchOptions): Promise<SpeechSearchResult>;
|
|
3
|
-
export interface SpeechSearchOptions {
|
|
4
|
+
export interface SpeechSearchOptions extends OperationCallbacks {
|
|
4
5
|
}
|
|
5
6
|
export interface SpeechSearchResult {
|
|
6
7
|
}
|
|
8
|
+
export interface SpeechSearchCallbacks extends OperationCallbacks {
|
|
9
|
+
}
|
|
7
10
|
//# sourceMappingURL=SpeechSearch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechSearch.d.ts","sourceRoot":"","sources":["../../src/api/SpeechSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"SpeechSearch.d.ts","sourceRoot":"","sources":["../../src/api/SpeechSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAsB,YAAY,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAExI;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;CAE9D;AAED,MAAM,WAAW,kBAAkB;CAClC;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;CAEhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechSearch.js","sourceRoot":"","sources":["../../src/api/SpeechSearch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SpeechSearch.js","sourceRoot":"","sources":["../../src/api/SpeechSearch.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAA4B,EAAE,IAAY,EAAE,OAA4B;IAC1G,OAAO,EAAE,CAAA;AACV,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as API from './API.js';
|
|
2
2
|
import { AudioSourceParam, RawAudio } from '../audio/AudioUtilities.js';
|
|
3
3
|
import { Timeline } from '../utilities/Timeline.js';
|
|
4
|
-
import { WhisperPartCallback, type
|
|
4
|
+
import { type WhisperOptions, type WhisperPartCallback, type WhisperTokenCallback } from '../recognition/WhisperSTT.js';
|
|
5
5
|
import { type EngineMetadata } from './Common.js';
|
|
6
6
|
import { type SpeechLanguageDetectionOptions } from './API.js';
|
|
7
7
|
import { type SubtitlesConfig } from '../subtitles/Subtitles.js';
|
|
8
8
|
import { type OpenAICloudSTTOptions } from '../recognition/OpenAICloudSTT.js';
|
|
9
|
-
import { type
|
|
10
|
-
export declare function translateSpeech(input: AudioSourceParam, options: SpeechTranslationOptions,
|
|
9
|
+
import { type WhisperCppCliOptions } from '../recognition/WhisperCppCliSTT.js';
|
|
10
|
+
export declare function translateSpeech(input: AudioSourceParam, options: SpeechTranslationOptions, callbacks?: SpeechTranslationCallbacks): Promise<SpeechTranslationResult>;
|
|
11
11
|
export interface SpeechTranslationResult {
|
|
12
12
|
transcript: string;
|
|
13
13
|
timeline: Timeline;
|
|
@@ -19,7 +19,7 @@ export interface SpeechTranslationResult {
|
|
|
19
19
|
backgroundRawAudio?: RawAudio;
|
|
20
20
|
}
|
|
21
21
|
export type SpeechTranslationEngine = 'whisper' | 'whisper.cpp' | 'openai-cloud';
|
|
22
|
-
export interface SpeechTranslationOptions {
|
|
22
|
+
export interface SpeechTranslationOptions extends API.OperationOptions {
|
|
23
23
|
engine?: SpeechTranslationEngine;
|
|
24
24
|
sourceLanguage?: string;
|
|
25
25
|
targetLanguage?: string;
|
|
@@ -27,12 +27,16 @@ export interface SpeechTranslationOptions {
|
|
|
27
27
|
isolate?: boolean;
|
|
28
28
|
languageDetection?: SpeechLanguageDetectionOptions;
|
|
29
29
|
subtitles?: SubtitlesConfig;
|
|
30
|
-
vad?: API.
|
|
30
|
+
vad?: API.VoiceActivityDetectionOptions;
|
|
31
31
|
sourceSeparation?: API.SourceSeparationOptions;
|
|
32
32
|
whisper?: WhisperOptions;
|
|
33
|
-
whisperCpp?:
|
|
33
|
+
whisperCpp?: WhisperCppCliOptions;
|
|
34
34
|
openAICloud?: OpenAICloudSTTOptions;
|
|
35
35
|
}
|
|
36
36
|
export declare const defaultSpeechTranslationOptions: SpeechTranslationOptions;
|
|
37
|
+
export interface SpeechTranslationCallbacks extends API.OperationCallbacks {
|
|
38
|
+
onPart?: WhisperPartCallback;
|
|
39
|
+
onToken?: WhisperTokenCallback;
|
|
40
|
+
}
|
|
37
41
|
export declare const speechTranslationEngines: EngineMetadata[];
|
|
38
42
|
//# sourceMappingURL=SpeechTranslation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechTranslation.d.ts","sourceRoot":"","sources":["../../src/api/SpeechTranslation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAK/B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAA4D,MAAM,4BAA4B,CAAA;AAGjI,OAAO,EAAE,QAAQ,EAA8E,MAAM,0BAA0B,CAAA;AAC/H,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SpeechTranslation.d.ts","sourceRoot":"","sources":["../../src/api/SpeechTranslation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAK/B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAA4D,MAAM,4BAA4B,CAAA;AAGjI,OAAO,EAAE,QAAQ,EAA8E,MAAM,0BAA0B,CAAA;AAC/H,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAG,MAAM,8BAA8B,CAAA;AAExH,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,KAAK,8BAA8B,EAAwB,MAAM,UAAU,CAAA;AACpF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEhE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAO9E,wBAAsB,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAkP1K;AAED,MAAM,WAAW,uBAAuB;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,QAAQ,CAAA;IAEvB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IAEtB,aAAa,EAAE,QAAQ,CAAA;IACvB,gBAAgB,CAAC,EAAE,QAAQ,CAAA;IAC3B,kBAAkB,CAAC,EAAE,QAAQ,CAAA;CAC7B;AAED,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,CAAA;AAEhF,MAAM,WAAW,wBAAyB,SAAQ,GAAG,CAAC,gBAAgB;IACrE,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAEhC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,iBAAiB,CAAC,EAAE,8BAA8B,CAAA;IAClD,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,GAAG,CAAC,EAAE,GAAG,CAAC,6BAA6B,CAAA;IACvC,gBAAgB,CAAC,EAAE,GAAG,CAAC,uBAAuB,CAAA;IAE9C,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,WAAW,CAAC,EAAE,qBAAqB,CAAA;CACnC;AAED,eAAO,MAAM,+BAA+B,EAAE,wBA0B7C,CAAA;AAED,MAAM,WAAW,0BAA2B,SAAQ,GAAG,CAAC,kBAAkB;IACzE,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC9B;AAED,eAAO,MAAM,wBAAwB,EAAE,cAAc,EAmBpD,CAAA"}
|
|
@@ -11,31 +11,30 @@ const log = logToStderr;
|
|
|
11
11
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
12
12
|
// Speech translation
|
|
13
13
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
14
|
-
export async function translateSpeech(input, options,
|
|
15
|
-
const logger = new Logger();
|
|
16
|
-
const startTimestamp = logger.getTimestamp();
|
|
14
|
+
export async function translateSpeech(input, options, callbacks) {
|
|
17
15
|
options = extendDeep(defaultSpeechTranslationOptions, options);
|
|
18
|
-
|
|
16
|
+
callbacks = { logLevel: API.getGlobalLogLevel(), ...callbacks };
|
|
17
|
+
const logger = new Logger(callbacks.logLevel);
|
|
18
|
+
const startTimestamp = logger.getTimestamp();
|
|
19
|
+
const inputRawAudio = await ensureRawAudio(input, undefined, undefined, callbacks);
|
|
19
20
|
let sourceRawAudio;
|
|
20
21
|
let isolatedRawAudio;
|
|
21
22
|
let backgroundRawAudio;
|
|
22
23
|
if (options.isolate) {
|
|
23
|
-
logger.
|
|
24
|
-
logger.
|
|
25
|
-
({ isolatedRawAudio, backgroundRawAudio } = await API.isolate(inputRawAudio, options.sourceSeparation));
|
|
24
|
+
logger.logTitledMessage(`Isolate vocals`, '');
|
|
25
|
+
({ isolatedRawAudio, backgroundRawAudio } = await API.isolate(inputRawAudio, options.sourceSeparation, { ...callbacks, logLevel: logger.logLevel }));
|
|
26
26
|
logger.end();
|
|
27
|
-
logger.log(``);
|
|
28
27
|
logger.start(`Resample audio to 16kHz mono`);
|
|
29
|
-
sourceRawAudio = await ensureRawAudio(isolatedRawAudio, 16000, 1);
|
|
28
|
+
sourceRawAudio = await ensureRawAudio(isolatedRawAudio, 16000, 1, callbacks);
|
|
30
29
|
}
|
|
31
30
|
else {
|
|
32
31
|
logger.start(`Resample audio to 16kHz mono`);
|
|
33
|
-
sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1);
|
|
32
|
+
sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1, callbacks);
|
|
34
33
|
}
|
|
35
34
|
let sourceUncropTimeline;
|
|
36
35
|
if (options.crop) {
|
|
37
36
|
logger.start('Crop using voice activity detection');
|
|
38
|
-
({ timeline: sourceUncropTimeline, croppedRawAudio: sourceRawAudio } = await API.detectVoiceActivity(sourceRawAudio, options.vad));
|
|
37
|
+
({ timeline: sourceUncropTimeline, croppedRawAudio: sourceRawAudio } = await API.detectVoiceActivity(sourceRawAudio, options.vad, { ...callbacks, logLevel: 'warning' }));
|
|
39
38
|
logger.end();
|
|
40
39
|
}
|
|
41
40
|
logger.start('Normalize and trim audio');
|
|
@@ -49,7 +48,7 @@ export async function translateSpeech(input, options, onPart) {
|
|
|
49
48
|
}
|
|
50
49
|
else {
|
|
51
50
|
logger.start('No source language specified. Detect speech language');
|
|
52
|
-
const { detectedLanguage } = await detectSpeechLanguage(sourceRawAudio, options.languageDetection
|
|
51
|
+
const { detectedLanguage } = await detectSpeechLanguage(sourceRawAudio, options.languageDetection, { abortSignal: callbacks.abortSignal, logLevel: 'warning' });
|
|
53
52
|
options.sourceLanguage = detectedLanguage;
|
|
54
53
|
logger.end();
|
|
55
54
|
logger.logTitledMessage('Source language detected', formatLanguageCodeWithName(detectedLanguage));
|
|
@@ -67,38 +66,41 @@ export async function translateSpeech(input, options, onPart) {
|
|
|
67
66
|
switch (engine) {
|
|
68
67
|
case 'whisper': {
|
|
69
68
|
const WhisperSTT = await import('../recognition/WhisperSTT.js');
|
|
70
|
-
const
|
|
69
|
+
const WhisperCommon = await import('../recognition/WhisperCommon.js');
|
|
70
|
+
const whisperOptions = extendDeep(WhisperSTT.defaultWhisperOptions, options.whisper);
|
|
71
71
|
const shortSourceLanguageCode = getShortLanguageCode(sourceLanguage);
|
|
72
72
|
const shortTargetLanguageCode = getShortLanguageCode(targetLanguage);
|
|
73
|
-
const { modelName, modelDir } = await WhisperSTT.loadPackagesAndGetPaths(whisperOptions.model, shortSourceLanguageCode);
|
|
74
73
|
if (shortTargetLanguageCode != 'en') {
|
|
75
74
|
throw new Error('Whisper translation only supports English as target language');
|
|
76
75
|
}
|
|
77
|
-
if (modelName.endsWith('.en')) {
|
|
78
|
-
throw new Error('Whisper translation tasks are only possible with a multilingual model');
|
|
79
|
-
}
|
|
80
76
|
if (shortSourceLanguageCode == 'en' && shortTargetLanguageCode == 'en') {
|
|
81
77
|
throw new Error('Both translation source and target languages are English');
|
|
82
78
|
}
|
|
79
|
+
const { modelId, modelPath } = await WhisperCommon.loadModelPackage(whisperOptions.model, shortSourceLanguageCode, callbacks);
|
|
80
|
+
const { libPath } = await WhisperSTT.loadLibraryPackages(whisperOptions.enableGPU, callbacks);
|
|
81
|
+
if (modelId.endsWith('.en')) {
|
|
82
|
+
throw new Error(`Whisper translation task is not supported with model '${modelId}', since it's not multilingual model.`);
|
|
83
|
+
}
|
|
83
84
|
logger.end();
|
|
84
|
-
({ transcript, timeline: wordTimeline } = await WhisperSTT.recognize(sourceRawAudio,
|
|
85
|
+
({ transcript, timeline: wordTimeline } = await WhisperSTT.recognize(sourceRawAudio, modelId, modelPath, libPath, 'translate', sourceLanguage, whisperOptions, callbacks));
|
|
85
86
|
break;
|
|
86
87
|
}
|
|
87
88
|
case 'whisper.cpp': {
|
|
88
|
-
const
|
|
89
|
-
const
|
|
89
|
+
const WhisperCppCliSTT = await import('../recognition/WhisperCppCliSTT.js');
|
|
90
|
+
const WhisperCommon = await import('../recognition/WhisperCommon.js');
|
|
91
|
+
const whisperCppCliOptions = options.whisperCpp;
|
|
90
92
|
const shortSourceLanguageCode = getShortLanguageCode(sourceLanguage);
|
|
91
93
|
const shortTargetLanguageCode = getShortLanguageCode(targetLanguage);
|
|
92
94
|
logger.end();
|
|
93
|
-
const {
|
|
95
|
+
const { modelId, modelPath } = await WhisperCommon.loadModelPackage(whisperCppCliOptions.model, shortSourceLanguageCode, callbacks);
|
|
94
96
|
if (shortTargetLanguageCode != 'en') {
|
|
95
97
|
throw new Error('Whisper.cpp translation only supports English as target language');
|
|
96
98
|
}
|
|
97
|
-
if (
|
|
99
|
+
if (modelId.endsWith('.en')) {
|
|
98
100
|
throw new Error('Whisper.cpp translation tasks are only possible with a multilingual model');
|
|
99
101
|
}
|
|
100
102
|
logger.end();
|
|
101
|
-
({ transcript, timeline: wordTimeline } = await
|
|
103
|
+
({ transcript, timeline: wordTimeline } = await WhisperCppCliSTT.recognize(sourceRawAudio, 'translate', shortSourceLanguageCode, modelId, modelPath, whisperCppCliOptions, callbacks));
|
|
102
104
|
break;
|
|
103
105
|
}
|
|
104
106
|
case 'openai-cloud': {
|
|
@@ -113,7 +115,7 @@ export async function translateSpeech(input, options, onPart) {
|
|
|
113
115
|
throw new Error('OpenAI cloud speech translation only supports English as target language');
|
|
114
116
|
}
|
|
115
117
|
logger.end();
|
|
116
|
-
({ transcript, timeline: segmentTimeline } = await OpenAICloudSTT.recognize(sourceRawAudio, shortSourceLanguageCode, openAICloudSTTOptions, 'translate'));
|
|
118
|
+
({ transcript, timeline: segmentTimeline } = await OpenAICloudSTT.recognize(sourceRawAudio, shortSourceLanguageCode, openAICloudSTTOptions, 'translate', callbacks));
|
|
117
119
|
break;
|
|
118
120
|
}
|
|
119
121
|
default: {
|
|
@@ -137,7 +139,7 @@ export async function translateSpeech(input, options, onPart) {
|
|
|
137
139
|
({ segmentTimeline } = await wordTimelineToSegmentSentenceTimeline(wordTimeline, transcript, targetLanguage, 'single', 'preserve'));
|
|
138
140
|
}
|
|
139
141
|
logger.log('');
|
|
140
|
-
logger.logDuration(`Total speech translation time`, startTimestamp, chalk.magentaBright);
|
|
142
|
+
logger.logDuration(`Total speech translation time`, startTimestamp, 'info', chalk.magentaBright);
|
|
141
143
|
return {
|
|
142
144
|
transcript,
|
|
143
145
|
timeline: segmentTimeline,
|
|
@@ -173,7 +175,7 @@ export const speechTranslationEngines = [
|
|
|
173
175
|
},
|
|
174
176
|
{
|
|
175
177
|
id: 'whisper.cpp',
|
|
176
|
-
name: 'OpenAI Whisper (C++ port)',
|
|
178
|
+
name: 'OpenAI Whisper (C++ port) CLI',
|
|
177
179
|
description: `Uses Whisper's speech translation capability to produce an English transcript from speech in a different language.`,
|
|
178
180
|
type: 'local'
|
|
179
181
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechTranslation.js","sourceRoot":"","sources":["../../src/api/SpeechTranslation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAA8B,cAAc,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACjI,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,OAAO,EAAY,mCAAmC,EAAE,qCAAqC,EAAE,MAAM,0BAA0B,CAAA;AAE/H,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjJ,OAAO,EAAuC,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAMpF,MAAM,GAAG,GAAG,WAAW,CAAA;AAEvB,6FAA6F;AAC7F,qBAAqB;AACrB,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAuB,EAAE,OAAiC,EAAE,
|
|
1
|
+
{"version":3,"file":"SpeechTranslation.js","sourceRoot":"","sources":["../../src/api/SpeechTranslation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAA8B,cAAc,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACjI,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,OAAO,EAAY,mCAAmC,EAAE,qCAAqC,EAAE,MAAM,0BAA0B,CAAA;AAE/H,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjJ,OAAO,EAAuC,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAMpF,MAAM,GAAG,GAAG,WAAW,CAAA;AAEvB,6FAA6F;AAC7F,qBAAqB;AACrB,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAuB,EAAE,OAAiC,EAAE,SAAsC;IACvI,OAAO,GAAG,UAAU,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAA;IAC9D,SAAS,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,iBAAiB,EAAE,EAAE,GAAG,SAAS,EAAE,CAAA;IAE/D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAE7C,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;IAE5C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;IAElF,IAAI,cAAwB,CAAA;IAC5B,IAAI,gBAAsC,CAAA;IAC1C,IAAI,kBAAwC,CAAA;IAE5C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAE9C,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO,CAC5D,aAAa,EACb,OAAO,CAAC,gBAAiB,EACzB,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAE9C,MAAM,CAAC,GAAG,EAAE,CAAA;QAEZ,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC5C,cAAc,GAAG,MAAM,cAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IAC7E,CAAC;SAAM,CAAC;QACP,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC5C,cAAc,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,oBAA0C,CAAA;IAE9C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpD,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,MAAM,GAAG,CAAC,mBAAmB,CACnG,cAAc,EACd,OAAO,CAAC,GAAI,EACZ,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QAExC,MAAM,CAAC,GAAG,EAAE,CAAA;IACb,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAExC,0BAA0B,CAAC,cAAc,CAAC,CAAA;IAC1C,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAE/E,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAEtE,OAAO,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,CAAA;QAE1C,MAAM,CAAC,GAAG,EAAE,CAAA;QACZ,MAAM,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;IACzG,CAAC;SAAM,CAAC;QACP,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACpE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,oBAAoB,CACtD,cAAc,EACd,OAAO,CAAC,iBAAkB,EAC1B,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,CAC3D,CAAA;QAED,OAAO,CAAC,cAAc,GAAG,gBAAgB,CAAA;QAEzC,MAAM,CAAC,GAAG,EAAE,CAAA;QACZ,MAAM,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAClG,CAAC;IAED,OAAO,CAAC,cAAc,GAAG,MAAM,iCAAiC,CAAC,OAAO,CAAC,cAAe,CAAC,CAAA;IAEzF,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;IAE9F,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;IAEhD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAO,CAAA;IAC9B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAe,CAAA;IAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAe,CAAA;IAE9C,IAAI,UAAkB,CAAA;IACtB,IAAI,YAAkC,CAAA;IACtC,IAAI,eAAqC,CAAA;IAEzC,MAAM,CAAC,KAAK,CAAC,QAAQ,MAAM,SAAS,CAAC,CAAA;IAErC,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,SAAS,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAA;YAC/D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAA;YAErE,MAAM,cAAc,GAAoB,UAAU,CAAC,UAAU,CAAC,qBAAqB,EAAE,OAAO,CAAC,OAAQ,CAAC,CAAA;YAEtG,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;YACpE,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;YAEpE,IAAI,uBAAuB,IAAI,IAAI,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;YAChF,CAAC;YAED,IAAI,uBAAuB,IAAI,IAAI,IAAI,uBAAuB,IAAI,IAAI,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;YAC5E,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAClE,cAAc,CAAC,KAAK,EACpB,uBAAuB,EACvB,SAAS,CACT,CAAA;YAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,mBAAmB,CACvD,cAAc,CAAC,SAAS,EACxB,SAAS,CACT,CAAA;YAED,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,uCAAuC,CAAC,CAAA;YACzH,CAAC;YAED,MAAM,CAAC,GAAG,EAAE,CAAC;YAEb,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CACnE,cAAc,EACd,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,cAAc,EACd,cAAc,EACd,SAAS,CACT,CAAC,CAAA;YAEF,MAAK;QACN,CAAC;QAED,KAAK,aAAa,EAAE,CAAC;YACpB,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAA;YAC3E,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAA;YAErE,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAW,CAAA;YAEhD,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;YACpE,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;YAEpE,MAAM,CAAC,GAAG,EAAE,CAAA;YAEZ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAClE,oBAAoB,CAAC,KAAK,EAC1B,uBAAuB,EACvB,SAAS,CACT,CAAA;YAED,IAAI,uBAAuB,IAAI,IAAI,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACpF,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;YAC7F,CAAC;YAED,MAAM,CAAC,GAAG,EAAE,CAAC;YAEb,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,gBAAgB,CAAC,SAAS,CACzE,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,SAAS,CACT,CAAC,CAAA;YAEF,MAAK;QACN,CAAC;QAED,KAAK,cAAc,EAAE,CAAC;YACrB,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAEvE,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAY,CAAA;YAElD,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;YACpD,CAAC;YAED,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;YACpE,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;YAEpE,IAAI,uBAAuB,IAAI,IAAI,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;YAC5F,CAAC;YAED,MAAM,CAAC,GAAG,EAAE,CAAC;YAEb,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,cAAc,CAAC,SAAS,CAC1E,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,WAAW,EACX,SAAS,CACT,CAAC,CAAA;YAEF,MAAK;QACN,CAAC;QAED,SAAS,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAC,MAAM,oBAAoB,CAAC,CAAA;QAC/D,CAAC;IACF,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,CAAA;IAEZ,6FAA6F;IAC7F,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,IAAI,YAAY,EAAE,CAAC;YAClB,GAAG,CAAC,iCAAiC,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;QAC1E,CAAC;aAAM,IAAI,eAAe,EAAE,CAAC;YAC5B,GAAG,CAAC,iCAAiC,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAA;QAC7E,CAAC;IACF,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QAClB,mCAAmC,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IAC9D,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACtB,CAAC,EAAE,eAAe,EAAE,GAAG,MAAM,qCAAqC,CAAC,YAAa,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IACrI,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACd,MAAM,CAAC,WAAW,CAAC,+BAA+B,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAEhG,OAAO;QACN,UAAU;QACV,QAAQ,EAAE,eAAe;QACzB,YAAY;QAEZ,cAAc;QACd,cAAc;QAEd,aAAa;QACb,gBAAgB;QAChB,kBAAkB;KAClB,CAAA;AACF,CAAC;AAoCD,MAAM,CAAC,MAAM,+BAA+B,GAA6B;IACxE,MAAM,EAAE,SAAS;IAEjB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,IAAI;IAEpB,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,KAAK;IAEd,iBAAiB,EAAE,SAAS;IAE5B,SAAS,EAAE,EACV;IAED,GAAG,EAAE;QACJ,MAAM,EAAE,eAAe;KACvB;IAED,OAAO,EAAE,EACR;IAED,UAAU,EAAE,EACX;IAED,WAAW,EAAE,EACZ;CACD,CAAA;AAOD,MAAM,CAAC,MAAM,wBAAwB,GAAqB;IACzD;QACC,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oHAAoH;QACjI,IAAI,EAAE,OAAO;KACb;IACD;QACC,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,oHAAoH;QACjI,IAAI,EAAE,OAAO;KACb;IACD;QACC,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,+FAA+F;QAC5G,IAAI,EAAE,OAAO;KACb;CACD,CAAA"}
|