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:v1、saarika:v1、saarika:v2及saarika:flash,現已不再支援。TTS 請使用bulbul:v3(或bulbul:v2),STT 則請使用saarika:v2.5(或saaras:v3)。 bulbul:v2與bulbul:v3的講者名稱不可互換。每個模型版本均有各自的講者目錄。