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 key。未设置时使用 SARVAM_API_KEY 环境变量。
model?:
SarvamTTSModel
指定用于文本转语音的模型。可用选项:bulbul:v2、bulbul:v3、bulbul:v3-beta。bulbul:v3-beta 是 bulbul:v3 的 beta 变体,两者共享同一个 speaker 目录。注意:bulbul:v1 已被 Sarvam 弃用,不再受支持。
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'
用于输出音频的 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 key。未设置时使用 SARVAM_API_KEY 环境变量。
model?:
SarvamSTTModel
指定用于语音转文本的模型。可用选项:saarika:v2.5(转录)、saaras:v3(多模式:transcribe/translate/verbatim/translit/codemix)。注意:saarika:v1、saarika:v2 和 saarika:flash 已被 Sarvam 弃用。
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 key - 如果未提供 API key,构造函数会抛出错误
- 该服务通过
https://api.sarvam.ai与 Sarvam AI API 通信 - 音频以包含二进制音频数据的流形式返回
- 语音识别支持 mp3 和 wav 音频格式
bulbul:v1、saarika:v1、saarika:v2和saarika:flash已被 Sarvam 弃用,不再受支持。TTS 请使用bulbul:v3(或bulbul:v2),STT 请使用saarika:v2.5(或saaras:v3)。bulbul:v2和bulbul:v3之间的 speaker 名称不可互换。每个模型版本都有自己的 speaker 目录。