更新时间:2026-02-03 GMT+08:00
分享

声音复刻接口

前提条件

  • 确保已按照配置Java环境配置完毕。
  • 请参考SDK(websocket)获取最新版本SDK包。
  • 使用预置音色或注册的声音合成语音。
  • 仅上海一局点支持该接口。

初始化Client

初始化vcsClient详见表1

表1 vcsClient初始化参数

参数名称

是否必选

参数类型

描述

ak

String

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

sk

String

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

region

String

区域,如:cn-east-3,具体请参考终端节点

projectId

String

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

serviceEndPoint

String

终端节点,一般使用默认即可,例如:https://*****.myhuaweicloud.com。

请求参数

请求类型为vcsRequest,详见表2

表2 vcsRequest

参数名称

是否必选

参数类型

描述

path

String

待注册的录音数据,使用base64编码,大小不超过6MB。支持wav、mp3、m4a格式,采样率不小于16kHz,时长在5-25秒,支持单、双通道。

audioPath

String

待合成音频存储路径。

text

String

待合成文本,文本的长度不大于300字符。

config

Object

详见表3

表3 Config

参数名称

是否必选

参数类型

描述

audioFormat

String

合成音频的格式。支持wav、mp3、pcm,默认wav

sampleRate

String

合成音频的采样率。支持8kHz、16kHz、24kHz,默认16kHz

voiceName

String

合成所使用的音色名称,可选择用户注册的音色或预置音色。预置音色取值范围参考表4

speed

Integer

语速。

取值范围:-500~500

默认值:0

pitch

Integer

音高。

取值范围: -500~500

默认值:0

volume

Integer

音量。

取值范围:0~100

默认值:50

表4 Timbre

参数名称

voice_name

类型

使用场景

支持采样率(Hz)

华小莉

chinese_huaxiaoli_common

标准女声

中英混合

8k/16k/24k

华小智

chinese_huaxiaozhi_common

男童声

中英混合

8k/16k/24k

华小天

chinese_huaxiaotian_common

朝气男声

中英混合

8k/16k/24k

华小媛

chinese_huaxiaoyuan_common

成熟女声

中英混合

8k/16k/24k

华小静

chinese_huaxiaojing_common

女童声

中英混合

8k/16k/24k

华小博

chinese_huaxiaobo_common

标准男声

中英混合

8k/16k/24k

华小柔

chinese_huaxiaorou_common

标准女声

中英混合

8k/16k/24k

华小悠

chinese_huaxiaoyou_common

嘹亮女声

中英混合

8k/16k/24k

华小晴

chinese_huaxiaoqing_common

青春女声

中英混合

8k/16k/24k

华小溪

chinese_huaxiaoxi_common

温柔女声

中英混合

8k/16k/24k

华小彤

chinese_huaxiaotong_common

俏皮女声

中英混合

8k/16k/24k

华小雅

chinese_huaxiaoya_common

标准女声

中英混合

8k/16k/24k

华小伟

chinese_huaxiaowei_common

成熟男声

中英混合

8k/16k/24k

华小帅

chinese_huaxiaoshuai_common

标准男声

中英混合

8k/16k/24k

华小杰

chinese_huaxiaojie_common

温柔男声

中英混合

8k/16k/24k

响应参数

Java SDK响应结果为Json格式,正确响应详见表5,错误响应详见表7

表5 响应参数说明

参数名称

参数类型

描述

traceId

String

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

result

Object

调用成功时为合成语音内容,调用失败时无此字段,详见表6

表6 result数据结构

参数名称

参数类型

描述

data

String

生成的语音数据,以Base64编码格式返回。用户如需生成音频,需要将返回的Base64编码格式的数据解码成byte数组,再保存为对应格式的音频。

表7 错误响应

参数名称

参数类型

描述

errorCode

String

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

errorMsg

String

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

请求示例

  • 说明:“endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点,当前仅支持上海一。
  • 调用合成API,将文本合成为语音。
package com.huawei.sis.demo.cn_demo;

