メインコンテンツへ移動

Google

Mastra の Google Voice 実装は、Google Cloud サービスを使用した Text-to-Speech(TTS)および Speech-to-Text(STT)機能を提供します。複数の Voice と言語、高度な音声設定オプションに加え、標準の API キー認証とエンタープライズ環境向けの Vertex AI モードをサポートします。

使用例
使用例への直接リンク

import { GoogleVoice } from '@mastra/voice-google'

// Initialize with default configuration (uses GOOGLE_API_KEY environment variable)
const voice = new GoogleVoice()

// Text-to-Speech (plain text)
const audioStream = await voice.speak('Hello, world!', {
languageCode: 'en-US',
audioConfig: {
audioEncoding: 'LINEAR16',
},
})

// Text-to-Speech with SSML
const ssmlStream = await voice.speak('ignored', {
input: {
ssml: '<speak>Take <say-as interpret-as="unit">5 mg</say-as> daily.</speak>',
},
})

// Text-to-Speech with Gemini-TTS model
const geminiStream = await voice.speak('Hello from Gemini TTS!', {
voice: { name: 'Kore', modelName: 'gemini-2.5-flash-preview-tts' },
input: { prompt: 'Warm, calm tone.' },
})

// Speech-to-Text
const transcript = await voice.listen(audioStream, {
config: {
encoding: 'LINEAR16',
languageCode: 'en-US',
},
})

// Get available voices for a specific language
const voices = await voice.getSpeakers({ languageCode: 'en-US' })

コンストラクターパラメーター
コンストラクターパラメーターへの直接リンク

speechModel?:

GoogleModelConfig
= { apiKey: process.env.GOOGLE_API_KEY }
Text-to-Speech 機能の設定
GoogleModelConfig

apiKey?:

string
Google Cloud API キー。未指定の場合は GOOGLE_API_KEY 環境変数を使用します。vertexAI が true の場合は使用しません。

keyFilename?:

string
サービスアカウントの JSON キーファイルへのパス。未指定の場合は GOOGLE_APPLICATION_CREDENTIALS 環境変数を使用します。

credentials?:

object
client_email と private_key プロパティを持つインメモリのサービスアカウント認証情報オブジェクト。

listeningModel?:

GoogleModelConfig
= { apiKey: process.env.GOOGLE_API_KEY }
Speech-to-Text 機能の設定
GoogleModelConfig

apiKey?:

string
Google Cloud API キー。未指定の場合は GOOGLE_API_KEY 環境変数を使用します。vertexAI が true の場合は使用しません。

keyFilename?:

string
サービスアカウントの JSON キーファイルへのパス。未指定の場合は GOOGLE_APPLICATION_CREDENTIALS 環境変数を使用します。

credentials?:

object
client_email と private_key プロパティを持つインメモリのサービスアカウント認証情報オブジェクト。

speaker?:

string
= 'en-US-Casual-K'
Text-to-Speech に使用するデフォルトの Voice ID

vertexAI?:

boolean
= false
エンタープライズ環境向けの Vertex AI モードを有効にします。API キーの代わりにプロジェクトベースの認証を使用します。'project' の設定が必要です。

project?:

string
Google Cloud プロジェクト ID(vertexAI が true の場合は必須)。未指定の場合は GOOGLE_CLOUD_PROJECT 環境変数を使用します。

location?:

string
= 'us-central1'
Vertex AI の Google Cloud リージョン。未指定の場合は GOOGLE_CLOUD_LOCATION 環境変数を使用します。

メソッド
メソッドへの直接リンク

speak()
speakへの直接リンク

Google Cloud Text-to-Speech サービスを使用してテキストを音声に変換します。

input:

string | NodeJS.ReadableStream
音声に変換するテキスト。ストリームを指定した場合は、先にテキストへ変換されます。

options?:

object
音声合成オプション
GoogleSpeakOptions

speaker?:

string
このリクエストに使用する Voice ID。

languageCode?:

string
Voice の言語コード(例:'en-US')。デフォルトは Speaker ID から取得した言語コード、取得できない場合は 'en-US' です。

input?:

ISynthesizeSpeechRequest['input']
Google Cloud TTS API にそのまま渡すリッチ入力オブジェクト。ssmlmarkupprompt(Gemini-TTS 形式の制御)、customPronunciationsmultiSpeakerMarkup をサポートします。textssmlmarkupmultiSpeakerMarkup なしで指定すると、位置引数の input が自動的に text フィールドとして使用されます。

