Docs Components Assistant

VoiceControl

React example follows below.
ts
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceControl } from "@grassroot/ui-react/assistant";
const session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
export default function VoiceControlDemo() {
return <VoiceControl session={session} />;
}
ts
<script setup lang="ts">
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceControl } from "@grassroot/ui-vue/assistant";
const session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
</script>
<template>
<VoiceControl :session="session" />
</template>
ts
import "./ensure-compiler";
import { ChangeDetectionStrategy, Component } from "@angular/core";
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { GrassrootVoiceControl } from "@grassroot/ui-angular/assistant";
@Component({
selector: "app-voice-control-demo",
standalone: true,
imports: [GrassrootVoiceControl],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `<grassroot-voice-control [session]="session" />`,
})
export class VoiceControlDemoComponent {
protected readonly session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
}
export default VoiceControlDemoComponent;
ts
<script lang="ts">
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceControl } from "@grassroot/ui-svelte/assistant";
const session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
</script>
<VoiceControl {session} />
ts
/** @jsxImportSource solid-js */
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceControl } from "@grassroot/ui-solid/assistant";
const session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
export default function VoiceControlDemo() {
return <VoiceControl session={session} />;
}

Installation

API Reference

Import

import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceControl } from "@grassroot/ui-react/assistant";

Props

Prop
Type
Default
Requirement
session
{ readonly start: () => Promise<void>; readonly connect: () => Promise<void>; readonly disconnect: () => Promise<void>; readonly end: (reason: import("@grassroot/ui-machines/voice-session").VoiceSessionEndReason, error?: unknown) => void; readonly setMuted: (muted: boolean) => void; readonly setMode: (mode: import("@grassroot/ui-machines/voice-session").VoiceSessionMode) => void; readonly getState: () => import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot; readonly subscribe: (listener: (snapshot: import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot, previous: import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot) => void) => () => void; readonly subscribeTranscript: (listener: (item: import("@grassroot/assistant/adapters/voice").VoiceTranscriptItem) => void) => () => void; readonly subscribeVoiceVolume: (listener: (volume: number) => void) => () => void; readonly publishTranscript: (item: import("@grassroot/assistant/adapters/voice").VoiceTranscriptItem) => void; readonly publishVoiceVolume: (volume: number) => void; }
—
required
Prop
session
Type
{ readonly start: () => Promise<void>; readonly connect: () => Promise<void>; readonly disconnect: () => Promise<void>; readonly end: (reason: import("@grassroot/ui-machines/voice-session").VoiceSessionEndReason, error?: unknown) => void; readonly setMuted: (muted: boolean) => void; readonly setMode: (mode: import("@grassroot/ui-machines/voice-session").VoiceSessionMode) => void; readonly getState: () => import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot; readonly subscribe: (listener: (snapshot: import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot, previous: import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot) => void) => () => void; readonly subscribeTranscript: (listener: (item: import("@grassroot/assistant/adapters/voice").VoiceTranscriptItem) => void) => () => void; readonly subscribeVoiceVolume: (listener: (volume: number) => void) => () => void; readonly publishTranscript: (item: import("@grassroot/assistant/adapters/voice").VoiceTranscriptItem) => void; readonly publishVoiceVolume: (volume: number) => void; }
Default
—
Requirement
required

Content regions

  • startLabel

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceControl } from "@grassroot/ui-vue/assistant";

Props

Prop
Type
Default
Requirement
session
VoiceSession
—
required
startLabel
string
"Connect voice"
optional
Prop
session
Type
VoiceSession
Default
—
Requirement
required
Prop
startLabel
Type
string
Default
"Connect voice"
Requirement
optional

Import

import "./ensure-compiler";
import { ChangeDetectionStrategy, Component } from "@angular/core";
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { GrassrootVoiceControl } from "@grassroot/ui-angular/assistant";

Props

Prop
Type
Default
Requirement
session
VoiceSession
—
required
startLabel
string
"Connect voice"
optional
Prop
session
Type
VoiceSession
Default
—
Requirement
required
Prop
startLabel
Type
string
Default
"Connect voice"
Requirement
optional

Import

import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceControl } from "@grassroot/ui-svelte/assistant";

Props

Prop
Type
Default
Requirement
session
VoiceSession
—
required
startLabel
string
"Connect voice"
optional
Prop
session
Type
VoiceSession
Default
—
Requirement
required
Prop
startLabel
Type
string
Default
"Connect voice"
Requirement
optional

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceControl } from "@grassroot/ui-solid/assistant";

Props

Prop
Type
Default
Requirement
session
VoiceSession
—
required
Prop
session
Type
VoiceSession
Default
—
Requirement
required

Content regions

  • startLabel

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.