CompositeVoice
CompositeVoice クラスは、テキスト読み上げ(text-to-speech)や音声認識(speech-to-text)操作のために、異なる音声プロバイダーを組み合わせて利用することができます。これは、各操作ごとに最適なプロバイダーを使いたい場合に特に便利です。例えば、音声認識には OpenAI を、テキスト読み上げには PlayAI を使うといった使い方が可能です。
CompositeVoice は、Agent クラスによって内部的に使用され、柔軟な音声機能を提供します。
使用例
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!");
コンストラクタのパラメータ
config:
object
複合音声サービスのための設定オブジェクト
config.input?:
MastraVoice
音声認識処理に使用する音声プロバイダー
config.output?:
MastraVoice
音声合成処理に使用する音声プロバイダー
メソッド
speak()
設定されたスピーキングプロバイダーを使用して、テキストを音声に変換します。
input:
string | NodeJS.ReadableStream
音声に変換するテキスト
options?:
object
スピーキングプロバイダーに渡されるプロバイダー固有のオプション
注意:
- スピーキングプロバイダーが設定されていない場合、このメソッドはエラーをスローします
- オプションは設定されたスピーキングプロバイダーにそのまま渡されます
- 音声データのストリームを返します
listen()
設定されたリスニングプロバイダーを使用して、音声をテキストに変換します。
audioStream:
NodeJS.ReadableStream
テキストに変換する音声ストリーム
options?:
object
リスニングプロバイダーに渡されるプロバイダー固有のオプション
注意:
- リスニングプロバイダーが設定されていない場合、このメソッドはエラーをスローします
- オプションは設定されたリスニングプロバイダーにそのまま渡されます
- プロバイダーによって、文字列または書き起こされたテキストのストリームのいずれかを返します
getSpeakers()
スピーキングプロバイダーから利用可能な音声のリストを返します。各ノードには以下が含まれます:
voiceId:
string
音声の一意の識別子
key?:
value
プロバイダーごとに異なる追加の音声プロパティ(例: 名前、言語)
注意:
- スピーキングプロバイダーからのみ音声を返します
- スピーキングプロバイダーが設定されていない場合、空の配列を返します
- 各音声オブジェクトには少なくとも voiceId プロパティが含まれます
- 追加の音声プロパティはスピーキングプロバイダーによって異なります