@faiber/faiber-chat 0.15.2 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/speech-live.d.ts +42 -0
- package/dist/speech-live.d.ts.map +1 -0
- package/dist/speech-live.js +108 -0
- package/dist/speech-live.js.map +1 -0
- package/dist/speech-playback.d.ts +19 -0
- package/dist/speech-playback.d.ts.map +1 -0
- package/dist/speech-playback.js +91 -0
- package/dist/speech-playback.js.map +1 -0
- package/dist/speech-recorder.d.ts +32 -0
- package/dist/speech-recorder.d.ts.map +1 -0
- package/dist/speech-recorder.js +98 -0
- package/dist/speech-recorder.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -75,3 +75,75 @@ Discover server-managed roles with `chat.workspaceAssistant.roles()`, and choose
|
|
|
75
75
|
Administrators with `assistant:manage` can call `workspaceAssistant.bind(role, input)`. Enabling requires a compatible published Knowledge contract; `expected_version` prevents overwriting another administrator's binding. Ordinary discovery requires `assistant:read`. Both methods preserve Axios responses, cookie/Bearer authentication, cancellation, and error status.
|
|
76
76
|
|
|
77
77
|
Workspace role bindings use `knowledge_slug: "2done-action"` or `"2done-chat"` for the corresponding role. Each role base pins its shared contract release. Structured results expose `knowledge_release_id` and optional `shared_knowledge_release_id` for diagnosis. The legacy `2done-assistants` slug remains in the client type for older service deployments; new role bindings require the role-specific slug.
|
|
78
|
+
|
|
79
|
+
### Compact microphone capture and speech playback
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
import { createSpeechRecorder } from '@faiber/faiber-chat';
|
|
83
|
+
|
|
84
|
+
// Call from a user gesture. Reuse your authenticated ChatApi instance.
|
|
85
|
+
const capture = await createSpeechRecorder({ signal: controller.signal });
|
|
86
|
+
const chunks: Blob[] = [];
|
|
87
|
+
capture.recorder.ondataavailable = ({ data }) => { if (data.size) chunks.push(data); };
|
|
88
|
+
capture.recorder.onstop = async () => {
|
|
89
|
+
capture.dispose();
|
|
90
|
+
if (controller.signal.aborted) return;
|
|
91
|
+
const audio = new Blob(chunks, { type: capture.mimeType });
|
|
92
|
+
const response = await chat.transcribe(audio, 'fa', { signal: controller.signal });
|
|
93
|
+
console.log(response.data.data.text);
|
|
94
|
+
};
|
|
95
|
+
capture.recorder.onerror = () => capture.dispose();
|
|
96
|
+
capture.recorder.start(1000);
|
|
97
|
+
// Stop on the user's button or your duration limit (2Done uses 60 seconds):
|
|
98
|
+
// capture.recorder.stop();
|
|
99
|
+
// Cancel/unmount: controller.abort(); capture.dispose();
|
|
100
|
+
|
|
101
|
+
const voice = await chat.synthesize(
|
|
102
|
+
{ text: 'Your next task is ready.', language: 'en', format: 'mp3' },
|
|
103
|
+
{ signal: controller.signal },
|
|
104
|
+
);
|
|
105
|
+
// voice.data is a Blob. Revoke any URL.createObjectURL URL after playback.
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
`createSpeechRecorder` is browser-only but safe to import in Node. It requests native noise suppression, echo cancellation, automatic gain control and mono input. It prefers 32 kbit/s Opus in WebM/Ogg; supported MP4/AAC browsers use 64 kbit/s. It applies gentle 80 Hz/8 kHz speech filters when Web Audio is available and otherwise retains native capture. Browser support and actual capture/encoding settings vary; `settings`, `filtered`, `mimeType` and `targetBitsPerSecond` expose the result. At the target bitrate, one minute is approximately 240 KB for Opus or 480 KB for AAC, plus container overhead. No large encoder/model download is required, and pauses/quiet words are not removed.
|
|
109
|
+
|
|
110
|
+
Options include `audioBitsPerSecond` (16,000–64,000), `filter: false` and an abort signal. Permission/device errors are preserved; cancellation rejects pending setup with `AbortError` once microphone acquisition resolves and releases any acquired tracks. Always call `dispose()` on cancellation/unmount and after receiving the final recording chunk. The helper neither uploads nor transcribes automatically and does not enforce a duration or byte limit; enforce the STT service's limits in your application.
|
|
111
|
+
|
|
112
|
+
`synthesize` requests MP3 by default: mono, 24 kHz, 64 kbit/s. Explicit `format: 'wav'` retains lossless output for processing. MP3 requires a service deployment that supports this format; mismatched upstream formats fail rather than being mislabeled. Speech responses are private and not cacheable. Authentication, Axios response metadata, cancellation, and provider billing follow the configured Chat client. Check the returned Blob MIME type rather than assuming a filename extension. Uploading an existing compressed recording through `transcribe` does not re-encode it in the browser.
|
|
113
|
+
|
|
114
|
+
### Live dictation and earlier speech playback
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
import { startLiveDictation, playSpeech } from '@faiber/faiber-chat';
|
|
118
|
+
|
|
119
|
+
// `chat` is your authenticated ChatApi. Start after a microphone button click.
|
|
120
|
+
const dictation = await startLiveDictation(chat, {
|
|
121
|
+
language: 'fa',
|
|
122
|
+
signal: abortController.signal,
|
|
123
|
+
onPartial: text => { provisionalText = text; }, // replace, do not append
|
|
124
|
+
onError: error => { showError(error.message); },
|
|
125
|
+
});
|
|
126
|
+
const finalText = await dictation.finish(); // stop button: insert this editable revision once
|
|
127
|
+
// Or dictation.cancel() when leaving the page.
|
|
128
|
+
|
|
129
|
+
// Starts the first phrase while the next phrase is synthesized; MP3 transfer.
|
|
130
|
+
await playSpeech(chat, { text: 'سلام. این برنامه امروز شماست.', language: 'fa' }, {
|
|
131
|
+
signal: abortController.signal,
|
|
132
|
+
onPhase: phase => { playbackState = phase; },
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Live dictation uploads each compressed chunk once through the normal authenticated
|
|
137
|
+
`FaiberClient` transport. `liveSpeech()` exposes the underlying ordered start/push/finish/cancel
|
|
138
|
+
operations with full Axios responses. Sessions are caller/organization-bound and expire;
|
|
139
|
+
recordings are limited to 60 seconds and buffered upload to 128 KiB. Current live support
|
|
140
|
+
requires the configured Persian Shenava model, an available streaming worker lane, and
|
|
141
|
+
WebM/Ogg Opus. Unsupported language/codec or busy capacity rejects start; applications may
|
|
142
|
+
fall back to `createSpeechRecorder()` and `transcribe()`. Never treat provisional text as a
|
|
143
|
+
saved message. Finalization can revise earlier words. Abort and unmount should cancel.
|
|
144
|
+
|
|
145
|
+
`playSpeech()` is browser-only progressive **phrase** synthesis, not provider-level audio
|
|
146
|
+
streaming. It preserves text order and prepares one phrase ahead, without retaining audio
|
|
147
|
+
across users. Individual phrases use the configured voice and its billing rules. Synthesis,
|
|
148
|
+
decode, and playback errors reject the promise; cancellation stops playback and in-flight
|
|
149
|
+
requests. Short utterances still depend on model generation latency.
|
package/dist/.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/axios/index.d.ts","../../core/dist/types.d.ts","../../core/dist/env.d.ts","../../core/dist/auth.d.ts","../../core/dist/client.d.ts","../../core/dist/resource.d.ts","../../core/dist/openapi.d.ts","../../core/dist/realtime.d.ts","../../core/dist/index.d.ts","../node_modules/@faiber/faiber-task/dist/types.d.ts","../node_modules/@faiber/faiber-task/dist/workspace.d.ts","../node_modules/@faiber/faiber-task/dist/operations.types.d.ts","../node_modules/@faiber/faiber-task/dist/operations.d.ts","../node_modules/@faiber/faiber-task/dist/index.d.ts","../src/workspace.ts","../src/types.ts","../src/operations.types.ts","../src/operations.ts","../src/index.ts"],"fileIdsList":[[60,68,69,70,71,72],[60,68,69,70,71],[68,69],[68],[60,68,69],[68,74,75,76,77],[68,74,76],[68,75],[68,73],[61],[60,61],[60,61,62,63,64,65,66,67],[60,61,64],[60]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"2343ec253c90c370449755739733f5f429f58cffdb51a50977bb4a042012fa8f","impliedFormat":99},{"version":"6cc1f17dc5454eb1112cfb4a2e2ddc93de8c3f9016c8db7bdf0328caac374ffa","impliedFormat":99},{"version":"82065c5512d8d6f81b26cf13ea9ecd3e558be9560f7b5c62260858219ecd87f7","impliedFormat":99},{"version":"ed17ed1b2bcf384c88bc6cec6b427989b98db99fc7ad35a50605501a463bbc53","impliedFormat":99},{"version":"82bf4efcca8ab8764a91ac126c0af605ab6717ee94b2316461b5fa388b27e165","impliedFormat":99},{"version":"82ffc9a1d95766c8f6f6bb4316b1d83e9d6a1d4ec41057d1a897cca70176bfc1","impliedFormat":99},{"version":"3f5eeb0a84713ccf640b9a6af4629e006f59d7629abc3fc95af2efb062fd0b83","impliedFormat":99},{"version":"ac62f6b0f2e963ea9a251ee8384e64cebe0fe4acd32ca177d838d7c5a7ad2b43","impliedFormat":99},{"version":"fdd1b5a8a2b98f82c94e4dc4e3b207ca81766b656d23acd3c7458fffd9af21dd","impliedFormat":99},{"version":"7d9f11e32135998fd237bef7e5d27a056202e21c82f322bd9d9a1016cdac01b1","impliedFormat":99},{"version":"957290d195fac41901b74d0336ea5f6d39e6b1f893cc05c8ef38cdfed375fd26","impliedFormat":99},{"version":"6c03f7c38960990bcb88f5896be7df8527e98fa639dd1b08a108c3b07d7eb2d0","impliedFormat":99},{"version":"e6a4d605f200cf1474350431c9d19cfbf4ea432e5f379ef2374045930c4f84f0","impliedFormat":99},{"version":"e06e45393e7abefd1585bd057f80621a3f4b369d47bd1af1128582c99026e1b4","impliedFormat":99},{"version":"57ecdcf2ad8b1e3024cb03a4cd1abcd4a5f49203befbdd2b27b393fdb2bd565f","signature":"dac85f399b63eeb989b4e1e1db8e4a1bd7435dd49c7bdd1ff8c29b33abcc0b1e","impliedFormat":99},{"version":"21939d9e0add8c04bdf2bf13c61c0ba9279d57f306be629b8833d8558eef1137","signature":"56fd615f476ff44ba3fe5b8b8739b323b1b7e14e1e23654ce3e07eb4b497e7b8","impliedFormat":99},{"version":"01146f6265e7ff241360a2ec9a3e13d71bcbf288f4ac3294fdcf2e7fe2a874ff","signature":"2ac24648212ca5e81c69328c83b80965e3af075de06f011f75af04f69e297464","impliedFormat":99},{"version":"f529fc85a29bc5513fdf85c0944411b8685bfaac9d68e4bfc6c2e589183b30ae","signature":"33c3497f1dd00c607d278275ac5cac8dc15f01fa173f310812b49c27dddea0d5","impliedFormat":99},{"version":"f11c312972920b835e196e0cccd62f16f27afd1cbdf3a9f77f41dfeb170ded77","signature":"37577b206928fc0035ac3dbf8932156419ff10e9e79d96708b4d11ea894b1abc","impliedFormat":99}],"root":[[74,78]],"options":{"composite":true,"declaration":true,"declarationMap":true,"exactOptionalPropertyTypes":true,"module":199,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[73,1],[72,2],[71,3],[69,4],[70,5],[78,6],[77,7],[76,8],[75,4],[74,9],[63,10],[64,11],[62,10],[68,12],[66,13],[65,13],[61,14]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/axios/index.d.ts","../../core/dist/types.d.ts","../../core/dist/env.d.ts","../../core/dist/auth.d.ts","../../core/dist/client.d.ts","../../core/dist/resource.d.ts","../../core/dist/openapi.d.ts","../../core/dist/realtime.d.ts","../../core/dist/index.d.ts","../../task/dist/types.d.ts","../../task/dist/workspace.d.ts","../../task/dist/operations.types.d.ts","../../task/dist/operations.d.ts","../../task/dist/index.d.ts","../src/workspace.ts","../src/types.ts","../src/operations.types.ts","../src/operations.ts","../src/speech-recorder.ts","../src/speech-playback.ts","../src/speech-live.ts","../src/index.ts"],"fileIdsList":[[68,74,75,76,77,78,79,80],[68,74,76],[68,75],[75,78,81],[75,81],[68],[68,73],[61],[60,61],[60,61,62,63,64,65,66,67],[60,61,64],[60],[60,68,69,70,71,72],[60,68,69,70,71],[68,69],[60,68,69]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"2343ec253c90c370449755739733f5f429f58cffdb51a50977bb4a042012fa8f","impliedFormat":99},{"version":"6cc1f17dc5454eb1112cfb4a2e2ddc93de8c3f9016c8db7bdf0328caac374ffa","impliedFormat":99},{"version":"82065c5512d8d6f81b26cf13ea9ecd3e558be9560f7b5c62260858219ecd87f7","impliedFormat":99},{"version":"ed17ed1b2bcf384c88bc6cec6b427989b98db99fc7ad35a50605501a463bbc53","impliedFormat":99},{"version":"82bf4efcca8ab8764a91ac126c0af605ab6717ee94b2316461b5fa388b27e165","impliedFormat":99},{"version":"82ffc9a1d95766c8f6f6bb4316b1d83e9d6a1d4ec41057d1a897cca70176bfc1","impliedFormat":99},{"version":"3f5eeb0a84713ccf640b9a6af4629e006f59d7629abc3fc95af2efb062fd0b83","impliedFormat":99},{"version":"ac62f6b0f2e963ea9a251ee8384e64cebe0fe4acd32ca177d838d7c5a7ad2b43","impliedFormat":99},{"version":"fdd1b5a8a2b98f82c94e4dc4e3b207ca81766b656d23acd3c7458fffd9af21dd","impliedFormat":99},{"version":"7d9f11e32135998fd237bef7e5d27a056202e21c82f322bd9d9a1016cdac01b1","impliedFormat":99},{"version":"957290d195fac41901b74d0336ea5f6d39e6b1f893cc05c8ef38cdfed375fd26","impliedFormat":99},{"version":"6c03f7c38960990bcb88f5896be7df8527e98fa639dd1b08a108c3b07d7eb2d0","impliedFormat":99},{"version":"e6a4d605f200cf1474350431c9d19cfbf4ea432e5f379ef2374045930c4f84f0","impliedFormat":99},{"version":"e06e45393e7abefd1585bd057f80621a3f4b369d47bd1af1128582c99026e1b4","impliedFormat":99},{"version":"57ecdcf2ad8b1e3024cb03a4cd1abcd4a5f49203befbdd2b27b393fdb2bd565f","signature":"dac85f399b63eeb989b4e1e1db8e4a1bd7435dd49c7bdd1ff8c29b33abcc0b1e","impliedFormat":99},{"version":"16c2ef0848f9e21595f3a883183af7d06d3a8173c038b00574ee2710a3b8baa5","signature":"1ddf5cc92fee8b9d607f8c2537b80a03500b10d1c1e2d2dd5faef819bafc3f0f","impliedFormat":99},{"version":"01146f6265e7ff241360a2ec9a3e13d71bcbf288f4ac3294fdcf2e7fe2a874ff","signature":"2ac24648212ca5e81c69328c83b80965e3af075de06f011f75af04f69e297464","impliedFormat":99},{"version":"f529fc85a29bc5513fdf85c0944411b8685bfaac9d68e4bfc6c2e589183b30ae","signature":"33c3497f1dd00c607d278275ac5cac8dc15f01fa173f310812b49c27dddea0d5","impliedFormat":99},{"version":"695af79a049dc07658aeb7e3001b0c8cc09757232f8f5fdde19cd782a0e1efeb","signature":"db7e7630d9d03be96c69405ba7808da66664c70253761bf2514c9b48f730e1ba","impliedFormat":99},{"version":"f3bafa7ee4e3740ad8bb1fa296972ef44fa4c54bb720adbdfa2af74f06a32efe","signature":"c1c5f00430577f3081fa8abdbf2cbd14524539c7ac1ab4a904e3d212a679d92b","impliedFormat":99},{"version":"30fcab33101d3e3a7e5bd9ee1fb4618f910f81c7af39f4a38b38e5ca59782e5e","signature":"97847fd60c6c81e812163ba48ebd12b6274fdba73832ad4c2162a271a365b5bf","impliedFormat":99},{"version":"113e92171e40003e3fd859a62a4ac26ef4a2358affcb49bf701ab67e0453f780","signature":"fd34900a43ba4368b5da1264ffa3a5aefd4273ac909e611c044bd44abfa73b98","impliedFormat":99}],"root":[[74,81]],"options":{"composite":true,"declaration":true,"declarationMap":true,"exactOptionalPropertyTypes":true,"module":199,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[81,1],[77,2],[76,3],[80,4],[79,5],[75,6],[74,7],[63,8],[64,9],[62,8],[68,10],[66,11],[65,11],[61,12],[73,13],[72,14],[71,15],[69,6],[70,16]],"latestChangedDtsFile":"./speech-live.d.ts","version":"5.9.3"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ import type * as T from "./types.js";
|
|
|
4
4
|
import type * as O from "./operations.types.js";
|
|
5
5
|
import { ChatOperations } from "./operations.js";
|
|
6
6
|
export declare class ChatApi extends ServiceApi {
|
|
7
|
+
/** Start, push, finalize or cancel an ordered speech session; chat:ai required.
|
|
8
|
+
* 400 rejects unsupported codecs/languages, 502 means capacity/provider unavailable.
|
|
9
|
+
* No task/note/message is saved. Uses normal authenticated Axios transport. */
|
|
10
|
+
liveSpeech(input: import('./speech-live.js').LiveSpeechInput, options?: RequestOptions<import('./speech-live.js').LiveSpeechInput>): Promise<import("axios").AxiosResponse<import("./speech-live.js").LiveSpeechResponse, import("./speech-live.js").LiveSpeechInput, {}>>;
|
|
7
11
|
readonly workspaceAssistant: ChatWorkspaceOperations;
|
|
8
12
|
readonly operations: ChatOperations;
|
|
9
13
|
/** Check configured local transcription availability; requires chat:ai. */
|
|
@@ -11,6 +15,10 @@ export declare class ChatApi extends ServiceApi {
|
|
|
11
15
|
/** Transcribe raw webm/ogg/mp4/wav audio (8 MiB maximum). Requires chat:ai; private storage is cleaned up after processing.
|
|
12
16
|
* Does not send a chat message. Supports abort signals and a 200-second default timeout. */
|
|
13
17
|
transcribe(recording: Blob, language?: T.SpeechLanguage, options?: RequestOptions<Blob>): Promise<import("axios").AxiosResponse<T.SpeechTranscriptResponse, Blob, {}>>;
|
|
18
|
+
/** Synthesize speech through the configured metered provider; requires chat:ai.
|
|
19
|
+
* Returns compact MP3 by default, or explicit WAV. Preserves Axios metadata and cancellation.
|
|
20
|
+
* Disabled voices return 400; unavailable/mismatched provider output returns 502. */
|
|
21
|
+
synthesize(input: T.SpeechSynthesisInput, options?: RequestOptions<T.SpeechSynthesisInput>): Promise<import("axios").AxiosResponse<Blob, T.SpeechSynthesisInput, {}>>;
|
|
14
22
|
conversations(options?: RequestOptions): Promise<import("axios").AxiosResponse<T.ConversationListResponse, any, {}>>;
|
|
15
23
|
createConversation(data: T.CreateConversationInput, options?: RequestOptions<T.CreateConversationInput>): Promise<import("axios").AxiosResponse<T.ConversationResponse, T.CreateConversationInput, {}>>;
|
|
16
24
|
conversation(conversationId: Identifier, options?: RequestOptions): Promise<import("axios").AxiosResponse<T.ConversationResponse, any, {}>>;
|
|
@@ -51,4 +59,7 @@ export * from "@faiber/sdk-core";
|
|
|
51
59
|
export * from "./operations.js";
|
|
52
60
|
export * from "./operations.types.js";
|
|
53
61
|
export * from "./workspace.js";
|
|
62
|
+
export * from "./speech-recorder.js";
|
|
63
|
+
export * from "./speech-playback.js";
|
|
64
|
+
export * from "./speech-live.js";
|
|
54
65
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,12 @@ import { ServiceApi } from "@faiber/sdk-core";
|
|
|
3
3
|
import { ChatOperations } from "./operations.js";
|
|
4
4
|
const id = (value) => encodeURIComponent(value);
|
|
5
5
|
export class ChatApi extends ServiceApi {
|
|
6
|
+
/** Start, push, finalize or cancel an ordered speech session; chat:ai required.
|
|
7
|
+
* 400 rejects unsupported codecs/languages, 502 means capacity/provider unavailable.
|
|
8
|
+
* No task/note/message is saved. Uses normal authenticated Axios transport. */
|
|
9
|
+
liveSpeech(input, options) {
|
|
10
|
+
return this.client.post('/api/v1/speech/live', input, options);
|
|
11
|
+
}
|
|
6
12
|
workspaceAssistant = new ChatWorkspaceOperations(this.client);
|
|
7
13
|
operations = new ChatOperations(this.client);
|
|
8
14
|
/** Check configured local transcription availability; requires chat:ai. */
|
|
@@ -12,6 +18,12 @@ export class ChatApi extends ServiceApi {
|
|
|
12
18
|
transcribe(recording, language = 'auto', options) {
|
|
13
19
|
return this.client.request({ ...options, method: 'POST', url: '/api/v1/speech/transcribe', params: { language }, data: recording, timeout: options?.timeout ?? 200000, headers: { ...options?.headers, 'Content-Type': recording.type } });
|
|
14
20
|
}
|
|
21
|
+
/** Synthesize speech through the configured metered provider; requires chat:ai.
|
|
22
|
+
* Returns compact MP3 by default, or explicit WAV. Preserves Axios metadata and cancellation.
|
|
23
|
+
* Disabled voices return 400; unavailable/mismatched provider output returns 502. */
|
|
24
|
+
synthesize(input, options) {
|
|
25
|
+
return this.client.request({ ...options, method: 'POST', url: '/api/v1/speech/tts', data: { ...input, format: input.format ?? 'mp3' }, responseType: 'blob' });
|
|
26
|
+
}
|
|
15
27
|
conversations(options) { return this.client.get("/api/v1/conversations", undefined, options); }
|
|
16
28
|
createConversation(data, options) { return this.client.post("/api/v1/conversations", data, options); }
|
|
17
29
|
conversation(conversationId, options) { return this.client.get(`/api/v1/conversations/${id(conversationId)}`, undefined, options); }
|
|
@@ -52,4 +64,7 @@ export * from "@faiber/sdk-core";
|
|
|
52
64
|
export * from "./operations.js";
|
|
53
65
|
export * from "./operations.types.js";
|
|
54
66
|
export * from "./workspace.js";
|
|
67
|
+
export * from "./speech-recorder.js";
|
|
68
|
+
export * from "./speech-playback.js";
|
|
69
|
+
export * from "./speech-live.js";
|
|
55
70
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAwC,MAAM,kBAAkB,CAAC;AAGpF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,MAAM,EAAE,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC5D,MAAM,OAAO,OAAQ,SAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ChatApi } from './index.js';
|
|
2
|
+
import type { SpeechLanguage } from './types.js';
|
|
3
|
+
export interface LiveSpeechInput {
|
|
4
|
+
action: 'start' | 'push' | 'finish' | 'cancel';
|
|
5
|
+
session_id?: string;
|
|
6
|
+
sequence?: number;
|
|
7
|
+
audio_base64?: string;
|
|
8
|
+
content_type?: string;
|
|
9
|
+
language?: SpeechLanguage;
|
|
10
|
+
}
|
|
11
|
+
export interface LiveSpeechResult {
|
|
12
|
+
session_id: string;
|
|
13
|
+
text: string;
|
|
14
|
+
final_result: boolean;
|
|
15
|
+
error: string | null;
|
|
16
|
+
}
|
|
17
|
+
export interface LiveSpeechResponse {
|
|
18
|
+
data: LiveSpeechResult;
|
|
19
|
+
status: string;
|
|
20
|
+
meta: null;
|
|
21
|
+
}
|
|
22
|
+
export interface LiveDictationOptions {
|
|
23
|
+
language?: SpeechLanguage;
|
|
24
|
+
signal?: AbortSignal;
|
|
25
|
+
/** Complete provisional utterance, replacing the previous partial; never append partials. */
|
|
26
|
+
onPartial: (text: string) => void;
|
|
27
|
+
onError?: (error: Error) => void;
|
|
28
|
+
}
|
|
29
|
+
export interface LiveDictation {
|
|
30
|
+
/** Stop capture and obtain the authoritative final revision. */
|
|
31
|
+
finish(): Promise<string>;
|
|
32
|
+
/** Discard dictation and release capture/network resources. */
|
|
33
|
+
cancel(): void;
|
|
34
|
+
}
|
|
35
|
+
/** Continuous compact Opus dictation over authenticated, ordered HTTP chunks. Requires chat:ai.
|
|
36
|
+
* The server retains a decoder/recognizer session; audio is sent once, never cumulative reuploads.
|
|
37
|
+
* Partials can revise earlier words. Currently supports the configured Persian Shenava model and
|
|
38
|
+
* browsers with WebM/Ogg Opus. Start can reject if unsupported/busy; apps may offer batch capture.
|
|
39
|
+
* Capture is capped at 60 seconds, queued audio at 128 KiB. Call finish or cancel on unmount.
|
|
40
|
+
*/
|
|
41
|
+
export declare function startLiveDictation(api: ChatApi, options: LiveDictationOptions): Promise<LiveDictation>;
|
|
42
|
+
//# sourceMappingURL=speech-live.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech-live.d.ts","sourceRoot":"","sources":["../src/speech-live.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AACD,MAAM,WAAW,gBAAgB;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AACnH,MAAM,WAAW,kBAAkB;IAAG,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE;AAC1F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6FAA6F;IAC7F,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AACD,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,+DAA+D;IAC/D,MAAM,IAAI,IAAI,CAAC;CAChB;AACD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoE5G"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { createSpeechRecorder } from './speech-recorder.js';
|
|
2
|
+
/** Continuous compact Opus dictation over authenticated, ordered HTTP chunks. Requires chat:ai.
|
|
3
|
+
* The server retains a decoder/recognizer session; audio is sent once, never cumulative reuploads.
|
|
4
|
+
* Partials can revise earlier words. Currently supports the configured Persian Shenava model and
|
|
5
|
+
* browsers with WebM/Ogg Opus. Start can reject if unsupported/busy; apps may offer batch capture.
|
|
6
|
+
* Capture is capped at 60 seconds, queued audio at 128 KiB. Call finish or cancel on unmount.
|
|
7
|
+
*/
|
|
8
|
+
export async function startLiveDictation(api, options) {
|
|
9
|
+
const controller = new AbortController();
|
|
10
|
+
let capture;
|
|
11
|
+
let session = '', sequence = 0, stopped = false, queued = 0;
|
|
12
|
+
let chain = Promise.resolve();
|
|
13
|
+
let failure;
|
|
14
|
+
let timer;
|
|
15
|
+
let finished;
|
|
16
|
+
const cleanup = () => { clearTimeout(timer); capture?.dispose(); options.signal?.removeEventListener('abort', cancel); };
|
|
17
|
+
function cancel() {
|
|
18
|
+
if (stopped && controller.signal.aborted)
|
|
19
|
+
return;
|
|
20
|
+
stopped = true;
|
|
21
|
+
controller.abort();
|
|
22
|
+
cleanup();
|
|
23
|
+
if (session)
|
|
24
|
+
void api.liveSpeech({ action: 'cancel', session_id: session }, { timeout: 5000 }).catch(() => { });
|
|
25
|
+
}
|
|
26
|
+
const check = () => { if (controller.signal.aborted)
|
|
27
|
+
throw new DOMException('Dictation cancelled', 'AbortError'); };
|
|
28
|
+
const result = (value) => {
|
|
29
|
+
if (value.error)
|
|
30
|
+
throw new Error(value.error);
|
|
31
|
+
if (!stopped && value.text)
|
|
32
|
+
options.onPartial(value.text);
|
|
33
|
+
return value.text;
|
|
34
|
+
};
|
|
35
|
+
const fail = (cause) => {
|
|
36
|
+
if (controller.signal.aborted)
|
|
37
|
+
return;
|
|
38
|
+
failure = cause instanceof Error ? cause : new Error('Dictation failed');
|
|
39
|
+
cancel();
|
|
40
|
+
options.onError?.(failure);
|
|
41
|
+
};
|
|
42
|
+
options.signal?.addEventListener('abort', cancel, { once: true });
|
|
43
|
+
if (options.signal?.aborted)
|
|
44
|
+
cancel();
|
|
45
|
+
try {
|
|
46
|
+
check();
|
|
47
|
+
capture = await createSpeechRecorder({ signal: controller.signal });
|
|
48
|
+
if (!/^audio\/(webm|ogg)/.test(capture.mimeType))
|
|
49
|
+
throw new DOMException('Live Opus unavailable', 'NotSupportedError');
|
|
50
|
+
session = (await api.liveSpeech({ action: 'start', language: options.language ?? 'auto', content_type: capture.mimeType }, { signal: controller.signal })).data.data.session_id;
|
|
51
|
+
check();
|
|
52
|
+
const recorder = capture.recorder;
|
|
53
|
+
let resolveStop;
|
|
54
|
+
const stop = new Promise(resolve => { resolveStop = resolve; });
|
|
55
|
+
recorder.onstop = resolveStop;
|
|
56
|
+
recorder.onerror = () => fail(new Error('Audio capture failed'));
|
|
57
|
+
recorder.ondataavailable = event => {
|
|
58
|
+
if (!event.data.size || controller.signal.aborted)
|
|
59
|
+
return;
|
|
60
|
+
queued += event.data.size;
|
|
61
|
+
if (queued > 128 * 1024 || event.data.size > 48 * 1024) {
|
|
62
|
+
fail(new Error('Speech connection too slow'));
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
chain = chain.then(async () => {
|
|
66
|
+
check();
|
|
67
|
+
const bytes = new Uint8Array(await event.data.arrayBuffer());
|
|
68
|
+
let binary = '';
|
|
69
|
+
for (const byte of bytes)
|
|
70
|
+
binary += String.fromCharCode(byte);
|
|
71
|
+
const response = await api.liveSpeech({ action: 'push', session_id: session, sequence: sequence++, audio_base64: btoa(binary) }, { signal: controller.signal, timeout: 15000 });
|
|
72
|
+
queued -= event.data.size;
|
|
73
|
+
result(response.data.data);
|
|
74
|
+
});
|
|
75
|
+
void chain.catch(fail);
|
|
76
|
+
};
|
|
77
|
+
recorder.start(350);
|
|
78
|
+
const finish = () => finished ??= (async () => {
|
|
79
|
+
if (failure)
|
|
80
|
+
throw failure;
|
|
81
|
+
check();
|
|
82
|
+
stopped = true;
|
|
83
|
+
clearTimeout(timer);
|
|
84
|
+
if (recorder.state !== 'inactive')
|
|
85
|
+
recorder.stop();
|
|
86
|
+
await stop;
|
|
87
|
+
capture?.dispose();
|
|
88
|
+
try {
|
|
89
|
+
await chain;
|
|
90
|
+
check();
|
|
91
|
+
const response = await api.liveSpeech({ action: 'finish', session_id: session, sequence: sequence++ }, { signal: controller.signal, timeout: 30000 });
|
|
92
|
+
if (!response.data.data.final_result)
|
|
93
|
+
throw new Error('Missing final transcript');
|
|
94
|
+
return result(response.data.data);
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
cancel();
|
|
98
|
+
}
|
|
99
|
+
})();
|
|
100
|
+
timer = setTimeout(() => { fail(new Error('Maximum live recording duration reached')); }, 60000);
|
|
101
|
+
return { finish, cancel };
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
cancel();
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=speech-live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech-live.js","sourceRoot":"","sources":["../src/speech-live.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ChatApi } from './index.js';
|
|
2
|
+
import type { SpeechSynthesisInput } from './types.js';
|
|
3
|
+
export interface SpeechPlaybackOptions {
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
/** Called when the first audio actually starts, and while waiting for later audio. */
|
|
6
|
+
onPhase?: (phase: 'buffering' | 'playing') => void;
|
|
7
|
+
}
|
|
8
|
+
/** Split on natural boundaries, with a short first phrase for lower startup latency.
|
|
9
|
+
* All non-whitespace text is retained, including Persian punctuation and long tokens. */
|
|
10
|
+
export declare function splitSpeechText(text: string): string[];
|
|
11
|
+
/** Play compact MP3 in phrase order while preparing the next phrase. Requires chat:ai.
|
|
12
|
+
* Uses the configured ChatApi transport/authentication. Browser-only; invoke after a user
|
|
13
|
+
* gesture. Resolves when playback ends, rejects on provider/playback errors. Abort stops
|
|
14
|
+
* playback and outstanding requests. At most two requests/audio segments are outstanding;
|
|
15
|
+
* no audio or text is cached across users. This is progressive phrase synthesis, not a
|
|
16
|
+
* provider token/audio stream. Each phrase is independently billed by the configured provider.
|
|
17
|
+
*/
|
|
18
|
+
export declare function playSpeech(api: ChatApi, input: SpeechSynthesisInput, options?: SpeechPlaybackOptions): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=speech-playback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech-playback.d.ts","sourceRoot":"","sources":["../src/speech-playback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sFAAsF;IACtF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,KAAK,IAAI,CAAC;CACpD;AACD;yFACyF;AACzF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CActD;AACD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C9H"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/** Split on natural boundaries, with a short first phrase for lower startup latency.
|
|
2
|
+
* All non-whitespace text is retained, including Persian punctuation and long tokens. */
|
|
3
|
+
export function splitSpeechText(text) {
|
|
4
|
+
const words = text.trim().split(/\s+/u).filter(Boolean);
|
|
5
|
+
const parts = [];
|
|
6
|
+
let part = '';
|
|
7
|
+
for (const word of words) {
|
|
8
|
+
const limit = parts.length ? 240 : 85;
|
|
9
|
+
if (part && part.length + word.length + 1 > limit) {
|
|
10
|
+
parts.push(part);
|
|
11
|
+
part = '';
|
|
12
|
+
}
|
|
13
|
+
part += (part ? ' ' : '') + word;
|
|
14
|
+
if (/[.!?؟؛:]$/u.test(word) && part.length >= (parts.length ? 90 : 25)) {
|
|
15
|
+
parts.push(part);
|
|
16
|
+
part = '';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (part)
|
|
20
|
+
parts.push(part);
|
|
21
|
+
return parts;
|
|
22
|
+
}
|
|
23
|
+
/** Play compact MP3 in phrase order while preparing the next phrase. Requires chat:ai.
|
|
24
|
+
* Uses the configured ChatApi transport/authentication. Browser-only; invoke after a user
|
|
25
|
+
* gesture. Resolves when playback ends, rejects on provider/playback errors. Abort stops
|
|
26
|
+
* playback and outstanding requests. At most two requests/audio segments are outstanding;
|
|
27
|
+
* no audio or text is cached across users. This is progressive phrase synthesis, not a
|
|
28
|
+
* provider token/audio stream. Each phrase is independently billed by the configured provider.
|
|
29
|
+
*/
|
|
30
|
+
export async function playSpeech(api, input, options = {}) {
|
|
31
|
+
if (!input.text.trim() || [...input.text].length > 5000)
|
|
32
|
+
throw new RangeError('Speech text must contain 1–5000 characters');
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
const abort = () => controller.abort();
|
|
35
|
+
options.signal?.addEventListener('abort', abort, { once: true });
|
|
36
|
+
if (options.signal?.aborted)
|
|
37
|
+
abort();
|
|
38
|
+
const context = new AudioContext();
|
|
39
|
+
let source;
|
|
40
|
+
const check = () => { if (controller.signal.aborted)
|
|
41
|
+
throw new DOMException('Playback cancelled', 'AbortError'); };
|
|
42
|
+
try {
|
|
43
|
+
check();
|
|
44
|
+
await context.resume();
|
|
45
|
+
const parts = splitSpeechText(input.text);
|
|
46
|
+
const load = async (text) => {
|
|
47
|
+
check();
|
|
48
|
+
const response = await api.synthesize({ ...input, text, format: 'mp3' }, { signal: controller.signal });
|
|
49
|
+
check();
|
|
50
|
+
const buffer = await context.decodeAudioData(await response.data.arrayBuffer());
|
|
51
|
+
check();
|
|
52
|
+
return buffer;
|
|
53
|
+
};
|
|
54
|
+
let next = load(parts[0]);
|
|
55
|
+
// Attach a rejection handler immediately while current audio is playing.
|
|
56
|
+
void next.catch(() => { });
|
|
57
|
+
for (let i = 0; i < parts.length; i++) {
|
|
58
|
+
if (i > 0)
|
|
59
|
+
options.onPhase?.('buffering');
|
|
60
|
+
const buffer = await next;
|
|
61
|
+
check();
|
|
62
|
+
if (i + 1 < parts.length) {
|
|
63
|
+
next = load(parts[i + 1]);
|
|
64
|
+
void next.catch(() => { });
|
|
65
|
+
}
|
|
66
|
+
await new Promise((resolve, reject) => {
|
|
67
|
+
const onAbort = () => { try {
|
|
68
|
+
source?.stop();
|
|
69
|
+
}
|
|
70
|
+
catch { } reject(new DOMException('Playback cancelled', 'AbortError')); };
|
|
71
|
+
controller.signal.addEventListener('abort', onAbort, { once: true });
|
|
72
|
+
source = context.createBufferSource();
|
|
73
|
+
source.buffer = buffer;
|
|
74
|
+
source.connect(context.destination);
|
|
75
|
+
source.addEventListener('ended', () => { controller.signal.removeEventListener('abort', onAbort); resolve(); }, { once: true });
|
|
76
|
+
source.start();
|
|
77
|
+
options.onPhase?.('playing');
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
controller.abort();
|
|
83
|
+
try {
|
|
84
|
+
source?.stop();
|
|
85
|
+
}
|
|
86
|
+
catch { }
|
|
87
|
+
await context.close().catch(() => { });
|
|
88
|
+
options.signal?.removeEventListener('abort', abort);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=speech-playback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech-playback.js","sourceRoot":"","sources":["../src/speech-playback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Browser microphone capture optimized for spoken STT input. No network requests are made. */
|
|
2
|
+
export interface SpeechRecorderOptions {
|
|
3
|
+
/** Aborts microphone acquisition and disposes an active recording. */
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
/** Target Opus bitrate, 16–64 kbit/s; default 32 kbit/s. AAC fallback uses at least 64 kbit/s. */
|
|
6
|
+
audioBitsPerSecond?: number;
|
|
7
|
+
/** Enable a gentle 80 Hz rumble filter and 8 kHz low-pass; default true. */
|
|
8
|
+
filter?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface SpeechRecorder {
|
|
11
|
+
/** Set data/error/stop handlers, then call start(). Final chunks arrive before stop. */
|
|
12
|
+
recorder: MediaRecorder;
|
|
13
|
+
/** Actual container selected by MediaRecorder; use this as the final Blob type. */
|
|
14
|
+
mimeType: string;
|
|
15
|
+
/** Actual microphone settings: processing support varies by browser/device. */
|
|
16
|
+
settings: MediaTrackSettings;
|
|
17
|
+
/** Requested encoding rate; browsers may choose a different actual rate. */
|
|
18
|
+
targetBitsPerSecond: number;
|
|
19
|
+
/** Whether the optional Web Audio speech filters are active. */
|
|
20
|
+
filtered: boolean;
|
|
21
|
+
/** Stops recording, releases microphone tracks and closes audio resources. Idempotent. */
|
|
22
|
+
dispose(): void;
|
|
23
|
+
}
|
|
24
|
+
/** Create after a user gesture in a secure browser context. Uses native noise suppression,
|
|
25
|
+
* echo cancellation and gain control when supported, mono capture, Opus (preferred) or AAC.
|
|
26
|
+
* Does not trim pauses or gate quiet speech. Call dispose on cancel/unmount and after stop.
|
|
27
|
+
* Rejects with the original permission/device error; AbortError on cancellation and
|
|
28
|
+
* NotSupportedError if no supported compressed recording format exists. Browser-only;
|
|
29
|
+
* importing this module in Node is safe. Send the resulting Blob with ChatApi.transcribe.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createSpeechRecorder(options?: SpeechRecorderOptions): Promise<SpeechRecorder>;
|
|
32
|
+
//# sourceMappingURL=speech-recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech-recorder.d.ts","sourceRoot":"","sources":["../src/speech-recorder.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kGAAkG;IAClG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,QAAQ,EAAE,aAAa,CAAC;IACxB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB,0FAA0F;IAC1F,OAAO,IAAI,IAAI,CAAC;CACjB;AACD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,cAAc,CAAC,CA4DvG"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/** Create after a user gesture in a secure browser context. Uses native noise suppression,
|
|
2
|
+
* echo cancellation and gain control when supported, mono capture, Opus (preferred) or AAC.
|
|
3
|
+
* Does not trim pauses or gate quiet speech. Call dispose on cancel/unmount and after stop.
|
|
4
|
+
* Rejects with the original permission/device error; AbortError on cancellation and
|
|
5
|
+
* NotSupportedError if no supported compressed recording format exists. Browser-only;
|
|
6
|
+
* importing this module in Node is safe. Send the resulting Blob with ChatApi.transcribe.
|
|
7
|
+
*/
|
|
8
|
+
export async function createSpeechRecorder(options = {}) {
|
|
9
|
+
const rate = options.audioBitsPerSecond ?? 32000;
|
|
10
|
+
if (!Number.isInteger(rate) || rate < 16000 || rate > 64000)
|
|
11
|
+
throw new RangeError('Speech bitrate must be 16000–64000');
|
|
12
|
+
const aborted = () => { if (options.signal?.aborted)
|
|
13
|
+
throw new DOMException('Recording cancelled', 'AbortError'); };
|
|
14
|
+
aborted();
|
|
15
|
+
if (typeof navigator === 'undefined' || !navigator.mediaDevices?.getUserMedia || typeof MediaRecorder === 'undefined')
|
|
16
|
+
throw new DOMException('Microphone recording is unavailable', 'NotSupportedError');
|
|
17
|
+
const mime = ['audio/webm;codecs=opus', 'audio/ogg;codecs=opus', 'audio/mp4'].find(type => MediaRecorder.isTypeSupported(type));
|
|
18
|
+
if (!mime)
|
|
19
|
+
throw new DOMException('Compressed speech recording is unavailable', 'NotSupportedError');
|
|
20
|
+
const stream = await navigator.mediaDevices.getUserMedia({ audio: {
|
|
21
|
+
channelCount: { ideal: 1 }, sampleRate: { ideal: 48000 },
|
|
22
|
+
echoCancellation: { ideal: true }, noiseSuppression: { ideal: true }, autoGainControl: { ideal: true },
|
|
23
|
+
}, video: false });
|
|
24
|
+
let context;
|
|
25
|
+
let output;
|
|
26
|
+
let recorder;
|
|
27
|
+
let disposed = false;
|
|
28
|
+
const dispose = () => {
|
|
29
|
+
if (disposed)
|
|
30
|
+
return;
|
|
31
|
+
disposed = true;
|
|
32
|
+
options.signal?.removeEventListener('abort', dispose);
|
|
33
|
+
try {
|
|
34
|
+
if (recorder && recorder.state !== 'inactive')
|
|
35
|
+
recorder.stop();
|
|
36
|
+
}
|
|
37
|
+
catch { /* device already ended */ }
|
|
38
|
+
stream.getTracks().forEach(track => track.stop());
|
|
39
|
+
output?.getTracks().forEach(track => track.stop());
|
|
40
|
+
if (context)
|
|
41
|
+
void context.close().catch(() => { });
|
|
42
|
+
};
|
|
43
|
+
options.signal?.addEventListener('abort', dispose, { once: true });
|
|
44
|
+
try {
|
|
45
|
+
aborted();
|
|
46
|
+
const track = stream.getAudioTracks()[0];
|
|
47
|
+
if (!track)
|
|
48
|
+
throw new DOMException('No audio track', 'NotFoundError');
|
|
49
|
+
track.contentHint = 'speech';
|
|
50
|
+
if (options.filter !== false && typeof AudioContext !== 'undefined') {
|
|
51
|
+
try {
|
|
52
|
+
context = new AudioContext();
|
|
53
|
+
let resumeTimer;
|
|
54
|
+
try {
|
|
55
|
+
await Promise.race([context.resume(), new Promise((_, reject) => { resumeTimer = setTimeout(() => reject(new Error("Audio context suspended")), 1000); })]);
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
clearTimeout(resumeTimer);
|
|
59
|
+
}
|
|
60
|
+
aborted();
|
|
61
|
+
// Avoid hanging or silently recording silence when a browser suspends Web Audio.
|
|
62
|
+
if (context.state !== 'running')
|
|
63
|
+
throw new Error('Audio context suspended');
|
|
64
|
+
const source = context.createMediaStreamSource(stream);
|
|
65
|
+
const high = context.createBiquadFilter();
|
|
66
|
+
high.type = 'highpass';
|
|
67
|
+
high.frequency.value = 80;
|
|
68
|
+
high.Q.value = 0.707;
|
|
69
|
+
const low = context.createBiquadFilter();
|
|
70
|
+
low.type = 'lowpass';
|
|
71
|
+
low.frequency.value = 8000;
|
|
72
|
+
low.Q.value = 0.707;
|
|
73
|
+
const destination = context.createMediaStreamDestination();
|
|
74
|
+
destination.channelCount = 1;
|
|
75
|
+
destination.channelCountMode = 'explicit';
|
|
76
|
+
source.connect(high);
|
|
77
|
+
high.connect(low);
|
|
78
|
+
low.connect(destination);
|
|
79
|
+
output = destination.stream;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
if (context)
|
|
83
|
+
void context.close().catch(() => { });
|
|
84
|
+
context = undefined;
|
|
85
|
+
aborted(); // Native denoising/compression remain available without Web Audio.
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
aborted();
|
|
89
|
+
const targetBitsPerSecond = mime === 'audio/mp4' ? Math.max(rate, 64000) : rate;
|
|
90
|
+
recorder = new MediaRecorder(output ?? stream, { mimeType: mime, audioBitsPerSecond: targetBitsPerSecond });
|
|
91
|
+
return { recorder, mimeType: recorder.mimeType || mime, settings: track.getSettings(), targetBitsPerSecond, filtered: !!output, dispose };
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
dispose();
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=speech-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech-recorder.js","sourceRoot":"","sources":["../src/speech-recorder.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -163,4 +163,10 @@ export interface SpeechTranscript {
|
|
|
163
163
|
export interface SpeechTranscriptResponse extends ApiEnvelope<SpeechTranscript> {
|
|
164
164
|
}
|
|
165
165
|
export type SpeechLanguage = 'en' | 'fa' | 'auto';
|
|
166
|
+
export type SpeechAudioFormat = 'mp3' | 'wav';
|
|
167
|
+
export interface SpeechSynthesisInput {
|
|
168
|
+
text: string;
|
|
169
|
+
language?: 'fa' | 'en'; /** Compact mono MP3 by default; WAV for lossless processing. */
|
|
170
|
+
format?: SpeechAudioFormat;
|
|
171
|
+
}
|
|
166
172
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faiber/faiber-chat",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"README.md"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@faiber/sdk-core": "0.
|
|
20
|
-
"@faiber/faiber-task": "0.
|
|
19
|
+
"@faiber/sdk-core": "0.17.0",
|
|
20
|
+
"@faiber/faiber-task": "0.17.0"
|
|
21
21
|
}
|
|
22
22
|
}
|