mcpField
A
azure-text-to-speech

azure-text-to-speech

github.com/calesthio创意与媒体72.7k634 次安装今天更新
代码仓库

关于 azure-text-to-speech

这是一项通过 OpenMontage 使用 Azure 神经文本转语音生成旁白的技能,介绍语音选择、韵律控制、配置和分段用法。文档将 Piper 说明为默认离线路径及回退选项。

主要功能

  1. 01Azure 神经文本转语音
  2. 02多语言语音选择
  3. 03语速、音高和风格控制
  4. 04MP3 或 WAV 输出
  5. 05同步 REST 生成

适用场景

  1. 01为视频片段制作旁白
  2. 02为多语言文本选择语音
  3. 03调整旁白语速和风格
  4. 04重新生成单独的音频片段

MCP 相关

OpenMontage 通过 `azure_tts` 工具提供 Azure TTS,`tts_selector` 可发现该工具。它是可选的云端 TTS 提供方。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/calesthio/openmontage --skill azure-text-to-speech

安装后在 Claude Code 中输入/azure-text-to-speech确认已加载。

详细介绍

Azure AI Speech — 文本转语音

使用 Azure 神经网络 TTS 生成旁白,支持高质量多语言语音、SSML 韵律控制和 express-as 风格,并通过 REST /cognitiveservices/v1 端点同步提供服务(无需令牌交换、Blob 存储或任务 轮询)。在 OpenMontage 中,此功能通过 azure_tts 工具提供 (capability=tts、provider=azure)。它是可选的云端 TTS 提供方—— 配置 AZURE_SPEECH_KEY 后,优先使用它生成高质量云端 旁白。本地 piper_tts 仍是默认的离线路径,也是 Azure 不可用时的 后备选项;克隆语音则使用 elevenlabs_tts。

文档:REST 文本转语音 · 语音库

设置

与 azure_stt 使用同一个 Speech 资源——一个密钥/区域即可启用两个方向 (STT 和 TTS)。在 Azure 门户中创建 Speech 资源;从其 密钥和终结点页面复制密钥和区域。

export AZURE_SPEECH_KEY=your_speech_resource_key
export AZURE_SPEECH_REGION=eastus        # your resource's region
# export AZURE_TTS_ENDPOINT=https://...  # optional: full custom TTS host
#   (the TTS host is https://<region>.tts.speech.microsoft.com — a different
#    subdomain than the STT endpoint, hence the separate override var)

设置 AZURE_SPEECH_KEY,并设置 AZURE_SPEECH_REGION 或 AZURE_TTS_ENDPOINT 之一后,azure_tts 会报告 AVAILABLE。

在流水线中使用

像往常一样通过 tts_selector 路由(它会自动发现 azure_tts),或者在用户已批准使用 Azure 时直接调用提供方工具:

from tools.tool_registry import registry
registry.discover()
tts = registry._tools["azure_tts"]

result = tts.execute({
    "text": "Every design decision in this dashboard has a reason.",
    "voice": "andrew",                 # alias or full Azure short name
    "rate": "-4%",                     # slightly slower for narration
    # "style": "narration-professional",  # for voices that support styles
    "output_path": "projects/my-video/assets/audio/seg_001.mp3",
    "output_format": "mp3",            # or "wav" (48kHz PCM) for mixing
})

如果 azure_tts 不可用(没有密钥)或出错,请按其声明的链路回退:elevenlabs_tts → openai_tts → piper_tts。

语音选择

精选列表(voice 参数接受别名):

别名语音特点
andrewen-US-AndrewMultilingualNeural温暖、自信、自然,默认语音;适合创始人/讲解者的语气
brandonen-US-BrandonMultilingualNeural音色较低、语速沉稳
avaen-US-AvaMultilingualNeural自信、明亮的女声
guyen-US-GuyNeural权威感强
jennyen-US-JennyNeural亲切、清晰

也可以直接传入任何有效的 Azure 语音短名称(例如 de-DE-KatjaNeural);Multilingual 语音对非英语文本的处理效果很好—— 将 locale 设为与文本语言一致,以确保 SSML 正确。

重要参数

  • rate / pitch — SSML 韵律。旁白通常略微放慢会更自然 ("-4%" 到 "-8%");除非要修正语音,否则将音高保持为 "0%"。
  • style — 支持该功能的语音可使用 express-as 风格 (narration-professional、calm、newscast)。Azure 会静默忽略不支持的风格,因此批量运行前请先试听样例。
  • output_format — 交付时使用 mp3(48kHz/192kbit);当片段要交给 audio_mixer 进一步处理时,使用 wav(48kHz PCM)。
  • 确定性:固定语音和 SSML 重新渲染后,生成的音频基本一致—— 可以安全地单独重新生成片段,无需重录整组内容。

费用

Azure 神经网络 TTS 标准层的费用约为每 1M 个字符 $16(每 1k 个字符约 $0.016;一段 150 词的旁白约 $0.015)。工具会报告每次调用的 cost_usd,供费用跟踪器使用。当前费率请参阅 Azure AI Speech 定价。

限制与提示

  • 一次 execute 调用对应一个旁白片段。应按脚本章节生成(遵循素材阶段的惯例),而不是生成一大段文本——较短的片段更容易与场景时间对齐,也便于低成本重新生成。
  • 同步端点将单次请求限制为 10 分钟音频,远高于 OpenMontage 生成的任何片段。
  • 文本会自动进行 XML 转义;请勿预先转义或包装为 SSML——传入纯文本以及 rate/pitch/style 参数即可。
  • 检查质量:批量运行完整脚本前,先试听生成的第一个片段(语音/风格是否合适属于创意决策——根据《决策沟通契约》,应在提案阶段明确提出)。

评论

支持 Markdown