メインコンテンツへ移動

Text-to-Speech(TTS)

Mastra の Text-to-Speech(TTS)は、Provider を使ってテキストから音声を合成するための統一 API を提供します。 TTS をアプリケーションに組み込むと、自然な音声対話によってユーザー体験を高め、視覚障害のあるユーザーのアクセシビリティを改善し、より魅力的なマルチモーダルインターフェースを構築できます。

TTS はあらゆる音声アプリケーションの中核となる要素です。STT(Speech-to-Text)と組み合わせることで、音声対話システムの基盤になります。新しいモデルは、リアルタイム対話に使用できる STS(Speech-to-Speech)をサポートしていますが、コストは高くなります($)。

設定
設定への直接リンク

Mastra で TTS を使用するには、Voice Provider の初期化時に speechModel を指定します。これには次のようなパラメーターが含まれます。

  • name: 使用する TTS モデル。
  • apiKey: 認証に使用する API キー。
  • Provider 固有のオプション: Voice Provider ごとに必要またはサポートされる追加オプション。

speaker オプションでは、音声合成に使用する Voice を選択できます。各 Provider は、Voice の多様性品質Voice の個性多言語対応の特性が異なる Voice オプションを提供します。

動作: これらのパラメーターはすべて任意です。使用する Voice Provider に応じて、Provider が用意するデフォルト設定を使用できます。

const voice = new OpenAIVoice({
speechModel: {
name: 'tts-1-hd',
apiKey: process.env.OPENAI_API_KEY,
},
speaker: 'alloy',
})

// If using default settings the configuration can be simplified to:
const voice = new OpenAIVoice()

利用可能な Provider
利用可能な Providerへの直接リンク

Mastra は、それぞれ固有の機能と Voice オプションを持つ Text-to-Speech Provider をサポートしています。アプリケーションの要件に最適な Provider を選択できます。

  • OpenAI: 自然なイントネーションと表現を備えた高品質な Voice
  • Azure: 複数の Voice と言語に対応する Microsoft の音声サービス
  • ElevenLabs: 感情表現と細かな制御に対応する非常にリアルな Voice
  • PlayAI: さまざまなスタイルの自然な Voice に特化
  • Google: 多言語に対応する Google の音声合成
  • Cloudflare: 低遅延アプリケーション向けにエッジ最適化された音声合成
  • Deepgram: 高精度な AI 音声技術
  • Speechify: 読みやすさとアクセシビリティに最適化された Text-to-Speech
  • Sarvam: インド諸語とそのアクセントに特化
  • Murf: パラメーターをカスタマイズできるスタジオ品質のナレーション

各 Provider は個別のパッケージとして実装されており、必要に応じてインストールできます。

pnpm add @mastra/voice-openai@latest # Example for OpenAI

speak メソッドを使用する
speak メソッドを使用するへの直接リンク

TTS の中心となる speak() メソッドは、テキストを音声に変換します。このメソッドには、speaker や Provider 固有のオプションを指定できます。使用方法を次に示します。

import { Agent } from '@mastra/core/agent'
import { OpenAIVoice } from '@mastra/voice-openai'

const voice = new OpenAIVoice()

const agent = new Agent({
id: 'voice-agent',
name: 'Voice Agent',
instructions: 'You are a voice assistant that can help users with their tasks.',
model: 'openai/gpt-5.6-sol',
voice,
})

const { text } = await agent.generate('What color is the sky?')

// Convert text to speech to an Audio Stream
const readableStream = await voice.speak(text, {
speaker: 'default', // Optional: specify a speaker
properties: {
speed: 1.0, // Optional: adjust speech speed
pitch: 'default', // Optional: specify pitch if supported
},
})

音声出力を保存する
音声出力を保存するへの直接リンク

speak() メソッドは音声ストリームを返します。生成した音声を後で再生または処理するために保存する場合は、ストリームをファイルへパイプします。

import { createWriteStream } from 'fs'
import path from 'path'

const audio = await agent.voice.speak('Hello, world!')
const filePath = path.join(process.cwd(), 'agent.mp3')
const writer = createWriteStream(filePath)

audio.pipe(writer)

await new Promise<void>((resolve, reject) => {
writer.on('finish', () => resolve())
writer.on('error', reject)
})

Agent で利用できる Voice Provider の概要については、Mastra の Voiceを参照してください。