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

使用语音合成

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

前提条件

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

初始化Client

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

表1 AuthInfo数据结构

参数名称

是否必选

参数类型

描述

ak

String

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

sk

String

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

region

String

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

表2 SisConfig数据结构

参数名称

是否必选

参数类型

描述

socketTimeout

Integer

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

connectionTimeout

Integer

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

requestTimeout

Integer

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

请求参数

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

表3 TtsRequest数据结构

参数名称

是否必选

参数类型

描述

text

String

待合成的文本。

sampleRate

String

采样率,支持8k/16k。 默认16k。

voiceName

String

发声人,支持xiaoyu,xiaoqi,xiaoyan,三个发声人,默认选择xiaoyu。

pitchRate

Integer

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

speechSpeed

Integer

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

volume

Integer

音量,[-20,20],默认0。

isSaved

Boolean

合成音频是否保存为本地音频文件,目前仅支持合成wav格式音频文件。

savePath

String

设置合成的音频文件保存路径。

响应参数

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

表4 TtsResponse数据结构

参数名称

是否必选

参数类型

描述

base64Data

String

合成音频的Base64编码,音频格式为wav。

isSaved

Boolean

是否保存本地文件。

savePath

String

如果保存,保存的本地路径,格式为wav。

代码示例

import com.huawei.sis.bean.AuthInfo;
import com.huawei.sis.bean.SisConfig;
import com.huawei.sis.bean.SisConstant;
import com.huawei.sis.bean.request.TtsRequest;
import com.huawei.sis.bean.response.TtsResponse;
import com.huawei.sis.exception.SisException;
import com.huawei.sis.client.TtsClient;

/**
 * 语音合成demo
 *
 * Copyright 2019 Huawei Technologies Co.,Ltd.
 */
public class TtsDemo {

  private String ak = "";
  private String sk = "";
  private String region = "";       // 区域,如cn-north-1

  private String text = "";         // 待合成的文本
  private String path = "";         // 设置本地音频保存路径,可设置为不保存


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

    // 发声人,支持xiaoyu,xiaoqi,xiaoyan
    request.setVoiceName(TtsRequest.DEFAULT_VOICE_NAME);
    // 音高,[-500, 500], 默认0
    request.setPitchRate(TtsRequest.DEFAULT_PITCH_RATE);
    // 语速,[-500, 500],默认0
    request.setSpeechSpeed(TtsRequest.DEFAULT_SPEECH_SPEED);
    // 音量,[-20,20],默认0
    request.setVolume(TtsRequest.DEFAULT_VOLUME);
    // 当前支持8k和16k
    request.setSampleRate(TtsRequest.DEFAULT_SAMPLE_RATE);

    // 设置返回数据是否保存,默认不保存。若保存,则需要设置一下保存路径,音频格式为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 ttsDemo() {
    try {
      // 1. 初始化TtsClient
      // 定义authInfo,根据ak,sk,ttsRegion。注意初始化参数不需要填写projectId。
      AuthInfo authInfo = new AuthInfo(ak, sk, region);
      // 定义config,所有参数可选,设置超时时间。
      SisConfig config = getConfig();
      // 根据authInfo和config,构造TtsClient
      TtsClient tts = new TtsClient(authInfo, config);

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

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

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

  }

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

}
分享:

    相关文档

    相关产品

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

提交成功!

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

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

*必选

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

字符长度不能超过200

提交反馈 取消

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

跳转到云社区