更新时间:2024-05-10 GMT+08:00
分享

语音合成

功能介绍

语音合成,是一种将文本转换成逼真语音的服务。用户通过实时访问和调用API获取语音合成结果,将用户输入的文字合成为音频。通过音色选择、自定义音量、语速,为企业和个人提供个性化的发音服务。该接口的使用限制请参见约束与限制,详细使用指导请参见SIS服务使用简介章节。

SIS服务控制台提供了语音合成的在线使用页面,用户无需编程即可使用服务功能。

图1 在线使用

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v1/{project_id}/tts

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目编号。获取方法,请参见获取项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

用于获取操作API的权限。获取方法请参见认证鉴权。响应消息头中X-Subject-Token的值即为Token。

Enterprise-Project-Id

String

企业项目ID。SIS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。

获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。

企业项目创建步骤请参见用户指南。

说明:

账户创建企业项目后,在传参时,有以下三类场景。

  • 携带正确的ID,正常使用SIS服务,账单归到企业ID对应的企业项目中。
  • 携带错误的ID,正常使用SIS服务,账单的企业项目会被分类为“default”。
  • 不携带ID,正常使用SIS服务,账单的企业项目会被分类为“default”。
表3 请求Body参数

参数

是否必选

参数类型

描述

text

String

待合成的文本,文本长度限制不大于500字符。

config

TtsConfig object

语音合成配置信息。

表4 TtsConfig

参数

是否必选

参数类型

描述

audio_format

String

语音格式头:wav、mp3、pcm

默认:wav

父节点:config

sample_rate

String

采样率:16000、8000赫兹

默认:8000

父节点:config

property

String

语音合成特征字符串,组成形式为{language}_{speaker}_{domain},即“语种_人员标识_领域”。发音人分为普通发音人和精品发音人,每次调用价格相同,针对精品发音人,每50字计一次调用,不足50字按一次计;普通发音人每100字计一次调用,不足100字按一次计。其中1个汉字、1个英文字母或1个标点均算作1个字符,具体费用请参考价格计算器

默认:chinese_xiaoyan_common,中文发音,小燕,温柔女声发音人。

父节点:config

speed

Integer

语速。

取值范围:-500~500

默认值:0

父节点:config

说明:

当取值为“0”时,表示一个成年人正常的语速,约为250字/分钟。设置该值时,语速和数值没有绝对的映射关系。

pitch

Integer

音高。

取值范围: -500~500

默认值:0

父节点:config

volume

Integer

音量。

取值范围:0~100

默认值:50

父节点:config

表5 普通发音人property取值范围

名称

property取值

类型

使用场景

支持采样率(Hz)

小琪

chinese_xiaoqi_common

标准女声

客服

8k/16k

小雯

chinese_xiaowen_common

柔美女声

客服

8k/16k

小宇

chinese_xiaoyu_common

标准男声

电销

8k/16k

小夏

chinese_xiaoxia_common

热情女声

电销

8k/16k

小燕

chinese_xiaoyan_common

温柔女声

文学

8k/16k

小倩

chinese_xiaoqian_common

成熟女声

文学

8k/16k

小王

chinese_xiaowang_common

童声

童声

8k/16k

小呆

chinese_xiaodai_common

呆萌童声

童声

8k/16k

小婧

chinese_xiaojing_common

俏皮女声

新闻播报

8k/16k

小宋

chinese_xiaosong_common

激昂男声

新闻播报

8k/16k

cameal

english_cameal_common

英文女声

英文

8k/16k

表6 精品发音人property取值范围

名称

property取值

类型

使用场景

支持采样率(Hz)

华小夏

chinese_huaxiaoxia_common

热情女声

电销

8k/16k

华小唯

chinese_huaxiaowei_common

嗲柔女声

电销

8k/16k

华小颜

chinese_huaxiaoyan_common

严厉女声

电销

8k/16k

华晓阳

chinese_huaxiaoyang_common

朝气男声

电销

8k/16k

华晓刚

chinese_huaxiaogang_common

利落男声

客服

8k/16k

华小雯

chinese_huaxiaowen_common

柔美女声

客服

8k/16k

华小美

chinese_huaxiaomei_common

温柔女声

客服

8k/16k

华小飞

chinese_huaxiaofei_common

朝气男声

客服

8k/16k

华小璐

chinese_huaxiaolu_common

知性女声

新闻播报

8k/16k

华小靓

chinese_huaxiaoliang_common

嘹亮女声

新闻播报

8k/16k

华晓东

chinese_huaxiaodong_common

成熟男声

新闻播报

8k/16k

华小蕊

chinese_huaxiaorui_common

知性女声

中英混合

16k

华小萱

chinese_huaxiaoxuan_common

台湾女声

方言

8k/16k

华小闽

chinese_huaxiaomin_common

闽南女声

方言

8k/16k

华小舒

chinese_huaxiaoshu_common

舒缓女声

文学

8k/16k

