1.0.37 • Published 10 months ago

teacher-ai v1.0.37

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

Teacher

Module for control AI Teacher

Install

npm install teacher-ai

Usage

In teacher-ai module you have two main entities

Class with business logic

import { Avatar } from "teacher-ai";

const teacher = new Teacher(token, agentId);

React component with view

import { Avatar } from "teacher-ai";

<Avatar teacher={teacher} />;

API

Teacher

const teacher = new Teacher(token, agentId);

Also teacher has three main subclasses for control

const teacher = new Teacher(token, agentId);

teacher.audioManager;
teacher.microphoneManager;
teacher.socketManager;

Run current session with selected microphone. If you don't put value it will use default one

teacher.start({ microphoneId });
teacher.start(); // microphoneId: default

Class responsible for microphone handling

teacher.microphoneManager;

Subscribe on microphone events. Be careful it is so frequent action and use debounce to avoid performance issues

interface MicrophoneEvents {
  audio: Float32Array;
  volume: number; // float range:  0 - 1
}

const event: (data: MicrophoneEvents) => void = (data) => {};

teacher.microphoneManager.subscribeToEvents(event);

To get a list of microphones, you can use this method

const microphones = await teacher.microphoneManager.getMicrophones();

To mute/unmute microphone

teacher.microphoneManager.mute();
teacher.microphoneManager.unmute();

To get AudioContext for microphone Available after teacher.start()

const audioContext = teacher.microphoneManager.audioContext;

Remove current session

teacher.stop();

Class responsible for socket connection and handling

teacher.socketManager;

To get socket instance. Available after socketManager.open()

teacher.socketManager.socket;

To open/close socket connection

await teacher.socketManager.open();
teacher.socketManager.close(); // teacher.socketManager.socket === undefined

Subscribe on messages from bot

type MessageType = {
  text: string;
  type: "bot" | "human";
  id: number;
};
const event: (data: MessageType) => void = (data) => {};

teacher.socketManager.subscribeToEvents(event);

Class responsible for audio handling

teacher.audioManager;

To get AudioContext for speaker. Available after teacher.start()

const audioContext = teacher.audioManager.audioContext;

To control the volume of playing audio.

const audioContext = teacher.audioManager.setVolume(1); // range: -1 - 1

Subscribe on audio events

enum AudioStatus {
  PLAYING = "playing",
  AUDIO_FINISHED = "audio_finished",
  QUEUE_FINISHED = "stopped",
}

interface AudioEvents {
  status: AudioStatus;
  source?: AudioBufferSourceNode;
}

const event: (data: AudioEvents) => void = (data) => {};

teacher.audioManager.subscribeToEvents(event);

React

For the avatar to work you need to pass in Teacher and ref to control the state of the avatar

const ref = useRef("idle") // hello, gesture1, thumbsUP, surprised, laugh

<Avatar controlRef={ref} teacher={teacher} />

With ref you can control the avatar's emotions and behaviour, also the Teacher will control it.

For example, let's make the avatar laugh

const ref = useRef("idle")

const handleSmile = () => ref.current = "laugh"

<button onClick={handleSmile}>make smile</button>
<Avatar controlRef={ref} teacher={teacher} />

For more detailed avatar customisation, the following options are also available to you

const params = { x: 0, y: -2, z: -3, dpr: 2 }

<Avatar controlRef={ref} teacher={teacher} params={params} />
1.0.37

10 months ago

1.0.36

10 months ago

1.0.35

10 months ago

1.0.34

11 months ago

1.0.19

1 year ago

1.0.2

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.22

1 year ago

1.0.21

1 year ago

1.0.20

1 year ago

1.0.26

1 year ago

1.0.25

1 year ago

1.0.24

1 year ago

1.0.23

1 year ago

1.0.29

1 year ago

1.0.28

1 year ago

1.0.27

1 year ago

1.0.33

1 year ago

1.0.11

1 year ago

1.0.32

1 year ago

1.0.10

1 year ago

1.0.31

1 year ago

1.0.30

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago