跳至主要內容

ElevenLabs

Mastra 的 ElevenLabs 語音實作使用 ElevenLabs API 提供高質素的文字轉語音(TTS)和語音轉文字(STT)功能。

使用範例
使用範例 的直接連結

import { ElevenLabsVoice } from '@mastra/voice-elevenlabs'

// Initialize with default configuration (uses ELEVENLABS_API_KEY environment variable)
const voice = new ElevenLabsVoice()

// Initialize with custom configuration
const voice = new ElevenLabsVoice({
speechModel: {
name: 'eleven_multilingual_v2',
apiKey: 'your-api-key',
},
speaker: 'custom-speaker-id',
})

// Text-to-Speech
const audioStream = await voice.speak('Hello, world!')

// Get available speakers
const speakers = await voice.getSpeakers()

建構函數參數
建構函數參數 的直接連結

speechModel?:

ElevenLabsVoiceConfig
= { name: 'eleven_multilingual_v2' }
文字轉語音功能的設定。
ElevenLabsVoiceConfig

name?:

ElevenLabsModel
要使用的 ElevenLabs 模型

apiKey?:

string
ElevenLabs API 金鑰。如未提供,則使用 ELEVENLABS_API_KEY 環境變數

speaker?:

string
= '9BWtsMINqrJLrRacOk9x'(Aria 聲音)
文字轉語音所使用的說話者 ID

方法
方法 的直接連結

speak()
speak 的直接連結

使用已設定的語音模型和聲音將文字轉換成語音。

input:

string | NodeJS.ReadableStream
要轉換成語音的文字。如提供串流,會先將其轉換成文字。

options?:

object
語音合成的額外選項
object

speaker?:

string
在此請求中取代預設說話者 ID

傳回:Promise<NodeJS.ReadableStream>

getSpeakers()
getspeakers 的直接連結

傳回可用聲音選項的陣列,其中每個節點包含:

voiceId:

string
聲音的唯一識別碼

name:

string
聲音的顯示名稱

language:

string
聲音的語言代碼

gender:

string
聲音的性別

listen()
listen 的直接連結

使用 ElevenLabs Speech-to-Text API 將音訊輸入轉換成文字。

input:

NodeJS.ReadableStream
包含要轉錄音訊資料的可讀取串流

options?:

object
轉錄的設定選項

options 物件支援以下屬性:

language_code?:

string
ISO 語言代碼(例如 'en'、'fr'、'es')

tag_audio_events?:

boolean
是否標記 [MUSIC]、[LAUGHTER] 等音訊事件

num_speakers?:

number
要在音訊中偵測的說話者人數

filetype?:

string
音訊檔案格式(例如 'mp3'、'wav'、'ogg')

timeoutInSeconds?:

number
請求逾時秒數

maxRetries?:

number
最多重試次數

abortSignal?:

AbortSignal
中止請求的訊號

傳回:Promise<string>——解析為轉錄文字的 Promise

重要事項
重要事項 的直接連結

  1. 必須有 ElevenLabs API 金鑰。請透過 ELEVENLABS_API_KEY 環境變數設定,或在建構函數中傳入。
  2. 預設說話者設為 Aria(ID:'9BWtsMINqrJLrRacOk9x')。
  3. ElevenLabs 不支援語音轉文字功能。
  4. 可使用 getSpeakers() 方法取得可用的說話者;該方法會傳回每個聲音的詳細資料,包括語言和性別。