echogarden 2.6.0 → 2.7.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/SourceSeparation.js +1 -1
- package/dist/audio/AudioBufferConversion.d.ts +5 -6
- package/dist/audio/AudioBufferConversion.js +16 -248
- package/dist/audio/AudioBufferConversion.js.map +1 -1
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/audio/AudioRecorder.js +1 -1
- package/dist/audio/AudioRecorder.js.map +1 -1
- package/dist/audio/AudioUtilities.d.ts +3 -9
- package/dist/audio/AudioUtilities.js +4 -3
- package/dist/audio/AudioUtilities.js.map +1 -1
- package/dist/codecs/FFMpegTranscoder.d.ts +1 -4
- package/dist/codecs/TIMITCodec.js +1 -2
- package/dist/codecs/TIMITCodec.js.map +1 -1
- package/dist/encodings/Ascii.js +1 -1
- package/dist/encodings/Ascii.js.map +1 -1
- package/dist/encodings/Utf16.js +1 -1
- package/dist/encodings/Utf16.js.map +1 -1
- package/dist/encodings/Utf8.js +1 -1
- package/dist/encodings/Utf8.js.map +1 -1
- package/dist/synthesis/AwsPollyTTS.d.ts +1 -4
- package/dist/synthesis/CoquiServerTTS.d.ts +1 -4
- package/dist/synthesis/DeepgramTTS.d.ts +1 -4
- package/dist/synthesis/ElevenLabsTTS.d.ts +1 -4
- package/dist/synthesis/FliteTTS.d.ts +1 -4
- package/dist/synthesis/GnuSpeechTTS.d.ts +1 -7
- package/dist/synthesis/GoogleCloudTTS.d.ts +1 -4
- package/dist/synthesis/SapiTTS.js +1 -2
- package/dist/synthesis/SapiTTS.js.map +1 -1
- package/dist/synthesis/SvoxPicoTTS.js +1 -2
- package/dist/synthesis/SvoxPicoTTS.js.map +1 -1
- package/dist/utilities/WasmMemoryManager.d.ts +1 -1
- package/package.json +2 -2
- package/src/api/SourceSeparation.ts +1 -1
- package/src/audio/AudioBufferConversion.ts +17 -263
- package/src/audio/AudioPlayer.ts +1 -1
- package/src/audio/AudioRecorder.ts +1 -1
- package/src/audio/AudioUtilities.ts +5 -3
- package/src/codecs/TIMITCodec.ts +1 -2
- package/src/encodings/Ascii.ts +1 -1
- package/src/encodings/Utf16.ts +1 -1
- package/src/encodings/Utf8.ts +1 -1
- package/src/synthesis/SapiTTS.ts +1 -2
- package/src/synthesis/SvoxPicoTTS.ts +1 -2
- package/dist/codecs/WaveCodec.d.ts +0 -19
- package/dist/codecs/WaveCodec.js +0 -224
- package/dist/codecs/WaveCodec.js.map +0 -1
- package/dist/utilities/BinaryArrayConversion.d.ts +0 -14
- package/dist/utilities/BinaryArrayConversion.js +0 -92
- package/dist/utilities/BinaryArrayConversion.js.map +0 -1
- package/src/codecs/WaveCodec.ts +0 -281
- package/src/utilities/BinaryArrayConversion.ts +0 -117
package/dist/encodings/Utf8.js
CHANGED
|
@@ -20,7 +20,7 @@ export class ChunkedUtf8Decoder {
|
|
|
20
20
|
str = '';
|
|
21
21
|
textDecoder = new TextDecoder('utf-8');
|
|
22
22
|
writeChunk(chunk) {
|
|
23
|
-
const decodedChunk = this.textDecoder.decode(chunk);
|
|
23
|
+
const decodedChunk = this.textDecoder.decode(chunk, { stream: true });
|
|
24
24
|
this.str += decodedChunk;
|
|
25
25
|
}
|
|
26
26
|
toString() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utf8.js","sourceRoot":"","sources":["../../src/encodings/Utf8.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAErC,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,WAAuB;IACnE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAErC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAExD,OAAO,MAAM,CAAA;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,aAAyB;IACnD,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,CAAA;IAE9B,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAA;IAExC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,IAAI,cAAc,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,CAAA;QAErE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,OAAO,kBAAkB;IACtB,GAAG,GAAG,EAAE,CAAA;IACC,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IAEvD,UAAU,CAAC,KAAiB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Utf8.js","sourceRoot":"","sources":["../../src/encodings/Utf8.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAErC,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,WAAuB;IACnE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAErC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAExD,OAAO,MAAM,CAAA;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,aAAyB;IACnD,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,CAAA;IAE9B,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAA;IAExC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,IAAI,cAAc,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,CAAA;QAErE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,OAAO,kBAAkB;IACtB,GAAG,GAAG,EAAE,CAAA;IACC,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IAEvD,UAAU,CAAC,KAAiB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAErE,IAAI,CAAC,GAAG,IAAI,YAAY,CAAA;IACzB,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,GAAG,CAAA;IAChB,CAAC;CACD;AAED,8FAA8F;AAC9F,kCAAkC;AAClC,8FAA8F;AAC9F,SAAS,iBAAiB,CAAC,GAAW,EAAE,WAAuB;IAC9D,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,WAAW,GAAG,CAAC,CAAA;IAEnB,OAAO,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,CAAE,CAAA;QAE/C,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACtB,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAA;QACtC,CAAC;aAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC9B,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAA;YACpD,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAA;QACpD,CAAC;aAAM,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC/B,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAA;YACrD,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;YAC3D,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAA;QACpD,CAAC;aAAM,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACjC,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAA;YACrD,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;YAC5D,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;YAC3D,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAA;YAEnD,UAAU,EAAE,CAAA;QACb,CAAC;IACF,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;AAClD,CAAC;AAED,SAAS,aAAa,CAAC,SAAqB;IAC3C,IAAI,aAAa,GAAG,EAAE,CAAA;IAEtB,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,OAAO,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAA;QAExC,IAAI,eAAuB,CAAA;QAE3B,IAAI,QAAQ,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,eAAe,GAAG,QAAQ,CAAA;QAC3B,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,eAAe;gBACd,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC;oBACpB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;QAChC,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,eAAe;gBACd,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE;oBACrB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;oBACnC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;QAChC,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,eAAe;gBACd,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE;oBACpB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;oBACpC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;oBACnC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,4EAA4E,UAAU,EAAE,CAAC,CAAA;QAC1G,CAAC;QAED,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,aAAa,CAAA;AACrB,CAAC"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export declare function synthesize(text: string, language: string | undefined, voice: string, region: string, accessKeyId: string, secretAccessKey: string, engine?: 'standard' | 'neural', ssmlEnabled?: boolean, lexiconNames?: string[]): Promise<{
|
|
2
|
-
rawAudio:
|
|
3
|
-
audioChannels: Float32Array<ArrayBufferLike>[];
|
|
4
|
-
sampleRate: number;
|
|
5
|
-
};
|
|
2
|
+
rawAudio: import("@echogarden/wave-codec").RawAudio;
|
|
6
3
|
}>;
|
|
7
4
|
export declare function getVoiceList(region: string, accessKeyId: string, secretAccessKey: string): Promise<import("@aws-sdk/client-polly").Voice[]>;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { SynthesisVoice } from '../api/API.js';
|
|
2
2
|
export declare function synthesize(text: string, modelId: string, options: DeepgramTTSOptions): Promise<{
|
|
3
|
-
rawAudio:
|
|
4
|
-
audioChannels: Float32Array<ArrayBufferLike>[];
|
|
5
|
-
sampleRate: number;
|
|
6
|
-
};
|
|
3
|
+
rawAudio: import("@echogarden/wave-codec").RawAudio;
|
|
7
4
|
}>;
|
|
8
5
|
export declare function getVoiceList(): Promise<SynthesisVoice[]>;
|
|
9
6
|
export interface DeepgramTTSOptions {
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { SynthesisVoice } from '../api/API.js';
|
|
2
2
|
import { Timeline } from '../utilities/Timeline.js';
|
|
3
3
|
export declare function synthesize(text: string, voiceId: string, language: string, options: ElevenLabsTTSOptions): Promise<{
|
|
4
|
-
rawAudio:
|
|
5
|
-
audioChannels: Float32Array<ArrayBufferLike>[];
|
|
6
|
-
sampleRate: number;
|
|
7
|
-
};
|
|
4
|
+
rawAudio: import("@echogarden/wave-codec").RawAudio;
|
|
8
5
|
timeline: Timeline | undefined;
|
|
9
6
|
}>;
|
|
10
7
|
export declare function getVoiceList(apiKey: string): Promise<SynthesisVoice[]>;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { SynthesisVoice } from '../api/API.js';
|
|
2
2
|
export type FliteVoiceName = 'kal' | 'kal16' | 'awb' | 'rms' | 'slt' | string;
|
|
3
3
|
export declare function synthesize(text: string, voice: FliteVoiceName, voiceDir: string | undefined, rate: number, pitchMeanHz?: number, pitchStdDev?: number): Promise<{
|
|
4
|
-
rawAudio:
|
|
5
|
-
audioChannels: Float32Array<ArrayBufferLike>[];
|
|
6
|
-
sampleRate: number;
|
|
7
|
-
};
|
|
4
|
+
rawAudio: import("@echogarden/wave-codec").RawAudio;
|
|
8
5
|
events: FliteEvent[];
|
|
9
6
|
}>;
|
|
10
7
|
export type FliteEventType = 'phone' | 'pause' | 'phrasePause';
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import { GnuSpeechOptions } from '@echogarden/gnuspeech-wasm';
|
|
2
2
|
import { SynthesisVoice } from '../api/Synthesis.js';
|
|
3
3
|
export declare function synthesize(text: string, options: GnuSpeechOptions): Promise<{
|
|
4
|
-
rawAudio:
|
|
5
|
-
audioChannels: Float32Array<ArrayBufferLike>[];
|
|
6
|
-
sampleRate: number;
|
|
7
|
-
};
|
|
8
|
-
sourceSampleFormat: import("../codecs/WaveCodec.js").SampleFormat;
|
|
9
|
-
sourceBitDepth: import("../codecs/WaveCodec.js").BitDepth;
|
|
10
|
-
sourceSpeakerPositionMask: number;
|
|
4
|
+
rawAudio: import("@echogarden/wave-codec").RawAudio;
|
|
11
5
|
}>;
|
|
12
6
|
export declare const voiceList: SynthesisVoice[];
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
export declare function synthesize(text: string, apiKey: string, languageCode?: string, voice?: string, speakingRate?: number, pitchDeltaSemitones?: number, volumeGainDecibels?: number, ssml?: boolean, audioEncoding?: AudioEncoding, sampleRate?: number): Promise<{
|
|
2
|
-
rawAudio:
|
|
3
|
-
audioChannels: Float32Array<ArrayBufferLike>[];
|
|
4
|
-
sampleRate: number;
|
|
5
|
-
};
|
|
2
|
+
rawAudio: import("@echogarden/wave-codec").RawAudio;
|
|
6
3
|
timepoints: timePoint[];
|
|
7
4
|
}>;
|
|
8
5
|
export declare function getVoiceList(apiKey: string): Promise<GoogleCloudVoice[]>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { decodeToChannels } from '../audio/AudioBufferConversion.js';
|
|
2
|
-
import { SampleFormat } from '../codecs/WaveCodec.js';
|
|
1
|
+
import { decodeToChannels, SampleFormat } from '../audio/AudioBufferConversion.js';
|
|
3
2
|
import { getShortLanguageCode, lcidToIsoLanguageCode } from '../utilities/Locale.js';
|
|
4
3
|
import { Logger } from '../utilities/Logger.js';
|
|
5
4
|
import { logToStderr } from '../utilities/Utilities.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SapiTTS.js","sourceRoot":"","sources":["../../src/synthesis/SapiTTS.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"SapiTTS.js","sourceRoot":"","sources":["../../src/synthesis/SapiTTS.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { decodeToChannels } from '../audio/AudioBufferConversion.js';
|
|
2
|
-
import { SampleFormat } from '../codecs/WaveCodec.js';
|
|
1
|
+
import { decodeToChannels, SampleFormat } from '../audio/AudioBufferConversion.js';
|
|
3
2
|
import { bandwidthToQFactor } from '../dsp/BiquadFilter.js';
|
|
4
3
|
import { Logger } from '../utilities/Logger.js';
|
|
5
4
|
import { WasmMemoryManager } from '../utilities/WasmMemoryManager.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SvoxPicoTTS.js","sourceRoot":"","sources":["../../src/synthesis/SvoxPicoTTS.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"SvoxPicoTTS.js","sourceRoot":"","sources":["../../src/synthesis/SvoxPicoTTS.ts"],"names":[],"mappings":"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"}
|
|
@@ -109,7 +109,7 @@ declare abstract class TypedArrayRef<T extends TypedArray> {
|
|
|
109
109
|
constructor(ptr: number, length: number, manager: WasmMemoryManager);
|
|
110
110
|
get view(): T;
|
|
111
111
|
protected abstract getView(): T;
|
|
112
|
-
slice(start?: number, end?: number): Int32Array<ArrayBuffer> | Uint8Array<ArrayBuffer> |
|
|
112
|
+
slice(start?: number, end?: number): Int32Array<ArrayBuffer> | Uint8Array<ArrayBuffer> | Int8Array<ArrayBuffer> | Uint8ClampedArray<ArrayBuffer> | Int16Array<ArrayBuffer> | Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer> | Float32Array<ArrayBuffer> | Float64Array<ArrayBuffer>;
|
|
113
113
|
get address(): number;
|
|
114
114
|
clear(): this;
|
|
115
115
|
free(): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "echogarden",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.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",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"@echogarden/speex-resampler-wasm": "^0.3.0",
|
|
68
68
|
"@echogarden/svoxpico-wasm": "^0.2.0",
|
|
69
69
|
"@echogarden/transformers-nodejs-lite": "^2.17.1-lite.3",
|
|
70
|
+
"@echogarden/wave-codec": "^0.3.2",
|
|
70
71
|
"@mozilla/readability": "^0.6.0",
|
|
71
|
-
"alawmulaw": "^6.0.0",
|
|
72
72
|
"chalk": "^5.4.1",
|
|
73
73
|
"cldr-segmentation": "^2.2.1",
|
|
74
74
|
"command-exists": "^1.2.9",
|
|
@@ -48,7 +48,7 @@ export async function isolate(input: AudioSourceParam, options: SourceSeparation
|
|
|
48
48
|
// Release memory for the converted input audio since it's not needed anymore
|
|
49
49
|
inputRawAudioAs44100Stereo = undefined
|
|
50
50
|
|
|
51
|
-
await logger.startAsync(`Convert isolated audio to
|
|
51
|
+
await logger.startAsync(`Convert isolated audio back to original sample rate (${inputRawAudio.sampleRate} Hz) and channel count (${inputRawAudio.audioChannels.length})`)
|
|
52
52
|
isolatedRawAudio = await ensureRawAudio(isolatedRawAudio, inputRawAudio.sampleRate, inputRawAudio.audioChannels.length)
|
|
53
53
|
|
|
54
54
|
await logger.startAsync(`Subtract from original waveform to extract background audio`)
|
|
@@ -1,297 +1,51 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
3
|
-
import { BitDepth, SampleFormat } from '../codecs/WaveCodec.js'
|
|
1
|
+
import * as WaveCodec from '@echogarden/wave-codec'
|
|
2
|
+
import { BitDepth, SampleFormat } from '@echogarden/wave-codec'
|
|
4
3
|
|
|
5
4
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
6
5
|
// Low level audio sample conversions
|
|
7
6
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
8
7
|
export function encodeToAudioBuffer(audioChannels: Float32Array[], targetBitDepth: BitDepth = 16, targetSampleFormat: SampleFormat = SampleFormat.PCM): Uint8Array {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
audioChannels = [] // Zero the array references to allow the GC to free up memory, if possible
|
|
12
|
-
|
|
13
|
-
if (targetSampleFormat === SampleFormat.PCM) {
|
|
14
|
-
if (targetBitDepth === 8) {
|
|
15
|
-
return BinaryArrayConversion.int8ToBuffer(float32ToInt8Pcm(interleavedChannels))
|
|
16
|
-
} else if (targetBitDepth === 16) {
|
|
17
|
-
return BinaryArrayConversion.int16ToBufferLE(float32ToInt16Pcm(interleavedChannels))
|
|
18
|
-
} else if (targetBitDepth === 24) {
|
|
19
|
-
return BinaryArrayConversion.int24ToBufferLE(float32ToInt24Pcm(interleavedChannels))
|
|
20
|
-
} else if (targetBitDepth === 32) {
|
|
21
|
-
return BinaryArrayConversion.int32ToBufferLE(float32ToInt32Pcm(interleavedChannels))
|
|
22
|
-
} else {
|
|
23
|
-
throw new Error(`Unsupported PCM bit depth: ${targetBitDepth}`)
|
|
24
|
-
}
|
|
25
|
-
} else if (targetSampleFormat === SampleFormat.Float) {
|
|
26
|
-
if (targetBitDepth === 32) {
|
|
27
|
-
return BinaryArrayConversion.float32ToBufferLE(interleavedChannels)
|
|
28
|
-
} else if (targetBitDepth === 64) {
|
|
29
|
-
return BinaryArrayConversion.float64ToBufferLE(BinaryArrayConversion.float32Tofloat64(interleavedChannels))
|
|
30
|
-
} else {
|
|
31
|
-
throw new Error(`Unsupported float bit depth: ${targetBitDepth}`)
|
|
32
|
-
}
|
|
33
|
-
} else if (targetSampleFormat === SampleFormat.Alaw) {
|
|
34
|
-
if (targetBitDepth === 8) {
|
|
35
|
-
return AlawMulaw.alaw.encode(float32ToInt16Pcm(interleavedChannels))
|
|
36
|
-
} else {
|
|
37
|
-
throw new Error(`Unsupported alaw bit depth: ${targetBitDepth}`)
|
|
38
|
-
}
|
|
39
|
-
} else if (targetSampleFormat === SampleFormat.Mulaw) {
|
|
40
|
-
if (targetBitDepth === 8) {
|
|
41
|
-
return AlawMulaw.mulaw.encode(float32ToInt16Pcm(interleavedChannels))
|
|
42
|
-
} else {
|
|
43
|
-
throw new Error(`Unsupported mulaw bit depth: ${targetBitDepth}`)
|
|
44
|
-
}
|
|
45
|
-
} else {
|
|
46
|
-
throw new Error(`Unsupported audio format: ${targetSampleFormat}`)
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function decodeToChannels(audioBuffer: Uint8Array, channelCount: number, sourceBitDepth: number, sourceSampleFormat: SampleFormat) {
|
|
51
|
-
let interleavedChannels: Float32Array
|
|
52
|
-
|
|
53
|
-
if (sourceSampleFormat === SampleFormat.PCM) {
|
|
54
|
-
if (sourceBitDepth === 8) {
|
|
55
|
-
interleavedChannels = int8PcmToFloat32(BinaryArrayConversion.bufferToInt8(audioBuffer))
|
|
56
|
-
} else if (sourceBitDepth === 16) {
|
|
57
|
-
interleavedChannels = int16PcmToFloat32(BinaryArrayConversion.bufferLEToInt16(audioBuffer))
|
|
58
|
-
} else if (sourceBitDepth === 24) {
|
|
59
|
-
interleavedChannels = int24PcmToFloat32(BinaryArrayConversion.bufferLEToInt24(audioBuffer))
|
|
60
|
-
} else if (sourceBitDepth === 32) {
|
|
61
|
-
interleavedChannels = int32PcmToFloat32(BinaryArrayConversion.bufferLEToInt32(audioBuffer))
|
|
62
|
-
} else {
|
|
63
|
-
throw new Error(`Unsupported PCM bit depth: ${sourceBitDepth}`)
|
|
64
|
-
}
|
|
65
|
-
} else if (sourceSampleFormat === SampleFormat.Float) {
|
|
66
|
-
if (sourceBitDepth === 32) {
|
|
67
|
-
interleavedChannels = BinaryArrayConversion.bufferLEToFloat32(audioBuffer)
|
|
68
|
-
} else if (sourceBitDepth === 64) {
|
|
69
|
-
interleavedChannels = BinaryArrayConversion.float64Tofloat32(BinaryArrayConversion.bufferLEToFloat64(audioBuffer))
|
|
70
|
-
} else {
|
|
71
|
-
throw new Error(`Unsupported float bit depth: ${sourceBitDepth}`)
|
|
72
|
-
}
|
|
73
|
-
} else if (sourceSampleFormat === SampleFormat.Alaw) {
|
|
74
|
-
if (sourceBitDepth === 8) {
|
|
75
|
-
interleavedChannels = int16PcmToFloat32(AlawMulaw.alaw.decode(audioBuffer))
|
|
76
|
-
} else {
|
|
77
|
-
throw new Error(`Unsupported alaw bit depth: ${sourceBitDepth}`)
|
|
78
|
-
}
|
|
79
|
-
} else if (sourceSampleFormat === SampleFormat.Mulaw) {
|
|
80
|
-
if (sourceBitDepth === 8) {
|
|
81
|
-
interleavedChannels = int16PcmToFloat32(AlawMulaw.mulaw.decode(audioBuffer))
|
|
82
|
-
} else {
|
|
83
|
-
throw new Error(`Unsupported mulaw bit depth: ${sourceBitDepth}`)
|
|
84
|
-
}
|
|
85
|
-
} else {
|
|
86
|
-
throw new Error(`Unsupported audio format: ${sourceSampleFormat}`)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
audioBuffer = new Uint8Array(0) // Zero the buffer reference to allow the GC to free up memory, if possible
|
|
90
|
-
|
|
91
|
-
return deInterleaveChannels(interleavedChannels, channelCount)
|
|
8
|
+
return WaveCodec.float32ChannelsToBuffer(audioChannels, targetBitDepth, targetSampleFormat)
|
|
92
9
|
}
|
|
93
10
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const sampleCount = input.length
|
|
97
|
-
|
|
98
|
-
const output = new Float32Array(sampleCount)
|
|
99
|
-
|
|
100
|
-
for (let i = 0; i < sampleCount; i++) {
|
|
101
|
-
output[i] = input[i] / 128
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return output
|
|
11
|
+
export function decodeToChannels(audioBuffer: Uint8Array, channelCount: number, sourceBitDepth: BitDepth, sourceSampleFormat: SampleFormat) {
|
|
12
|
+
return WaveCodec.bufferToFloat32Channels(audioBuffer, channelCount, sourceBitDepth, sourceSampleFormat)
|
|
105
13
|
}
|
|
106
14
|
|
|
107
|
-
export function
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const output = new Int8Array(sampleCount)
|
|
111
|
-
|
|
112
|
-
for (let i = 0; i < sampleCount; i++) {
|
|
113
|
-
const int8Sample = input[i] * 128
|
|
114
|
-
|
|
115
|
-
if (int8Sample < -128) {
|
|
116
|
-
output[i] = -128
|
|
117
|
-
} else if (int8Sample > 127) {
|
|
118
|
-
output[i] = 127
|
|
119
|
-
} else {
|
|
120
|
-
output[i] = int8Sample
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return output
|
|
15
|
+
export function float32ToUint8Pcm(input: Float32Array) {
|
|
16
|
+
return WaveCodec.float32ToUint8Pcm(input)
|
|
125
17
|
}
|
|
126
18
|
|
|
127
|
-
// Int16 PCM <-> Float32 conversion
|
|
128
19
|
export function int16PcmToFloat32(input: Int16Array) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const output = new Float32Array(sampleCount)
|
|
132
|
-
|
|
133
|
-
for (let i = 0; i < sampleCount; i++) {
|
|
134
|
-
output[i] = input[i] / 32768
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
return output
|
|
20
|
+
return WaveCodec.int16PcmToFloat32(input)
|
|
138
21
|
}
|
|
139
22
|
|
|
140
23
|
export function float32ToInt16Pcm(input: Float32Array) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const output = new Int16Array(sampleCount)
|
|
144
|
-
|
|
145
|
-
for (let i = 0; i < sampleCount; i++) {
|
|
146
|
-
const int16Sample = input[i] * 32768
|
|
147
|
-
|
|
148
|
-
if (int16Sample < -32768) {
|
|
149
|
-
output[i] = -32768
|
|
150
|
-
} else if (int16Sample > 32767) {
|
|
151
|
-
output[i] = 32767
|
|
152
|
-
} else {
|
|
153
|
-
output[i] = int16Sample
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
return output
|
|
24
|
+
return WaveCodec.float32ToInt16Pcm(input)
|
|
158
25
|
}
|
|
159
26
|
|
|
160
|
-
// Int24 PCM <-> Float32 conversion (uses int32 for storage)
|
|
161
27
|
export function int24PcmToFloat32(input: Int32Array) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const output = new Float32Array(sampleCount)
|
|
165
|
-
|
|
166
|
-
for (let i = 0; i < sampleCount; i++) {
|
|
167
|
-
output[i] = input[i] / 8388608
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return output
|
|
28
|
+
return WaveCodec.int24PcmToFloat32(input)
|
|
171
29
|
}
|
|
172
30
|
|
|
173
31
|
export function float32ToInt24Pcm(input: Float32Array) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
const output = new Int32Array(sampleCount)
|
|
177
|
-
|
|
178
|
-
for (let i = 0; i < sampleCount; i++) {
|
|
179
|
-
const int24Sample = input[i] * 8388608
|
|
180
|
-
|
|
181
|
-
if (int24Sample < -8388608) {
|
|
182
|
-
output[i] = -8388608
|
|
183
|
-
} else if (int24Sample > 8388607) {
|
|
184
|
-
output[i] = 8388607
|
|
185
|
-
} else {
|
|
186
|
-
output[i] = int24Sample
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
return output
|
|
32
|
+
return WaveCodec.float32ToInt24Pcm(input)
|
|
191
33
|
}
|
|
192
34
|
|
|
193
|
-
// Int32 PCM <-> Float32 conversion
|
|
194
35
|
export function int32PcmToFloat32(input: Int32Array) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const output = new Float32Array(sampleCount)
|
|
198
|
-
|
|
199
|
-
for (let i = 0; i < sampleCount; i++) {
|
|
200
|
-
output[i] = input[i] / 2147483648
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return output
|
|
36
|
+
return WaveCodec.int32PcmToFloat32(input)
|
|
204
37
|
}
|
|
205
38
|
|
|
206
39
|
export function float32ToInt32Pcm(input: Float32Array) {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const output = new Int32Array(sampleCount)
|
|
210
|
-
|
|
211
|
-
for (let i = 0; i < sampleCount; i++) {
|
|
212
|
-
const int32Sample = input[i] * 2147483648
|
|
213
|
-
|
|
214
|
-
if (int32Sample < -2147483648) {
|
|
215
|
-
output[i] = -2147483648
|
|
216
|
-
} else if (int32Sample > 2147483647) {
|
|
217
|
-
output[i] = 2147483647
|
|
218
|
-
} else {
|
|
219
|
-
output[i] = int32Sample
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
return output
|
|
40
|
+
return WaveCodec.float32ToInt32Pcm(input)
|
|
224
41
|
}
|
|
225
42
|
|
|
226
|
-
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
227
|
-
// Channel interleaving
|
|
228
|
-
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
229
43
|
export function interleaveChannels(channels: Float32Array[]) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (channelCount === 0) {
|
|
233
|
-
throw new Error('Empty channel array received')
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
if (channelCount === 1) {
|
|
237
|
-
return channels[0]
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
const sampleCount = channels[0].length
|
|
241
|
-
const result = new Float32Array(sampleCount * channelCount)
|
|
242
|
-
|
|
243
|
-
let writeIndex = 0
|
|
244
|
-
|
|
245
|
-
for (let sampleIndex = 0; sampleIndex < sampleCount; sampleIndex++) {
|
|
246
|
-
for (let channelIndex = 0; channelIndex < channelCount; channelIndex++) {
|
|
247
|
-
result[writeIndex++] = channels[channelIndex][sampleIndex]
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
return result
|
|
44
|
+
return WaveCodec.interleaveChannels(channels)
|
|
252
45
|
}
|
|
253
46
|
|
|
254
|
-
export function
|
|
255
|
-
|
|
256
|
-
throw new Error('0 channel count received')
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
if (channelCount === 1) {
|
|
260
|
-
return [interleavedChannels]
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
if (interleavedChannels.length % channelCount != 0) {
|
|
264
|
-
throw new Error(`Size of interleaved channels (${interleaveChannels.length}) is not a multiple of channel count (${channelCount})`)
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
const sampleCount = interleavedChannels.length / channelCount
|
|
268
|
-
|
|
269
|
-
const channels: Float32Array[] = []
|
|
270
|
-
|
|
271
|
-
for (let i = 0; i < channelCount; i++) {
|
|
272
|
-
channels.push(new Float32Array(sampleCount))
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
let readIndex = 0
|
|
276
|
-
|
|
277
|
-
for (let sampleIndex = 0; sampleIndex < sampleCount; sampleIndex++) {
|
|
278
|
-
for (let channelIndex = 0; channelIndex < channelCount; channelIndex++) {
|
|
279
|
-
channels[channelIndex][sampleIndex] = interleavedChannels[readIndex++]
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
return channels
|
|
47
|
+
export function deinterleaveChannels(interleavedChannels: Float32Array, channelCount: number) {
|
|
48
|
+
return WaveCodec.deinterleaveChannels(interleavedChannels, channelCount)
|
|
284
49
|
}
|
|
285
50
|
|
|
286
|
-
|
|
287
|
-
// Utilities
|
|
288
|
-
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
289
|
-
export function clampFloatSample(floatSample: number) {
|
|
290
|
-
if (floatSample < -1.0) {
|
|
291
|
-
return -1.0
|
|
292
|
-
} else if (floatSample > 1.0) {
|
|
293
|
-
return 1.0
|
|
294
|
-
} else {
|
|
295
|
-
return floatSample
|
|
296
|
-
}
|
|
297
|
-
}
|
|
51
|
+
export { type BitDepth, SampleFormat } from '@echogarden/wave-codec'
|
package/src/audio/AudioPlayer.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { parentPort } from 'node:worker_threads'
|
|
|
2
2
|
|
|
3
3
|
import { ChildProcessWithoutNullStreams, spawn } from 'child_process'
|
|
4
4
|
|
|
5
|
-
import { RawAudio, encodeRawAudioToWave, fadeAudioInOut, getRawAudioDuration, sliceAudioChannels
|
|
5
|
+
import { RawAudio, encodeRawAudioToWave, fadeAudioInOut, getRawAudioDuration, sliceAudioChannels } from './AudioUtilities.js'
|
|
6
6
|
import * as FFMpegTranscoder from '../codecs/FFMpegTranscoder.js'
|
|
7
7
|
|
|
8
8
|
import { Timer } from '../utilities/Timer.js'
|
|
@@ -6,8 +6,8 @@ import * as AudioBufferConversion from './AudioBufferConversion.js'
|
|
|
6
6
|
import { Timer } from '../utilities/Timer.js'
|
|
7
7
|
import { logToStderr } from '../utilities/Utilities.js'
|
|
8
8
|
import { OpenPromise } from '../utilities/OpenPromise.js'
|
|
9
|
-
import { SampleFormat } from '../codecs/WaveCodec.js'
|
|
10
9
|
import { tryResolvingSoxPath } from './SoxPath.js'
|
|
10
|
+
import { SampleFormat } from './AudioBufferConversion.js'
|
|
11
11
|
|
|
12
12
|
const log = logToStderr
|
|
13
13
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as FFMpegTranscoder from '../codecs/FFMpegTranscoder.js'
|
|
2
|
-
import { SampleFormat,
|
|
2
|
+
import { SampleFormat, BitDepth, encodeWaveFromFloat32Channels, decodeWaveToFloat32Channels } from '@echogarden/wave-codec'
|
|
3
3
|
import { resampleAudioSpeex } from '../dsp/SpeexResampler.js'
|
|
4
4
|
import { Timeline } from '../utilities/Timeline.js'
|
|
5
5
|
import { concatFloat32Arrays } from '../utilities/Utilities.js'
|
|
@@ -8,11 +8,13 @@ import { concatFloat32Arrays } from '../utilities/Utilities.js'
|
|
|
8
8
|
// Wave encoding and decoding
|
|
9
9
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
10
10
|
export function encodeRawAudioToWave(rawAudio: RawAudio, bitDepth: BitDepth = 16, sampleFormat: SampleFormat = SampleFormat.PCM, speakerPositionMask = 0) {
|
|
11
|
-
return
|
|
11
|
+
return encodeWaveFromFloat32Channels(rawAudio.audioChannels, rawAudio.sampleRate, bitDepth, sampleFormat, speakerPositionMask)
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export function decodeWaveToRawAudio(waveFileBuffer: Uint8Array, ignoreTruncatedChunks = true, ignoreOverflowingDataChunks = true) {
|
|
15
|
-
|
|
15
|
+
const rawAudio = decodeWaveToFloat32Channels(waveFileBuffer, ignoreTruncatedChunks, ignoreOverflowingDataChunks)
|
|
16
|
+
|
|
17
|
+
return { rawAudio }
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
package/src/codecs/TIMITCodec.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { decodeToChannels } from '../audio/AudioBufferConversion.js'
|
|
1
|
+
import { decodeToChannels, SampleFormat } from '../audio/AudioBufferConversion.js'
|
|
2
2
|
import { decodeAscii } from '../encodings/Ascii.js'
|
|
3
3
|
import { readFileAsBinary } from '../utilities/FileSystem.js'
|
|
4
|
-
import { SampleFormat } from './WaveCodec.js'
|
|
5
4
|
|
|
6
5
|
export async function decodeTimitAudioFile(filename: string) {
|
|
7
6
|
return decodeTimitAudio(await readFileAsBinary(filename))
|
package/src/encodings/Ascii.ts
CHANGED
|
@@ -49,7 +49,7 @@ export class ChunkedAsciiDecoder {
|
|
|
49
49
|
private readonly textDecoder = new TextDecoder('windows-1252')
|
|
50
50
|
|
|
51
51
|
writeChunk(chunk: Uint8Array) {
|
|
52
|
-
const decodedChunk = this.textDecoder.decode(chunk)
|
|
52
|
+
const decodedChunk = this.textDecoder.decode(chunk, { stream: true })
|
|
53
53
|
|
|
54
54
|
this.str += decodedChunk
|
|
55
55
|
}
|
package/src/encodings/Utf16.ts
CHANGED
|
@@ -41,7 +41,7 @@ export class ChunkedUtf16Decoder {
|
|
|
41
41
|
private readonly textDecoder = new TextDecoder('utf-16le')
|
|
42
42
|
|
|
43
43
|
writeChunk(chunk: Uint16Array) {
|
|
44
|
-
const decodedChunk = this.textDecoder.decode(chunk)
|
|
44
|
+
const decodedChunk = this.textDecoder.decode(chunk, { stream: true })
|
|
45
45
|
|
|
46
46
|
this.str += decodedChunk
|
|
47
47
|
}
|