跳到主要内容

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 key(不是 Azure OpenAI key)。未提供时回退到 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 key(不是 Azure OpenAI key)。未提供时回退到 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
要转换为语音的文本或文本 stream。

options?:

Options
配置选项。
Options

speaker?:

string
用于语音合成的语音 ID(例如 'en-US-JennyNeural')。会覆盖默认语音。

返回:Promise<NodeJS.ReadableStream> - WAV 格式的音频 stream

listen()
listen的直接链接

使用 Azure 的语音转文本服务转录音频。

audioStream:

NodeJS.ReadableStream
要转录的音频 stream。必须采用 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 订阅 key(可在 Azure Portal 的“Speech Services”下获取)
  • 它们是不同的 Azure 资源,使用不同的 API key 和 endpoint

环境变量
环境变量的直接链接

可通过构造函数选项或环境变量提供 API key 和区域:

  • AZURE_API_KEY - 你的 Azure Speech Services 订阅 key
  • AZURE_REGION - 你的 Azure 区域(例如 'eastus'、'westeurope')

语音能力
语音能力的直接链接

  • Azure 提供覆盖 50 多种语言的 200 多种神经语音
  • 每个语音 ID 都遵循 {language}-{region}-{name}Neural 格式(例如 'en-US-JennyNeural')
  • 部分语音支持多语言或提供 HD 高质量变体
  • 音频输出采用 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 文档