> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zeroruntime.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Sarvamai

> JavaScript API reference for the sarvamai text-to-speech plugin.

## SarvamAITTS

Sarvam AI text-to-speech (TTS) synthesizer.

### Constructor

```typescript theme={null}
new SarvamAITTS(opts: SarvamAITTSOptions)
```

<ParamField path="apiKey" type="string">
  Sarvam AI API key. Defaults to the `SARVAM_API_KEY` environment variable.
</ParamField>

<ParamField path="model" type="SarvamAITTSModel | string">
  TTS model id. Default `'bulbul:v3'`.
</ParamField>

<ParamField path="language" type="string">
  Language code. Default `'en-IN'`.
</ParamField>

<ParamField path="speaker" type="string">
  Speaker/voice id. Default `'shubh'`.
</ParamField>

<ParamField path="streaming" type="boolean">
  Stream audio as it is synthesized. Default `true`.
</ParamField>

<ParamField path="sampleRate" type="number">
  Output audio sample rate in Hz. Default `24000`.
</ParamField>

<ParamField path="outputAudioCodec" type="string">
  Output audio codec.
</ParamField>

<ParamField path="pitch" type="number | null">
  Pitch adjustment. Default `0.0`.
</ParamField>

<ParamField path="pace" type="number | null">
  Speaking pace multiplier. Default `1.0`.
</ParamField>

<ParamField path="loudness" type="number | null">
  Loudness multiplier. Default `1.0`.
</ParamField>

<ParamField path="temperature" type="number | null">
  Sampling temperature. Default `0.6`.
</ParamField>

<ParamField path="bitrate" type="string">
  Output audio bitrate. Default `'128k'`.
</ParamField>

<ParamField path="minBufferSize" type="number">
  Minimum buffer size before emitting audio.
</ParamField>

<ParamField path="maxChunkLength" type="number">
  Maximum characters per synthesis chunk.
</ParamField>

<ParamField path="preprocessing" type="boolean">
  Enable text preprocessing/normalization. Default `false`.
</ParamField>

### close

```typescript theme={null}
close(): Promise<void>
```

Release any resources held by the provider.

### closeEmitter

```typescript theme={null}
closeEmitter(): Promise<void>
```

Close the emitter: drop all handlers and stop emitting. Waits up to 2 seconds
for in-flight async handlers to settle before returning.

### emit

```typescript theme={null}
emit(event: string, ...args: any[]): void
```

<ParamField path="event" type="string" required />

### getRuntimeConfig

```typescript theme={null}
getRuntimeConfig(): Record<string, any>
```

<ResponseField name="returns" type="Record<string, any>" />

### interrupt

```typescript theme={null}
interrupt(): Promise<void>
```

Stop the current synthesis.

### listenerCount

```typescript theme={null}
listenerCount(event: string): number
```

<ParamField path="event" type="string" required />

<ResponseField name="returns" type="number" />

### off

```typescript theme={null}
off(event: string, handler: EventHandler): void
```

<ParamField path="event" type="string" required />

<ParamField path="handler" type="EventHandler" required />

### on

```typescript theme={null}
on(event: string, handler: EventHandler): EventHandler
```

<ParamField path="event" type="string" required />

<ParamField path="handler" type="EventHandler" required />

<ResponseField name="returns" type="EventHandler" />

### once

```typescript theme={null}
once(event: string, handler: EventHandler): EventHandler
```

<ParamField path="event" type="string" required />

<ParamField path="handler" type="EventHandler" required />

<ResponseField name="returns" type="EventHandler" />

### onFirstAudioByte

```typescript theme={null}
onFirstAudioByte(callback: FirstAudioByteCallback): void
```

Register a callback fired when the first synthesized audio byte is emitted.

<ParamField path="callback" type="FirstAudioByteCallback" required />

### removeAllListeners

```typescript theme={null}
removeAllListeners(event?: string): void
```

<ParamField path="event" type="string" />

### synthesize

```typescript theme={null}
synthesize(text: any, ..._extra: any[]): Promise<void>
```

Synthesize and speak `text` on the active session.

<ParamField path="text" type="any" required />

***

## SarvamAITTSModel

Supported Sarvam AI TTS model names.

```typescript theme={null}
type SarvamAITTSModel = 'bulbul:v3' | 'bulbul:v2'
```
