@moolam/bindings-speech 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/LICENSE +202 -0
- package/README.md +41 -0
- package/bin/speech-cert.mjs +11 -0
- package/certification/README.md +18 -0
- package/certification/device-profiles/mid-range-android.json +12 -0
- package/certification/profile.json +33 -0
- package/certification/prove-speech-cert.mjs +11 -0
- package/certification/reports/prove.green1.speech.cert.json +92 -0
- package/certification/reports/prove.seeded-red.speech.cert.json +70 -0
- package/certification/reports/speech.cert.json +92 -0
- package/certification/run-speech-cert.mjs +11 -0
- package/certification/schemas/speech.cert.report.schema.json +149 -0
- package/certification/voice-rtt.baseline.json +12 -0
- package/dist/edge_stt_harness.d.ts +86 -0
- package/dist/edge_stt_harness.d.ts.map +1 -0
- package/dist/edge_stt_harness.js +311 -0
- package/dist/edge_stt_harness.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/speech_certification.d.ts +149 -0
- package/dist/speech_certification.d.ts.map +1 -0
- package/dist/speech_certification.js +490 -0
- package/dist/speech_certification.js.map +1 -0
- package/dist/stt_binding.d.ts +148 -0
- package/dist/stt_binding.d.ts.map +1 -0
- package/dist/stt_binding.js +400 -0
- package/dist/stt_binding.js.map +1 -0
- package/dist/tts_binding.d.ts +187 -0
- package/dist/tts_binding.d.ts.map +1 -0
- package/dist/tts_binding.js +565 -0
- package/dist/tts_binding.js.map +1 -0
- package/dist/voice_rtt_proof.d.ts +112 -0
- package/dist/voice_rtt_proof.d.ts.map +1 -0
- package/dist/voice_rtt_proof.js +241 -0
- package/dist/voice_rtt_proof.js.map +1 -0
- package/dist/whisper_ffi.d.ts +44 -0
- package/dist/whisper_ffi.d.ts.map +1 -0
- package/dist/whisper_ffi.js +104 -0
- package/dist/whisper_ffi.js.map +1 -0
- package/fixtures/indic/audio/en-classroom.pcm +0 -0
- package/fixtures/indic/audio/hi-classroom-noise.pcm +0 -0
- package/fixtures/indic/audio/hi-en-codeswitch.pcm +0 -0
- package/fixtures/indic/audio/hi-greeting.pcm +0 -0
- package/fixtures/indic/audio/short-hi.pcm +0 -0
- package/fixtures/indic/audio/ta-greeting.pcm +0 -0
- package/fixtures/indic/catalog.json +75 -0
- package/fixtures/indic/supported-languages.json +8 -0
- package/fixtures/tts/tts-voices.model-card.json +41 -0
- package/fixtures/tts/voices.json +24 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech_certification.js","sourceRoot":"","sources":["../src/speech_certification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* whisper.cpp-class local STT behind SpeechInterface.
|
|
3
|
+
*
|
|
4
|
+
* Model load declares BCP-47 languages from the Indic fixture manifest —
|
|
5
|
+
* only languages the acoustic+language models actually support.
|
|
6
|
+
* `transcribe` always emits ≥1 isFinal:false partial before isFinal:true.
|
|
7
|
+
*/
|
|
8
|
+
import type { AudioChunk, SpeechInterface, SpeechSynthesisOptions, TranscriptSegment } from "@moolam/contracts";
|
|
9
|
+
import type { SpeechConformanceHarness } from "@moolam/contract-conformance";
|
|
10
|
+
import { type WhisperCppNativeBackend, type WhisperCppNativeHandle } from "./whisper_ffi.js";
|
|
11
|
+
export declare const PACKAGE_ROOT: string;
|
|
12
|
+
export declare const DEFAULT_INDIC_LANGUAGES_MANIFEST: string;
|
|
13
|
+
export declare const DEFAULT_INDIC_UTTERANCE_CATALOG: string;
|
|
14
|
+
export declare const INDIC_FIXTURES_DIR: string;
|
|
15
|
+
export declare const WHISPER_CPP_CLASS_ENGINE = "whisper.cpp-class";
|
|
16
|
+
export declare const SPEECH_STREAM_CHUNK_LIMIT = 64;
|
|
17
|
+
export declare const SPEECH_SAMPLE_RATE_HZ = 16000;
|
|
18
|
+
export type IndicLanguagesManifest = {
|
|
19
|
+
schemaVersion: string;
|
|
20
|
+
engine: string;
|
|
21
|
+
pinnedRevision?: string;
|
|
22
|
+
languages: string[];
|
|
23
|
+
fallbackLanguage: string;
|
|
24
|
+
};
|
|
25
|
+
export type IndicUtteranceKind = "indic-mono" | "english-mono" | "code-switched" | "short-utterance";
|
|
26
|
+
export type IndicUtteranceFixtureMeta = {
|
|
27
|
+
id: string;
|
|
28
|
+
kind: IndicUtteranceKind | string;
|
|
29
|
+
language: string;
|
|
30
|
+
durationMs: number;
|
|
31
|
+
sampleRateHz: number;
|
|
32
|
+
pcmRelpath: string;
|
|
33
|
+
byteLength: number;
|
|
34
|
+
containsCodeSwitch: boolean;
|
|
35
|
+
expectedLanguage: string;
|
|
36
|
+
/** Classroom ambient-noise fixture (FP-002). */
|
|
37
|
+
ambientNoise?: boolean;
|
|
38
|
+
};
|
|
39
|
+
export type IndicUtteranceCatalog = {
|
|
40
|
+
schemaVersion: string;
|
|
41
|
+
sampleRateHz: number;
|
|
42
|
+
pcmEncoding: string;
|
|
43
|
+
description?: string;
|
|
44
|
+
utterances: IndicUtteranceFixtureMeta[];
|
|
45
|
+
};
|
|
46
|
+
export type IndicUtteranceFixture = IndicUtteranceFixtureMeta & {
|
|
47
|
+
/** Absolute path to the committed PCM file. */
|
|
48
|
+
pcmPath: string;
|
|
49
|
+
/** Raw s16le mono PCM bytes. */
|
|
50
|
+
pcm: Uint8Array;
|
|
51
|
+
};
|
|
52
|
+
export type WhisperCppSttTelemetryOp = "load" | "unload" | "transcribe" | "synthesize";
|
|
53
|
+
/** Metadata-only telemetry — never raw audio or transcript bodies. */
|
|
54
|
+
export type WhisperCppSttTelemetryEvent = {
|
|
55
|
+
event: "bindings_speech.stt";
|
|
56
|
+
op: WhisperCppSttTelemetryOp;
|
|
57
|
+
outcome: "ok" | "error" | "fallback";
|
|
58
|
+
subjectId: string;
|
|
59
|
+
deviceId: string;
|
|
60
|
+
engine: typeof WHISPER_CPP_CLASS_ENGINE;
|
|
61
|
+
languageCount?: number;
|
|
62
|
+
segmentCount?: number;
|
|
63
|
+
durationMs?: number;
|
|
64
|
+
failureClass?: "config" | "not_loaded" | "aborted" | "native";
|
|
65
|
+
detail?: string;
|
|
66
|
+
};
|
|
67
|
+
export type LoadWhisperCppSpeechOptions = {
|
|
68
|
+
subjectId: string;
|
|
69
|
+
deviceId: string;
|
|
70
|
+
/** Absolute path to languages manifest (defaults to fixtures/indic). */
|
|
71
|
+
languagesManifestPath?: string;
|
|
72
|
+
backend?: WhisperCppNativeBackend;
|
|
73
|
+
onTelemetry?: (event: WhisperCppSttTelemetryEvent) => void;
|
|
74
|
+
languageHint?: string;
|
|
75
|
+
/** Override wall clock (tests). */
|
|
76
|
+
nowMs?: () => number;
|
|
77
|
+
};
|
|
78
|
+
export declare class WhisperCppSpeechError extends Error {
|
|
79
|
+
readonly failureClass: NonNullable<WhisperCppSttTelemetryEvent["failureClass"]>;
|
|
80
|
+
constructor(message: string, failureClass: NonNullable<WhisperCppSttTelemetryEvent["failureClass"]>);
|
|
81
|
+
}
|
|
82
|
+
export declare function loadIndicLanguagesManifest(manifestPath?: string): IndicLanguagesManifest;
|
|
83
|
+
/**
|
|
84
|
+
* Load the committed Indic utterance catalog (hi / en / ta / code-switch / short).
|
|
85
|
+
*/
|
|
86
|
+
export declare function loadIndicUtteranceCatalog(catalogPath?: string): IndicUtteranceCatalog;
|
|
87
|
+
/** List committed utterance ids from the Indic catalog. */
|
|
88
|
+
export declare function listIndicUtteranceIds(catalogPath?: string): string[];
|
|
89
|
+
/**
|
|
90
|
+
* Load one committed audio fixture (PCM + metadata) by id.
|
|
91
|
+
*/
|
|
92
|
+
export declare function loadIndicUtteranceFixture(id: string, options?: {
|
|
93
|
+
catalogPath?: string;
|
|
94
|
+
fixturesDir?: string;
|
|
95
|
+
}): IndicUtteranceFixture;
|
|
96
|
+
/** Load every committed Indic utterance fixture (bounded by catalog size). */
|
|
97
|
+
export declare function loadAllIndicUtteranceFixtures(options?: {
|
|
98
|
+
catalogPath?: string;
|
|
99
|
+
fixturesDir?: string;
|
|
100
|
+
}): IndicUtteranceFixture[];
|
|
101
|
+
/**
|
|
102
|
+
* Convert a loaded PCM fixture into an AudioChunk async iterable for transcribe().
|
|
103
|
+
*/
|
|
104
|
+
export declare function indicFixtureAsAudioStream(fixture: IndicUtteranceFixture): AsyncIterable<AudioChunk>;
|
|
105
|
+
export declare class WhisperCppSpeechBinding implements SpeechInterface {
|
|
106
|
+
#private;
|
|
107
|
+
constructor(args: {
|
|
108
|
+
subjectId: string;
|
|
109
|
+
deviceId: string;
|
|
110
|
+
languages: readonly string[];
|
|
111
|
+
fallbackLanguage: string;
|
|
112
|
+
backend: WhisperCppNativeBackend;
|
|
113
|
+
handle: WhisperCppNativeHandle;
|
|
114
|
+
onTelemetry?: (event: WhisperCppSttTelemetryEvent) => void;
|
|
115
|
+
languageHint?: string;
|
|
116
|
+
});
|
|
117
|
+
get supportedLanguages(): string[];
|
|
118
|
+
get subjectId(): string;
|
|
119
|
+
get deviceId(): string;
|
|
120
|
+
get engine(): typeof WHISPER_CPP_CLASS_ENGINE;
|
|
121
|
+
unload(): Promise<void>;
|
|
122
|
+
transcribe(audio: AsyncIterable<AudioChunk>): AsyncIterable<TranscriptSegment>;
|
|
123
|
+
/**
|
|
124
|
+
* Minimal on-device synthesize so SpeechInterface is complete for CK-05.2.
|
|
125
|
+
* Full TTS engines land in the TTS binding submodule; unsupported languages
|
|
126
|
+
* fall back to the declared fallbackLanguage — never throw.
|
|
127
|
+
*/
|
|
128
|
+
synthesize(text: string, options: SpeechSynthesisOptions): AsyncIterable<AudioChunk>;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Load whisper.cpp-class STT: read truthful BCP-47 set from the Indic
|
|
132
|
+
* languages manifest, then open the native/FFI seam.
|
|
133
|
+
*/
|
|
134
|
+
export declare function loadWhisperCppSpeech(options: LoadWhisperCppSpeechOptions): Promise<WhisperCppSpeechBinding>;
|
|
135
|
+
export type CreateWhisperCppSpeechHarnessOptions = {
|
|
136
|
+
subjectId?: string;
|
|
137
|
+
deviceId?: string;
|
|
138
|
+
languagesManifestPath?: string;
|
|
139
|
+
backend?: WhisperCppNativeBackend;
|
|
140
|
+
onTelemetry?: (event: WhisperCppSttTelemetryEvent) => void;
|
|
141
|
+
languageHint?: string;
|
|
142
|
+
};
|
|
143
|
+
/** Conformance factory: fresh loaded binding per obligation (subject-scoped). */
|
|
144
|
+
export declare function createWhisperCppSpeechHarnessFactory(options?: CreateWhisperCppSpeechHarnessOptions): (ctx?: {
|
|
145
|
+
subjectId?: string;
|
|
146
|
+
deviceId?: string;
|
|
147
|
+
}) => Promise<SpeechConformanceHarness>;
|
|
148
|
+
//# sourceMappingURL=stt_binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stt_binding.d.ts","sourceRoot":"","sources":["../src/stt_binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* whisper.cpp-class local STT behind SpeechInterface.
|
|
3
|
+
*
|
|
4
|
+
* Model load declares BCP-47 languages from the Indic fixture manifest —
|
|
5
|
+
* only languages the acoustic+language models actually support.
|
|
6
|
+
* `transcribe` always emits ≥1 isFinal:false partial before isFinal:true.
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
import { createInProcessWhisperCppBackend, } from "./whisper_ffi.js";
|
|
12
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
export const PACKAGE_ROOT = path.resolve(__dirname, "..");
|
|
14
|
+
export const DEFAULT_INDIC_LANGUAGES_MANIFEST = path.join(PACKAGE_ROOT, "fixtures", "indic", "supported-languages.json");
|
|
15
|
+
export const DEFAULT_INDIC_UTTERANCE_CATALOG = path.join(PACKAGE_ROOT, "fixtures", "indic", "catalog.json");
|
|
16
|
+
export const INDIC_FIXTURES_DIR = path.join(PACKAGE_ROOT, "fixtures", "indic");
|
|
17
|
+
export const WHISPER_CPP_CLASS_ENGINE = "whisper.cpp-class";
|
|
18
|
+
export const SPEECH_STREAM_CHUNK_LIMIT = 64;
|
|
19
|
+
export const SPEECH_SAMPLE_RATE_HZ = 16_000;
|
|
20
|
+
export class WhisperCppSpeechError extends Error {
|
|
21
|
+
failureClass;
|
|
22
|
+
constructor(message, failureClass) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.name = "WhisperCppSpeechError";
|
|
25
|
+
this.failureClass = failureClass;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function loadIndicLanguagesManifest(manifestPath = DEFAULT_INDIC_LANGUAGES_MANIFEST) {
|
|
29
|
+
if (!existsSync(manifestPath)) {
|
|
30
|
+
throw new WhisperCppSpeechError(`languages manifest missing at ${manifestPath}`, "config");
|
|
31
|
+
}
|
|
32
|
+
let raw;
|
|
33
|
+
try {
|
|
34
|
+
raw = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
throw new WhisperCppSpeechError(`languages manifest unreadable: ${err instanceof Error ? err.message : String(err)}`, "config");
|
|
38
|
+
}
|
|
39
|
+
const m = raw;
|
|
40
|
+
if (typeof m.schemaVersion !== "string" ||
|
|
41
|
+
!Array.isArray(m.languages) ||
|
|
42
|
+
m.languages.length === 0 ||
|
|
43
|
+
typeof m.fallbackLanguage !== "string" ||
|
|
44
|
+
!m.fallbackLanguage.trim()) {
|
|
45
|
+
throw new WhisperCppSpeechError("languages manifest must declare schemaVersion, non-empty languages[], fallbackLanguage", "config");
|
|
46
|
+
}
|
|
47
|
+
const languages = m.languages
|
|
48
|
+
.map((l) => (typeof l === "string" ? l.trim() : ""))
|
|
49
|
+
.filter((l) => l.length > 0)
|
|
50
|
+
.slice(0, SPEECH_STREAM_CHUNK_LIMIT);
|
|
51
|
+
if (languages.length === 0) {
|
|
52
|
+
throw new WhisperCppSpeechError("languages manifest languages[] empty after normalize", "config");
|
|
53
|
+
}
|
|
54
|
+
if (!languages.includes(m.fallbackLanguage.trim())) {
|
|
55
|
+
throw new WhisperCppSpeechError(`fallbackLanguage ${m.fallbackLanguage} not in languages[]`, "config");
|
|
56
|
+
}
|
|
57
|
+
// Truthfulness: only list languages the fixture models actually support.
|
|
58
|
+
return {
|
|
59
|
+
schemaVersion: m.schemaVersion,
|
|
60
|
+
engine: typeof m.engine === "string" ? m.engine : WHISPER_CPP_CLASS_ENGINE,
|
|
61
|
+
...(typeof m.pinnedRevision === "string"
|
|
62
|
+
? { pinnedRevision: m.pinnedRevision }
|
|
63
|
+
: {}),
|
|
64
|
+
languages,
|
|
65
|
+
fallbackLanguage: m.fallbackLanguage.trim(),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Load the committed Indic utterance catalog (hi / en / ta / code-switch / short).
|
|
70
|
+
*/
|
|
71
|
+
export function loadIndicUtteranceCatalog(catalogPath = DEFAULT_INDIC_UTTERANCE_CATALOG) {
|
|
72
|
+
if (!existsSync(catalogPath)) {
|
|
73
|
+
throw new WhisperCppSpeechError(`utterance catalog missing at ${catalogPath}`, "config");
|
|
74
|
+
}
|
|
75
|
+
let raw;
|
|
76
|
+
try {
|
|
77
|
+
raw = JSON.parse(readFileSync(catalogPath, "utf8"));
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
throw new WhisperCppSpeechError(`utterance catalog unreadable: ${err instanceof Error ? err.message : String(err)}`, "config");
|
|
81
|
+
}
|
|
82
|
+
const c = raw;
|
|
83
|
+
if (typeof c.schemaVersion !== "string" ||
|
|
84
|
+
!Number.isFinite(c.sampleRateHz) ||
|
|
85
|
+
typeof c.pcmEncoding !== "string" ||
|
|
86
|
+
!Array.isArray(c.utterances) ||
|
|
87
|
+
c.utterances.length === 0) {
|
|
88
|
+
throw new WhisperCppSpeechError("utterance catalog must declare schemaVersion, sampleRateHz, pcmEncoding, non-empty utterances[]", "config");
|
|
89
|
+
}
|
|
90
|
+
const utterances = [];
|
|
91
|
+
for (const u of c.utterances.slice(0, SPEECH_STREAM_CHUNK_LIMIT)) {
|
|
92
|
+
if (typeof u?.id !== "string" ||
|
|
93
|
+
!u.id.trim() ||
|
|
94
|
+
typeof u.pcmRelpath !== "string" ||
|
|
95
|
+
typeof u.language !== "string" ||
|
|
96
|
+
typeof u.expectedLanguage !== "string" ||
|
|
97
|
+
!Number.isFinite(u.durationMs) ||
|
|
98
|
+
!Number.isFinite(u.sampleRateHz) ||
|
|
99
|
+
!Number.isFinite(u.byteLength)) {
|
|
100
|
+
throw new WhisperCppSpeechError("utterance catalog entry missing required fields (id, language, pcmRelpath, durations)", "config");
|
|
101
|
+
}
|
|
102
|
+
utterances.push({
|
|
103
|
+
id: u.id.trim(),
|
|
104
|
+
kind: typeof u.kind === "string" ? u.kind : "indic-mono",
|
|
105
|
+
language: u.language.trim(),
|
|
106
|
+
durationMs: u.durationMs,
|
|
107
|
+
sampleRateHz: u.sampleRateHz,
|
|
108
|
+
pcmRelpath: u.pcmRelpath.replace(/\\/g, "/"),
|
|
109
|
+
byteLength: u.byteLength,
|
|
110
|
+
containsCodeSwitch: Boolean(u.containsCodeSwitch),
|
|
111
|
+
expectedLanguage: u.expectedLanguage.trim(),
|
|
112
|
+
...(u.ambientNoise === true ? { ambientNoise: true } : {}),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
schemaVersion: c.schemaVersion,
|
|
117
|
+
sampleRateHz: c.sampleRateHz,
|
|
118
|
+
pcmEncoding: c.pcmEncoding,
|
|
119
|
+
...(typeof c.description === "string" ? { description: c.description } : {}),
|
|
120
|
+
utterances,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/** List committed utterance ids from the Indic catalog. */
|
|
124
|
+
export function listIndicUtteranceIds(catalogPath = DEFAULT_INDIC_UTTERANCE_CATALOG) {
|
|
125
|
+
return loadIndicUtteranceCatalog(catalogPath).utterances.map((u) => u.id);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Load one committed audio fixture (PCM + metadata) by id.
|
|
129
|
+
*/
|
|
130
|
+
export function loadIndicUtteranceFixture(id, options = {}) {
|
|
131
|
+
const catalog = loadIndicUtteranceCatalog(options.catalogPath ?? DEFAULT_INDIC_UTTERANCE_CATALOG);
|
|
132
|
+
const meta = catalog.utterances.find((u) => u.id === id);
|
|
133
|
+
if (!meta) {
|
|
134
|
+
throw new WhisperCppSpeechError(`unknown Indic utterance fixture "${id}"`, "config");
|
|
135
|
+
}
|
|
136
|
+
const fixturesDir = options.fixturesDir ?? INDIC_FIXTURES_DIR;
|
|
137
|
+
const pcmPath = path.join(fixturesDir, meta.pcmRelpath);
|
|
138
|
+
if (!existsSync(pcmPath)) {
|
|
139
|
+
throw new WhisperCppSpeechError(`PCM fixture missing at ${pcmPath}`, "config");
|
|
140
|
+
}
|
|
141
|
+
const pcm = new Uint8Array(readFileSync(pcmPath));
|
|
142
|
+
if (pcm.byteLength === 0) {
|
|
143
|
+
throw new WhisperCppSpeechError(`PCM fixture empty at ${pcmPath}`, "config");
|
|
144
|
+
}
|
|
145
|
+
if (pcm.byteLength !== meta.byteLength) {
|
|
146
|
+
throw new WhisperCppSpeechError(`PCM byteLength mismatch for ${id}: catalog=${meta.byteLength} disk=${pcm.byteLength}`, "config");
|
|
147
|
+
}
|
|
148
|
+
return { ...meta, pcmPath, pcm };
|
|
149
|
+
}
|
|
150
|
+
/** Load every committed Indic utterance fixture (bounded by catalog size). */
|
|
151
|
+
export function loadAllIndicUtteranceFixtures(options = {}) {
|
|
152
|
+
const catalog = loadIndicUtteranceCatalog(options.catalogPath ?? DEFAULT_INDIC_UTTERANCE_CATALOG);
|
|
153
|
+
return catalog.utterances.map((u) => loadIndicUtteranceFixture(u.id, options));
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Convert a loaded PCM fixture into an AudioChunk async iterable for transcribe().
|
|
157
|
+
*/
|
|
158
|
+
export async function* indicFixtureAsAudioStream(fixture) {
|
|
159
|
+
yield {
|
|
160
|
+
data: fixture.pcm,
|
|
161
|
+
sampleRateHz: fixture.sampleRateHz,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function estimateDurationMs(chunks) {
|
|
165
|
+
let totalBytes = 0;
|
|
166
|
+
let sampleRate = SPEECH_SAMPLE_RATE_HZ;
|
|
167
|
+
for (const c of chunks) {
|
|
168
|
+
totalBytes += c.data.byteLength;
|
|
169
|
+
if (Number.isFinite(c.sampleRateHz) && c.sampleRateHz > 0) {
|
|
170
|
+
sampleRate = c.sampleRateHz;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// PCM 16-bit mono → 2 bytes/sample
|
|
174
|
+
const samples = totalBytes / 2;
|
|
175
|
+
return Math.max(0, Math.round((samples / sampleRate) * 1000));
|
|
176
|
+
}
|
|
177
|
+
export class WhisperCppSpeechBinding {
|
|
178
|
+
#subjectId;
|
|
179
|
+
#deviceId;
|
|
180
|
+
#languages;
|
|
181
|
+
#fallbackLanguage;
|
|
182
|
+
#backend;
|
|
183
|
+
#handle;
|
|
184
|
+
#onTelemetry;
|
|
185
|
+
#languageHint;
|
|
186
|
+
#unloaded = false;
|
|
187
|
+
constructor(args) {
|
|
188
|
+
this.#subjectId = args.subjectId;
|
|
189
|
+
this.#deviceId = args.deviceId;
|
|
190
|
+
this.#languages = [...args.languages];
|
|
191
|
+
this.#fallbackLanguage = args.fallbackLanguage;
|
|
192
|
+
this.#backend = args.backend;
|
|
193
|
+
this.#handle = args.handle;
|
|
194
|
+
if (args.onTelemetry)
|
|
195
|
+
this.#onTelemetry = args.onTelemetry;
|
|
196
|
+
if (args.languageHint)
|
|
197
|
+
this.#languageHint = args.languageHint;
|
|
198
|
+
}
|
|
199
|
+
get supportedLanguages() {
|
|
200
|
+
return [...this.#languages];
|
|
201
|
+
}
|
|
202
|
+
get subjectId() {
|
|
203
|
+
return this.#subjectId;
|
|
204
|
+
}
|
|
205
|
+
get deviceId() {
|
|
206
|
+
return this.#deviceId;
|
|
207
|
+
}
|
|
208
|
+
get engine() {
|
|
209
|
+
return WHISPER_CPP_CLASS_ENGINE;
|
|
210
|
+
}
|
|
211
|
+
#emit(partial) {
|
|
212
|
+
this.#onTelemetry?.({
|
|
213
|
+
event: "bindings_speech.stt",
|
|
214
|
+
subjectId: this.#subjectId,
|
|
215
|
+
deviceId: this.#deviceId,
|
|
216
|
+
engine: WHISPER_CPP_CLASS_ENGINE,
|
|
217
|
+
...partial,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
#assertLoaded() {
|
|
221
|
+
if (this.#unloaded) {
|
|
222
|
+
throw new WhisperCppSpeechError("whisper STT binding unloaded", "not_loaded");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
async unload() {
|
|
226
|
+
if (this.#unloaded)
|
|
227
|
+
return;
|
|
228
|
+
this.#unloaded = true;
|
|
229
|
+
await this.#backend.unload(this.#handle);
|
|
230
|
+
this.#emit({ op: "unload", outcome: "ok" });
|
|
231
|
+
}
|
|
232
|
+
async *transcribe(audio) {
|
|
233
|
+
this.#assertLoaded();
|
|
234
|
+
const chunks = [];
|
|
235
|
+
try {
|
|
236
|
+
for await (const chunk of audio) {
|
|
237
|
+
chunks.push(chunk);
|
|
238
|
+
if (chunks.length >= SPEECH_STREAM_CHUNK_LIMIT)
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
const durationMs = estimateDurationMs(chunks);
|
|
242
|
+
const pcm = chunks.length === 0
|
|
243
|
+
? new Uint8Array(0)
|
|
244
|
+
: concatBytes(chunks.map((c) => c.data));
|
|
245
|
+
const sampleRateHz = chunks.find((c) => c.sampleRateHz > 0)?.sampleRateHz ??
|
|
246
|
+
SPEECH_SAMPLE_RATE_HZ;
|
|
247
|
+
const native = await this.#backend.transcribe(this.#handle, {
|
|
248
|
+
pcm,
|
|
249
|
+
sampleRateHz,
|
|
250
|
+
durationMs,
|
|
251
|
+
supportedLanguages: this.#languages,
|
|
252
|
+
...(this.#languageHint ? { languageHint: this.#languageHint } : {}),
|
|
253
|
+
});
|
|
254
|
+
// Invariant: ≥1 partial before final on every utterance (including <200ms).
|
|
255
|
+
yield {
|
|
256
|
+
text: native.partialText,
|
|
257
|
+
language: native.language,
|
|
258
|
+
startMs: native.startMs,
|
|
259
|
+
endMs: Math.max(native.startMs, Math.min(native.endMs, native.startMs + 1)),
|
|
260
|
+
confidence: Math.min(native.confidence, 0.85),
|
|
261
|
+
isFinal: false,
|
|
262
|
+
};
|
|
263
|
+
yield {
|
|
264
|
+
text: native.finalText,
|
|
265
|
+
language: native.language,
|
|
266
|
+
startMs: native.startMs,
|
|
267
|
+
endMs: native.endMs,
|
|
268
|
+
confidence: native.confidence,
|
|
269
|
+
isFinal: true,
|
|
270
|
+
};
|
|
271
|
+
this.#emit({
|
|
272
|
+
op: "transcribe",
|
|
273
|
+
outcome: "ok",
|
|
274
|
+
segmentCount: 2,
|
|
275
|
+
durationMs,
|
|
276
|
+
languageCount: this.#languages.length,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
catch (err) {
|
|
280
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
281
|
+
this.#emit({
|
|
282
|
+
op: "transcribe",
|
|
283
|
+
outcome: "error",
|
|
284
|
+
failureClass: err instanceof WhisperCppSpeechError ? err.failureClass : "native",
|
|
285
|
+
detail: detail.slice(0, 160),
|
|
286
|
+
});
|
|
287
|
+
throw err;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Minimal on-device synthesize so SpeechInterface is complete for CK-05.2.
|
|
292
|
+
* Full TTS engines land in the TTS binding submodule; unsupported languages
|
|
293
|
+
* fall back to the declared fallbackLanguage — never throw.
|
|
294
|
+
*/
|
|
295
|
+
async *synthesize(text, options) {
|
|
296
|
+
this.#assertLoaded();
|
|
297
|
+
const requested = options.language?.trim() ?? "";
|
|
298
|
+
const supported = this.#languages.includes(requested);
|
|
299
|
+
const effective = supported ? requested : this.#fallbackLanguage;
|
|
300
|
+
const payload = new TextEncoder().encode(`bindings_speech.pcm.${effective}.${this.#subjectId}.${text.slice(0, 32)}`);
|
|
301
|
+
yield {
|
|
302
|
+
data: payload,
|
|
303
|
+
sampleRateHz: SPEECH_SAMPLE_RATE_HZ,
|
|
304
|
+
};
|
|
305
|
+
this.#emit({
|
|
306
|
+
op: "synthesize",
|
|
307
|
+
outcome: supported ? "ok" : "fallback",
|
|
308
|
+
languageCount: this.#languages.length,
|
|
309
|
+
...(supported ? {} : { detail: "unsupported_language_fallback" }),
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
function concatBytes(parts) {
|
|
314
|
+
let total = 0;
|
|
315
|
+
for (const p of parts)
|
|
316
|
+
total += p.byteLength;
|
|
317
|
+
const out = new Uint8Array(total);
|
|
318
|
+
let offset = 0;
|
|
319
|
+
for (const p of parts) {
|
|
320
|
+
out.set(p, offset);
|
|
321
|
+
offset += p.byteLength;
|
|
322
|
+
}
|
|
323
|
+
return out;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Load whisper.cpp-class STT: read truthful BCP-47 set from the Indic
|
|
327
|
+
* languages manifest, then open the native/FFI seam.
|
|
328
|
+
*/
|
|
329
|
+
export async function loadWhisperCppSpeech(options) {
|
|
330
|
+
const subjectId = options.subjectId?.trim();
|
|
331
|
+
const deviceId = options.deviceId?.trim();
|
|
332
|
+
if (!subjectId) {
|
|
333
|
+
throw new WhisperCppSpeechError("subjectId is required", "config");
|
|
334
|
+
}
|
|
335
|
+
if (!deviceId) {
|
|
336
|
+
throw new WhisperCppSpeechError("deviceId is required", "config");
|
|
337
|
+
}
|
|
338
|
+
const manifestPath = options.languagesManifestPath ?? DEFAULT_INDIC_LANGUAGES_MANIFEST;
|
|
339
|
+
const manifest = loadIndicLanguagesManifest(manifestPath);
|
|
340
|
+
const backend = options.backend ?? createInProcessWhisperCppBackend();
|
|
341
|
+
const emit = options.onTelemetry;
|
|
342
|
+
try {
|
|
343
|
+
const handle = await backend.load(`whisper.cpp-class:${manifest.pinnedRevision ?? "v1"}`);
|
|
344
|
+
const binding = new WhisperCppSpeechBinding({
|
|
345
|
+
subjectId,
|
|
346
|
+
deviceId,
|
|
347
|
+
languages: manifest.languages,
|
|
348
|
+
fallbackLanguage: manifest.fallbackLanguage,
|
|
349
|
+
backend,
|
|
350
|
+
handle,
|
|
351
|
+
...(options.onTelemetry ? { onTelemetry: options.onTelemetry } : {}),
|
|
352
|
+
...(options.languageHint ? { languageHint: options.languageHint } : {}),
|
|
353
|
+
});
|
|
354
|
+
emit?.({
|
|
355
|
+
event: "bindings_speech.stt",
|
|
356
|
+
op: "load",
|
|
357
|
+
outcome: "ok",
|
|
358
|
+
subjectId,
|
|
359
|
+
deviceId,
|
|
360
|
+
engine: WHISPER_CPP_CLASS_ENGINE,
|
|
361
|
+
languageCount: manifest.languages.length,
|
|
362
|
+
});
|
|
363
|
+
return binding;
|
|
364
|
+
}
|
|
365
|
+
catch (err) {
|
|
366
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
367
|
+
emit?.({
|
|
368
|
+
event: "bindings_speech.stt",
|
|
369
|
+
op: "load",
|
|
370
|
+
outcome: "error",
|
|
371
|
+
subjectId,
|
|
372
|
+
deviceId,
|
|
373
|
+
engine: WHISPER_CPP_CLASS_ENGINE,
|
|
374
|
+
failureClass: err instanceof WhisperCppSpeechError ? err.failureClass : "native",
|
|
375
|
+
detail: detail.slice(0, 160),
|
|
376
|
+
});
|
|
377
|
+
throw err;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
/** Conformance factory: fresh loaded binding per obligation (subject-scoped). */
|
|
381
|
+
export function createWhisperCppSpeechHarnessFactory(options = {}) {
|
|
382
|
+
return async (ctx) => {
|
|
383
|
+
const speech = await loadWhisperCppSpeech({
|
|
384
|
+
subjectId: ctx?.subjectId?.trim() ||
|
|
385
|
+
options.subjectId?.trim() ||
|
|
386
|
+
"cert.speech.whisper",
|
|
387
|
+
deviceId: ctx?.deviceId?.trim() ||
|
|
388
|
+
options.deviceId?.trim() ||
|
|
389
|
+
"ci-speech-stt",
|
|
390
|
+
...(options.languagesManifestPath
|
|
391
|
+
? { languagesManifestPath: options.languagesManifestPath }
|
|
392
|
+
: {}),
|
|
393
|
+
...(options.backend ? { backend: options.backend } : {}),
|
|
394
|
+
...(options.onTelemetry ? { onTelemetry: options.onTelemetry } : {}),
|
|
395
|
+
...(options.languageHint ? { languageHint: options.languageHint } : {}),
|
|
396
|
+
});
|
|
397
|
+
return { speech };
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
//# sourceMappingURL=stt_binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stt_binding.js","sourceRoot":"","sources":["../src/stt_binding.ts"],"names":[],"mappings":"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"}
|