华女侠

chinese_huanvxia_literature

武侠女生(只支持http形式调用)

文学

16k

华晓悬

chinese_huaxiaoxuan_literature

悬疑男声(只支持http形式调用)

文学

16k

华小龙

chinese_huaxiaolong_common

朝气男声

中英混合

16k

华小汝

chinese_huaxiaoru_common

柔美女声

中英混合

8k/16k

华小涵

chinese_huaxiaohan_common

知性女声

中英混合

8k/16k

华小宁

chinese_huaxiaoning_common

沉稳男声

中英混合

8k/16k

华小珍

chinese_huaxiaozhen_common

温柔女声

中英混合

8k/16k

华小曼

chinese_huaxiaoman_common

温柔女声

中英混合

16k

华小芳

chinese_huaxiaofang_common

朝气女声

中英混合

16k

华小筠

chinese_huaxiaojun_common

成熟女声

中英混合

16k

alvin

english_alvin_common

成熟男声

纯英文

8k/16k

amy

english_amy_common

成熟女声

纯英文

8k/16k

响应参数

状态码: 200

表7 响应Body参数

参数

是否必选

参数类型

描述

trace_id

String

服务内部的令牌,可用于在日志中追溯具体流程。

在某些错误情况下可能没有此令牌字符串。

result

CustomResult object

调用成功表示合成结果,调用失败时无此字段。

表8 CustomResult

参数

是否必选

参数类型

描述

data

String

语音数据,以Base64编码格式返回。

用户如需生成音频,需要将Base64编码解码成byte数组,再保存为音频,音频格式同“audio_format”参数设置的值,默认为wav格式。

语音合成代码示例请参考SDK,SDK已对Base64转音频过程进行封装,可以直接获取音频文件。

状态码: 400

表9 响应Body参数

参数

参数类型

描述

error_code

String

调用失败时的错误码。 调用成功时无此字段。

error_msg

String

调用失败时的错误信息。 调用成功时无此字段。

请求示例

“endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点

  • 调用语音合成API,将文本合称为语音,并调整语音的音色、语速、音高、音量
    POST https://{endpoint}/v1/{project_id}/tts
    
    Request Header:
    Content-Type: application/json 
    X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...    
      
    Request Body:
     { 
      "text": "欢迎使用语音云服务。",
       "config": 
       { 
         "audio_format": "wav", 
         "sample_rate": "8000", 
         "property": "chinese_xiaoyan_common",
         "speed": 10,
         "pitch": 10,
         "volume": 60
       }
     } 
  • 使用Python3语言调用语音合成API,将文本合称为语音,并调整语音的音色、语速、音高、音量
    # -*- coding: utf-8 -*-
    # 此demo仅供测试使用,强烈建议使用sdk。需提前安装requests,执行pip install requests
    import requests
    import json
    
    def stts_demo():
        url = 'https://{{endpoint}}/v1/{{project_id}}/tts'  # endpoint和project_id需替换
        token = '用户对应region的token'
        text = '待识别的文本'
        header = {
            'Content-Type': 'application/json',
            'X-Auth-Token': token
        }
        body = {'text': text}
        resp = requests.post(url, data=json.dumps(body), headers=header)
        print(resp.text)
    
    if __name__ == '__main__':
        stts_demo()
  • 使用Java语言调用语音合成API,将文本合称为语音,并调整语音的音色、语速、音高、音量
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    /**
     * 此demo仅供测试使用,强烈建议使用SDK
     */
    public class SttsDemo {
      public void sttsDemo() {
        try {
          // endpoint和projectId需要替换成实际信息。
          URL url = new URL("https://{{endpoint}}/v1/{{project_id}}/tts");
          String token = "对应region的token";
          HttpURLConnection connection = (HttpURLConnection)url.openConnection();
          connection.setRequestMethod("POST");
          connection.setDoInput(true);
          connection.setDoOutput(true);
          connection.addRequestProperty("Content-Type", "application/json");
          connection.addRequestProperty("X-Auth-Token", token);
    
    
          OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
          String body = "{\"text\": \"123\"}";
          osw.append(body);
          osw.flush();
          InputStream is = connection.getInputStream();
          BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
          while (br.ready()) {
            System.out.println(br.readLine());
          }
    
        } catch (Exception e) {
          e.printStackTrace();
        }
    
      }
      public static void main(String[] args) {
        SttsDemo sttsDemo = new SttsDemo();
        sttsDemo.sttsDemo();
      }
    }

响应示例

状态码:200

成功响应示例

{ 
   "trace_id": "567e8537-a89c-13c3-a882-826321939651", 
   "result":{ 
     "data": "/+MgxAAUeHpMAUkQAANhuRAC..."
   } 
 } 

状态码:400

失败响应示例

{  
    "error_code": "SIS.0032",  
    "error_msg": "'audio_format' is invalid"  
 }

状态码

状态码请参见状态码

错误码

错误码请参见错误码

相关文档