> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 사르밤 Mastra의 SarvamVoice 클래스는 Sarvam AI Model을 사용하여 텍스트 음성 변환 및 음성 텍스트 변환 기능을 제공합니다. ## 사용예 ```typescript 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 문서 - ## 구성 ### 생성자 옵션 **speechModel** (`SarvamVoiceConfig`): 텍스트-음성 합성을 위한 구성입니다. (Default: `{ model: 'bulbul:v3', language: 'en-IN' }`) **speechModel.apiKey** (`string`): Sarvam API 키입니다. 지정하지 않으면 SARVAM\_API\_KEY 환경 변수를 사용합니다. **speechModel.model** (`SarvamTTSModel`): 텍스트-음성 변환에 사용할 Model을 지정합니다. 사용 가능한 옵션: bulbul:v2, bulbul:v3, bulbul:v3-beta. bulbul:v3-beta는 bulbul:v3와 동일한 화자 카탈로그를 공유하는 베타 변형입니다. 참고: Sarvam에서 bulbul:v1을 지원 중단했으며 더 이상 지원되지 않습니다. **speechModel.language** (`SarvamTTSLanguage`): 음성 합성의 대상 언어입니다. 사용 가능한 옵션: hi-IN, bn-IN, kn-IN, ml-IN, mr-IN, od-IN, pa-IN, ta-IN, te-IN, en-IN, gu-IN **speechModel.properties** (`object`): 사용자 정의를 위한 추가 음성 속성입니다. **speechModel.properties.pace** (`number`): 오디오 속도를 제어합니다. bulbul:v2(범위 0.3–3.0)와 bulbul:v3(범위 0.5–2.0)에서 모두 지원됩니다. **speechModel.properties.temperature** (`number`): 생성되는 음성의 무작위성을 제어하는 샘플링 온도입니다. bulbul:v3에서만 사용할 수 있습니다. 범위: 0.01–2.0. 기본값: 0.6. **speechModel.properties.dict\_id** (`string`): 발음 사전 ID입니다. bulbul:v3에서만 사용할 수 있습니다. **speechModel.properties.pitch** (`number`): 오디오의 피치를 제어합니다. 값이 낮을수록 더 깊은 음성이 생성되고, 높을수록 더 날카로운 음성이 생성됩니다. bulbul:v2에서만 사용할 수 있습니다. 범위: -0.75\~0.75. **speechModel.properties.loudness** (`number`): 오디오의 음량을 제어합니다. bulbul:v2에서만 사용할 수 있습니다. 범위: 0.3\~3.0. **speechModel.properties.enable\_preprocessing** (`boolean`): 영어 단어와 숫자 엔터티(숫자, 날짜 등)의 정규화를 활성화합니다. bulbul:v2에서만 사용할 수 있습니다. 기본값은 false입니다. **speechModel.properties.speech\_sample\_rate** (`8000 | 16000 | 22050 | 24000 | 32000 | 44100 | 48000`): Hz 단위의 오디오 샘플링 속도입니다. **speechModel.properties.output\_audio\_codec** (`'mp3' | 'wav' | 'linear16' | 'mulaw' | 'alaw' | 'opus' | 'flac' | 'aac'`): 출력 오디오 코덱입니다. **speaker** (`SarvamVoiceId`): 출력 오디오에 사용할 화자입니다. 기본값은 '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)을 지원합니다. 서로 다른 Model 버전 간에 화자를 바꿔 사용할 수 없습니다. (Default: `'shubh'`) **listeningModel** (`SarvamListenOptions`): 음성-텍스트 인식을 위한 구성입니다. (Default: `{ model: 'saarika:v2.5', languageCode: 'unknown' }`) **listeningModel.apiKey** (`string`): Sarvam API 키입니다. 지정하지 않으면 SARVAM\_API\_KEY 환경 변수를 사용합니다. **listeningModel.model** (`SarvamSTTModel`): 음성-텍스트 변환에 사용할 Model을 지정합니다. 사용 가능한 옵션: saarika:v2.5(음성 변환), saaras:v3(다중 모드: transcribe/translate/verbatim/translit/codemix). 참고: Sarvam에서 saarika:v1, saarika:v2, saarika:flash를 지원 중단했습니다. **listeningModel.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. **listeningModel.filetype** (`'mp3' | 'wav'`): 입력 스트림의 오디오 형식입니다. **listeningModel.mode** (`SarvamSTTMode`): 작동 모드입니다. saaras:v3 Model을 사용할 때만 유효하며 saarika:v2.5에서는 무시됩니다. 사용 가능한 옵션: 'transcribe', 'translate', 'verbatim', 'translit', 'codemix'. ## 행동 양식 ### `speak()` Sarvam의 텍스트 음성 변환 Model을 사용하여 텍스트를 음성으로 변환합니다. **input** (`string | NodeJS.ReadableStream`): 음성으로 변환할 텍스트 또는 텍스트 스트림입니다. **options** (`Options`): 구성 옵션입니다. **options.speaker** (`SarvamVoiceId`): 음성 합성에 사용할 음성 ID입니다. 보고:`Promise` ### `listen()` Sarvam의 음성 인식 Model을 사용하여 오디오를 녹음합니다. **input** (`NodeJS.ReadableStream`): 텍스트로 변환할 오디오 스트림입니다. **options** (`SarvamListenOptions`): 음성 인식을 위한 구성 옵션입니다. 보고:`Promise` ### `getSpeakers()` 사용 가능한 음성 옵션의 배열을 반환합니다. 보고:`Promise>` ## 메모 - API 키는 생성자 옵션 또는 `SARVAM_API_KEY` 환경 변수를 통해 제공할 수 있습니다. - 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` 간에는 화자 이름을 바꿔 사용할 수 없습니다. 각 Model 버전에는 고유한 화자 카탈로그가 있습니다.