본문으로 건너뛰기

합성음성

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
})