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

Azure文本转语音相同请求输出音量语调变更问题求助

解决方案:指定Azure文本转语音模型版本实现稳定输出

核心原因

Azure神经语音模型会持续迭代更新,默认请求会自动使用最新版本,导致相同输入的语音输出随时间发生变化。通过在SSML中指定具体模型版本,即可锁定输出效果,避免无预期变更。

具体步骤

  1. 查询可用的模型版本
    调用Azure语音服务的语音列表端点,获取ja-JP-NanamiNeural的所有历史版本:

    $token = // 复用你已获取的授权token
    $url = 'https://japaneast.tts.speech.microsoft.com/cognitiveservices/voices/list';
    $aryHeader = [
        'Authorization: '.$token,
        'Host: japaneast.tts.speech.microsoft.com',
    ];
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $aryHeader);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $voices = json_decode(curl_exec($curl), true);
    curl_close($curl);
    // 筛选Nanami的所有版本
    foreach($voices as $voice) {
        if(strpos($voice['Name'], 'ja-JP-NanamiNeural') !== false) {
            echo $voice['Name'] . PHP_EOL;
        }
    }
    

    输出会类似ja-JP-NanamiNeural-V1、ja-JP-NanamiNeural-V2这类带版本后缀的标识。

  2. 修改SSML锁定版本
    在你的请求SSML中,将voice标签的name属性替换为带版本后缀的标识,例如锁定V1版本:

    $aryPost = "<speak version='1.0' xml:lang='ja-JP'>
        <voice xml:lang='ja-JP' xml:gender='Female' name='ja-JP-NanamiNeural-V1'>
            <prosody rate='60%'>いかがだったかしら?</prosody>
        </voice>
    </speak>";
    
  3. 验证效果
    重新发起请求后,输出的语音语调、音量将与该版本发布时的效果完全一致,不会随后续模型更新产生变化。

注意事项

  • 旧版本模型通常会被Azure保留数年,但如果后续收到版本停用通知,需要切换到其他稳定版本。
  • 不同区域的模型版本可能略有差异,确保查询的是你实际使用的区域(如japaneast)的语音列表。

内容的提问来源于stack exchange,提问作者barugag

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:48:25