CompositeVoice
CompositeVoice クラスを使用すると、Text-to-Speech と Speech-to-Text の操作に異なる Voice Provider を組み合わせられます。たとえば Speech-to-Text には OpenAI、Text-to-Speech には PlayAI を使用するなど、操作ごとに最適な Provider を使用したい場合に特に役立ちます。
CompositeVoice は、Mastra Voice Provider と AI SDK Model Provider の両方をサポートします。
コンストラクターパラメーターコンストラクターパラメーターへの直接リンク
config:
object
複合 Voice サービスの設定オブジェクト
config.input?:
MastraVoice | TranscriptionModel
Speech-to-Text 操作に使用する Voice Provider または AI SDK 文字起こしモデル。AI SDK モデルは自動的にラップされます。
config.output?:
MastraVoice | SpeechModel
Text-to-Speech 操作に使用する Voice Provider または AI SDK 音声モデル。AI SDK モデルは自動的にラップされます。
config.realtime?:
MastraVoice
リアルタイムの音声間操作に使用する Voice Provider
メソッドメソッドへの直接リンク
speak()speakへの直接リンク
設定された発話 Provider を使用してテキストを音声に変換します。
input:
string | NodeJS.ReadableStream
音声に変換するテキスト
options?:
object
発話 Provider に渡す Provider 固有のオプション
注意事項:
- 発話 Provider が設定されていない場合、このメソッドはエラーをスローします
- オプションは設定された発話 Provider にそのまま渡されます
- 音声データのストリームを返します
listen()listenへの直接リンク
設定されたリスニング Provider を使用して音声をテキストに変換します。
audioStream:
NodeJS.ReadableStream
テキストに変換する音声ストリーム
options?:
object
リスニング Provider に渡す Provider 固有のオプション
注意事項:
- リスニング Provider が設定されていない場合、このメソッドはエラーをスローします
- オプションは設定されたリスニング Provider にそのまま渡されます
- Provider に応じて、文字列または文字起こしテキストのストリームを返します
getSpeakers()getspeakersへの直接リンク
発話 Provider から使用可能な Voice の一覧を返します。各要素には次の値が含まれます。
voiceId:
string
Voice の一意な識別子
key?:
value
Provider によって異なる追加の Voice プロパティ(例:名前、言語)
注意事項:
- 発話 Provider の Voice だけを返します
- 発話 Provider が設定されていない場合は空の配列を返します
- 各 Voice オブジェクトには少なくとも voiceId プロパティがあります
- 追加の Voice プロパティは発話 Provider によって異なります
使用例使用例への直接リンク
Mastra Voice Provider の使用Mastra Voice 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 Provider の使用AI SDK Model Provider の使用への直接リンク
AI SDK の文字起こしモデルと音声モデルを 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 Provider と AI SDK モデルを組み合わせられます。
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
})