开发者社区 问答 正文

GET语音合成时如何带上情感SSML标签。

我使用JS GET
https://nls-gateway-cn-shanghai.aliyuncs.com/stream/v1/tts?format=mp3&voice=${voice}&volume=${volume}&speech_rate=${speech_rate}&pitch_rate=${pitch_rate}&emotion=fear&appkey=wDzNU2YzyxibbuDm&text=${text}&token=${token}`
进行语音合成,其中
text = <emotion category="happy" intensity="1.5">你好,愿你每天都拥有好心情!</emotion>

合成播放的时候,并没有应用上情感标签,而是直接把标签的英文都播放出来了。

展开
收起
在撸上 2024-03-16 17:52:49 108 分享 版权
阿里云 AI 助理回答

要通过 JavaScript 使用 GET 请求调用阿里云智能语音交互的 TTS(文本转语音)服务,您需要按照以下步骤进行配置和操作。以下是详细的说明和注意事项:


1. 构造完整的请求 URL

根据知识库中的信息,TTS 服务的完整 URL 需要包含以下参数: - 基础 URL: https://nls-gateway-cn-shanghai.aliyuncs.com/stream/v1/tts - 必填参数: - appkey: 您的项目 AppKey。 - token: 服务鉴权 Token。 - text: 要转换为语音的文本内容(需经过 UTF-8 编码和 URL 编码)。 - format: 输出音频格式(如 mp3wav 等)。 - sample_rate: 音频采样率(如 16000)。 - 可选参数: - voice: 发音人(如 xiaoyun,默认值为 xiaoyun)。 - volume: 音量(范围 0~100,默认值为 50)。 - speech_rate: 语速(范围 -500~500,默认值为 0)。 - pitch_rate: 语调(范围 -500~500,默认值为 0)。

示例 URL:

const url = "https://nls-gateway-cn-shanghai.aliyuncs.com/stream/v1/tts" +
            "?appkey=您的AppKey" +
            "&token=您的Token" +
            "&text=" + encodeURIComponent("今天天气好晴朗") +
            "&format=mp3" +
            "&sample_rate=16000";

2. 设置请求头

在 GET 请求中,您可以选择性地在请求头中设置 X-NLS-Token 字段来传递鉴权 Token。如果已经在 URL 参数中设置了 token,则无需重复设置。

示例请求头:

const headers = {
    "X-NLS-Token": "您的Token" // 可选,推荐直接在 URL 中设置 token 参数
};

3. 发送 GET 请求

使用 JavaScript 的 fetch 方法发送 GET 请求,并处理返回的二进制音频数据。

代码示例:

const url = "https://nls-gateway-cn-shanghai.aliyuncs.com/stream/v1/tts" +
            "?appkey=您的AppKey" +
            "&token=您的Token" +
            "&text=" + encodeURIComponent("今天天气好晴朗") +
            "&format=mp3" +
            "&sample_rate=16000";

fetch(url, {
    method: "GET",
    headers: {
        "X-NLS-Token": "您的Token" // 可选
    }
})
.then(response => {
    if (!response.ok) {
        throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.blob(); // 获取二进制音频数据
})
.then(blob => {
    const audioUrl = URL.createObjectURL(blob); // 创建音频对象 URL
    const audio = new Audio(audioUrl);
    audio.play(); // 播放音频
})
.catch(error => {
    console.error("请求失败:", error);
});

4. 注意事项

  • 文本编码: 参数 text 必须经过 UTF-8 编码后再进行 URL 编码(如空格编码为 %20,加号编码为 %2B)。
  • 鉴权 Token: 鉴权 Token 可以通过两种方式设置:
    1. 在 URL 参数中设置 token
    2. 在请求头中设置 X-NLS-Token推荐优先使用 URL 参数方式
  • 音频格式: 确保 format 参数与实际需求一致(如 mp3wav)。
  • 错误处理: 如果服务端返回的响应头中 Content-Type 不是 audio/mpeg,则表示请求失败,需检查错误信息。

5. 常见问题排查

  • 问题 1: 返回的音频无法播放。
    • 原因: 可能是 text 参数未正确编码或 format 参数不匹配。
    • 解决方法: 检查 text 是否经过 UTF-8 和 URL 编码,确保 format 参数与实际需求一致。
  • 问题 2: 请求失败,返回错误信息。
    • 原因: 可能是 appkeytoken 无效。
    • 解决方法: 确保 appkeytoken 正确无误,并检查 Token 是否已过期。

通过以上步骤,您可以成功使用 JavaScript 调用阿里云智能语音交互的 TTS 服务并播放生成的音频文件。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: