@happyvertical/smrt-ui 0.55.5 → 0.55.7
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 +30 -0
- package/dist/components/forms/CodeSelect.svelte +12 -2
- package/dist/components/forms/CodeSelect.svelte.d.ts.map +1 -1
- package/dist/components/forms/Combobox.svelte +4 -3
- package/dist/components/forms/Combobox.svelte.d.ts.map +1 -1
- package/dist/components/forms/DictationButton.svelte +110 -3
- package/dist/components/forms/DictationButton.svelte.d.ts.map +1 -1
- package/dist/components/forms/DictationStatus.svelte +33 -5
- package/dist/components/forms/DictationStatus.svelte.d.ts +2 -0
- package/dist/components/forms/DictationStatus.svelte.d.ts.map +1 -1
- package/dist/components/forms/FieldLabel.svelte +44 -0
- package/dist/components/forms/FieldLabel.svelte.d.ts +20 -0
- package/dist/components/forms/FieldLabel.svelte.d.ts.map +1 -0
- package/dist/components/forms/FormGroup.svelte +2 -17
- package/dist/components/forms/FormGroup.svelte.d.ts.map +1 -1
- package/dist/components/forms/code-select-options.d.ts +8 -1
- package/dist/components/forms/code-select-options.d.ts.map +1 -1
- package/dist/components/forms/code-select-options.js +46 -5
- package/dist/components/forms/code-select-types.d.ts +4 -0
- package/dist/components/forms/code-select-types.d.ts.map +1 -1
- package/dist/components/forms/dictation.svelte.d.ts +84 -2
- package/dist/components/forms/dictation.svelte.d.ts.map +1 -1
- package/dist/components/forms/dictation.svelte.js +236 -2
- package/dist/components/forms/hands-free-capture.d.ts +70 -0
- package/dist/components/forms/hands-free-capture.d.ts.map +1 -0
- package/dist/components/forms/hands-free-capture.js +19 -0
- package/dist/components/forms/hands-free-vad.d.ts +5 -0
- package/dist/components/forms/hands-free-vad.d.ts.map +1 -0
- package/dist/components/forms/hands-free-vad.js +80 -0
- package/dist/components/forms/index.d.ts +2 -0
- package/dist/components/forms/index.d.ts.map +1 -1
- package/dist/components/forms/index.js +2 -0
- package/dist/i18n/strings.ui.d.ts +7 -0
- package/dist/i18n/strings.ui.d.ts.map +1 -1
- package/dist/i18n/strings.ui.js +7 -0
- package/package.json +12 -2
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hands-free microphone capture on `@happyvertical/speech/browser`.
|
|
3
|
+
*
|
|
4
|
+
* `createHandsFreeCapture` opens the microphone and runs it through the
|
|
5
|
+
* speech package's on-device voice activity detector (`createVadCapture`):
|
|
6
|
+
* an adaptive noise floor, a pause that ends each utterance, a pre-roll so
|
|
7
|
+
* the first syllable is not clipped, and a length cap that splits long
|
|
8
|
+
* speech. Each utterance arrives as 16 kHz mono PCM. The audio stays in
|
|
9
|
+
* memory; `stop()` / `cancel()` release the microphone.
|
|
10
|
+
*
|
|
11
|
+
* This is the one module in smrt-ui that imports the optional peer
|
|
12
|
+
* `@happyvertical/speech`, so it has its own entry
|
|
13
|
+
* (`@happyvertical/smrt-ui/forms/hands-free`) and only apps that import it
|
|
14
|
+
* bundle the peer:
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { createHandsFreeCapture } from '@happyvertical/smrt-ui/forms/hands-free';
|
|
18
|
+
* new Dictation({ source, mode: 'hands-free', handsFreeCapture: createHandsFreeCapture, onText });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { createVadCapture, } from '@happyvertical/speech/browser';
|
|
22
|
+
/** Hands-free capture on the speech package's `createVadCapture`. */
|
|
23
|
+
export const createHandsFreeCapture = (options) => {
|
|
24
|
+
let vad = null;
|
|
25
|
+
let cancelled = false;
|
|
26
|
+
let stopped = false;
|
|
27
|
+
// Wanted before the microphone finished opening.
|
|
28
|
+
let suspendWanted = false;
|
|
29
|
+
return {
|
|
30
|
+
async start() {
|
|
31
|
+
const opened = await createVadCapture({
|
|
32
|
+
...options.vad,
|
|
33
|
+
...(options.constraints ? { constraints: options.constraints } : {}),
|
|
34
|
+
});
|
|
35
|
+
if (cancelled || stopped) {
|
|
36
|
+
opened.cancel();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
vad = opened;
|
|
40
|
+
if (suspendWanted)
|
|
41
|
+
opened.suspend();
|
|
42
|
+
opened.on('speechstart', () => options.onSpeaking?.(true));
|
|
43
|
+
opened.on('level', ({ level }) => options.onLevel?.(level));
|
|
44
|
+
opened.on('speechend', (event) => {
|
|
45
|
+
options.onSpeaking?.(false);
|
|
46
|
+
options.onUtterance({
|
|
47
|
+
pcm: event.samples,
|
|
48
|
+
sampleRate: event.sampleRate,
|
|
49
|
+
durationMs: event.durationMs,
|
|
50
|
+
reason: event.reason,
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
suspend() {
|
|
55
|
+
suspendWanted = true;
|
|
56
|
+
vad?.suspend();
|
|
57
|
+
// A discarded utterance never ends with a `speechend`.
|
|
58
|
+
options.onSpeaking?.(false);
|
|
59
|
+
},
|
|
60
|
+
resume() {
|
|
61
|
+
suspendWanted = false;
|
|
62
|
+
vad?.resume();
|
|
63
|
+
},
|
|
64
|
+
stop() {
|
|
65
|
+
stopped = true;
|
|
66
|
+
const current = vad;
|
|
67
|
+
vad = null;
|
|
68
|
+
// `stop()` delivers the utterance in progress synchronously, then
|
|
69
|
+
// releases the microphone.
|
|
70
|
+
void current?.stop().catch((error) => {
|
|
71
|
+
options.onError?.(error instanceof Error ? error : new Error(String(error)));
|
|
72
|
+
});
|
|
73
|
+
},
|
|
74
|
+
cancel() {
|
|
75
|
+
cancelled = true;
|
|
76
|
+
vad?.cancel();
|
|
77
|
+
vad = null;
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
};
|
|
@@ -29,6 +29,7 @@ export { default as DictationStatus } from './DictationStatus.svelte';
|
|
|
29
29
|
export { classifyDictationError, Dictation, type DictationErrorKind, type DictationLogEvent, type DictationOptions, type DictationSourceProvider, type DictationSpeechResult, type DictationSpeechSource, type DictationStartOptions, type DictationState, dictationErrorCode, } from './dictation.svelte.js';
|
|
30
30
|
export { createHttpTranscriber, type DictationTranscribe, type DictationTranscribeOptions, type HttpTranscriberOptions, } from './dictation-transcribe.js';
|
|
31
31
|
export { default as ErrorSummary } from './ErrorSummary.svelte';
|
|
32
|
+
export { default as FieldLabel } from './FieldLabel.svelte';
|
|
32
33
|
export { default as Fieldset } from './Fieldset.svelte';
|
|
33
34
|
export { default as FilePicker } from './FilePicker.svelte';
|
|
34
35
|
export { default as Form } from './Form.svelte';
|
|
@@ -36,6 +37,7 @@ export { default as FormActionBar } from './FormActionBar.svelte';
|
|
|
36
37
|
export { default as Field, default as FormGroup } from './FormGroup.svelte';
|
|
37
38
|
export { type FormGroupContextValue, nextFieldId, setFormGroupContext, tryGetFormGroupContext, } from './form-group-context.js';
|
|
38
39
|
export * from './form-retry/index.js';
|
|
40
|
+
export { canCaptureHandsFree, type HandsFreeCapture, type HandsFreeCaptureFactory, type HandsFreeCaptureOptions, type HandsFreeUtterance, type HandsFreeVadOptions, } from './hands-free-capture.js';
|
|
39
41
|
export { default as Input } from './Input.svelte';
|
|
40
42
|
export { default as InputGroup } from './InputGroup.svelte';
|
|
41
43
|
export { insertTextAtCursor } from './insert-text.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/forms/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/forms/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ export { default as DictationStatus } from './DictationStatus.svelte';
|
|
|
29
29
|
export { classifyDictationError, Dictation, dictationErrorCode, } from './dictation.svelte.js';
|
|
30
30
|
export { createHttpTranscriber, } from './dictation-transcribe.js';
|
|
31
31
|
export { default as ErrorSummary } from './ErrorSummary.svelte';
|
|
32
|
+
export { default as FieldLabel } from './FieldLabel.svelte';
|
|
32
33
|
export { default as Fieldset } from './Fieldset.svelte';
|
|
33
34
|
export { default as FilePicker } from './FilePicker.svelte';
|
|
34
35
|
export { default as Form } from './Form.svelte';
|
|
@@ -37,6 +38,7 @@ export { default as Field, default as FormGroup } from './FormGroup.svelte';
|
|
|
37
38
|
export { nextFieldId, setFormGroupContext, tryGetFormGroupContext, } from './form-group-context.js';
|
|
38
39
|
// Form retry (#3291): also published Svelte-free at `@happyvertical/smrt-ui/form-retry`.
|
|
39
40
|
export * from './form-retry/index.js';
|
|
41
|
+
export { canCaptureHandsFree, } from './hands-free-capture.js';
|
|
40
42
|
export { default as Input } from './Input.svelte';
|
|
41
43
|
export { default as InputGroup } from './InputGroup.svelte';
|
|
42
44
|
export { insertTextAtCursor } from './insert-text.js';
|
|
@@ -44,7 +44,13 @@ export declare const M: {
|
|
|
44
44
|
readonly 'ui.form_action_bar.label': "ui.form_action_bar.label";
|
|
45
45
|
readonly 'ui.dictation.start': "ui.dictation.start";
|
|
46
46
|
readonly 'ui.dictation.start_hint': "ui.dictation.start_hint";
|
|
47
|
+
readonly 'ui.dictation.start_hands_free': "ui.dictation.start_hands_free";
|
|
47
48
|
readonly 'ui.dictation.stop': "ui.dictation.stop";
|
|
49
|
+
readonly 'ui.dictation.listening_hands_free': "ui.dictation.listening_hands_free";
|
|
50
|
+
readonly 'ui.dictation.listening_short': "ui.dictation.listening_short";
|
|
51
|
+
readonly 'ui.dictation.hearing': "ui.dictation.hearing";
|
|
52
|
+
readonly 'ui.dictation.sending': "ui.dictation.sending";
|
|
53
|
+
readonly 'ui.dictation.paused_speaking': "ui.dictation.paused_speaking";
|
|
48
54
|
readonly 'ui.dictation.starting': "ui.dictation.starting";
|
|
49
55
|
readonly 'ui.dictation.listening': "ui.dictation.listening";
|
|
50
56
|
readonly 'ui.dictation.unsupported': "ui.dictation.unsupported";
|
|
@@ -57,6 +63,7 @@ export declare const M: {
|
|
|
57
63
|
readonly 'ui.dictation.too_long': "ui.dictation.too_long";
|
|
58
64
|
readonly 'ui.dictation.not_transcribed': "ui.dictation.not_transcribed";
|
|
59
65
|
readonly 'ui.dictation.unavailable': "ui.dictation.unavailable";
|
|
66
|
+
readonly 'ui.dictation.model_missing': "ui.dictation.model_missing";
|
|
60
67
|
readonly 'ui.dictation.forbidden': "ui.dictation.forbidden";
|
|
61
68
|
readonly 'ui.progress_bar.label': "ui.progress_bar.label";
|
|
62
69
|
readonly 'ui.progress_bar.over_by': "ui.progress_bar.over_by";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.ui.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.ui.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"strings.ui.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.ui.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6KZ,CAAC"}
|
package/dist/i18n/strings.ui.js
CHANGED
|
@@ -53,7 +53,13 @@ export const M = defineMessages({
|
|
|
53
53
|
// forms/DictationButton.svelte, forms/DictationStatus.svelte
|
|
54
54
|
'ui.dictation.start': 'Speak instead of typing',
|
|
55
55
|
'ui.dictation.start_hint': 'Speak instead of typing. You can also press and hold the text box.',
|
|
56
|
+
'ui.dictation.start_hands_free': 'Speak instead of typing, hands-free. It writes each sentence down when you pause.',
|
|
56
57
|
'ui.dictation.stop': 'Stop listening',
|
|
58
|
+
'ui.dictation.listening_hands_free': 'Listening. Just talk; I write it down when you pause. Tap the microphone when you are done.',
|
|
59
|
+
'ui.dictation.listening_short': 'Listening',
|
|
60
|
+
'ui.dictation.hearing': 'Hearing you…',
|
|
61
|
+
'ui.dictation.sending': 'Sending…',
|
|
62
|
+
'ui.dictation.paused_speaking': 'Paused while the assistant speaks',
|
|
57
63
|
'ui.dictation.starting': 'Getting the microphone ready…',
|
|
58
64
|
'ui.dictation.listening': 'Listening. Tap the microphone when you are done.',
|
|
59
65
|
'ui.dictation.unsupported': "Speech recognition isn't available in this browser. Brave blocks it; try Chrome, Edge or Safari, or type instead.",
|
|
@@ -66,6 +72,7 @@ export const M = defineMessages({
|
|
|
66
72
|
'ui.dictation.too_long': 'That was too long to write down. Try a shorter message, or type instead.',
|
|
67
73
|
'ui.dictation.not_transcribed': "Couldn't write that down. Tap the microphone to try again, or type instead.",
|
|
68
74
|
'ui.dictation.unavailable': "Speaking isn't set up here yet. Please type instead.",
|
|
75
|
+
'ui.dictation.model_missing': "The speech model isn't downloaded yet. Download it first, or type instead.",
|
|
69
76
|
'ui.dictation.forbidden': "You can't use speaking here. Please type instead.",
|
|
70
77
|
// feedback/ProgressBar.svelte
|
|
71
78
|
'ui.progress_bar.label': 'Progress',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-ui",
|
|
3
|
-
"version": "0.55.
|
|
3
|
+
"version": "0.55.7",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Domain-agnostic Svelte 5 UI runtime for SMRT: primitives, i18n client, theme system, and module UI registry",
|
|
6
6
|
"type": "module",
|
|
@@ -65,6 +65,11 @@
|
|
|
65
65
|
"import": "./dist/components/forms/index.js",
|
|
66
66
|
"default": "./dist/components/forms/index.js"
|
|
67
67
|
},
|
|
68
|
+
"./forms/hands-free": {
|
|
69
|
+
"types": "./dist/components/forms/hands-free-vad.d.ts",
|
|
70
|
+
"import": "./dist/components/forms/hands-free-vad.js",
|
|
71
|
+
"default": "./dist/components/forms/hands-free-vad.js"
|
|
72
|
+
},
|
|
68
73
|
"./form-retry": {
|
|
69
74
|
"types": "./dist/components/forms/form-retry/index.d.ts",
|
|
70
75
|
"import": "./dist/components/forms/form-retry/index.js",
|
|
@@ -139,18 +144,23 @@
|
|
|
139
144
|
"access": "public"
|
|
140
145
|
},
|
|
141
146
|
"dependencies": {
|
|
142
|
-
"@happyvertical/smrt-types": "0.55.
|
|
147
|
+
"@happyvertical/smrt-types": "0.55.7",
|
|
143
148
|
"esm-env": "^1.2.2"
|
|
144
149
|
},
|
|
145
150
|
"peerDependencies": {
|
|
151
|
+
"@happyvertical/speech": ">=0.102.5",
|
|
146
152
|
"svelte": "^5.57.0"
|
|
147
153
|
},
|
|
148
154
|
"peerDependenciesMeta": {
|
|
155
|
+
"@happyvertical/speech": {
|
|
156
|
+
"optional": true
|
|
157
|
+
},
|
|
149
158
|
"svelte": {
|
|
150
159
|
"optional": true
|
|
151
160
|
}
|
|
152
161
|
},
|
|
153
162
|
"devDependencies": {
|
|
163
|
+
"@happyvertical/speech": "^0.102.5",
|
|
154
164
|
"@sveltejs/package": "^2.5.8",
|
|
155
165
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
156
166
|
"@testing-library/jest-dom": "^7.0.1",
|