跳至主要內容

voice.getSpeakers()

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

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

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 會 resolve 為語音選項陣列。每個選項至少包含 voiceId 屬性,也可能包含其他 Provider 特定的中繼資料。

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

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

voiceId:

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

注意事項
「注意事項」的直接連結

  • 不同 Provider 提供的語音可能有顯著差異
  • 部分 Provider 可能需要驗證,才能取得完整的語音清單
  • 如果 Provider 不支援此方法,預設實作會傳回空陣列
  • 若需要頻繁顯示清單,基於效能考量,請考慮快取結果
  • 所有 Provider 都保證提供 voiceId 屬性,但其他中繼資料會因 Provider 而異