跳至主要內容

voice.getSpeakers()

getSpeakers() 方法會從語音 Provider 擷取可用的語音選項(講者)清單。應用程式可向用戶提供語音選擇,或以程式方式為不同情境選取最合適的語音。

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

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

// Initialize voice providers
const openaiVoice = new OpenAIVoice()
const elevenLabsVoice = new ElevenLabsVoice({
apiKey: process.env.ELEVENLABS_API_KEY,
})

// Get available speakers from OpenAI
const openaiSpeakers = await openaiVoice.getSpeakers()
console.log('OpenAI voices:', openaiSpeakers)
// Example output: [{ voiceId: "alloy" }, { voiceId: "echo" }, { voiceId: "fable" }, ...]

// Get available speakers from ElevenLabs
const elevenLabsSpeakers = await elevenLabsVoice.getSpeakers()
console.log('ElevenLabs voices:', elevenLabsSpeakers)
// Example output: [{ voiceId: "21m00Tcm4TlvDq8ikWAM", name: "Rachel" }, ...]

// Use a specific voice for speech
const text = 'Hello, this is a test of different voices.'
await openaiVoice.speak(text, { speaker: openaiSpeakers[2].voiceId })
await elevenLabsVoice.speak(text, { speaker: elevenLabsSpeakers[0].voiceId })

參數
參數 的直接連結

此方法不接受任何參數。

傳回值
傳回值 的直接連結

Promise<Array<{ voiceId: string } & TSpeakerMetadata>>:

Promise
解析為語音選項陣列的 Promise;每個選項最少包含 voiceId 屬性,亦可能包含 Provider 特定的額外中繼資料。

Provider 特定的中繼資料
Provider 特定的中繼資料 的直接連結

不同語音 Provider 會為其語音傳回不同的中繼資料:

voiceId:

string
語音的唯一識別碼(例如 'alloy'、'echo'、'fable'、'onyx'、'nova'、'shimmer')

備註
備註 的直接連結

  • 不同 Provider 可用的語音差異很大
  • 部分 Provider 可能需要驗證,才能擷取完整的語音清單
  • 如 Provider 不支援此方法,預設實作會傳回空陣列
  • 基於效能考慮,如需經常顯示清單,可考慮快取結果
  • 所有 Provider 均保證包含 voiceId 屬性,但額外中繼資料各有不同