합성음성
CompositeVoice 클래스를 사용하면 텍스트 음성 변환 및 음성 텍스트 변환 작업을 위해 다양한 음성 공급자를 결합할 수 있습니다. 이는 각 작업에 가장 적합한 공급자를 사용하려는 경우에 특히 유용합니다. 예를 들어 음성-텍스트에는 OpenAI를 사용하고 텍스트-음성에는 PlayAI를 사용합니다.
CompositeVoice는 Mastra 음성 제공자와 AI SDK Model 제공자를 모두 지원합니다.
생성자 매개변수생성자 매개변수에 대한 직접 링크
config:
object
복합 음성 서비스의 구성 객체
config.input?:
MastraVoice | TranscriptionModel
음성 텍스트 변환 작업에 사용할 음성 Provider 또는 AI SDK 전사 Model입니다. AI SDK Model은 자동으로 래핑됩니다.
config.output?:
MastraVoice | SpeechModel
텍스트 음성 변환 작업에 사용할 음성 Provider 또는 AI SDK 음성 Model입니다. AI SDK Model은 자동으로 래핑됩니다.
config.realtime?:
MastraVoice
실시간 음성 대 음성 작업에 사용할 음성 Provider
행동 양식행동 양식에 대한 직접 링크
speak()speak에 대한 직접 링크
구성된 말하기 공급자를 사용하여 텍스트를 음성으로 변환합니다.
input:
string | NodeJS.ReadableStream
음성으로 변환할 텍스트
options?:
object
음성 출력 Provider에 전달할 Provider별 옵션
참고:
- 말하는 제공자가 구성되지 않은 경우 이 메서드는 오류를 발생시킵니다.
- 옵션은 구성된 말하기 제공자에게 전달됩니다.
- 오디오 데이터 스트림을 반환합니다.
listen()listen에 대한 직접 링크
구성된 청취 공급자를 사용하여 음성을 텍스트로 변환합니다.
audioStream:
NodeJS.ReadableStream
텍스트로 변환할 오디오 스트림
options?:
object
음성 입력 Provider에 전달할 Provider별 옵션
참고:
- 수신 공급자가 구성되지 않은 경우 이 메서드는 오류를 발생시킵니다.
- 옵션은 구성된 청취 제공자에게 전달됩니다.
- 공급자에 따라 문자열 또는 전사된 텍스트 스트림을 반환합니다.
getSpeakers()getspeakers에 대한 직접 링크
말하기 제공자로부터 사용 가능한 음성 목록을 반환합니다. 각 노드에는 다음이 포함됩니다.
voiceId:
string
음성의 고유 식별자
key?:
value
Provider에 따라 달라지는 추가 음성 속성(예: 이름, 언어)
참고:
- 말하는 제공자의 음성만 반환합니다.
- 말하는 제공자가 구성되지 않은 경우 빈 배열을 반환합니다.
- 각 음성 객체에는 최소한 하나의 voiceId 속성이 있습니다.
- 추가 음성 속성은 말하는 제공자에 따라 다릅니다.
사용 예사용 예에 대한 직접 링크
Mastra 음성 Provider 사용Mastra 음성 Provider 사용에 대한 직접 링크
import { CompositeVoice } from '@mastra/core/voice'
import { OpenAIVoice } from '@mastra/voice-openai'
import { PlayAIVoice } from '@mastra/voice-playai'
// Create voice providers
const openai = new OpenAIVoice()
const playai = new PlayAIVoice()
// Use OpenAI for listening (speech-to-text) and PlayAI for speaking (text-to-speech)
const voice = new CompositeVoice({
input: openai,
output: playai,
})
// Convert speech to text using OpenAI
const text = await voice.listen(audioStream)
// Convert text to speech using PlayAI
const audio = await voice.speak('Hello, world!')
AI SDK Model 공급자 사용AI SDK Model 공급자 사용에 대한 직접 링크
AI SDK 전사 및 음성 Model을 CompositeVoice에 직접 전달할 수 있습니다.
import { CompositeVoice } from '@mastra/core/voice'
import { openai } from '@ai-sdk/openai'
import { elevenlabs } from '@ai-sdk/elevenlabs'
// Use AI SDK models directly - they will be auto-wrapped
const voice = new CompositeVoice({
input: openai.transcription('whisper-1'), // AI SDK transcription
output: elevenlabs.speech('eleven_turbo_v2'), // AI SDK speech
})
// Works the same way as with Mastra providers
const text = await voice.listen(audioStream)
const audio = await voice.speak('Hello from AI SDK!')
믹스 앤 매치믹스 앤 매치에 대한 직접 링크
Mastra 공급자를 AI SDK Model과 결합할 수 있습니다.
import { CompositeVoice } from '@mastra/core/voice'
import { PlayAIVoice } from '@mastra/voice-playai'
import { groq } from '@ai-sdk/groq'
const voice = new CompositeVoice({
input: groq.transcription('whisper-large-v3'), // AI SDK for STT
output: new PlayAIVoice(), // Mastra for TTS
})