voice?:

ISynthesizeSpeechRequest['voice']
デフォルト(namelanguageCode)に統合される Voice 設定。modelName(例:'gemini-2.5-flash-preview-tts')と multiSpeakerVoiceConfig をサポートします。

audioConfig?:

ISynthesizeSpeechRequest['audioConfig']
Google Cloud Text-to-Speech API の音声設定オプション。

戻り値:Promise<NodeJS.ReadableStream>

listen()
listenへの直接リンク

Google Cloud Speech-to-Text サービスを使用して音声をテキストに変換します。v1(デフォルト)と v2 の両 API をサポートします。v2 API では、自動デコードによって AAC-in-MP4 音声(iOS Safari)もサポートします。

v1(デフォルト)
v1(デフォルト)への直接リンク

audioStream:

NodeJS.ReadableStream
文字起こしする音声ストリーム

options?:

GoogleListenOptionsV1
v1 認識オプション
GoogleListenOptionsV1

config?:

IRecognitionConfig
Google Cloud Speech-to-Text API の v1 認識設定

v2
v2への直接リンク

AAC-in-MP4(iOS Safari)などの追加音声形式をサポートする Cloud Speech-to-Text v2 API を使用するには、v2: true を渡します。

v2 の recognize 呼び出しは IAM で認可され、API キーだけの認証は受け付けません。vertexAI を有効にしていない場合でも、listeningModel にサービスアカウント認証情報を設定(または GOOGLE_APPLICATION_CREDENTIALS を設定)し、Recognizer のパスを解決できるように GOOGLE_CLOUD_PROJECT を設定してください。

import { GoogleVoice } from '@mastra/voice-google'

// v2 listen() requires service account credentials, not just GOOGLE_API_KEY.
// Set GOOGLE_CLOUD_PROJECT so the recognizer path can be resolved.
const voice = new GoogleVoice({
listeningModel: { keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS },
})

const transcript = await voice.listen(iosSafariAacStream, {
v2: true,
config: {
autoDecodingConfig: {},
},
})
注記

GOOGLE_API_KEY だけを設定した場合、listen({ v2: true })speech.recognizers.recognizePERMISSION_DENIED になります。API キーによるリクエストには OAuth ID がないため、ユーザーアカウントに roles/speech.client を付与しても解決しません。このロールはリクエストで提示するサービスアカウントに付与する必要があります。これは vertexAI の設定に関係なく適用されます。speak() と v1 の listen() は API キーだけでも動作します。

audioStream:

NodeJS.ReadableStream
文字起こしする音声ストリーム

options:

GoogleListenOptionsV2
v2 認識オプション
GoogleListenOptionsV2

v2:

true
v2 API パスを有効にします

config?:

v2.IRecognitionConfig
v2 認識設定。デフォルトは languageCodes: ['en-US']model: 'long' を使用する自動デコードです。音声形式を自動検出するには autoDecodingConfig: {} を設定します。MP4_AACM4A_AACMOV_AAC などのエンコーディングを指定するには explicitDecodingConfig を使用します。

recognizer?:

string
v2 Recognizer のリソースパス。デフォルトは projects/{project}/locations/global/recognizers/_ です。{project} はコンストラクターの project オプション、GOOGLE_CLOUD_PROJECT、またはクライアントのデフォルトプロジェクトから解決されます。

戻り値:Promise<string>

getSpeakers()
getspeakersへの直接リンク

使用可能な Voice オプションの配列を返します。各要素には次の値が含まれます。

voiceId:

string
Voice の一意な識別子

languageCodes:

string[]
この Voice がサポートする言語コードの一覧

isUsingVertexAI()
isusingvertexaiへの直接リンク

Vertex AI モードが有効かどうかを確認します。

戻り値:boolean - Vertex AI を使用している場合は true、それ以外は false

getProject()
getprojectへの直接リンク

設定された Google Cloud プロジェクト ID を取得します。

戻り値:string | undefined - プロジェクト ID。未設定の場合は undefined

getLocation()
getlocationへの直接リンク

設定された Google Cloud のロケーション/リージョンを取得します。

