文档首页 > > SDK参考> Java SDK> 使用定制语音合成

使用定制语音合成

分享
更新时间: 2019/11/29 GMT+08:00

前提条件

确保已按照配置Java环境配置完毕。

初始化Client

初始化TtsCustomizationClient,其参数包括AuthInfo和SisConfig,详见表 AuthInfo数据结构表 SisConfig数据结构

表1 AuthInfo数据结构

参数名称

是否必选

参数类型

描述

ak

String

用户的ak,可参考AK/SK认证

sk

String

用户的sk,可参考AK/SK认证

region

String

区域,如cn-north-4, 参考终端节点

projectId

String

项目ID,同region一一对应,参考获取项目ID

endpoint

String

终端节点,参考地区和终端节点

表2 SisConfig数据结构

参数名称

是否必选

参数类型

描述

socketTimeout

Integer

Socket超时,默认5000,单位ms。

connectionTimeout

Integer

连接超时,默认5000,单位ms。

requestTimeout

Integer

请求超时,默认1000,单位ms。

请求参数

请求类为TtsCustomRequest,详见表 TtsCustomRequest数据结构

表3 TtsCustomRequest数据结构

参数名称

是否必选

参数类型

描述

text

String

待合成的文本。

audio_format

String

待合成的音频格式,可选mp3,wav等,默认wav。具体信息请参见《API参考》中定制语音合成章节。

pitch

Integer

音高,[-500,500] ,默认是0。

speed

Integer

语速,[-500,500] ,默认是0。

volume

Integer

音量,[0,100],默认是50。

sample_rate

String

采样率,支持“8000”、“16000”,默认“8000”。

property

String

特征字符串,{language}_{speaker}_{domain},默认chinese_xiaoqi_common。具体信息请参见《API参考》中定制语音合成章节。

isSaved

Boolean

是否选择合成的音频数据保存到本地,默认不保存。

savePath

String

选择保存到本地的路径。

响应参数

响应类为TtsCustomResponse,详见表 TtsCustomResponse数据结构

表4 TtsCustomResponse数据结构

参数名称

是否必选

参数类型

描述

base64Data

String

合成音频的Base64编码。

isSaved

Boolean

是否保存本地文件。

savePath

String

如果保存,保存的本地路径。

traceId

String

用于日志的问题追溯。

代码示例

import com.huawei.sis.bean.AuthInfo;
import com.huawei.sis.bean.SisConfig;
import com.huawei.sis.bean.SisConstant;
import com.huawei.sis.bean.request.TtsCustomRequest;
import com.huawei.sis.bean.response.TtsCustomResponse;
import com.huawei.sis.client.TtsCustomizationClient;
import com.huawei.sis.exception.SisException;

/**
 * 定制语音合成的demo
 *
 * Copyright 2019 Huawei Technologies Co.,Ltd.
 */
public class TtsCustomizationDemo {

  private static final int DEFAULT_PITCH = 0;
  private static final int DEFAULT_SPEED = 0;
  private static final int DEFAULT_VOLUME = 50;

  private String ak = "";
  private String sk = "";
  private String region = "";    // 区域,如cn-north-1、cn-north-4
  private String projectId = ""; // 项目id,在我的凭证查看。参考https://support.huaweicloud.com/api-sis/sis_03_0008.html

  private String text = "";      // 待合成的文本
  private String path = "";      // 设置本地音频保存路径.可选择不保存到本地。


  /**
   * 用于定制语音合成参数设置,例如发声人、音高、语速、音量、采样率、连接超时。所有参数均可以不设置,采用默认。
   *
   * @param request 定制语音合成请求
   */
  private void setParameter(TtsCustomRequest request) {

    // 设置语音格式,可选MP3,pcm等,详见api文档。默认wav
    request.setAudioFormat("wav");
    // 音高,[-500, 500], 默认0
    request.setPitch(DEFAULT_PITCH);
    // 语速,[-500, 500],默认0
    request.setSpeed(DEFAULT_SPEED);
    // 音量,[0, 100],默认50
    request.setVolume(DEFAULT_VOLUME);
    // 当前支持8000和16000,默认8000
    request.setSampleRate("8000");
    // 设置property,特征字符串,{language}_{speaker}_{domain}, 详见api文档
    request.setProperty("chinese_xiaoyu_common");

    // 设置返回数据是否保存,默认不保存。若保存,则需要设置一下保存路径,如D:/1.wav
    request.setSaved(true);
    request.setSavePath(path);
  }

  /**
   * 定义config,所有参数可选,设置超时时间。
   * @return SisConfig
   */
  private SisConfig getConfig() {
    SisConfig config = new SisConfig();
    // 设置连接超时,默认5000ms
    config.setConnectionTimeout(SisConstant.DEFAULT_CONNECTION_TIMEOUT);
    // 设置请求超时,默认1000ms
    config.setRequestTimeout(SisConstant.DEFAULT_CONNECTION_REQUEST_TIMEOUT);
    // 设置socket超时,默认5000ms
    config.setSocketTimeout(SisConstant.DEFAULT_SOCKET_TIMEOUT);
    // 设置代理, 一定要确保代理可用才启动此设置。 代理初始化也可用不加密的代理,new ProxyHostInfo(host, port);
    // ProxyHostInfo proxy = new ProxyHostInfo(host, port, username, password);
    // config.setProxy(proxy);
    return config;
  }

  /**
   * 根据文本和api,获取生成的音频数据
   */
  private void ttsCustomDemo() {
    try {
      // 1. 初始化TtsCustomizationClient
      // 定义authInfo,根据ak,sk,region, projectId.
      AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId);
      // 定义config,所有参数可选,设置超时时间。
      SisConfig config = getConfig();
      // 根据authInfo和config,构造TtsCustomizationClient
      TtsCustomizationClient tts = new TtsCustomizationClient(authInfo, config);

      // 2. 配置请求
      TtsCustomRequest request = new TtsCustomRequest(text);
      // 设置参数,所有参数均可选,如果要保存合成音频文件,需要在request设置
      setParameter(request);

      // 3. 发送请求,获取响应
      TtsCustomResponse response = tts.getTtsResponse(request);
      // 打印结果
      if (response.isSaved()) {
        System.out.println("文件已保存, 保存路径为" + response.getSavePath());
      }
      System.out.println("音频数据经过Base64编码后为\n" + response.getBase64Data());
      System.out.println("traceId: " + response.getTraceId());

    } catch (SisException e) {
      e.printStackTrace();
      System.out.println("error_code:" + e.getErrorCode() + "\nerror_msg:" + e.getErrorMsg());
    }

  }

  public static void main(String[] args) {
    TtsCustomizationDemo demo = new TtsCustomizationDemo();
    demo.ttsCustomDemo();
  }

}
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区