import com.huawei.sis.bean.AuthInfo;
import com.huawei.sis.bean.SisConfig;
import com.huawei.sis.bean.SisConstant;
import com.huawei.sis.bean.request.VcsCloneRequest;
import com.huawei.sis.bean.response.VoiceCloneResponse;
import com.huawei.sis.client.VcsClient;
import com.huawei.sis.exception.SisException;
import com.huawei.sis.util.JsonUtils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 声音复刻Demo
 * <p>
 * Copyright 2021 Huawei Technologies Co.,Ltd.
 */
public class VcsDemo {

    private static final Logger log = LoggerFactory.getLogger(VcsDemo.class);

    // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
    private String ak = System.getenv("HUAWEICLOUD_SDK_AK");
    private String sk = System.getenv("HUAWEICLOUD_SDK_SK");

    private String region = "";    // 区域,如cn-east-3

    private String projectId = ""; // 项目id,在我的凭证查看。参考https://support.huaweicloud.com/api-sis/sis_03_0008.html

    private String serviceEndPoint = "";  // 可选参数,传入new AuthInfo(ak, sk, region, projectId);

    private String voiceName = ""; // 音色名称,可以使用注册音色或预置音色

    private String text = ""; //  待合成文本

    private String audioPath = "";  // 待合成结果保存路径,例如"D://SIS/audio.wav"
    // 使用该脚本前,保证要使用的声音已经注册,voiceName为声音名称。若没有注册声音,请使用VcsRegisterAndRequest.java脚本,注册声音和查询声音

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

    /**
     * 定义config,所有参数可选,设置超时时间等。
     *
     * @return SisConfig
     */
    private SisConfig getConfig() {
        SisConfig config = new SisConfig();
        // 设置连接超时,默认10000ms
        config.setConnectionTimeout(SisConstant.DEFAULT_CONNECTION_TIMEOUT);
        // 设置读取超时,默认10000ms
        config.setReadTimeout(SisConstant.DEFAULT_READ_TIMEOUT);
        // 设置代理, 一定要确保代理可用才启动此设置。 代理初始化也可用不加密的代理,new ProxyHostInfo(host, port);
        // 设置代理,可参考 config.setProxy(new ProxyHostInfo(host, port, user, password));
        return config;
    }

    private void setParameters(VcsCloneRequest request) {
        // 1. 设置音频格式,默认wav
        request.getVoiceCloneConfig().setAudioFormat("wav");
        // 2. 设置采样率,24000、16000、8000,默认16000
        request.getVoiceCloneConfig().setSampleRate("16000");
        // 3. 设置音色,如 chinese_huaxiaoli_common、chinese_huaxiaotian_common
        request.getVoiceCloneConfig().setVoiceName(voiceName);
        // 4. 设置语速,取值范围为 -500~500,默认值为0
        request.getVoiceCloneConfig().setSpeed(0);
        // 5. 设置音调,取值范围为 -500~500,默认值为0
        request.getVoiceCloneConfig().setPitch(0);
        // 6. 设置音量,取值范围为 0~100,默认值为50
        request.getVoiceCloneConfig().setVolume(50);
    }

    /**
     * 声音复刻demo。
     */
    private void vcsDemo() {
        synthesisVoice();
    }

    private void synthesisVoice() {
        try {

            // 1. 初始化VcsClient
            // 定义authInfo,根据ak,sk,region,projectId
            AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId);
            // 设置config,主要与超时有关
            SisConfig config = getConfig();
            // 根据authInfo和config,构造VcsClient
            VcsClient vcsClient = new VcsClient(authInfo, config);

            // 2. 配置请求
            VcsCloneRequest request = new VcsCloneRequest(voiceName, text);
            setParameters(request);
            request.setSaved(true);  // 是否对合成结果进行保存
            request.setSavePath(audioPath); // 保存路径

            // 3. 发送请求,获取响应。具体结果可通过response.getXX获取。
            VoiceCloneResponse response = vcsClient.synthesisVoice(request);
            log.info(JsonUtils.obj2Str(response, true));
        } catch (SisException e) {
            log.info("error_code:" + e.getErrorCode() + " error_msg:" + e.getErrorMsg());
        }
    }
}

响应示例

状态码:200

成功响应示例

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

状态码:400

失败响应示例

{  
    "error_code": "SIS.1207",  
    "error_msg": "'sample_rate' is invalid"          
} 

相关文档