assemblyai 4.32.1 → 4.33.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/CHANGELOG.md +9 -0
- package/dist/assemblyai.umd.js +33 -5
- package/dist/assemblyai.umd.min.js +1 -1
- package/dist/browser.mjs +33 -5
- package/dist/bun.mjs +33 -5
- package/dist/deno.mjs +33 -5
- package/dist/index.cjs +33 -5
- package/dist/index.mjs +33 -5
- package/dist/node.cjs +33 -5
- package/dist/node.mjs +33 -5
- package/dist/types/streaming/index.d.ts +15 -3
- package/dist/workerd.mjs +33 -5
- package/package.json +1 -1
- package/src/services/streaming/service.ts +60 -6
- package/src/types/streaming/index.ts +64 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.33.0]
|
|
4
|
+
|
|
5
|
+
- Add streaming parameters to match the Python SDK:
|
|
6
|
+
- `voiceFocus` and `voiceFocusThreshold` (replaces the unreleased `noiseSuppressionModel` / `noiseSuppressionThreshold`)
|
|
7
|
+
- `continuousPartials`
|
|
8
|
+
- `customerSupportAudioCapture` (logs a warning when enabled — records session audio for AssemblyAI support)
|
|
9
|
+
- `webhookUrl`, `webhookAuthHeaderName`, `webhookAuthHeaderValue`
|
|
10
|
+
- Add `speaker` field to `StreamingWord`
|
|
11
|
+
|
|
3
12
|
## [4.20.0]
|
|
4
13
|
|
|
5
14
|
- Add `on_low_language_confidence` property to `LanguageDetectionOptions`
|
package/dist/assemblyai.umd.js
CHANGED
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
defaultUserAgentString += navigator.userAgent;
|
|
66
66
|
}
|
|
67
67
|
const defaultUserAgent = {
|
|
68
|
-
sdk: { name: "JavaScript", version: "4.
|
|
68
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
69
69
|
};
|
|
70
70
|
if (typeof process !== "undefined") {
|
|
71
71
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -972,11 +972,39 @@ Learn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/c
|
|
|
972
972
|
if (this.params.maxSpeakers !== undefined) {
|
|
973
973
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
974
974
|
}
|
|
975
|
-
if (this.params.
|
|
976
|
-
searchParams.set("
|
|
975
|
+
if (this.params.voiceFocus) {
|
|
976
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
977
977
|
}
|
|
978
|
-
if (this.params.
|
|
979
|
-
searchParams.set("
|
|
978
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
979
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
980
|
+
}
|
|
981
|
+
if (this.params.continuousPartials !== undefined) {
|
|
982
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
983
|
+
}
|
|
984
|
+
if (this.params.customerSupportAudioCapture) {
|
|
985
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
986
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
987
|
+
}
|
|
988
|
+
if (this.params.webhookUrl) {
|
|
989
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
990
|
+
}
|
|
991
|
+
if (this.params.webhookAuthHeaderName) {
|
|
992
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
993
|
+
}
|
|
994
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
995
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
996
|
+
}
|
|
997
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
998
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
999
|
+
}
|
|
1000
|
+
if (this.params.redactPii !== undefined) {
|
|
1001
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
1002
|
+
}
|
|
1003
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
1004
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
1005
|
+
}
|
|
1006
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
1007
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
980
1008
|
}
|
|
981
1009
|
if (this.params.llmGateway !== undefined) {
|
|
982
1010
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).assemblyai={})}(this,(function(e){"use strict";function t(e,t){var s={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(s[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(s[i[n]]=e[i[n]])}return s}function s(e,t,s,i){return new(s||(s=Promise))((function(n,r){function o(e){try{c(i.next(e))}catch(e){r(e)}}function a(e){try{c(i.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,a)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const i={cache:"no-store"};let n="";"undefined"!=typeof navigator&&navigator.userAgent&&(n+=navigator.userAgent);const r={sdk:{name:"JavaScript",version:"4.32.1"}};"undefined"!=typeof process&&(process.versions.node&&-1===n.indexOf("Node")&&(r.runtime_env={name:"Node",version:process.versions.node}),process.versions.bun&&-1===n.indexOf("Bun")&&(r.runtime_env={name:"Bun",version:process.versions.bun})),"undefined"!=typeof Deno&&process.versions.bun&&-1===n.indexOf("Deno")&&(r.runtime_env={name:"Deno",version:Deno.version.deno});class o{constructor(e){var t;this.params=e,!1===e.userAgent?this.userAgent=void 0:this.userAgent=(t=e.userAgent||{},n+(!1===t?"":" AssemblyAI/1.0 ("+Object.entries(Object.assign(Object.assign({},r),t)).map((([e,t])=>t?`${e}=${t.name}/${t.version}`:"")).join(" ")+")"))}fetch(e,t){return s(this,void 0,void 0,(function*(){t=Object.assign(Object.assign({},i),t);let s={Authorization:this.params.apiKey,"Content-Type":"application/json"};(null==i?void 0:i.headers)&&(s=Object.assign(Object.assign({},s),i.headers)),(null==t?void 0:t.headers)&&(s=Object.assign(Object.assign({},s),t.headers)),this.userAgent&&(s["User-Agent"]=this.userAgent,"undefined"!=typeof window&&"chrome"in window&&(s["AssemblyAI-Agent"]=this.userAgent)),t.headers=s,e.startsWith("http")||(e=this.params.baseUrl+e);const n=yield fetch(e,t);if(n.status>=400){let e;const t=yield n.text();if(t){try{e=JSON.parse(t)}catch(e){}if(null==e?void 0:e.error)throw new Error(e.error);throw new Error(t)}throw new Error(`HTTP Error: ${n.status} ${n.statusText}`)}return n}))}fetchJson(e,t){return s(this,void 0,void 0,(function*(){return(yield this.fetch(e,t)).json()}))}}class a extends o{summary(e,t){return this.fetchJson("/lemur/v3/generate/summary",{method:"POST",body:JSON.stringify(e),signal:t})}questionAnswer(e,t){return this.fetchJson("/lemur/v3/generate/question-answer",{method:"POST",body:JSON.stringify(e),signal:t})}actionItems(e,t){return this.fetchJson("/lemur/v3/generate/action-items",{method:"POST",body:JSON.stringify(e),signal:t})}task(e,t){return this.fetchJson("/lemur/v3/generate/task",{method:"POST",body:JSON.stringify(e),signal:t})}getResponse(e,t){return this.fetchJson(`/lemur/v3/${e}`,{signal:t})}purgeRequestData(e,t){return this.fetchJson(`/lemur/v3/${e}`,{method:"DELETE",signal:t})}}const{WritableStream:c}="undefined"!=typeof window?window:"undefined"!=typeof global?global:globalThis;var l,d;const h=null!==(d=null!==(l=null!==WebSocket&&void 0!==WebSocket?WebSocket:null===global||void 0===global?void 0:global.WebSocket)&&void 0!==l?l:null===window||void 0===window?void 0:window.WebSocket)&&void 0!==d?d:null===self||void 0===self?void 0:self.WebSocket,u=(e,t)=>t?new h(e,t):new h(e),p={[4e3]:"Sample rate must be a positive integer",[4001]:"Not Authorized",[4002]:"Insufficient funds",[4003]:"This feature is paid-only and requires you to add a credit card. Please visit https://app.assemblyai.com/ to add a credit card to your account.",[4004]:"Session ID does not exist",[4008]:"Session has expired",[4010]:"Session is closed",[4029]:"Rate limited",[4030]:"Unique session violation",[4031]:"Session Timeout",[4032]:"Audio too short",[4033]:"Audio too long",[4034]:"Audio too small to transcode",[4100]:"Bad JSON",[4101]:"Bad schema",[4102]:"Too many streams",[4103]:"This session has been reconnected. This WebSocket is no longer valid.",[1013]:"Reconnect attempts exhausted",[4104]:"Could not parse word boost parameter"};class m extends Error{}const f={[3005]:"Server error",[3006]:"Input validation error",[3007]:"Audio chunk duration violation",[3008]:"Session expired: maximum session duration exceeded",[3009]:"Too many concurrent sessions",[4e3]:"Sample rate must be a positive integer",[4001]:"Not Authorized",[4002]:"Insufficient funds",[4003]:"This feature is paid-only and requires you to add a credit card. Please visit https://app.assemblyai.com/ to add a credit card to your account.",[4004]:"Session ID does not exist",[4008]:"Session has expired",[4010]:"Session is closed",[4029]:"Rate limited",[4030]:"Unique session violation",[4031]:"Session Timeout",[4032]:"Audio too short",[4033]:"Audio too long",[4034]:"Audio too small to transcode",[4101]:"Bad schema",[4102]:"Too many streams",[4103]:"This session has been reconnected. This WebSocket is no longer valid."};class v extends Error{}const y='{"terminate_session":true}';class g{constructor(e){var t,s;if(this.listeners={},this.realtimeUrl=null!==(t=e.realtimeUrl)&&void 0!==t?t:"wss://api.assemblyai.com/v2/realtime/ws",this.sampleRate=null!==(s=e.sampleRate)&&void 0!==s?s:16e3,this.wordBoost=e.wordBoost,this.encoding=e.encoding,this.endUtteranceSilenceThreshold=e.endUtteranceSilenceThreshold,this.disablePartialTranscripts=e.disablePartialTranscripts,"token"in e&&e.token&&(this.token=e.token),"apiKey"in e&&e.apiKey&&(this.apiKey=e.apiKey),!this.token&&!this.apiKey)throw new Error("API key or temporary token is required.")}connectionUrl(){const e=new URL(this.realtimeUrl);if("wss:"!==e.protocol)throw new Error("Invalid protocol, must be wss");const t=new URLSearchParams;return this.token&&t.set("token",this.token),t.set("sample_rate",this.sampleRate.toString()),this.wordBoost&&this.wordBoost.length>0&&t.set("word_boost",JSON.stringify(this.wordBoost)),this.encoding&&t.set("encoding",this.encoding),t.set("enable_extra_session_information","true"),this.disablePartialTranscripts&&t.set("disable_partial_transcripts",this.disablePartialTranscripts.toString()),e.search=t.toString(),e}on(e,t){this.listeners[e]=t}connect(){return new Promise((e=>{if(this.socket)throw new Error("Already connected");const t=this.connectionUrl();this.token?this.socket=u(t.toString()):(console.warn("API key authentication is not supported for the RealtimeTranscriber in browser environment. Use temporary token authentication instead.\nLearn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/compat.md#browser-compatibility."),this.socket=u(t.toString(),{headers:{Authorization:this.apiKey}})),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{void 0!==this.endUtteranceSilenceThreshold&&null!==this.endUtteranceSilenceThreshold&&this.configureEndUtteranceSilenceThreshold(this.endUtteranceSilenceThreshold)},this.socket.onclose=({code:e,reason:t})=>{var s,i;t||e in p&&(t=p[e]),null===(i=(s=this.listeners).close)||void 0===i||i.call(s,e,t)},this.socket.onerror=e=>{var t,s,i,n;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(n=(i=this.listeners).error)||void 0===n||n.call(i,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,i,n,r,o,a,c,l,d,h,u,p,f,v,y;const g=JSON.parse(t.toString());if("error"in g)null===(i=(s=this.listeners).error)||void 0===i||i.call(s,new m(g.error));else switch(g.message_type){case"SessionBegins":{const t={sessionId:g.session_id,expiresAt:new Date(g.expires_at)};e(t),null===(r=(n=this.listeners).open)||void 0===r||r.call(n,t);break}case"PartialTranscript":g.created=new Date(g.created),null===(a=(o=this.listeners).transcript)||void 0===a||a.call(o,g),null===(l=(c=this.listeners)["transcript.partial"])||void 0===l||l.call(c,g);break;case"FinalTranscript":g.created=new Date(g.created),null===(h=(d=this.listeners).transcript)||void 0===h||h.call(d,g),null===(p=(u=this.listeners)["transcript.final"])||void 0===p||p.call(u,g);break;case"SessionInformation":null===(v=(f=this.listeners).session_information)||void 0===v||v.call(f,g);break;case"SessionTerminated":null===(y=this.sessionTerminatedResolve)||void 0===y||y.call(this)}}}))}sendAudio(e){this.send(e)}stream(){return new c({write:e=>{this.sendAudio(e)}})}forceEndUtterance(){this.send('{"force_end_utterance":true}')}configureEndUtteranceSilenceThreshold(e){this.send(`{"end_utterance_silence_threshold":${e}}`)}send(e){if(!this.socket||this.socket.readyState!==this.socket.OPEN)throw new Error("Socket is not open for communication");this.socket.send(e)}close(){return s(this,arguments,void 0,(function*(e=!0){var t;if(this.socket){if(this.socket.readyState===this.socket.OPEN)if(e){const e=new Promise((e=>{this.sessionTerminatedResolve=e}));this.socket.send(y),yield e}else this.socket.send(y);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class b extends o{constructor(e){super(e),this.rtFactoryParams=e}createService(e){return this.transcriber(e)}transcriber(e){const t=Object.assign({},e);return t.token||t.apiKey||(t.apiKey=this.rtFactoryParams.apiKey),new g(t)}createTemporaryToken(e){return s(this,void 0,void 0,(function*(){return(yield this.fetchJson("/v2/realtime/token",{method:"POST",body:JSON.stringify(e)})).token}))}}function w(e){return e.startsWith("http")||e.startsWith("https")||e.startsWith("data:")?null:e.startsWith("file://")?e.substring(7):e.startsWith("file:")?e.substring(5):e}class S extends o{constructor(e,t){super(e),this.files=t}transcribe(e,t){return s(this,void 0,void 0,(function*(){const s=yield this.submit(e);return yield this.waitUntilReady(s.id,t)}))}submit(e){return s(this,void 0,void 0,(function*(){let s,i;if("audio"in e){const{audio:n}=e,r=t(e,["audio"]);if("string"==typeof n){const e=w(n);s=null!==e?yield this.files.upload(e):n.startsWith("data:")?yield this.files.upload(n):n}else s=yield this.files.upload(n);i=Object.assign(Object.assign({},r),{audio_url:s})}else i=e;return yield this.fetchJson("/v2/transcript",{method:"POST",body:JSON.stringify(i)})}))}create(e,t){return s(this,void 0,void 0,(function*(){var s;const i=w(e.audio_url);if(null!==i){const t=yield this.files.upload(i);e.audio_url=t}const n=yield this.fetchJson("/v2/transcript",{method:"POST",body:JSON.stringify(e)});return null===(s=null==t?void 0:t.poll)||void 0===s||s?yield this.waitUntilReady(n.id,t):n}))}waitUntilReady(e,t){return s(this,void 0,void 0,(function*(){var s,i;const n=null!==(s=null==t?void 0:t.pollingInterval)&&void 0!==s?s:3e3,r=null!==(i=null==t?void 0:t.pollingTimeout)&&void 0!==i?i:-1,o=Date.now();for(;;){const t=yield this.get(e);if("completed"===t.status||"error"===t.status)return t;if(r>0&&Date.now()-o>r)throw new Error("Polling timeout");yield new Promise((e=>setTimeout(e,n)))}}))}get(e){return this.fetchJson(`/v2/transcript/${e}`)}list(e){return s(this,void 0,void 0,(function*(){let t="/v2/transcript";"string"==typeof e?t=e:e&&(t=`${t}?${new URLSearchParams(Object.keys(e).map((t=>{var s;return[t,(null===(s=e[t])||void 0===s?void 0:s.toString())||""]})))}`);const s=yield this.fetchJson(t);for(const e of s.transcripts)e.created=new Date(e.created),e.completed&&(e.completed=new Date(e.completed));return s}))}delete(e){return this.fetchJson(`/v2/transcript/${e}`,{method:"DELETE"})}wordSearch(e,t){const s=new URLSearchParams({words:t.join(",")});return this.fetchJson(`/v2/transcript/${e}/word-search?${s.toString()}`)}sentences(e){return this.fetchJson(`/v2/transcript/${e}/sentences`)}paragraphs(e){return this.fetchJson(`/v2/transcript/${e}/paragraphs`)}subtitles(e){return s(this,arguments,void 0,(function*(e,t="srt",s){let i=`/v2/transcript/${e}/${t}`;if(s){const e=new URLSearchParams;e.set("chars_per_caption",s.toString()),i+=`?${e.toString()}`}const n=yield this.fetch(i);return yield n.text()}))}redactions(e){return this.redactedAudio(e)}redactedAudio(e){return this.fetchJson(`/v2/transcript/${e}/redacted-audio`)}redactedAudioFile(e){return s(this,void 0,void 0,(function*(){const{redacted_audio_url:t,status:s}=yield this.redactedAudio(e);if("redacted_audio_ready"!==s)throw new Error(`Redacted audio status is ${s}`);const i=yield fetch(t);if(!i.ok)throw new Error(`Failed to fetch redacted audio: ${i.statusText}`);return{arrayBuffer:i.arrayBuffer.bind(i),blob:i.blob.bind(i),body:i.body,bodyUsed:i.bodyUsed}}))}}class k extends o{upload(e){return s(this,void 0,void 0,(function*(){let t;t="string"==typeof e?e.startsWith("data:")?function(e){const t=e.split(","),s=t[0].match(/:(.*?);/)[1],i=atob(t[1]);let n=i.length;const r=new Uint8Array(n);for(;n--;)r[n]=i.charCodeAt(n);return new Blob([r],{type:s})}(e):yield function(e){return s(this,void 0,void 0,(function*(){throw new Error("Interacting with the file system is not supported in this environment.")}))}():e;return(yield this.fetchJson("/v2/upload",{method:"POST",body:t,headers:{"Content-Type":"application/octet-stream"},duplex:"half"})).upload_url}))}}const _='{"type":"Terminate"}';class T{constructor(e){if(this.listeners={},this.params=Object.assign(Object.assign({},e),{websocketBaseUrl:e.websocketBaseUrl||"wss://streaming.assemblyai.com/v3/ws"}),"token"in e&&e.token&&(this.token=e.token),"apiKey"in e&&e.apiKey&&(this.apiKey=e.apiKey),!this.token&&!this.apiKey)throw new Error("API key or temporary token is required.")}connectionUrl(){var e,t;const s=new URL(null!==(e=this.params.websocketBaseUrl)&&void 0!==e?e:"");if("wss:"!==s.protocol)throw new Error("Invalid protocol, must be wss");const i=new URLSearchParams;this.token&&i.set("token",this.token),i.set("sample_rate",this.params.sampleRate.toString()),this.params.endOfTurnConfidenceThreshold&&i.set("end_of_turn_confidence_threshold",this.params.endOfTurnConfidenceThreshold.toString()),void 0!==this.params.minEndOfTurnSilenceWhenConfident&&(void 0!==this.params.minTurnSilence?console.warn("[Deprecation Warning] Both `minEndOfTurnSilenceWhenConfident` and `minTurnSilence` are set. Using `minTurnSilence`; `minEndOfTurnSilenceWhenConfident` is deprecated."):console.warn("[Deprecation Warning] `minEndOfTurnSilenceWhenConfident` is deprecated and will be removed in a future release. Please use `minTurnSilence` instead."));const n=null!==(t=this.params.minTurnSilence)&&void 0!==t?t:this.params.minEndOfTurnSilenceWhenConfident;return void 0!==n&&i.set("min_turn_silence",n.toString()),this.params.maxTurnSilence&&i.set("max_turn_silence",this.params.maxTurnSilence.toString()),void 0!==this.params.vadThreshold&&i.set("vad_threshold",this.params.vadThreshold.toString()),this.params.formatTurns&&i.set("format_turns",this.params.formatTurns.toString()),this.params.encoding&&i.set("encoding",this.params.encoding.toString()),this.params.keytermsPrompt?i.set("keyterms_prompt",JSON.stringify(this.params.keytermsPrompt)):this.params.keyterms&&(console.warn("[Deprecation Warning] `keyterms` is deprecated and will be removed in a future release. Please use `keytermsPrompt` instead."),i.set("keyterms_prompt",JSON.stringify(this.params.keyterms))),this.params.prompt&&i.set("prompt",this.params.prompt),this.params.filterProfanity&&i.set("filter_profanity",this.params.filterProfanity.toString()),"u3-pro"===this.params.speechModel&&console.warn("[Deprecation Warning] The speech model `u3-pro` is deprecated and will be removed in a future release. Please use `u3-rt-pro` instead."),i.set("speech_model",this.params.speechModel.toString()),void 0!==this.params.languageDetection&&i.set("language_detection",this.params.languageDetection.toString()),this.params.domain&&i.set("domain",this.params.domain),void 0!==this.params.inactivityTimeout&&i.set("inactivity_timeout",this.params.inactivityTimeout.toString()),void 0!==this.params.speakerLabels&&i.set("speaker_labels",this.params.speakerLabels.toString()),void 0!==this.params.maxSpeakers&&i.set("max_speakers",this.params.maxSpeakers.toString()),this.params.noiseSuppressionModel&&i.set("noise_suppression_model",this.params.noiseSuppressionModel),void 0!==this.params.noiseSuppressionThreshold&&i.set("noise_suppression_threshold",this.params.noiseSuppressionThreshold.toString()),void 0!==this.params.llmGateway&&i.set("llm_gateway",JSON.stringify(this.params.llmGateway)),s.search=i.toString(),s}on(e,t){this.listeners[e]=t}connect(){return new Promise((e=>{if(this.socket)throw new Error("Already connected");const t=this.connectionUrl();this.token?this.socket=u(t.toString()):(console.warn("API key authentication is not supported for the StreamingTranscriber in browser environment. Use temporary token authentication instead.\nLearn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/compat.md#browser-compatibility."),this.socket=u(t.toString(),{headers:{Authorization:this.apiKey}})),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{},this.socket.onclose=({code:e,reason:t})=>{var s,i;t||e in f&&(t=f[e]),null===(i=(s=this.listeners).close)||void 0===i||i.call(s,e,t)},this.socket.onerror=e=>{var t,s,i,n;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(n=(i=this.listeners).error)||void 0===n||n.call(i,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,i,n,r,o,a,c,l,d,h,u,p,m;const f=JSON.parse(t.toString());if("error"in f){const e=new v(f.error);return"error_code"in f&&(e.code=f.error_code),void(null===(i=(s=this.listeners).error)||void 0===i||i.call(s,e))}switch(f.type){case"Begin":e(f),null===(r=(n=this.listeners).open)||void 0===r||r.call(n,f);break;case"Turn":null===(a=(o=this.listeners).turn)||void 0===a||a.call(o,f);break;case"SpeechStarted":null===(l=(c=this.listeners).speechStarted)||void 0===l||l.call(c,f);break;case"LLMGatewayResponse":null===(h=(d=this.listeners).llmGatewayResponse)||void 0===h||h.call(d,f);break;case"Warning":{const e=f;console.warn(`Streaming warning (code=${e.warning_code}): ${e.warning}`),null===(p=(u=this.listeners).warning)||void 0===p||p.call(u,e);break}case"Termination":null===(m=this.sessionTerminatedResolve)||void 0===m||m.call(this)}}}))}stream(){return new c({write:e=>{this.sendAudio(e)}})}sendAudio(e){this.send(e)}updateConfiguration(e){const{min_end_of_turn_silence_when_confident:s,min_turn_silence:i}=e,n=t(e,["min_end_of_turn_silence_when_confident","min_turn_silence"]);void 0!==s&&(void 0!==i?console.warn("[Deprecation Warning] Both `min_end_of_turn_silence_when_confident` and `min_turn_silence` are set. Using `min_turn_silence`; `min_end_of_turn_silence_when_confident` is deprecated."):console.warn("[Deprecation Warning] `min_end_of_turn_silence_when_confident` is deprecated and will be removed in a future release. Please use `min_turn_silence` instead."));const r=null!=i?i:s,o=Object.assign(Object.assign({type:"UpdateConfiguration"},n),void 0!==r?{min_turn_silence:r}:{});this.send(JSON.stringify(o))}forceEndpoint(){this.send(JSON.stringify({type:"ForceEndpoint"}))}send(e){if(!this.socket||this.socket.readyState!==this.socket.OPEN)throw new Error("Socket is not open for communication");this.socket.send(e)}close(){return s(this,arguments,void 0,(function*(e=!0){var t;if(this.socket){if(this.socket.readyState===this.socket.OPEN)if(e){const e=new Promise((e=>{this.sessionTerminatedResolve=e}));this.socket.send(_),yield e}else this.socket.send(_);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class O extends o{constructor(e){super(e),this.baseServiceParams=e}transcriber(e){const t=Object.assign({},e);return t.token||t.apiKey||(t.apiKey=this.baseServiceParams.apiKey),new T(t)}createTemporaryToken(e){return s(this,void 0,void 0,(function*(){const t=new URLSearchParams;Object.entries(e).forEach((([e,s])=>{null!=s&&t.append(e,String(s))}));const s=t.toString(),i=s?`/v3/token?${s}`:"/v3/token";return(yield this.fetchJson(i,{method:"GET"})).token}))}}e.AssemblyAI=class{constructor(e){e.baseUrl=e.baseUrl||"https://api.assemblyai.com",e.baseUrl&&e.baseUrl.endsWith("/")&&(e.baseUrl=e.baseUrl.slice(0,-1)),this.files=new k(e),this.transcripts=new S(e,this.files),this.lemur=new a(e),this.realtime=new b(e),this.streaming=new O(Object.assign(Object.assign({},e),{baseUrl:e.streamingBaseUrl||"https://streaming.assemblyai.com"}))}},e.FileService=k,e.LemurService=a,e.RealtimeService=class extends g{},e.RealtimeServiceFactory=class extends b{},e.RealtimeTranscriber=g,e.RealtimeTranscriberFactory=b,e.StreamingTranscriber=T,e.TranscriptService=S}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).assemblyai={})}(this,(function(e){"use strict";function t(e,t){var s={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(s[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(s[i[n]]=e[i[n]])}return s}function s(e,t,s,i){return new(s||(s=Promise))((function(n,r){function o(e){try{c(i.next(e))}catch(e){r(e)}}function a(e){try{c(i.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,a)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const i={cache:"no-store"};let n="";"undefined"!=typeof navigator&&navigator.userAgent&&(n+=navigator.userAgent);const r={sdk:{name:"JavaScript",version:"4.33.0"}};"undefined"!=typeof process&&(process.versions.node&&-1===n.indexOf("Node")&&(r.runtime_env={name:"Node",version:process.versions.node}),process.versions.bun&&-1===n.indexOf("Bun")&&(r.runtime_env={name:"Bun",version:process.versions.bun})),"undefined"!=typeof Deno&&process.versions.bun&&-1===n.indexOf("Deno")&&(r.runtime_env={name:"Deno",version:Deno.version.deno});class o{constructor(e){var t;this.params=e,!1===e.userAgent?this.userAgent=void 0:this.userAgent=(t=e.userAgent||{},n+(!1===t?"":" AssemblyAI/1.0 ("+Object.entries(Object.assign(Object.assign({},r),t)).map((([e,t])=>t?`${e}=${t.name}/${t.version}`:"")).join(" ")+")"))}fetch(e,t){return s(this,void 0,void 0,(function*(){t=Object.assign(Object.assign({},i),t);let s={Authorization:this.params.apiKey,"Content-Type":"application/json"};(null==i?void 0:i.headers)&&(s=Object.assign(Object.assign({},s),i.headers)),(null==t?void 0:t.headers)&&(s=Object.assign(Object.assign({},s),t.headers)),this.userAgent&&(s["User-Agent"]=this.userAgent,"undefined"!=typeof window&&"chrome"in window&&(s["AssemblyAI-Agent"]=this.userAgent)),t.headers=s,e.startsWith("http")||(e=this.params.baseUrl+e);const n=yield fetch(e,t);if(n.status>=400){let e;const t=yield n.text();if(t){try{e=JSON.parse(t)}catch(e){}if(null==e?void 0:e.error)throw new Error(e.error);throw new Error(t)}throw new Error(`HTTP Error: ${n.status} ${n.statusText}`)}return n}))}fetchJson(e,t){return s(this,void 0,void 0,(function*(){return(yield this.fetch(e,t)).json()}))}}class a extends o{summary(e,t){return this.fetchJson("/lemur/v3/generate/summary",{method:"POST",body:JSON.stringify(e),signal:t})}questionAnswer(e,t){return this.fetchJson("/lemur/v3/generate/question-answer",{method:"POST",body:JSON.stringify(e),signal:t})}actionItems(e,t){return this.fetchJson("/lemur/v3/generate/action-items",{method:"POST",body:JSON.stringify(e),signal:t})}task(e,t){return this.fetchJson("/lemur/v3/generate/task",{method:"POST",body:JSON.stringify(e),signal:t})}getResponse(e,t){return this.fetchJson(`/lemur/v3/${e}`,{signal:t})}purgeRequestData(e,t){return this.fetchJson(`/lemur/v3/${e}`,{method:"DELETE",signal:t})}}const{WritableStream:c}="undefined"!=typeof window?window:"undefined"!=typeof global?global:globalThis;var l,d;const h=null!==(d=null!==(l=null!==WebSocket&&void 0!==WebSocket?WebSocket:null===global||void 0===global?void 0:global.WebSocket)&&void 0!==l?l:null===window||void 0===window?void 0:window.WebSocket)&&void 0!==d?d:null===self||void 0===self?void 0:self.WebSocket,u=(e,t)=>t?new h(e,t):new h(e),p={[4e3]:"Sample rate must be a positive integer",[4001]:"Not Authorized",[4002]:"Insufficient funds",[4003]:"This feature is paid-only and requires you to add a credit card. Please visit https://app.assemblyai.com/ to add a credit card to your account.",[4004]:"Session ID does not exist",[4008]:"Session has expired",[4010]:"Session is closed",[4029]:"Rate limited",[4030]:"Unique session violation",[4031]:"Session Timeout",[4032]:"Audio too short",[4033]:"Audio too long",[4034]:"Audio too small to transcode",[4100]:"Bad JSON",[4101]:"Bad schema",[4102]:"Too many streams",[4103]:"This session has been reconnected. This WebSocket is no longer valid.",[1013]:"Reconnect attempts exhausted",[4104]:"Could not parse word boost parameter"};class m extends Error{}const f={[3005]:"Server error",[3006]:"Input validation error",[3007]:"Audio chunk duration violation",[3008]:"Session expired: maximum session duration exceeded",[3009]:"Too many concurrent sessions",[4e3]:"Sample rate must be a positive integer",[4001]:"Not Authorized",[4002]:"Insufficient funds",[4003]:"This feature is paid-only and requires you to add a credit card. Please visit https://app.assemblyai.com/ to add a credit card to your account.",[4004]:"Session ID does not exist",[4008]:"Session has expired",[4010]:"Session is closed",[4029]:"Rate limited",[4030]:"Unique session violation",[4031]:"Session Timeout",[4032]:"Audio too short",[4033]:"Audio too long",[4034]:"Audio too small to transcode",[4101]:"Bad schema",[4102]:"Too many streams",[4103]:"This session has been reconnected. This WebSocket is no longer valid."};class v extends Error{}const y='{"terminate_session":true}';class g{constructor(e){var t,s;if(this.listeners={},this.realtimeUrl=null!==(t=e.realtimeUrl)&&void 0!==t?t:"wss://api.assemblyai.com/v2/realtime/ws",this.sampleRate=null!==(s=e.sampleRate)&&void 0!==s?s:16e3,this.wordBoost=e.wordBoost,this.encoding=e.encoding,this.endUtteranceSilenceThreshold=e.endUtteranceSilenceThreshold,this.disablePartialTranscripts=e.disablePartialTranscripts,"token"in e&&e.token&&(this.token=e.token),"apiKey"in e&&e.apiKey&&(this.apiKey=e.apiKey),!this.token&&!this.apiKey)throw new Error("API key or temporary token is required.")}connectionUrl(){const e=new URL(this.realtimeUrl);if("wss:"!==e.protocol)throw new Error("Invalid protocol, must be wss");const t=new URLSearchParams;return this.token&&t.set("token",this.token),t.set("sample_rate",this.sampleRate.toString()),this.wordBoost&&this.wordBoost.length>0&&t.set("word_boost",JSON.stringify(this.wordBoost)),this.encoding&&t.set("encoding",this.encoding),t.set("enable_extra_session_information","true"),this.disablePartialTranscripts&&t.set("disable_partial_transcripts",this.disablePartialTranscripts.toString()),e.search=t.toString(),e}on(e,t){this.listeners[e]=t}connect(){return new Promise((e=>{if(this.socket)throw new Error("Already connected");const t=this.connectionUrl();this.token?this.socket=u(t.toString()):(console.warn("API key authentication is not supported for the RealtimeTranscriber in browser environment. Use temporary token authentication instead.\nLearn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/compat.md#browser-compatibility."),this.socket=u(t.toString(),{headers:{Authorization:this.apiKey}})),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{void 0!==this.endUtteranceSilenceThreshold&&null!==this.endUtteranceSilenceThreshold&&this.configureEndUtteranceSilenceThreshold(this.endUtteranceSilenceThreshold)},this.socket.onclose=({code:e,reason:t})=>{var s,i;t||e in p&&(t=p[e]),null===(i=(s=this.listeners).close)||void 0===i||i.call(s,e,t)},this.socket.onerror=e=>{var t,s,i,n;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(n=(i=this.listeners).error)||void 0===n||n.call(i,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,i,n,r,o,a,c,l,d,h,u,p,f,v,y;const g=JSON.parse(t.toString());if("error"in g)null===(i=(s=this.listeners).error)||void 0===i||i.call(s,new m(g.error));else switch(g.message_type){case"SessionBegins":{const t={sessionId:g.session_id,expiresAt:new Date(g.expires_at)};e(t),null===(r=(n=this.listeners).open)||void 0===r||r.call(n,t);break}case"PartialTranscript":g.created=new Date(g.created),null===(a=(o=this.listeners).transcript)||void 0===a||a.call(o,g),null===(l=(c=this.listeners)["transcript.partial"])||void 0===l||l.call(c,g);break;case"FinalTranscript":g.created=new Date(g.created),null===(h=(d=this.listeners).transcript)||void 0===h||h.call(d,g),null===(p=(u=this.listeners)["transcript.final"])||void 0===p||p.call(u,g);break;case"SessionInformation":null===(v=(f=this.listeners).session_information)||void 0===v||v.call(f,g);break;case"SessionTerminated":null===(y=this.sessionTerminatedResolve)||void 0===y||y.call(this)}}}))}sendAudio(e){this.send(e)}stream(){return new c({write:e=>{this.sendAudio(e)}})}forceEndUtterance(){this.send('{"force_end_utterance":true}')}configureEndUtteranceSilenceThreshold(e){this.send(`{"end_utterance_silence_threshold":${e}}`)}send(e){if(!this.socket||this.socket.readyState!==this.socket.OPEN)throw new Error("Socket is not open for communication");this.socket.send(e)}close(){return s(this,arguments,void 0,(function*(e=!0){var t;if(this.socket){if(this.socket.readyState===this.socket.OPEN)if(e){const e=new Promise((e=>{this.sessionTerminatedResolve=e}));this.socket.send(y),yield e}else this.socket.send(y);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class b extends o{constructor(e){super(e),this.rtFactoryParams=e}createService(e){return this.transcriber(e)}transcriber(e){const t=Object.assign({},e);return t.token||t.apiKey||(t.apiKey=this.rtFactoryParams.apiKey),new g(t)}createTemporaryToken(e){return s(this,void 0,void 0,(function*(){return(yield this.fetchJson("/v2/realtime/token",{method:"POST",body:JSON.stringify(e)})).token}))}}function w(e){return e.startsWith("http")||e.startsWith("https")||e.startsWith("data:")?null:e.startsWith("file://")?e.substring(7):e.startsWith("file:")?e.substring(5):e}class S extends o{constructor(e,t){super(e),this.files=t}transcribe(e,t){return s(this,void 0,void 0,(function*(){const s=yield this.submit(e);return yield this.waitUntilReady(s.id,t)}))}submit(e){return s(this,void 0,void 0,(function*(){let s,i;if("audio"in e){const{audio:n}=e,r=t(e,["audio"]);if("string"==typeof n){const e=w(n);s=null!==e?yield this.files.upload(e):n.startsWith("data:")?yield this.files.upload(n):n}else s=yield this.files.upload(n);i=Object.assign(Object.assign({},r),{audio_url:s})}else i=e;return yield this.fetchJson("/v2/transcript",{method:"POST",body:JSON.stringify(i)})}))}create(e,t){return s(this,void 0,void 0,(function*(){var s;const i=w(e.audio_url);if(null!==i){const t=yield this.files.upload(i);e.audio_url=t}const n=yield this.fetchJson("/v2/transcript",{method:"POST",body:JSON.stringify(e)});return null===(s=null==t?void 0:t.poll)||void 0===s||s?yield this.waitUntilReady(n.id,t):n}))}waitUntilReady(e,t){return s(this,void 0,void 0,(function*(){var s,i;const n=null!==(s=null==t?void 0:t.pollingInterval)&&void 0!==s?s:3e3,r=null!==(i=null==t?void 0:t.pollingTimeout)&&void 0!==i?i:-1,o=Date.now();for(;;){const t=yield this.get(e);if("completed"===t.status||"error"===t.status)return t;if(r>0&&Date.now()-o>r)throw new Error("Polling timeout");yield new Promise((e=>setTimeout(e,n)))}}))}get(e){return this.fetchJson(`/v2/transcript/${e}`)}list(e){return s(this,void 0,void 0,(function*(){let t="/v2/transcript";"string"==typeof e?t=e:e&&(t=`${t}?${new URLSearchParams(Object.keys(e).map((t=>{var s;return[t,(null===(s=e[t])||void 0===s?void 0:s.toString())||""]})))}`);const s=yield this.fetchJson(t);for(const e of s.transcripts)e.created=new Date(e.created),e.completed&&(e.completed=new Date(e.completed));return s}))}delete(e){return this.fetchJson(`/v2/transcript/${e}`,{method:"DELETE"})}wordSearch(e,t){const s=new URLSearchParams({words:t.join(",")});return this.fetchJson(`/v2/transcript/${e}/word-search?${s.toString()}`)}sentences(e){return this.fetchJson(`/v2/transcript/${e}/sentences`)}paragraphs(e){return this.fetchJson(`/v2/transcript/${e}/paragraphs`)}subtitles(e){return s(this,arguments,void 0,(function*(e,t="srt",s){let i=`/v2/transcript/${e}/${t}`;if(s){const e=new URLSearchParams;e.set("chars_per_caption",s.toString()),i+=`?${e.toString()}`}const n=yield this.fetch(i);return yield n.text()}))}redactions(e){return this.redactedAudio(e)}redactedAudio(e){return this.fetchJson(`/v2/transcript/${e}/redacted-audio`)}redactedAudioFile(e){return s(this,void 0,void 0,(function*(){const{redacted_audio_url:t,status:s}=yield this.redactedAudio(e);if("redacted_audio_ready"!==s)throw new Error(`Redacted audio status is ${s}`);const i=yield fetch(t);if(!i.ok)throw new Error(`Failed to fetch redacted audio: ${i.statusText}`);return{arrayBuffer:i.arrayBuffer.bind(i),blob:i.blob.bind(i),body:i.body,bodyUsed:i.bodyUsed}}))}}class k extends o{upload(e){return s(this,void 0,void 0,(function*(){let t;t="string"==typeof e?e.startsWith("data:")?function(e){const t=e.split(","),s=t[0].match(/:(.*?);/)[1],i=atob(t[1]);let n=i.length;const r=new Uint8Array(n);for(;n--;)r[n]=i.charCodeAt(n);return new Blob([r],{type:s})}(e):yield function(e){return s(this,void 0,void 0,(function*(){throw new Error("Interacting with the file system is not supported in this environment.")}))}():e;return(yield this.fetchJson("/v2/upload",{method:"POST",body:t,headers:{"Content-Type":"application/octet-stream"},duplex:"half"})).upload_url}))}}const _='{"type":"Terminate"}';class T{constructor(e){if(this.listeners={},this.params=Object.assign(Object.assign({},e),{websocketBaseUrl:e.websocketBaseUrl||"wss://streaming.assemblyai.com/v3/ws"}),"token"in e&&e.token&&(this.token=e.token),"apiKey"in e&&e.apiKey&&(this.apiKey=e.apiKey),!this.token&&!this.apiKey)throw new Error("API key or temporary token is required.")}connectionUrl(){var e,t;const s=new URL(null!==(e=this.params.websocketBaseUrl)&&void 0!==e?e:"");if("wss:"!==s.protocol)throw new Error("Invalid protocol, must be wss");const i=new URLSearchParams;this.token&&i.set("token",this.token),i.set("sample_rate",this.params.sampleRate.toString()),this.params.endOfTurnConfidenceThreshold&&i.set("end_of_turn_confidence_threshold",this.params.endOfTurnConfidenceThreshold.toString()),void 0!==this.params.minEndOfTurnSilenceWhenConfident&&(void 0!==this.params.minTurnSilence?console.warn("[Deprecation Warning] Both `minEndOfTurnSilenceWhenConfident` and `minTurnSilence` are set. Using `minTurnSilence`; `minEndOfTurnSilenceWhenConfident` is deprecated."):console.warn("[Deprecation Warning] `minEndOfTurnSilenceWhenConfident` is deprecated and will be removed in a future release. Please use `minTurnSilence` instead."));const n=null!==(t=this.params.minTurnSilence)&&void 0!==t?t:this.params.minEndOfTurnSilenceWhenConfident;return void 0!==n&&i.set("min_turn_silence",n.toString()),this.params.maxTurnSilence&&i.set("max_turn_silence",this.params.maxTurnSilence.toString()),void 0!==this.params.vadThreshold&&i.set("vad_threshold",this.params.vadThreshold.toString()),this.params.formatTurns&&i.set("format_turns",this.params.formatTurns.toString()),this.params.encoding&&i.set("encoding",this.params.encoding.toString()),this.params.keytermsPrompt?i.set("keyterms_prompt",JSON.stringify(this.params.keytermsPrompt)):this.params.keyterms&&(console.warn("[Deprecation Warning] `keyterms` is deprecated and will be removed in a future release. Please use `keytermsPrompt` instead."),i.set("keyterms_prompt",JSON.stringify(this.params.keyterms))),this.params.prompt&&i.set("prompt",this.params.prompt),this.params.filterProfanity&&i.set("filter_profanity",this.params.filterProfanity.toString()),"u3-pro"===this.params.speechModel&&console.warn("[Deprecation Warning] The speech model `u3-pro` is deprecated and will be removed in a future release. Please use `u3-rt-pro` instead."),i.set("speech_model",this.params.speechModel.toString()),void 0!==this.params.languageDetection&&i.set("language_detection",this.params.languageDetection.toString()),this.params.domain&&i.set("domain",this.params.domain),void 0!==this.params.inactivityTimeout&&i.set("inactivity_timeout",this.params.inactivityTimeout.toString()),void 0!==this.params.speakerLabels&&i.set("speaker_labels",this.params.speakerLabels.toString()),void 0!==this.params.maxSpeakers&&i.set("max_speakers",this.params.maxSpeakers.toString()),this.params.voiceFocus&&i.set("voice_focus",this.params.voiceFocus),void 0!==this.params.voiceFocusThreshold&&i.set("voice_focus_threshold",this.params.voiceFocusThreshold.toString()),void 0!==this.params.continuousPartials&&i.set("continuous_partials",this.params.continuousPartials.toString()),this.params.customerSupportAudioCapture&&(console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support."),i.set("customer_support_audio_capture",this.params.customerSupportAudioCapture.toString())),this.params.webhookUrl&&i.set("webhook_url",this.params.webhookUrl),this.params.webhookAuthHeaderName&&i.set("webhook_auth_header_name",this.params.webhookAuthHeaderName),this.params.webhookAuthHeaderValue&&i.set("webhook_auth_header_value",this.params.webhookAuthHeaderValue),void 0!==this.params.includePartialTurns&&i.set("include_partial_turns",this.params.includePartialTurns.toString()),void 0!==this.params.redactPii&&i.set("redact_pii",this.params.redactPii.toString()),void 0!==this.params.redactPiiPolicies&&i.set("redact_pii_policies",JSON.stringify(this.params.redactPiiPolicies)),void 0!==this.params.redactPiiSub&&i.set("redact_pii_sub",this.params.redactPiiSub),void 0!==this.params.llmGateway&&i.set("llm_gateway",JSON.stringify(this.params.llmGateway)),s.search=i.toString(),s}on(e,t){this.listeners[e]=t}connect(){return new Promise((e=>{if(this.socket)throw new Error("Already connected");const t=this.connectionUrl();this.token?this.socket=u(t.toString()):(console.warn("API key authentication is not supported for the StreamingTranscriber in browser environment. Use temporary token authentication instead.\nLearn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/compat.md#browser-compatibility."),this.socket=u(t.toString(),{headers:{Authorization:this.apiKey}})),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{},this.socket.onclose=({code:e,reason:t})=>{var s,i;t||e in f&&(t=f[e]),null===(i=(s=this.listeners).close)||void 0===i||i.call(s,e,t)},this.socket.onerror=e=>{var t,s,i,n;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(n=(i=this.listeners).error)||void 0===n||n.call(i,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,i,n,r,o,a,c,l,d,h,u,p,m;const f=JSON.parse(t.toString());if("error"in f){const e=new v(f.error);return"error_code"in f&&(e.code=f.error_code),void(null===(i=(s=this.listeners).error)||void 0===i||i.call(s,e))}switch(f.type){case"Begin":e(f),null===(r=(n=this.listeners).open)||void 0===r||r.call(n,f);break;case"Turn":null===(a=(o=this.listeners).turn)||void 0===a||a.call(o,f);break;case"SpeechStarted":null===(l=(c=this.listeners).speechStarted)||void 0===l||l.call(c,f);break;case"LLMGatewayResponse":null===(h=(d=this.listeners).llmGatewayResponse)||void 0===h||h.call(d,f);break;case"Warning":{const e=f;console.warn(`Streaming warning (code=${e.warning_code}): ${e.warning}`),null===(p=(u=this.listeners).warning)||void 0===p||p.call(u,e);break}case"Termination":null===(m=this.sessionTerminatedResolve)||void 0===m||m.call(this)}}}))}stream(){return new c({write:e=>{this.sendAudio(e)}})}sendAudio(e){this.send(e)}updateConfiguration(e){const{min_end_of_turn_silence_when_confident:s,min_turn_silence:i}=e,n=t(e,["min_end_of_turn_silence_when_confident","min_turn_silence"]);void 0!==s&&(void 0!==i?console.warn("[Deprecation Warning] Both `min_end_of_turn_silence_when_confident` and `min_turn_silence` are set. Using `min_turn_silence`; `min_end_of_turn_silence_when_confident` is deprecated."):console.warn("[Deprecation Warning] `min_end_of_turn_silence_when_confident` is deprecated and will be removed in a future release. Please use `min_turn_silence` instead."));const r=null!=i?i:s,o=Object.assign(Object.assign({type:"UpdateConfiguration"},n),void 0!==r?{min_turn_silence:r}:{});this.send(JSON.stringify(o))}forceEndpoint(){this.send(JSON.stringify({type:"ForceEndpoint"}))}send(e){if(!this.socket||this.socket.readyState!==this.socket.OPEN)throw new Error("Socket is not open for communication");this.socket.send(e)}close(){return s(this,arguments,void 0,(function*(e=!0){var t;if(this.socket){if(this.socket.readyState===this.socket.OPEN)if(e){const e=new Promise((e=>{this.sessionTerminatedResolve=e}));this.socket.send(_),yield e}else this.socket.send(_);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class O extends o{constructor(e){super(e),this.baseServiceParams=e}transcriber(e){const t=Object.assign({},e);return t.token||t.apiKey||(t.apiKey=this.baseServiceParams.apiKey),new T(t)}createTemporaryToken(e){return s(this,void 0,void 0,(function*(){const t=new URLSearchParams;Object.entries(e).forEach((([e,s])=>{null!=s&&t.append(e,String(s))}));const s=t.toString(),i=s?`/v3/token?${s}`:"/v3/token";return(yield this.fetchJson(i,{method:"GET"})).token}))}}e.AssemblyAI=class{constructor(e){e.baseUrl=e.baseUrl||"https://api.assemblyai.com",e.baseUrl&&e.baseUrl.endsWith("/")&&(e.baseUrl=e.baseUrl.slice(0,-1)),this.files=new k(e),this.transcripts=new S(e,this.files),this.lemur=new a(e),this.realtime=new b(e),this.streaming=new O(Object.assign(Object.assign({},e),{baseUrl:e.streamingBaseUrl||"https://streaming.assemblyai.com"}))}},e.FileService=k,e.LemurService=a,e.RealtimeService=class extends g{},e.RealtimeServiceFactory=class extends b{},e.RealtimeTranscriber=g,e.RealtimeTranscriberFactory=b,e.StreamingTranscriber=T,e.TranscriptService=S}));
|
package/dist/browser.mjs
CHANGED
|
@@ -15,7 +15,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
15
15
|
defaultUserAgentString += navigator.userAgent;
|
|
16
16
|
}
|
|
17
17
|
const defaultUserAgent = {
|
|
18
|
-
sdk: { name: "JavaScript", version: "4.
|
|
18
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
19
19
|
};
|
|
20
20
|
if (typeof process !== "undefined") {
|
|
21
21
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -888,11 +888,39 @@ class StreamingTranscriber {
|
|
|
888
888
|
if (this.params.maxSpeakers !== undefined) {
|
|
889
889
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
890
890
|
}
|
|
891
|
-
if (this.params.
|
|
892
|
-
searchParams.set("
|
|
891
|
+
if (this.params.voiceFocus) {
|
|
892
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
893
893
|
}
|
|
894
|
-
if (this.params.
|
|
895
|
-
searchParams.set("
|
|
894
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
895
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
896
|
+
}
|
|
897
|
+
if (this.params.continuousPartials !== undefined) {
|
|
898
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
899
|
+
}
|
|
900
|
+
if (this.params.customerSupportAudioCapture) {
|
|
901
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
902
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
903
|
+
}
|
|
904
|
+
if (this.params.webhookUrl) {
|
|
905
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
906
|
+
}
|
|
907
|
+
if (this.params.webhookAuthHeaderName) {
|
|
908
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
909
|
+
}
|
|
910
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
911
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
912
|
+
}
|
|
913
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
914
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
915
|
+
}
|
|
916
|
+
if (this.params.redactPii !== undefined) {
|
|
917
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
918
|
+
}
|
|
919
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
920
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
921
|
+
}
|
|
922
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
923
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
896
924
|
}
|
|
897
925
|
if (this.params.llmGateway !== undefined) {
|
|
898
926
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
package/dist/bun.mjs
CHANGED
|
@@ -17,7 +17,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
17
17
|
defaultUserAgentString += navigator.userAgent;
|
|
18
18
|
}
|
|
19
19
|
const defaultUserAgent = {
|
|
20
|
-
sdk: { name: "JavaScript", version: "4.
|
|
20
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
21
21
|
};
|
|
22
22
|
if (typeof process !== "undefined") {
|
|
23
23
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -869,11 +869,39 @@ class StreamingTranscriber {
|
|
|
869
869
|
if (this.params.maxSpeakers !== undefined) {
|
|
870
870
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
871
871
|
}
|
|
872
|
-
if (this.params.
|
|
873
|
-
searchParams.set("
|
|
872
|
+
if (this.params.voiceFocus) {
|
|
873
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
874
874
|
}
|
|
875
|
-
if (this.params.
|
|
876
|
-
searchParams.set("
|
|
875
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
876
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
877
|
+
}
|
|
878
|
+
if (this.params.continuousPartials !== undefined) {
|
|
879
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
880
|
+
}
|
|
881
|
+
if (this.params.customerSupportAudioCapture) {
|
|
882
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
883
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
884
|
+
}
|
|
885
|
+
if (this.params.webhookUrl) {
|
|
886
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
887
|
+
}
|
|
888
|
+
if (this.params.webhookAuthHeaderName) {
|
|
889
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
890
|
+
}
|
|
891
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
892
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
893
|
+
}
|
|
894
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
895
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
896
|
+
}
|
|
897
|
+
if (this.params.redactPii !== undefined) {
|
|
898
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
899
|
+
}
|
|
900
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
901
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
902
|
+
}
|
|
903
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
904
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
877
905
|
}
|
|
878
906
|
if (this.params.llmGateway !== undefined) {
|
|
879
907
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
package/dist/deno.mjs
CHANGED
|
@@ -17,7 +17,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
17
17
|
defaultUserAgentString += navigator.userAgent;
|
|
18
18
|
}
|
|
19
19
|
const defaultUserAgent = {
|
|
20
|
-
sdk: { name: "JavaScript", version: "4.
|
|
20
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
21
21
|
};
|
|
22
22
|
if (typeof process !== "undefined") {
|
|
23
23
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -869,11 +869,39 @@ class StreamingTranscriber {
|
|
|
869
869
|
if (this.params.maxSpeakers !== undefined) {
|
|
870
870
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
871
871
|
}
|
|
872
|
-
if (this.params.
|
|
873
|
-
searchParams.set("
|
|
872
|
+
if (this.params.voiceFocus) {
|
|
873
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
874
874
|
}
|
|
875
|
-
if (this.params.
|
|
876
|
-
searchParams.set("
|
|
875
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
876
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
877
|
+
}
|
|
878
|
+
if (this.params.continuousPartials !== undefined) {
|
|
879
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
880
|
+
}
|
|
881
|
+
if (this.params.customerSupportAudioCapture) {
|
|
882
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
883
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
884
|
+
}
|
|
885
|
+
if (this.params.webhookUrl) {
|
|
886
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
887
|
+
}
|
|
888
|
+
if (this.params.webhookAuthHeaderName) {
|
|
889
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
890
|
+
}
|
|
891
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
892
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
893
|
+
}
|
|
894
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
895
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
896
|
+
}
|
|
897
|
+
if (this.params.redactPii !== undefined) {
|
|
898
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
899
|
+
}
|
|
900
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
901
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
902
|
+
}
|
|
903
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
904
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
877
905
|
}
|
|
878
906
|
if (this.params.llmGateway !== undefined) {
|
|
879
907
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
package/dist/index.cjs
CHANGED
|
@@ -63,7 +63,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
63
63
|
defaultUserAgentString += navigator.userAgent;
|
|
64
64
|
}
|
|
65
65
|
const defaultUserAgent = {
|
|
66
|
-
sdk: { name: "JavaScript", version: "4.
|
|
66
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
67
67
|
};
|
|
68
68
|
if (typeof process !== "undefined") {
|
|
69
69
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -959,11 +959,39 @@ class StreamingTranscriber {
|
|
|
959
959
|
if (this.params.maxSpeakers !== undefined) {
|
|
960
960
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
961
961
|
}
|
|
962
|
-
if (this.params.
|
|
963
|
-
searchParams.set("
|
|
962
|
+
if (this.params.voiceFocus) {
|
|
963
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
964
964
|
}
|
|
965
|
-
if (this.params.
|
|
966
|
-
searchParams.set("
|
|
965
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
966
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
967
|
+
}
|
|
968
|
+
if (this.params.continuousPartials !== undefined) {
|
|
969
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
970
|
+
}
|
|
971
|
+
if (this.params.customerSupportAudioCapture) {
|
|
972
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
973
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
974
|
+
}
|
|
975
|
+
if (this.params.webhookUrl) {
|
|
976
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
977
|
+
}
|
|
978
|
+
if (this.params.webhookAuthHeaderName) {
|
|
979
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
980
|
+
}
|
|
981
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
982
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
983
|
+
}
|
|
984
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
985
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
986
|
+
}
|
|
987
|
+
if (this.params.redactPii !== undefined) {
|
|
988
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
989
|
+
}
|
|
990
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
991
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
992
|
+
}
|
|
993
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
994
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
967
995
|
}
|
|
968
996
|
if (this.params.llmGateway !== undefined) {
|
|
969
997
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
package/dist/index.mjs
CHANGED
|
@@ -61,7 +61,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
61
61
|
defaultUserAgentString += navigator.userAgent;
|
|
62
62
|
}
|
|
63
63
|
const defaultUserAgent = {
|
|
64
|
-
sdk: { name: "JavaScript", version: "4.
|
|
64
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
65
65
|
};
|
|
66
66
|
if (typeof process !== "undefined") {
|
|
67
67
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -957,11 +957,39 @@ class StreamingTranscriber {
|
|
|
957
957
|
if (this.params.maxSpeakers !== undefined) {
|
|
958
958
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
959
959
|
}
|
|
960
|
-
if (this.params.
|
|
961
|
-
searchParams.set("
|
|
960
|
+
if (this.params.voiceFocus) {
|
|
961
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
962
962
|
}
|
|
963
|
-
if (this.params.
|
|
964
|
-
searchParams.set("
|
|
963
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
964
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
965
|
+
}
|
|
966
|
+
if (this.params.continuousPartials !== undefined) {
|
|
967
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
968
|
+
}
|
|
969
|
+
if (this.params.customerSupportAudioCapture) {
|
|
970
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
971
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
972
|
+
}
|
|
973
|
+
if (this.params.webhookUrl) {
|
|
974
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
975
|
+
}
|
|
976
|
+
if (this.params.webhookAuthHeaderName) {
|
|
977
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
978
|
+
}
|
|
979
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
980
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
981
|
+
}
|
|
982
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
983
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
984
|
+
}
|
|
985
|
+
if (this.params.redactPii !== undefined) {
|
|
986
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
987
|
+
}
|
|
988
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
989
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
990
|
+
}
|
|
991
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
992
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
965
993
|
}
|
|
966
994
|
if (this.params.llmGateway !== undefined) {
|
|
967
995
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
package/dist/node.cjs
CHANGED
|
@@ -22,7 +22,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
22
22
|
defaultUserAgentString += navigator.userAgent;
|
|
23
23
|
}
|
|
24
24
|
const defaultUserAgent = {
|
|
25
|
-
sdk: { name: "JavaScript", version: "4.
|
|
25
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
26
26
|
};
|
|
27
27
|
if (typeof process !== "undefined") {
|
|
28
28
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -868,11 +868,39 @@ class StreamingTranscriber {
|
|
|
868
868
|
if (this.params.maxSpeakers !== undefined) {
|
|
869
869
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
870
870
|
}
|
|
871
|
-
if (this.params.
|
|
872
|
-
searchParams.set("
|
|
871
|
+
if (this.params.voiceFocus) {
|
|
872
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
873
873
|
}
|
|
874
|
-
if (this.params.
|
|
875
|
-
searchParams.set("
|
|
874
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
875
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
876
|
+
}
|
|
877
|
+
if (this.params.continuousPartials !== undefined) {
|
|
878
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
879
|
+
}
|
|
880
|
+
if (this.params.customerSupportAudioCapture) {
|
|
881
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
882
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
883
|
+
}
|
|
884
|
+
if (this.params.webhookUrl) {
|
|
885
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
886
|
+
}
|
|
887
|
+
if (this.params.webhookAuthHeaderName) {
|
|
888
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
889
|
+
}
|
|
890
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
891
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
892
|
+
}
|
|
893
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
894
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
895
|
+
}
|
|
896
|
+
if (this.params.redactPii !== undefined) {
|
|
897
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
898
|
+
}
|
|
899
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
900
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
901
|
+
}
|
|
902
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
903
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
876
904
|
}
|
|
877
905
|
if (this.params.llmGateway !== undefined) {
|
|
878
906
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
package/dist/node.mjs
CHANGED
|
@@ -20,7 +20,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
20
20
|
defaultUserAgentString += navigator.userAgent;
|
|
21
21
|
}
|
|
22
22
|
const defaultUserAgent = {
|
|
23
|
-
sdk: { name: "JavaScript", version: "4.
|
|
23
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
24
24
|
};
|
|
25
25
|
if (typeof process !== "undefined") {
|
|
26
26
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -866,11 +866,39 @@ class StreamingTranscriber {
|
|
|
866
866
|
if (this.params.maxSpeakers !== undefined) {
|
|
867
867
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
868
868
|
}
|
|
869
|
-
if (this.params.
|
|
870
|
-
searchParams.set("
|
|
869
|
+
if (this.params.voiceFocus) {
|
|
870
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
871
871
|
}
|
|
872
|
-
if (this.params.
|
|
873
|
-
searchParams.set("
|
|
872
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
873
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
874
|
+
}
|
|
875
|
+
if (this.params.continuousPartials !== undefined) {
|
|
876
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
877
|
+
}
|
|
878
|
+
if (this.params.customerSupportAudioCapture) {
|
|
879
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
880
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
881
|
+
}
|
|
882
|
+
if (this.params.webhookUrl) {
|
|
883
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
884
|
+
}
|
|
885
|
+
if (this.params.webhookAuthHeaderName) {
|
|
886
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
887
|
+
}
|
|
888
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
889
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
890
|
+
}
|
|
891
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
892
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
893
|
+
}
|
|
894
|
+
if (this.params.redactPii !== undefined) {
|
|
895
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
896
|
+
}
|
|
897
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
898
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
899
|
+
}
|
|
900
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
901
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
874
902
|
}
|
|
875
903
|
if (this.params.llmGateway !== undefined) {
|
|
876
904
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
|
@@ -33,9 +33,18 @@ export type StreamingTranscriberParams = {
|
|
|
33
33
|
inactivityTimeout?: number;
|
|
34
34
|
speakerLabels?: boolean;
|
|
35
35
|
maxSpeakers?: number;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
voiceFocus?: VoiceFocusModel;
|
|
37
|
+
voiceFocusThreshold?: number;
|
|
38
|
+
continuousPartials?: boolean;
|
|
39
|
+
customerSupportAudioCapture?: boolean;
|
|
40
|
+
includePartialTurns?: boolean;
|
|
41
|
+
redactPii?: boolean;
|
|
42
|
+
redactPiiPolicies?: StreamingPiiPolicy[];
|
|
43
|
+
redactPiiSub?: StreamingPiiSubstitution;
|
|
38
44
|
llmGateway?: LLMGatewayConfig;
|
|
45
|
+
webhookUrl?: string;
|
|
46
|
+
webhookAuthHeaderName?: string;
|
|
47
|
+
webhookAuthHeaderValue?: string;
|
|
39
48
|
};
|
|
40
49
|
export type StreamingEvents = "open" | "close" | "turn" | "speechStarted" | "llmGatewayResponse" | "warning" | "error";
|
|
41
50
|
export type StreamingListeners = {
|
|
@@ -49,7 +58,9 @@ export type StreamingListeners = {
|
|
|
49
58
|
};
|
|
50
59
|
export type StreamingSpeechModel = "universal-streaming-english" | "universal-streaming-multilingual" | "u3-rt-pro" | "whisper-rt" | "u3-pro";
|
|
51
60
|
export type StreamingDomain = "medical-v1";
|
|
52
|
-
export type
|
|
61
|
+
export type VoiceFocusModel = "near-field" | "far-field";
|
|
62
|
+
export type StreamingPiiSubstitution = "hash" | "entity_name";
|
|
63
|
+
export type StreamingPiiPolicy = "account_number" | "banking_information" | "blood_type" | "credit_card_number" | "credit_card_expiration" | "credit_card_cvv" | "date" | "date_interval" | "date_of_birth" | "drivers_license" | "drug" | "duration" | "email_address" | "event" | "filename" | "gender_sexuality" | "gender" | "healthcare_number" | "injury" | "ip_address" | "language" | "location" | "marital_status" | "medical_condition" | "medical_process" | "money_amount" | "nationality" | "number_sequence" | "passport_number" | "password" | "person_age" | "person_name" | "phone_number" | "physical_attribute" | "political_affiliation" | "occupation" | "organization" | "organization_medical_facility" | "religion" | "sexuality" | "statistics" | "time" | "url" | "us_social_security_number" | "username" | "vehicle_id" | "zodiac_sign";
|
|
53
64
|
export type StreamingTokenParams = {
|
|
54
65
|
expires_in_seconds: number;
|
|
55
66
|
max_session_duration_seconds?: number;
|
|
@@ -85,6 +96,7 @@ export type StreamingWord = {
|
|
|
85
96
|
confidence: number;
|
|
86
97
|
text: string;
|
|
87
98
|
word_is_final: boolean;
|
|
99
|
+
speaker?: string;
|
|
88
100
|
};
|
|
89
101
|
export type TerminationEvent = {
|
|
90
102
|
type: "Termination";
|
package/dist/workerd.mjs
CHANGED
|
@@ -15,7 +15,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
15
15
|
defaultUserAgentString += navigator.userAgent;
|
|
16
16
|
}
|
|
17
17
|
const defaultUserAgent = {
|
|
18
|
-
sdk: { name: "JavaScript", version: "4.
|
|
18
|
+
sdk: { name: "JavaScript", version: "4.33.0" },
|
|
19
19
|
};
|
|
20
20
|
if (typeof process !== "undefined") {
|
|
21
21
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -871,11 +871,39 @@ class StreamingTranscriber {
|
|
|
871
871
|
if (this.params.maxSpeakers !== undefined) {
|
|
872
872
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
873
873
|
}
|
|
874
|
-
if (this.params.
|
|
875
|
-
searchParams.set("
|
|
874
|
+
if (this.params.voiceFocus) {
|
|
875
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
876
876
|
}
|
|
877
|
-
if (this.params.
|
|
878
|
-
searchParams.set("
|
|
877
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
878
|
+
searchParams.set("voice_focus_threshold", this.params.voiceFocusThreshold.toString());
|
|
879
|
+
}
|
|
880
|
+
if (this.params.continuousPartials !== undefined) {
|
|
881
|
+
searchParams.set("continuous_partials", this.params.continuousPartials.toString());
|
|
882
|
+
}
|
|
883
|
+
if (this.params.customerSupportAudioCapture) {
|
|
884
|
+
console.warn("`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.");
|
|
885
|
+
searchParams.set("customer_support_audio_capture", this.params.customerSupportAudioCapture.toString());
|
|
886
|
+
}
|
|
887
|
+
if (this.params.webhookUrl) {
|
|
888
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
889
|
+
}
|
|
890
|
+
if (this.params.webhookAuthHeaderName) {
|
|
891
|
+
searchParams.set("webhook_auth_header_name", this.params.webhookAuthHeaderName);
|
|
892
|
+
}
|
|
893
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
894
|
+
searchParams.set("webhook_auth_header_value", this.params.webhookAuthHeaderValue);
|
|
895
|
+
}
|
|
896
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
897
|
+
searchParams.set("include_partial_turns", this.params.includePartialTurns.toString());
|
|
898
|
+
}
|
|
899
|
+
if (this.params.redactPii !== undefined) {
|
|
900
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
901
|
+
}
|
|
902
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
903
|
+
searchParams.set("redact_pii_policies", JSON.stringify(this.params.redactPiiPolicies));
|
|
904
|
+
}
|
|
905
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
906
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
879
907
|
}
|
|
880
908
|
if (this.params.llmGateway !== undefined) {
|
|
881
909
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "assemblyai",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.33.0",
|
|
4
4
|
"description": "The AssemblyAI JavaScript SDK provides an easy-to-use interface for interacting with the AssemblyAI API, which supports async and real-time transcription, as well as the latest LeMUR models.",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18"
|
|
@@ -180,20 +180,74 @@ export class StreamingTranscriber {
|
|
|
180
180
|
searchParams.set("max_speakers", this.params.maxSpeakers.toString());
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
if (this.params.
|
|
183
|
+
if (this.params.voiceFocus) {
|
|
184
|
+
searchParams.set("voice_focus", this.params.voiceFocus);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (this.params.voiceFocusThreshold !== undefined) {
|
|
188
|
+
searchParams.set(
|
|
189
|
+
"voice_focus_threshold",
|
|
190
|
+
this.params.voiceFocusThreshold.toString(),
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (this.params.continuousPartials !== undefined) {
|
|
195
|
+
searchParams.set(
|
|
196
|
+
"continuous_partials",
|
|
197
|
+
this.params.continuousPartials.toString(),
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (this.params.customerSupportAudioCapture) {
|
|
202
|
+
console.warn(
|
|
203
|
+
"`customerSupportAudioCapture=true` will record session audio. Only enable this when explicitly coordinating with AssemblyAI support.",
|
|
204
|
+
);
|
|
205
|
+
searchParams.set(
|
|
206
|
+
"customer_support_audio_capture",
|
|
207
|
+
this.params.customerSupportAudioCapture.toString(),
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (this.params.webhookUrl) {
|
|
212
|
+
searchParams.set("webhook_url", this.params.webhookUrl);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
if (this.params.webhookAuthHeaderName) {
|
|
216
|
+
searchParams.set(
|
|
217
|
+
"webhook_auth_header_name",
|
|
218
|
+
this.params.webhookAuthHeaderName,
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (this.params.webhookAuthHeaderValue) {
|
|
184
223
|
searchParams.set(
|
|
185
|
-
"
|
|
186
|
-
this.params.
|
|
224
|
+
"webhook_auth_header_value",
|
|
225
|
+
this.params.webhookAuthHeaderValue,
|
|
187
226
|
);
|
|
188
227
|
}
|
|
189
228
|
|
|
190
|
-
if (this.params.
|
|
229
|
+
if (this.params.includePartialTurns !== undefined) {
|
|
191
230
|
searchParams.set(
|
|
192
|
-
"
|
|
193
|
-
this.params.
|
|
231
|
+
"include_partial_turns",
|
|
232
|
+
this.params.includePartialTurns.toString(),
|
|
194
233
|
);
|
|
195
234
|
}
|
|
196
235
|
|
|
236
|
+
if (this.params.redactPii !== undefined) {
|
|
237
|
+
searchParams.set("redact_pii", this.params.redactPii.toString());
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
if (this.params.redactPiiPolicies !== undefined) {
|
|
241
|
+
searchParams.set(
|
|
242
|
+
"redact_pii_policies",
|
|
243
|
+
JSON.stringify(this.params.redactPiiPolicies),
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (this.params.redactPiiSub !== undefined) {
|
|
248
|
+
searchParams.set("redact_pii_sub", this.params.redactPiiSub);
|
|
249
|
+
}
|
|
250
|
+
|
|
197
251
|
if (this.params.llmGateway !== undefined) {
|
|
198
252
|
searchParams.set("llm_gateway", JSON.stringify(this.params.llmGateway));
|
|
199
253
|
}
|
|
@@ -36,9 +36,18 @@ export type StreamingTranscriberParams = {
|
|
|
36
36
|
inactivityTimeout?: number;
|
|
37
37
|
speakerLabels?: boolean;
|
|
38
38
|
maxSpeakers?: number;
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
voiceFocus?: VoiceFocusModel;
|
|
40
|
+
voiceFocusThreshold?: number;
|
|
41
|
+
continuousPartials?: boolean;
|
|
42
|
+
customerSupportAudioCapture?: boolean;
|
|
43
|
+
includePartialTurns?: boolean;
|
|
44
|
+
redactPii?: boolean;
|
|
45
|
+
redactPiiPolicies?: StreamingPiiPolicy[];
|
|
46
|
+
redactPiiSub?: StreamingPiiSubstitution;
|
|
41
47
|
llmGateway?: LLMGatewayConfig;
|
|
48
|
+
webhookUrl?: string;
|
|
49
|
+
webhookAuthHeaderName?: string;
|
|
50
|
+
webhookAuthHeaderValue?: string;
|
|
42
51
|
};
|
|
43
52
|
|
|
44
53
|
export type StreamingEvents =
|
|
@@ -69,7 +78,58 @@ export type StreamingSpeechModel =
|
|
|
69
78
|
|
|
70
79
|
export type StreamingDomain = "medical-v1";
|
|
71
80
|
|
|
72
|
-
export type
|
|
81
|
+
export type VoiceFocusModel = "near-field" | "far-field";
|
|
82
|
+
|
|
83
|
+
export type StreamingPiiSubstitution = "hash" | "entity_name";
|
|
84
|
+
|
|
85
|
+
export type StreamingPiiPolicy =
|
|
86
|
+
| "account_number"
|
|
87
|
+
| "banking_information"
|
|
88
|
+
| "blood_type"
|
|
89
|
+
| "credit_card_number"
|
|
90
|
+
| "credit_card_expiration"
|
|
91
|
+
| "credit_card_cvv"
|
|
92
|
+
| "date"
|
|
93
|
+
| "date_interval"
|
|
94
|
+
| "date_of_birth"
|
|
95
|
+
| "drivers_license"
|
|
96
|
+
| "drug"
|
|
97
|
+
| "duration"
|
|
98
|
+
| "email_address"
|
|
99
|
+
| "event"
|
|
100
|
+
| "filename"
|
|
101
|
+
| "gender_sexuality"
|
|
102
|
+
| "gender"
|
|
103
|
+
| "healthcare_number"
|
|
104
|
+
| "injury"
|
|
105
|
+
| "ip_address"
|
|
106
|
+
| "language"
|
|
107
|
+
| "location"
|
|
108
|
+
| "marital_status"
|
|
109
|
+
| "medical_condition"
|
|
110
|
+
| "medical_process"
|
|
111
|
+
| "money_amount"
|
|
112
|
+
| "nationality"
|
|
113
|
+
| "number_sequence"
|
|
114
|
+
| "passport_number"
|
|
115
|
+
| "password"
|
|
116
|
+
| "person_age"
|
|
117
|
+
| "person_name"
|
|
118
|
+
| "phone_number"
|
|
119
|
+
| "physical_attribute"
|
|
120
|
+
| "political_affiliation"
|
|
121
|
+
| "occupation"
|
|
122
|
+
| "organization"
|
|
123
|
+
| "organization_medical_facility"
|
|
124
|
+
| "religion"
|
|
125
|
+
| "sexuality"
|
|
126
|
+
| "statistics"
|
|
127
|
+
| "time"
|
|
128
|
+
| "url"
|
|
129
|
+
| "us_social_security_number"
|
|
130
|
+
| "username"
|
|
131
|
+
| "vehicle_id"
|
|
132
|
+
| "zodiac_sign";
|
|
73
133
|
|
|
74
134
|
export type StreamingTokenParams = {
|
|
75
135
|
expires_in_seconds: number;
|
|
@@ -112,6 +172,7 @@ export type StreamingWord = {
|
|
|
112
172
|
confidence: number;
|
|
113
173
|
text: string;
|
|
114
174
|
word_is_final: boolean;
|
|
175
|
+
speaker?: string;
|
|
115
176
|
};
|
|
116
177
|
|
|
117
178
|
export type TerminationEvent = {
|