You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Python Speech SDK动态获取各语音对应的mstts:express-as可用样式

如何通过Azure Python Speech SDK动态获取各语音对应的mstts:express-as可用样式

嘿,这个问题我太懂了!硬编码几十种语音的样式简直是噩梦,其实Azure Speech SDK早就给我们准备了动态获取的方法,完全不用手动一个个查~

下面给你一步步讲怎么实现:

首先,你需要确保安装了最新版的Azure认知服务语音SDK,用pip install azure-cognitiveservices-speech就能搞定。

核心思路是:通过SDK提供的get_voices_async()方法获取所有可用语音的详细信息,每个语音的properties属性里藏着它支持的SSML标记属性,其中就包含mstts:express-as的可用样式。

直接上实用代码:

import azure.cognitiveservices.speech as speechsdk

def fetch_voice_supported_styles(subscription_key, region):
    # 初始化语音配置
    speech_config = speechsdk.SpeechConfig(subscription=subscription_key, region=region)
    # 异步获取所有可用语音,这里用get()同步获取结果
    voices_result = speech_config.get_voices_async().get()

    # 用来存储语音和对应样式的字典
    voice_styles_dict = {}
    for voice in voices_result.voices:
        # 检查该语音是否有支持的SSML属性
        if "SupportedSSMLVoiceAttributes" in voice.properties:
            attr_str = voice.properties["SupportedSSMLVoiceAttributes"]
            # 提取所有express-as开头的样式
            supported_styles = []
            for attr in attr_str.split(","):
                if attr.strip().startswith("express-as:"):
                    style = attr.strip().split(":")[1]
                    supported_styles.append(style)
            voice_styles_dict[voice.name] = supported_styles
        else:
            # 没有支持的样式就存空列表
            voice_styles_dict[voice.name] = []
    
    return voice_styles_dict

# 替换成你的Azure订阅密钥和区域
MY_SUBSCRIPTION_KEY = "你的订阅密钥"
MY_REGION = "你的服务区域(比如eastus、westeurope)"

# 获取所有语音的样式
all_voice_styles = fetch_voice_supported_styles(MY_SUBSCRIPTION_KEY, MY_REGION)

# 打印测试
for voice_name, styles in all_voice_styles.items():
    if styles:
        print(f"语音 {voice_name} 支持的表达样式:{', '.join(styles)}")
    else:
        print(f"语音 {voice_name} 不支持任何express-as样式")

这段代码会返回一个字典,键是语音的名称,值是该语音支持的所有mstts:express-as样式列表。你可以把这个结果集成到你的Kivy应用里,比如做个下拉菜单,选择语音后自动加载对应的可选样式,完全动态化,再也不用硬编码啦!

另外要注意两点:

  • 有些语音确实不支持任何表达样式,代码里已经做了空列表处理,不用担心报错
  • 一定要用最新版的SDK,旧版本可能没有SupportedSSMLVoiceAttributes这个属性哦

备注:内容来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:53:07