echogarden 2.8.6 → 2.9.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/dist/api/Recognition.d.ts +3 -3
- package/dist/api/Recognition.js +5 -5
- package/dist/api/Recognition.js.map +1 -1
- package/dist/api/SpeechTranslation.d.ts +4 -4
- package/dist/api/SpeechTranslation.js +4 -4
- package/dist/api/SpeechTranslation.js.map +1 -1
- package/dist/denoising/NSNet2.js +8 -8
- package/dist/denoising/NSNet2.js.map +1 -1
- package/dist/dsp/FFT.d.ts +2 -2
- package/dist/dsp/FFT.js +19 -15
- package/dist/dsp/FFT.js.map +1 -1
- package/dist/dsp/MFCC.d.ts +1 -1
- package/dist/dsp/MFCC.js +8 -8
- package/dist/dsp/MFCC.js.map +1 -1
- package/dist/dsp/{MelSpectogram.d.ts → MelSpectrogram.d.ts} +5 -5
- package/dist/dsp/{MelSpectogram.js → MelSpectrogram.js} +9 -9
- package/dist/dsp/MelSpectrogram.js.map +1 -0
- package/dist/math/VectorMath.d.ts +5 -1
- package/dist/math/VectorMath.js +15 -2
- package/dist/math/VectorMath.js.map +1 -1
- package/dist/nlp/IPA.d.ts +3 -3
- package/dist/recognition/WhisperSTT.d.ts +9 -6
- package/dist/recognition/WhisperSTT.js +92 -60
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.js +5 -5
- package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -1
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js +14 -14
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js.map +1 -1
- package/dist/utilities/Utilities.d.ts +1 -1
- package/dist/utilities/Utilities.js +4 -2
- package/dist/utilities/Utilities.js.map +1 -1
- package/docs/Licenses.md +0 -2
- package/docs/Tasklist.md +18 -5
- package/package.json +14 -14
- package/src/api/Recognition.ts +10 -7
- package/src/api/SpeechTranslation.ts +16 -6
- package/src/denoising/NSNet2.ts +8 -8
- package/src/dsp/FFT.ts +23 -17
- package/src/dsp/MFCC.ts +8 -8
- package/src/dsp/{MelSpectogram.ts → MelSpectrogram.ts} +9 -8
- package/src/math/VectorMath.ts +22 -2
- package/src/recognition/WhisperSTT.ts +131 -65
- package/src/source-separation/MDXNetSourceSeparation.ts +5 -5
- package/src/speech-embeddings/WavToVec2BertFeatureEmbeddings.ts +14 -14
- package/src/utilities/Utilities.ts +4 -2
- package/dist/dsp/MelSpectogram.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utilities.js","sourceRoot":"","sources":["../../src/utilities/Utilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Utilities.js","sourceRoot":"","sources":["../../src/utilities/Utilities.ts"],"names":[],"mappings":"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"}
|
package/docs/Licenses.md
CHANGED
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
* `sonic`: [Apache License 2.0](https://github.com/waywardgeek/sonic/blob/master/LICENSE)
|
|
19
19
|
* `speex-resampler`: [BSD-3-Clause](https://github.com/xiph/speexdsp/blob/master/COPYING)
|
|
20
20
|
* `rubberband`: [GNU GPL v2](https://github.com/breakfastquay/rubberband/blob/default/COPYING)
|
|
21
|
-
* `compromise`: [MIT License](https://github.com/spencermountain/compromise/blob/master/LICENSE)
|
|
22
|
-
* `cldr-segmentation`: [MIT License](https://github.com/camertron/cldr-segmentation.js/blob/master/LICENSE)
|
|
23
21
|
* `jieba-wasm`: [MIT License](https://github.com/fengkx/jieba-wasm/blob/master/LICENSE)
|
|
24
22
|
* `kuromoji`: [Apache License 2.0](https://github.com/takuyaa/kuromoji.js/blob/master/LICENSE-2.0.txt)
|
|
25
23
|
* `tiktoken`: [MIT License](https://github.com/openai/tiktoken/blob/main/LICENSE)
|
package/docs/Tasklist.md
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
### Subtitles
|
|
10
10
|
|
|
11
|
+
* Option to disable single sentence per cue
|
|
12
|
+
|
|
11
13
|
### Browser extension
|
|
12
14
|
* Investigate why WebSpeech events sometimes completely stop working in the middle of an utterance for no apparent reason. Sometimes this is permanent, until the extension is restarted. Is this a browser issue?
|
|
13
15
|
* If a request is made and the server takes too much time to respond, the service worker may sleep and the request never canceled
|
|
@@ -76,7 +78,8 @@
|
|
|
76
78
|
* `speak-youtube-subtitles`: To speak the subtitles of a YouTube video
|
|
77
79
|
|
|
78
80
|
### API
|
|
79
|
-
*
|
|
81
|
+
* Allow callers from API to cancel a task via `AbortController` and `AbortSignal`
|
|
82
|
+
* Validate timelines to ensure timestamps are always increasing: no undefined timestamps, no negative timestamps, out-of-order timestamps, or timestamps over the duration of the audio. No sentences without words, etc. Missing or incorrect word offsets, etc.
|
|
80
83
|
* Add support for phrases in timelines
|
|
81
84
|
* Accept voice list caching options in `SynthesisOptions`
|
|
82
85
|
|
|
@@ -100,7 +103,7 @@
|
|
|
100
103
|
### Synthesis
|
|
101
104
|
* Option to disable alignment (only for some engines). Alternative: use a low granularity DTW setting that is very fast to compute
|
|
102
105
|
* Find places to add commas (",") to improve speech fluency. VITS voices don't normally add speech breaks if there is no punctuation
|
|
103
|
-
* An isolated dash " - " can be converted to a " , " to ensure there's a break in the speech
|
|
106
|
+
* An isolated dash " - " can maybe be converted to a " , " to ensure there's a break in the speech
|
|
104
107
|
* Find a way to manually reset voice list cache
|
|
105
108
|
* When synthesized text isn't pre-split to sentences, apply sentence splits by using the existing method to convert the output of word timelines to sentence/segment timelines
|
|
106
109
|
* Some `sapi` voices and `msspeech` languages output phones that are converted to Microsoft alphabet, not IPA symbols. Try to see if these can be translated to IPA
|
|
@@ -126,11 +129,17 @@
|
|
|
126
129
|
* Option to add POS tags to timeline, if available
|
|
127
130
|
|
|
128
131
|
### Synthesis / VITS
|
|
129
|
-
*
|
|
132
|
+
* Consider adding `⦁︎` (when surrounded by whitespace) as phrase separator
|
|
133
|
+
* Allow limiting how many models are cached in memory.
|
|
134
|
+
* Ensure that caching behaves correctly when the same model is used with different execution providers
|
|
130
135
|
* Custom model paths (decide how to implement)
|
|
131
136
|
* Pull voice list from JSON file, or based on URL? Is that a good idea?
|
|
132
137
|
* Add speaker names to voice list somehow
|
|
133
138
|
|
|
139
|
+
### Synthesis / Kokoro
|
|
140
|
+
* Consider adding `⦁︎` (when surrounded by whitespace) as phrase separator
|
|
141
|
+
* Ensure that caching behaves correctly when the same model is used with different execution providers
|
|
142
|
+
|
|
134
143
|
### Synthesis / Azure Cognitive Services
|
|
135
144
|
* Currently, when input is set to be SSML, it is wrapped in a `<speak>` tag. Handle the case where the user made their own SSML document wrapped with a `<speak>` tag as well. Currently, it may send invalid input to Azure
|
|
136
145
|
|
|
@@ -139,8 +148,8 @@
|
|
|
139
148
|
|
|
140
149
|
### Recognition / Whisper
|
|
141
150
|
* Whisper's Chinese and Japanese output can be split into words in a more accurate way. Consider using a dedicated segmentation library to perform the segmentation in character sequences that have no punctuation characters to aid on guessing word boundaries
|
|
142
|
-
* Cache last model (if enough memory is available)
|
|
143
|
-
*
|
|
151
|
+
* Cache last model (if enough memory is available). Ensure that caching works when switching between different execution providers
|
|
152
|
+
* Whisper timestamp tokens can be used to split into segments, otherwise it is possible to try to guess using pause lengths or voice activity detection
|
|
144
153
|
* Bring back the option to use eSpeak DTW based alignment on segments, as an alternative approach
|
|
145
154
|
|
|
146
155
|
### Alignment
|
|
@@ -152,6 +161,7 @@
|
|
|
152
161
|
### Alignment / DTW-RA
|
|
153
162
|
|
|
154
163
|
### Alignment / Whisper
|
|
164
|
+
* Show same token stats as recognition now does on `trace` mode
|
|
155
165
|
|
|
156
166
|
### Source separation / MDX-NET
|
|
157
167
|
* Option to customize overlap
|
|
@@ -212,6 +222,9 @@
|
|
|
212
222
|
* `stdout` output support
|
|
213
223
|
* Markdown file as text input?
|
|
214
224
|
|
|
225
|
+
### OpenAI compatible local server
|
|
226
|
+
* `echogarden serve` would serve a OpenAI-compatible server for all speech recognition, speech translation and speech synthesis engines
|
|
227
|
+
|
|
215
228
|
### Web
|
|
216
229
|
* Web based frontend UI to the server
|
|
217
230
|
* Adapt some WASM modules to also run on the web
|
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "echogarden",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "An easy-to-use speech toolset. Includes tools for synthesis, recognition, alignment, speech translation, language detection, source separation and more.",
|
|
5
5
|
"author": "Rotem Dan",
|
|
6
6
|
"license": "GPL-3.0",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"speech",
|
|
9
9
|
"text-to-speech",
|
|
10
|
-
"speech
|
|
10
|
+
"speech-synthesis",
|
|
11
11
|
"speech-to-text",
|
|
12
|
-
"speech
|
|
13
|
-
"speech
|
|
14
|
-
"forced
|
|
15
|
-
"speech
|
|
16
|
-
"language
|
|
17
|
-
"language
|
|
18
|
-
"source
|
|
12
|
+
"speech-recognition",
|
|
13
|
+
"speech-alignment",
|
|
14
|
+
"forced-alignment",
|
|
15
|
+
"speech-translation",
|
|
16
|
+
"language-identification",
|
|
17
|
+
"language-detection",
|
|
18
|
+
"source-separation"
|
|
19
19
|
],
|
|
20
20
|
"repository": {
|
|
21
21
|
"type": "git",
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
"echogarden": "./dist/cli/CLILauncher.js"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@aws-sdk/client-polly": "~3.
|
|
56
|
-
"@aws-sdk/client-transcribe-streaming": "~3.
|
|
55
|
+
"@aws-sdk/client-polly": "~3.817.0",
|
|
56
|
+
"@aws-sdk/client-transcribe-streaming": "~3.817.0",
|
|
57
57
|
"@echogarden/audio-io": "~0.4.2",
|
|
58
58
|
"@echogarden/espeak-ng-emscripten": "~0.3.3",
|
|
59
59
|
"@echogarden/fasttext-wasm": "~0.1.0",
|
|
@@ -82,10 +82,10 @@
|
|
|
82
82
|
"jsdom": "~26.1.0",
|
|
83
83
|
"json5": "~2.2.3",
|
|
84
84
|
"kuromoji": "~0.1.2",
|
|
85
|
-
"microsoft-cognitiveservices-speech-sdk": "~1.
|
|
85
|
+
"microsoft-cognitiveservices-speech-sdk": "~1.44.0",
|
|
86
86
|
"msgpack-lite": "~0.1.26",
|
|
87
87
|
"onnxruntime-node": "~1.21.1",
|
|
88
|
-
"openai": "~4.
|
|
88
|
+
"openai": "~4.103.0",
|
|
89
89
|
"regexp-composer": "~0.3.0",
|
|
90
90
|
"sam-js": "~0.3.1",
|
|
91
91
|
"strip-ansi": "~7.1.0",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"@types/graceful-fs": "~4.1.9",
|
|
115
115
|
"@types/jsdom": "~21.1.7",
|
|
116
116
|
"@types/msgpack-lite": "~0.1.11",
|
|
117
|
-
"@types/node": "~22.15.
|
|
117
|
+
"@types/node": "~22.15.23",
|
|
118
118
|
"@types/tar": "~6.1.13",
|
|
119
119
|
"@types/ws": "~8.18.1",
|
|
120
120
|
"ts-json-schema-generator": "~2.4.0",
|
package/src/api/Recognition.ts
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
|
+
import chalk from 'chalk'
|
|
2
|
+
|
|
3
|
+
import * as API from './API.js'
|
|
4
|
+
|
|
1
5
|
import { extendDeep } from '../utilities/ObjectUtilities.js'
|
|
2
6
|
|
|
3
7
|
import { logToStderr } from '../utilities/Utilities.js'
|
|
4
8
|
import { AudioSourceParam, RawAudio, ensureRawAudio, normalizeAudioLevelInPlace, trimAudioEnd } from '../audio/AudioUtilities.js'
|
|
5
9
|
import { Logger } from '../utilities/Logger.js'
|
|
6
10
|
|
|
7
|
-
import * as API from './API.js'
|
|
8
11
|
import { Timeline, addWordTextOffsetsToTimelineInPlace, wordTimelineToSegmentSentenceTimeline } from '../utilities/Timeline.js'
|
|
9
12
|
import { formatLanguageCodeWithName, parseLangIdentifier } from '../utilities/Locale.js'
|
|
10
13
|
import { loadPackage } from '../utilities/PackageManager.js'
|
|
11
|
-
import chalk from 'chalk'
|
|
12
14
|
|
|
13
|
-
import { type WhisperOptions } from '../recognition/WhisperSTT.js'
|
|
15
|
+
import { type WhisperPartCallback, type WhisperOptions } from '../recognition/WhisperSTT.js'
|
|
14
16
|
import { type SubtitlesConfig } from '../subtitles/Subtitles.js'
|
|
15
17
|
import { type OpenAICloudSTTOptions } from '../recognition/OpenAICloudSTT.js'
|
|
16
18
|
import { type WhisperCppOptions } from '../recognition/WhisperCppSTT.js'
|
|
17
19
|
import { type SileroRecognitionOptions } from '../recognition/SileroSTT.js'
|
|
18
20
|
import { type DeepgramSTTOptions } from '../recognition/DeepgramSTT.js'
|
|
19
|
-
import { OnnxExecutionProvider } from '../utilities/OnnxUtilities.js'
|
|
21
|
+
import { type OnnxExecutionProvider } from '../utilities/OnnxUtilities.js'
|
|
20
22
|
|
|
21
23
|
const log = logToStderr
|
|
22
24
|
|
|
23
|
-
export async function recognize(input: AudioSourceParam, options: RecognitionOptions): Promise<RecognitionResult> {
|
|
25
|
+
export async function recognize(input: AudioSourceParam, options: RecognitionOptions, onPart?: WhisperPartCallback): Promise<RecognitionResult> {
|
|
24
26
|
const logger = new Logger()
|
|
25
27
|
|
|
26
28
|
const startTimestamp = logger.getTimestamp()
|
|
@@ -110,7 +112,8 @@ export async function recognize(input: AudioSourceParam, options: RecognitionOpt
|
|
|
110
112
|
modelDir,
|
|
111
113
|
'transcribe',
|
|
112
114
|
shortLanguageCode,
|
|
113
|
-
whisperOptions
|
|
115
|
+
whisperOptions,
|
|
116
|
+
onPart,
|
|
114
117
|
))
|
|
115
118
|
|
|
116
119
|
break
|
|
@@ -318,7 +321,7 @@ export async function recognize(input: AudioSourceParam, options: RecognitionOpt
|
|
|
318
321
|
const { segmentTimeline } = await wordTimelineToSegmentSentenceTimeline(timeline, transcript, languageCode, 'single', 'preserve')
|
|
319
322
|
|
|
320
323
|
logger.end()
|
|
321
|
-
logger.logDuration('
|
|
324
|
+
logger.logDuration('\nTotal recognition time', startTimestamp, chalk.magentaBright)
|
|
322
325
|
|
|
323
326
|
return {
|
|
324
327
|
transcript,
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import chalk from 'chalk'
|
|
2
|
+
|
|
3
|
+
import * as API from './API.js'
|
|
4
|
+
|
|
1
5
|
import { extendDeep } from '../utilities/ObjectUtilities.js'
|
|
2
6
|
|
|
3
7
|
import { logToStderr } from '../utilities/Utilities.js'
|
|
@@ -5,14 +9,12 @@ import { AudioSourceParam, RawAudio, ensureRawAudio, normalizeAudioLevelInPlace,
|
|
|
5
9
|
import { Logger } from '../utilities/Logger.js'
|
|
6
10
|
|
|
7
11
|
import { Timeline, addWordTextOffsetsToTimelineInPlace, wordTimelineToSegmentSentenceTimeline } from '../utilities/Timeline.js'
|
|
8
|
-
import { type WhisperOptions } from '../recognition/WhisperSTT.js'
|
|
12
|
+
import { WhisperPartCallback, type WhisperOptions } from '../recognition/WhisperSTT.js'
|
|
9
13
|
import { formatLanguageCodeWithName, getShortLanguageCode, normalizeIdentifierToLanguageCode, parseLangIdentifier } from '../utilities/Locale.js'
|
|
10
|
-
import { EngineMetadata } from './Common.js'
|
|
14
|
+
import { type EngineMetadata } from './Common.js'
|
|
11
15
|
import { type SpeechLanguageDetectionOptions, detectSpeechLanguage } from './API.js'
|
|
12
|
-
import chalk from 'chalk'
|
|
13
16
|
import { type SubtitlesConfig } from '../subtitles/Subtitles.js'
|
|
14
17
|
|
|
15
|
-
import * as API from './API.js'
|
|
16
18
|
import { type OpenAICloudSTTOptions } from '../recognition/OpenAICloudSTT.js'
|
|
17
19
|
import { type WhisperCppOptions } from '../recognition/WhisperCppSTT.js'
|
|
18
20
|
|
|
@@ -21,7 +23,7 @@ const log = logToStderr
|
|
|
21
23
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
22
24
|
// Speech translation
|
|
23
25
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
24
|
-
export async function translateSpeech(input: AudioSourceParam, options: SpeechTranslationOptions): Promise<SpeechTranslationResult> {
|
|
26
|
+
export async function translateSpeech(input: AudioSourceParam, options: SpeechTranslationOptions, onPart?: WhisperPartCallback): Promise<SpeechTranslationResult> {
|
|
25
27
|
const logger = new Logger()
|
|
26
28
|
|
|
27
29
|
const startTimestamp = logger.getTimestamp()
|
|
@@ -122,7 +124,15 @@ export async function translateSpeech(input: AudioSourceParam, options: SpeechTr
|
|
|
122
124
|
|
|
123
125
|
logger.end();
|
|
124
126
|
|
|
125
|
-
({ transcript, timeline: wordTimeline } = await WhisperSTT.recognize(
|
|
127
|
+
({ transcript, timeline: wordTimeline } = await WhisperSTT.recognize(
|
|
128
|
+
sourceRawAudio,
|
|
129
|
+
modelName,
|
|
130
|
+
modelDir,
|
|
131
|
+
'translate',
|
|
132
|
+
sourceLanguage,
|
|
133
|
+
whisperOptions,
|
|
134
|
+
onPart,
|
|
135
|
+
))
|
|
126
136
|
|
|
127
137
|
break
|
|
128
138
|
}
|
package/src/denoising/NSNet2.ts
CHANGED
|
@@ -58,8 +58,8 @@ export class NSNet2 {
|
|
|
58
58
|
logger.start('Compute STFT frames')
|
|
59
59
|
const stftrFrames = await stftr(rawAudio.audioChannels[0], fftSize, fftSize, fftHopSize, 'hann')
|
|
60
60
|
|
|
61
|
-
logger.start('Compute log-power
|
|
62
|
-
let
|
|
61
|
+
logger.start('Compute log-power spectrogram')
|
|
62
|
+
let logPowerSpectrogram: Float32Array[] = []
|
|
63
63
|
|
|
64
64
|
{
|
|
65
65
|
for (const frame of stftrFrames) {
|
|
@@ -79,19 +79,19 @@ export class NSNet2 {
|
|
|
79
79
|
logPowerSpectrum[writeOffset++] = logPowerValue
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
logPowerSpectrogram.push(logPowerSpectrum)
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
logger.start('Process log-power
|
|
86
|
+
logger.start('Process log-power spectrogram using ONNX model')
|
|
87
87
|
|
|
88
|
-
const frameCount =
|
|
88
|
+
const frameCount = logPowerSpectrogram.length
|
|
89
89
|
let flattenedOutputTensor: Float32Array
|
|
90
90
|
|
|
91
91
|
{
|
|
92
92
|
const Onnx = await import('onnxruntime-node')
|
|
93
93
|
|
|
94
|
-
const flattenedFeatures = concatFloat32Arrays(
|
|
94
|
+
const flattenedFeatures = concatFloat32Arrays(logPowerSpectrogram)
|
|
95
95
|
|
|
96
96
|
const inputTensor = new Onnx.Tensor('float32', flattenedFeatures, [1, frameCount, fftRealBinCount])
|
|
97
97
|
const inputs = { input: inputTensor }
|
|
@@ -126,8 +126,8 @@ export class NSNet2 {
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
// Allow
|
|
130
|
-
|
|
129
|
+
// Allow logPowerSpectrogram to be garbage collected
|
|
130
|
+
logPowerSpectrogram = undefined as any
|
|
131
131
|
|
|
132
132
|
logger.start('Reconstruct filtered signal using inverse STFT')
|
|
133
133
|
const filteredSignal = await stiftr(stftrFrames, fftSize, fftSize, fftHopSize, 'hann')
|
package/src/dsp/FFT.ts
CHANGED
|
@@ -6,7 +6,9 @@ import { createWasmHeapManager } from 'wasm-heap-manager'
|
|
|
6
6
|
export async function stftr(samples: Float32Array, fftOrder: number, windowSize: number, hopSize: number, windowType: WindowType) {
|
|
7
7
|
const frames: Float32Array[] = []
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
const stftrGenerator = await createStftrGenerator(samples, fftOrder, windowSize, hopSize, windowType)
|
|
10
|
+
|
|
11
|
+
for (const frame of stftrGenerator) {
|
|
10
12
|
frames.push(frame)
|
|
11
13
|
}
|
|
12
14
|
|
|
@@ -14,7 +16,7 @@ export async function stftr(samples: Float32Array, fftOrder: number, windowSize:
|
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
// Incrementally generate short-term Fourier transform frames (real-valued)
|
|
17
|
-
export async function
|
|
19
|
+
export async function createStftrGenerator(samples: Float32Array, fftOrder: number, windowSize: number, hopSize: number, windowType: WindowType) {
|
|
18
20
|
if (fftOrder % 2 !== 0 || windowSize % 2 !== 0) {
|
|
19
21
|
throw new Error('FFT order and window size must be multiples of 2')
|
|
20
22
|
}
|
|
@@ -49,28 +51,32 @@ export async function* stftrGenerator(samples: Float32Array, fftOrder: number, w
|
|
|
49
51
|
const binsBufferRef = wasmHeap.allocFloat32Array(fftOrder * 2)
|
|
50
52
|
const workBufferRef = wasmHeap.allocFloat32Array(fftOrder * 2)
|
|
51
53
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
function* stftrGenerator() {
|
|
55
|
+
for (let offset = 0; offset < sampleCount; offset += hopSize) {
|
|
56
|
+
const windowSamples = samples.subarray(offset, offset + windowSize)
|
|
57
|
+
frameBufferRef.clear()
|
|
55
58
|
|
|
56
|
-
|
|
59
|
+
const frameBufferView = frameBufferRef.view
|
|
57
60
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
for (let i = 0; i < windowSamples.length; i++) {
|
|
62
|
+
frameBufferView[i] = windowSamples[i] * windowWeights[i]
|
|
63
|
+
}
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
binsBufferRef.clear()
|
|
63
66
|
|
|
64
|
-
|
|
67
|
+
m._pffft_transform_ordered(statePtr, frameBufferRef.address, binsBufferRef.address, workBufferRef.address, 0)
|
|
65
68
|
|
|
66
|
-
|
|
69
|
+
const bins = binsBufferRef.view.slice(0, fftOrder + 2)
|
|
67
70
|
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
yield bins
|
|
72
|
+
}
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
m._pffft_destroy_setup(statePtr)
|
|
72
75
|
|
|
73
|
-
|
|
76
|
+
wasmHeap.freeAll()
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return stftrGenerator()
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
// Compute short-term inverse Fourier transform (real-valued)
|
|
@@ -168,7 +174,7 @@ export function getBinFrequencies(binCount: number, maxFrequency: number) {
|
|
|
168
174
|
}
|
|
169
175
|
|
|
170
176
|
// Convert an array of raw FFT frames to a power spectrum
|
|
171
|
-
export function
|
|
177
|
+
export function fftFramesToPowerSpectrogram(fftFrames: Float32Array[]) {
|
|
172
178
|
return fftFrames.map(fftFrame => fftFrameToPowerSpectrum(fftFrame))
|
|
173
179
|
}
|
|
174
180
|
|
package/src/dsp/MFCC.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { extendDeep } from '../utilities/ObjectUtilities.js'
|
|
2
2
|
import { Logger } from '../utilities/Logger.js'
|
|
3
3
|
import { resampleAudioSpeex } from './SpeexResampler.js'
|
|
4
|
-
import {
|
|
4
|
+
import { computeMelSpectrogram } from './MelSpectrogram.js'
|
|
5
5
|
import { RawAudio, powerToDecibels } from '../audio/AudioUtilities.js'
|
|
6
6
|
import { normalizeVectors } from '../math/VectorMath.js'
|
|
7
7
|
|
|
@@ -41,11 +41,11 @@ export async function computeMFCCs(monoAudio: RawAudio, options: MfccOptions = {
|
|
|
41
41
|
resampledAudio.audioChannels[0] = applyEmphasis(resampledAudio.audioChannels[0], emphasisFactor)
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
logger.start('Compute Mel
|
|
45
|
-
const {
|
|
44
|
+
logger.start('Compute Mel spectrogram')
|
|
45
|
+
const { melSpectrogram } = await computeMelSpectrogram(resampledAudio, fftOrder, windowSize, hopLength, filterbankCount, lowerFrequencyHz, upperFrequencyHz)
|
|
46
46
|
|
|
47
|
-
logger.start('Extract MFCCs from Mel
|
|
48
|
-
let mfccs =
|
|
47
|
+
logger.start('Extract MFCCs from Mel spectrogram')
|
|
48
|
+
let mfccs = melSpectrogramToMFCCs(melSpectrogram, featureCount)
|
|
49
49
|
|
|
50
50
|
if (options.normalize!) {
|
|
51
51
|
logger.start('Normalize MFCCs')
|
|
@@ -72,11 +72,11 @@ export async function computeMFCCs(monoAudio: RawAudio, options: MfccOptions = {
|
|
|
72
72
|
return mfccs
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
export function
|
|
76
|
-
const melBandCount =
|
|
75
|
+
export function melSpectrogramToMFCCs(melSpectrogram: ArrayLike<number>[], mfccFeatureCount: number) {
|
|
76
|
+
const melBandCount = melSpectrogram[0].length
|
|
77
77
|
const dctMatrix = createDCTType2CoefficientMatrix(mfccFeatureCount, melBandCount)
|
|
78
78
|
|
|
79
|
-
const mfccs =
|
|
79
|
+
const mfccs = melSpectrogram.map(frame => melSpectrumToMFCC(frame, mfccFeatureCount, dctMatrix))
|
|
80
80
|
|
|
81
81
|
return mfccs
|
|
82
82
|
}
|
|
@@ -2,10 +2,10 @@ import { RawAudio } from '../audio/AudioUtilities.js'
|
|
|
2
2
|
import { Logger } from '../utilities/Logger.js'
|
|
3
3
|
import * as FFT from './FFT.js'
|
|
4
4
|
|
|
5
|
-
export async function
|
|
5
|
+
export async function computeMelSpectrogram(rawAudio: RawAudio, fftOrder: number, windowSize: number, hopLength: number, filterbankCount: number, lowerFrequencyHz: number, upperFrequencyHz: number, windowType: FFT.WindowType = 'hann') {
|
|
6
6
|
const logger = new Logger()
|
|
7
7
|
|
|
8
|
-
logger.start('Compute
|
|
8
|
+
logger.start('Compute Mel filterbank')
|
|
9
9
|
const binCount = (fftOrder / 2) + 2
|
|
10
10
|
const nyquistFrequency = rawAudio.sampleRate / 2
|
|
11
11
|
const binFrequencies = FFT.getBinFrequencies(binCount, nyquistFrequency)
|
|
@@ -18,27 +18,28 @@ export async function computeMelSpectogram(rawAudio: RawAudio, fftOrder: number,
|
|
|
18
18
|
|
|
19
19
|
logger.end()
|
|
20
20
|
|
|
21
|
-
return
|
|
21
|
+
return computeMelSpectrogramUsingFilterbanks(rawAudio, fftOrder, windowSize, hopLength, melFilterbanks, windowType)
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export async function
|
|
24
|
+
export async function computeMelSpectrogramUsingFilterbanks(rawAudio: RawAudio, fftOrder: number, windowSize: number, hopLength: number, filterbanks: Filterbank[], windowType: FFT.WindowType = 'hann') {
|
|
25
25
|
const logger = new Logger()
|
|
26
26
|
|
|
27
27
|
logger.start('Compute short-time FFTs')
|
|
28
28
|
const audioSamples = rawAudio.audioChannels[0]
|
|
29
29
|
const fftFrames = await FFT.stftr(audioSamples, fftOrder, windowSize, hopLength, windowType)
|
|
30
30
|
|
|
31
|
-
logger.start('Convert FFT frames to
|
|
32
|
-
const
|
|
31
|
+
logger.start('Convert FFT frames to Mel spectrogram')
|
|
32
|
+
const melSpectrogram = fftFramesToMelSpectrogram(fftFrames, filterbanks)
|
|
33
33
|
|
|
34
34
|
logger.end()
|
|
35
35
|
|
|
36
|
-
return {
|
|
36
|
+
return { melSpectrogram, fftFrames }
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
export function
|
|
39
|
+
export function fftFramesToMelSpectrogram(fftFrames: Float32Array[], melFilterbanks: Filterbank[]) {
|
|
40
40
|
return fftFrames.map(fftFrame => {
|
|
41
41
|
const powerSpectrum = FFT.fftFrameToPowerSpectrum(fftFrame)
|
|
42
|
+
|
|
42
43
|
return powerSpectrumToMelSpectrum(powerSpectrum, melFilterbanks)
|
|
43
44
|
})
|
|
44
45
|
}
|
package/src/math/VectorMath.ts
CHANGED
|
@@ -345,7 +345,11 @@ export function medianOfVector(vector: ArrayLike<number>) {
|
|
|
345
345
|
throw new Error('Vector is empty')
|
|
346
346
|
}
|
|
347
347
|
|
|
348
|
-
|
|
348
|
+
const sortedArray = Array.from(vector).sort((a, b) => a - b)
|
|
349
|
+
|
|
350
|
+
const median = sortedArray[Math.floor(sortedArray.length / 2)]
|
|
351
|
+
|
|
352
|
+
return median
|
|
349
353
|
}
|
|
350
354
|
|
|
351
355
|
export function stdDeviationOfVector(vector: ArrayLike<number>, kind: 'population' | 'sample' = 'population', mean?: number) {
|
|
@@ -639,7 +643,7 @@ export function sumVector(vector: ArrayLike<number>) {
|
|
|
639
643
|
return result
|
|
640
644
|
}
|
|
641
645
|
|
|
642
|
-
export function
|
|
646
|
+
export function sumOfSquaresOfVector(vector: ArrayLike<number>) {
|
|
643
647
|
const elementCount = vector.length
|
|
644
648
|
|
|
645
649
|
let result = 0.0
|
|
@@ -651,6 +655,22 @@ export function sumOfSquaresForVector(vector: ArrayLike<number>) {
|
|
|
651
655
|
return result
|
|
652
656
|
}
|
|
653
657
|
|
|
658
|
+
export function sumAndSumOfSquaresOfVector(vector: ArrayLike<number>) {
|
|
659
|
+
const elementCount = vector.length
|
|
660
|
+
|
|
661
|
+
let sum = 0.0
|
|
662
|
+
let sumOfSquares = 0.0
|
|
663
|
+
|
|
664
|
+
for (let i = 0; i < elementCount; i++) {
|
|
665
|
+
const value = vector[i]
|
|
666
|
+
|
|
667
|
+
sum += value
|
|
668
|
+
sumOfSquares += value ** 2
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
return { sum, sumOfSquares }
|
|
672
|
+
}
|
|
673
|
+
|
|
654
674
|
export function dotProduct(vector1: ArrayLike<number>, vector2: ArrayLike<number>) {
|
|
655
675
|
if (vector1.length != vector2.length) {
|
|
656
676
|
throw new Error('Vectors are not the same length')
|