export IRIS_SDK_TOKEN=<INSERT YOUR TOKEN HERE>
npm install https://sdk.iris.audio/assets/iris-web-sdk/1.1.0/irisaudiotechnologies-iris-web-sdk-1.1.0.tgz\?token\=$IRIS_SDK_TOKEN
Make sure you have obtained a valid licence and key.
Do your best to keep the licence and key safe. We recommend fetching them from a server after a user has logged in.
Do not publish these files to the public.
Before you use the SDK there needs to be a small amount of setup. Unlike other implementations of the IRIS SDK, when running on the web we need to load certain js files at runtime in accordance with this pattern. This means that these files need to be accessible from the frontend and should live in the public directory.
The steps are summarised below but we also have a [script](# setup-wizard) to make it simpler.
The simplest way to get up-and-running in your frontend projects is to use our
Setup Wizard. If you have installed with NPM
you should be able to call the
following:
npx @irisaudiotechnologies/iris-web-sdk setup-wizard
Alternatively, the wizard can be found in the scripts directory of the installed
package. Usually: ./node_modules/@irisaudiotechnologies/iris-web-sdk/dist/scripts/setup-wizard.mjs
iris-awp
directory from the installed dir (usually
./node_modules/@irisaudiotechnologies/iris-web-sdk/iris-awp
to the public folder. The files in this directory
need to be accessible from the frontend at runtime. It follows
this
patternmv ./node_modules/@irisaudiotechnologies/iris-web-sdk/iris-awp ./public/iris-awp
curl -O https://sdk.iris.audio/assets/js/iris-sdk-3.0.0.tgz?token=$IRIS_SDK_TOKEN
tar -xvzf iris-sdk-*.tgz
package
to the iris-awp
dir, renaming it to
iris-sdk-wasm
, e.g. ./public/iris-awp/iris-sdk-wasm
.mv ./package ./public/iris-awp/iris-sdk-wasm
public/
├── iris-awp/
│ ├── iris-awp.js
│ ├── iris-base-awp.js
└── iris-sdk-wasm/
└── dist/
└── utils/
const config = {
audioWorkletPath: 'PATH/TO/iris-awp/iris-awp.js', // REQUIRED
company: '<COMPANY_ID>', // REQUIRED
key: '<IRIS_SDK_KEY>', // REQUIRED
license: '<IRIS_SDK_LICENCE>', // REQUIRED
team: '<TEAM_ID>', // REQUIRED
user: '<USER_ID>', // REQUIRED
model: 'clarity'
};
const iris = new IrisSetup(config);
This has to be done with a click event, usually at login.
const audioCtx = new AudioContext();
await iris.init(audioCtx);
iris.connectSendStream returns a new MediaStream
which you can connect anywhere.
const processedLocalStream = iris.connectSendStream(localStream);
iris.connectReceiveStream returns a new MediaStream
which you can connect anywhere.
const processedRemoteStream = iris.connectReceiveStream(remoteStream);
The IRIS Web SDK is initialised asynchronously in the audio worklet thread. We have two ways to know when it has succeeded.
iris.options.onReady = () => {
// Do something here
console.log('iris activated');
}
document.addEventListener(
'iris-activated',
(event: CustomEvent<IrisActiveEvent>) => {
const { irisLoaded } = event.detail;
if (irisLoaded) {
// Do something here
console.log('iris activated');
}
})
iris.start();
iris.crossFade(1, 'send'); // turn processing on for the send (mic) stream
iris.crossFade(0, 'receive'); // turn processing on for the receive (speaker) stream
iris.setMixLevelMic(0.5); // mic
iris.setMixLevelSpeaker(0.5); // speaker
iris.stop();
Return the setup options. Settable. Full list of options is [below](### Setup Options)
iris.options
Return the processor options.
iris.parameters
Return the latest noise analytics data.
iris.analyticsData
Option | Required | Default | Type | Description |
---|---|---|---|---|
audioWorkletPath | yes | N/A | string | The path to iris-awp/iris-awp.js relative to the public dir. |
key | yes | N/A | string | The contents of your .key file as a string. |
license | yes | N/A | string | The contents of your .lic file as a string. |
company | yes | N/A | string | The name of the company/organisation that purchased a licence. |
team | yes | N/A | string | The name of the team or client under the company. |
user | yes | N/A | string | The name of the individual user. |
audioAnalytics | no | false | boolean | Enable realtime audio analytics. Potentially increases CPU. |
analyticsReportingInterval | no | 200 | number // value in milliseconds | If enabled, how often should audio analytics be reported. |
eventDetection | no | false | boolean | If you have SED in your licence and are using a 48k model, do you want to detect audio events? |
loggingLevel | no | 1 | number | How much information do you want the SDK to log? 0=none, 1=minimal, 2=verbose, 3=verbose with timestamps. |
logger | no | (...message: Parameters<typeof console.log>) => console.log(...message) |
function | Provide a function to control how messages from the SDK are logged. |
mic | no | false | boolean | Startup state for processing on the mic, ie send stream. |
micMix | no | 0.9 | number // 0.0 - 1.0 | Startup wet/dry mix of the mic. |
model | no | 'clarity' | string | The IRIS model to use. |
numStreams | no | 1 | number | The number of instances of IRIS to use. |
sampleRate | no | 48000 | number | The default sample rate |
speaker | no | false | boolean | Startup state for processing on the speaker, ie receive stream. Only used if numStreams > 1. |
speakerMix | no | 0.7 | number // 0.0 - 1.0 | Startup wet/dry mix of the speaker. Only used if numStreams > 1. |
onReady | no | (success: boolean) => console.log( IRIS Web SDK: activated, success); |
function | The callback function that returns true after the SDK has been successfully initialised, false if there is another error. |