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.
- package/README.md +15 -14
- package/data/schemas/options.json +398 -111
- package/dist/alignment/DTWMfccSequenceAlignment.d.ts +1 -1
- package/dist/alignment/DTWMfccSequenceAlignment.js +8 -8
- package/dist/alignment/DTWSequenceAlignment.d.ts +1 -1
- package/dist/alignment/DTWSequenceAlignment.js +1 -1
- package/dist/alignment/DTWSequenceAlignmentWindowed.d.ts +1 -1
- package/dist/alignment/DTWSequenceAlignmentWindowed.js +2 -2
- package/dist/alignment/LevenshteinSequenceAlignment.d.ts +1 -1
- package/dist/alignment/LevenshteinSequenceAlignment.js +1 -1
- package/dist/alignment/SpeechAlignment.d.ts +9 -10
- package/dist/alignment/SpeechAlignment.js +136 -105
- package/dist/alignment/SpeechAlignment.js.map +1 -1
- package/dist/api/API.d.ts +13 -12
- package/dist/api/API.js +14 -13
- package/dist/api/API.js.map +1 -1
- package/dist/api/APIOptions.d.ts +5 -4
- package/dist/api/Alignment.d.ts +15 -9
- package/dist/api/Alignment.js +88 -74
- package/dist/api/Alignment.js.map +1 -1
- package/dist/api/Common.js +1 -1
- package/dist/api/Denoising.d.ts +6 -6
- package/dist/api/Denoising.js +23 -23
- package/dist/api/Denoising.js.map +1 -1
- package/dist/api/LanguageDetection.d.ts +19 -12
- package/dist/api/LanguageDetection.js +88 -38
- package/dist/api/LanguageDetection.js.map +1 -1
- package/dist/api/Recognition.d.ts +16 -6
- package/dist/api/Recognition.js +129 -55
- package/dist/api/Recognition.js.map +1 -1
- package/dist/api/SourceSeparation.d.ts +17 -0
- package/dist/api/SourceSeparation.js +61 -0
- package/dist/api/SourceSeparation.js.map +1 -0
- package/dist/api/Synthesis.d.ts +18 -18
- package/dist/api/Synthesis.js +191 -164
- package/dist/api/Synthesis.js.map +1 -1
- package/dist/api/Translation.d.ts +19 -8
- package/dist/api/Translation.js +132 -35
- package/dist/api/Translation.js.map +1 -1
- package/dist/api/Vad.d.ts +10 -5
- package/dist/api/Vad.js +76 -38
- package/dist/api/Vad.js.map +1 -1
- package/dist/audio/AudioBufferConversion.d.ts +1 -1
- package/dist/audio/AudioBufferConversion.js +4 -4
- package/dist/audio/AudioPlayer.d.ts +1 -1
- package/dist/audio/AudioPlayer.js +26 -26
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/audio/AudioRecorder.d.ts +1 -1
- package/dist/audio/AudioRecorder.js +5 -5
- package/dist/audio/AudioUtilities.d.ts +13 -9
- package/dist/audio/AudioUtilities.js +86 -24
- package/dist/audio/AudioUtilities.js.map +1 -1
- package/dist/cli/CLI.d.ts +3 -3
- package/dist/cli/CLI.js +271 -162
- package/dist/cli/CLI.js.map +1 -1
- package/dist/cli/CLIConfigFile.js +8 -8
- package/dist/cli/CLILauncher.js +6 -6
- package/dist/cli/CLIOptionsSchema.js +2 -2
- package/dist/cli/CLIParser.js +5 -5
- package/dist/cli/CLIStarter.js +4 -4
- package/dist/codecs/FFMpegTranscoder.d.ts +2 -2
- package/dist/codecs/FFMpegTranscoder.js +37 -37
- package/dist/codecs/FFMpegTranscoder.js.map +1 -1
- package/dist/codecs/TIMITCodec.js +5 -5
- package/dist/codecs/WaveCodec.d.ts +1 -1
- package/dist/codecs/WaveCodec.js +22 -22
- package/dist/denoising/RNNoise.d.ts +1 -1
- package/dist/denoising/RNNoise.js +9 -9
- package/dist/dsp/BiquadFilter.d.ts +3 -2
- package/dist/dsp/BiquadFilter.js +18 -11
- package/dist/dsp/BiquadFilter.js.map +1 -1
- package/dist/dsp/DecayingPeakEstimator.d.ts +16 -0
- package/dist/dsp/DecayingPeakEstimator.js +23 -0
- package/dist/dsp/DecayingPeakEstimator.js.map +1 -0
- package/dist/dsp/FFT.d.ts +8 -4
- package/dist/dsp/FFT.js +76 -30
- package/dist/dsp/FFT.js.map +1 -1
- package/dist/dsp/KWeightingFilter.d.ts +9 -0
- package/dist/dsp/KWeightingFilter.js +40 -0
- package/dist/dsp/KWeightingFilter.js.map +1 -0
- package/dist/dsp/LoudnessEstimator.d.ts +21 -0
- package/dist/dsp/LoudnessEstimator.js +47 -0
- package/dist/dsp/LoudnessEstimator.js.map +1 -0
- package/dist/dsp/MFCC.d.ts +2 -2
- package/dist/dsp/MFCC.js +15 -15
- package/dist/dsp/MelSpectogram.d.ts +1 -1
- package/dist/dsp/MelSpectogram.js +6 -6
- package/dist/dsp/Rubberband.d.ts +11 -11
- package/dist/dsp/Rubberband.js +27 -27
- package/dist/dsp/Sonic.d.ts +1 -1
- package/dist/dsp/Sonic.js +3 -3
- package/dist/dsp/SpeexResampler.d.ts +1 -1
- package/dist/dsp/SpeexResampler.js +2 -2
- package/dist/math/VectorMath.d.ts +12 -8
- package/dist/math/VectorMath.js +35 -32
- package/dist/math/VectorMath.js.map +1 -1
- package/dist/nlp/ChineseSegmentation.js +2 -2
- package/dist/nlp/CompromiseNLP.js +3 -3
- package/dist/nlp/EspeakPhonemizer.js +30 -30
- package/dist/nlp/IPA.js +20 -20
- package/dist/nlp/JapaneseSegmentation.js +6 -6
- package/dist/nlp/Lexicon.d.ts +1 -1
- package/dist/nlp/Lexicon.js +7 -7
- package/dist/nlp/Segmentation.d.ts +3 -0
- package/dist/nlp/Segmentation.js +21 -14
- package/dist/nlp/Segmentation.js.map +1 -1
- package/dist/nlp/TextNormalizer.js +16 -16
- package/dist/recognition/AmazonTranscribeSTT.d.ts +2 -2
- package/dist/recognition/AmazonTranscribeSTT.js +13 -14
- package/dist/recognition/AmazonTranscribeSTT.js.map +1 -1
- package/dist/recognition/AzureCognitiveServicesSTT.js +5 -6
- package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -1
- package/dist/recognition/GoogleCloudSTT.d.ts +3 -3
- package/dist/recognition/GoogleCloudSTT.js +18 -18
- package/dist/recognition/OpenAICloudSTT.d.ts +19 -0
- package/dist/recognition/OpenAICloudSTT.js +81 -0
- package/dist/recognition/OpenAICloudSTT.js.map +1 -0
- package/dist/recognition/SileroSTT.d.ts +2 -2
- package/dist/recognition/SileroSTT.js +25 -25
- package/dist/recognition/VoskSTT.d.ts +2 -2
- package/dist/recognition/VoskSTT.js +8 -8
- package/dist/recognition/WhisperCppSTT.d.ts +88 -0
- package/dist/recognition/WhisperCppSTT.js +332 -0
- package/dist/recognition/WhisperCppSTT.js.map +1 -0
- package/dist/recognition/WhisperSTT.d.ts +49 -25
- package/dist/recognition/WhisperSTT.js +626 -481
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/server/Client.d.ts +1 -1
- package/dist/server/Client.js +22 -22
- package/dist/server/Server.js +9 -9
- package/dist/server/Server.js.map +1 -1
- package/dist/server/Worker.d.ts +22 -22
- package/dist/server/Worker.js +36 -36
- package/dist/server/Worker.js.map +1 -1
- package/dist/server/WorkerStarter.js +2 -2
- package/dist/source-separation/MDXNetSourceSeparation.d.ts +11 -0
- package/dist/source-separation/MDXNetSourceSeparation.js +161 -0
- package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -0
- package/dist/speech-language-detection/SileroLanguageDetection.d.ts +1 -1
- package/dist/speech-language-detection/SileroLanguageDetection.js +7 -7
- package/dist/subtitles/Subtitles.d.ts +10 -0
- package/dist/subtitles/Subtitles.js +2 -2
- package/dist/subtitles/Subtitles.js.map +1 -1
- package/dist/synthesis/AwsPollyTTS.d.ts +1 -1
- package/dist/synthesis/AwsPollyTTS.js +12 -12
- package/dist/synthesis/AzureCognitiveServicesTTS.js +7 -7
- package/dist/synthesis/CoquiServerTTS.js +10 -10
- package/dist/synthesis/CoquiServerTTS.js.map +1 -1
- package/dist/synthesis/ElevenlabsTTS.d.ts +23 -0
- package/dist/synthesis/ElevenlabsTTS.js +103 -0
- package/dist/synthesis/ElevenlabsTTS.js.map +1 -0
- package/dist/synthesis/EspeakTTS.d.ts +6 -5
- package/dist/synthesis/EspeakTTS.js +81 -69
- package/dist/synthesis/EspeakTTS.js.map +1 -1
- package/dist/synthesis/FliteTTS.d.ts +3 -3
- package/dist/synthesis/FliteTTS.js +154 -154
- package/dist/synthesis/FliteTTS.js.map +1 -1
- package/dist/synthesis/GoogleCloudTTS.d.ts +3 -3
- package/dist/synthesis/GoogleCloudTTS.js +17 -17
- package/dist/synthesis/GoogleCloudTTS.js.map +1 -1
- package/dist/synthesis/GoogleTranslateTTS.d.ts +1 -1
- package/dist/synthesis/GoogleTranslateTTS.js +103 -103
- package/dist/synthesis/MicrosoftEdgeTTS.d.ts +2 -2
- package/dist/synthesis/MicrosoftEdgeTTS.js +74 -74
- package/dist/synthesis/OpenAICloudTTS.d.ts +13 -0
- package/dist/synthesis/OpenAICloudTTS.js +169 -0
- package/dist/synthesis/OpenAICloudTTS.js.map +1 -0
- package/dist/synthesis/SamTTS.js +3 -3
- package/dist/synthesis/SapiTTS.d.ts +3 -3
- package/dist/synthesis/SapiTTS.js +26 -26
- package/dist/synthesis/StreamlabsPollyTTS.d.ts +2 -2
- package/dist/synthesis/StreamlabsPollyTTS.js +27 -27
- package/dist/synthesis/SvoxPicoTTS.d.ts +2 -2
- package/dist/synthesis/SvoxPicoTTS.js +65 -65
- package/dist/synthesis/SvoxPicoTTS.js.map +1 -1
- package/dist/synthesis/VitsTTS.d.ts +3 -3
- package/dist/synthesis/VitsTTS.js +378 -378
- package/dist/synthesis/VitsTTS.js.map +1 -1
- package/dist/tests/Test.js +2 -2
- package/dist/utilities/Compression.d.ts +5 -0
- package/dist/utilities/Compression.js +29 -13
- package/dist/utilities/Compression.js.map +1 -1
- package/dist/utilities/FileDownloader.d.ts +1 -1
- package/dist/utilities/FileDownloader.js +16 -16
- package/dist/utilities/FileSystem.js +7 -7
- package/dist/utilities/Locale.d.ts +7 -7
- package/dist/utilities/Locale.js +15 -15
- package/dist/utilities/Logger.js +3 -3
- package/dist/utilities/ObjectUtilities.js +19 -19
- package/dist/utilities/OpenPromise.js +2 -2
- package/dist/utilities/OpenPromise.js.map +1 -1
- package/dist/utilities/PackageManager.js +31 -0
- package/dist/utilities/PackageManager.js.map +1 -1
- package/dist/utilities/PathUtilities.js +8 -8
- package/dist/utilities/RandomGenerator.js +2 -2
- package/dist/utilities/SmoothEstimator.d.ts +8 -0
- package/dist/utilities/SmoothEstimator.js +25 -0
- package/dist/utilities/SmoothEstimator.js.map +1 -0
- package/dist/utilities/TarballMaker.js +8 -8
- package/dist/utilities/Timeline.d.ts +3 -2
- package/dist/utilities/Timeline.js +11 -11
- package/dist/utilities/Timeline.js.map +1 -1
- package/dist/utilities/Timer.js +4 -4
- package/dist/utilities/Utilities.d.ts +4 -0
- package/dist/utilities/Utilities.js +38 -15
- package/dist/utilities/Utilities.js.map +1 -1
- package/dist/utilities/WasmMemoryManager.js +7 -7
- package/dist/utilities/WebReader.js +23 -23
- package/dist/utilities/WikipediaReader.js +2 -2
- package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts +28 -0
- package/dist/voice-activity-detection/AdaptiveGateVAD.js +138 -0
- package/dist/voice-activity-detection/AdaptiveGateVAD.js.map +1 -0
- package/dist/voice-activity-detection/SileroVAD.d.ts +1 -1
- package/dist/voice-activity-detection/SileroVAD.js +5 -5
- package/dist/voice-activity-detection/SileroVAD.js.map +1 -1
- package/dist/voice-activity-detection/WebRtcVAD.d.ts +1 -1
- package/dist/voice-activity-detection/WebRtcVAD.js +4 -4
- package/docs/API.md +29 -11
- package/docs/CLI.md +31 -7
- package/docs/Contributing.md +38 -0
- package/docs/Development.md +93 -19
- package/docs/Engines.md +28 -16
- package/docs/Licenses.md +4 -1
- package/docs/Options.md +158 -78
- package/docs/Releases.md +262 -0
- package/docs/Server.md +7 -7
- package/docs/Tasklist.md +95 -76
- package/docs/Technical.md +4 -4
- package/package.json +13 -14
- package/src/alignment/DTWMfccSequenceAlignment.ts +9 -9
- package/src/alignment/DTWSequenceAlignment.ts +2 -2
- package/src/alignment/DTWSequenceAlignmentWindowed.ts +3 -3
- package/src/alignment/LevenshteinSequenceAlignment.ts +2 -2
- package/src/alignment/SpeechAlignment.ts +204 -119
- package/src/api/API.ts +14 -13
- package/src/api/APIOptions.ts +12 -11
- package/src/api/Alignment.ts +147 -90
- package/src/api/Common.ts +1 -1
- package/src/api/Denoising.ts +28 -28
- package/src/api/LanguageDetection.ts +135 -48
- package/src/api/Recognition.ts +198 -59
- package/src/api/SourceSeparation.ts +99 -0
- package/src/api/Synthesis.ts +217 -181
- package/src/api/Translation.ts +193 -40
- package/src/api/Vad.ts +110 -41
- package/src/audio/AudioBufferConversion.ts +4 -4
- package/src/audio/AudioPlayer.ts +27 -27
- package/src/audio/AudioRecorder.ts +5 -5
- package/src/audio/AudioUtilities.ts +107 -24
- package/src/cli/CLI.ts +313 -164
- package/src/cli/CLIConfigFile.ts +8 -8
- package/src/cli/CLILauncher.ts +6 -6
- package/src/cli/CLIOptionsSchema.ts +2 -2
- package/src/cli/CLIParser.ts +5 -5
- package/src/cli/CLIStarter.ts +4 -4
- package/src/codecs/FFMpegTranscoder.ts +38 -38
- package/src/codecs/TIMITCodec.ts +5 -5
- package/src/codecs/WaveCodec.ts +22 -22
- package/src/denoising/RNNoise.ts +9 -9
- package/src/dsp/BiquadFilter.ts +19 -11
- package/src/dsp/DecayingPeakEstimator.ts +35 -0
- package/src/dsp/FFT.ts +103 -35
- package/src/dsp/KWeightingFilter.ts +43 -0
- package/src/dsp/LoudnessEstimator.ts +74 -0
- package/src/dsp/MFCC.ts +15 -15
- package/src/dsp/MelSpectogram.ts +7 -7
- package/src/dsp/Rubberband.ts +38 -38
- package/src/dsp/Sonic.ts +4 -4
- package/src/dsp/SpeexResampler.ts +2 -2
- package/src/math/VectorMath.ts +42 -33
- package/src/nlp/ChineseSegmentation.ts +3 -3
- package/src/nlp/CompromiseNLP.ts +3 -3
- package/src/nlp/EspeakPhonemizer.ts +30 -30
- package/src/nlp/IPA.ts +20 -20
- package/src/nlp/JapaneseSegmentation.ts +6 -6
- package/src/nlp/Lexicon.ts +8 -8
- package/src/nlp/Segmentation.ts +23 -14
- package/src/nlp/TextNormalizer.ts +16 -16
- package/src/recognition/AmazonTranscribeSTT.ts +16 -17
- package/src/recognition/AzureCognitiveServicesSTT.ts +8 -6
- package/src/recognition/GoogleCloudSTT.ts +21 -21
- package/src/recognition/OpenAICloudSTT.ts +142 -0
- package/src/recognition/SileroSTT.ts +26 -26
- package/src/recognition/VoskSTT.ts +10 -10
- package/src/recognition/WhisperCppSTT.ts +555 -0
- package/src/recognition/WhisperSTT.ts +760 -507
- package/src/server/Client.ts +23 -23
- package/src/server/Server.ts +9 -9
- package/src/server/Worker.ts +53 -53
- package/src/server/WorkerStarter.ts +2 -2
- package/src/source-separation/MDXNetSourceSeparation.ts +228 -0
- package/src/speech-language-detection/SileroLanguageDetection.ts +8 -8
- package/src/subtitles/Subtitles.ts +3 -3
- package/src/synthesis/AwsPollyTTS.ts +14 -14
- package/src/synthesis/AzureCognitiveServicesTTS.ts +10 -10
- package/src/synthesis/CoquiServerTTS.ts +10 -10
- package/src/synthesis/ElevenlabsTTS.ts +137 -0
- package/src/synthesis/EspeakTTS.ts +90 -71
- package/src/synthesis/FliteTTS.ts +157 -157
- package/src/synthesis/GoogleCloudTTS.ts +19 -19
- package/src/synthesis/GoogleTranslateTTS.ts +104 -104
- package/src/synthesis/MicrosoftEdgeTTS.ts +80 -80
- package/src/synthesis/OpenAICloudTTS.ts +196 -0
- package/src/synthesis/SamTTS.ts +3 -3
- package/src/synthesis/SapiTTS.ts +29 -29
- package/src/synthesis/StreamlabsPollyTTS.ts +29 -29
- package/src/synthesis/SvoxPicoTTS.ts +67 -67
- package/src/synthesis/VitsTTS.ts +380 -380
- package/src/tests/Test.ts +4 -4
- package/src/utilities/Compression.ts +34 -13
- package/src/utilities/FileDownloader.ts +19 -19
- package/src/utilities/FileSystem.ts +7 -7
- package/src/utilities/Locale.ts +22 -22
- package/src/utilities/Logger.ts +4 -4
- package/src/utilities/ObjectUtilities.ts +19 -19
- package/src/utilities/OpenPromise.ts +2 -2
- package/src/utilities/PackageManager.ts +40 -0
- package/src/utilities/PathUtilities.ts +8 -8
- package/src/utilities/RandomGenerator.ts +3 -3
- package/src/utilities/SmoothEstimator.ts +35 -0
- package/src/utilities/TarballMaker.ts +9 -9
- package/src/utilities/Timeline.ts +15 -13
- package/src/utilities/Timer.ts +4 -4
- package/src/utilities/Utilities.ts +49 -15
- package/src/utilities/WasmMemoryManager.ts +7 -7
- package/src/utilities/WebReader.ts +23 -23
- package/src/utilities/WikipediaReader.ts +2 -2
- package/src/voice-activity-detection/AdaptiveGateVAD.ts +202 -0
- package/src/voice-activity-detection/SileroVAD.ts +5 -5
- package/src/voice-activity-detection/WebRtcVAD.ts +5 -5
- package/dist/synthesis/ElevenLabsTTS.d.ts +0 -8
- package/dist/synthesis/ElevenLabsTTS.js +0 -82
- package/dist/synthesis/ElevenLabsTTS.js.map +0 -1
- package/src/synthesis/ElevenLabsTTS.ts +0 -104
package/dist/codecs/WaveCodec.js
CHANGED
|
@@ -10,27 +10,27 @@ export function encodeWave(rawAudio, bitDepth = 16, sampleFormat = SampleFormat.
|
|
|
10
10
|
const formatSubChunk = new WaveFormat(audioChannels.length, sampleRate, bitDepth, sampleFormat, speakerPositionMask);
|
|
11
11
|
const formatSubChunkBuffer = formatSubChunk.serialize(shouldUseExtensibleFormat);
|
|
12
12
|
const dataSubChunkBuffer = Buffer.alloc(4 + 4 + audioDataLength);
|
|
13
|
-
dataSubChunkBuffer.write(
|
|
13
|
+
dataSubChunkBuffer.write('data', 0, 'ascii');
|
|
14
14
|
dataSubChunkBuffer.writeUint32LE(audioDataLength, 4);
|
|
15
15
|
dataSubChunkBuffer.set(audioBuffer, 8);
|
|
16
16
|
const riffChunkHeaderBuffer = Buffer.alloc(12);
|
|
17
|
-
riffChunkHeaderBuffer.write(
|
|
17
|
+
riffChunkHeaderBuffer.write('RIFF', 0, 'ascii');
|
|
18
18
|
riffChunkHeaderBuffer.writeUint32LE(4 + formatSubChunkBuffer.length + dataSubChunkBuffer.length, 4);
|
|
19
|
-
riffChunkHeaderBuffer.write(
|
|
19
|
+
riffChunkHeaderBuffer.write('WAVE', 8, 'ascii');
|
|
20
20
|
return Buffer.concat([riffChunkHeaderBuffer, formatSubChunkBuffer, dataSubChunkBuffer]);
|
|
21
21
|
}
|
|
22
22
|
export function decodeWave(waveData, ignoreTruncatedChunks = false) {
|
|
23
23
|
let readOffset = 0;
|
|
24
|
-
const riffId = waveData.subarray(readOffset, readOffset + 4).toString(
|
|
25
|
-
if (riffId !=
|
|
26
|
-
throw new Error(
|
|
24
|
+
const riffId = waveData.subarray(readOffset, readOffset + 4).toString('ascii');
|
|
25
|
+
if (riffId != 'RIFF') {
|
|
26
|
+
throw new Error('Not a valid wave file. No RIFF id found at offset 0.');
|
|
27
27
|
}
|
|
28
28
|
readOffset += 4;
|
|
29
29
|
const riffChunkSize = waveData.readUInt32LE(readOffset);
|
|
30
30
|
readOffset += 4;
|
|
31
|
-
const waveId = waveData.subarray(readOffset, readOffset + 4).toString(
|
|
32
|
-
if (waveId !=
|
|
33
|
-
throw new Error(
|
|
31
|
+
const waveId = waveData.subarray(readOffset, readOffset + 4).toString('ascii');
|
|
32
|
+
if (waveId != 'WAVE') {
|
|
33
|
+
throw new Error('Not a valid wave file. No WAVE id found at offset 8.');
|
|
34
34
|
}
|
|
35
35
|
if (riffChunkSize < waveData.length - 8) {
|
|
36
36
|
throw new Error(`RIFF chunk length ${riffChunkSize} is smaller than the remaining size of the buffer (${waveData.length - 8})`);
|
|
@@ -42,19 +42,19 @@ export function decodeWave(waveData, ignoreTruncatedChunks = false) {
|
|
|
42
42
|
let formatSubChunkBodyBuffer;
|
|
43
43
|
const dataBuffers = [];
|
|
44
44
|
while (true) {
|
|
45
|
-
const subChunkIdentifier = waveData.subarray(readOffset, readOffset + 4).toString(
|
|
45
|
+
const subChunkIdentifier = waveData.subarray(readOffset, readOffset + 4).toString('ascii');
|
|
46
46
|
readOffset += 4;
|
|
47
47
|
const subChunkSize = waveData.readUInt32LE(readOffset);
|
|
48
48
|
readOffset += 4;
|
|
49
49
|
if (!ignoreTruncatedChunks && subChunkSize > waveData.length - readOffset) {
|
|
50
50
|
throw new Error(`Encountered a '${subChunkIdentifier}' subchunk with a size of ${subChunkSize} which is greater than the remaining size of the buffer (${waveData.length - readOffset})`);
|
|
51
51
|
}
|
|
52
|
-
if (subChunkIdentifier ==
|
|
52
|
+
if (subChunkIdentifier == 'fmt ') {
|
|
53
53
|
formatSubChunkBodyBuffer = waveData.subarray(readOffset, readOffset + subChunkSize);
|
|
54
54
|
}
|
|
55
|
-
else if (subChunkIdentifier ==
|
|
55
|
+
else if (subChunkIdentifier == 'data') {
|
|
56
56
|
if (!formatSubChunkBodyBuffer) {
|
|
57
|
-
throw new Error(
|
|
57
|
+
throw new Error('A data subchunk was encountered before a format subchunk');
|
|
58
58
|
}
|
|
59
59
|
// If the data chunk is truncated, but truncations are ignored,
|
|
60
60
|
// it would be read up to the end of the buffer
|
|
@@ -70,7 +70,7 @@ export function decodeWave(waveData, ignoreTruncatedChunks = false) {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
if (!formatSubChunkBodyBuffer) {
|
|
73
|
-
throw new Error(
|
|
73
|
+
throw new Error('No format subchunk was found in the wave file');
|
|
74
74
|
}
|
|
75
75
|
const waveFormat = WaveFormat.deserializeFrom(formatSubChunkBodyBuffer);
|
|
76
76
|
const sampleFormat = waveFormat.sampleFormat;
|
|
@@ -116,7 +116,7 @@ class WaveFormat {
|
|
|
116
116
|
}
|
|
117
117
|
const serializedSize = sampleFormatToSerializedSize[sampleFormatId];
|
|
118
118
|
const result = Buffer.alloc(serializedSize);
|
|
119
|
-
result.write(
|
|
119
|
+
result.write('fmt ', 0, 'ascii'); // + 4
|
|
120
120
|
result.writeUint32LE(serializedSize - 8, 4); // + 4
|
|
121
121
|
result.writeUint16LE(sampleFormatId, 8); // + 2
|
|
122
122
|
result.writeUint16LE(this.channelCount, 10); // + 2
|
|
@@ -129,7 +129,7 @@ class WaveFormat {
|
|
|
129
129
|
result.writeUint16LE(this.bitDepth, 26); // + 2 (valid bits per sample)
|
|
130
130
|
result.writeUint32LE(this.speakerPositionMask, 28); // + 2 (speaker position mask)
|
|
131
131
|
if (this.sampleFormat == SampleFormat.PCM || this.sampleFormat == SampleFormat.Float) {
|
|
132
|
-
result.set(Buffer.from(this.guid,
|
|
132
|
+
result.set(Buffer.from(this.guid, 'hex'), 32);
|
|
133
133
|
}
|
|
134
134
|
else {
|
|
135
135
|
throw new Error(`Extensible format is not supported for sample format ${this.sampleFormat}`);
|
|
@@ -148,7 +148,7 @@ class WaveFormat {
|
|
|
148
148
|
throw new Error(`Format subchunk specifies a format id of 65534 (extensible) but its body size is ${formatChunkBody.length} bytes, which is smaller than the minimum expected of 40 bytes`);
|
|
149
149
|
}
|
|
150
150
|
speakerPositionMask = formatChunkBody.readUint16LE(20);
|
|
151
|
-
const guid = formatChunkBody.subarray(24, 40).toString(
|
|
151
|
+
const guid = formatChunkBody.subarray(24, 40).toString('hex');
|
|
152
152
|
if (guid == sampleFormatToGuid[SampleFormat.PCM]) {
|
|
153
153
|
sampleFormat = SampleFormat.PCM;
|
|
154
154
|
}
|
|
@@ -188,7 +188,7 @@ class WaveFormat {
|
|
|
188
188
|
export var SampleFormat;
|
|
189
189
|
(function (SampleFormat) {
|
|
190
190
|
SampleFormat[SampleFormat["PCM"] = 1] = "PCM";
|
|
191
|
-
SampleFormat[SampleFormat["Float"] =
|
|
191
|
+
SampleFormat[SampleFormat["Float"] = 3] = "Float";
|
|
192
192
|
SampleFormat[SampleFormat["Alaw"] = 6] = "Alaw";
|
|
193
193
|
SampleFormat[SampleFormat["Mulaw"] = 7] = "Mulaw";
|
|
194
194
|
})(SampleFormat || (SampleFormat = {}));
|
|
@@ -200,9 +200,9 @@ const sampleFormatToSerializedSize = {
|
|
|
200
200
|
65534: 48
|
|
201
201
|
};
|
|
202
202
|
const sampleFormatToGuid = {
|
|
203
|
-
[SampleFormat.PCM]:
|
|
204
|
-
[SampleFormat.Float]:
|
|
205
|
-
[SampleFormat.Alaw]:
|
|
206
|
-
[SampleFormat.Mulaw]:
|
|
203
|
+
[SampleFormat.PCM]: '0100000000001000800000aa00389b71',
|
|
204
|
+
[SampleFormat.Float]: '0300000000001000800000aa00389b71',
|
|
205
|
+
[SampleFormat.Alaw]: '',
|
|
206
|
+
[SampleFormat.Mulaw]: '',
|
|
207
207
|
};
|
|
208
208
|
//# sourceMappingURL=WaveCodec.js.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { float32ToInt16Pcm } from
|
|
2
|
-
import { concatFloat32Arrays } from
|
|
3
|
-
import { WasmMemoryManager } from
|
|
4
|
-
import { Logger } from
|
|
5
|
-
import { cloneRawAudio } from
|
|
1
|
+
import { float32ToInt16Pcm } from '../audio/AudioBufferConversion.js';
|
|
2
|
+
import { concatFloat32Arrays } from '../utilities/Utilities.js';
|
|
3
|
+
import { WasmMemoryManager } from '../utilities/WasmMemoryManager.js';
|
|
4
|
+
import { Logger } from '../utilities/Logger.js';
|
|
5
|
+
import { cloneRawAudio } from '../audio/AudioUtilities.js';
|
|
6
6
|
let rnnoiseInstance;
|
|
7
7
|
export async function denoiseAudio(rawAudio) {
|
|
8
8
|
const logger = new Logger();
|
|
9
9
|
if (rawAudio.sampleRate != 48000) {
|
|
10
|
-
throw new Error(
|
|
10
|
+
throw new Error('Sample rate must be 48000');
|
|
11
11
|
}
|
|
12
12
|
if (rawAudio.audioChannels.length != 1) {
|
|
13
|
-
throw new Error(
|
|
13
|
+
throw new Error('Channel count must be 1');
|
|
14
14
|
}
|
|
15
15
|
if (rawAudio.audioChannels[0].length == 0) {
|
|
16
16
|
return { denoisedRawAudio: cloneRawAudio(rawAudio), frameVadProbabilities: [] };
|
|
17
17
|
}
|
|
18
|
-
logger.start(
|
|
18
|
+
logger.start('Get RNNoise WASM instance');
|
|
19
19
|
const m = await getRnnoiseInstance();
|
|
20
|
-
logger.start(
|
|
20
|
+
logger.start('Process with RNNoise');
|
|
21
21
|
const wasmMemory = new WasmMemoryManager(m);
|
|
22
22
|
const stateSize = m._rnnoise_get_size();
|
|
23
23
|
const frameSize = m._rnnoise_get_frame_size();
|
|
@@ -18,8 +18,8 @@ export declare class BiquadFilter {
|
|
|
18
18
|
private prevOutput1;
|
|
19
19
|
private prevOutput2;
|
|
20
20
|
constructor(coefficients: FilterCoefficients);
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
filter(sample: number): number;
|
|
22
|
+
filterSamplesInPlace(samples: Float32Array): void;
|
|
23
23
|
reset(): void;
|
|
24
24
|
setCoefficients(coefficients: FilterCoefficients): void;
|
|
25
25
|
}
|
|
@@ -39,3 +39,4 @@ export type FilterCoefficients = {
|
|
|
39
39
|
a1: number;
|
|
40
40
|
a2: number;
|
|
41
41
|
};
|
|
42
|
+
export declare const emptyBiquadCoefficients: FilterCoefficients;
|
package/dist/dsp/BiquadFilter.js
CHANGED
|
@@ -10,28 +10,28 @@
|
|
|
10
10
|
// MDN documentation:
|
|
11
11
|
// https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode
|
|
12
12
|
export function createLowpassFilter(sampleRate, cutoffFrequency, q = 0.7071) {
|
|
13
|
-
return createFilter(
|
|
13
|
+
return createFilter('lowpass', sampleRate, cutoffFrequency, q, 0);
|
|
14
14
|
}
|
|
15
15
|
export function createHighpassFilter(sampleRate, cutoffFrequency, q = 0.7071) {
|
|
16
|
-
return createFilter(
|
|
16
|
+
return createFilter('highpass', sampleRate, cutoffFrequency, q, 0);
|
|
17
17
|
}
|
|
18
18
|
export function createBandpassFilter(sampleRate, centerFrequency, q = 1) {
|
|
19
|
-
return createFilter(
|
|
19
|
+
return createFilter('bandpass', sampleRate, centerFrequency, q, 0);
|
|
20
20
|
}
|
|
21
21
|
export function createLowshelfFilter(sampleRate, midpointFrequency, gain) {
|
|
22
|
-
return createFilter(
|
|
22
|
+
return createFilter('lowshelf', sampleRate, midpointFrequency, 0, gain);
|
|
23
23
|
}
|
|
24
24
|
export function createHighshelfFilter(sampleRate, midpointFrequency, gain) {
|
|
25
|
-
return createFilter(
|
|
25
|
+
return createFilter('highshelf', sampleRate, midpointFrequency, 0, gain);
|
|
26
26
|
}
|
|
27
27
|
export function createPeakingFilter(sampleRate, centerFrequency, q = 1, gain = 0) {
|
|
28
|
-
return createFilter(
|
|
28
|
+
return createFilter('peaking', sampleRate, centerFrequency, q, gain);
|
|
29
29
|
}
|
|
30
30
|
export function createNotchFilter(sampleRate, centerFrequency, q = 1) {
|
|
31
|
-
return createFilter(
|
|
31
|
+
return createFilter('notch', sampleRate, centerFrequency, q, 0);
|
|
32
32
|
}
|
|
33
33
|
export function createAllpassFilter(sampleRate, centerFrequency, q = 1) {
|
|
34
|
-
return createFilter(
|
|
34
|
+
return createFilter('allpass', sampleRate, centerFrequency, q, 0);
|
|
35
35
|
}
|
|
36
36
|
export function createFilter(filterType, sampleRate, frequency, q, gain) {
|
|
37
37
|
const coefficients = getFilterCoefficients(filterType, sampleRate, frequency, q, gain);
|
|
@@ -50,7 +50,7 @@ export class BiquadFilter {
|
|
|
50
50
|
constructor(coefficients) {
|
|
51
51
|
this.setCoefficients(coefficients);
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
filter(sample) {
|
|
54
54
|
const filteredSample = (this.b0 * sample) +
|
|
55
55
|
(this.b1 * this.prevInput1) +
|
|
56
56
|
(this.b2 * this.prevInput2) -
|
|
@@ -62,9 +62,9 @@ export class BiquadFilter {
|
|
|
62
62
|
this.prevOutput1 = filteredSample;
|
|
63
63
|
return filteredSample;
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
filterSamplesInPlace(samples) {
|
|
66
66
|
for (let i = 0; i < samples.length; i++) {
|
|
67
|
-
samples[i] = this.
|
|
67
|
+
samples[i] = this.filter(samples[i]);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
reset() {
|
|
@@ -410,4 +410,11 @@ export const filterTypeName = {
|
|
|
410
410
|
'notch': 'Notch filter',
|
|
411
411
|
'allpass': 'Allpass filter'
|
|
412
412
|
};
|
|
413
|
+
export const emptyBiquadCoefficients = {
|
|
414
|
+
b0: 0,
|
|
415
|
+
b1: 0,
|
|
416
|
+
b2: 0,
|
|
417
|
+
a1: 0,
|
|
418
|
+
a2: 0,
|
|
419
|
+
};
|
|
413
420
|
//# sourceMappingURL=BiquadFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BiquadFilter.js","sourceRoot":"","sources":["../../src/dsp/BiquadFilter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BiquadFilter.js","sourceRoot":"","sources":["../../src/dsp/BiquadFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class DecayingPeakEstimator {
|
|
2
|
+
readonly options: DecayingPeakEstimatorOptions;
|
|
3
|
+
readonly ticksPerSecond: number;
|
|
4
|
+
readonly decayPerTick: number;
|
|
5
|
+
currentPeak: number;
|
|
6
|
+
constructor(options: DecayingPeakEstimatorOptions, ticksPerSecond: number);
|
|
7
|
+
readonly process: (value: number) => void;
|
|
8
|
+
private processMaximum;
|
|
9
|
+
private processMinimum;
|
|
10
|
+
}
|
|
11
|
+
export interface DecayingPeakEstimatorOptions {
|
|
12
|
+
kind: DecayingPeakEstimatorKind;
|
|
13
|
+
decayPerSecond: number;
|
|
14
|
+
initialPeak: number;
|
|
15
|
+
}
|
|
16
|
+
export type DecayingPeakEstimatorKind = 'maximum' | 'minimum';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export class DecayingPeakEstimator {
|
|
2
|
+
options;
|
|
3
|
+
ticksPerSecond;
|
|
4
|
+
decayPerTick;
|
|
5
|
+
currentPeak;
|
|
6
|
+
constructor(options, ticksPerSecond) {
|
|
7
|
+
this.options = options;
|
|
8
|
+
this.ticksPerSecond = ticksPerSecond;
|
|
9
|
+
this.currentPeak = options.initialPeak;
|
|
10
|
+
this.decayPerTick = this.options.decayPerSecond / this.ticksPerSecond;
|
|
11
|
+
this.process = options.kind === 'maximum' ? this.processMaximum : this.processMinimum;
|
|
12
|
+
}
|
|
13
|
+
process;
|
|
14
|
+
processMaximum(value) {
|
|
15
|
+
this.currentPeak -= this.decayPerTick;
|
|
16
|
+
this.currentPeak = Math.max(value, this.currentPeak);
|
|
17
|
+
}
|
|
18
|
+
processMinimum(value) {
|
|
19
|
+
this.currentPeak += this.decayPerTick;
|
|
20
|
+
this.currentPeak = Math.min(value, this.currentPeak);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=DecayingPeakEstimator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecayingPeakEstimator.js","sourceRoot":"","sources":["../../src/dsp/DecayingPeakEstimator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAqB;IAMhB;IACA;IAND,YAAY,CAAQ;IAEpC,WAAW,CAAQ;IAEnB,YACiB,OAAqC,EACrC,cAAsB;QADtB,YAAO,GAAP,OAAO,CAA8B;QACrC,mBAAc,GAAd,cAAc,CAAQ;QAEtC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAErE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAA;IACtF,CAAC;IAEe,OAAO,CAAyB;IAExC,cAAc,CAAC,KAAa;QACnC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACrD,CAAC;IAEO,cAAc,CAAC,KAAa;QACnC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACrD,CAAC;CACD"}
|
package/dist/dsp/FFT.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { RawAudio } from
|
|
2
|
-
|
|
3
|
-
export declare function
|
|
1
|
+
import { RawAudio } from '../audio/AudioUtilities.js';
|
|
2
|
+
import { ComplexNumber } from '../math/VectorMath.js';
|
|
3
|
+
export declare function stftr(samples: Float32Array, fftOrder: number, windowSize: number, hopSize: number, windowType: WindowType): Promise<Float32Array[]>;
|
|
4
|
+
export declare function stiftr(binsForFrames: Float32Array[], fftOrder: number, windowSize: number, hopSize: number, windowType: WindowType, expectedOutputLength?: number): Promise<Float32Array>;
|
|
4
5
|
export declare function getBinFrequencies(binCount: number, maxFrequency: number): Float32Array;
|
|
5
6
|
export declare function fftFramesToPowerSpectogram(fftFrames: Float32Array[]): Float32Array[];
|
|
6
7
|
export declare function fftFrameToPowerSpectrum(fftFrame: Float32Array): Float32Array;
|
|
8
|
+
export declare function binBufferToComplex(bins: Float32Array, extendAndMirror?: boolean): ComplexNumber[];
|
|
9
|
+
export declare function complexToBinBuffer(complexBins: ComplexNumber[]): Float32Array;
|
|
7
10
|
export declare function getKissFFTInstance(): Promise<any>;
|
|
11
|
+
export declare function getWindowWeights(windowType: WindowType, windowSize: number): Float32Array;
|
|
8
12
|
export declare function testFFT1(rawAudio: RawAudio): Promise<RawAudio>;
|
|
9
|
-
export type WindowType =
|
|
13
|
+
export type WindowType = 'hann' | 'hamming';
|
package/dist/dsp/FFT.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { concatFloat32Arrays } from
|
|
2
|
-
import { WasmMemoryManager } from
|
|
1
|
+
import { concatFloat32Arrays } from '../utilities/Utilities.js';
|
|
2
|
+
import { WasmMemoryManager } from '../utilities/WasmMemoryManager.js';
|
|
3
3
|
let kissFFTInstance;
|
|
4
|
-
export async function stftr(samples, fftOrder, windowSize,
|
|
4
|
+
export async function stftr(samples, fftOrder, windowSize, hopSize, windowType) {
|
|
5
5
|
if (fftOrder % 2 != 0 || windowSize % 2 != 0) {
|
|
6
|
-
throw new Error(
|
|
6
|
+
throw new Error('FFT order and window size must multiples of 2');
|
|
7
7
|
}
|
|
8
8
|
if (windowSize > fftOrder) {
|
|
9
|
-
throw new Error(
|
|
9
|
+
throw new Error('Window size must be lesser or equal to the FFT size');
|
|
10
|
+
}
|
|
11
|
+
if (hopSize > windowSize) {
|
|
12
|
+
throw new Error('Hop size must be lesser or equal to the window size');
|
|
10
13
|
}
|
|
11
14
|
const halfWindowSize = windowSize / 2;
|
|
12
15
|
const padding = new Float32Array(halfWindowSize);
|
|
@@ -20,7 +23,7 @@ export async function stftr(samples, fftOrder, windowSize, hopLength, windowType
|
|
|
20
23
|
const frameBufferRef = wasmMemory.allocFloat32Array(fftOrder);
|
|
21
24
|
const binsBufferRef = wasmMemory.allocFloat32Array(fftOrder * 2);
|
|
22
25
|
const frames = [];
|
|
23
|
-
for (let offset = 0; offset < sampleCount; offset +=
|
|
26
|
+
for (let offset = 0; offset < sampleCount; offset += hopSize) {
|
|
24
27
|
const windowSamples = samples.subarray(offset, offset + windowSize);
|
|
25
28
|
frameBufferRef.clear();
|
|
26
29
|
const frameBufferView = frameBufferRef.view;
|
|
@@ -37,38 +40,52 @@ export async function stftr(samples, fftOrder, windowSize, hopLength, windowType
|
|
|
37
40
|
}
|
|
38
41
|
export async function stiftr(binsForFrames, fftOrder, windowSize, hopSize, windowType, expectedOutputLength) {
|
|
39
42
|
if (fftOrder % 2 != 0 || windowSize % 2 != 0) {
|
|
40
|
-
throw new Error(
|
|
43
|
+
throw new Error('FFT order and window size must multiples of 2');
|
|
41
44
|
}
|
|
42
45
|
if (windowSize > fftOrder) {
|
|
43
|
-
throw new Error(
|
|
46
|
+
throw new Error('Window size must be lesser or equal to the FFT size');
|
|
44
47
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
throw new Error("To perform inverse short-time FFT, hop size must be half the window size");
|
|
48
|
+
if (hopSize > windowSize) {
|
|
49
|
+
throw new Error('Hop size must be lesser or equal to the window size');
|
|
48
50
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
const frameCount = binsForFrames.length;
|
|
52
|
+
const halfWindowSize = windowSize / 2;
|
|
53
|
+
const windowWeights = getWindowWeights(windowType, windowSize);
|
|
54
|
+
const outSampleCount = hopSize * frameCount;
|
|
55
|
+
if (expectedOutputLength == null) {
|
|
56
|
+
expectedOutputLength = outSampleCount;
|
|
51
57
|
}
|
|
58
|
+
const outSamples = new Float32Array(outSampleCount);
|
|
52
59
|
const m = await getKissFFTInstance();
|
|
53
60
|
const wasmMemory = new WasmMemoryManager(m);
|
|
54
61
|
const statePtr = m._kiss_fftr_alloc(fftOrder, 1, 0, 0);
|
|
55
62
|
wasmMemory.wrapPointer(statePtr);
|
|
56
|
-
const outSamples = new Float32Array(binsForFrames.length * hopSize);
|
|
57
63
|
const frameBufferRef = wasmMemory.allocFloat32Array(fftOrder);
|
|
58
64
|
const binsRef = wasmMemory.allocFloat32Array(fftOrder * 2);
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
const sumOfSquaredWeightsForSample = new Float32Array(outSampleCount);
|
|
66
|
+
for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) {
|
|
67
|
+
const binsForFrame = binsForFrames[frameIndex];
|
|
61
68
|
binsRef.clear();
|
|
62
|
-
binsRef.view.set(
|
|
69
|
+
binsRef.view.set(binsForFrame);
|
|
63
70
|
frameBufferRef.clear();
|
|
64
71
|
m._kiss_fftri(statePtr, binsRef.address, frameBufferRef.address);
|
|
65
72
|
const frameSamples = frameBufferRef.view;
|
|
66
|
-
|
|
67
|
-
|
|
73
|
+
const frameStartOffset = frameIndex * hopSize;
|
|
74
|
+
for (let windowOffset = 0; windowOffset < windowSize; windowOffset++) {
|
|
75
|
+
const frameSample = frameSamples[windowOffset];
|
|
76
|
+
const weight = windowWeights[windowOffset];
|
|
77
|
+
const writePosition = frameStartOffset + windowOffset;
|
|
78
|
+
outSamples[writePosition] += frameSample * weight;
|
|
79
|
+
sumOfSquaredWeightsForSample[writePosition] += weight ** 2;
|
|
68
80
|
}
|
|
69
81
|
}
|
|
70
82
|
wasmMemory.freeAll();
|
|
71
|
-
|
|
83
|
+
// Divide by sum of weight squares for each samples
|
|
84
|
+
for (let i = 0; i < outSamples.length; i++) {
|
|
85
|
+
outSamples[i] /= sumOfSquaredWeightsForSample[i] + 1e-8;
|
|
86
|
+
}
|
|
87
|
+
const outSamplesTrimmed = outSamples.slice(halfWindowSize, halfWindowSize + expectedOutputLength);
|
|
88
|
+
return outSamplesTrimmed;
|
|
72
89
|
}
|
|
73
90
|
export function getBinFrequencies(binCount, maxFrequency) {
|
|
74
91
|
const binFrequencies = new Float32Array(binCount);
|
|
@@ -92,6 +109,35 @@ export function fftFrameToPowerSpectrum(fftFrame) {
|
|
|
92
109
|
}
|
|
93
110
|
return powerSpectrum;
|
|
94
111
|
}
|
|
112
|
+
export function binBufferToComplex(bins, extendAndMirror = false) {
|
|
113
|
+
const complexBins = [];
|
|
114
|
+
for (let i = 0; i < bins.length; i += 2) {
|
|
115
|
+
complexBins.push({
|
|
116
|
+
real: bins[i],
|
|
117
|
+
imaginary: bins[i + 1]
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (extendAndMirror) {
|
|
121
|
+
const fftSize = bins.length - 2;
|
|
122
|
+
for (let i = complexBins.length; i < fftSize; i++) {
|
|
123
|
+
const complexBinToMirror = complexBins[fftSize - i];
|
|
124
|
+
complexBins.push({
|
|
125
|
+
real: complexBinToMirror.real,
|
|
126
|
+
imaginary: -complexBinToMirror.imaginary
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return complexBins;
|
|
131
|
+
}
|
|
132
|
+
export function complexToBinBuffer(complexBins) {
|
|
133
|
+
const binBuffer = new Float32Array(complexBins.length * 2);
|
|
134
|
+
for (let i = 0, outIndex = 0; i < complexBins.length; i++) {
|
|
135
|
+
const complexBin = complexBins[i];
|
|
136
|
+
binBuffer[outIndex++] = complexBin.real;
|
|
137
|
+
binBuffer[outIndex++] = complexBin.imaginary;
|
|
138
|
+
}
|
|
139
|
+
return binBuffer;
|
|
140
|
+
}
|
|
95
141
|
export async function getKissFFTInstance() {
|
|
96
142
|
if (!kissFFTInstance) {
|
|
97
143
|
const { default: initializer } = await import('@echogarden/kissfft-wasm');
|
|
@@ -99,19 +145,19 @@ export async function getKissFFTInstance() {
|
|
|
99
145
|
}
|
|
100
146
|
return kissFFTInstance;
|
|
101
147
|
}
|
|
102
|
-
function getWindowWeights(windowType, windowSize) {
|
|
148
|
+
export function getWindowWeights(windowType, windowSize) {
|
|
103
149
|
const weights = new Float32Array(windowSize);
|
|
104
|
-
|
|
105
|
-
|
|
150
|
+
const innerFactor = (2 * Math.PI) / (windowSize - 1);
|
|
151
|
+
if (windowType == 'hann') {
|
|
106
152
|
for (let i = 0; i < windowSize; i++) {
|
|
107
|
-
weights[i] = 0.5 * (1 - Math.cos(2 * Math.PI * (i / (windowSize - 1))))
|
|
108
|
-
|
|
153
|
+
//weights[i] = 0.5 * (1 - Math.cos(2 * Math.PI * (i / (windowSize - 1))))
|
|
154
|
+
weights[i] = 0.5 * (1 - Math.cos(innerFactor * i));
|
|
109
155
|
}
|
|
110
156
|
}
|
|
111
|
-
else if (windowType ==
|
|
157
|
+
else if (windowType == 'hamming') {
|
|
112
158
|
for (let i = 0; i < windowSize; i++) {
|
|
113
|
-
weights[i] = 0.54 - (0.46 * Math.cos(2 * Math.PI * (i / (windowSize - 1))))
|
|
114
|
-
|
|
159
|
+
//weights[i] = 0.54 - (0.46 * Math.cos(2 * Math.PI * (i / (windowSize - 1))))
|
|
160
|
+
weights[i] = 0.54 - (0.46 * Math.cos(innerFactor * i));
|
|
115
161
|
}
|
|
116
162
|
}
|
|
117
163
|
else {
|
|
@@ -120,12 +166,12 @@ function getWindowWeights(windowType, windowSize) {
|
|
|
120
166
|
return weights;
|
|
121
167
|
}
|
|
122
168
|
export async function testFFT1(rawAudio) {
|
|
123
|
-
const { resampleAudioSpeex } = await import(
|
|
169
|
+
const { resampleAudioSpeex } = await import('./SpeexResampler.js');
|
|
124
170
|
const samples = (await resampleAudioSpeex(rawAudio, 16000)).audioChannels[0];
|
|
125
171
|
const fftOrder = 512;
|
|
126
172
|
const windowSize = 320;
|
|
127
173
|
const hopLength = windowSize / 2;
|
|
128
|
-
const windowType =
|
|
174
|
+
const windowType = 'hann';
|
|
129
175
|
const bins = await stftr(samples, fftOrder, windowSize, hopLength, windowType);
|
|
130
176
|
const normalizedBins = bins.map(bin => bin.map(x => x / fftOrder));
|
|
131
177
|
const recoveredSamples = await stiftr(normalizedBins, fftOrder, windowSize, hopLength, windowType, samples.length);
|
package/dist/dsp/FFT.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FFT.js","sourceRoot":"","sources":["../../src/dsp/FFT.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FFT.js","sourceRoot":"","sources":["../../src/dsp/FFT.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BiquadFilter } from './BiquadFilter.js';
|
|
2
|
+
export declare class KWeightingFilter {
|
|
3
|
+
readonly sampleRate: number;
|
|
4
|
+
readonly useStandard44100Filters: boolean;
|
|
5
|
+
readonly highShelfFilter: BiquadFilter;
|
|
6
|
+
readonly highPassFilter: BiquadFilter;
|
|
7
|
+
constructor(sampleRate: number, useStandard44100Filters?: boolean);
|
|
8
|
+
process(sample: number): number;
|
|
9
|
+
}
|