戻り値:string - ロケーション(デフォルト:'us-central1'

認証
認証への直接リンク

Google Voice Provider は2つの認証方法をサポートします。

標準モード(API キー)
標準モード(API キー)への直接リンク

認証に Google Cloud API キーを使用します。speak() と v1 の listen() に対応します。IAM で認可され、サービスアカウント認証情報が必要な listen({ v2: true }) には対応しません(v2 を参照)。

// Using environment variable (GOOGLE_API_KEY)
const voice = new GoogleVoice()

// Using explicit API key
const voice = new GoogleVoice({
speechModel: { apiKey: 'your-api-key' },
listeningModel: { apiKey: 'your-api-key' },
speaker: 'en-US-Casual-K',
})

Vertex AI モード(サービスアカウント)
Vertex AI モード(サービスアカウント)への直接リンク

サービスアカウントによる Google Cloud プロジェクトベースの認証を使用します。本番環境とエンタープライズ環境に推奨します。

利点:

  • セキュリティの向上(コードに API キーを含めません)
  • IAM ベースのアクセス制御
  • プロジェクト単位の請求とクォータ
  • 監査ログ
  • エンタープライズ機能

設定オプション:

// Using Application Default Credentials (ADC)
// Set GOOGLE_APPLICATION_CREDENTIALS and GOOGLE_CLOUD_PROJECT env vars
const voice = new GoogleVoice({
vertexAI: true,
project: 'your-gcp-project',
location: 'us-central1', // Optional, defaults to 'us-central1'
})

// Using service account key file
const voice = new GoogleVoice({
vertexAI: true,
project: 'your-gcp-project',
speechModel: {
keyFilename: '/path/to/service-account.json',
},
listeningModel: {
keyFilename: '/path/to/service-account.json',
},
})

// Using in-memory credentials
const voice = new GoogleVoice({
vertexAI: true,
project: 'your-gcp-project',
speechModel: {
credentials: {
client_email: 'service-account@project.iam.gserviceaccount.com',
private_key: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----',
},
},
})

必要な権限
必要な権限への直接リンク

IAM ロール
IAM ロールへの直接リンク

Text-to-Speech の場合:

  • roles/texttospeech.admin - Text-to-Speech 管理者(フルアクセス)
  • roles/texttospeech.editor - Text-to-Speech 編集者(作成と管理)
  • roles/texttospeech.viewer - Text-to-Speech 閲覧者(読み取り専用)

Speech-to-Text の場合:

  • roles/speech.client - Speech-to-Text クライアント

リクエストで認証情報を提示するサービスアカウント(keyFilenamecredentialsGOOGLE_APPLICATION_CREDENTIALS のいずれかを使用)に roles/speech.client を付与します。このロールは Vertex AI モードだけでなく、特に listen({ v2: true }) に必要です。API キーだけのリクエストには認可対象の ID がないため、ユーザーアカウントに付与しても効果はありません。

OAuth スコープ
OAuth スコープへの直接リンク

同期 Text-to-Speech 合成の場合:

  • https://www.googleapis.com/auth/cloud-platform - Google Cloud Platform サービスへのフルアクセス

長時間音声の Text-to-Speech 操作の場合:

  • locations.longAudioSynthesize - 長時間音声合成操作を作成します
  • operations.get - 操作の状態を取得します
  • operations.list - 操作の一覧を取得します

重要な注意事項
重要な注意事項への直接リンク

  1. 認証:Google Cloud API キー(標準モード)またはサービスアカウント認証情報(Vertex AI モード)が必要です。
  2. 環境変数
    • GOOGLE_API_KEY - 標準モードの API キー
    • GOOGLE_CLOUD_PROJECT - Vertex AI モードのプロジェクト ID
    • GOOGLE_CLOUD_LOCATION - Vertex AI モードのロケーション(デフォルト:'us-central1')
    • GOOGLE_APPLICATION_CREDENTIALS - サービスアカウントキーファイルへのパス
  3. デフォルトの Voice は 'en-US-Casual-K' です。
  4. Text-to-Speech と Speech-to-Text の両サービスは、デフォルトの音声エンコーディングとして LINEAR16 を使用します。
  5. speak() メソッドは、Google Cloud Text-to-Speech API による高度な音声設定をサポートします。
  6. listen() メソッドは、Google Cloud Speech-to-Text API によるさまざまな認識設定をサポートします。
  7. listen({ v2: true }) にはサービスアカウント認証情報と GOOGLE_CLOUD_PROJECT が必要です。GOOGLE_API_KEY だけを設定した場合は PERMISSION_DENIED になります。speak() と v1 の listen() は API キーだけで動作します。
  8. 使用可能な Voice は、getSpeakers() メソッドで言語コードにより絞り込めます。
  9. Vertex AI モードは、IAM 制御、監査ログ、プロジェクト単位の請求などのエンタープライズ機能を提供します。