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 文件。