跳至主要內容

Azure

Mastra 的 AzureVoice 類別使用 Microsoft Azure Cognitive Services 提供文字轉語音及語音轉文字功能。

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

這需要 Azure Speech Services 憑證,你可以透過環境變數或直接在設定中提供憑證:

import { AzureVoice } from '@mastra/voice-azure'

// Initialize with configuration
const voice = new AzureVoice({
speechModel: {
apiKey: 'your-azure-speech-api-key', // Or use AZURE_API_KEY env var
region: 'eastus', // Or use AZURE_REGION env var
voiceName: 'en-US-AriaNeural', // Optional: specific voice for TTS
},
listeningModel: {
apiKey: 'your-azure-speech-api-key', // Or use AZURE_API_KEY env var
region: 'eastus', // Or use AZURE_REGION env var
language: 'en-US', // Optional: recognition language for STT
},
speaker: 'en-US-JennyNeural', // Optional: default voice
})

// Convert text to speech
const audioStream = await voice.speak('Hello, how can I help you?', {
speaker: 'en-US-GuyNeural', // Optional: override default voice
})

// Convert speech to text
const text = await voice.listen(audioStream)

設定
設定 的直接連結

建構函數選項
建構函數選項 的直接連結

speechModel?:

AzureSpeechConfig
文字轉語音合成的設定。
AzureSpeechConfig

apiKey?:

string
Azure Speech Services API 金鑰(並非 Azure OpenAI 金鑰)。如未提供,會改用 AZURE_API_KEY 環境變數。

region?:

string
Azure 區域(例如 'eastus'、'westeurope')。如未提供,會改用 AZURE_REGION 環境變數。

voiceName?:

string
語音合成所用的語音 ID(例如 'en-US-AriaNeural'、'en-US-JennyNeural')。只用於 speechModel。請參閱下方語音清單。

language?:

string
辨識語言代碼(例如 'en-US'、'fr-FR')。只用於 listeningModel。

listeningModel?:

AzureSpeechConfig
語音轉文字辨識的設定。
AzureSpeechConfig

apiKey?:

string
Azure Speech Services API 金鑰(並非 Azure OpenAI 金鑰)。如未提供,會改用 AZURE_API_KEY 環境變數。

region?:

string
Azure 區域(例如 'eastus'、'westeurope')。如未提供,會改用 AZURE_REGION 環境變數。

voiceName?:

string
語音合成所用的語音 ID(例如 'en-US-AriaNeural'、'en-US-JennyNeural')。只用於 speechModel。請參閱下方語音清單。

language?:

string
辨識語言代碼(例如 'en-US'、'fr-FR')。只用於 listeningModel。

speaker?:

string
語音合成的預設語音 ID。

方法
方法 的直接連結

speak()
speak 的直接連結

使用 Azure 的神經網絡文字轉語音服務,把文字轉換成語音。

input:

string | NodeJS.ReadableStream
要轉換成語音的文字或文字串流。

options?:

Options
設定選項。
Options

speaker?:

string
語音合成所用的語音 ID(例如 'en-US-JennyNeural')。會覆寫預設語音。

傳回:Promise<NodeJS.ReadableStream> - WAV 格式的音訊串流

listen()
listen 的直接連結

使用 Azure 的語音轉文字服務轉錄音訊。

audioStream:

NodeJS.ReadableStream
要轉錄的音訊串流。必須是 WAV 格式。

傳回:Promise<string> - 從音訊辨識出的文字

語言及辨識設定會在初始化時透過 listeningModel 設定,而非以選項形式傳入此方法。

getSpeakers()
getspeakers 的直接連結

傳回可用語音選項的陣列(超過 200 種語音),當中每個節點包含:

voiceId:

string
語音的唯一識別碼(例如 'en-US-JennyNeural'、'fr-FR-DeniseNeural')

language:

string
從語音 ID 擷取的語言代碼(例如 'en'、'fr')

region:

string
從語音 ID 擷取的區域代碼(例如 'US'、'GB'、'FR')

傳回:Promise<Array<{ voiceId: string; language: string; region: string; }>>

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

Azure Speech Services 與 Azure OpenAI 的分別
Azure Speech Services 與 Azure OpenAI 的分別 的直接連結

⚠️ 重要: 此套件使用 Azure Speech Services,與 Azure OpenAI Services 並不相同。

  • 請勿在此套件使用你的 AZURE_OPENAI_API_KEY
  • 請使用 Azure Speech Services 訂閱金鑰(可在 Azure Portal 的「Speech Services」下取得)
  • 兩者是獨立的 Azure 資源,使用不同的 API 金鑰及端點

環境變數
環境變數 的直接連結

你可以透過建構函數選項或環境變數提供 API 金鑰及區域:

  • AZURE_API_KEY - 你的 Azure Speech Services 訂閱金鑰
  • AZURE_REGION - 你的 Azure 區域(例如 'eastus'、'westeurope')

語音功能
語音功能 的直接連結

  • Azure 提供超過 200 種神經網絡語音,涵蓋超過 50 種語言
  • 每個語音 ID 均採用以下格式:{language}-{region}-{name}Neural(例如 'en-US-JennyNeural')
  • 部分語音支援多種語言或提供高清音質版本
  • 音訊輸出為 WAV 格式
  • 用於辨識的音訊輸入必須是 WAV 格式

可用語音
可用語音 的直接連結

Azure 提供超過 200 種神經網絡語音,涵蓋多種語言。部分常用英語語音包括:

  • 美式英語:

    • en-US-AriaNeural(女聲,預設)
    • en-US-JennyNeural(女聲)
    • en-US-GuyNeural(男聲)
    • en-US-DavisNeural(男聲)
    • en-US-AvaNeural(女聲)
    • en-US-AndrewNeural(男聲)
  • 英式英語:

    • en-GB-SoniaNeural(女聲)
    • en-GB-RyanNeural(男聲)
    • en-GB-LibbyNeural(女聲)
  • 澳洲英語:

    • en-AU-NatashaNeural(女聲)
    • en-AU-WilliamNeural(男聲)

如要取得全部超過 200 種語音的完整清單:

const voices = await voice.getSpeakers()
console.log(voices) // Array of { voiceId, language, region }

詳情請參閱 Azure Neural TTS 文件