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

声音注册查询

前提条件

初始化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

终端节点,一般使用默认即可,详见终端节点

请求参数(声音注册)

请求类型registerQueryRequest,详见表2

表2 registerQueryRequest

参数名称

是否必选

参数类型

描述

path

String

待注册声音路径,要求采样率不低于16k。

config

Object

详见表3

表3 Config

参数名称

是否必选

参数类型

描述

voiceName

String

注册声音的名称,不能以数字、下划线开头。仅包含大、小写英文字母、数字和下划线,且长度不超过20个字符。一个projectId下的声音名称不能重复。

language

String

data中语音数据的语种,取值“chinese”、“english”;默认是chinese。

请求参数(声音查询)

请求类型registerQueryRequest,详见表4

表4 registerQueryRequent

参数名称

是否必选

参数类型

描述

limit

Integer

查询已注册的声音列表,每页查询显示的条目数量,默认:10。

offset

Integer

查询已注册的声音列表,页码偏移量,表示从此页码偏移量开始查询,offset大于等于0, 默认:0。

响应参数(声音注册)

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

表5 响应参数说明

参数名称

参数类型

描述

traceId

String

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

result

Object

注册声音响应,详见表6

表6 result数据结构

参数名称

参数类型

描述

voiceName

String

注册声音的名称。

表7 错误响应

参数名称

参数类型

描述

errorCode

String

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

errorMsg

String

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

响应参数(声音查询)

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

表8 响应参数说明

参数名称

参数类型

描述

traceId

String

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

result

Object

注册声音响应,详见表9

表9 result数据结构

参数名称

参数类型

描述

voices

String

注册成功的声音列表,详见表10

表10 voice结构

参数名称

参数类型

描述

voiceName

String

注册成功的声音名称。

language

String

注册成功的声音语种。

表11 错误响应

参数名称

参数类型

描述

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.RegisterVoiceRequest;
    import com.huawei.sis.bean.response.RegisterVoiceResponse;
    import com.huawei.sis.bean.response.VoicesResponse;
    import com.huawei.sis.client.VcsClient;
    import com.huawei.sis.exception.SisException;
    import com.huawei.sis.util.IOUtils;
    import com.huawei.sis.util.JsonUtils;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    /**
     * 声音复刻-声音注册和查询Demo
     * <p>
     * Copyright 2026 Huawei Technologies Co.,Ltd.
     */
    public class VcsRegisterAndRequest {
        /*
         * 1. 用户先录制一段声音,进行注册
         * 2. 录音数据,使用base64编码,大小不超过6MB。支持wav、mp3、m4a格式,采样率不小于16kHz,时长在5-25秒,支持单、双通道。
         * 2. 用户查询已经注册的声音信息(包括预置的声音)
         */
        private static final Logger log = LoggerFactory.getLogger(VcsRegisterAndRequest.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 = "";  // 非必选,参考终端节点
        private String path = ""; // 用户录音的声音存放位置,文件格式为wav、mp3、m4a
    
        public static void main(String[] args) {
            VcsRegisterAndRequest vcsRegisterAndRequest = new VcsRegisterAndRequest();
            vcsRegisterAndRequest.RegisterAndRequest();
        }
    
        /**
         * 定义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;
        }
    
        /**
         * 声音复刻-声音注册和查询Demo
         */
        private void RegisterAndRequest() {
            // 两个接口可单独运行
            registerVoice(); // 声音注册接口
            listVoice();  // 声音查询接口
        }
    
        private void registerVoice() {
            try {
    
                // 1. 初始化AuthInfo
                // 定义authInfo,根据ak,sk,region,projectId
                AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId);
    
                // 设置config,主要与超时有关
                SisConfig config = getConfig();
                VcsClient vcsClient = new VcsClient(authInfo, config);
    
                // 2. 配置请求
                String data = IOUtils.getEncodeDataByPath(path);
                String voiceName = "";  // 待注册的用户声音名称, 多次使用同一个名称注册, 会报错名称重复
                String language = "chinese"; // 待注册的用户声音语种
                RegisterVoiceRequest request = new RegisterVoiceRequest(voiceName, data, language);
    
                // 3. 发送请求,获取响应。
                RegisterVoiceResponse response = vcsClient.registerVoice(request);
                log.info(JsonUtils.obj2Str(response, true));
            } catch (SisException e) {
                log.info("error_code:" + e.getErrorCode() + " error_msg:" + e.getErrorMsg());
            }
        }
    
        private VoicesResponse listVoice() {
            try {
    
                // 1. 初始化AuthInfo
                // 定义authInfo,根据ak,sk,region,projectId
                AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId, serviceEndPoint);
    
                // 设置config,主要与超时有关
                SisConfig config = getConfig();
                VcsClient vcsClient = new VcsClient(authInfo, config);
    
                // 2. 发送请求,获取响应。具体结果可通过response.getXX获取, 下面取前10个音色
                VoicesResponse response = vcsClient.query(10, 0);
                log.info(JsonUtils.obj2Str(response, true));
                return response;
            } catch (SisException e) {
                log.info("error_code:" + e.getErrorCode() + " error_msg:" + e.getErrorMsg());
                return null;
            }
        }
    }

响应示例

状态码:200

成功响应示例(注册声音)

{ 
   "trace_id": "567e8537-a89c-13c3-a882-826321939651", 
   "result":{ 
     "voice_name": "test_xiaoming"
   } 
 } 

状态码:200

成功响应示例(查询声音)

{ 
   "trace_id": "567e8537-a89c-13c3-a882-826321939651", 
   "result":{ 
     "voices": [
        {
          "voice_name": "test_xiaoming",
          "language": "chinese"
        }
   } 
 }

状态码:400

失败响应示例(注册查询声音)

{  
    "error_code": "SIS.***",  
    "error_msg": "***"          
} 

相关文档