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 變體,兩者共用相同的 speaker 目錄。注意: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'
輸出音訊 codec。
speaker?:
SarvamVoiceId
= 'shubh'
輸出音訊所使用的 speaker。預設為 '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)。不同模型版本的 speaker 無法互換。
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之間無法互換 speaker 名稱。每個模型版本都有自己的 speaker 目錄。