跳至主要內容

Sarvam

Mastra 的 SarvamVoice 類別使用 Sarvam AI 模型提供文字轉語音及語音轉文字功能。

使用範例
使用範例 的直接連結

import { SarvamVoice } from '@mastra/voice-sarvam'

// Initialize with default configuration using environment variables
const voice = new SarvamVoice()

// Or initialize with specific configuration
const voiceWithConfig = new SarvamVoice({
speechModel: {
model: 'bulbul:v3',
apiKey: process.env.SARVAM_API_KEY!,
language: 'en-IN',
properties: {
pace: 1.0,
temperature: 0.6,
speech_sample_rate: 24000,
output_audio_codec: 'wav',
},
},
listeningModel: {
model: 'saarika:v2.5',
apiKey: process.env.SARVAM_API_KEY!,
languageCode: 'en-IN',
filetype: 'wav',
},
speaker: 'shubh', // Default voice for bulbul:v3
})

// Convert text to speech
const audioStream = await voice.speak('Hello, how can I help you?')

// Convert speech to text
const text = await voice.listen(audioStream, {
filetype: 'wav',
})

Sarvam API 文件
Sarvam API 文件 的直接連結

https://docs.sarvam.ai/api-reference-docs/text-to-speech/convert

配置
配置 的直接連結

建構函數選項
建構函數選項 的直接連結

speechModel?:

SarvamVoiceConfig
= { model: 'bulbul:v3', language: 'en-IN' }
文字轉語音合成的配置。
SarvamVoiceConfig

apiKey?:

string
Sarvam API 金鑰。未設定時會改用 SARVAM_API_KEY 環境變數。

model?:

SarvamTTSModel
指定文字轉語音所使用的模型。可用選項:bulbul:v2、bulbul:v3、bulbul:v3-beta。bulbul:v3-beta 是 bulbul:v3 的 beta 變體,兩者共用相同的講者目錄。注意:Sarvam 已棄用 bulbul:v1,現已不再支援。

language:

SarvamTTSLanguage
語音合成的目標語言。可用選項:hi-IN、bn-IN、kn-IN、ml-IN、mr-IN、od-IN、pa-IN、ta-IN、te-IN、en-IN、gu-IN

properties?:

object
用於自訂的額外語音屬性。

properties.pace?:

number
控制音訊速度。bulbul:v2(範圍 0.3–3.0)及 bulbul:v3(範圍 0.5–2.0)均支援。

properties.temperature?:

number
控制所產生語音隨機程度的取樣溫度。只適用於 bulbul:v3。範圍:0.01–2.0。預設值:0.6。

properties.dict_id?:

string
發音字典 ID。只適用於 bulbul:v3。

properties.pitch?:

number
控制音訊音高。數值較低會令聲音較低沉,數值較高則會令聲音較尖銳。只適用於 bulbul:v2。範圍:-0.75 至 0.75。

properties.loudness?:

number
控制音訊音量。只適用於 bulbul:v2。範圍:0.3 至 3.0。

properties.enable_preprocessing?:

boolean
啟用英文詞語及數值實體(數字、日期等)的標準化。只適用於 bulbul:v2。預設值為 false。

properties.speech_sample_rate?:

8000 | 16000 | 22050 | 24000 | 32000 | 44100 | 48000
以 Hz 為單位的音訊取樣率。

properties.output_audio_codec?:

'mp3' | 'wav' | 'linear16' | 'mulaw' | 'alaw' | 'opus' | 'flac' | 'aac'
輸出音訊編解碼器。

speaker?:

SarvamVoiceId
= 'shubh'
輸出音訊所使用的講者。預設為 'shubh'。bulbul:v3 支援 39 種語音(shubh、aditya、ritu、priya、neha、rahul、pooja、rohan、simran、kavya、amit、dev、ishita、shreya、ratan、varun、manan、sumit、roopa、kabir、aayan、ashutosh、advait、amelia、sophia、anand、tanya、tarun、sunny、mani、gokul、vijay、shruti、suhani、mohit、kavitha、rehan、soham、rupali)。bulbul:v2 支援 7 種語音(anushka、manisha、vidya、arya、abhilash、karun、hitesh)。不同模型版本的講者不可互換。

listeningModel?:

SarvamListenOptions
= { model: 'saarika:v2.5', languageCode: 'unknown' }
語音轉文字辨識的配置。
SarvamListenOptions

apiKey?:

string
Sarvam API 金鑰。未設定時會改用 SARVAM_API_KEY 環境變數。

model?:

SarvamSTTModel
指定語音轉文字所使用的模型。可用選項:saarika:v2.5(轉錄)、saaras:v3(多模式:transcribe/translate/verbatim/translit/codemix)。注意:Sarvam 已棄用 saarika:v1、saarika:v2 及 saarika:flash。

languageCode?:

SarvamSTTLanguage
輸入音訊的 BCP-47 語言代碼。saarika:v2.5 及 saaras:v3 可選填(傳入 'unknown' 時,API 會自動偵測語言)。可用選項:unknown、hi-IN、bn-IN、kn-IN、ml-IN、mr-IN、od-IN、pa-IN、ta-IN、te-IN、en-IN、gu-IN。

filetype?:

'mp3' | 'wav'
輸入串流的音訊格式。

mode?:

SarvamSTTMode
操作模式。只在使用 saaras:v3 模型時有效;saarika:v2.5 會忽略此選項。可用選項:'transcribe'、'translate'、'verbatim'、'translit'、'codemix'。

方法
方法 的直接連結

speak()
speak 的直接連結

使用 Sarvam 的文字轉語音模型,將文字轉換為語音。

input:

string | NodeJS.ReadableStream
要轉換成語音的文字或文字串流。

options?:

Options
配置選項。
Options

speaker?:

SarvamVoiceId
用於語音合成的語音 ID。

傳回:Promise<NodeJS.ReadableStream>

listen()
listen 的直接連結

使用 Sarvam 的語音辨識模型轉錄音訊。

input:

NodeJS.ReadableStream
要轉錄的音訊串流。

options?:

SarvamListenOptions
語音辨識的配置選項。

傳回:Promise<string>

getSpeakers()
getspeakers 的直接連結

傳回可用的語音選項陣列。

傳回:Promise<Array<{voiceId: SarvamVoiceId}>>

備註
備註 的直接連結

  • 可透過建構函數選項或 SARVAM_API_KEY 環境變數提供 API 金鑰
  • 如沒有提供 API 金鑰,建構函數會拋出錯誤
  • 服務透過 https://api.sarvam.ai 與 Sarvam AI API 通訊
  • 音訊會以包含二進制音訊資料的串流形式傳回
  • 語音辨識支援 mp3 及 wav 音訊格式
  • Sarvam 已棄用 bulbul:v1saarika:v1saarika:v2saarika:flash,現已不再支援。TTS 請使用 bulbul:v3(或 bulbul:v2),STT 則請使用 saarika:v2.5(或 saaras:v3)。
  • bulbul:v2bulbul:v3 的講者名稱不可互換。每個模型版本均有各自的講者目錄。